今日は、まず、C言語の書き方というものについて紹介したいと思います。
まず、前回の最後に打ち込んだプログラムを見てみましょう。
まず、前回の最後に打ち込んだプログラムを見てみましょう。
1:#include<stdio.h>
2:
3:int main(){
4: printf("hello world\n");
5: return 0;
6:}
説明しやすいようにこれからは左に行数を書いていきますが、これはプログラムを打つ際には入力しないでください。さて、各行の説明です。
まず、1行目。
これは、魔法の言葉なのです。
……冗談です。
ただ、現時点では、「C言語を書くときに、大体始めに書くものなんだ。」という認識でよいかと思います。
これについては、のちのちの回で説明するつもりですので。
まず、1行目。
これは、魔法の言葉なのです。
……冗談です。
ただ、現時点では、「C言語を書くときに、大体始めに書くものなんだ。」という認識でよいかと思います。
これについては、のちのちの回で説明するつもりですので。
2行目は見やすくするために行をあけています。
そして3行目。
これがプログラムの開始地点だと思ってください。
C言語はint main(){から始まり、最後はreturn 0; }で終わると思っておいてください。(人によってはmain(){だけでよいという人やreturn 0;はいらないという人もいるでしょうが、現在使っているエディタ・コンパイラがそれを要求するので、ご容赦ください。関数を扱うとちょっと違ってきますが、その辺もご容赦ください。)
そして3行目。
これがプログラムの開始地点だと思ってください。
C言語はint main(){から始まり、最後はreturn 0; }で終わると思っておいてください。(人によってはmain(){だけでよいという人やreturn 0;はいらないという人もいるでしょうが、現在使っているエディタ・コンパイラがそれを要求するので、ご容赦ください。関数を扱うとちょっと違ってきますが、その辺もご容赦ください。)
そして4行目。
printfというのは、その後ろの("~~~")の「~~~」の部分を画面に表示(以下出力といいます)する指示です。
なので、今回は「hello world\n」というものが出力されたわけですね。
えっ、「\nなんて表示されていない?」……そう、実はこれは見た目にはわからないのです。
\nとは、C言語の中では改行をあらわす文字なんです。
だから、見た目にはわからないですが、実は\nは出力されていたわけですね。
今回は単に1行だけの表示だったので\nがなくても問題はなかったですが、多くのものを出力するときに\nがないと、改行なしにずらーーと並べられたものが出力されてしまいます。
それでは人間が見づらいので、それならばいっそのこと改行するという指示を入れちゃおうということです。(ちなみに、他にも\tや\aなどもあり、それらはエスケープシーケンスと呼ばれていますが、その辺についての説明はしないので、気になる人は各自調べましょう)
さらに、4行目の最後の「;」の文字。
これは、日本語の「。」のようなものです。
一つの指示が終わるごとにつけられます(というか、つけないといけません)。
この「;」は、初めてプログラムを書こうとする人がよく打ち忘れるところです。
慣れている人でも、ときどき付け忘れるものです。
忘れないようにしましょう。
printfというのは、その後ろの("~~~")の「~~~」の部分を画面に表示(以下出力といいます)する指示です。
なので、今回は「hello world\n」というものが出力されたわけですね。
えっ、「\nなんて表示されていない?」……そう、実はこれは見た目にはわからないのです。
\nとは、C言語の中では改行をあらわす文字なんです。
だから、見た目にはわからないですが、実は\nは出力されていたわけですね。
今回は単に1行だけの表示だったので\nがなくても問題はなかったですが、多くのものを出力するときに\nがないと、改行なしにずらーーと並べられたものが出力されてしまいます。
それでは人間が見づらいので、それならばいっそのこと改行するという指示を入れちゃおうということです。(ちなみに、他にも\tや\aなどもあり、それらはエスケープシーケンスと呼ばれていますが、その辺についての説明はしないので、気になる人は各自調べましょう)
さらに、4行目の最後の「;」の文字。
これは、日本語の「。」のようなものです。
一つの指示が終わるごとにつけられます(というか、つけないといけません)。
この「;」は、初めてプログラムを書こうとする人がよく打ち忘れるところです。
慣れている人でも、ときどき付け忘れるものです。
忘れないようにしましょう。
5行目の部分は、「ここまで正常に動いたら、このプログラムは正しく動きましたよ」ということを示すためのものです。
return 0;は文字通り「0を返す。」というような意味になります。
「返す」の意味はさておき、0を返すということは、Cのプログラムにとって「正常だということの証明」だと思ってください。
逆に、0以外のものを返す場合は、「どこかでエラーが起こったということの証明」となります。
return 0;は文字通り「0を返す。」というような意味になります。
「返す」の意味はさておき、0を返すということは、Cのプログラムにとって「正常だということの証明」だと思ってください。
逆に、0以外のものを返す場合は、「どこかでエラーが起こったということの証明」となります。
そして、6行目で、3行目にあった「{」を閉じて、「3~6行目が一つのまとまりですよ~」ということを示したわけですね。
このように、C言語の短い言葉の中には、すごく大きな意味が含まれています。(この辺が、C言語のよいところでもあり悪いところでもあります)
2.出力
何か計算をするからには、その結果を知りたいと思うのが普通です。なので、コンピュータには計算結果を出力してもらわなければなりません。
C言語には、文字を出力するための機能が用意されています。
それが、前回のプログラムでも使ったprintfです。
文字を出力する際には
printf("出力したい文字");
という書き方をします。「"」は、ダブルクォーテーション(Windowsキーボードならシフトを押しながら2をおす)です。
これで囲われた文字が出力されます。
(プログラム例、printf.c)(←「printf.c」は私が保存のときにつけた名前)
出力されたものを見て、どこがどういう風になっているか確認しましょう。
1: #include<stdio.h>
2:
3: int main(){
4: printf("出力にはprintfを使います。\n");
5: printf("このように、行をわけると見やすくなります\n");
6: printf("このように出力しても\n途中は改行されます。\n");
7: printf("しかし、2つのprintfを使っても");
8: printf("エスケープシーケンスをつけていないと改行されません。\n");
9: return 0;
10: }
実行すると、入力した文字が出力されます。出力されたものを見て、どこがどういう風になっているか確認しましょう。
計算した結果を出力する際には、また違ったことを覚えないといけないのですが、今回はprintfで出力なんだということを覚えておいてください。
今回は練習問題をつけておくので、自分なりに考えてプログラムを作ってみましょう!
○練習問題1
あなたの名前を出力するプログラム「name.c」を作りましょう。
○練習問題2
複数のprintf文を使って、いろいろな文字を出力する「printf2.c」を作りましょう。
あなたの名前を出力するプログラム「name.c」を作りましょう。
○練習問題2
複数のprintf文を使って、いろいろな文字を出力する「printf2.c」を作りましょう。