【2分×30節で読める基礎】擬似言語の教科書(基本情報技術者, 科目B)
このNoteは、科目Bの「擬似言語の記述形式」の理解に特化した講座です。1節2分で読めるぐらいに小分けにしたので、2分×30節=60分が読めるのがコンセプト。勿論、良い区切りで休憩/翌日回しで構いません。

擬似言語/プログラムのテキストって、くっっっっっっっそ読むの心折れませんか?
最初にフローチャートだのアルゴリズムやって、擬似言語。それでもまだ何のプログラム言語(python, Javaなど)が使えるようになるわけでもない。学習ハードル高すぎぃ!
テキストは、基本的に文字数多くて、ページも分厚い。私も授業では教科書なんてやってらんないので、プリント作ってます。
このNoteでは、科目B問題の最初に載ってる「擬似言語の記述形式」だけに特化しました。FE合格を目標にしてるなら、載ってるのだけ理解すれば良いのは自明です。
FEに不合格になった方、擬似言語の得点が伸びない方、学習しようにもどうも手が進まない方、学習に挫折された方。少しでも役に立てたら嬉しいです。
このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!
【NOTICE】著作権を侵害には即座に法的措置をしています。人格否定もブロックなどの自衛手段を行います。私は1個人であり、公人ではありません。プライベート時間の全てを費やして作成してきました。ご理解頂ける方のみ、ご活用されると嬉しいです🫠
①注釈(コードのメモ書き)
まずは超絶簡単のから。
注釈(コメントアウト)は、プログラムにメモを残します。
そのままメモを書いたら、コンピュータにプログラムだと解釈されて「プログラム言語で書けボケ」と怒られます。
特殊文字前に「//」置くかor挟む「/*」「*/」と、「プログラムコードじゃないのね」と無視されます。
//実行されない(1行だけ)
/*実行されない(挟んでいる箇所)*/
/*
複数行コメントするのに便利
実行されない
実行されない
*/②変数名とデータ型
「変数」はデータを入れる箱。一軒家とも。
「このデータ使うから箱に大事に入れといてね」って。
「宣言」で、変数名と「データ型」を明示します。
例えば「aって名前の変数で、整数を入れる用として使うよ」。
整数型:a「整数型」が「データ型」の一種を指します。
整数(小数点以下なし)を入れる用の「整数型」。実数(小数点あり)を入れる用の「実数型」。色んな型があります。後節で勢揃いさせますね。
③変数への代入(値と文字)
変数にデータを入れる「代入」は「←」を使うだけ。
整数型:a
a ← 0数学の「=」を「←」に変えただけと思ってOK。実際プログラムでも「a=1」と書きます。
宣言と初代入を一緒にしても構いません。
整数型:a ← 0文字は「”」で挟みます。
文字列型:c
c ← "あい"
c ← "1"「文字列型の変数c」は計算には使えません。
「数値の1」と「文字の1」は扱いが違うんです。
「整数型:a←”1”」もできません。文字は入れられない変数なので。「文字列型:c←1」もダメ。
④変数のデータ型いろいろ
FE科目Bに出た「データ型」は以下。
出題頻度を見れば一目瞭然。最優先は「整数型」。数値じゃないデータを扱う「文字列型」。
★整数型:整数(小数点なしの数)
※全ての問題で登場実数型:実数(小数点ある数もOK)
>【FEB】令和05年問05のNote
>【FEB】サンプル1問12のNote
>【FEB】サンプル1問14のNote★文字列型:文字(複数文字もOK)
>【FEB】令和06年問05のNote
>【FEB】サンプル1問02のNote論理型:TrueかFalseか
>【FEB】令和05年問01のNote
>【FEB】令和05年問04のNote8ビット型:2進数8桁
>【FEB】サンプル1問06のNote
あとは問題演習で自然に覚えていきますよ。論理型は「true(真)」「false(偽)」の2値だけ。ビット型は「2進数でしょ」程度でOK。
⑤演算子(算数でお馴染み)
「演算子」は「データとデータをどう操作する」かって記号。
「演算子」って難しい言葉ですが、数学でお馴染みの「+」「-」「×」「÷」。
整数型:a
a ← 1 + 3aには4が代入されます。
FE問題用紙には「演算子の優先順」が載ってますが、一旦忘れてください。小中学校で習った「()が最優先」ぐらい知っておけばOKです。
ちょっとコツ。()を書いた方が良いですよ。「2+3×2」は「3×2」から計算しますが、「2+(3×2)」と書いた方がミスがありません。
整数型:a
a ← 2 + (3 × 2)⑥変数への代入(プログラムならではの数式)
変数への代入には、変数も参加できますよ。
整数型:a, b, c
a ← 1 + 2
b ← a + 3
c ← a + baに3、bに6、cに9、が入った状態になります。
ここまでは数学とも同じなので分かり易かったですね。
さて本題。「プログラムならではの書き方」を学習します。
数学でa=a+3ってあり得ないですよね。どんな数をxに入れても成立しません。
プログラムでは書けるんです。
整数型:a
a ← 1
a ← a + 11行目で、変数に1が代入。2行目で+1されて、aには2が入ってます。
「a←a+1」って書き方は、繰り返し処理(ループ)で良く使われます。そのうち慣れますよ。
⑦少し変わった演算子mod
「mod」は、科目Aにも出てきましたね。割り算して「余り」を求める演算子。>【FEA計算⑦】modのNote
整数型:a
a ← 5 mod 3aには2が入ります。5÷3=1・・・2。余りは2なので。
実は「mod」は1問にしか出てません。
>【FEB】令和07年問01のNote
「商」「余り」「割り切れる」という表現が多いです。
>【FEB】令和07年問02のNote(商)
>【FEB】令和05年問03のNote(商)
>【FEB】サンプル2問02のNote(商)
>【FEB】サンプル1問02のNote(割り切れる)
>【FEB】サンプル1問13のNote(商)
>【FEB】サンプル1問16のNote(商, 余)
多分、商の算出方法が難しめだからかな。
⑧プログラムでの関数
数学での関数は、複雑な数式の代理表現ですね。「y=2x+5」を「f(x)」と簡単に書けます。
大事なのは、”関数”f(x)にx=1を”入れたら”、計算結果の7が”出てくる”って性質。
数学では、関数は計算処理をして結果(数値)を出しました。
プログラムでは、計算や数値に拘りません。関数への入力は数値でも文字でもできるし、処理結果も数でも文字でもできます。なんなら、画面表示する、ロボットアームを動かすも関数の処理に含まれます。関数は「プログラムの塊」。「機能」と解釈すると分かり易いかも。
関数への入力を受ける変数を「引数」、関数からの返事データを「返り値(戻り値, 返却値)」と云います。
y=f(x)なら、関数f(x)のxが引数。yに代入されるデータが返り値。
⑨関数の定義(引数, 返り値)
関数も変数と同じく宣言をして使います。
例えば「xにデータを入れて、f(x)を呼び出したら、x+3した計算結果を出す関数」を作ってみます。
○整数型:f(整数型:x)
return x+3「○」が関数を宣言するって意味
変数の時は「○」なし、でしたね。「○」の次に「返り値」のデータ型
関数の名前「f」
「(」「)」の間に引数。
引数は変数なので変数の宣言で。
「○」で関数が宣言できたら、関数の処理を書きます。
○整数型:f(整数型:x)
return x+3だったら、f(x)にx=1を入力したら1+3=4が返答されます。return文が返事をする文。
○整数型:f(整数型:x)
return x+3
// ここから実行
整数型:y
y ← f(1)
yを表示4が表示されます。
⑩関数の定義(引数/返り値なし)
プログラムでは「引数がない」「返り値がない」関数も作れます。
引数がない関数。
○整数型:f()
return 2
// ここから実行
整数型:y
y ← f()
yを表示2が表示されます。必ず数値2を返す関数で、用途はないですけどね💦
問われる出題はないし、マイナーです。意識しなくOK。>【FEB】令和07年問03のNote(pop関数)
返り値のない関数。
○f(整数型:a)
変数a内のデータを表示する
// ここから実行
f(3)3が表示されます。
問われる出題はないし、マイナーです。意識しなくOK。>【FEB】サンプル2問03のNote(append関数)
引数も返り値もない関数
○f()
”関数が実行されました”と表示する
// ここから実行
f()「関数が実行されました」と表示されます。
問われる出題はないし、マイナーです。意識しなくOK。>【FEB】令和05年問02のNote(proc関数)
⑪関数の引数(複数設置)
関数の引数は複数設置できます。
○整数型:f(整数型:x ,整数型:y)
x ← x + y
return x
/*ここから実行*/
整数型:a
a ← f(1, 2)
aを表示する3が表示されます。
「返り値を複数設置できるか?」と思った方。センスいいですね!できますが、このNoteではスルーしますね。科目Bに出てない(出てるけどフォーカスされない)ので。
⑫演算子(指数演算)
「指数」は、エクセルでは「^」、他ソフトでは「**」が演算子なのを知ってるかもですね。
擬似言語やプログラム言語では、指数を演算子では処理しません。対応言語はありますが…FE科目Bではスルー。
FE科目Bでは、pow(x, y)って「xのy乗」を計算する関数が登場しました。>【FEB】サンプル問題1問05のNote(pow関数)
掛け算のループでも計算できます。「2の3乗」は「2を3回掛ければ良い」ですからね。>【FEB】令和06年問02のNote(掛け算ループ)
ただし、指数は小数点(0.5=平方根)や負数(-1=分数)もできるので、掛け算ループはあくまで整数しか対応できません。よって別途用意された関数を使わせてもらうんです。
提供される便利なプログラムの集まりを「ライブラリ」と云います。自分でゼロから作らなくて済みます。ありがたい!
⑬演算子(等号, 不等号, 論理)
演算子の最後は等号/不等号。小中学校で習いましたね。
a>bは、左側のaが、右側のb「より」大きい。a≧bは、aがb「以上」。「より大きい」と「同じ」でもOK。「≧」が「>」と「=」の合成なので分かり易いかな。
また「=」は「同じ(等しい)」ですが、「≠」は「等しくない」を意味します。
科目Aでは「AND」「OR」「NOT」を論理回路・ブール代数で学びましたね。擬似言語でも使います。
>【FEA計算⓯】ベン図/真理値表のNote
>【FEA計算⓰】論理回路のNote

「>, ≧, =, ≠, ≦, <」「AND, OR, NOT」は、条件判断に使われます。
例えば数学では、「a>b」は「aはbより大きい」って関係を意味してました。擬似言語では「aはbより大きいか?」って疑問/判定な感じで使われます。
次節からの分岐/反復の制御で使います。
⑭分岐(処理を切り替える)
ifは英語で「もし」。転じて「もし~だったら(条件と合ったら)こうしてね」って制御で使います。
整数型:walk
walk ← 本日の歩数
if(walk ≧ 10000)
「目標達成」と表示する
endif万歩計アプリのイメージ。歩数センサーの結果が1万歩を超えてたら「目標達成」と表示。
ifは「合ったら」「合わなかったら」の分かれ道2つが基本ですが。更に「elseif」で、分かれ道を増やせます。
整数型:walk
walk ← 本日の歩数
if(walk ≧ 10000)
「目標達成」と表示する
elseif(walk ≧ 5000)
「目標まで半分!」と表示する
endif1万歩以上じゃなかったら、5千歩以上かを判断、5千歩以上だったら「目標まで半分!」と表示されます。もし1万歩以上だったら「目標達成」と表示されます。次の5千歩以上の判断はしません。
if, elseifは、上から順番に判断されます。条件を満たした処理をしたらendifに飛びます。
elseifはいくつでも追加できます。
整数型:walk
walk ← 本日の歩数
if(walk ≧ 10000)
「目標達成」と表示する
elseif(walk ≧ 5000)
「目標まで半分!」と表示する
elseif(walk ≧ 0)
「頑張ろう!」と表示する
endif「else」は「今までのif, elseifの全てに合わなかったら」と”全てのハズレ”のための実行を書きます。
整数型:walk
walk ← 本日の歩数
if(walk ≧ 10000)
「目標達成」と表示する
elseif(walk ≧ 5000)
「目標まで半分!」と表示する
elseif(walk ≧ 0)
「頑張ろう!」と表示する
else
「センサー異常」と表示する
endif1万歩以上じゃない、5千歩以上じゃない、0歩以上じゃない。つまり歩数計が負の値。「センサー異常」と表示します。
条件分岐
if(条件)
処理
elseif(条件)
処理
elseif(条件)
処理
else
処理
endif
の形です。
⑮反復(for文)
for文は、繰り返し処理(ループ処理)を制御します。
繰り返す回数の制御には、「ループカウンタ」を使うのが王道です。iがループカウンタ。
整数型:i
for(iを1から3まで1ずつ増やす)
iを表示する
endfori=1, 2, 3はfor内の処理をし、i=4になったらやらずにスキップします(endforに飛ぶ)。
処理結果は「1, 2, 3」が表示されます。
for文は二重、三重にできます。ループカウンタは、i, j, kを使うのが通例。
整数型:i, j
for(iを1から3まで1ずつ増やす)
for(jを1から2まで1ずつ増やす)
「(i,j)」を表示する
endfor
endfor結果は「(1,1)(1,2)(2,1)(2,2)(3,1)(3,2)」と表示されます。i=1の時にj=1と2のループをして、i=2になってj=1と2、i=3になってj=1と2、と処理が進みます。
九九を出力する擬似言語を考えて見て下さい。>(Note企画中*)
for文の中にif文を入れるのもできますよ。
整数型:i
for(iを1から3まで1ずつ増やす)
if(iが2と等しい)
iを表示する
endif
endfori=2の時「2」が表示されます。他のi=1, 3の時はif文内は実行されません。
偶数を出力する擬似言語を考えてみて下さい。if文の条件で、演算子modを使ってみてくださいね。>(Note企画中*)
⑯反復(while文)
while文もfor文と同じく、繰り返し処理を制御します。for文はループ回数を制御する方向性ですが、while文は条件を満たす限りループする制御で使われます。
for文。
整数型:i
for(iを1から3まで1ずつ増やす)
iを表示する
endforwhile文にします。
整数型:i ← 1
while(i ≦ 3)
iを表示する
i ← i + 1
endwhile「i←1」「i←i+1」を追加せねばならないので、for文より面倒ですよね。回数制御はfor文の方が楽です。
while文は「こうある限り続けてね」「こうなったらやめていいよ」という制御向き。
整数型:sec
sec←3
while(sec ≧ 0)
1秒待つ
sec ← sec - 1
endwhile
「時間になりました!」と表示する他にも「~が見つかるまで続けてね」とか「ファイルの最後の行まで読み込むまで」とか。
⑰反復の離脱(break)
whileループを「その場で抜けたい」時は、科目Bでは「繰返し処理を終了する」と書いてます(break文)。
整数型:i ← 1
while(i≦10)
if(iが2に等しい)
繰返し処理を終了する
endif
i ← i + 1
endwhilei=2になった時、if文の条件を満たしbreakします。「while(i≠2)」でも同じ動作をしますが。
breakの使い所は、”これ以上やっても意味がないって分かった時”、”エラーが出たのですぐ中止した時”などです。
i=3から始めると、i=2には一生ならないので、i=11でwhile条件を満たさなくなってループ終了します。
整数型:i ← 3
while(i≦10)
if(iが2に等しい)
繰返し処理を終了する
endif
i ← i + 1
endwhileつまりbreakを設けると、ループ脱出が2経路以上になります。while条件+breakの個数だけ脱出経路があります。
breakをあっちこっちに仕込むと、どれでbreakしたのか分かりにくくなったり、想定外のbreakで誤った処理結果になるかもなので注意です。
breakの個数を絞るか、仕込む箇所を集めるか、breakの理由を返り値でメッセージとして送るかなどの工夫は必要かも。
なお無限ループを抜け出す使い方もあります。むしろ王道。
「PRESS START BUTTON」と表示する
while(True)
if(ボタンが押されたか)
break
endwhileゲームのタイトル画面って「PRESS START BUTTN」ってメッセージが出てて、ボタン押さえるの待ってますよね。
While(True)は条件判定が、常にTrue(真)で変わらないので、無限ループになります。
科目Bでの出題例をまとめます
>【FEB】令和07年問01のNote(for)
>【FEB】令和05年問01のNote(for)
>【FEB】令和07年問03のNote(while)
私はfor文でのbreakはあまり使わないかなぁ。回数が決まってる時にfor文使うので途中でbreakする必要がないというか…。
⑱反復(do while | 一度も出てない)
do whileは出題がないので、一旦忘れて良いかも。でも簡単ですよ。ループを続けるかの判断が最後になっただけ。
例えば、サイコロを1回は振るのが確定してて、6の目が出たらもう1回振れる!って処理。
○整数型:dice
do
dice = rollDice()
while (diceが6と等しい)
//rollDice()は、1~6の整数を1つだけランダムに返す関数ループ判定がループ処理後に行われるので、処理が必ず1回は実行されます。
⑲未定義な値
下コードにはバグがあります。アルゴリズムは正しいけど、コンピュータの事情で不具合が発生します。
整数型:i, sum
for(iを1から3まで1ずつ増やす)
sum ← sum + i
endfor1回目のループ(i=1)の時「sum←sum+1」を実行しますが、sumに何が入ってるか分かりません。もし100が入ってたら、sumは101になってしまいます。
変数や配列は実際はメモリを使うので、前のデータやデータの欠片が入ってます。いわば、部屋に住もうとしたら、前住んでた人のタンスが残ってて困っちゃう感じ。
初期値の代入(初期化)は大事です。「sum←0」にしました。
整数型:i, sum ← 0
for(iを1から3まで1ずつ増やす)
sum ← sum + i
endfor宣言をしただけで、何に何が入っているか/入ってないかすら分からないのを「未定義の値」と科目Bでは云ってます。
FE科目Bでは、”未定義”とは、”変数に値が格納されていない状態”と指してます。
プログラマ界隈では「NULL値」と云います。”からっぽ”ってこと。空き部屋ですね。
なお、私の専門学校では「不定」と教えています。空っぽのことは「NULL」と教えています。
⑳配列(アパートか一軒家か)
例えば1~12月の売上を集計する時、変数を12個必要。JAN, FEB, MAR…って。
整数型:JAN, FEB, MAR, APR, MAY,~略~, DECくっそ面倒なので、「配列」を使います。
1月売上をsales[1]に代入、2月分をsales[2]に~略~12月分をsales[12]にって具合。
アパートの名前と部屋番号と思ってください。[]内を、「要素番号(添え字)」、配列の要素の個数を「要素数」と云います。
sales[1]~sales[12]だと、[1]や[12]が要素番号、要素数は12([1]~[12]なので)。
変数は一軒家、配列はアパート、と授業では例えてます。
㉑配列(要素番号, 要素)
配列の使い方を学習していきます。
まずは「宣言」。変数と同じで名前とデータ型を明示します。
整数型の配列:sales使う要素数が決まっているなら指定します。一括代入ができます。最初にデータを入れておきたい時に使われてます。
整数型の配列:sales ← {100, 120, 160,~省略、合計12個の要素~}データの代入や読み出しも、変数と同じく「←」でできます。配列では配列名に加えて、要素番号も指定する点に注意です。
整数型の配列:sales ← {100, 120, 160,~省略、合計12個の要素~}
整数型:a
sales[1]を表示する //1月の売上を表示
a ← sales[1] //1月の売上を変数aに代入
aを表示する
sales[1] ← 120 //1月の売上を120に修正配列では、「添え字(要素番号)」と「要素(データ)」の取扱いが重要ポイントです。
整数型の配列:sales ← {100, 120, 160,~省略、合計12個の要素~}
整数型:i, sum ← 0
for (iを1から12まで1ずつ増やす)
sum = sum + sales[i]
endfor難しくなると、要素番号に数式/配列が入ってきますよ。
data[i+j-1]。>【FEB】令和07年問04のNote
data[(first+last)÷2の商]。>【FEB】令和05年問03のNote
bins[data[i]]。>【FEB】サンプル1問11のNote
㉒配列の宣言/初期化の色々
科目Bで出た配列の扱い方にはバリエーションがあります。
配列って、型と個数をガッチリ決めるもんなんです。
メモリを確保するので。自分がホテルマンだったら、「泊まりたいけど何部屋かは追々伝えるね」って予約されたら困りますよね。
でも、個数を臨機応変に変えるやり方もあります。
科目Bで出題された書き方を見ます。覚えなくても、理解できればOKです。
使うデータが決まっている時。
代入は、変数と同じく「←」、ただし「{」「}」で囲みます。
オリンピックのメダル数を配列で扱う例。
整数型の配列:medal ← {5, 7, 12} //金, 銀, 銅
整数型の配列:medal ← {3個の0} //擬似言語ならでは
// {0, 0, 0}になるデータは今から格納するけど、個数が決まっている時。
部屋は確保できてるので自由に代入できます。読み出しはダメ(未定義の値なので)。
整数型の配列:medal ← {3個の 未定義の値}
medal[3] ← 12
// {未定義の値, 未定義の値, 12}になるデータも個数も決まってない時。
1個ずつ「末尾に追加」していきます。
整数型の配列:medal ← {}
medalの末尾に5を追加
medalの末尾に7を追加
// {5, 7}になる㉓配列「要素の数」
配列の取り扱いでは「要素の数」が良く使われます。
例えば、配列要素を1つずつ読み出す時、添え字を1から「要素の数」まで動かせば良いです。部屋数が3のアパートの部屋番号は、1から3ですからね。
整数型の配列:medal ← {5, 7, 12} //金, 銀, 銅
整数型:sum ← 0
for(iを1から medalの要素数 まで1ずつ増やす)
sum ← sum + medal[i]
endfor「medalの要素数まで」は「3まで」でもOKですが、要素数が未定/増減する場合がありますからね。
また「ループの度に配列から1個ずつ取り出す」こともできます。
整数型の配列:medal ← {5, 7, 12} //金, 銀, 銅
整数型:sum ← 0, a
for(aに medalの要素を順に代入する)
sum ← sum + a
endfor配列から1個ずつ呼び出しは、複雑な配列になると便利です。
ループカウンタ(i)でfor文回すには、配列の要素数を数える必要があります。また要素数がずっと変わらない配列しか使えません。使いにくいケースあり。
㉔二次元配列(高層アパート)
配列の考えを拡張します。
もし2026年トリノ五輪、2022年北京五輪の金銀銅メダル数を記録したい時。medal2026[], medal2022[]を用意するのはテ。
整数型の配列:medal2026 ← {5, 7, 12} //金, 銀, 銅
整数型の配列:medal2022 ← {3, 7, 8} //金, 銀, 銅でも、歴代五輪を扱うなら、2000年以降でも7個準備する必要。もう面倒になってきました。各月の売上に変数12個必要だったのと同じ。
もう一つの方法「二次元配列」。
整数型の二次元配列:medal ← {{5, 7, 12}, {3, 7, 8}}
//金, 銀, 銅。2026, 2022の順。medal[1, 1]が2026年の金メダル5個、medal[1, 2]が銀メダル7個、medal[1, 3]が銅メダル12個。medal[2, 1]が2022年の金メダル3個、medal[2, 3]が銅メダル8個。
一次元配列が1階建てアパートなら、二次元配列は2階建てアパートですね。
㉕二次元配列の宣言/初期化の色々
一次元配列の時と同じく、二次元配列の扱いを学習します。
使うデータが決まっている時。
整数型の二次元配列:medal ← {{5, 7, 12}, {3, 7, 8}}
/*
{
{5, 7, 12}
{3, 7, 8}
}
になる
*//*コメント*/に書いた通り、二次元配列は表的に理解すると分かり易くなります。日本語だって、1行に何文も書かれるより、適度に改行されてないと読み難いですよね。
データは今から格納するけど、個数が決まっている時。
整数型の配列:medal ← {2行3列の 未定義の値}
medal[1, 1] ← 5
medal[2, 3] ← 8
/*
{
{5, 未定義の値, 未定義の値}
{未定義の値, 未定義の値, 8}
}
になる
*/「2行3列の 未定義の値」。1階と2階に3部屋確保した状態。
メダル数だったら、0に初期化した方が絶対良いですが。学習用なので"未定義の値"にしました。ご容赦🙏
2次元配列は”揃っている”必要はありません。
整数型の配列:array←{{1, 2, 3}, {4}, {5, 6}}
/*
{
{1, 2, 3}
{4}
{5, 6}
}
になる
*/とはいえ、私はイビツな配列の使い方はしないかなぁ。
㉖オブジェクト指向(クラス)
オブジェクト指向は、設計図「クラス」に変数や関数を内包させて、クラスをモノ「オブジェクト」に具現化させて、働かさせる思想です。
例えば、犬ってクラスを作って、名前や毛色を保管する変数、歩いたり吠えたりする関数を含ませます。犬クラスを具現化させる時に、名前や毛色を入力して具現化「インスタンス化」します。
後は野に話して時間を薦めてあげれば、犬が歩いたり吠えたりします。
設計図を1つ作っておくだけで、インスタンス化をバンバンやっちゃえば、犬をどんどん作れるんです。
シューティングゲームの敵機とか隕石とかイメージすると分かり易いかもですね。大量生産できないと無理ですね
ここまで書いてて、科目Bには大量のインスタンス化は出てません。”1個のクラスで1個のオブジェクトを作ったので、変数「メンバー変数」と関数「メソッド」を使ってみてね”って問題が出るだけです。
㉗オブジェクト指向(メソッド)
お財布のクラスを作ってみました。
重要なのは「クラス名がWallet」「メソッドが2つ。deposit(), withdraw()」。できれば「変数が2つowner, balance」まで。
クラス Wallet
メンバー変数
文字列型: owner
整数型: balance
コンストラクタ(初期化処理)
コンストラクタ Wallet(文字列型: name, 整数型: init)
owner ← name
balance ← init
メソッド
deposit(整数型: amount) // 入金
balanceにamountを加算論理型:withdraw(整数型: amount) // 出金
balance≧amountなら、balanceからamountを引いて、trueを返す。balance<amountなら、falseを返す
まずクラスをオブジェクトにします。インスタンス化。
Wallet型:wallet ← Wallet("sagara", 100)「wallet」って名前のオブジェクトを作りました(インスタンス化)。インスタンス化する時は、コンストラクタって関数で初期化もします。
sagaraさんは100円持ってる状態。name←"sagara"とbalance←100が内部で実行されてます。
メソッド「deposit()」を使って入金してみます。オブジェクト名「wallet」の後に「.」をつけて「deposit()」を呼び出します。
wallet.deposit(200)
// 200円入金、wallet内のbalanceが100から300に変更。メソッド「withdraw()」を使って出金してみます。
wallet.withdraw(150)
// 150円出金。wallet内のbalanceが300から150に変更。wallte.withdraw(400)
// 400円出金。balance内に300しかないので、処理されず。なお、withdraw()はtrue/falseを返すので、返り値を受け取らねばいけません。報告するのに報告を聞く人いないとエラーになります。
論理型:result
result ← wallet.withdraw(400)
if( result が true)
「出金が完了しました」と表示する
else
「残高不足で出金できません」と表示する
endifif条件に直接書けもしますが、私は別々の方が読み易いかな。
if( wallet.withdraw(400) が true)
「出金が完了しました」と表示する
else
「残高不足で出金できません」と表示する
endif㉘オブジェクト指向(メンバー変数)
メンバー変数の直接操作はどうしよう。
メンバー変数にもアクセスできます。
wallet.nameを表示する
//「sagara」と表示される代入もできます(ちょっと問題あり)。
wallet.balace ← 1000000残高が100万円になりました😅
※実際は「メンバー変数」に直接アクセスはさせず、メソッドを介すことが多いです。名前を表示するメソッド、名前を変えるメソッドも準備せねば。とはいえ、次節でメンバー変数にアクセスする出題を学習するので…。
㉙オブジェクト指向(ポインタ)
メンバー変数を値/文字ではなく、指し示す「ポインタ」役割としての活用法が出題されます。
ちょっと難しいので「まぁ解ける」「まぁなんか分かる」ぐらいにボカしますね。捨てても良いですよ。出題されたから対応してるだけ。
下図クラスのメンバ変数「next」について。すっごく浅く流しますよ。

下図みたくリストが既がある時、「prev.next」が次のリストを指しているって理解に繋げます。

1番目のリスト(メモリアドレスが101)がprevってオブジェクト名で「prev.val」に”a”、「prev.next」に105(次リストのアドレス)が格納されてる状態。
つまり「prev.next」は2番目リストを指している。2番目リストのnextは3番目リストを指している。よって「prev.next.next」は3番目リスト。
上図下の「prev.next ← prev.next.next」とは、1番目リスト(prev)の次(.next)を、3番目リスト(prev.next.next)にするって意味。つまり2番目をリストから切り離す処理です。
「ポインタ」と云います。表現がとても難しいです。データ, アドレスそのものではなく、指し示すモノ。
冒頭の通り。「オブジェクト指向」ましてや「ポインタ」は軽く流して何となく解ける程度or捨ててください。
>【FEB】サンプル2問03のNote
>【FEB】サンプル1問10のNote
㉚変数や配列の「大域」
「大域:~」は、プログラム全体で共通して使えるモノって意味。グローバル変数(大域変数)などが代表的に出題されます。
局所変数(ローカル変数):ある範囲内で有効。
大域変数(グローバル変数):どこからでも有効(全体で使う)。
「大域」はプログラム全体で共通して使えること。大域じゃない「局所」は関数の内側だけで使えること。
以下では、大域変数aを総理大臣の名前(日本全体で共通)、局所変数iをfuncA学校の加藤さん、funcB学校の加藤さん(別人)と考えると理解しやすいです。
大域:整数型:a ← 1
○funcA()
整数型:i ← 2
iを表示する //・・・【2】, 【8】
a ← 4
aを表示する //・・・【3】, 【9】
○funcB()
整数型:i ← 3
iを表示する //・・・【5】
aを表示する //・・・【6】
// ここから実行
aを表示する //・・・【1】
funcA()
aを表示する //・・・【4】
funcB()
aを表示する //・・・【7】
funcA()
aを表示する //・・・【10】表示結果は、以下。
大域変数aの「1」が表示
funcA内の局所変数iの「2」が表示
大域変数aの「4」が表示(funcAで変更された)
大域変数aの「4」が表示
funcB内の局所変数iの「3」が表示
大域変数aの「4」が表示
大域変数aの「4」が表示
funcA内の局所変数iの「2」が表示
大域変数aの「4」が表示
大域変数aの「4」が表示
2, 5, 8に注目。funcA内のi、funcB内のiは別物。互いに干渉しません。
1, 3, 4, 6, 7, 9, 10での大域変数aは、funcA, funcB, 外側で全て共通して使うので、値が変われば全員に影響がでます。
詳しい理解は問題演習の後にして下さい。>【FEB】令和05年科目B問03のNote
まとめ
お疲れ様でした!
これで、FE科目B合格への必要充分かつ最小限の知識基礎が固まりました。フローチャートやcaseとか超カットしてます。出てないので。

次は、合計値や平均値の計算、数値の並べ替え、文字列探索などの目的ある処理「アルゴリズム」を学びつつ。擬似言語(プログラム)の基礎や考え方へ発展させます。>(企画中*)
プログラムに興味ある方は、その後にプログラムに応じた学習を薦めます。擬似言語で出てきた「配列から1つずつ呼び出す」は、pythonは標準でできますが、C言語はできない、など違いがあるんです。だから科目Bでは曖昧にボカしてる記述が散見してるんです(初学者は気づかなくてOK、PG経験者は違和感ありましたね)。
私は学校の授業でC言語、独学でperl、AIが流行ってpython, 授業でJava, VC#と広げてきました。今からならJava, pythonが最初ですね。私の学校でも1年生後期から授業します。
私のどこまでNoteを作れるか分かりませんが、引き続きIT専門学校の授業/プリント教材の言語化/Note化を続けていきたいと思います。
最後に私のお薦めの演習順番。
❶学習前の”分からせ”
>【FEB】サンプル問題2の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が有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼
もちろんコメントでも結構です(・ω・▼)ノシ