21
応応応応応応応応応 応2応

応用プログラミング 第 2 回

Embed Size (px)

DESCRIPTION

応用プログラミング 第 2 回. 今日の内容. 前回の課題 の解説 三値の最大値 関数の働き 課題 連絡 事項. 前回の課題1. 初期化処理 加算を繰り返す for 文の使い方 if 文の使い方. 前回の課題1. int k; double s = 0; for (k = 1; k

Citation preview

Page 1: 応用プログラミング 第 2 回

応用プログラミング第 2回

Page 2: 応用プログラミング 第 2 回

今日の内容• 前回の課題の解説• 三値の最大値• 関数の働き• 課題• 連絡事項

Page 3: 応用プログラミング 第 2 回

前回の課題1• 初期化処理• 加算を繰り返す• for文の使い方• if文の使い方

Page 4: 応用プログラミング 第 2 回

前回の課題1int k;double s = 0;for (k = 1; k <= 10000; k++){

if (k % 2 == 0)s -= 1.0/(2*k-1);

elses+= 1.0/(2*k-1);

}

10000

1

1

12

)1(

k

k

k

Page 5: 応用プログラミング 第 2 回

前回の課題2• 配列の使い方• 入力関数 scanfの使い方• 変数の中身の入れ替え

[0] [1] [2] [3] [4]9 4 6 7 1

隣の箱(配列)の大小を比較して,大きな値が右側に来るように入れ替える

Page 6: 応用プログラミング 第 2 回

前回の課題2

[0] [1] [2] [3] [4]9 4 6 7 1

[0] [1] [2] [3] [4]4 6 7 1 9

・5つの中の最大値が入る・この箱はもう調べなくてよい(確定)

[0] [1] [2] [3]4 6 1 7

4つの中の最大値が入る

Page 7: 応用プログラミング 第 2 回

前回の課題2for (j = 1; j < 20; j++){

for (i = 0; i < 20 - j; i++){if (data[i] > data[i+1]){tmp = data[i];data[i] = data[i+1];data[i+1] = tmp;}}

}

隣どうしの値を入れ替え

隣どうしの値の大小を比較

data[i] data[i+1]

tmp44 9

Page 8: 応用プログラミング 第 2 回

三値の最大値( P.14~)• 3つの値の最大値を求めるプログラムを考える.

a b c4 9 6

max9

最大値

Page 9: 応用プログラミング 第 2 回

三値の最大値( P.14~)• どうやって,最大値を求めればよいか? ⇒どんなルールに従えばうまくいくのか?

①maxに aの値を代入②bの値が maxより大きいならば, maxに bを代入

③cの値が maxより大きいならば, maxに cを代入

a b c4 9 6

max

Page 10: 応用プログラミング 第 2 回

max

三値の最大値( P.14~)①maxに aの値を代入②bの値が maxより大きいならば, maxに bを代入

③cの値が maxより大きいならば, maxに cを代入

a b c4 9 64 9

Page 11: 応用プログラミング 第 2 回

フローチャート• ルール(プログラムの流れ=フロー)を視覚的に表したい (p.21)

START

a → max

b > maxb → max

c > maxc → max

END

上から下へ処理が進む

TRUE

FALSE

FALSE

TRUE

Page 12: 応用プログラミング 第 2 回

関数の働き#include <stdio.h>int main(){

int a,b,c;int max;printf(“a = “); scanf(“%d”,&a);printf(“b = “); scanf(“%d”,&b);printf(“c = “); scanf(“%d”,&c);

max = a;if (b > max) max = b;if (c > max) max = c;printf(“max = %d\n”,max);return 0;

}

max = max3(a,b,c)

int max3(int x, int y, int z){

int max;max = a;if (b > max) max = b;if (c > max) max = c;return max;

}

Page 13: 応用プログラミング 第 2 回

max3に最大値を計算してほしい!

max3の家

mainの家

材料( int型)が,3つ必要です.持ってきてください.

a b

c

49

Page 14: 応用プログラミング 第 2 回

max3の家

材料は,決められた容器に入れておいてください.

x

y

z

96

最大値計算終了!結果を mainの家まで届けて

max9

Page 15: 応用プログラミング 第 2 回

max9

Page 16: 応用プログラミング 第 2 回

関数の働き#include <stdio.h>int main(){

int a,b,c;int max;printf(“a = “); scanf(“%d”,&a);printf(“b = “); scanf(“%d”,&b);printf(“c = “); scanf(“%d”,&c);

max = a;if (b > max) max = b;if (c > max) max = c;printf(“max = %d\n”,max);return 0;

}

max = max3(a,b,c)

int max3(int x, int y, int z){

int max;max = a;if (b > max) max = b;if (c > max) max = c;return max;

}

Page 17: 応用プログラミング 第 2 回

関数の働き

main(){ max = max3(a,b,c);

}

int max3(int x, int y, int z){

int max;max = x;if (y > max) max = y;if (z > max) max = z;return max;

}

a → xb → yc → zmain関数

max3関数

max(main側 ) ← max(max3側)

Page 18: 応用プログラミング 第 2 回

関数の働き

main(){ max = max3(a,b,c);

}

int max3(int x, int y, int z){

int max;max = x;if (y > max) max = y;if (z > max) max = z;return max;

}

main関数 max3関数

• 実引数( actual argument):関数呼び出し側がサブルーチンに渡す値

• 仮引数( formal argument):実引数の値をサブルーチン側で受け取るための変数

• 戻り値 (return value):サブルーチンが呼び出し側に返す値

Page 19: 応用プログラミング 第 2 回

アルゴリズムとは• 問題を解くためのものであって,明確に定義され,順序づけられた有限個の規則からなる集合( JIS X0001)

Page 20: 応用プログラミング 第 2 回

クイズ( 4月 22日深夜まで)1.三値の最小値を求める以下の関数およびフローチャートを作れint min3(int x, int y, int z)

2.三値の中央値を求める以下の関数およびフローチャートを作れ

int med3(int x, int y, int z)

Page 21: 応用プログラミング 第 2 回

注意事項• メールでレポートを送信するときは、レポートをメールに添付して送ること

• メールの件名は、「学籍番号 +半角スペース +氏名」にしてください。(例) 08F1099 松木裕二

• メールアドレス変更のお知らせ:[email protected]

• 講義資料www.fit.ac.jp/~matsuki/AP.html