以下の3つの操作を一緒に行うことで、一連の流れを掴もう
1.ソースプログラムをエディタで書く
2.ターミナルにて、コマンドを入力してコンパイルする
3.ターミナルにて、実行形式ファイルを実行する
カレントディレクトリーが「/workspace/KobeUniProenshu_1_2021 」で「5kaime」という新規作業ディレクトリーを作成して下さい
mkdir 5kaime
「cd」コマンドを使って5回目の「5kaime」ディレクトリに移動する。
5kaimeを選択した状態
「5kaime」を選択して右クリック(マウスの右のボタンをクリック)→「New File」をクリック
ポップアップのウィンドウでファイルの名前「test73.c」を入力
「要注意!」:
1.保存先は「5kaime」であること
2.実際「test73」の部分は何でも良いが、拡張子「.c」は絶対に忘れてはならない。
拡張子「.c」によって、このソースプログラムがC言語で書かれているを判断するためである。
C言語ソースプログラムを入力する。
/*~*/で囲まれた範囲(赤い枠内の内容)はコメント文と呼ばれ、計算機の処理には反映されない、ソースコードの説明に使われる
インデント(字下げともいい、緑の枠の部分)は、プログラムの構造がつかみやすくなるための余白である。(詳しくは教科書p105).
インデントの入力方法:キーボード上に「tab」というボタンを一回押して下さい。
ソースプログラムの意味について少しだけ。
考えた処理方法は以下だった。
step.1 箱a,b,cを準備する。
step.2 箱aの中身を3, bの中身を7, cを0に。
step.3 箱cにbを加える。
step.4 箱aの中身を1減らす。
step.5 箱aの中身が0なら計算終了。
step.6 step.3に戻る。
2.下図右のように、そのプログラムのファイルが開いている状態で「File」→「save」(上書き)
要注意:画面中に「File」、「Edit」、「Selection」...というmenu bar(下図の赤枠以内のもの)がない場合、
https://kobeucsenshu.github.io/ideinfo/gitpod/howto.html
の「View: 開発画面」に参照して下さい。
問題:File→Saveを押しても保存されないトラブル
対処法:一度gitpod上で他のファイルを表示してから、再度保存したいファイルを表示し、Saveすると解決
次にコンパイルという作業を行います。
ターミナルで操作してください。
次の図中の操作を行います。
注意喚起:コンパイルの前にソースプログラムの保存(save)が要確認 (そのプログラムのファイルが開いている状態で「File」→「save」)
図中の②と③は逆でも、処理は同じである。
もし図中の②を削除して「gcc test73.c」と実行すると「a.out」という実行形式ファイルが作成される。これはデフォルトのファイルネームなだけで、「test73」と同じものである。
ここではエラー例を取り上げる。
(エラー例1) 下図のように、コンパイル時のエラー表示を参考に、Emacsの画面に戻って、エラー箇所を探す。
エラーが改善されたと思ったら、忘れずに(上書き)保存を行う。そして、ターミナルに行って、もう一度「gcc -o test73 test73.c」を入力してコンパイルし直してみる。何も表示されなかったら、コンパイルは正常終了したことを意味する。
(エラー例2) 次のようなエラーは、ソースプログラムの4行目に全角(つまり日本語)が含まれていることを意味する。
test73.c: In function 'main':
test73.c:4:7: error: stray '\244' in program
対処法としては、その全角文字を削除してコンパイルし直してみる。
(エラー例3) 次のエラーは、4行目の最後に「;(セミコロン)」が無いことを意味している。
test73.c: In function 'main':
test73.c:4:1: error: expected ',' or ';' before 'LOOP'
Gtipodでは、入力した内容にはエラーが含まれる場合、エディタの画面が下図のようになる(エラー例3の場合)
エラーがあるコードのしたに赤い波が付いている。そこにマウスを置くと、エラー情報が確認できる
全部のエラーを対応していない。(つまり、エディタの画面が正常、ターミナルでエラーが出る場合もある)
また、エラーは複数表示される可能性もある。どう対処して良いか分からない場合は、教員やTAに訊いてほしい。
コンパイルの作業をまとめると、
I. ターミナルで「gcc -o test73 test73.c」を実行する。
II. エラーが出た場合は、エラー箇所と要因を参考にエディタに戻り、エラー箇所を探す。
III. エラー箇所を改善出来たら、忘れずに(上書き)保存する。
IV. ターミナルに戻り、もう一度「gcc -o test73 test73.c」を実行する。
V. 何も表示されなかったら、コンパイル成功。
コンパイルに成功すると、いよいよ実際に実行することにより計算機に命令を処理させる。
先程、ターミナルに入力したコマンド
./test73
は実際にコンパイルで生成した実行ファイルを実行するコマンドです。
「test73」は実行ファイルの名前です(lsコマンドでこのファイルの存在を確認してください。)。ファイル名の前に「./」を付けてエンター。これが「実行」です。
処理結果を表示させるために、ターミナルに
echo $?
を入力してエンター
下図のように21(7✖3)が表示されたら、正しく処理されていることを意味する。
※21ではなくて他の数字が表示される人もいるかもしれない。これは、ソースプログラムの書き方(文法)は正しいが、例えば「箱」に入れる数値がそもそも間違っている可能性がある。エディタに戻ってチェックしてみて欲しい
最後に、エディタで実行形式ファイル「test73」を開いてみて欲しい。
下図のように、全く意味の分からない文字列が表示されるだろう(機械語と呼ばれる)。
このように、人が考えた処理を計算機にさせるためには、ソースプログラム及びコンパイラを介さなければならない。