とまと船

政治経済、ゲーム、ITなど、興味のあることを自分の視点から書いています。

[専門外の人向け]プログラミングの初歩的な話 #2

難しいプログラミングの記事が多いので、

私は専門外の人向けに、初歩的な話を書いてみようと思います。

 

tomatobune12341.hatenablog.com

 

↑の2記事目です。

つづけて読めば、話がつながる???

 

3.「もし、雨が降ってたら、傘を開け!」条件を指定して、命令を分岐させることができます。

 

「 もし、~ならば、○○せよ! ~でなければ、××せよ!」

 

という風に、与えた条件に応じて命令を変えることができます。

単純な「AI」がやっていることも、きっと、こんな感じを組み合わせたもの。

 

例えば、

If isRaining() {

  openUmbrella();

} else {

  packUpUmbrella();

}

 と書けば、なんとなくですが英語で、

もし、雨が降ってたら(If it is raining)、

傘を開け(open the umbrella)。

そうでなければ(else)、

傘をしまえ(pack up the umbrella)。

と言ってるみたいですよね。

ズバリ、そのつもりで書きました。

 

多くの言語で、

「If」+「条件文」+「{ 命令のまとまり }」と書くと、

 

「もし、条件文を満たしていれば、命令のまとまりを実行せよ」

 

という意味になります。

「else」+「{ 別の命令のまとまり }」で、

 

「条件文を満たしていなければ、別の命令のまとまりを実行せよ」

 

という意味になります。

「else」は、「If」とセットで使います。

また、「elseIf」+「別の条件文」+「{ 別の命令のまとまり }」という記法もあります。

これは、

「(上のIf文の条件に対して、)そうでなくて、

 もし、別の条件文を満たせば、別の命令のまとまりを実行せよ」

という意味になります。

 

指定できる条件の幅が増えましたね。 

 

4.一連の命令に名前を付けて保存すれば、また呼び出せます。

実は、

isRaining()
openUmbrella()
packUpUmbrella()
といった命令は、別の場所で定義された命令のまとまりだったりします。
 
たとえば、「openUmbrella()」は、次のように定義されています。
void openUmbrella() {
  holdUmbrella();
  liftUmbrella();
  pushOpenButtonOfUmbrella();
  return;
}
「{  }」の中身は、
傘を手に持て(hold the umbrella)。
傘を持ち上げろ(lift the umbrella)。
傘にある「Open」ボタンを押せ(push the "Open" button of the umbrella)。
と、英語で言っているようですよね。そのとおりです。
 
つまり、
「傘を開け(openUmbrella)」という命令は、
「傘を手に持て(holdUmbrella)」、「傘を持ち上げろ(liftUmbrella)」、
「Openボタンを押せ(pushOpenButtonOfUmbrella)」という
一連の命令をまとめて、名前を付けたもの
なのです。
 
一連の命令に名前を付け、別の場所で定義することで、
「openUmbrella();」のように、好きな場所で呼び出すことができます。
 
プログラムの中で呼び出される、このような名前付きの小さな命令のまとまりは、
よく、「関数」と呼ばれます。
 
※「メソッド」と呼ばれたり、「プロシージャ」と呼ばれたりすることもあります。

ところで、「holdUmbrella」や「liftUmbrella」などの関数も、
別の場所で定義され、名前を付けられた一連の関数のまとまりだったりします。
 
関数の構成要素である関数、そのまた構成要素の関数、、、と、どんどん
細かく辿っていくと、最終的には、
 
コンピューターのメモリに数値「1」を読み込む
 
といった、もっとも単純な処理命令になります。
 
プログラムのお作法の開発者は、こうしたコンピューターの単純な処理を組み合わせ、
人間が読みやすく、使いまわしやすい関数へと組み上げていきます。

では、
 
関数の定義「void openUmbrella()」に付いた
「void」とか「()」は何の呪文?
 
それは、また次回で。。。