演習0 func0, func1, func2を作成せよ. main()関数の中で,func0()を呼び出しを実行せよ.

Slides:



Advertisements
Similar presentations
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
Advertisements

情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
第13回構造体.
演習00-0 “Hello,world![改行]”を表示するプログラムを作成せよ. 1 1.
第12回構造体.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
前回の復習 課題: ある動物の t 年における数は、前年と前々年の数の 合計で表わされるという。すなわち
プログラミング演習I
プログラミング演習(2組) 第12回
プログラミング論 I 関数の再帰呼び出し
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
C言語講座 第4回 ポインタ.
問題 1 フィボナッチ数列 xn は次で定義される。
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
プログラミング論 関数ポインタ と 応用(qsort)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
プログラミング論 ファイル入出力
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
プログラミング論 I 2008年07月03日 2008年07月10日 2008年7月11日 関数,再帰
第9回関数と記憶クラス.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
プログラミング2 関数の再帰呼び出し
知能情報工学演習I 第12回(後半第6回) 課題の回答
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
高度プログラミング演習 (08).
プログラミング論 ファイル入出力
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
関数への道.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
演習07-0 “Hello\n” “World!\n”と
Cプログラミング演習資料.
プログラミング論 I 2008年07月03日 関数,再帰
プログラミング序論演習.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
第5回 プログラミングⅡ 第5回
演習00-0 “Hello\n” “World!\n”と
プログラミング2 関数の再帰呼び出し
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
高度プログラミング演習 (07).
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
プログラミング演習I 2003年6月11日(第9回) 木村巌.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
第10回 関数と再帰.
プログラミング入門2 第5回 配列 変数宣言、初期化について
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
値渡しと参照渡しについて.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
C言語講座第4回 2017 関数とポインタ.
プログラミング 2 静的変数.
Presentation transcript:

演習0 func0, func1, func2を作成せよ. main()関数の中で,func0()を呼び出しを実行せよ. func0の中身は,「“func0A”と表示し,func1を呼び出し,“func0B”と表示する」. func1の中身は,「“func1A”と表示し,func2を呼び出し,“func1B”と表示する」. func2の中身は,「“func2”と表示する」. main()関数の中で,func0()を呼び出しを実行せよ. main()の中で,func0()の中でfunc1を呼び出し,func1()の中でfunc2を呼び出すことになる. 実行結果は次のスライド

演習0 (con’t) 実行結果は以下のとおり func0A func1A func2 func1B func0B

演習1-0 再帰を用いて,n!(階乗)を求める関数を作成せよ. 引数に1を指定してmainから呼び出し,戻り値を表示せよ.

演習1-1 再帰を用いて,n!(階乗)を求める関数を作成せよ. 関数内にprintf()を入れ,動作を追跡せよ. 引数に10を指定してmainから呼び出し,戻り値を表示せよ.

演習1-1 (con’t) 追跡の例 int san_bai(int i){ return 3*i; } ↓ printf(“関数san_bai(%d)が開始.\n",i); int ret = 3*i; printf(“関数san_bai(%d)が終了.戻り値=%d",i,ret); return ret;

演習1-2 再帰を用いずに,n!(階乗)を求める関数を作成せよ. 引数に1~10を指定してmainから呼び出し,それぞれの戻り値を表示せよ.

演習2-0 再帰を用いて,nCr(組み合わせ)を求める関数を作成せよ. ヒント:答えは上から順に 10, 20, 35 引数にn=5,r=2を指定してmainから呼び出し,戻り値を表示せよ. 引数にn=6,r=3を指定してmainから呼び出し,戻り値を表示せよ. 引数にn=7,r=4を指定してmainから呼び出し,戻り値を表示せよ. ヒント:答えは上から順に 10, 20, 35

演習2-0 (con’t) ヒント 組み合わせ(Conbination) nCr は, r>1なら, nCr=n-1Cr-1 * n / r r==1なら, nCr=n

演習2-1 再帰を用いずに,nCr(組み合わせ)を求める関数を作成せよ. 引数にn=5,r=2を指定してmainから呼び出し,戻り値を表示せよ. 引数にn=6,r=3を指定してmainから呼び出し,戻り値を表示せよ. 引数にn=7,r=4を指定してmainから呼び出し,戻り値を表示せよ.

演習3-0 以下の様な数式anがある a0=0 an=an-1*an-1+1 (n>0) 再帰を用いて,anを求める関数を作成せよ. 引数に1~6を指定してmainから呼び出し,それぞれの戻り値を表示せよ. ヒント:a0=0, a1=1, a2=2, a3=5, a4=26, a5=677, a6=458330

演習3-1 以下の様な数式anがある(前スライドと同一) a0=0 an=an-1*an-1+1 (n>0) 引数に1~6を指定してmainから呼び出し,それぞれの戻り値を表示せよ.

演習4-0 再帰を用いて,フィボナッチ数列の第n項目を求める関数を作成せよ. 引数に0~9を指定してmainから呼び出し,それぞれの戻り値を表示せよ. フィボナッチ数列:1,1,2,3,5,8,13,21,... 第n+2項目=第n項目+第n+1項目 fibo(0)=1, fibo(1)=1,fibo(2)=2,…

演習4-1 再帰を用いて,フィボナッチ数列の第n項目を求める関数を作成せよ. 引数に6を指定してmainから呼び出し,その戻り値を表示せよ. 関数内にprintf()を入れ,動作を追跡せよ. 例:関数の1行目に”関数が開始されました.引数は??です.”と表示するprintfを配置する

演習4-2 再帰を用いて,フィボナッチ数列の第n項目を求めるプログラムを作成せよ. 引数に6を指定してmainから呼び出し,その戻り値を表示せよ. 関数呼び出しの関係(次スライド参照)を描写せよ 手書きで紙に描いて,写真を撮って提出 提出先ULRは口頭で指示 ファイル名は学籍番号.たとえば jx12345.jpg

演習4-2 (con’t) 「呼び出しの関係」の例 fibo(5) fibo(4) fibo(3) fibo(1) =1 fibo(2) fibo(3) fibo(2) fibo(1) =1 fibo(2) fibo(0) =1 fibo(1) =1 戻り値を書くと なお良い fibo(0) =1 fibo(1) =1 fibo(0) =1 fibo(1) =1

演習4-3 再帰を用いずに,フィボナッチ数列の第n項目を求める関数を作成せよ. 引数に0~9を指定してmainから呼び出し,それぞれの戻り値を表示せよ. フィボナッチ数列:1,1,2,3,5,8,13,21,... 第n+2項目=第n項目+第n+1項目

演習5 再帰を用いるフィボナッチ数列の関数と,用いない関数でどちらが短い時間で結果を求めることができるか調査し,調査結果を報告せよ. プログラムを開始してからの経過時間(クロック)は,clock()という関数で取得できる. clock()を用いて時刻取得を複数回行い,時刻の差を求めれば「かかった時間」をとめることができる.

演習5 (con’t) #include <stdio.h> #include <time.h> #include <stdlib.h> void main(){ clock_t ti[3]; ti[0] = clock(); printf("1回目時刻 %d\n", ti[0]); ti[1] = clock(); printf("2回目時刻 %d\n", ti[1]); ti[2] = clock(); printf("3回目時刻 %d\n", ti[2]); printf("1回目と2回目の時間差 %d\n", ti[1]-ti[0]); printf("1回目と3回目の時間差 %d\n", ti[2]-ti[0]); printf("size = %d\n", sizeof(clock_t)); } clockの使用の例: clock_t型は,(当面は)int型と理解して良い. 時間が余りに短いと,0になってしまうので注意 赤字のincludeを追加してください.

演習5 (con’t) #include <stdio.h> #include <time.h> #include <stdlib.h> void main(){ clock_t ti[2]; ti[0] = clock(); fibo(12); ti[1] = clock(); printf(“fibo(12)の時間= %d\n", ti[1]-ti[0]); }