【擬似言語⑥課題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」が表示されるよう改良。
ここから先は
メンバーシップ
¥ 500 /月
学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ
