基本的な論理構造

順次処理

  • 変数の入れ替え
    整数 x, y, t
    x ← 3, y ← 8
    t ← x
    x ← y
    y ← t

分岐処理

  • おみくじ
    整数 r
    r ← random(10)
    もし r≧8 ならば
      | 「大吉です」を表示する
    を実行し,そうでなくもし r≧3 ならば
      | 「吉です」 を表示する
    を実行し,そうでなければ
      | 「凶です」 を表示する
    を実行する

反復処理

  • 1から順に整数の和を求める
    整数 a
    a ← 0
    a ← a + 1
    a ← a + 2
    a ← a + 3
    a ← a + 4
    a ← a + 5
    a ← a + 6
    a ← a + 7
    a ← a + 8
    a ← a + 9
    a ← a + 10
    a を表示する
  • 1から順に整数の和を求める(反復)
    整数 a, i
    a ← 0
    i を 1 から 10 まで 1 ずつ増やしながら,
      | a ← a + i
    を繰り返す
    a を表示する

発展課題

  • 状態遷移(■には整数が入る)
    整数 s, goal
    文字列 c
    s ← 0, goal ← 0
    goal=0 の間,
      | state(s) と「にいます」を表示する
      | もし s=3 ならば
      |   | goal ← 1
      | を実行し,そうでなければ
      |   | 「AかBの船を選んで下さい」 を表示する
      |   | c ← input()
      |   | s ← nextState(s, c)
      | を実行する
    を繰り返す
    「おめでとう」 を表示する
    
    関数 文字列 state(整数 s)
      | もし s=■ ならば
      |   | 「港」を返す
      | を実行し,そうでなくもし s=■ ならば
      |   | 「カメ島」を返す
      | を実行し,そうでなくもし s=■ ならば
      |   | 「海賊島」を返す
      | を実行し,そうでなければ
      |   | 「宝島」を返す
      | を実行する
    関数終了
    
    関数 整数 nextState(整数 s, 文字列 c)
      | もし s=0 ならば
      |   | もし c="A" ならば
      |   |   | ■を返す
      |   | を実行し,そうでなければ
      |   |   | ■を返す
      |   | を実行する
      | を実行し,そうでなくもし s=1 ならば
      |   | もし c="A" ならば
      |   |   | ■を返す
      |   | を実行し,そうでなければ
      |   |   | ■を返す
      |   | を実行する
      | を実行し,そうでなくもし s=2 ならば
      |   | もし c="A" ならば
      |   |   | ■を返す
      |   | を実行し,そうでなければ
      |   |   | ■を返す
      |   | を実行する
      | を実行し,そうでなければ
      |   | ■を返す
      | を実行する
    関数終了
  • 素数を求める
    整数 i, j, sosu
    i を 2 から 1000 まで 1 ずつ増やしながら,
      | sosu ← 1
      | j を 2 から i-1 まで 1 ずつ増やしながら,
      |   | もし i % j = 0 ならば
      |   |   | sosu ← 0
      |   | を実行する
      | を繰り返す
      | もし sosu = 1 ならば
      |   |   | iと「 」を改行なしで表示する
      | を実行する
    を繰り返す
  • i-1までやる必要はない
  • 割り切れる数が見つかった段階で繰り返しを中断すればよい
    繰り返しを抜ける
  • エラトステネスの篩
    • 素数リストに加えた数のすべての倍数を探索対象から削除する

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-12-28 (火) 12:18:22 (2522d)