プロデルで始める日本語プログラミング言語入門(#4) 「繰り返す」


プロデルでプログラミング入門の連載第4話です。今回は、前回紹介した「もし文」と同じぐらい大切な「繰り返し文」という制御文について紹介します。繰り返し文と変数とを組み合わせた計算や、カメを使った図形を描くプログラムも合わせて紹介します。

ピザって10回言ってみて

突然ですが、プロデルで「ピザ」と10回表示するプログラムを作るにはどうすればよいでしょうか。

「ピザ」と報告する

を使えば「ピザ」と表示されますので、この文を10回コピー&ペーストすれば、10回表示されます。

それでは、20回言うには?100回言うには?

100回となると貼り付けるだけでも大変な作業です。
貼り付ける回数を間違えるかもしれません。

同じことを繰り返す(ループ)

同じ命令文を繰り返し実行するには、「繰り返す」文を使います。

例えば次のように書くと、『「ピザ」と報告する』というプログラムが10回実行されます。「100回」に変えれば100回だけ実行されます。

10回、繰り返す
  「ピザ」と報告する
繰り返し終わり

繰り返す文は、次の文法で書きます。

《繰り返す回数》回繰り返す
  《繰り返すプログラム》
繰り返し終わり

通常、プログラムは上から書かれた順番に実行されますが、繰り返し文の中では指定された回数になるまで、同じプログラムを何度も実行します。

カウント変数

次のように書くと、繰り返した回数をカウント変数に入れながら繰り返すことができます。繰り返した数を使って計算したり、表示する内容を変えたいときに使います。

数を1から増やしながら5回繰り返す
    数を報告する
繰り返し終わり

カウント変数を使った繰り返す文は、次の文法で書きます。

《カウント変数》を《初期値》から増やしながら《繰り返す回数》回繰り返す
  《繰り返すプログラム》
繰り返し終わり

サンプル: 1×2×3×4×5×6は?

1から順に×2,×3,…と6まで、かけ続けると、答えはいくつになるでしょうか。
この計算は、階乗計算と呼ばれ、同じことを 6! と書きます。

階乗計算をするには、プログラムで何を指示すればよいでしょうか。 繰り返し文を使って計算をさせてみましょう。

まず、結果を入れるための「結果」変数を用意します。「結果」変数には、最初に1を入れておきます。そして繰り返しの1回目に×2 、2回目に×3と計算していき、5回目で×6を計算して終わります。つまり5回繰り返すと、結果には、1×2×3×4×5×6の結果が入っているはずです。

これをプログラミングすると、次の通りになります。

結果は、1
数を2から増やしながら5回繰り返す
	結果は、結果*数
繰り返し終わり
結果を報告する

繰り返し文の中にある『結果は、結果*数』の部分は、「数」や「結果」が刻々と変化するので、難しいかも知れません。そんな時は、具体的な数字を入れて考えると分かりやすいと思います。カウント変数の「数」を実際の数値に置き換えてみると次のようなプログラムになります。

結果は、1
結果は、結果*2
結果は、結果*3
結果は、結果*4
結果は、結果*5
結果は、結果*6
結果を報告する

2つのプログラムは、同じ事をしているので、結果も同じです。

なお、『結果は、結果*2』は、「結果に2を掛けた値を結果に代入する」と読みます。結果に入っていた値を取り出して、それに2掛けてから、結果にまた入れるという意味です。

初期値や終了値を決めて繰り返す

繰り返し文では、カウント変数の初期値や繰り返しごとに加える数を指定できます。多くのプログラミング言語でfor文に当たる書き方ができます。

《カウント変数》を《初期値》から《増減数》ずつ増やしながら《最終値》まで繰り返す
  《繰り返したい文》
繰り返し終わり
値を0から2ずつ増やしながら20まで繰り返す
  値を報告する
繰り返し終わり

ずっと繰り返す、繰り返しから抜け出す

単に「繰り返す」とだけ書くと、ずっと繰り返される無限ループになります。

また、繰り返しを途中で抜け出したい場合は、「繰り返しから抜け出す」と書きます。「抜け出す」文は、すべての種類の「繰り返す」文の中で使うことができます。

例えば次のプログラムでは、質問に[はい]を選ぶとループが繰り返され、[いいえ]を選ぶとループから抜け出します。

繰り返す
  「続けますか?」を質問して結果とする
  もし結果が「いいえ」なら、繰り返しから抜け出す
繰り返し終わり

プログラムを止めたいときは

繰り返しを途中で止めたい時や、プログラムに誤りがあり繰り返しが止まらなくなってしまった時には、プロデルデザイナの[停止]ボタンをクリックする(または[Shift]+[F5]キーを押す)と、プログラムを停止できます。

サンプル: カメで絵を描こう

プロデルには、カメを動かして図形を描くための機能(タートルグラフィックス)が用意されています。

詳しいことは今後ご紹介するとして、ひとまず次のようなプログラムを実行してみると、画面に小さなカメが表れます。

窓というウィンドウを作る
窓を表示する

かめさんというカメを作る
かめさんの場所を窓に変える
かめさんの位置を{100,100}に変える
かめさんを表示する

待機する

まだ紹介していない内容のプログラムですが、日本語表記なので何をしているか何となく想像がついたなら嬉しいです。

このカメは、前後に動かしたり、進む方向を変えることができます。その時に移動した軌跡を線で描いてくれます。

例えば、次のようにカメへ指示すると、横に線が引かれます。

かめさんを90度右へ回転させる
かめさんを50だけ前へ進める

カメへの指示は、次のプログラムのように、「かめさんを表示」した直後に書いていきます。

窓というウィンドウを作る
窓を表示する

かめさんというカメを作る
かめさんの場所を窓に変える
かめさんの位置を{100,100}に変える
かめさんを表示する

かめさんを90度右へ回転させる
かめさんを50だけ前へ進める

待機する

カメさんに四角形を描いてもらう

それではカメさんに四角形を描いてもらいましょう。どうすれば描くことができるでしょうか。四角形は、4本の直線で組み合わせて描かれています。それぞれの線は直角(90度)で繋がっています。つまり、かめさんが

  • まっすぐ移動する
  • 90度回転する

を4回繰り返せば、四角形になります。

窓というウィンドウを作る
窓を表示する

かめさんというカメを作る
かめさんの場所を窓に変える
かめさんの位置を{100,100}に変える
かめさんを表示する

4回繰り返す
	かめさんを90度右へ回転させる
	かめさんを50だけ前へ進める
繰り返し終わり

待機する

繰り返す文を駆使して複雑な図形を描く

繰り返し文は、その中にさらに繰り返し文を重ねて書くこともできます。繰り返し文を重ねて書くことを「入れ子」(ネスト)といいます。

例えば、先ほどの四角形を描くプログラムを、さらに角度を少しずつ変えながら繰り返し描いてみるとどうなるでしょう。

36回繰り返す
	4回繰り返す
		かめさんを90度右へ回転させる
		かめさんを50だけ前へ進める
	繰り返し終わり
	かめさんを10度右へ回転させる
繰り返し終わり

角度を10度回転させています。これは、四角形を描くと、かめさんは最初の位置に戻りますので、角度を少しずつ変えることで、四角形が重ならないようにしています。

このように四角形や三角形などの単純な図形を、繰り替えて実行することで綺麗な模様を描けます。

また変数を使って、角度や長さを変化させることで複雑な図形も描けます。次のように変数を使うことで、三角形, 四角形, 五角形,…と徐々に角を増やした図形を重ねた模様を描けます。

「進める」と「回転させる」それに繰り返し文を使ってカメで図形を描いてみましょう。

カメを使ったタートルグラフィックスについては、今後改めてご紹介できればと思います。

まとめ

繰り返し文を使うことで、プログラムをコピー&ペーストせずに同じプログラムを実行する方法を紹介しました。今後の連載でも度々「繰り返し文」が登場しますので、今回の話で「繰り返し文」を書いたときのプログラムの流れを理解してもらえたら嬉しいです。

次回もお楽しみに。

※当ブログの記事の著作権はゆうとにあります。プロデルに関係が無い目的で、文章や図表,プログラムを複製したり改変して掲載することを堅く禁止します

  • いいね (0)
  • 続きを読みたい (2)

コメントを残す