プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.....

21
プログラム入門(第9回) 1 プログラミング入門 小テスト (5分ほど) 小テストの解答 今回の講義内容: 関数Ⅰ

Upload: others

Post on 30-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 1

プログラミング入門

•小テスト (5分ほど)•小テストの解答•今回の講義内容:

関数Ⅰ

Page 2: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 2

プログラミング入門

• 1 授業概要• 2 プログラムの作成から実行まで (教科書 1.1~1.6, 2.1)• 3 変数と標準入出力 (教科書 3.1~3.2,2.2,2.4,6.4)• 4 演算子 (教科書 4.1~4.9)• 5 制御文,条件判断と分岐 (教科書 5.1~5.2,5.6~5.7)• 6 繰り返し処理 (教科書 5.3~5.5,5.8)• 7 配列と文字列 (教科書 3.3~3.4)• 8 2次元配列 (教科書 3.3)• 9 関数Ⅰ (教科書 7.1~7.3)• 10 関数Ⅱ (教科書 7.4)• 11 構造体 (教科書 9.1)• 12 ファイルの入出力 (教科書 12.1~12.3)• 13 プログラミング評価

Page 3: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 3

補講のお知らせ

•12月に補講を以下の様に致します–12月13日 3限 第9回

–12月22日 2限 第11回本日

Page 4: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 4

Program language C

•Function

今回の学習の目標•関数について•main関数とその他の関数との違い•関数のデータの受け渡し

Page 5: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 5

関数とは..•それを呼び出すと何かの仕事をする

–仕事をした後,値を返す場合がある (戻り値)

computer

画面に“computer”という文字を表示して!

printf関数

main 関数①

画面に“computer”という文字を表示

終わったよ!

これが戻り値

p.166

Page 6: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 6

main 関数とその他の関数

main 関数

scanf関数

printf関数

自作関数

・・

scanfや printf も何か仕事をしているので関数と言える.

そして....自分で何か仕事をする関数を作ることもできる.

自分で関数を作るには...

Page 7: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 7

C 言語の構造は..外部変数の宣言 ;データ型関数名(引数){内部変数の宣言 ;実行文 ;

}void main( void ){内部変数の宣言

実行文 ;}

Main 関数

自作関数

プログラム全体

p.23

C言語のプログラムは関数の集まりである

C言語のプログラムは関数の集まりである

Page 8: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 8

関数を使う

void main( void ){

test1( ) ;test2( ) ;

}

void test1(void){

…..return ;

}

void test2(void){…..return ;

}

機能を関数として定義

・見やすくなる・機能毎にまとめられれる・使い回しができる

mainも関数である

使いたい関数を記述

Page 9: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 9

C の記述例#include “stdio.h”

int fa(x){(実行文)

}void main( void ){(実行文)

}

呼び出される関数を先に書く(例えば自作関数など)

種々の宣言が含まれるファイル

呼び出す側の関数は後

void : 引数を持たない

Page 10: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 10

関数の使用例

void main( void ){

int a, i ;for ( i=0 ; i<=10 ; i++ ){

a = fa( i ) ; printf ( “i -> %d, fa -> %d¥n”, i, a ) ;

}}

int fa( int x ){

int y ;y = 2 * x * x + 6 * x + 4 ;return (y) ;

}

データ型 関数名 引数

Page 11: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 11

関数の構成

戻り値の型関数名 (仮引数およびその宣言)

内部変数の宣言 ;

.....

実行文 ;

.....

return 戻値 ;}

p.170

関数の最初と終わりに{ と } が必要

Page 12: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 12

関数の記述例

int fa( int x ){

int y ;y = 2 * x * x + 6 * x + 4 ;return (y) ;

}

関数名

処理内容

関数 faの結果(戻り値)

仮引数とその宣言

変数の宣言

入力 処理内容関数

fa(x) = 2x2 + 6x + 4データ型

p.170

Page 13: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 13

データ型戻り値の型関数名 (仮引数)

関数も変数と同様にデータ型を持つ.

これは関数の戻り値がどの様なデータ型式をもって返されるかを示すものである.

戻り値は使わないときもある( p.171)char, int , long, float, double, unsigned, void 等々...

省略すると int 型と見なされる.

p.170

Page 14: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 14

戻り値と関数の例void main( void ){

int a, i ;for ( i=0 ; i<=10 ; i++ ){

a = fa( i ) ; printf ( “i -> %d, fa -> %d¥n”, i, a ) ;

}}

int fa( int x ){

int y ;y = 2 * x * x + 6 * x + 4 ;return (y) ;

}

データ型 関数名 引数

fa( i ); i に基づいたyの算出

②答え

結果を変数a に入れる

① i の値を渡す

③これが戻り値

Page 15: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 15

関数名戻り値の型関数名 (仮引数)

•関数名はそれぞれつける•わかりやすい関数名にすること•同じ関数名はつけないこと•関数名には英数字とハイフン“-”,アンダーバー“_”が使える

Page 16: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 16

関数のデータの受け渡し

戻り値の型関数名 (仮引数)

•関数のデータの受け渡し方法–Call by Value 方式 関数の呼び出し側

呼び出される関数側

変数 a

変数 b

値(value) を渡す

その他アドレスを渡す方式がある

(例)void menseki (int tate, int yoko){・・・・・

}データ型

引数名

p.169

Page 17: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 17

仮引数と関数の例void main( void ){

int a, i ;for ( i=0 ; i<=10 ; i++ ){

a = fa( i ) ; printf ( “i -> %d, fa -> %d¥n”, i, a ) ;

}}

int fa( int x ){

int y ;y = 2 * x * x + 6 * x + 4 ;return (y) ;

}

データ型 関数名 引数

fa( i ); i に基づいたyの算出

②答え

結果を変数a に入れる

① i の値を渡す

③これが仮引数

Page 18: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 18

記述例

•事例–基本事例

•三角形と四角形の面積を求める (no9_sample1)•p.170 のリストについて隣の人に説明する

–maxdt関数とdisp_sqrt関数は main 関数の前に書かれていると考える。なお,プロトタイプ宣言は今は考えなくて良い。

–応用事例•常微分方程式•画像フィルタ処理プログラム

Page 19: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 19

課題• キーボードから実数を5個入力し,その入力データのうち3つのデータから実数の平均値をもとめる.

• 求める平均は最初のデータから3個分,次のデータから3個分および3番目のデータから3個分の計3種類とする.

• 平均をするプログラムは関数化すること.このとき,どのようにプログラムを分割するかを熟考すること.引数で値を渡すようにすること。

• 入力データ– 1.1 1.2 1.3 1.4 1.5– さらに自分で考えた値

• それぞれの確認データ毎に画面に出力した結果とソースファイルをwebrepに登録のことプログラム名 prog9a.c 画面出力 prog9a.txt

• 期限:来週の月曜日 18時まで

(第7回の課題を元にしてみること)

1 2 3 4 5

[1]

[2]

[3]

Page 20: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 20

参考資料

Page 21: プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.. •それを呼び出すと何かの仕事をする –仕事をした後,値を返す場合がある(戻り値)

プログラム入門(第9回) 21

C言語の関数•関数

–入力に対してある処理を行い出力をする–Black Box : 値を与えるだけで結果が得られる

入力関数

出力

入力 処理内容関数

fa(x) = 2x2 + 6x + 4

入力のデータ型出力のデータ型

関数のデータ型(引数)