つくる 起動バナー
第 1 章でつくるもの
この章の締めくくりとして、成績管理CLI の 起動バナー を作ります。バナーというのは、プログラムを起動したときに最初に出る、名前とバージョンを知らせる表示のことです。実務のコマンドラインツールでもよく見かける、あの数行です。
今の持ち駒は printf と \n とセミコロンとコメントだけですが、それで十分に形になります。変数も条件分岐もまだ使いません。次の章から中身が増えていっても、この起動バナーはずっと画面の先頭に居続けます。
罫線は文字を並べただけ
バナーの上下によくある区切り線は、特別な機能ではありません。= という文字をただ並べて printf に渡しているだけです。
printf("--------\n");これで横線に見えます。文字数をそろえると表示が整い、そろっていないと途端に安っぽく見えます。ここは丁寧に数えてください。第 4 章で for を学ぶと、同じ文字を指定回数くり返す書き方ができるようになり、この手打ちから解放されます。
出力は 1 文字も違ってはいけません
この学習画面の採点は、あなたのプログラムの出力と、期待される出力を 文字単位で 突き合わせます。行末の余分な空白と、いちばん最後の改行だけは大目に見ますが、それ以外は完全一致が必要です。
つまり、次のものは全部やり直しになります。
- 全角スペースと半角スペースの取り違え
v1.0をV1.0と書く(大文字と小文字は別の文字です)- 区切り線の
=の数が 1 個多い、少ない \nの書き忘れで 2 行がくっつく
厳しく感じるかもしれませんが、これは C の性格そのものでもあります。「だいたい合っている」を認めない代わりに、書いたとおりに正確に動きます。
同じ文字列は書き写すより複製する
上下 2 本の区切り線は、まったく同じ文字列です。こういうときは、2 回目を手で打ち直さないでください。1 本目の printf の行をそのまま複製すれば、= の数がずれる余地がなくなります。
「同じものを 2 か所に手で書かない」というのは、プログラミング全体で通用する考え方です。手で書けば書くほど、片方だけ直して食い違う、という事故が起きます。第 5 章で関数を学ぶと、この複製すら 1 か所にまとめられるようになります。
詰まったときの手順
コンパイルエラーが出たら、前回の手順どおり、いちばん上のエラーの行番号を見て、その行と 1 つ上を確かめます。エラーは連鎖して増えるので、1 つ直すたびにコンパイルし直すのが結局いちばん速い進め方です。
コンパイルは通るのに不合格になるときは、文法ではなく出力の中身が違っています。期待される出力と自分の出力を、上から 1 行ずつ、目で並べて見比べてください。行数がそもそも違うなら \n の数の問題、行数は合っているのに中身が違うなら文字の打ち間違いです。この 2 つに切り分けるだけで、探す範囲がぐっと狭まります。
では、第 1 章で学んだものを全部使って、起動バナーを完成させましょう。ここで作った表示は、次の章から入力や集計の機能が増えても、ずっとプログラムの先頭に残り続けます。
要件
- 1行目と4行目は 半角の = を32個並べた区切り線にする
- 2行目に 成績管理システム v1.0 と表示する
- 3行目に 学生の名前と点数を登録して集計します と表示する
- 5行目に 起動しました と表示する
- コードのどこかに、このバナーが何かを説明するコメントを1つ書く
入出力例
main("") → "================================
成績管理システム v1.0
学生の名前と点数を登録して集計します
================================
起動しました"