bcc32でのc言語復習

本演習はWindowsXP上の環境で行います。

PCは、本体内蔵のHDDにはシステムとアプリケーションが入っています。
なお、内蔵のC,Dドライブは起動ごとに初期設定が復帰されますので、
C,Dドライブへのデータの保存はできません。というか、保存しても残りません。

そのかわり、ネットワークドライブとしてHドライブに皆さんのホームディレクトリがマウントされています。
授業で使用するデータやメールなどは、こちらに保存してください。


本演習でのコンパイラ

演習室のPCには各種のコンパイラが用意されていますが、
情報処理3では、情報処理2とおなじ、Borland社のコマンドラインコンパイラ bcc32.exeを使います。

使い方:
コマンドプロンプトを起動し、キーボードから
bcc32 hoge.c<enter>
と入力する。
hoge.cはコンパイルしたいソースファイルの名前です。

コンパイルがとおれば自動的にリンカが起動して、 実行形式ファイル hoge.exe ができます。
できあがったファイルは、 "hoge<enter>" で実行できます。



今回の演習内容

情報処理2でも、演習用の作業フォルダを用意しましたが、情報処理3でも新しく準備しましょう。

 まずプログラミングの作業環境を作ります。
h:\MyDocument の中に新規フォルダをつくります。
そのフォルダの名前をprogrammingとしてください。

h:\MyDocument\programming\
のフォルダ下にプログラムソースをおくことにします。

つぎに、bcc32をつかうために、Dosのコマンドプロンプトを起動するのですが、
そのためのショートカットを以下の手順で用意します。
#情報処理2の時に用意したショーットカットの”作業フォルダ”だけ変更してもよいです。

1.
スタートメニュー>>プログラム>>アクセサリ>>コマンドプロンプトを選び、



選んだら右クリックします。



表示されたメニューの中の"コピー"を選んで左クリックします。

次に、h:\MyDocument\programming\の中に入ります。
そして、そこでマウスを右クリックし、”貼り付け”を行います。




すると、h:\MyDocument\programming内にコマンドプロンプトのショートカットができます。



コマンドプロンプトを選んで右クリックし、プロパティを選びます。



すると次のような窓があらわれます。


この、"作業フォルダ”を ”h:\MyDocument\programming” としてください。
そして適応ボタンをおして、OKボタンを押すと、準備終了です。

この作業のあと、コマンドプロンプトをダブルクリックして起動してください。



このように表示されれば、OKです(図は三輪の環境のため、Gドライブになっています)。
あとは、このプロンプトでbcc32を起動すればOKです。

同様に、エディタTeraPadのショーットカットも調整しておいてください。



コマンド と コマンドライン引数


ユーザーとOSとの間を取り持つプログラムをシェルといいます。
Windows2000では、コマンドプロンプトがシェルになります。
シェルは、ユーザーからの入力をOSに伝えるてくれます。

シェルでコマンドを扱う場合、コマンドにつづけてパラメータが与えられることがあります。
これをコマンドライン引数といいます。
例えば、bcc32でコンパイルを行う場合、

bcc32     hoge.c
コマンド   引数

となります。
c言語では、コマンドライン引数を、main関数に与えられる引数として扱うことが出来ます。
コンパイルしたプログラムをシェル(コマンドプロンプト)で呼び出す場合、
プログラム名に続けて打ち込んだパラメータはシェルによってプログラムに渡されます。
このときプログラム側では、パラメータをmain関数の引数として扱うことが出来ます。

例:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
   
    for (i = 0;i < argc;i++)
        printf("%d: %s \n",i,argv[i]);

    return argc;
}
ここで、argcやargvは特別な変数名で、コマンドライン引数を扱うにはこの名前を使います。

argcには、シェルで入力されたプログラムの名前とパラメータ全部の個数が代入されてきます。
このとき、プログラム名も一個として数えられるので、argcは常に1以上です。

argvには、シェルで入力されたプログラムの名前とパラメータ全部が文字列として代入されています。
argvは、プログラムが実行されるまで、文字列が何個入力されるかわからないし、
また、それぞれの文字列の長さがわからないので、char *argv[]といった特別な書き方をしています。
これは、”長さが判らない文字列へのポインタ”という意味です。
長さが判らないけど、複数の文字列をつかいますよ、っということになります。



今回は諸君の理解度を知る為に、以下の練習問題を各自で行なってください。
また、最後の課題のソースプログラムと実行結果をメールで提出してください。
できるところまででいいですが、わからない点は授業中に教官に質問してください。
学生同士で相談してもよいです。 ただし、丸写しは認めません。

提出期限は、4/20のPM01:00までです。


課題:

入出力、forループ 教科書 p.28-44、53
1.画面に自分の名前を10回連続表示するプログラム(一回の動作)。
printf,forループ

2コマンドライン引数として、起動時にキーボードから数値データ(整数)を2つ入力して、
二つの数値の和・差・積・商と余りを計算して表示するプログラム。
#コマンドライン引数で計算するデータを与えます。
sscanf,printf
sscanfは、string(文字列)からデータを読み込むバージョンのscanfです。

if 分岐 教科書p.48-52

3.キーボードから数値データAとB(ともに整数)を入力し、
 その大小関係を判定して、結果を画面に表示するプログラム(一回の動作)。
scanf(gets&sscanf),if〜else,printf

数学関数,配列 教科書 p.211-213,68-73

4.等比級数の和を計算し、表示するプログラム(一回の動作)。
ヒント:初項 aと公比 r、項数nをキーボードから入力し、その初項 a から第n項までの和 s を計算させる。