基本情報技術者(FE)対策
擬似言語の関数
関数はコードに名前を付けたもの
前回までは、1 つながりのコードを上から順に追ってきました。ここからは、コードをいくつかの部品に切り分けて、それぞれに名前を付ける書き方を読みます。この部品が関数です。関数とは、値を受け取って処理をし、結果の値を 1 つ返す部品のことです。
擬似言語では、行頭の丸印 ○ が「ここから新しい部品の定義が始まる」という目印になります。
○整数型: tasu(整数型: a, 整数型: b)
整数型: kotae
kotae ← a + b
return kotae1 行目が定義の見出しにあたる行です。○ のあとの「整数型」は返す値の型、tasu が関数の名前、丸括弧の中に並んでいるのが引数の宣言です。引数とは、呼び出す側から関数へ渡される値のことです。この関数は整数を 2 つ受け取り、整数を 1 つ返します。
最後の return が、値を返して関数を終わらせる命令です。return まで来た時点で、その下に行があっても実行されません。
手続きは値を返さない
○ のあとに型が書かれていない定義もあります。
○hyouji(整数型: n)
n を出力するこれは手続きと呼ばれ、何かをするだけで値を返しません。返す値がないので return kotae のような行も出てきません。本試験では、この見出し行に型が付いているかどうかだけで、値が返ってくるかどうかを判断できます。呼び出しの行が x ← hyouji(3) のように代入の形になっていたら、それは手続きの誤用です。選択肢の正誤を切る手がかりになります。
引数は名前ではなく位置で対応する
呼び出す側は、次のように書きます。
seikai ← tasu(5, 2)このとき 5 が a に、2 が b に入ります。対応するのは名前ではなく並んだ位置です。呼び出す側の変数名が p や q であっても、定義側では a と b という名前で扱われます。ここを名前でつなげて読もうとすると、引数が 2 つ以上ある問題で必ず混乱します。1 つ目は 1 つ目へ、2 つ目は 2 つ目へと、位置だけで結び付けてください。
渡されるのは変数そのものではなく、その時点の値です。定義側で a の値を書き換えても、呼び出した側の変数は変わりません。
局所変数は関数の中だけで生きる
上の例の kotae は tasu の中で宣言された変数で、局所変数と呼びます。呼び出した側からは見えませんし、関数が終わると同時に消えます。別の関数に同じ kotae という名前の変数があっても、それは別物です。
この「終わると消える」性質は、次のレッスンからのトレースで効いてきます。関数の呼び出しが終わった行では、その関数の中の変数を表から消す、と決めておくと表が読みやすくなります。
関数が出てきたときの読む手順
関数が並んだコードは、上から順に読むものではありません。次の手順で追います。
- まず、どの関数が最初に動くのかを探す
- 呼び出しの行で、引数に渡る値を書き出す
- 定義側へ飛び、その中を追って戻り値を確かめる
- 呼び出しの行へ戻り、戻り値を式にはめ込む
定義がコードの上のほうに書かれていても、そこから読み始める必要はありません。呼ばれて初めて動くからです。次のレッスンで、この行き来を実際に表で追います。