
今回のテーマは「擬似言語」についてです。
「擬似言語」の問題難しいんですよね...

スポンサーリンク
目次
擬似言語
擬似言語とは、プログラムの記述や解読を容易にするために作られた記述方式のことです。
ITパスポート試験では、次のような形式で擬似言語が出題されます。
記述形式 | 説明 |
---|---|
◯手続名 または 関数名 | 手続または関数を宣言する。 |
型名 : 変数名 | 変数を宣言する。 |
/* 注釈 */ または // 注釈 | 注釈を記述する。 |
変数名 ← 式 | 変数に式の値を代入する。 |
手続名 または 関数名 (引数, … ) | 手続または関数を呼び出し、引数を受け渡す。 |
if (条件式1) 処理1 elseif (条件式2) 処理2 elseif (条件式n) 処理n else 処理n + 1 endif | 選択処理を示す。 条件式を上から評価し、最初に真になった条件式に対応する処理を実行する。以降の条件式は評価せず、対応する処理も実行しない。どの条件式も真にならないときは、処理n + 1を実行する。 各処理は、0以上の文の集まりである。 elseifと処理の組みは、複数記述することがあり、省略することもある。 elseと処理n + 1の組みは一つだけ記述し、省略することもある。 |
while (条件式) 処理 endwhile | 前判定繰り返し処理を示す。 条件式が真の間、処理を繰り返し実行する。 |
do 処理 while (条件式) | 後判定繰り返し処理を示す。 処理を実行し、条件式が真の間、処理を繰り返し実行する。 |
for (制御記述) 処理 endfor | 繰り返し処理を示す。 制御記述の内容に基づいて、処理を繰り返し実行する。 |
変数
変数とは、数値や文字などを格納しておく箱のようなものです。一般的なプログラミング言語では最初に使用する変数を宣言します。
擬似言語で使用する主な変数の型は次のとおりです。
型 | 説明 | 例 |
---|---|---|
整数型 | 小数点のない整数 | -1, 0, 1 |
実数型 | 小数点を含む実数 | -3.14, 3.14 |
文字列型 | 文字列 | "あいうえお" |
擬似言語で使う基本構造
擬似言語で使う基本構造には「順次構造」「選択構造」「繰り返し構造」があり、これらの構造の組み合わせで、コンピュータに指示を与える処理手順を考えます。
順次構造
順次構造は、命令を順番に実行する構造です。処理を上から下へ順番に処理します。
次の例では、整数型の変数cntを宣言→ 文字列型の変数textを宣言 → 変数cntに0を代入 → 変数textに"あいうえお"を代入の順番で処理します。
整数型:cnt
文字列型:text
cnt ← 0
text ← "あいうえお"
選択構造(分岐構造)
選択構造は、条件によって実行の流れが変わる構造です。
次の例では、変数tenが60以上であれば"合格"を、そうでなければ次の条件へ、40点以上であれば"再テスト"を、そうでなければ"不合格"を変数resultに代入しています。
整数型:ten
文字列型:result
if(ten >= 60)
result ← "合格"
elseif(ten >= 40)
result ← "再テスト"
else
result ← "不合格"
enfif
繰り返し構造
繰り返し構造は、条件に従い、同じ処理を繰り返す構造です。繰り返し構造には「for」「while」「do while」があります。
forでは「初期値」「繰り返しの条件」「増分値」が必要です。
次の例では、初期値「変数iが1」、繰り返しの条件「変数iが1から10まで」、増分値「変数iを1ずつ増やす」となっており、変数iを1から10まで1ずつ増やしながら、その値の総和(変数totalに代入)を求めています。
整数型:i, total
total ← 0
for(iを1から10まで1ずつ増やす)
total ← total + i
endfor
次の例は、whileを使った繰り返し処理です。
処理内容はforと同じで、変数iを1から10まで1ずつ増やしながら、その値の総和(変数totalに代入)を求めています。
整数型:i, total
total ← 0
i ← 0
while(i <= 10)
total ← total + i
i ← i + 1;
endfor
次の例は、do whileを使った繰り返し処理です。
処理内容はforと同じで、変数iを1から10まで1ずつ増やしながら、その値の総和(変数totalに代入)を求めています。
整数型:i, total
total ← 0
i ← 0
do
total ← total + i
i ← i + 1;
while(i <= 10)
繰り返しには、処理をする前に繰り返すかどうかを判定する「前判定繰返し(前判定ループ)」と処理をした後に繰り返すかどうかを判定する「後判定繰返し(後判定ループ)」があります。
whileは処理をする前に繰り返すかどうかを判定する「前判定繰返し」、do whileは処理をした後に繰り返すかどうかを判定する「後判定繰返し」です。
配列
配列は、複数のデータ(同じ型のデータ)を連続的に並べたデータ構造です。
次の図は、配列のイメージ例です。

配列の各要素には、先頭から0、1、2、3、・・・と要素番号が付けられており、配列の変数名[要素番号]で、配列に格納されている要素を取り出せます。上の例では a[2]と指定することで「データ3」を取り出せます。(要素番号は1から始まる場合もあります)
次の例では、変数iを1から4(配列arrayの要素数)まで1ずつ増やしながら、配列array[i]の総和(変数totalに代入)を求めています。
整数型:i, total ← 0
整数型の配列:array ←{1, 5, 10, 11}
for(iを1から(arrayの要素数)まで1ずつ増やす)
total ← total + array[i]
endfor
※上記の例では、配列の要素番号を1から数えています。
関数
関数とは、いくつかの処理をひとまとまりにしたものです。
関数には、処理を実行するための条件である「引数」(パラメータ)を渡すことができます。そして、処理の実行結果を「戻り値」として返却します。(引数や戻り値がない場合もある)
例えば、次のようにaddという関数があるとします。関数addでは、引数の値に10を加算して呼び出し元に実行結果を返却しています。(returnで呼び出し元に実行結果を返却する)
〇整数型:add(整数型:input)
整数型:output
output ← input + 10
return output
関数は次のように呼び出します。
add(100)
上記例では、引数に100を指定して関数addを呼び出しています。関数addでは10を加算しているので、戻り値として110が返却されます。
スポンサーリンク
練習問題
ITパスポート令和6年 問62
関数convertは次のような処理を行うプログラムです。
- for(iを1からarrayInputの要素数まで1ずつ増やす)となっているので、5回繰り返しを行う
- if(arrayInput[i]が1と等しい)となっているので、arrayInput[i]が1の場合、stringOutputの末尾にAを追加、そうでない場合、stringOutputの末尾にBを追加する
上記より、1ならA、1以外ならBになることがわかります。戻り値が"AABAB"になる引数 arrayInput は {1, 1, ?, 1, ?} のときです。
これに当てはまるのは「エ」しかないので、「エ」が正解です。
試しに関数convertを引数{1,1,2,1,0}で呼び出してみると、次のようになります。
- ループ開始:for(iを1からarrayInputの要素数まで1ずつ増やす)
- ループ1回目:arrayInput[1]は1なので、1と等しい、stringOutputに"A"を追加する (stringOutputの中身{A})
- ループ2回目:arrayInput[2]は1なので、1と等しい、stringOutputに"A"を追加する (stringOutputの中身{A, A})
- ループ3回目:arrayInput[3]は2なので、1と等しくない、stringOutputに"B"を追加する (stringOutputの中身{A, A, B})
- ループ4回目:arrayInput[4]は1なので、1と等しい、stringOutputに"A"を追加する (stringOutputの中身{A, A, B, A})
- ループ5回目:arrayInput[5]は0なので、1と等しくない、stringOutputに"B"を追加する (stringOutputの中身{A, A, B, A, B})
- ループ終了
- stringOutputを呼び出し元に返却する
ITパスポート令和5年 問60
手続 printArray を呼び出したときの出力はどれか、手続 printArrayの処理を確認していきます。
- 処理開始:(integerArrayの中身{2, 4, 1, 3})
- 親ループ開始:for (n を 1 から(integerArrayの要素数- 1)まで 1 ずつ増やす)※ループの回数は3回
- 子ループ開始:for (m を 1 から(integerArrayの要素数- n)まで 1 ずつ増やす)※ループの回数は3回
- 1回目の比較(n = 1、m=1):if (2 > 4) 条件に一致しない (integerArrayの中身{2, 4, 1, 3})
- 2回目の比較(n = 1、m=2):if (4 > 1) 条件に一致、値を入れ替える (integerArrayの中身{2, 1, 4, 3})
- 3回目の比較(n = 1、m=3):if (4 > 3) 条件に一致、値を入れ替える (integerArrayの中身{2, 1, 3, 4})
- 子ループ終了
- 子ループ開始:for (m を 1 から(integerArrayの要素数- n)まで 1 ずつ増やす)※ループの回数は2回
- 1回目の比較(n = 2、m=1):if (2 > 1) 条件に一致、値を入れ替える (integerArrayの中身{1, 2, 3, 4})
- 2回目の比較(n = 2、m=2):if (2 > 3) 条件に一致しない (integerArrayの中身{1, 2, 3, 4})
- 子ループ終了
- 子ループ開始:for (m を 1 から(integerArrayの要素数- n)まで 1 ずつ増やす)※ループの回数は1回
- 1回目の比較(n = 3、m=1):if (1 > 2) 条件に一致しない (integerArrayの中身{1, 2, 3, 4})
- 子ループ終了
- 親ループ終了

上記より「ア」の「1,2,3,4」が正解です。
ITパスポートおすすめの参考書・問題集
いちばんやさしい ITパスポート | 試験に合格することを目的に企画・構成された対策本。ITの知識がまったくない、未経験者やでもスラスラと学習を進められるよう、丁寧に解説。 |
ITパスポート超効率の教科書 | スキマ時間で効率的にITパスポートの試験対策ができる対策本。動画とテキスト、小テストと過去問を組み合わせた、効果的な4ステップ学習で、合格へと導く。 |
かやのき先生のITパスポート教室 | ITパスポート受験者のためのやさしいオールインワンタイプの参考書&問題集。イラストや豊富な図解・例え話を駆使して理解しやすく・記憶に残りやすいように説明。 |
かんたん合格ITパスポート過去問題集 | 信頼と実績の過去問題集。ITパスポート試験合格を最短で目指す人は必携の1冊! |
出るとこだけ!ITパスポート | 「ITパスポート」に効率よく合格したい人のため対策本。フルカラーで見やすく「出るとこだけ」を効率的に学習できる1冊! |
キタミ式イラストIT塾 ITパスポート | すべての解説をイラストベースで行っているため,とてもわかりやすい解説本。いちばん最初に読むITパスポート試験関連の書籍を探している人におすすめ! |