情報基礎演習II − 第1回


1.プログラムの作り方


コンピュータのプログラムとは、 コンピュータが行う仕事の手順を示した手順書のようなものです。 ところが、コンピュータは人間の言葉を理解できないので、 この手順書はコンピュータの言葉(機械語)で書く必要があります。 とは言っても、人間が直接機械語でプログラムを書くのは、 かなり面倒な作業になります。

そこで、 普通はより人間の言葉に近い文法の言語を使って手順書を書き、 それを機械語に翻訳してコンピュータに与えるという手段を用います。 この翻訳の仕方には逐次式(インタプリタ)と 一括式(コンパイラ)という2つの方法があります。 一般にコンパイラ方式の方が、 作成したプログラムを実行するときの性能が良いと考えられています。

このような目的で人間が設計した言語を プログラミング言語と言います。 これには目的に応じて様々なものが開発されていますが、 C言語およびそれを改良したC++言語は、 汎用性があり性能も良いため、 現在のソフトウェア開発用の言語として、 最もポピュラーなもののひとつです。

この授業ではC言語によるプログラム作成について学びます。 プログラム作成の際の基本的な手順は、 次のようになります。

  1. テキストエディタを使って、 人間が理解できる形式のプログラム (ソースプログラム)を作成します。 これをファイルとして保存します (ソースファイル)。

  2. コンパイラを使って、 ソースファイルをコンピュータが理解できる形式のプログラム (オブジェクトプログラム)に変換し、 これをファイルとして保存します (オブジェクトファイル)。 この作業をコンパイルと呼びます。

  3. リンカを使って、 オブジェクトプログラムに 他のオブジェクトプログラムやライブラリプログラム (最初から用意されているプログラムの部品)を結合し、 コンピュータによって実行できる形式のプログラム (実行プログラム)を作成します。 これをファイルとして保存します (実行ファイル)。 この作業をリンクと呼びます。

この処理の流れを図で表すと、 こんな感じ になります。

なお、cc コマンド(後で解説します)を使用した場合、 リンクはコンパイルに引き続いて自動的に実行されます。


2.ソースプログラムの作成


テキストエディタ mule を使って、ソースプログラムを作成します。 ここではファイル名を hello.c としてください。 C言語のソースファイルのファイル名の末尾には ".c" を付けることになっています。
% mule hello.c
上の % はプロンプトと呼ばれ、 コンピュータが指令(コマンド)を待っていることを示しています。 みなさんの端末では indy??% のようになっているかも知れません。 % の右側の mule hello.c の部分をタイプしたあと、 改行 (Enter) をタイプしてください。

mule が起動し、mule のウィンドウが現われると思います。 おそらくまだ hello.c というファイルが存在しないので、 画面の最下行に (New File) と表示されているはずです。 これはそのファイルを新規に作成することを示します。

ここでタイプした文字が画面上の黒い四角(カーソル)の位置に現れます。 次のC言語のプログラムをタイプしてください。 このプログラムは「何もしない」プログラムです。
main()
{
}
プログラムには 日本語用の文字 は使用できません。
キー操作("C-" は Ctrl キーを押しながらと言う意味)
打ち間違えたら Backspace か Del のどちらか(設定によって変わります)
右に動かすには C-f または →
左に動かすには C-b または →
上に動かすには C-p または ↑
下に動かすには C-n または ↓
1行空けるには C-o
右側を消すには C-k
消した内容を復活するには C-y
変更を取り消すには C-_ または C-x u
操作を中止するには C-g
mule を修了するには C-x C-c (C-x をタイプした後、C-c をタイプする)
全部タイプできたら C-x C-c をタイプして mule を終了してください。 ファイルを保存するかどうか尋ねてくるので、y をタイプしてください。

もし、なんかわけの分からない状態になったら、 C-g を数回タイプしてみてください。

これで hello.c というファイルが作られます。 実際にファイルが作成されているかどうか、 ls コマンドを使って調べてみましょう。 ls コマンドは、 「今あなたがいる場所」にあるファイルの一覧を表示します。 そこにはもしかしたら他のファイルもあるかも知れませんが、 今作った "hello.c" というファイルもその中に含まれているはずです。

% ls
. . . hello.c . . .

3.ソースプログラムのコンパイル


cc コマンドによって、hello.c をコンパイルします。
% cc hello.c
% (エラーがなければ、何も表示されない)
これで a.out というファイルが作成されます。 これが実行ファイルです。
% ls
. . . a.out . . . hello.c . . .
ここで、もし エラー が見つかると、a.out は作成されません。 その場合はソースプログラム hello.c をもう一度良く見直して、 もう一度コンパイルしてください。 ソースプログラムの修正の仕方は 5. を見てください。

なお、ここではコンパイルに引き続いて自動的にリンクが行われるため、 オブジェクトファイルは作成されません。


4.プログラムの実行


作成された a.out を実行してみましょう。
% a.out
% (何もしないプログラムなので、何も表示されない)

5.ソースプログラムの修正


再度 mule を使って、hello.c を編集します。
% mule hello.c
今度は hello.c が存在するので、 その内容が表示されると思います。
{ と } の間にプログラムを書きましょう。
main()
{
    printf("Hello!\n");
}
C言語では、 プログラムの単位(と呼びます)ごとに、 区切り記号として ;(セミコロン)を置きます。 また追加する部分が 字下げ されていることに注意してください。 タイプできたら先ほどと同様に mule を終了し、 ファイルを保存してください。
% ls
. . . a.out . . . hello.c hello.c~ . . .
(hello.c~ は修正前の内容のバックアップ)
このファイルをもう一度コンパイルします。
% cc hello.c
% (エラーがなければ、何も表示されない)
正常にコンパイルできれば、a.out を実行してください。
% a.out
Hello!
%
なお、プログラムの修正をする度に mule を起動するのが面倒なときは、 mule を バックグラウンドで起動 すると便利です。

■課題1■

■課題2■