【擬似言語⑦】九九表 | 二次元配列と配列宣言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
endfori=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が有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼
もちろんコメントでも結構です(・ω・▼)ノシ