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. 三大構造 =====

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

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

=====

4. 順次構造 =====

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


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

^

^hp^damage^||100 | |||100|30| | |70|30|

処理後 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

^

^ ^ ^| |70|40| | |40|10| | |10 | ||| | |

繰返し回数 条件確認時の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''for
  • 終了する条件が分かる → ''while''while

=====

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

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


整数型: i, count
count ← 0

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

表示する(count)

^

^ ^count^| |||||||||||||||||||

i i ≧ 3 count
1
2
3
4
5

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


=====

10. まとめ

=====

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