プログラミングの始め方 その3

繰り返しを知ろう

説明

それでは始めていきましょう。

今回からは、繰り返しと条件判定の授業です。
繰り返しとはいわゆるループのことです。
「無限ループ」というのは、いつの間にか世間に浸透した言葉ですが、もともとはプログラミング用語です。

そして、条件判定とは”もし〜だったら”、”もし〜だったら、そうでなければ”という判断をして
プログラムの処理を枝分かれさせることを指します。
日常生活でも、「もし雨が降ったら、家でゲームをする。そうでなければ映画を観に行く。」など、
人間はその時の状況に応じて行動を変えています。プログラムも同じなんですね。

現実のプログラミングとは繰り返しと条件判定が全てであると言っても過言ではありません。
それに加え、変数と関数の概念がしっかりと頭に入っていれば、どんなプログラミング言語でプログラムを書くとしても、基本的な考え方は同じです。

  • 変数
  • 関数
  • 繰り返し
  • 条件判定

余談ですが、これら以外のプログラミング言語特有の文法などは些細な問題です。
と言っても、英語の文法が誤っているとテストで減点されたり、会話が通じないのと同様に、プログラムも正しく動かないことは事実なのですが・・・
プログラムを書くに当たって、文法も覚えておく必要はあるのですが、自分でどんどん書いていくと文法は自然と身に付きます。
また、利用しているVSCodeなどのツールが文法誤りを指摘してくれたり、多くのサポートを提供してくれます。

ですので、細かいことは気にせずに、今回からは繰り返しと条件判定の考え方をしっかりと学んでいきましょう。

loop.shをVSCodeで開いてください。

準備が出来たでしょうか?

前回と同じように、ターミナルを開いて以下のように実行してください。

bash loop.sh
bash

プログラムの詳細を説明します。

  • 2行目の「futuu_ni_hyoji」は、単語とその単語の文字数を表示する関数です。
  • 8行目の「kiken_ni_hyoji」は、「futuu_ni_hyoji」とほとんど変わりありませんが、”ヤバいです。”と表示する関数です。
  • 13行目の「zoo」というのは、動物の単語のリストを定義する「配列」という変数です。(配列の意味は今は気にしないで大丈夫です)
  • 15行目から19行目は繰り返し処理を行っているプログラムで、「do」から「done」の間に書かれたプログラムを繰り返し実行します。

for animal in ${zoo[@]}
do
  # 繰り返し処理の中身
done
bash

  • 17行目でwcコマンドで単語の文字数を数えて「mojisu」という変数にそれを保存しています。

mojisu=`printf $animal | wc -l`
bash

  • 18行目で「futuu_ni_hyoji」という関数を呼び出し、画面に単語とその文字数を表示しています。戻り値は必要がないので無視しています。

futuu_ni_hyoji $animal $mojisu
bash

さて、ここまで理解出来たでしょうか?
沢山時間をかけて、このプログラムと説明を何回も読んでしっかりと理解してください。とても重要な部分です。

課題

理解ができたら、課題を解いていきましょう。

loop.shというファイルの最後に以下の通りのプログラムを追加してください。

  • 13行目の「zoo」のように、「fruits」という果物の単語のリストを書いてください。
  • 「fruits」という単語を1つずつ繰り返す処理を書いて、文字数をカウントし、関数「futuu_ni_hyoji」を呼び出してください。

プログラムの追加が終わったら、実行してください。

bash loop.sh
ターミナル

実行したら、こんな感じになるのではないでしょうか?
(horseよりも下の行は、「fruits」に書いた単語のリストによって変わります)

elephantは8文字です
gorillaは7文字です
wolfは4文字です
horseは5文字です
appleは5文字です
bananaは6文字です
grapeは5文字です
kiwiは4文字です
ターミナル

「fruits」に追加した単語の数だけ、繰り返し処理が行われたことを確認してください。
例えば2つの果物しか書いていない場合は、2回だけ繰り返し処理が行われていますよね。

ヒントです。

  1. もし、コピー&ペーストしてプログラムを追加し、以下のように表示されてしまったら、変数の名前が正しいかどうか確認してください。

elephantは8文字です
gorillaは7文字です
wolfは4文字です
horseは5文字です
elephantは8文字です
gorillaは7文字です
wolfは4文字です
horseは5文字です
ターミナル

  1. コピー&ペーストしてプログラムを追加した場合、果物の単語を保存する変数の名前として「animal」は正しいでしょうか・・・?
    果物は動物ではありませんよね。神は細部に宿ると言います。

答え合わせ

それでは、長くなりましたので、今回はここまでとしましょう。
正解例はこちらにあります。


お疲れ様でした!
次回はこのプログラムに条件判定を追加していきます。