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

Slides:



Advertisements
Similar presentations
プログラミング演習 II 2005 年 1 月 19 日(第 9 回) 理学部数学科・木村巌. 前回までの復習 共用体( union type ) 共用体( union type ) 列挙 (enumerated type ) 列挙 (enumerated type ) 構造体、構造体のポインタ、
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第13回構造体.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
第12回構造体.
アルゴリズムとプログラミング (Algorithms and Programming)
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング演習I 2004年4月14日(第1回) 木村巌.
情報科学1(G1) 2016年度.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
プログラミング論 II 電卓,逆ポーランド記法電卓
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
プログラミングIII演習 第1回目.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
第10回 プログラミングⅡ 第10回
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
プログラミング演習I 2003年6月25日(第10回) 木村巌.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
第11回 プログラミングⅡ 第11回
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
演習0 func0, func1, func2を作成せよ. main()関数の中で,func0()を呼び出しを実行せよ.
C言語 はじめに 2016年 吉田研究室.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング演習I 2003年4月30日(第3回) 木村巌.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
プログラミング演習I 2003年4月15日(第一回) 木村巌.
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
プログラミング演習I 2003年6月11日(第9回) 木村巌.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング演習II 2003年10月29日(第2,3回) 木村巌.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング 3 ポインタ(1).
プログラミング 2 静的変数.
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

レポート課題: /* ??? */を補え 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; }

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