情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

学生でも社会人でも分かる!!初めてのプログラミング入門 第5回 繰り返し

2016/12/25

第4回

↑ ↑ ↑

前回まででちょっとしたプログラムは作れるようになりましたが、今回からは更に多彩なプログラムを作るのに必要な概念や命令を順々に解説していきたいと思います。

まず今回は、繰り返しについてです。

もしかしたら、この連載記事を最初から読んでいる方は、繰り返しの話は以前したのではないかと思われるかもしれませんが、繰り返しにはまだまだ語るべきところがあるのです。

以前は繰り返しがプログラミングにとって重要であるという話と、HiMacroExには繰り返し機能が搭載されていて、作成したプログラムを簡単に繰り返し連続して動かすことができるようになっているという話をしましたが、今回はプログラムの中で繰り返しを行う話です。

つまり、プログラム自体の実行を繰り返し行うということではなく、プログラムの中に記述された命令の実行を繰り返し行うということです。

これにより、プログラムの外ではなく中に繰り返しを入れ込むことができます。

そうすると、プログラムを1回実行するだけで、プログラムに記述された一部の命令を繰り返し実行する、すなわち、プログラムの命令に対応するパソコンに対する操作を繰り返し行うことができるのです。

たとえば、プログラム自体は1回しか実行していないにも拘らず、特定の操作が100回繰り返されるというようなことが簡単に実現できます。

もしかしたら、プログラム自体を100回動かすのとプログラムの中で特定の操作を100回繰り返すのとどう違うのか、同じではないのかと思われる方もいるかもしれませんが、たとえば、ある操作(操作Aとしましょう)を1回行った後に別の操作(操作Bとしましょう)を100回繰り返さなければならないような場合を考えてみてください。

この場合、プログラムの中で命令を繰り返し実行する機能がないのだとしたら、そして、その一方で、プログラム自体を繰り返し実行する機能はあるのだとしたら、どのようなプログラムを作らなければならないでしょうか?

プログラムの中で繰り返しを行うことはできませんので、操作Aと操作Bは別々のプログラムとして考えなければなりません。

そして、プログラムを動かす段では操作Aのプログラムを1回動かしてから操作Bのプログラムを100回繰り返し動かすという形になります。

一方で、プログラムの中で命令を繰り返し実行する機能があるのだとしたら、操作Aを1回行い、その後に操作Bを100回連続で行うプログラムを1つ作れば良いということになります。

そして、プログラムを動かす段では作成したその1つのプログラムを1回だけ動かせば全てが良しなに行われるということになります。

プログラムを動かすという点から見れば、片や101回のプログラムの実行が必要であり、片や1回の実行だけで済むという結果になります。

ですから、プログラム自体を連続で動かすということとプログラムの中で特定の操作を連続で行うということの間には明確な違いがあります

そして、プログラムの中で特定の操作を連続で行うことができた方が明らかにメリットは大きいのです。

それでは、このようなプログラム内での繰り返しを行うにはプログラムをどのように記述すれば良いのでしょうか?

繰り返し命令

プログラムというのは命令の羅列でしたが、繰り返しを行うにもやはり専用の命令を使用します

具体的には、繰り返しにしたい部分を専用の命令で囲むことによってその部分を繰り返さなければならないということを示します。

まず、繰り返しにしたい部分の直前に<r 数値>という命令を入れます。ここで数値というのは繰り返し回数を表しています。なので、数値の部分には数値とそのまま入力するのではなく、繰り返してほしい回数を数値として記入します。

つまり、繰り返しにしたい部分の直前の行には<を記述し、rを記述し、1文字の空白を記述し、繰り返し回数を記述し、>を記述します。

たとえば、10回繰り返しを行いたい場合には繰り返しを行いたい部分の直前に<r 10>という命令を入れます。

これにより、HiMacroExはこの命令の次の命令からは命令の実行を10回繰り返さなければならないということを理解することができます。

そして、今度は繰り返しにしたい部分の直後に</r>という命令を入れます。

つまり、繰り返しにしたい部分の直後の行には<を記述し、/を記述し、rを記述し、>を記述します。

この命令は繰り返し回数によらず必ず</r>という命令になります。

たとえば、5回繰り返しを行いたい場合であっても、10回繰り返しを行いたい場合であっても、繰り返しを行いたい部分の直後には</r>という命令を入れます。

これにより、HiMacroExはこの命令の前の命令まで繰り返しを行わなければならないということを理解することができます。

このように、繰り返しを行うには繰り返し回数を指定しなければならないということに注意してください。逆に言えば、繰り返し回数が最初から分かっていないような繰り返しは行うことができないということです。

ちなみに、これはHiMacroExのプログラミング言語に特有の特徴であって、他の一般的なプログラミング言語については、繰り返し回数が正確に分からない場合は別の何らかの基準によって繰り返しを行えるようになっているものが殆どです。

また、HiMacroExでも、繰り返し回数が最初から分かっていない場合の繰り返しが完全に不可能という訳ではありません。ただし、HiMacroExでそのような繰り返しを行うにはやや込み入った迂遠なテクニックを用いる必要がありますので、それはこの連載記事のもう少し後の方で紹介することにしたいと思います。

命令

<r 1>
繰り返しを開始する。1回繰り返す。

<r 2>
繰り返しを開始する。2回繰り返す。

    ・・・    

命令

</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

さて、以後は<r 数値>命令のことを繰り返し開始命令と言い、</r>命令のことを繰り返し終了命令と言うことにしたいと思います。

繰り返し開始命令と終了命令は必ずセットで記述しなければならないことに注意してください。

プログラムに片方の命令しか存在しない場合、それは誤ったプログラムです。

また、繰り返し開始命令と終了命令に囲まれている部分を繰り返しブロックと言うことにしましょう。繰り返しブロックの部分が繰り返し命令によって丁度指定回数分だけ繰り返されます。

繰り返しブロックは複数の命令で構成されていても良い、すなわち、複数行に亘っても良いということも留意しておきましょう。

繰り返しに関しては更にもう1つ注意しなければならない点があります。

それは2つ以上の繰り返しブロックが重なっている場合に繰り返しはどうなるのかということです。

繰り返しブロックが重なっているとは、たとえば、下のプログラムのような場合です。

プログラム2

1
<r 10>
繰り返しを開始する。10回繰り返す。

2
A
Aキーを押したことにする。

3
<r 5>
繰り返しを開始する。5回繰り返す。

4
B
Bキーを押したことにする。

5
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

6
C
Cキーを押したことにする。

7
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

このプログラムでは1行目と3行目に繰り返し開始命令が記述されており、5行目と7行目に繰り返し終了命令が記述されています。

そのため、どの繰り返し開始命令がどの終了命令に対応するのかには2つの可能性があります。

1つは、1行目の繰り返し開始命令が5行目の終了命令に対応し、3行目の繰り返し開始命令が7行目の終了命令に対応する可能性です。

下で繰り返しブロックを色付けしてみましたが、この場合、2行目から4行目までが1つ目の繰り返しブロックとなり、4行目から6行目までが2つ目の繰り返しブロックとなります。

プログラム2(可能性1の色付け1)

1
<r 10>

2
A

3
<r 5>

4
B

5
</r>

6
C

7
</r>

プログラム2(可能性1の色付け2)

1
<r 10>

2
A

3
<r 5>

4
B

5
</r>

6
C

7
</r>

もう1つは、1行目の繰り返し開始命令が7行目の終了命令に対応し、3行目の繰り返し開始命令が5行目の終了命令に対応する可能性です。

上と同じく、下で繰り返しブロックを色付けしてみましたが、この場合、2行目から6行目までが1つ目の繰り返しブロックとなり、4行目のみが2つ目の繰り返しブロックとなります。

プログラム2(可能性2の色付け1)

1
<r 10>

2
A

3
<r 5>

4
B

5
</r>

6
C

7
</r>

プログラム2(可能性2の色付け2)

1
<r 10>

2
A

3
<r 5>

4
B

5
</r>

6
C

7
</r>

もし前者の解釈が正しいのなら、上のプログラムを実行した場合には最初にAキーとBキーが交互に10回ずつ押され、次にBキーとCキーが交互に5回ずつ押されるということになるでしょう。

また、もし後者の解釈が正しいのなら、Aキーが押され、Bキーが5回連続で押され、Cキーが押されるということが10回繰り返し行われるということになるでしょう。

さて、どちらの解釈が正しいのかというと後者が正しいです

つまり、このようなプログラムでは内側の繰り返し開始命令と終了命令がセットとなり、外側の繰り返し開始命令と終了命令がセットとなります。

繰り返しブロックは内側の4行目だけからなる部分と外側の2行目から6行目までの部分の2つとなります。

このように、実は、繰り返しブロックの中に別の繰り返しブロックを入れるというようなこともできるのです。そうすると、繰り返しを行っている最中に更に別の繰り返しが発生するということになります。このような状態を入れ子と言います。

これは日本語の文章における括弧の対応付けと全く同じです。

たとえば、下の文章を見てください。

  • 私は猫が大好きです(2次元の猫耳キャラ(特に、みくにゃん!)も含む)。

この場合、外側の括弧に囲まれた領域と内側の括弧に囲まれた領域、つまり、「2次元の猫耳キャラ(特に、みくにゃん!)も含む」という領域と「特に、みくにゃん!」という領域に分かれるのであって、「2次元の猫耳キャラ(特に、みくにゃん!」という領域と「特に、みくにゃん!)も含む」という領域に分かれるのではないですよね。

プログラミングの場合もこれと全く同じなのです。

画像を半分の大きさにリサイズするプログラムの改造

それでは、繰り返し命令の書き方が分かったところで繰り返し命令を実際に使用したプログラムを幾つか書いてみたいと思います。

まず、前回の記事で作成した画像を半分の大きさにリサイズするプログラムを改造してみましょう。

前回作成したのは下のようなプログラムでした。

プログラム1

1
Application
Applicationキーを押したことにする。

2
H
Hキーを押したことにする。

3
キーを押したことにする。

4
キーを押したことにする。

5
キーを押したことにする。

6
キーを押したことにする。

7
キーを押したことにする。

8
Enter
Enterキーを押したことにする。

9
1000
1000ミリ秒待機する。

10
LCtrl Down
Ctrlキーを押したままでいることにする。

11
W
Wキーを押したことにする。

12
LCtrl Up
Ctrlキーを離したことにする。

13
Tab
Tabキーを押したことにする。

14
5
5キーを押したことにする。

15
0
0キーを押したことにする。

16
Enter
Enterキーを押したことにする。

17
LCtrl Down
Ctrlキーを押したままでいることにする。

18
S
Sキーを押したことにする。

19
LCtrl Up
Ctrlキーを離したことにする。

20
LAlt Down
Altキーを押したままでいることにする。

21
F4
F4キーを押したことにする。

22
LAlt Up
Altキーを離したことにする。

実はこのプログラムには繰り返し命令を使って書き直せる部分が1箇所だけ隠れています。

それはどこか分かりますか?

はい、それは3行目から7行目までの部分です。

この部分ではキーを5回連続で押したことにしています。

それをという命令を5行に亘って記述して実現しているのですが、キーを5回連続で押すというのはキーを押すのを5回繰り返すということでもあります。

ですから、この部分は繰り返し命令を使っても実現できるのです。

この部分を書き換えたブログラムは下のようになります。

プログラム3(プログラム1の改造)

1
Application
Applicationキーを押したことにする。

2
H
Hキーを押したことにする。

3
<r 5>
繰り返しを開始する。5回繰り返す。

4
キーを押したことにする。

5
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

6
Enter
Enterキーを押したことにする。

7
1000
1000ミリ秒待機する。

8
LCtrl Down
Ctrlキーを押したままでいることにする。

9
W
Wキーを押したことにする。

10
LCtrl Up
Ctrlキーを離したことにする。

11
Tab
Tabキーを押したことにする。

12
5
5キーを押したことにする。

13
0
0キーを押したことにする。

14
Enter
Enterキーを押したことにする。

15
LCtrl Down
Ctrlキーを押したままでいることにする。

16
S
Sキーを押したことにする。

17
LCtrl Up
Ctrlキーを離したことにする。

18
LAlt Down
Altキーを押したままでいることにする。

19
F4
F4キーを押したことにする。

20
LAlt Up
Altキーを離したことにする。

変更した部分は赤記しました。

キーを押すのを5回繰り返さなければならないので、という命令を<r 5></r>という命令で囲みます。

これでプログラムを2行だけ短くすることができました。

とは言え、文字数という観点から見れば元々のプログラムはが5個で5文字だったのが、改造したプログラムは<r 5>↓</r>の10文字となっていて逆に増えてしまっています。

なので、一概に短くできたとは言えないかもしれません。

しかしながら、基本的にはプログラムというのは繰り返し命令で書ける部分は繰り返し命令を使って書くべきものです

何故なら、1つは、今回は当て嵌まらなかったものの、繰り返し回数が100回とか1000回とかとても多い場合には明らかに繰り返し命令で書いた方がプログラムの記述時間の短縮になるからです。

それから、もう1つは、繰り返し命令で書いた方がプログラムを見た時に分かりやすいということが挙げられます。

たとえば、同じ命令を100回繰り返す部分が、繰り返し命令を使わず100回同じ命令を記述することで書かれていたとしたら本当に同じ命令が100個書かれているか確認するだけでも一苦労です。

一方で、繰り返し命令を使って書かれていれば繰り返し開始命令に書かれている繰り返し回数を確認するだけで済みます。

プログラムを書く時には100回くらいの繰り返しなら命令を愚直にコピーペーストすれば良いのではないかと考えてしまいがちかもしれませんが、そういうことをしてしまうと後でプログラムを見返す時が大変なのです。

なので、後のことを考えると命令の繰り返しは繰り返し命令を使って書いておいた方が絶対に良いのです。

更に言えば、繰り返し命令を使って書いていれば後で繰り返し回数を変更するのも簡単です。

繰り返し命令を使っていなかったらいちいち繰り返し回数を数え直す必要がありますが、繰り返し命令を使っておいたなら繰り返し開始命令の繰り返し回数を変更するだけで済みます。

このように、繰り返し命令を使うことには使わない場合と比べてかなりのメリットがありますので、繰り返し命令は積極的に使うようにしましょう。

複利計算プログラム

それでは、次に、全く新しいプログラムも作成してみましょう。

皆さんは複利というものをご存知でしょうか?

お金を借りた(あるいは、貸した)時には利息が付きますが、この利息には単利と複利があります。

借りたお金のことを元本と言いますが、利息が1年毎に付く場合には、お金を借りてから1年経つと元本に対して利率を掛けただけの利息が発生することになります。

単利の場合は利率自体が変わらない限り、また、元本を一切返済しない限り、2年目以降も1年目と同じだけの利息が発生することになります。

しかし、複利の場合は2年目以降発生する利息は変わっていきます。利率が変わらず、返済も一切しない場合には発生する利息はどんどん増えていきます。

何故なら、複利の場合、次の年には前の年に発生した利息が元本に組み入れられるからです。

つまり、利息が元本の一部になってしまうのです。

利息というものは元本に対して発生するものです。そして、複利の場合は前年の利息が元本に組み入れられて元本自体がだんだん増えていくのですから当然利息の方もだんだん増えていくということです。

単利の場合は計算も簡単です。ただ単に、1年分の利息に年数を掛けるだけで利息の総額が出ます。

しかし、複利の場合は元本自体が変わるので毎年の利息を計算し直さなければなりません。

今回は、この複利によって借金がどれくらい増えるのかを計算するプログラムを書いてみたいと思います。

まずは、プログラムを書く前に複利の計算を実際にしてみましょう。

ウィンドウズには「電卓」という計算を行うためのソフトがあるので、それを使って100万円を年利7%で借りた場合に10年後の元本と利息の合計がどうなるかを計算してみましょう。

「電卓」を起動してください。

電卓

「電卓」はこのような画面になっていて普通の機械の電卓と同じように計算を行うことができます。他にコピーや貼り付けなどの機能もあります。

それから、「電卓」はボタンを押すのではなくキーボードのキーを押すことによっても操作することができます。たとえば、「電卓」に数字を入力するにはキーボードの数字キーを押すことによっても行うことができます。

しかし、「電卓」の画面を注意深く見ていると、ウィンドウズの「電卓」を今まで使ったことがなかった方は見慣れないボタンがあるのに気付くかもしれません。

具体的には、下の画像の部分です。

電卓の見慣れないボタン

この「/」とか「*」というボタンは何なのでしょうか?

実は、これらのボタンはそれぞれ普通の電卓の「÷」ボタンや「×」ボタンと同じです。つまり、「/」は割り算の意味で、「*」は掛け算の意味です。

実は、パソコン関係では割り算や掛け算を表すのに「÷」や「×」という記号より「/」や「*」という記号が使われることの方が多いのです。

この機会に覚えておきましょう。

さて、ボタンの意味が分かったところで計算に入りましょう。

まず1年後の元本と利息を計算します。元本が100万円で年利が7%なので、1000000×1.07を計算すれば良いはずです(元本と利息の合計なので、0.07ではなく1.07となります)。「電卓」では「×」は「」だったので、`10000001.07=`と計算します。

1年後

答えは1070000、つまり、107万円となりました。

次に2年後の元本と利息を計算します。2年後の元本は1年後の元本と利息の合計であった107万円となります。そして、年利の方は変わらず7%です。ですから、1070000×1.07を計算すれば良いはずです。今「電卓」は既に1070000が入力されている状態になっていますので、*1.07=と計算します。

2年後

答えは1144900、つまり、114万4900円となりました。

3年後以降は2年後と同じように計算していけば良いです。つまり、10年後の結果が出るまで*1.07=を続けていきます。つまり、あと8回*1.07=を行います。

10年後

そうすると、最終的な答え、すなわち、10年後の元本と利息の合計は196万7151円となりました。

複利計算は「電卓」ではこのようにして行うことができます。

それでは、この操作をプログラム化してみましょう。

皆さんはまだまだプログラミングに慣れていないかと思いますので、まずは日本語でどのような操作をプログラム化しなければならないかを書き出してみましょう(ある程度プログラミングに慣れて来たらこれは頭の中で行うようにしていくべきです)。

  • 「電卓」を起動する。
  • 1000000と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。
  • *1.07=と入力する。

日本語でざっくり書くとこのようになるかと思います。

注目すべきは3行目から最後の行である12行目までです。

*1.07=と入力するという操作が10個連続で並んでいることが分かります。

この部分は全く同じ操作の繰り返しなので繰り返し命令で書くことができそうです。

上で書いたように、プログラムでは基本的に繰り返し命令で書けるところは繰り返し命令で書いておくべきです。

なので、この部分は繰り返し命令を使って記述することにしましょう。

さて、それでは、具体的なプログラムの記述に入っていくことにしましょう。

1行目の「電卓」を起動するという操作ですが、これはどのようにプログラム化すれば良いでしょうか?

皆さんは先程何らかの方法で「電卓」を起動したことと思います。

なので、その操作方法をそのままプログラム化しても勿論良いのですが、実はHiMacroExには「電卓」のようなソフトを起動するための便利な命令が用意されています。

それは下のような命令です。

命令

ソフトの名前
ソフトの名前に対応するソフトを起動する。

ソフトの名前のところには実際のソフトの名前を記述しなければなりません。

つまり、ソフトの起動はそのソフトの名前を命令として記述するだけで行うことができます(実のところ、全てのソフトがソフトの名前を命令として記述するだけで起動できる訳ではありません。しかし、少なくとも「電卓」についてはソフトの名前を命令として記述するだけで起動することができます。どのようなソフトが起動できてどのようなソフトが起動できないかを説明するには初心者の方には難しい話が必要ですのでここでは書かないことにします。詳細については恐らくこの連載記事のかなり後の方で取り上げることになるかと思っています。取り敢えず今は、「電卓」を含む一部のソフトはソフトの名前を命令として記述するだけで起動できるということが分かりさえすれば十分です)。

では、ソフトの名前とは何なのか、「電卓」の場合は電卓で良いのかというと、実はそうではありません。

「電卓」の場合、ソフトの名前はcalcです

突然calcなどというものが出てきて訳が分からないかもしれませんが、そういう風に決まっているので仕方ありません。このような決まりごとは基本的には覚えるしかありません(別に暗記しなければならないということではなく、何度もプログラムを書いていればこのような基本的な事柄は自然に覚えていきます)。

どうしても納得が行かないという方はウィンドウズのアプリの選択画面で「Windowsアクセサリ」の中の「電卓」を右クリックして、出てきたメニューの「ファイルの場所を開く」という項目をクリックしてみてください。

アプリの中の電卓

そうすると、下のような「エクスプローラ」の画面が開き、この画面では「電卓」という項目が選択されていますので、更にこの項目を右クリックして、出てきたメニューの「ファイルの場所を開く」という項目をクリックしてみてください。

エクスプローラの中の電卓

そうすると、「エクスプローラ」が別のフォルダに移動します。そして、そのフォルダではcalc.exeという実行ファイルが選択されています。

エクスプローラの中のcalc.exe

実は、「電卓」というものの実体はcalc.exeという名前の実行ファイルだったのです。

そして、そこにはcalcという文字があります。

実は、ソフトの名前というのはソフトの実行ファイルの(拡張子.exeを除いた)名前だったのです。

これで「電卓」のソフトの名前がcalcだということに納得していただけたかと思います。

ちなみに、他のソフトについても同じですので、プログラム中で他のソフトを起動したい場合には上と同じようにしてソフトの名前を調べるようにしましょう。

さて、今回のプログラムではこの便利なソフトを起動する命令を使用して「電卓」を起動することにしましょう。

つまり、複利計算プログラムの1行目は下のようになります。

プログラム4(作成中1)

1
calc
「電卓」を起動する。

これで「電卓」は起動できますが、気を付けなければならないのは次です。

皆さんは前回の記事のプログラムで発生したバグについて覚えていますでしょうか?

前回はファイルを開く操作を行ってから実際にソフトが起動してファイルが開かれるまでに若干のタイムラグがある所為でプログラムにバグが発生しましたが、今回のプログラムも「電卓」というソフトを起動するという操作を行っています。

「電卓」を起動する操作を行ってから実際に「電卓」が起動するまでには若干のタイムラグがありますので、今回も前回と同じようにプログラムに待機命令を入れておかなければ前回と同じようなバグが発生してしまいます。

ソフトが起動するような操作を行った場合には直後に待機命令を入れておかなければならないというのはHiMacroExでのプログラミングにおける鉄則ですので覚えておきましょう。

という訳で、複利計算プログラムの2行目には待機命令を記述します。待機時間は1秒(=1000ミリ秒)ということにしておきましょう。

プログラム4(作成中2)

1
calc
「電卓」を起動する。

2
1000
1000ミリ秒待機する。

さて、ここから実際に複利計算を行っていきます。

上で書いたように、「電卓」はキーボードでも操作することができますので、キーボードのキーを操作する命令を適切に記述していくだけです。

まずは最初の元本である1000000を入力しなければなりません。

これは1キーを1回押してから0キーを押すことを6回繰り返すということなので、繰り返し命令を使って書くと下のようになります。

プログラム4(作成中3)

    ・・・    

2
1000
1000ミリ秒待機する。

3
1
1キーを押したことにする。

4
<r 6>
繰り返しを開始する。6回繰り返す。

5
0
0キーを押したことにする。

6
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

次は、*1.07=を10回連続で入力します。

*を入力するにはShiftキーを押しながら:キーを押さなければなりません。

また、=Shiftキーを押しながら-キーを押すことで入力することができますが、「電卓」の場合、Enterキーを押すだけでも同じことになります。なので、今回はEnterキーを使うことにしましょう。

繰り返し命令を使って書くと下のようになります。

プログラム4(作成中4)

    ・・・    

6
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

7
<r 10>
繰り返しを開始する。10回繰り返す。

8
LShift Down
Shiftキーを押したままでいることにする。

9
:
:キーを押したことにする。

10
LShift Up
Shiftキーを離したことにする。

11
1
1キーを押したことにする。

12
OEM(.)
.キーを押したことにする。

13
0
0キーを押したことにする。

14
7
7キーを押したことにする。

15
Enter
Enterキーを押したことにする。

16
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

これで複利計算プログラムは完成です。

完成したプログラムは下のようになりました。

プログラム4(完成)

1
calc
「電卓」を起動する。

2
1000
1000ミリ秒待機する。

3
1
1キーを押したことにする。

4
<r 6>
繰り返しを開始する。6回繰り返す。

5
0
0キーを押したことにする。

6
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

7
<r 10>
繰り返しを開始する。10回繰り返す。

8
LShift Down
Shiftキーを押したままでいることにする。

9
:
:キーを押したことにする。

10
LShift Up
Shiftキーを離したことにする。

11
1
1キーを押したことにする。

12
OEM(.)
.キーを押したことにする。

13
0
0キーを押したことにする。

14
7
7キーを押したことにする。

15
Enter
Enterキーを押したことにする。

16
</r>
繰り返しが完了していない場合には繰り返しの最初の命令に戻る。完了した場合には次の命令に進む。

このプログラムを動かしてみると、「電卓」が起動し、物凄い速さで計算が行われ、最終的な結果が表示されます。

最終的な結果は勿論上で手で計算してみたものと同じ1967151.357289565です。

複利計算プログラムの実行結果

HiMacroExでは「電卓」の操作も簡単に行えることが分かりました。

ちなみに、今回は10年後の元本と利息を計算しましたが、30年後の元本と利息を計算したければプログラムの2つ目の繰り返し命令の繰り返し回数を10から30に変更すれば簡単に計算することができますし、50年後でも100年後でも同様に繰り返し回数を変更するだけで簡単に計算することができます。

逆に100年後の元本と利息を手で計算しなければならないとしたら相当な時間が掛かってしまうでしょう。

繰り返しの操作が増えれば増えるほどプログラミングの方が有利になるということが実感していただけるかと思います。

繰り返し

上の繰り返し命令を使った2つのプログラムから分かるように、繰り返し命令はプログラミングにおいては頻出の命令です。

前回と前々回で解説した順次と並んで、繰り返しは最も基本的なプログラミングパターンの1つとなっています。

順次というのは上から下に向けて順番に命令が実行されていくことでしたが、繰り返しというのは上から下に向けて順番に命令が実行されているところを、繰り返し回数分だけは命令の実行を上に戻すということです。

繰り返しは順次というプログラミングの基本原則にほんの少し修正を加えます

これにより、順次だけでは実現できなかった、あるいは、実現が難しかった、より多彩で柔軟なプログラムの記述が可能となります。

つづく

今回の繰り返し命令を使ったプログラム作成はどうだったでしょうか。

繰り返しというものが使えるようになったおかげで、前回と比べてより多くのプログラムが簡単に作れるようになりました。

しかし、HiMacroExのプログラミング言語が備えている便利なプログラミングパターンはこれだけではありません。

次回は最も基本的なプログラミングパターンの最後の1つである分岐について解説したいと思います。

これにより、更に多くのプログラムが簡単に作れるようになります。

↓ ↓ ↓

第6回

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-プログラミング, 講座