E-mail and Network

プログラミング入門
• 小テスト (5分ほど)
• 小テストの解答
• 今回の講義内容:
関数Ⅰ
プログラム入門(第9回)
1
プログラミング入門
•
•
•
•
•
•
•
•
•
•
•
•
•
1
2
3
4
5
6
7
8
9
10
11
12
13
授業概要
プログラムの作成から実行まで (教科書 1.1~1.6, 2.1)
変数と標準入出力 (教科書 3.1~3.2,2.2,2.4,6.4)
演算子 (教科書 4.1~4.9)
制御文,条件判断と分岐 (教科書 5.1~5.2,5.6~5.7)
繰り返し処理 (教科書 5.3~5.5,5.8)
配列と文字列 (教科書 3.3~3.4)
2次元配列 (教科書 3.3)
関数Ⅰ (教科書 7.1~7.3)
関数Ⅱ (教科書 7.4)
構造体 (教科書 9.1)
ファイルの入出力 (教科書 12.1~12.3)
プログラミング評価
プログラム入門(第9回)
2
補講のお知らせ
• 12月に補講を以下の様に致します
– 12月13日 3限 第9回
– 12月22日 2限 第11回
プログラム入門(第9回)
本日
3
Program language C
• Function
今回の学習の目標
•関数について
•main関数とその他の関数との違い
•関数のデータの受け渡し
プログラム入門(第9回)
4
p.166
関数とは..
• それを呼び出すと何かの仕事をする
– 仕事をした後,値を返す場合がある (戻り値)
画面に “computer”と
いう文字を表示して!
①
main 関数
終わったよ!
これが戻り値
画面に “computer”
という文字を表示
②
③
computer
printf 関数
プログラム入門(第9回)
5
main 関数とその他の関数
main 関数
scanf 関数
printf 関数
自作 関数
・
・
scanf や printf も
何か仕事をしているので
関数と言える.
そして....
自分で何か仕事をする
関数を作ることもできる.
自分で関数を作るには...
プログラム入門(第9回)
6
p.23
C 言語の構造は..
外部変数の宣言 ;
データ型 関数名(引数)
{
内部変数の宣言 ;
実行文 ;
}
void main( void )
{
内部変数の宣言
実行文 ;
}
自作関数
プログラム全体
Main 関数
プログラム入門(第9回)
C言語のプログラムは
関数の集まりである
7
関数を使う
mainも関数である
void main( void )
{
test1( ) ;
test2( ) ;
}
使いたい関
数を記述
・見やすくなる
・機能毎にまとめられれる
・使い回しができる
void test1(void)
{
…..
return ;
}
機能を関数として定義
void test2(void)
{
…..
return ;
}
プログラム入門(第9回)
8
C の記述例
#include “stdio.h”
int fa(x)
{
(実行文)
}
void main( void )
{
(実行文)
}
種々の宣言が含まれるファイル
呼び出される関数を先に書く
(例えば自作関数など)
呼び出す側の関数は後
void : 引数を持たない
プログラム入門(第9回)
9
関数の使用例
データ型
関数名
引数
int fa( int x )
{
int y ;
y=2*x*x+6*x+4;
return (y) ;
}
void main( void )
{
int a, i ;
for ( i=0 ; i<=10 ; i++ )
{
a = fa( i ) ;
printf ( “i -> %d, fa -> %d\n”, i, a ) ;
}
}
プログラム入門(第9回)
10
p.170
関数の構成
戻り値の型 関数名 (仮引数およびその宣言)
{
内部変数の宣言 ;
関数の最初と終わりに
.....
{ と } が必要
実行文 ;
.....
return 戻値 ;
}
プログラム入門(第9回)
11
p.170
関数の記述例
データ型
関数名
fa(x) = 2x2 + 6x + 4
関数
入力
処理内容
int fa( int x )
仮引数とその宣言
{
int y ;
変数の宣言
y=2*x*x+6*x+4;
処理内容
return (y) ;
}
関数 fa の結果(戻り値)
プログラム入門(第9回)
12
p.170
データ型
戻り値の型 関数名 (仮引数)
関数も変数と同様にデータ型を持つ.
これは関数の戻り値がどの様なデータ型式をもって返され
るかを示すものである.
戻り値は使わないときもある( p.171)
char, int , long, float, double, unsigned, void 等々...
省略すると
int 型と見なされる.
プログラム入門(第9回)
13
戻り値と関数の例
void main( void )
{
int a, i ;
for ( i=0 ; i<=10 ; i++ )
{
a = fa( i ) ;
printf ( “i -> %d, fa -> %d\n”, i, a ) ;
}
}
① i の値を渡す
fa( i );
③
結果を変数
a に入れる
②答え
データ型
関数名
引数
int fa( int x )
{
int y ;
y=2*x*x+6*x+4;
return (y) ;
}
i に基づいた
yの算出
これが
戻り値
プログラム入門(第9回)
14
関数名
戻り値の型 関数名 (仮引数)
•
•
•
•
関数名はそれぞれつける
わかりやすい関数名にすること
同じ関数名はつけないこと
関数名には英数字とハイフン“-”,アンダーバー“_” が使
える
プログラム入門(第9回)
15
p.169
関数のデータの受け渡し
戻り値の型 関数名 (仮引数)
• 関数のデータの受け渡し方法
– Call by Value 方式
関数の呼び出し側
変数 a
引数名
(例)
void menseki (int tate, int yoko)
値(value) を渡す
{
・・・・・
データ型
}
変数 b
呼び出される
関数側
その他アドレスを渡す方式がある
プログラム入門(第9回)
16
仮引数と関数の例
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) ;
}
① i の値を渡す
fa( i );
③
結果を変数
a に入れる
②答え
i に基づいた
yの算出
これが
仮引数
プログラム入門(第9回)
17
記述例
• 事例
– 基本事例
• 三角形と四角形の面積を求める (no9_sample1)
• p.170 のリストについて隣の人に説明する
– maxdt関数とdisp_sqrt関数は main 関数の前に書かれていると
考える。なお,プロトタイプ宣言は今は考えなくて良い。
– 応用事例
• 常微分方程式
• 画像フィルタ処理プログラム
プログラム入門(第9回)
18
課題
•
•
•
•
キーボードから実数を5個入力し,その入力データのう
ち3つのデータから実数の平均値をもとめる.
求める平均は最初のデータから3個分,次のデータから
3個分および3番目のデータから3個分の計3種類とす
る.
平均をするプログラムは関数化すること.このとき,ど
のようにプログラムを分割するかを熟考すること.引数
で値を渡すようにすること。
入力データ
–
–
•
1.1 1.2 1.3 1.4 1.5
さらに自分で考えた値
それぞれの確認データ毎に画面に出力した結果とソー
スファイルをwebrep に登録のこと
1
2
3
4
5
[1]
[2]
[3]
プログラム名 prog9a.c 画面出力 prog9a.txt
•
期限:来週の月曜日 18時まで
(第7回の課題を元にしてみること)
プログラム入門(第9回)
19
参考資料
プログラム入門(第9回)
20
C言語の関数
• 関数
– 入力に対してある処理を行い出力をする
– Black Box : 値を与えるだけで結果が得られる
出力のデータ型
入力のデータ型
入力
出力
関数
(引数)
関数のデータ型
fa(x) = 2x2 + 6x + 4
関数
入力
プログラム入門(第9回)
処理内容
21