世の中には数多くのプログラム言語があります。
それぞれ特長がありますが、これからプログラムを学ぼうというとき、まず最初に調べて学ぶ「共通の基本要素」というべきものがあります。
小学生が Raspberry Pi でプログラミングを学ぶときにも、基本要素として最初におさえておきたい事柄です。
この基本要素について書きます。
プログラミング言語の基本要素
私はプログラミングの専門家ではなく、プログラミング言語のいろいろな要素の定義や意味についての説明は、正確さを欠くかもしれません。
ここでは、実用上差し支えない範囲で、また最低限この説明で押さえておけばプログラミングの学習が進められるというレベルを意識して説明します。
私がプログラム言語の基本要素として、ここで上げるのは次の4つです。
- 変数
- 表示
- 繰り返し
- 条件分岐
他にも上げられそうですが、この記事ではこの4つに絞り、順に説明します。
変数
変数という言葉、すぐに理解して活用できる方と、なかなか意味が捉えられずに困ってしまう方とに大きく分かれるようです。
変数とは、中学校の数学の授業で出てきた、
スポンサーリンクy=x+1
といった式のxやyをイメージすればよいと思います。
xに1を入れればyが2と決まる、xに2を入れればyが3と決まる、という具合に、xが1つ決まればyが1つ決まる、というところにでてきた例の文字です。
このxやyが変数の例です。
ですから、文法はプログラム言語によって異なるものの、形式的には
1 2 |
x=1 y=x+1 |
のように(各プログラム言語の文法に従って)書くと、1行目を実行した直後に変数xの値は1になりますし、2行目を実行した直後は変数yの値は2になります。
さてこの変数、上記の例ではxに数字を入れましたが、入れられるのは数字だけではありません。
x="abc"
などと(これも各プログラム言語の文法に従って)書けば x に abc という"文字"が入るのです。この abc のようなものを"文字列"といいます。
つまり、変数には数字だけではなく、文字列も代入することができるのです。
これをどう使うかは、プログラミングの学習を進めていけば徐々にわかってきます。
他にも変数には、プログラム言語によって、いろいろなものが入ります。入れるものは"数"とは限りません。そう意味で、変数は"箱"とか"入れ物"のようなイメージを持っておくとよいでしょう。xやyはそれらの箱を区別するための名称のようなものです。
表示
ここで表示と書いたのは、「単純に変数の中身を表示する命令」という程度の意味です。
例えば、変数にいろいろな値を入れた後は、その値が何か表示させたくなるでしょう。
もし、作ったプログラムのなかでその変数を表示する必要がなくても、プログラムが思ったように動かないときには、途中経過としてその変数にどんな値が入っているかを見てみたいことはよくあります。
そのときのためにも、学習しているプログラム言語で変数の値を表示する方法を調べることは重要です。
print, printf, puts, p, echo, ... など、プログラム言語によって書き方は違うし、1つのプログラミング言語の中にも複数の手段が用意されていることも普通にあります。
仮にそれが print という命令なのであれば、上記のプログラム例で、
1 2 3 4 |
x=1 print x y=x+1 print y |
などとやれば、2行目を実行するときには、xの値である"1"が表示され、4行目を実行するときには、yの値である"2"が表示されることになります。
繰り返し
次に、繰り返しを実現するための命令です。ループともいいます。
この繰り返しの命令があることによって、ベタに書きならべるとプログラムの長さが長くなってしまうような場合でも、シンプルに書くことができるようになります。
例えば、1から10までの値を加算した結果を出力するプログラムを書くならば、Ruby というプログラミング言語では(これも書き方はいろいろありますが)、
1 2 3 4 5 |
sum=0 for n in 1..10 do sum += n end print("Sum = ",sum,"\n") |
などと書けば、"Sum = 55" と表示されます。
2行目から4行目が繰り返し(ループ)の命令です。nという変数に最初は1を入れ、3行目を実行し、次にnに2を入れ、3行目を再び実行、という具合に、10まで合計10回回ります。
3行目は sum という変数に、sum + n の値を入れるという意味です。(同じsumという変数がでてきてちょっと引っかかるところがあるかもしれませんが、別の機会に説明します)
これで1から10まで加算してから、5行目でその値を表示するというわけです。
sum = 1+2+3+,... と書けばよいと思われる方もいるかもしれませんが、この書き方では本質的に不可能な場合があるのです。
それは、この例で、例えば足し算の最後がプログラムを書く時点で決まっていない場合です。
例えば1回目の実行では10まで足すが、2回目の実行では35まで足したい、といった場合、sum = 1+2+3+,... などという書き方では、都度プログラムを書き換えなければなりません。
それだけではありません。プログラムの中で計算した結果を使って、1からその値まで足し算する必要がでてきたら、もっと困ります。プログラムを書き換えて対応することもできませんから。
でも、上記のようにループで書いておけば、例えば変数 q を 登場させ、
1 2 3 4 5 |
sum=0 for n in 1..q do sum += n end print("Sum = ",sum,"\n") |
とやればよいのです。プログラムを実行するときに q の値をプログラムの引数(プログラムに変数の値を最初に与える方法)として与えればよいし、プログラムの別の場所で計算した結果を使いたいのであれば、それを q に入れておけばよいのです。
この例では足し算の開始の値を1に決めましたが、これも変数にすることもできますね。変数
p を登場させ、2行目の1をpに書き換えればよいですね。
1 2 3 4 5 |
sum=0 for n in p..q do sum += n end print("Sum = ",sum,"\n") |
こんな具合です。pとqの大小関係の問題が発生しますが、考え方としてこのように変数にしておけば自由度が増すわけです。
条件分岐
最後は条件分岐です。
条件分岐とは、「もし条件○○が正しければ次の命令を実行し、そうでなければ別の命令を実行する」といったように、条件にしたがって実行する内容を"分岐させて"変更することです。
例えば、これもRubyというプログラム言語の例ですが、
1 2 3 4 5 6 |
a=1 if a == 1 print "XXX\n" else print "YYY\n" end |
などです。2行目の if という命令が条件分岐を表現する命令、"a == 1" が条件です。
この場合、"aの値が1ならば" 3行目を実行し、4行目の else つまり "そうでなければ" 5行目を実行します。
この例では、aの値を1行目で1と設定しているので、3行目の方を実行することになります。1行目を1以外の値に設定すると、5行目が実行されることになります。
まとめ
新しいプログラム言語を勉強するときには、まずここで述べた4つの基本要素について、そのプログラム言語ではどう書くのかをネットや書籍で調べてみるとよいでしょう。
プログラム言語はどれもとても奥が深く、勉強することが多くて大変ですが、ここに上げた4つは必ず必要になりますし、2つ目、3つ目のプログラム言語をマスターするときにも、だいたい最初に調べるものです。
早速調べてみて、自分でプログラムを作ってみましょう。