見出し画像

【擬似言語アルゴ①】データの入替(基本情報技術者, 科目B, アルゴリズム)

このNoteでは、変数/配列における「入替」を学びます。「入替」は「バブルソート」などで使います。

「バブルソート」は、”擬似言語のラスボス”なので、入替/シフトの学習と一緒にすると難しくて挫折したかも。
>【擬似言語⑫】バブルソートのNote
>【擬似言語⑫追1】選択ソートのNote(作成中*)

>【擬似言語⑫追2】挿入ソートのNote(作成中*)

このNoteで入替/シフトを関数化して、見た目/理解をスッキリさせたいと思って作ってみました。少しでも、擬似言語の”学習の壁”突破に役立ったら嬉しいです。


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

このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!



入替(変数版)

「a←b」をやれば、a内のデータが上書きされ消え。「b←a」ではb内データが消えちゃいます。一旦「swap」に保管して対処します。

整数型: a, b, swap
  
/ 例として初期値を設定 */
a ← 10
b ← 20
  
/ 入替え処理 */
swap ← a      / 1. aの値を退避 (swapは10になる) */
a ← b         / 2. bの値をaに上書き (aは20になる) */
b ← swap      / 3. 退避していた値をbに入れる (bは10になる) */

部屋の入替えで、A部屋の中身を一旦廊下に出して、B部屋からA部屋へ移し、廊下からA部屋に入れる感じ。

ついでに配列の場合も描いておきました(上図の下)




トリッキーな入替

トリッキーなやり方をご紹介(AIが提案)。

a ← a + b    / a と b の合計値を a に入れる */
b ← a - b    / 合計から b を引くことで、b の中身が「元のa」になる */
a ← a - b    / 合計から「新しいb(元のa)」を引くことで、a の中身が「元のb」になる */

なるほどですね。

例えば、a=1, b=2の時。
a ← a + bで、a=3に。
b ← a - bで、b= 3-2 = 1に。
a ← a - bで、a= 3-1 = 2に。
a=2, b=1になり、入替えできました。


「整数」なら良いかと。「文字」「文字列」では、できませんし。「実数」だと、加減算の誤差が発生する可能性も高い。

科目Aで「桁落ち」「情報落ち」って出てきましたよね。>【FEA】修了試験令和05年度06月問01の解説Note




入替(配列版)

データが配列に入ってる時も、変数版と同じく「swap」変数に退避して入替えます。

○整数型の配列: swapElement(整数型の配列: array, 整数型: idx1, 整数型: idx2)
  整数型: swap
  
  / 1. idx1 の位置にある値を一時的に退避させる */
  swap ← array[idx1]
  
  / 2. idx2 の位置にある値を idx1 の位置に上書きする */
  array[idx1] ← array[idx2]
  
  / 3. 退避させておいた値を idx2 の位置に入れる */
  array[idx2] ← swap

  return array

配列データの入替えは「バブルソート」で使ってます。入替を関数化して、擬似言語をすっきりさせてみても良いかも。>【擬似言語⑫】バブルソートのNote




まとめ

お疲れ様でした!

「入替え」は退避を忘れずに、が学びでした。

課題。
①入替を関数化して下さい。引数が配列・返り値も配列、または大域配列で引数なし/返り値なし。
>【擬似言語⑫】バブルソートのNote の擬似言語の入替部分を関数呼出しにして、スッキリさせてみて下さい。
>答えNote(作成中*)

次回は、データをズラす演算、「シフト」を学習します。>【擬似言語アルゴ②】シフトの基礎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は全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ

この記事が参加している募集