プログラミング言語を学ぶ唯一の道は、まずはプログラムを書いてみることです。
コンピュータの世界ではどの言語でも、
hello,world
という単語を印字しなさいという、お決まりの例題があります。
これをやってみましょう。
プログラムを作成します
プログラムはC言語では以下のようになります。
#include <stdio.h>
main()
{
printf("Hello, World\n");
}
プログラムは半角のアルファベット、数字で入力します。
これをエディターで入力し、hello.cというファイル名で保存します。
ファイル名はCのプログラムソースと分かるように、「xxx.c」という名前にしなくてはいけません。このファイルをソースファイルと呼びます。
この例では以下のように「C:\clang\Mytest\hello.c」に保存しています。
コンパイルして実行します
コマンドプロンプトを起動します
windowsの検索ボックス(ここに入力して検索)に「cmd」と入力し[Enter]キーを押します。
表示された、コマンドプロンプト アプリをクックして起動します。
作成したプログラムのあるフォルダーに移動するために、コマンドプロンプト画面で以下を入力します。
>c: >cd \clang\Mytest >dir
番号 | 入力 | 動作 |
---|---|---|
① | C: | ディスクドライブを移動する先を入力します。移動する必要がなければ不要です |
② | cd XXX | 指定したフォルダーXXXに移動します |
③ | dir | フォルダーにあるファイルを表示します |
フォルダーを移動して、hello.cがあることが確認できました。
コンパイルして実行します
コマンドプロンプトで以下を入力します。
>gcc hello.c >a >a.exe
「gcc hello.c」は、gccコンパイラーでhello.cをコンパイルしなさいという意味です。
コンパイルした結果、「a.exe」という実行モジュール(実行可能なファイル)が作成されます。
図ではwarningメッセージがでていますが、ここでは無視してください。
「a.exe」という実行モジュールを実行するには、「a」または「a.exe」と入力します(.exeは省略可能なため)。図のようにどちらで実行しても同じです。
また上図ではコンパイル時に実行モジュールの名前を指定しなかったため、「a.exe」が作成されましたが、通常は以下のように名前を指定します。
>gcc -o hello hello.c >dir >hello
「gcc -o hello hello.c」の意味ですが、
「-o hello」:hellloという名前の実行モジュールを作成しなさい。
「hello.c」:ソースファイルはhello.cです。
となります。
「hello.exe」という実行モジュールが作成されています。
「hello」と入力し実行した結果は上の例と同じですね。
プログラムをよく見てみましょう
1 #include <stdio.h> 2 3 main() 4 { 5 printf("Hello, World\n"); 6 }
1行目の #include は、このプログラムをコンパイルするために必要な情報がstdio.hに書いてあるので取り込んで、と指示するものです。
ここでは、必ず1行目に書いておく「おまじない」だと理解しておいてください。
後の章で説明があります。
2行目は見やすさのために空行を設けています。
1行目のようなコンパイルに必要な情報と、プログラム内容との境目には空行を設ける約束があります。
3行目のmain()ですが、C言語で書かれたプログラムを実行すると「main関数」が実行されます。
1つのプログラムには必ず1つの「main関数」が必要です。
main関数がプログラムの実体です。また関数の開始は{で終了は}です。
ですから、このmain関数の開始は4行目で終了は6行目であり、中身は5行目ということになります。
このプログラムには、printfという1つの文だけが入っているということです。
ここで関数とは一連の処理に名前を付けたものであり、数学の関数とは別物です。
5行目の文は端末(コマンドプロンプト)に文字を表示する機能を持つ、printf関数を呼び出しています。
printfは、端末に"(ダブルクォーテーション)で囲まれた文字列を表示する機能を持つ関数です。
ですから、「Hello, World\n」文字列を表示するということですね。
ここで見慣れない「\n」というものがあります。
Linuxではバックスラッシュとn、windowsではエンとnです。
LinuxのバックスラッシュはWindowsではエンで表示されます。同じものと考えてください。
この「\n」は改行を表す特殊文字です。
以下のプログラムを見てください。
これを実行すると、Worldまでは前記のプログラムの実行結果と同じになります。
「Hello,」、「World」とprintを呼び出しても、端末に書かれる文字は右横なのです。
「\n」を出力して初めて次の行になるのです。改行は自動的に行われません。
printfを分けて呼び出しても結果は同じです。
改行のような目に見えない特殊文字のことをエスケープシーケンスといいます。
このprintfと改行は、頻繁に使用するものなので覚えておいてください。
コメント