プログラミング入門 - kanagawa-it.ac.jpプログラム入門(第9回) 5 関数とは.....
TRANSCRIPT
プログラム入門(第9回) 1
プログラミング入門
•小テスト (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 プログラミング評価
プログラム入門(第9回) 3
補講のお知らせ
•12月に補講を以下の様に致します–12月13日 3限 第9回
–12月22日 2限 第11回本日
プログラム入門(第9回) 4
Program language C
•Function
今回の学習の目標•関数について•main関数とその他の関数との違い•関数のデータの受け渡し
プログラム入門(第9回) 5
関数とは..•それを呼び出すと何かの仕事をする
–仕事をした後,値を返す場合がある (戻り値)
computer
画面に“computer”という文字を表示して!
printf関数
main 関数①
②
画面に“computer”という文字を表示
③
終わったよ!
これが戻り値
p.166
プログラム入門(第9回) 6
main 関数とその他の関数
main 関数
scanf関数
printf関数
自作関数
・・
scanfや printf も何か仕事をしているので関数と言える.
そして....自分で何か仕事をする関数を作ることもできる.
自分で関数を作るには...
プログラム入門(第9回) 7
C 言語の構造は..外部変数の宣言 ;データ型関数名(引数){内部変数の宣言 ;実行文 ;
}void main( void ){内部変数の宣言
実行文 ;}
Main 関数
自作関数
プログラム全体
p.23
C言語のプログラムは関数の集まりである
C言語のプログラムは関数の集まりである
プログラム入門(第9回) 8
関数を使う
void main( void ){
test1( ) ;test2( ) ;
}
void test1(void){
…..return ;
}
void test2(void){…..return ;
}
機能を関数として定義
・見やすくなる・機能毎にまとめられれる・使い回しができる
mainも関数である
使いたい関数を記述
プログラム入門(第9回) 9
C の記述例#include “stdio.h”
int fa(x){(実行文)
}void main( void ){(実行文)
}
呼び出される関数を先に書く(例えば自作関数など)
種々の宣言が含まれるファイル
呼び出す側の関数は後
void : 引数を持たない
プログラム入門(第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) ;
}
データ型 関数名 引数
プログラム入門(第9回) 11
関数の構成
戻り値の型関数名 (仮引数およびその宣言)
{
内部変数の宣言 ;
.....
実行文 ;
.....
return 戻値 ;}
p.170
関数の最初と終わりに{ と } が必要
プログラム入門(第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
プログラム入門(第9回) 13
データ型戻り値の型関数名 (仮引数)
関数も変数と同様にデータ型を持つ.
これは関数の戻り値がどの様なデータ型式をもって返されるかを示すものである.
戻り値は使わないときもある( p.171)char, int , long, float, double, unsigned, void 等々...
省略すると int 型と見なされる.
p.170
プログラム入門(第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 の値を渡す
③これが戻り値
プログラム入門(第9回) 15
関数名戻り値の型関数名 (仮引数)
•関数名はそれぞれつける•わかりやすい関数名にすること•同じ関数名はつけないこと•関数名には英数字とハイフン“-”,アンダーバー“_”が使える
プログラム入門(第9回) 16
関数のデータの受け渡し
戻り値の型関数名 (仮引数)
•関数のデータの受け渡し方法–Call by Value 方式 関数の呼び出し側
呼び出される関数側
変数 a
変数 b
値(value) を渡す
その他アドレスを渡す方式がある
(例)void menseki (int tate, int yoko){・・・・・
}データ型
引数名
p.169
プログラム入門(第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 の値を渡す
③これが仮引数
プログラム入門(第9回) 18
記述例
•事例–基本事例
•三角形と四角形の面積を求める (no9_sample1)•p.170 のリストについて隣の人に説明する
–maxdt関数とdisp_sqrt関数は main 関数の前に書かれていると考える。なお,プロトタイプ宣言は今は考えなくて良い。
–応用事例•常微分方程式•画像フィルタ処理プログラム
プログラム入門(第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]
プログラム入門(第9回) 20
参考資料
プログラム入門(第9回) 21
C言語の関数•関数
–入力に対してある処理を行い出力をする–Black Box : 値を与えるだけで結果が得られる
入力関数
出力
入力 処理内容関数
fa(x) = 2x2 + 6x + 4
入力のデータ型出力のデータ型
関数のデータ型(引数)