Hello, C
まず画面に文字を出します
このコースでは、全 66 回をかけて 成績管理CLI という 1 本のプログラムを育てていきます。学生の名前と点数を受け取り、平均を出し、ランクを判定し、最後はファイルに保存できるところまで持っていきます。その第一歩が、画面に文字を出すことです。
C 言語で画面に文字を出すには printf を使います。まずは動くものを丸ごと見てください。
#include <stdio.h>
int main(void) {
printf("成績管理システム\n");
return 0;
}実行すると 成績管理システム と 1 行出ます。今の段階では、#include と int main(void) と return 0 の意味は分からなくて構いません。この 3 つは第 3 回でまとめて分解します。今回覚えるのは真ん中の 1 行だけです。
printf の書き方
printf は print formatted の略で、「書式を指定して印字する」という意味です。丸カッコの中にダブルクォートで囲んだ文字を書くと、それがそのまま画面に出ます。
printf("点数を登録します\n");注意する点が 2 つあります。
1 つ目は、文の終わりに セミコロン ; が要ることです。C では文の切れ目を改行ではなくセミコロンで表します。付け忘れると、次の行とつながった 1 つの文だと解釈されて、意味の分からない場所でエラーが出ます。これは第 5 回で実際に体験します。
2 つ目は、行末の \n です。これは「ここで改行する」という意味の合図で、バックスラッシュと小文字の n の 2 文字で 1 セットです。C の printf は自動で改行してくれないので、これを書かないと次の出力が同じ行にくっついて出ます。
printf("成績管理");
printf("システム\n");これは 成績管理システム と 1 行で出ます。\n を書いた場所だけで行が変わる、と考えてください。
ダブルクォートの中と外
ダブルクォートの内側は、C にとっては「ただの文字の並び」です。中に日本語を書いても、スペースを入れても、そのまま出ます。逆に外側は C の文法が効く場所なので、日本語を書くとエラーになります。この内と外の区別は、これから毎回出てきます。
もうひとつ、C は大文字と小文字を厳密に区別します。printf を Printf と書くと、コンパイラは別の名前だと判断して「そんなものは知りません」と怒ります。行の先頭を大文字にする書き癖がある人は、ここでよくつまずきます。
書いた順に、上から実行されます
main の { と } にはさまれた中身は、書いた順に 1 行ずつ実行されます。
printf("成績管理システム\n");
printf("起動しました\n");この 2 行なら、必ず 成績管理システム が先、起動しました が後の順で出ます。当たり前に見えますが、この「上から順に、1 行ずつ」という考え方が、第 3 章の条件分岐や第 4 章の繰り返しで崩れていく前提になります。今のうちに、実行の流れを指で追う癖を付けておいてください。
なお、行頭の空白は C にとっては意味がありません。printf の前に半角スペースが 4 つ入っているのは、main の中身であることを人間の目に分かりやすくするためだけの習慣です。この字下げのことをインデントと呼びます。無くても動きますが、読みにくいコードは自分自身が困るので、最初からそろえておきましょう。
では、起動メッセージを 2 行出すところから始めましょう。
要件
- 2行目に 起動しました と表示する
- printf を使い、行の終わりに \n を書く
- 文の終わりにセミコロンを付ける
入出力例
main("") → "成績管理システム
起動しました"