見出し画像

【擬似言語⑪課題】重複排除 | 配列に登録済みか確認(基本情報技術者, 科目B, アルゴリズム)

このNoteでは、{1, 2, 2, 3}を{1, 2, 3}にするような「重複排除」に挑戦します。ある値が登録済みか否かを判定する感じ。名簿作りや統計分析に使えます。

事前に >【擬似言語⑪】ずらしループ(リーグ戦, 文字列比較)のNote を学習すると組み易いです。ループカウンタ(i, j)を別々に制御する手口。

テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note

ぜひ一緒に学習を進めていきましょう!


このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。

>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!



下準備 | 登録済みか判定する関数

配列arrayにtargetが含まれているかを判定する関数を作ります。

  • 関数名:isValueInArray

  • 引数:整数型の配列array, 整数型の変数target

  • 返り値:論理型。含まれてたらtrue, なかったらfalse

配列arrayの要素を1個ずつtargetと比較、をループするアルゴリズム。考えてみて下さいね。論理型にも慣れておきます。


私の答えは下記。

○論理型: isValueInArray(整数型の配列: array, 整数型: target)
  整数型: i
  整数型: length ← arrayの要素数

  for (i を 1 から length まで 1 ずつ増やす)
    if (array[i] と target が等しい)
      return true
    endif
  endfor

  return false




処理のイメージ/データ

重複を排除したデータ列を表示する関数を作ります。

  • データは引数で入力される。

    • 整数型の配列arrayで。

  • 重複排除したデータは配列resultに記録する。
    「末尾に追加」を使って良い。

  • resultにtargetが登録済みを確認する。

    • 登録なかったら、resultの末尾に追加。

    • 登録されていたら、何もしない。

    • isValueInArrayで登録判定できる。

簡単なデータで処理手順と変数/配列の状況をトレースします。

例えば、array={1, 2, 2, 3}の時、result={1, 2, 3}が表示される。下記が処理と結果の流れ。

  1. isValueInArray関数で、result={}とtarget=1の時、resultに1の登録ないのでresult={1}と登録する。

  2. result={1}とtarget=2の時、登録ないのでresult={1, 2}にする。

  3. result={1, 2}とtarget=2の時、2は登録されてたので何もしない。

  4. result={1, 2}とtarget=3の時、3は登録されてないのでresult={1, 2, 3}にする。




ヒントと答え | 穴埋め課題

穴埋め形式にしてみました。【埋めてね】を埋めて見てください。
自分で組みたい方は、宣言部分まで見て組んでみてくださいね。

○手続き名: removeDuplicates(整数型の配列: array)
  整数型: i
  整数型: length ← arrayの要素数
  整数型の配列: result ← {}
  
  for (i を 1 から 【埋めてね】 まで 1 ずつ増やす)
    if (isValueInArray(【埋めてね】) が 【埋めてね】と等しい)
      resultの末尾に 【埋めてね】を追加
    endif
  endfor

  resultを表示


下記が答え。

ここから先は

3,382字

メンバーシップ ¥ 500 /月

■初月無料なので、お試しください。 ■私独自の理解法や詳しい分析を公開したいです。 ■根本を丁寧に見…

【初月無料】Iパス法律/SG/AP計算/DBとSC午後2

¥500 / 月
1ヶ月無料 人数制限あり

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ