見出し画像

【擬似言語⑥課題3つ】線形探索法 | 複数見つかる場合(基本情報技術者, 科目B, アルゴリズム)

>【擬似言語⑥】線形探索法 | 番兵法のNote にて「data配列にtarget値が複数ある場合に対応した擬似言語」の課題のやっていきます。

3つの課題で擬似言語を改良して、さらに不具合や表示出力について考察します。方針→開発→テストデータで検証、って流れを身に着けていきますよ。


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

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

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



課題1 | 2個目の要素番号が返される

課題1は、>擬似言語❶にて、data={1, 2, 1}でtarget(1)の時「3」が出力されるのを確認。

  for (i を 1 から dataの要素数 まで 1 ずつ増やす)
    / もし探しているデータ(target)が見つかったら */
    if (data[i] = target)
      result ← i  / 見つかった位置を記録 */
    endif
  endfor

  result を表示する

for文でdataを[1]から最後まで見るアルゴリズム。「1」はdata[1]で見つかり、result=1になりますが、for文をbreakする命令はないのでforループは続きます。「1」がdata[3]でも見つかり、result=3に上書き。ループ終了して、「3」が表示されます。




課題2 | 1個目の要素番号が返される

課題2は、>擬似言語❷にて、data={1, 2, 1}でtarget(1)の時「1」が出力されるのを確認。

  / 配列の「最後の次」に、targetを仕込む(番兵) */
  dataの末尾に target を追加する

  / 配列内にtargetを見つけるまで探索 */
  i ← 1
  while (data[i] ≠ target)
    i ← i + 1  / 見つからない間は、次へ進むだけ! */
  endwhile

  / ループが止まった場所が「データの中」か「番兵の場所」か判定 */
  if (i ≤ n)
    i を表示する      / 番兵にたどり着く前に見つかった(成功!) */
  else
    -1 を表示する    / 番兵の場所まで来ちゃった=元々は無かった(失敗!) */
  endif

番兵法により、data={1, 2, 1, 1}となります。while文は「1」が見つかるまで継続。data[1]で「1」が見つかるので、ループ内すら実行せず終了。while文前でi=1が実行、while文内(i←i+1)は実行されず、つまりi=1。「1」が表示されます。




課題3 | 該当する全ての要素番号を返す

課題3は、data={1, 2, 1}でtarget(1)の時、data[1]と[3]で見つかるので、「1, 3」が表示されるよう改良。

ここから先は

2,163字

メンバーシップ ¥ 500 /月

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

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

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

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