【擬似言語アルゴ③】一部をシフト(基本情報技術者, 科目B, アルゴリズム)
このNoteでは、配列における「シフト」を更に学んで、「挿入ソート」で使える関数を作ります。
「挿入ソート」は、”擬似言語のラスボス❷”。挫折しちゃう所なので、段階的に学習できるように作ってみました。
>【擬似言語アルゴ①】入替のNote
>【擬似言語アルゴ②】シフトのNote
>【擬似言語アルゴ③】一部をシフトのNote*
>【擬似言語アルゴ④】入替えシフトのNote*
>【擬似言語⑫追2】挿入ソートのNote(作成中*)
テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note
ぜひ一緒に学習を進めていきましょう!
このNoteは、私がIT専門学校で授業したことを基に作成しています。
IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!
「一部(以降)」を1個右シフト
配列の「一部」を、1個シフトする関数を組みます。
要素番号pos以降を、1個右シフト。空きは0埋めで。

○整数型の配列: rightShiftFrom(整数型の配列: array, 整数型: pos)
整数型: i, length
length ← arrayの要素数
// 後ろ(末尾)から順番に、指定された位置 pos まで 1 つ右へコピーする
for (i を length - 1 から pos まで 1 ずつ減らす)
array[i + 1] ← array[i]
endfor
// ずらして空いた pos 番目のマスを 0 (空)にする
array[pos] ← 0
return array引数チェックも考えてみます。
// 指定された位置 pos が配列の範囲内かチェック
if (pos < 1 または pos > length)
return array
endif「一部(範囲)」を1個右シフト
シフトする範囲の終端も指定できるようにします。
前節はpos~最後、今回はst~edをシフト対象とします。

array[4]=8が消えちゃうのは、把握してます。
擬似言語を組みます。stをstartPos, edをendPosとします。変数は分かり易いくせねば。
○整数型の配列: rightShiftRange(整数型の配列: array, 整数型: startPos, 整数型: endPos)
整数型: i, length
length ← arrayの要素数
/ 終点の手前から順番に、始点まで右へコピーする */
for (i を endPos - 1 から startPos まで 1 ずつ減らす)
array[i + 1] ← array[i]
endfor
/ 空いた始点のマスを 0 にする */
array[startPos] ← 0
return array範囲(startPos, endPos)の指定が真っ当かの引数チェックも考えておきます。startPosとendPosが配列内、startPosがendPosより前。
/ startPos(始点)と endPos(終点)の整合性をチェック */
if (startPos < 1 または endPos > length または startPos > endPos)
return array
endif完成した関数を挿入ソートに使います。なお0埋めについても再考します。>【擬似言語⑫追ノ弐】挿入ソートのNote(作成中*)
やっと準備完了。
まとめ
お疲れ様でした!
右シフトの範囲指定版「rightShiftRange関数」が出来たので、挿入ソートに話を持っていけます。
ただ、もう一つ。入替でシフトを実現する方式も学習しておきたいです。【擬似言語アルゴ④】入替えの連続Note(作成中*)
挿入ソートでは、2方式のシフトで学習していきます。
>【擬似言語⑫追ノ弐】挿入ソート | シフト版のNote(準備中*)
>【擬似言語⑫追ノ弐】挿入ソート | 入替版のNote(準備中*)
かなりマッシブな学習構成になってしまいました。
「いきなり挿入シートから学びたい!」って方は、各テキスト/Webサイト様をご覧ください。分からなくなったら、また戻ってきてくれたら嬉しいです。
私のNoteでは、前もって”機能を関数化”して挿入ソートを関数呼び出しで見通し良くする、を狙って作ってみてます。
ご自分に合う方法で学習を進めてくださいね。
こんな感じで、基礎を生かして実例で擬似言語を作って、さらにプログラム的な考察や工夫を深めていきたくて、理解シリーズを作ってます。>【FEB】擬似言語の教科書Note
最後に私のお薦めの演習順番。
❶学習前の”分からせ”
>【FEB】サンプル問題2のNote
❷テキスト
>【FEB】擬似言語の教科書Note
>【FEB】擬似言語の理解演習Note ←いまこの辺
↓※必要なら
うかる! 基本情報技術者 [科目B・セキュリティ編](amazon)
うかる! 基本情報技術者 [科目B・アルゴリズム編](amazon)
❸各年度の公開問題
>【FEB】令和07年科目BのNote
>【FEB】令和06年科目BのNote
>【FEB】令和05年科目BのNote
➍解法の総復習(➋や➌と併用可)
>【FEB】擬似言語の11の解法Note
➎模擬試験
>【FEB】サンプル問題1のNote(擬似言語)
>【FEB】サンプル問題1のNote(セキュリティ)
いいなと思ったら応援しよう!
学習方法・問題特集のNoteは全て無料提供を続けます▼
もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼
もちろんコメントでも結構です(・ω・▼)ノシ