プログラムの書き方の基本

前回の後半では、第一歩としてプログラムを実行しましたが、 そこではあくまでも実行手順の説明が目的だったので、プログラムの記述内容には触れませんでした。 そこで今回からは、プログラムの書き方の説明に入っていきましょう。今回はその基本です。

- 目次 -

最初に、半角と全角には注意が必要 !

プログラムを書き始める前に、一つだけ非常に重要な、気を付けないといけない事があります。 それは、恐らくみなさんが、日本語を入力できるPCを使っているという事です。

キーボードの左上にある「 全角 / 半角 」キーを押してみてください。 日本語を入力できるモードと、そうでないモードが切り替わりませんか? ここでは、前者を全角モード、後者を半角モードと呼びます。 半角モードでは、以下のように文字の幅が細くなっているはずです:

全角( 使用NG ! ) : ABC abc 123 +*= ”;
半角( 使用OK ! ) : ABC    abc    123    + * =    " ;

プログラムは、英数字( 英語のアルファベットと数字 )と記号を組み合わせて書きますが、 それらはすべて半角モードで入力する必要があります。 全角の英数字や記号が混じっているとエラーになるので、気を付けましょう。 (ただし後述する「文字列」では、全角も使えます。)

前回のプログラムの意味を追いながら、
書き方の基本を押さえていこう

さてここからが本題です。前回の後半では、以下の記述内容のプログラムを実行しました:

print ( "Hello, World !" ) ;
※ 最後の「 ; 」記号を忘れてはいけません !

これを実行すると、画面に以下のように表示されるのでしたね:

Hello, World !

実は、上のプログラムの記述内容には、色々と重要な要素がつまっています。 以下では、その意味を少しずつ掘り下げながら、プログラムの書き方の基本を説明していきましょう。 今回の最後まで読むと、上のプログラムの本当の意味が、すべてわかるはずです。

「 print 」関数などで、画面に文章や数値を表示できる

まず気になるのが「 print 」という部分です。 そこで以下のプログラムを書いてみてください:

print ( 123 ) ;
※ 最後の「 ; 」記号を忘れてはいけません !

これを実行すると、コンソール画面( 黒い画面 )に以下のように表示されます:

123

この通り、「 print ( ) 」のカッコ内に書いた内容が表示された事がわかります。 この 「 print 」 は、関数というものの一つです。 関数は、このようにカッコ内に書かれた内容に基づいて、 あらかじめ決まった処理を行ってくれます。 そう、この print 関数は、カッコ内の内容を画面に表示してくれる関数なのです。

print関数に「123」の値を渡す図

似たような関数は他にもあります。たとえば以下のように書き直して実行してみてください:

popup ( 123 ) ;

ここで使っている「 popup 」関数は、カッコ内の内容を、小さなウィンドウに表示してくれる関数です。 実際に実行してみた様子は以下の通りです:

popup関数に「123」の値を渡した結果、ウィンドウに「123」と表示される図

ちゃんとウィンドウが起動し、「 123 」と表示されましたね。 以下に、表示関連の関数をリストアップしておきます。使い方は同じなので、気軽に試してみてください:

print 関数
内容をコンソール画面に表示( 追記 )する。最後に改行しない。
println 関数
内容をコンソール画面に表示( 追記 )する。最後に改行する。
popup 関数
内容を小さなウィンドウなどに表示する。( 「 OK 」を押すまで処理を止めて待つ。)
output 関数
内容を小さなウィンドウなどに表示する。( 処理を止めて待たない。)

なおこれらは、カッコ内に「 , 」記号で区切って、複数の内容を表示してもらう事も可能です。

プログラムの中に式を書いたら、自動で計算される

さて続きです。以下のプログラムを実行してみてください:

print ( 1 + 2 ) ;

実行結果は以下の通りです:

3

「 1 + 2 」という式を計算した値である、「 3 」が表示された事がわかりますね。

この通り、「 プログラムの中に式を書いたら、コンピューターがその値を計算してくれる 」というルールがあります。 これはとても重要なルールです。 というのも、print 関数のカッコ内だけの話ではなく、とにかくプログラムの中にある式は、すべて自動で計算されるからです。

式を自動で計算するコンピューターの図

この自動計算によって、上のプログラムは「 print ( 3 ) ; 」と書くのと同じ結果になったのです。 コンピューターが計算してくれるのは便利なので、色々な式を書いて試してみたくなりますね。 しかし、式の書き方は次回で詳しく説明するとして、とりあえず今は先に進みましょう。

式ではなく文章( 文字列 )として扱う場合は、
「 " 」記号ではさめば OK !

さて、「 式として計算してほしくない場合 」 はどうすればいいでしょうか? たとえば計算問題プログラムなどを作っていて、「 1 + 2 」という文章をそのまま表示してほしい場合などです。

ここで最初のプログラム「 print ( "Hello, World !" ) ; 」を思い出してください。 「 Hello World ! 」という文章を 「 " 」 記号 ではさんでいましたね。 そう、「 " 」 ではさめばよいのです:

print ( "1 + 2" ) ;

このプログラムを実行すると、結果は以下の通りです:

1 + 2

上の結果からもわかる通り、 「 プログラムの中で、『 " 』 記号( ダブルクォーテーションと呼びます )ではさんだ部分は式ではなく、ただの文章として扱われる 」 というルールがあります。 これも print 関数のカッコ内だけの話ではなく、プログラム全体に通じる話です。

ただの文章は計算しないコンピューターの図

このように 「 式ではない、ただの文章 」 の事を、プログラミングでは「 文字列 」 と呼びます。 文章は 「 文字が列になっているデータ 」 だからです。この呼び方には慣れておきましょう。

文字列なのに「 " 」記号を忘れると… 式と見なされてエラーに !

よくあるミスとして、「 文字列として扱ってもらうべき内容を 『 " 』 ではさみ忘れる 」 というものがあります。 この場合、その内容が式の形をしているかどうかにかかわらず、式と見なされる 事に注意が必要です。 ためしに、最初のプログラムでわざと「 " 」を忘れてみましょう:

print ( Hello, World ! ) ;

実行すると、画面の色が黒から青に変わり、以下のような内容が表示されます:

--------------------------------------------------
SYNTAX ERROR - 構文エラー / 1
[ LINE - 場所 ] Test : LINE 1 行目付近
[ CODE - 内容 ] print ( Hello, World ! )
[ INFO - 詳細 ] 宣言されていない変数「 Hello 」を呼び出しています。

--------------------------------------------------
SYNTAX ERROR - 構文エラー / 2
[ LINE - 場所 ] Test : LINE 1 行目付近
[ CODE - 内容 ] print ( Hello, World ! )
[ INFO - 詳細 ] 式を解釈できませんでした。式が正しい形をしていない可能性があります。


このように 画面が青くなった時は、プログラムの記述内容や動作にエラーがあり、実行できなかった 事を意味しています。 エラーの詳細を示すエラーメッセージが表示されています。 その内容から、やはり「 Hello, World ! 」を式として解釈しようとしたものの、 そもそも式ではないので、当然ながら失敗してしまった事がわかります。「 " 」を忘れないよう気を付けましょう。

複数の処理は、「 ; 」記号で区切る

「 ; 」記号は、一つの処理の終わりのしるし !

さてここまでで、最初のプログラム 「 print ( "Hello, World !" ) ; 」の意味は、ほとんどわかりましたね。 残っている説明は、一番後ろにある「 ; 」記号( セミコロンと呼びます ) についてだけです。

この「 ; 」記号は、一つの処理の終わり( 文末 )を意味する ものです。 プログラムの中でこの記号があると、そこから先は、そこより前とは「 別の処理 」について書いていると見なされます。 逆に言えば、以下のように、「 ; 」記号で区切って複数の処理を書ける わけです:

popup ( 1 ) ;   popup ( 2 ) ;   popup ( 3 ) ;

このプログラムを実行すると、以下のように 3 回連続で、小さなウィンドウが表示されます:

popup関数を「 ; 」記号区切りで3回使用した結果の図

この実行結果のふるまいを、プログラムを読み返しながら、頭の中で追いかけてみましょう。

まず、最初の「 ; 」記号までの内容である、「 popup ( 1 ) 」の処理が実行されます。 その結果、小さなウィンドウが起動して「 1 」と表示されます。「 OK 」を押すと、そのウィンドウが閉じます。最初の処理はこれで終わりです。

処理が終わると、コンピューターは次の処理を実行します。それは、次の「 ; 」までの内容である「 popup ( 2 ) 」です。 その結果、再びウィンドウが起動して「 2 」と表示され、ウィンドウを閉じると、この処理も終わりです。

その処理も終わったら、コンピューターはさらに次の処理を実行します。それは、さらに次の「 ; 」までの内容である「 popup ( 3 ) 」です。 その結果、ウィンドウに「 3 」と表示され、閉じると終わりです。 次は… おっと、プログラムの最後ですね。これですべての処理が終わりました。

「 ; 」記号の後では、改行するのが普通

ところで、上のプログラムは、説明の都合で 1 行に書きましたが、実はこれは少しお行儀の悪い書き方です。 実際には以下のように、「 ; 」記号のあとに改行するのが普通です:

popup ( 1 ) ;
popup ( 2 ) ;
popup ( 3 ) ;

もしかすると、改行しないほうが読みやすいと思ったでしょうか。確かに慣れるまではそうかもしれません。 でも、もっと大きなプログラムだと、数百個以上の処理を書く必要があります。 そのような場合は 1 行におさまるはずもなく、どこかで改行する事は避けられません。

となると、各行ごとに気まぐれな長さで改行するより、 毎回「 ; 」記号の後で改行するクセをつけたほうが 「 1 行 = 1 つの処理 」 となり、慣れると読みやすいのです。 たとえば「 箇条書き 」を想像してみてください。内容は1行に1個ずつ書かれているほうが、読みやすいですね。

プログラム内にコメント( メモ )を書いておこう !

以上で、最初のプログラム「 print ( "Hello, World !" ) ; 」の意味に関する説明は、すべて終わりました。 図にまとめると、以下のようになります:

Hello World のプログラムの、各部の意味を図解した様子

この内容を忘れないためには、ノートなどにメモしておくのもよいでしょうが、もっと手短な方法があります。 というのも、実はプログラムの中に、「 コメント 」という形でメモを残せるのです。 コメントは、プログラム実行時には完全に無視されるので、自由な内容を書く事ができます。

1 行のコメントは、先頭に「 // 」を付ければ OK !

まずは 1 行のコメントを書いてみましょう。それには、コメントの先頭に「 // 」を付けます:

// 以下は、画面に「 Hello, World ! 」と表示する処理 ( この行はコメント )

print ( "Hello, World !" ) ;

そうすると、実行時に「 // 」よりも後は行末まで無視されます。実際に実行してみましょう:

Hello, World !

この通り、確かにコメントを書いていない場合と、全く同じ結果ですね。

複数行のコメントは、「 /* 」と「 */ 」ではさむと楽

コメントの行数が多い場合、すべての行の先頭に「 // 」を付けてもよいのですが、それは少し面倒です。 そこで、「 /* 」と「 */ 」ではさんだ中身はすべてコメントになり、実行時に無視される というルールがあります。試してみましょう:


/*
(この中はすべてコメント)
以下は、画面に「 Hello, World ! 」と表示する処理。
「 print 」というのは、画面にカッコ内の内容を表示する関数。
「 " 」記号ではさんだ中身は、式ではなく文字列になる。
「 ; 」記号は、処理の終わり( 文末 )の印。
*/


print ( "Hello, World !" ) ;

実行結果は先ほどと全く同じです。長いコメントを書く場合に楽ですね。

どれくらいの頻度・分量でコメントを書くべきかというのは、個人差もあり、しばしば議論の対象にもなります。 しかし、少なくともプログラミングに慣れるまでは、マメに書いておくのがよいでしょう。 実はコメントを書くのは結構面倒なので、全く書かないクセが付きがちだからです。