制御構造 - 第一形式

第一形式による制御構造の用法を学びます。

分岐処理

  • If ステートメント

文法:

if 式
        ステートメント・ブロック
but 式
        ステートメント・ブロック
else
        ステートメント・ブロック
ok

用例:

see "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " give nOption

if nOption = 1  see "Enter your name : " give name see "Hello " + name + nl
but nOption = 2 see "Sample : using if statement" + nl
but nOption = 3 bye
else see "bad option..." + nl
ok
  • Switch ステートメント

文法:

switch 式
on 式
        ステートメント・ブロック
other
        ステートメント・ブロック
off

用例:

See "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " Give nOption

Switch nOption
On 1 See "Enter your name : " Give name See "Hello " + name + nl
On 2 See "Sample : using switch statement" + nl
On 3 Bye
Other See "bad option..." + nl
Off

ループ処理

  • While ループ

文法:

while 式
        ステートメント・ブロック
end

用例:

While True

        See "
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

            " Give nOption

        Switch nOption
        On 1
                See "Enter your name : "
                Give name
                See "Hello " + name + nl
        On 2
                See "Sample : using while loop" + nl
        On 3
                Bye
        Other
                See "bad option..." + nl
        Off
End
  • For ループ

文法:

for 識別子=式 to 式 [step 式]
        ステートメント・ブロック
next

用例:

# 1 ~ 10 までの数値を表示します。
for x = 1 to 10  see x + nl  next

用例:

# 動的ループ
See "Start : " give nStart
See "End   : " give nEnd
See "Step  : " give nStep
For x = nStart to nEnd Step nStep
        see x + nl
Next

用例:

# 0 ~ 10 までの偶数値を表示します。
for x = 0 to 10 step 2
        see x + nl
next

用例:

# 10 ~ 0 までの偶数値を表示します。
for x = 10 to 0 step -2
        see x + nl
next
  • For in ループ

文法:

for 識別子 in リストまたは文字列  [step 式]
        ステートメント・ブロック
next

用例:

aList = 1:10                     # 1 ~ 10 までの数値を有するリストを作成します。
for x in aList see x + nl  next  # 1 ~ 10 までの数値を表示します。

For in での Step オプションの用法

For in で Step オプションを使用することにより、繰り返しのたびに対象となった項目の数値における処理を省きます。

用例:

aList = 1:10    # 1 ~ 10 までの数値を有するリストを作成します。
# リスト内にある奇数の項目を表示します。
for x in aList step 2
        see x + nl
next

For in でのリスト変更方法

(For in) を使用するときは、参照により項目を取得します。

つまり、ループの内側で項目の読み取りと編集ができます。

用例:

aList = 1:5     # 1 ~ 5 までの数値を有するリストを作成します。
# リストの数値を文字列へ置換します。
for x in aList
        switch x
        on 1  x = "one"
        on 2  x = "two"
        on 3  x = "three"
        on 4  x = "four"
        on 5  x = "five"
        off
next
see aList       # リストの項目を表示します。

Do ~ Again ループ

文法:

do
        ステートメント・ブロック
again 式

用例:

x = 1
do
        see x + nl
        x++
again x <= 10

Exit 命令

一階層以上のループの外側へ脱出します。

文法:

exit  []       # ループの内側

用例:

for x = 1 to 10
        see x + nl
        if x = 5 exit ok
next

二階層のループからの脱出

この用例では Exit 命令を使用して二階層のループから一気に脱出する方法を示します。

用例:

for x = 1 to 10
        for y = 1 to 10
                see "x=" + x + " y=" + y + nl
                if x = 3 and y = 5
                        exit 2     # 二階層のループから脱出
                ok
        next
next

Loop 命令

次のループの繰り返し処理を飛ばすために使用されます。

文法:

loop []       # ループの内側

用例:

for x = 1 to 10
        if x = 3
                see "Number Three" + nl
                loop
        ok
        see x + nl
next

下位関数での Exit/Loop ループ

ループの内側を処理している間に、関数を呼び出すときは関数の内側で exit および / または Loop 命令を使用することができ、コマンドはループの外側で動作します。

用例:

# 数値 5 を除く 1 ~ 10 までの数値を表示します。

for x = 1 to 10
        ignore(x,5)
        see x + nl
next

func ignore x,y
        if x = y
                loop
        ok

短絡評価

論理演算子 and/or は 短絡評価 となります。

AND 演算子において最初の引数が 0 ならば、 次の引数の評価は不要であるため、結果は 0 です。

OR 演算子において最初の引数が 1 ならば、 次の引数の評価は不要であるため、結果は 1 です。

用例:

/* 実行結果
** nice
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) and (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl   return 1

用例:

# 実行結果なし

x = 0 y = 10

if (x = 1 and nice()) and (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl   return 1

用例:

/* 実行結果
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) or (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl  return 1

評価についての解説

  • True, False, nl と NULL は言語で定義済みの変数です。
  • True = 1
  • False = 0
  • nl = 改行
  • NULL = 空文字列 = “”
  • 0 (False) は以外はすべて True として評価されます。

用例:

# 実行結果 = message from the if statement

if 5    # 非ゼロ (0) であるため 5 は true として評価されます。
        see "message from the if statement" + nl
ok