プログラミング入門
この入門講座は超初心者が RCBasic のプログラミングを通じて計算機プログラミングの世界へ誘うことを想定しました。この入門講座の読者はプログラミングの予備知識やコンピュータに関する豊富な知識があることは全く期待していません。必須ではないものの、小学六年生 (日本では中学三年生) で習った代数学の基礎が役に立ちます。さて、話は逸れましたがコンピュータ・プログラマへの旅路となる第一歩を踏み出してみましょう。

まず、この入門講座を理解する上で求められる必要条件をお伝えします。あなたに求められるのはパーソナルコンピュータ (自明)、 RCBasic (まあ、もちろんですが、言っておきます)、学習意欲 (必須ではないとはいえ、確実に効果はあります)。大丈夫。早速始めてみましょう。

コンピュータ・プログラムとは?
取るに足りない疑問に思うかもしれませんが、それ以上にプログラムとはなんたるものか理解することは大切です。コンピュータ・プログラムとはコンピュータで処理する内容を指示するために使う命令を詳述したリストです。つまり、詳述とは詳細情報のことを意味します。コンピュータは複雑な方程式を一瞬で処理できますが、それ以上のことは読者は知りません。方程式に関する知識が無ければ、コンピュータもまた複雑な方程式を処理できません。コンピュータに命令のリストを渡すにはコンピュータ言語を用いて希望する処理を指示します。恐らく口語と同じかそれ以上にコンピュータ言語が存在します。コンピュータ・プログラマは処理内容、処理の複雑度、プログラムの開発納期、そして個人的な選択を参考に言語を選択します。この入門講座では RCBasic を使います。RCBasic は学びやすく使いやすい設計の BASIC プログラミング言語を改良したものです。RCBasic の強みはモダンなマルチメディア機能とプログラムを一度書くと様々なオペレーティング・システムで実行できる点にあります。

はじめてのプログラム
さて、簡単な計算機プログラムから始めてみましょう。早速、 "Hello World" の言葉を出力するプログラムを作成しましょう。コンピュータにスクリーンにテキストを出力するよう伝えるには Print コマンドを使います。以下のコードを RCBasic エディタで記入後に Run ボタン (三角ボタン、または Build メニューから Run を選択) をクリックします。

Print "Hello World"

これで "Hello World" がコンソール (黒色の DOS スクリーン) に表示されているはずです。おめでとう。あなたにとって最初のコンピュータ・プログラムを書きましたね。さて、このプログラムを役割ごとに解析してみましょう。まずは Print コマンドです。これはコンピュータのスクリーン (以後、この入門講座では DOS スクリーンのことをコンソールと呼びます) へ何かを出力するよう指示します。こうすると "Hello World" が出力されます。まず第一に、クォーテーションマークをなぜ使うのでしょうか?簡単に言うと数値ではないためです。これは後で詳しく説明しますが、そのほか現時点で把握する必要のあるものは?次に進む前に、スクリーンへ何か出力するために Print コマンドを使います。

データ型
最後に学ぶことは "Hello World" をクォーテーションマークで囲む理由についてです。さて、データ型についてお話しましょう。データ型とは単に操作対象となるデータの種類です。RCBasic は二種類のデータ型に対応しています: 文字列数値です。数値は読者が思うものと全く同じです。では、文字列とは?これについて上手く答えるには、文字についての理解が必要です。一般に文字は記号の一種でありコンピュータの内部表現では数値 (ASCI コード) です。この説明は今すぐ役に立つわけではないことは分かっています。ですから、ここで文字とはキーボードに記されているキーの刻印であると考えてください。コンピュータでは A キー、 B キー、そして SPACE キーでさえも、ただの数値に過ぎません。実際、コンピュータで文字を読み取るときは数値を読み取ってから記号 (文字、数字、括弧、空白文字など) を出力します。では、それならば文字列とは?もちろん、文字列は互いに数珠繋ぎ (それが文字列と呼ばれる所以) になった文字集合です。RCBasic ではクォーテーションマークを文字集合を文字列にするのに使います。このように "Hello World" は文字列、 H は文字、さらに e は文字といった具合です。単一文字を使いたいときであってもクォーテーションマークを使います。その場合、クォーテーションマークの間には一文字だけ存在します。

以下の用例を参照してください。

"42"
42


一行目は文字列、二行目は数値です。もう途方に暮れていますか?一行目は文字 "4" と文字 "2" による文字列であり、二行目は数値の 42 です。もちろん、見た目は同じです。けれども、文字列操作の処理方法と数値操作の処理方法は異なります。それに関しては後述の用例で詳しく説明します。

これは文字列 "42" の末尾へ文字列 "53" を追加後に 4253 をコンソールへ出力します。試してみましょう。

Print "42" + "53"

これは数値 "42" の末尾へ数値 "53" を加算後に 95 をコンソールへ出力します。試してみましょう。

Print 42 + 53

さて、これで数値と文字列との相違点に関して少しは整理できていると思います。この時点であっても少し途方に暮れていても心配ご無用です。これはプログラミング入門に過ぎません。スクリーンへのテキスト出力と簡単な算術処理ができるならば、この入門講座を終える頃には次の講義へ進む準備ができていると言えるでしょう。

さて、今回は演算子の入門です。筆者は冒頭で読者に豊富な知識があることを期待していないことを述べました。ですが、四則計算 (加算、減算、乗算、および除算) についての知識があると思います。用例の最後に "+" 演算子の簡単な紹介を記載しました。重要事項として "+" 演算子は数値と文字列の双方で機能する演算子です。

こちらは主な文字列演算子の便覧です。
"+": 文字列の末尾に別の文字列を連結します。この用例では "batman" をコンソールへ出力します。

Print "bat" + "man"

この先へ進む前に、 PRINT ステートメントを解析しましょう。 これはスクリーンでテキストを受け取る最も簡単な方法です。 PRINT は “;” で書き分けることにより複数の異種アイテムを出力することもできます。

Print “テキスト”; 5+4; “ その他のテキスト”; 

‘Print の末尾が “;” ならばコンソールに表示されるカーソルは同じ行のままになります。


こちらは主な数値演算子の便覧です。
"+": 数値同士の加算です。この用例は 8 をコンソールへ出力します。

Print 6 + 2

"-": 数値同士の減算です。この用例は 4 をコンソールへ出力します。

Print 6 - 2

"*": 数値同士の乗算です (備考: 乗算では x ではなく * を使います)。この用例は 12 をコンソールへ出力します。

Print 6 * 2

"/": 数値同士を除算です。この用例は 3 をコンソールへ出力します。

Print 6 / 2

"^": 数値の累乗を求めます。この用例は 36 (6 に対する二の累乗) をコンソールへ出力します。

Print 6 ^ 2


どちらの文字列演算子も処理は同じです。第一文字列の末尾へ第二文字列に存在する文字を記述します。算術演算子は電卓の操作と同じ処理をします。もっと重要なことは数値演算子は演算順序に従います。以下の用例を確認してください。

Print 4+3*2

上述の用例において、演算順序は PEMDAS (Parenthesis, Exponents, Multiplication, Division, Addition, and Subtraction ― つまり、括弧、累乗、乗算、乗算、加算、続いて減算) に準拠します。したがって、 3 に 2 を掛けると 6 となり、その結果に 4 を足すと 10 になります。必ずしも算術処理は左辺から右辺へ行われるわけではなく、演算順序により決定されます。これ以外にも演算順序は数多くありますが、いまは解説することはしません。主な演算子をすべて解説しましたが、次へ進む前に丸括弧を用いた違う用例を参照してください。

Print (4+3)*2

これは以前の用例とほぼ同じ問題ですが、 4 + 3 を丸括弧で囲むと最初に 4 + 3 を計算して 7 を求めることになります。その後、 7 を 2 で乗算すると 14 になります。同じ問題を電卓で計算すると同じ答えになります。ご自身で算術問題をいくつか試してみてください。

ユーザと対話
これまで、結果をスクリーンへ出力していました。これまで私たちはプログラマでありユーザでもあるので、スクリーンから入力した値を得る理由はありませんでした。ほかの人達が使うことを想定したプログラムを開発する場合、ユーザへ入力を求めた後に入力結果から課題を処理したい場合があります。さて、コードを調べてみましょう。この用例ではユーザに「お名前は?」と質問するために Input 関数を使っています。その後にコンソールからユーザの入力を読み取ります (ここでは名前を入力しますが、入力できるものはなんでも受け付けます)。

Input$("お名前は?")

これで「お名前は?」の視認後に入力可能状態になります。これでユーザから初回の入力を受け取れます。さて、この行を解析してみましょう。一行目は関数名 Input$ です。Input$ はプロンプトを表示してユーザが入力したものを返す組込み関数です。ここで、はっきりと用語「返す」を初めて使いました。さて、上述の用例では名前として Bob を入力することを伝えます。Input$() 関数の呼び出しは "Bob" で全体を置換します。この用例を確認してください。

この行では何も処理しないものの、ユーザからの入力を待機します。Bob と入力します。

Input$("")

上述の行で "Bob" を入力すると "Bob" へ置換します。その後、この行のおけるコマンド処理は終了します。

"Bob"

恐らく無用の長物だと思うかもしれません。文字列のある行で何ができるかです。答えは Bob のある行では本当に何もできません。代入した文字列 "Bob" はそれ以外の要素で使えます。

"Bob" (あるいは自分自身の名前) を保持するには変数を使います。学校の数学授業で変数が使われているのを見かけたことがあると思います。変数はデータを保持するためのシンボルです。シンボルには、ロゴや何らかの意味があるわけではありません。この用例を確認してください。

a = 2
b$ = "Bob"
batman = 4.5
superman$ = "これはデタラメなテキストです。"


この用例では四種類の変数を作成します: a, b$, batman, superman$ です。その後にデータを代入します。さあ、解析してみましょう。

変数 a と batman から始めましょう。変数には数値を代入しています。長期変動値の処理プログラムにおいて代入した数値を変数として使えます。さて、簡単な算術をしてみましょう。前述の用例で変数を入力後に以下のコードを追加して実行してください。

Print a + batman

この用例は変数に値を加算後にスクリーンへ値を出力します。変数の値はいつでも変更可能です。これは違う用例で詳しく解説してあります。

a = 5
Print a
a = 6
Print a
a = 5 + 6
Print a


上述の用例における処理内容は a の値の変更と算術処理後に a へ値を代入します。違う変数に存在する値を代入することも可能です。さて違う用例を確認してみましょう。

a = batman
Print a
a = a + batman
Print a


上述の用例の一行目では変数 a に値 batman を代入します。これはスクリーンへ出力します。a と batman を加算した結果を a に代入してスクリーンへ値を出力します。

さて、これ以外にも作成した二種類の変数を確認します: 変数 b$ と変数 superman$ です。双方の変数の末尾が $ であることにお気付きですか。これには理由があります。変数名の末尾を $ にした変数は文字列型であるとコンパイラへ通知します。どちらの変数も文字列であるため変数には文字列の規則を適用します。以下の用例を参照してください。

Print b$
Print superman$
Print b$ + superman$


上述の用例では b$ に代入した値をスクリーンへ出力します。その後に superman$ に代入した値をスクリーンへ出力します。最後に、変数 superman$ の内容を変数 b$ の内容の末尾に追加してスクリーンへ出力します。

さて、変数を取り上げたので、それをユーザ入力で使う方法を説明します。さて、 Input$() 関数を再度確認してみましょう。注意点として関数の末尾は $ です。プログラムのどこでも使える文字列として input$() は文字列を返します。この用例を確認してください。

この行は Input$() 関数を最後に使ったときと同じ処理をします。まず、大きな違いはユーザが入力した内容を変数名へ代入します。

name$ = Input$("お名前は?")

このコードは "Bob" または入力したものを変数 name$ へ代入します。これでプログラムで使いたい場所ならどこでも name$ を何度でも使えるようになります。さて、 Print と併せて Input$() を使うプログラムを作ってみましょう。これはユーザの名前を尋ねた後に RCBasic でユーザを歓迎します。

name$ = Input$("お名前は?")
Print "こんにちわ " + name$ + ". ようこそ RCBasic へ。"

さあ、再び解析してみましょう。一行目では Input$() を呼び出して変数 name$ を作成しています。これは「お名前は?」をスクリーンへ表示します。ユーザの入力時、 Input$() はユーザの入力したものを置換します。つまり name$ の内容はユーザの入力したものになります。二行目では Print でスクリーンへメッセージを出力します。今回、ひとつだけ違う点は Input$() で変数に文字列を追加することです。ですが、変数は文字列であり、文字列ならばできることはなんでも可能であることに留意してください。つまり、このように言うことができます: "Hello " + ユーザの名前 + ". ようこそ RCBasic へ。".

序盤のいくつかのセクションで色々と説明しました。さて、今回は課題を出させていただきます。ユーザが好きな色の入力を求めた後に次行へ好きな色を出力するプログラムを書いてみてください。


フロー制御
フロー制御は本当に難しい話題だと思うでしょう。とはいえ、恐らくすぐに意味がわかると思います。さてフロー制御とは?簡潔に言うと、フロー制御とは指定条件を満たしたかに従いプログラムの処理を制御することです。プログラムの流れを制御するには If ステートメントを使います。If ステートメントは指定条件が満たされたかによりコードのブロックを実行できるようにします。最後の用例に記されている末尾部分を確認してください。

name$ = Input$("お名前は?")
Print "こんにちわ " + name$ + ". ようこそ RCBasic へ。"


If ステートメントの用法に関する考え方を示すために、このプログラムを拡張してみましょう。したがってプログラムにおいて名前として Bob が入力されると特別な挨拶をします。 以下の用例を参照してください。

name$ = Input$("お名前は?")
Print "こんにちわ " + name$ + ". ようこそ RCBasic へ。"

If name$ = "Bob" Then
Print "あなたには期待していますよ"
End If


このプログラムの最後の部分は同じですが If ステートメントを追加して使います。さて、早速解析してみましょう。

この行は name$ に "Bob" が存在すれば、以下のコードの実行後にメッセージを伝えます。If ステートメントの末尾は必ず Then ステートメントを記述してください。

If name$ = "Bob" Then

この行は「あなたには期待していますよ」をスクリーンへ出力します。

Print "あなたには期待していますよ"

この行は If ステートメントでプログラムで実行したいコードのブロックを終了することで後続のプログラムの実行を続けます。

If ステートメントを起点としたコードのブロックでは個別指定条件を確認することで個別条件ごと異なるコードのブロックに実行します。ひとまず文字列に関する解説は置いておき、以下の用例で数値を使います。また、新しい演算子も何点か紹介します。さて、数値の変数を作成してみましょう。

a = 1
b = 3
c = 5


さて、変数を宣言したのでユーザから数値を求めた後に、変数と数値が等しいか結果が違うかを確認するプログラムを作成します。最初に、最も重要なことを言います。Input$() で扱えるのは文字列だけです。ユーザが数値を入力しても文字列として扱われます。別の数値との比較、あるいは算術処理をするためにユーザの入力を数値へ変換することが求められます。この処理は Val() 関数で行います。Val() 関数は文字列を数値へ変換します。 以下の用例を軽く参照してください。

この用例は文字列 "12" を数値 12 へ変換します。

x = Val("12")

大量のプログラムを書くようになると数値から文字列、および文字列から数値への変換を使うようになります。どのように Input$() で Val() を使うのでしょうか。さて、どこであろうと Input$() では文字列を扱えることを思い出してください。さて、最後の用例のように Val() の引数へ "12" を与えずに Input$() の引数へ Val() を与えます。これを書き加える前にプログラムで変数 a, b, と c が作成されているか確認してください。

d = Val( Input$("番号を入力してください: ") )

上述のコードは変数 d を作成します。その後に Input$() で返された文字列を数値へ変換するため Val() 関数を使います。Input$() は関数はユーザが入力したものを文字列で返します。さて、ユーザから数値を得たので以前に作成した変数と入力値を比較します。

If d = a Then
Print "A の値を入力しましたね"

ElseIf d = b Then
Print "こちらは B です。"

ElseIf d = c Then
Print "それは C ですね"

Else
Print "番号が入力されていません"

End If

さあ、解析してみましょう。これは多重 If ステートメントブロックの起点です。これを理解するのはかなり簡単です。さて、処理内容を一行ずつ段階的に追っていきましょう。

この行は d (ユーザが入力した者) と 変数 a を If ブロックで比較します。変数同士が等しければ「A の値を入力しましたね」をコンソールへ出力します。

If d = a Then
Print "A の値を入力しましたね"


この行で d が a と等しくなければ d と b を比較します。d に代入された値が b に代入された値と等しければ「こちらは B です。」をコンソールへ出力します。

ElseIf d = b Then
Print "こちらは B です。"


この行で a が b と等しくなければ d と c を比較します。もし d が c と等しければ「それは C ですね」をコンソールへ出力します。

ElseIf d = c Then
Print "それは C ですね"


この行は以前の条件を満たしていない場合に「番号が入力されていません」をコンソールへ出力します。

Else
Print "番号が入力されていません"


そして最後に、この行の If ブロックを終了後に以降のプログラムの実行を継続します。

End If

さて、そのほかの数値に関する演算子をいくつか試してみます。さらに、互いの数値が等しいかの比較に加えて、ある数値が別の数値よりも大きいか、別の数値よりも小さいか、別の数値と等しはないか、別の数値よりも等しいか小さいか……などの比較処理もできます。こちらは数値で使える比較演算子の便覧です。

変数 a と b ともに数値を代入してあるものとします。



こちらは If ステートメントで比較を行う数種類の用例です。

If a = b Then
'実行可能コード
End If

If a < b Then
'実行可能コード
End If

If a <> b Then
'実行可能コード
End If


それ以外の比較処理も非常に簡単です。このことを試すためにユーザに数値の入力を求めるプログラムを作成してみましょう。数値が 10 よりも少ないか等しければ「低」 をコンソールへ出力します。数値が 10 よりも大きければ、数値が 20 より大きいか確認します。その場合は「高」をコンソールへ出力します。これらの条件がいずれも true でなければ「中」をコンソールへ出力します。はじめにユーザから数値を得ます。ユーザの入力を文字列から数値へ変換するのに Val() 関数を使う必要があることを忘れないでください。

こちらはユーザの入力したものを数値へ変換します。Input$() 関数はユーザの入力内容に置換後、 Input$() 関数の文字列を Val() 関数で数値へ変換します。

user_num = Val( Input$("番号を入力してください: ") )

If ブロックの起点で user_num (前行で得たユーザ入力) と数値 10 を比較します。変数 user_num が 10 かそれ以下ならば「低」をコンソールへ出力するのに Print コンソールを使います。

If user_num <= 10 Then
Print "低"


先の比較結果が false ならば変数 user_num と 20 を比較します。user_num が 20 よりも大きければ「高」をコンソールへ出力します。

ElseIf user_num > 20 Then
Print "高"


最後に、以前の条件が true でなければ「中」をコンソールへ出力します。

Else
Print "中"

End If

完成後のプログラムはこうなります。

user_num = Val( Input$("番号を入力してください: ") )

If user_num <= 10 Then
Print "低"

ElseIf user_num > 20 Then
Print "高"

Else
Print "中"

End If

最後にフロー制御で扱うキーワードは AND, OR, XOR, そしてNOT です。実際のところ、前述したキーワードは詳細な比較処理で使う演算子です。まずは AND 演算子から解説します。AND 演算子は左辺から右辺へ条件を比較します。両辺の条件が true ならば AND 演算子は式全体を true として扱います。まだ説明を理解できていないことはわかっていますの、できる限り簡単に説明します。この用例をご確認ください。

このコードは 1 は 1 と等しく 1 は 2 よりも大きいため「これは true です。」をスクリーンへ出力します。もちろん、これも簡単なものです。

If 1=1 AND 4>2 Then
Print "これは true です。"
End If


OR ステートメントは最低でも条件のひとつが true ならば使われている式全体を true に設定します。こちらは OR の用例です。

このコードは 1 は 2 と等しくありませんが 5 は 2 よりも大きいか等しいため「これは true です。」をスクリーンへ出力します。

If 1=2 OR 5<6 Then
Print "これは true です。"
End If


XOR ステートメントは OR ステートメントと似ているものの、大きな違いがひとつあります。XOR では、一方の式の条件が true であり、それ以外は false です。こちらは XOR の用例です。

このコードでは 1 は 1 と等しく、 2 と 2 は等しいため「これは true です。」をスクリーンへ出力します (2=2 であるため 2 <> 2 は false です)。<> は不等号演算子であることを覚えておいてください)。基本的に XOR の式は一方が true であるとき、それ以外が false ならば全体の式は false になります。これで途方に暮れたとしても、心配ご無用です。筆者には十五年以上のプログラミング経験があります。ですが、今までに一度もこの演算子を使ったことがありません。

If 1=1 XOR 2 <> 2 Then
Print "これは true です。"
End If


最後に扱う特別な演算子は NOT です。これを理解するのは至極簡単です。基本的に式が true ならば false になり、そして式が false ならば true になります。

このコードは 1=3 が false になるため「これは true です。」をスクリーンへ出力します。NOT ステートメントは false を反転して true に変更します。

If NOT (1=3) Then
Print "これは true です。"
End If


次の部分へ進む前に別のプログラムについて解説します。ユーザに 1 ~ 10 までの数値の入力を求めます。ユーザが 3 または 4 を入力すると「ご名答」をコンソールへ出力します。ユーザが 5 ~ 9 以下より大きい数値を入力すると「番号を選択し直してください」をコンソールへ出力します。それ以外の数値をユーザが入力した場合は「じゃあ、またね。」をコンソールへ表示します。

ここでは Input$() 関数でユーザに 1 ~ 10 までの数値を入力するようユーザへ求めます。Input$() 関数は文字列を返すため、返値を文字列変数へ代入する必要があります。

user_in$ = Input$("1 ~ 10 までの数値を入力してください: ")

その後、ユーザが入力した文字列を Val() 関数で数値へ変換します。備考: 今回は文字列変数を Val() 関数で使わずに Input$() 関数で使います。この方法は Val() で文字列を扱う思想に慣れるための説明です。扱えるのは文字列変数、文字列関数、またはクォーテーションマークで囲った通常文字列です。

num = Val(user_in$)

一行目にあるこのコード部分で変数 num (ユーザが入力した数値) と数値 3 を比較後に変数 num と数値 4 を比較します。変数 num が数値の 3 または 4 と等しければ「ご名答」をコンソールへ出力します。

If num = 3 OR num = 4 Then
Print "ご名答"


以前の If 条件が false ならば、このコードのブロックで数値 5 と数値 9 を変数 num と比較します。num が 5 以上であり num が 9 以下の時は「番号を選択し直してください」をコンソールへ出力します。

ElseIf num > 5 AND num < 9 Then
Print "番号を選択し直してください"


最終的に、このコードにおける最後部で以前の条件が true ならば「じゃあ、またね。」をコンソールへ出力します。そして If ブロックを終了します。

Else
Print "じゃあ、またね。"

End If


関数
こちらは非常に分かりやすい説明。さて関数とは?関数とは、分類や規則などに従い名前でラベル付けされたコードのブロックであり、プログラムのどこからでも呼び出せるものです。また途方に暮れていることはわかります。ですが、この入門講座では今まで何度も二種類の関数を使ってきました。その関数とは Input$() と Val() 関数です。関数には数値や文字列の返値があります。Input$() 関数はプログラムのどこであろうと典型的な文字列として使われる文字列を返します。Val() 関数はプログラムのどこであろうと数値として使える値を返します。もちろん、算術問題の式内であってもです。これらは RCBasic で利用できるたった二種類の関数です。これだけに限りません。RCBasic には多種多様な課題を処理する 200 以上の関数が利用可能です。こちらは関数を構造化する方法です。

関数名 ( 引数1, 引数2, ……など ) - 関数は引数の無指定、複数の引数指定ができます。お使いになる関数によりますが、関数の引数には数値や文字列を指定できます。それ以外にも、どのような関数があるか、その用法をご紹介します。

Abs() 数値から絶対値を返します。

Abs( -4 )

Date$() 現在の日付を文字列で返します。

Date$()

UCase$() 指定の引数を大文字の引数へ変換して返します。

UCase$("Hello World")

多種多様な課題を成し遂げるために用意された関数群を確認できます。rcbasic ディレクトリの Docs フォルダにある RCBasic リファレンスマニュアルから多種多様な関数に関する情報を得られます。

ループ
これで、この入門講座の最後に到達しました。読者は、かなりプログラミングの中核概念の大部分に精通したと思います。この講義ではループの概要について学びました。ループとはまさに読者が思う通りのものです。つまり、プログラムにおいてコードのブロックを必要とされる回数にて繰り返し実行する方法です。なぜプログラムの一部を繰り返すのですか?もちろん、プログラムでユーザが使用終了するまで実行を継続したいときやカウンタを使いたいときが普通にあると思います。

さて、二通りのループについて扱います。最初に説明するのは For ループです。指定した回数でコードのブロックを繰り返し実行したい場合に For ループを使います。さて、コードを調べてみましょう。

このコードをエディタで入力後に実行してみてください。

For i = 1 to 10
Print i
Next


上述のコードは 1 ~ 10 までの数値をコンソールへ出力します。この場合、 For ループは変数 i から開始します。初期値を 1 に設定後、 For 行と Next 行の間で i が 10 になるまでコードのループ処理を指示します。Next ステートメントに到達すると i は 1 増分された後にプログラムはループの起点へ戻ります。For ループの動作方法について簡潔に説明します。For ループの補助制御機構を扱うには Step ステートメントを使います。Step ステートメントを使うと For 行の増分変数値を変更できます。以下の用例を参照してください。

このコードは 2 ~ 10 までの偶数をコンソールへ出力します。

For i = 2 to 10 Step 2
Print i
Next


この入門講座で最後に扱うループは While ループです。while ループは指定条件が true の間はコードのブロックを通り続けます。以下の用例を参照してください。

i = 1
While i <= 10
Print i
i = i + 1
Wend


上述の用例では、これまでよりも処理行程がほんの少し増えています。まず、変数 i を作成します。i から 10 までの比較を While ループで開始します。i が 10 かそれ以下ならば i に格納された値をコンソールへ出力します。続いて i = i + 1 の行へ移動します。この行は i に 1 を加算代入した i の値と同じです。基本的に i は 1 ずつ増えていきます。Wend 行は While ブロックの起点である i と 10 の比較部分へ戻った後に、 10 かそれ以下ならば再びコードのブロックを繰り返し実行します。

さて、以下の課題に挑んでみましょう。

1. ユーザに数値の入力を求めるプログラムを書いてみましょう。その後、 1 からユーザがコンソールで入力した数値までの数値をすべて出力するループを作成してみましょう。
2. "Bob" が入力されるまでユーザに名前の入力を求め続けるプログラムを書いてみましょう。その後、ユーザに "Good by Bob" と伝えてみましょう。