見出し画像

【擬似言語⑦】九九表 | 二次元配列と配列宣言6パターン(基本情報技術者, 科目B, アルゴリズム)

このNoteでは、for文を二重にして九九を算出します。九九表にしたいので二次元配列を導入します。一見難しいけど、わりとすぐ読めますよ。

あまりにチョロイので、最後に”配列の宣言”を科目B試験問題から、片っ端集めました(ニチャァ)。

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

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


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

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



for文を二重にしてみる

九九って、
1の段。1×1, 1×2,…,1×9
2の段。2×1, 2×2,…,2×9
3~8の段。
9の段。2×1, 2×2,…,2×9
って感じ。

前の数字を1~9、後ろの数字を1~9にしてるので、ループ処理を二重にします。前を「i」, 後ろを「j」のループカウンタにして。

○calcMultiTable()
  整数型: i, j

  / 外側のループで1から9まで回す */
  for (i を 1 から 9 まで 1 つずつ増やす)
      / 内側のループで1から9まで回す */
      for (j を 1 から 9 まで 1 つずつ増やす) 
          「i × j の計算結果」を表示
      endfor
  endfor

i=1の時に、j=1, 2,…,9と進み。1の段。1×1, 1×2,…,1×9
i=2の時に、j=1, 2,…,9と進み。2の段。2×1, 2×2,…,2×9
想定通りの動きになりましたね。




二次元配列に格納してみる

九九「表」ってことで、計算結果を二次元配列に保管してみます。

table[i, j]={
1, 2,…,9
2, 4,…,18

9, 18,…, 81
}
って感じ。

○整数型の2次元配列:calcMultiTable()
  整数型の2次元配列: table ← {9行9列 の 0}
  整数型: i, j

  for (i を 1 から 9 まで 1 つずつ増やす)
    for (j を 1 から 9 まで 1 つずつ増やす)
      / i行j列の要素に、i × j の計算結果を代入する */
      table[i, j] ← i × j          
    endfor
  endfor
  return table

説明不要とは思いますが。
target[1, 1] ← 1×1
target[1, 2] ← 1×2
…略
target[1, 9] ← 1×9
target[2, 1] ← 2×1
target[2, 2] ← 2×2
…めっちゃ略
target[9, 1] ← 9×1
target[9, 2] ← 9×2
…略
target[9, 9] ← 9×9




配列の初期化バリエーション

以下が理解できれば、スキップOK。

❶実数型の配列: p ← {0, 0.25, 0.5, 0.75, 1}

❷整数型の配列: hashArray ← {5個の -1}
➡整数型の配列: hashArray ← {-1, -1, -1, -1, -1}

➌整数型の配列: bins ← {2個の 未定義の値}
➡整数型の配列: bins ← {未定義の値, 未定義の値}

➍実数型の配列: rankData ← {} / 要素数0の配列 */
rankDataの末尾に3を追加すると、
➡rankData={3}
rankDataの末尾に5を追加すると、
➡rankData={3, 5}

❺adjMatrix ← {2行3列の 0}
➡{{0, 0, 0}, {0, 0, 0}}
➡見やすく書くと
{
{0, 0, 0},
{0, 0, 0}
}

❻整数型配列の配列: sparseMatrix ← {{}, {}, {}}
sparseMatrix[2]の末尾に3を追加
➡{{}, {3}, {}}


※以上が分かってるあら、以下はスキップして「まとめ」に行って大丈夫です。お待ちしてます。


❶一次元配列(具体的な値, 決まった個数)

一番分かり易い基本的にな使い方。

具体的な値を、必要な個数だけ代入してます。

実数型の配列: p ← {0, 0.25, 0.5, 0.75, 1}
>サンプル1問14のNote
>サンプル1問16のNote
>サンプル2問02のNote
>令和05年問03のNote

文字/文字列も代入できます。
文字列型の配列: allItems ← {"A", "B", "D"}
>令和06年問05のNote


❷一次元配列(文章で一括表現)

「5個の-1」など、まとめた表現する場合。

代入/初期値を個数で指定する表現。書き下すのが面倒だったのかな?

整数型の配列: hashArray ← {5個の -1}
つまり
整数型の配列: hashArray ← {-1, -1, -1, -1, -1}
と同じ。
>令和05年問04のNote
>令和06年問05のNote


➌一次元配列(未定義の値)

具体的なデータを入れない時は「未定義の値」。

整数型の配列: bins ← {n個の 未定義の値}
>サンプル1問11のNote

例えば
整数型の配列: bins ← {2個の 未定義の値}

整数型の配列: bins ← {未定義の値, 未定義の値}
と同じ意味。


➍一次元配列(要素数0個と追加)

要素数0の配列で宣言して、後で要素を「追加」していく形態

配列の個数を指定しない場合。「配列の末尾にデータを追加」する表現で、データの代入をします。※プログラム的にはちょっと特殊です。

実数型の配列: rankData ← {} / 要素数0の配列 */
rankDataの末尾に~を追加する
>サンプル1問14のNote

例えば、
rankDataの末尾に1を追加すると、
rankData = {1}
さらに、rankDataの末尾に3を追加すると、
rankData = {1, 3}
となります。

>サンプル1問14のNote
>令和05年問01のNote
>令和07年問04のNote
>サンプル1問03のNote


❺二次元配列(二次元展開しよう)

二次元配列。{{}}の書き方が難しいかもですが、基礎は一次元配列と同じです。二次元に展開すれば分かり易くなります。

整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
>令和06年問03のNote

例えば、
adjMatrix ← {2行3列の 0}なら、
{{0, 0, 0}, {0, 0, 0}}。
見た目難しいので行列っぽく表現すると、
{
{0, 0, 0},
{0, 0, 0}
}。
2行3列って分かりますね。

代入は、行番号と列番号を指定します
実数型の二次元配列: result ← {row行col列の 未定義の値}
result[r, c] ← ~
>令和07年問05のNote


❻二次元配列(要素数0個の使い方)

整数型配列の配列: sparseMatrix ← {{}, {}, {}} / 要素数0の配列を三つ要素にもつ配列 */
>サンプル2問04のNote

sparseMatrix[1]の末尾に1を追加すると、
{{1}, {}, {}}
sparseMatrix[3]の末尾に5を追加すると、
{{1}, {}, {5}}
って感じ。


今回のNoteではカットした宣言/使い方もあります。基礎があれば、過去問演習の時に学べばOK。機会があれば特集Noteも作りますね(未定*)。


まとめ

お疲れ様でした!

ループは二重は勿論三重ぐらいはトレースできるようになりましょ。ループ内にif文が入るのもよく出ます。あまりループ階層が増えたり処理が複雑になるなら、関数にまとめるなどしますね。>【擬似言語⑧】偶数と素数のNote

最後に特集した配列の宣言。「書けるようになる」のは不要で、「読めるようになる」まででOK。

「こんな感じかな」と分かる程度で、正解できます。また実際のプログラムでは、できない/別の方法/特殊な処理をすることになるので、今躍起になって覚えてもちょっと手戻り感があります。

「FE合格できるぐらい正解できれば良い」で、一旦線引きして大丈夫です。実は今回、書いた半分ぐらいお蔵入りさせました。「あれはどうなんだろう」「気持ち悪い」って点は、Lv3以降に書くかも(*未定)。

次回は、今までのプチュ集大成。偶数、素数の算出に挑戦します。ループカウンタiとjを地味に「ずらして」使う練習かな。>【擬似言語⑧】偶数と素数 | 小さい関数から組むの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が有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ

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