Skip to main content

新規ページ

====== 基本情報技術者試験:擬似言語の書き方 ======

===== 今日の目標 =====

  • フローチャートで表した処理を擬似言語で書ける
  • 順次・選択・反復の三つの構造を見分けられる
  • if、for、whileを読んで、簡単な処理を書ける

===== 1. 擬似言語とは =====

擬似言語は、''プログラムの処理手順を、人が読みやすい形で表す言葉''です。

フローチャートと擬似言語は、見た目は違いますが、同じアルゴリズムを表しています。

^ フローチャート ^ 擬似言語 ^ | 長方形の処理 | 代入、計算、表示など | | ひし形の判断 | if又はwhileの条件式 | | 矢印 | 上から下への処理の流れ | | 繰返しの戻り矢印 | for又はwhile |


===== 2. 最初に覚える記号 =====

整数型: hp hp ← 100 表示する(hp)
  • 「整数型: hp」:整数を入れる変数hpを用意する
  • 「hp ← 100」:hpに100を代入する
  • 「表示する(hp)」:hpの値を表示する

''代入と比較を区別する''

  • hp ← 100:hpに100を入れる
  • hp = 100:hpと100が等しいか調べる

このプリントでは、次の処理を使います。

  • 入力する():数値を一つ入力する
  • 表示する(値):値を表示する

===== 3. 三大構造 =====

プログラムの基本的な流れは、次の三つで作れます。

  • ''順次'':上から順番に処理する
  • ''選択'':条件によって処理を分ける
  • ''反復'':同じ処理を繰り返す

===== 4. 順次構造 =====

順次構造では、上から下へ一行ずつ処理します。

整数型: hp, damage hp ← 100 damage ← 30 hp ← hp - damage 表示する(hp)

^ 処理後 ^ hp ^ damage ^ | hp ← 100 | 100 | 未定義 | | damage ← 30 | 100 | 30 | | hp ← hp - damage | 70 | 30 |

==== ワーク1 ====

次のプログラムが最後に表示する値を書きなさい。

整数型: playerHp, damage playerHp ← 100 damage ← 35 playerHp ← playerHp - damage 表示する(playerHp)

答え:(      )


===== 5. 選択構造:if =====

選択構造では、条件によって実行する処理を変えます。

if (score ≧ 80) ゲームクリアを表示する() else ゲーム続行を表示する() endif
  • 条件が真:ifの下の処理を行う
  • 条件が偽:elseの下の処理を行う
  • 最後にendifを書く

三つ以上に分けるときはelseifを使います。

if (score ≧ 80) ランクSを表示する() elseif (score ≧ 60) ランクAを表示する() else ランクBを表示する() endif

条件は上から調べ、''最初に真になった処理だけ''を実行します。

==== ワーク2 ====

次の条件を擬似言語で書きなさい。

  • playerHpが0以下なら、ゲームオーバーを表示する
  • それ以外なら、playerHpを表示する
if (         ) ゲームオーバーを表示する() else 表示する(playerHp) endif

===== 6. 反復構造:for =====

forは、''繰返す回数が決まっているとき''に使います。

整数型: i

for (i を 1 から 5 まで 1 ずつ増やす) 表示する(i) endfor

表示される値:1、2、3、4、5

「1から5まで」なので、5も含み、全部で5回繰り返します。

==== ワーク3 ====

次のプログラムが表示する値を、順番に全て書きなさい。

整数型: i

for (i を 1 から 4 まで 1 ずつ増やす) 表示する(i × 10) endfor

答え:(                    )


===== 7. 反復構造:while =====

whileは、''条件が真である間''、処理を繰り返します。

整数型: enemyHp enemyHp ← 70

while (enemyHp > 0) enemyHp ← enemyHp - 30 表示する(enemyHp) endwhile

^ 繰返し回数 ^ 条件確認時のenemyHp ^ 減算後のenemyHp ^ | 1回目 | 70 | 40 | | 2回目 | 40 | 10 | | 3回目 | 10 | -20 | | 次の確認 | -20なので偽 | 終了 |

''whileでは、条件に使う値を変化させる必要があります。''

次のプログラムはcountが変化しないので、終わりません。

整数型: count count ← 1

while (count ≦ 5) 表示する(count) endwhile

正しくは、countを増やします。

整数型: count count ← 1

while (count ≦ 5) 表示する(count) count ← count + 1 endwhile

==== ワーク4 ====

空欄を埋め、3、2、1の順番に表示されるようにしなさい。

整数型: count count ← 3

while (count > 0) 表示する(count) count ← count - (   ) endwhile


===== 8. forとwhileの使い分け =====

^ やりたいこと ^ for / while ^ | 弾を10発生成する | (     ) | | 敵を5体配置する | (     ) | | HPが0より大きい間ゲームを続ける | (     ) | | 正しい値が入力されるまで繰り返す | (     ) |

  • 回数が先に分かる → ''for''
  • 終了する条件が分かる → ''while''

===== 9. 総合ワーク =====

次のプログラムを読み、表を埋めなさい。

整数型: i, count count ← 0

for (i を 1 から 5 まで 1 ずつ増やす) if (i ≧ 3) count ← count + 1 endif endfor

表示する(count)

^ i ^ i ≧ 3 ^ count ^ | 1 | | | | 2 | | | | 3 | | | | 4 | | | | 5 | | |

最後に表示される値:(      )


===== 10. まとめ =====

  • 順次:上から順番に処理する
  • 選択:if~else~endif
  • 反復:for~endfor、while~endwhile
  • 代入は「←」、比較は「=」
  • 回数が分かるときはfor
  • 条件が真の間続けるときはwhile
  • whileでは、条件に関係する値を変化させる