C言語プログラムの書き方
Hello Worldプログラムを見ながら進めよう。
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
最初に覚えるべきこと
- プログラムは半角文字で書く(一部例外あり)
- 1行目に「#include <ヘッダファイル名>」と書く(Hello Worldプログラムの場合、ヘッダファイル名は stdio.h)
- その下に「int main(void)」と書く
- その右あるいは下に波括弧の開き{ を書く
- 波括弧{ }の中に本文を書く
- 波括弧を閉じる直前に「return 0;」と書く
プログラムは一部の例外を除いて全て半角文字で書く。
全角文字を含むプログラムは動作しないことがあるので、注意すること。
ヘッダファイルとは、プログラムの中で「ライブラリ関数」というものを使うために必要なファイルである。
上の例では「printf」というライブラリ関数を使うためにヘッダファイル「stdio.h」が必要なので、それを1行目に書いている。
printfは、画面に文字を表示するよう指示する命令文である。printfの直後の丸括弧( )の中にダブルクォーテーション" "で挟んで文字列を書くと、その文字列が画面に表示される。「\n」は改行を表している。
命令文の最後には必ずセミコロン;を付けなければならない。
returnも命令なので「return 0;」のように文末にセミコロンを付ける。
このように、プログラムは規則(文法)に従って書かなければならない。
今後、様々な文法を学んでいくことになる。
改行と字下げ
C言語では、改行や字下げは無視されることがある。
例えば、Hello worldプログラムで、無視されている字下げを削除すると次のようになるが、
元々無視されていたものを消しただけなので、動作に影響はない。
しかし、このような書き方はよくない。
//悪い例(字下げをしていない)
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
プログラムは見やすく書かなければならず、そのために改行と字下げを適切に入れるのが良い書き方である。
改行・字下げの入れ方には人によって多少の違いはあるが、一般的には
- 1つの文を書いたら改行し、
- 波括弧{}の内側を字下げする
のが良いとされている(冒頭のプログラム例はそのように書いている)。
字下げはキーボード左側のTabキーで行なう。
今後、この2つの条件を守ってプログラムを書くこと。
プログラムの間違いの見付け方
プログラミングに間違いは付き物である。
プログラムは一字でも違うと正しく動作しないことが多いので、間違っている箇所を見付けて正しく修正しなければならない。
その作業はプログラムが長いほど大変になる。
ここでは、プログラムの間違い探しの助けとなる方法を2つ紹介する。
(1) コンパイル時のエラーメッセージ
EasyIDECは「プログラム実行」ボタンが押されるとコンパイルした後で実行(黒いウィンドウ)へと進む。
しかし、プログラムに間違いがあってコンパイルできない時は、実行へは進まず「コンパイルエラー」タブにエラーメッセージを表示する。
そこには間違いの場所と理由が書かれている。
しかし、それが実態の通りとは限らず、むしろ実態とは異なる場所や理由が表示されることが多い。
例えば、次のプログラムは5行目の行末にセミコロン「;」が付いておらず、これが原因で動作しない。
#include <stdio.h>
int main(void)
{
printf("hello, world\n") ←行末にセミコロン「;」がない
return 0;
}
これに対するEasyIDECのエラーメッセージはこうである。
ファイル「C:\Users\user\Desktop\easyidec/project/Hello/main.c」の「6」行目:プログラムの記述ミス
';' expected (got "return")
「;」についての指摘は正しいが、場所が6行目になってしまっている。
この例のように、エラーメッセージが示す行番号は、実際に間違っている箇所よりも下の行のことが多い。
逆に言えば、エラーメッセージが指す行だけでなく、上の行も探すと間違いを見付けやすい。
(2) 生成AIに質問する
この方法は、エラーメッセージを参考に間違いを探した後、どうしても見付からない時だけ利用すること。
ここではMicrosoft Copilotを紹介する(他の生成AIは試してない)。
まず、プログラムの最上部に「//このプログラムの間違いを教えてください。」という行を追加する。
//このプログラムの間違いを教えてください。
#include <stdio.h>
int main(void)
{
printf("hello, world\n")
return 0;
}
行頭の半角の斜線2本は必要なものなので、書き忘れないよう注意。
次に、このプログラム全体を選択(Ctrl-A)してコピー(Ctrl-C)する。
Microsoft Edgeを開き、右上のCopilotボタンを押す。
そして、右下の「何でも尋ねてください」の部分をクリックしてから貼り付け(Ctrl-V)て、Enterキーを押す。
しばらく待つと回答が得られる。
私が試した範囲では、回答は正しいこともあれば間違っていることもあった。
同じ質問を2度したら回答が異なっていたこともあった。
したがって、回答をそのまま受け止めるのではなく、それを参考に自分で調べたり色々試したりして判断するように。
なお、生成AIにテストや課題の問題文を直接質問するような使い方は、決してしないこと。
それでは勉強にならない。
それに、回答が間違っている可能性もあるのだから、知識がなければ正しい回答かどうかを見分けることができないだろう。
練習問題
「こんにちは世界」と表示するプログラムを作りなさい。
(注)プログラムは基本的には半角文字で書かなければならないが、printfのダブルクォーテーション" "の中は全角文字を書いてもよい。