2-1 最初のプログラム作成

プログラミング言語を学ぶ唯一の道は、まずはプログラムを書いてみることです。
コンピュータの世界ではどの言語でも、
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と改行は、頻繁に使用するものなので覚えておいてください。

コメント

タイトルとURLをコピーしました