Cプログラムの作成

Cプログラムの作成
1
Cプログラムの作成
1. はじめに
1.1. コンパイラとは?
コンピュータはあらかじめ作られたプログラムを実行することにより,複雑な計算を行った
り,電子メールの読み書き,またワープロとして文書作成やゲームなどを行うことができま
す.そのようなコンピュータが直接解釈し実行できる「実行ファイル executable file」は,「機
械語 machine language」という言葉でできています.これは,0∼9とA∼Fの文字で表されたも
ので,コンピュータの内部を直接操作するようになっています.したがって,普通私たちが計
算する過程と大きくかけ離れた操作であり,「人間には極めてわかりにくい」ものです.この
機械語でできたプログラムを,直接人間が作成するのはとても大変です.またその言語形式や
内容はコンピュータによって異なります.そこで,どのようなコンピュータでも共通して使
え,なおかつ人間がプログラムを作りやすい「高級言語」が開発されました.そのなかで,現
在もっとも広く用いられているものとして「C」というプログラミング言語があります.この
授業では,このC言語を用いたプログラム作成について学習します.
コンピュータプログラム(ソフトウエア)を作成するには,まずC言語の文法にしたがって
「ソースファイル source file(拡張子.c)」を作成します.これを作成するために「エディタ
editor」というソフトウエアを使用します.
ところがコンピュータは,「機械語」でできた実行ファイル(拡張子.exe)しか直接実行す
ることが出来ません.そこで「ソースファイル」を「翻訳(コンパイルcompile)」して「オ
ブジェクトファイル object file(拡張子.obj)」を作成します.そして,このオブジェクトファ
イルに「ライブラリLibrary」を「結合(リンク Link)」することにより,最終的に実行プログ
ラムが出来上がることになります.このコンパイルするソフトが「コンパイラ compiler」で,
リンクするのが「リンカ Linker」というソフトウエアです.つまりプログラミング言語にした
がってソースファイルを作成してもコンパイル・リンクを行わなければ,実際にコンピュータ
に計算等をさせることはできません.また一般には複数のソースファイルやライブラリを組み
合わせて実行ファイルを作成しますので,どのファイルやどのライブラリを使うかをまとめた
「プロジェクトファイル(拡張子.prj)」も作成します.
C言語用のコンパイラは何種類も市販されており,それぞれ使用法が異なります.この授業
では,「LCC-Win32」というソフトを使用します.これはエディタ,コンパイラおよびリンカ
がすべて一体となっているもの(統合環境)で.ここではコンパイルおよびリンクという作業
を合わせて「メイクmake」もしくは「ビルド build」と表現します.
LCC-Win32は,外国製で表示がすべて英語になっています.しかしフリーソフト(無料)で
あり,自由にコピーすることができます.下記のホームページからダウンロードできますの
で,自分のパソコンを持っている人は,LCC-Win32をインストールしておいてください.
LCC-Win32のURL http://www.cs.virginia.edu/ lcc-win32/
1.2. Cプログラムの作成の流れ
(1) ソースファイルの作成 (ここでプログラムを作成します)
(2) プロジェクトファイルの作成
(3) ソースファイルのコンパイル
(4) オブジェクトファイルのリンク
(5) 実行ファイルの実行 (ここではじめて結果が得られます)
(3),(4)は通常,自動的に連続して行われます.しかし,ソースファイルの中に文法のミスが
あると(2)でチェックされ,そこで作業は一旦中断します.その場合は(1)に戻り,ソースファイ
ルの間違いを修正して,再度コンパイルしなければなりません(このときは(2)は必要ありませ
ん).また実際に実行プログラムが作成できても,プログラムの内容に間違いがあれば,目的
とする計算が正しくできないことになります.その場合も(1)に戻ってソースファイルの修正を
行い,再度コンパイルすることになります.
コンピュータはプログラムに忠実に計算処理を行いますので,ほんのわずかなミスでも正し
い結果は得られません.プログラムは,隅々まで注意して作成してください.
Cプログラムの作成
2
2. プログラムの作成
2.1. 保存フォルダの準備
実習室では,個人が作成したプログラムは「E:User」ドライブに保存することになっていま
す.この授業では,まずE:ドライブに「LCC」というフォルダを作成し,この中で作業するこ
とにします.(通常は作成されています)
2.2. Weditの起動
○[スタート]→[実習]→[LCC-Win32]をクリック.
2.2. ソースファイルの作成
○[file]→[New]→[File]をクリック.
「Name?」のところで,ファイル名を入力して下さい.Cプログラムのソースファイルは,拡
張子を「.c」としてください.またファイル名の最初には「e:¥lcc¥」をつけます.
例) e:¥lcc¥hello.c
次に何も書いていないウインドウが開きますので,そこにプログラムを入力します.練習と
して下のように入力してください.なおweditでは,Cの予約語が入力されると,文字が赤く表
示されます.
プログラムの入力が終わったら,プログラムを保存します.
○[file]→[save]をクリック.
#include <stdio.h>
int main(void)
{
printf("Hello World!¥n");
return 0;
}
※Weditでは,「¥」キーをおすと「\」と表示されます.
2.3. プロジェクトファイルの作成
○[Project]→[Creat]をクリック.
「Project name?」のところで,プロジェクト名を入力して下さい.拡張子はいりません.
次に,コンパイルをするためのいくつかの設定をします.
最初に「Path」欄に「e:」と入力して下さい.次に「Output directory」欄をクリックして下さ
い.ここは自動的に「e:¥lcc」と入力されます.最後に[Create]ボタンをクリックします.
また以下のような確認のウインドウには各々次のようにしてください.
Directory e:¥lcc exist. Use it anyway? → ここは[はい(Y)].
Do you wat to use the wizard to generate the application skelton?
→ ここは[いいえ(N)].
次にコンパイルするソースファイルをオブジェクトファイルに追加します.
作成したソースファイル(ここではhello.c)をクリックし,[開く(O)]をクリックします.
すると,追加したいファイルの確認ウインドウがでますので,間違いないか確認したら
[Validate]をクリックします.もし間違えていたらファイル名をクリックした後,[Remove]
で削除します.その後[Add]で再度追加します.
次に,コンパイラ,リンカ,デバッガの設定ウインドウが開きますが,最初の段階では何も
変更することはありません.そのまま次に進みます.
Cプログラムの作成
3
2.4. ソースファイルのコンパイル
プロジェクトファイルの設定が完了したら,次にコンパイル・リンクを行います.
○[Compiler]→[Make]をクリック.
Makeを実行すると,weditウィンドウの下に作業状況が表示されます.「buit sucessfully」と
表示されれば完成です.
もしソースファイルに間違いがあれば,何行目に問題があるか表示されますので,それを元
に修正します.ソースファイルのウインドウに戻って,間違いを修正します.修正がすんだら
保存して,再度コンパイルします.
※なおweditでは,簡単な文法ミスはファイル保存するときにもチェックされます. 2.5. プログラムの実行
コンパイルが完了すると実行ファイルが作成されます.実行ファイルの拡張子は「.exe」で
す.したがって「hello」というプロジェクトファイルの場合には「hello.exe」という実行ファ
イルが作成されます.
○[Compiler]→[Execute]をクリック.
プログラムを実行すると,ウインドウに実行結果が表示されます.うまく結果が得られたら
必ず何かキーを(例えばEnterキー)押してウインドウを閉じてください.実行結果がおかしい
場合はソースファイルに間違いがありますので修正を行います.またプログラムの実行は何度
でもできます.
なお実行ファイルは,e:¥lccのフォルダ内に作成されています.そのアイコンをダブルクリッ
クしても同様にプログラムを実行することができます.
2.6. ソースファイルの印刷
○印刷する前にプリンタの電源を入れ,「プリント可」のランプがつくまで待つ.
○[File]→[Print]をクリック.
2.7. weditの終了
演習が済んだら,weditを終了します.
○[File]→[Quit]をクリック.
2.8. プログラムをフロッピーディスクへコピーする
演習で作成したプログラムは,「E:」ドライブに保存されています.演習室のコンピュータ
は多くの人が使用しますので,せっかく作ったプログラムが誰かに消されるかもしれません.
また,コンピュータの保守のため定期的に内容が消去されます.したがっって,自分で作成し
たソースファイルは,各自のフロッピーディスクにコピーしておいて下さい.
ファイルのコピーは次のようにして下さい.
○ディスクトップの「マイコンピュータ」をダブルクリック.
○「マイコンピュータ」内の「User(E:)」をダブルクリック.
○コンピュータ本体のディスクドライブにフォーマットしてあるディスクを挿入.
○「User(E:)」の「LCC」フォルダ中に保存されているソースファイル(例えばhello.c)を,
「3.5インチFD(A:)」にドラッグしてコピー.
また,フロッピーディスクに保存してあるプログラムを使って,プログラムを修正・編集す
る場合は,「3.5インチFD(A:)」をダブルクリックしてウインドウを開き,そのプログラムを
「User(E:)」の「LCC」フォルダにコピーしてください.その後プログラム作成を行います.
フロッピーディスクのソースファイルを直接編集してプログラムを作成することも可能です
が,コンピュータの構成を十分に理解していないと,実行ファイルを作成することができない
場合がありますので,必ず「User(E:)」にコピーしてから作業するようにして下さい.
Cプログラムの作成
4
2.9. 保存したファイルの修正およびコンパイル
一度保存したファイルを,再度読み込んで修正する場合は,
○[File]→[Open]をクリック.
その後,プロジェクトファイルの作成をします.
保存されたファイルを修正する必要がない場合は,そのままプロジェクトファイルを作成し
てコンパイルします.
☆上記の手順をホームページには図解で説明しています.
http://saiya.msre.kumamoto-u.ac.jp/ ms/progcd/
[付録] LCC-Win32のインストール
1.入手法法
a) インターネットからダウンロードする
以下のホームページから,コンパイラ本体やマニュアル(英語)がダウンロードできます.
http://www.cs.virginia.edu/ lcc-win32/
b) フロッピーによる配付
授業中にコンパイラ本体を配付します.なおコンパイラは約3.1MBありますので,そのまま
ではフロッピーにコピーできませんので分割したものを配付します.(フロッピー3枚分)
[配付内容]
lccwin32.000, lccwin32.000, lccwin32.002,lccwin32.bat
[インストール方法]
1.上記の3つのファイルをコンピュータのハードディスク(例えばC:¥)にコピーする.
2.lccwin32.BATファイルを実行する(ダブルクリックする).
3.DOSプロンプトウインドウが開き,復元が完了したら,ウインドウを閉じる.
4.以上の操作により,lccwin32.exeファイルが出来ていることを確認する.
5.lccwin32.exeを実行し,LCC-Win32コンパイラをインストールする.
インストールのメッセージは全て英語ですが,「Yes」,「Next」のボタンを順次クリックす
るだけで大丈夫です.インストールが完了すると「LCC」フォルダが作成されています.
6.c:¥にインストールした場合には,例えば2ページの「path」やファイル名の最初に入力する
「e:」を「c:」と読み替えて操作してください.
※マニュアルが必要な場合には,上記のホームページからlccdoc.exeをダウンロードし実行し,
マニュアルをインストールする.なお,マニュアルを読むためにはMicrosoft Wordが必要です.
(部品棚)
ライブラリ
(発車!)
プログラム実行
(完成車)
実行ファイル
(組立)
リンク
(部品)
オブジェクトファイル
(部品製造)
コンパイル
(工程表)
プロジェクトファイル
プログラム作成のイメージ
(設計図)
ソースファイル
Cプログラムの作成
5
3.プログラム入力練習
練習1 下の例題を参考にして,自分の名前を"My Name is Taro Chinou.(自分の名前)"と表示
するプログラムを作成せよ.(ファイル名:p01xxxtxxxx.c,プロジェクト名:
p01xxxtxxxx.xxxtxxxxは学生番号)
#include <stdio.h>
int main(void)
{
printf("Hello World!¥n");
return 0;
}
練習2 下のプログラムを入力し,実行せよ.(ファイル名:p02xxxtxxxx.c,プロジェクト
名: p02xxxtxxxx.xxxtxxxxは学生番号)
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,d,i;
for(d=0;d=360;d+=20){
a=sin(d/180.0*3.14)*10+11;
for(i=0;i<a;i++)
printf(" ");
printf("*¥n");
}
return 0;
}