鹿児島大学 プログラミング基礎演習 第7回 関数(1) 定義と引用 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 理化学研究所 関数とは… ▶ 数学:与えた値から対応する1つの値を示す ■ 例:sinq, log x, ex, f(x) ▶ 英語:関数=function=機能 ▶ C言語ではどちらの意味も持つ ■ ■ ■ ■ 例: sin(x), log(x), exp(x) 例: toupper(cc), isalpha(cc) 例: printf("Hellow, world.\n"), putchar(cc) 例:getchar(), fgets(stdin,buffer,256) 理化学研究所 関数の自作 ▶ 自分で好きな関数が作れる ▶ 繰り返し使う部分は関数にしたらよさそう 理化学研究所 割引価格表示プログラム List8-1(教科書p.182) #include <stdio.h> int main(void); int main(void) { 「割引価格を求める」 float xx,yy; xx=10000.0; yy=xx*0.7; printf("通常価格%.0f円のところ",xx); printf("今回は特別に%.0f円でご提供\n",yy); return(0); } 理化学研究所 割引価格表示プログラム List8-2(教科書p.183) #include <stdio.h> float calc(float xx); int main(void); float calc(float xx) /* 割引価格を求める */ { float yy; yy=xx*0.7; return(yy); } 「割引価格を求める」 int main(void) { float xx,yy; xx=10000.0; yy=calc(xx); printf("通常価格%.0f円のところ",xx); printf("今回は特別に%.0f円でご提供\n",yy); return(0); } 理化学研究所 「割引価格を求める」 関数の要素 関数名とその型 自作の関数calc 引数とその型宣言 float calc(float xx) /* 割引価格を求める */ { float yy; yy=xx*0.7; return(yy); } 理化学研究所 戻り値の定義 関数の引用 ▶ 自作関数の引用 int main(void) 関数の呼び出し { float xx,yy; xx=10000.0; yy=calc(xx); printf("通常価格%.0f円のところ",xx); printf("今回は特別に%.0f円でご提供\n",yy); return(0); } 戻り値の代入 理化学研究所 プログラムの階層構造化 ▶ まとまった部分を1つの塊にする ■ 内容を簡単に表現できれば、それが単位 ▶ List8-1では ■ 「割引価格を求める」がひとかたまり ▶ 関数の中身 ■ 何が起こっているのかは知らなくても使える 例:printfが実際は何をしているのかの詳細 例:三角関数の値の計算方法 理化学研究所 繰り返しがあれば関数に List8-3改(p.189) #include <stdio.h> void print_graph(int xx); int main(void); void print_graph(int xx) /* 棒グラフを*で書く */ { int ii; for(ii=0;ii<xx;ii++) { printf("*"); } printf("\n"); return; } int main(void) { int xx; xx=10; print_graph(xx); return(0); } 理化学研究所 繰り返しがあれば関数に List8-3改2 #include <stdio.h> void print_graph(int xx); int main(void); void print_graph(int xx) /* 棒グラフを*で書く */ { int ii; for(ii=0;ii<xx;ii++) { printf("*"); } printf("\n"); return; } 呼び出し時の引数には定数も可 int main(void) { int xx; xx=10; print_graph(xx); print_graph(5); return(0); } 理化学研究所 関数のプロトタイプ宣言 ▶ どんな関数を使うかひな形を示す #include <stdio.h> void print_graph(int xx); int main(void); void print_graph(int xx) /* 棒グラフを*で書く */ { int ii; for(ii=0;ii<xx;ii++) { printf("*"); } printf("\n"); return; } ひな形を示す 理化学研究所 標準関数のプロトタイプ宣言 ▶ それをやっているのが<stdio.h> ■ ■ ■ ■ ■ 使う標準関数の種類ごとに異なるheaderファイル 入出力関連 stdio.h それ以外の標準 stdlib.h 数学関連 math.h など、他にもいろいろ。 ▶ #include <ファイル名> ■ ■ コンパイルをはじめる前に、 指定されたファイルの内容をここにコピー 理化学研究所
© Copyright 2024 ExpyDoc