Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.

Similar presentations


Presentation on theme: "プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌."— Presentation transcript:

1 プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌

2 この授業の目標 C言語による、より規模の大きいプログラムの作成(複数の関数、複数のファイルからなるプログラム)
標準ライブラリを使ったプログラミング プログラミングの楽しさを知る

3 評価 ほぼ毎回課すレポート 中間・期末試験 を評価の対象にします. 出席は加味しません.

4 プログラミング? プログラム:コンピュータに、処理の仕方を指示するもの プログラミング:プログラムを作成すること
プログラミング言語:プログラムを作成するための人工言語.C言語の他、C++, Java, Lisp, Perl, Ruby, Pythonなど様々なものがある プログラミングは楽しい!

5 この授業を受けるに当たって 以下の知識・技能を仮定します Microsoft Windowsの基本概念・基本操作
秀丸エディタ、AL-Mail, Microsoft Office各ソフトウエアの基本操作 Cygwin環境の基本概念・基本操作 ファイルの作成、コンパイル、実行の仕方 プログラミング演習Iで学んだ程度のC言語の知識(高橋麻奈「やさしいC」第7章まで)

6 前回までの復習 C言語で書かれたプログラムは、原則として、main()関数と、0個以上のそれ以外の関数からなる
int main (void) int main (int ac, char **av) という引数、返値を持つ

7 前回までの復習2 関数の定義は、 という形式であった(括弧内は引数リスト) 関数呼び出しは、プログラムの中で、 という形式を取るのだった
返値 関数名 (型1 仮引数1, 型2 仮引数2, …) という形式であった(括弧内は引数リスト) 関数呼び出しは、プログラムの中で、 関数名 (引数1, 引数2, …) という形式を取るのだった 関数から値を、呼び出し元に戻すことができる(return 式;)

8 前回までの復習3 Cygwinってなんだっけ? Cygwinの使い方 Cygwinはfree!
パソコンを持っている人は、手に入れて使ってみよう パソコンを持っている人は、 LinuxやFreeBSDにチャレンジしてみよう!

9 今日学ぶこと 関数の中で変数を宣言し、使えるようになる 関数の中で定義された変数のスコープ(可視範囲)について理解する
変数の寿命について理解する 教科書8.6から(p.249~)

10 ローカル変数・グローバル変数 例えば、今までmain()関数内で定義してきた変数は、main()にローカルな変数
int main (void) { int a; /* main()内でローカルな変数 */ } 関数の外側でも変数の定義が出来る! それがグローバル変数

11 グローバル変数(教科書図8-14) int a; /* グローバル変数 */ void func (void) {
int b = 1; /* func()にローカルな変数 */ } int main (void)

12 スコープ(可視範囲) Sample10.c (p.250)を入力し、コンパイル・実行してみよう グローバル変数aは、すべての関数から可視
ローカル変数は、そのローカル変数が定義された関数内でのみ、可視 変数の名前が通用する範囲を、スコープ(scope)という 教科書図8-15参照

13 ローカル変数の名前が重なると? 同じ関数内で名前が重なると、重複がコンパイル時に検出される
異なる関数内で、それぞれにローカルな変数が同じ名前を持つことは、構わない

14 ローカル変数とグローバル変数で名前が重なると?
グローバル変数が、ローカル変数によって「隠蔽」されるように振る舞う(教科書図8-17, p.255)

15 記憶寿命 変数(に限らず、任意のオブジェクト)は、「寿命」、即ち、そのオブジェクトが存在し、最後に保存された値を保っていることが保証される期間、をもつ. 変数の一生 (1)メモリが確保される (2)値が格納される (3)破棄される

16 いつメモリが確保・破棄される? ローカル変数の場合 グローバル変数の場合 関数内で、その変数の宣言箇所に実行がさしかかったとき確保される
その関数から、実行が離れるとき破棄される グローバル変数の場合 プログラムの実行が始まるときに、すべてのグローバル変数が確保される プログラムの終了時に破棄される

17 例で確認しよう 変数の一生を確認するために、Sample11.cを入力し、コンパイル・実行してみよう!

18 static変数の場合 ローカル変数を宣言するときに、static というstrage class specifierをつけると、
プログラムの実行が始まるときに確保され プログラムの実行が終わるときに破棄される 関数から実行が離れるときも、破棄されない! Sample11.cの変数cを参照

19 今日学んだこと 変数の可視範囲 ローカル変数、staticなローカル変数 グローバル変数 変数の寿命

20 レポート課題 次のスライドの/* ??? */ を補って、Fibonacci数列のはじめの幾つかの項が出力されるプログラムを完成せよ.
締め切り:2004年10月25日一杯(日本時間で) 感想などあると木村が喜びます

21 レポート課題: /* ??? */を補え int static_fib (void) { /* ??? */ int fib1 = 1;
int tmp = fib1; fib1 = fib2; fib2 = tmp + fib2; return fib2; } int main (void) { printf ("%d\n", static_fib()); return 1; }

22 レポートの書式 件名(Subject)に、プログラミング演習IIのレポートであることを明記 差出人欄(From: )に、差出人の氏名を明記
Spamメールを大量に受け取るので、これらが明記されていないメールは読まれないことがあります。そもそも当然のネチケット(neticket)です レポートの内容は、本文に記述。添付書類にしない。実行ファイルを添付しない!


Download ppt "プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌."

Similar presentations


Ads by Google