第5回目

Similar documents
講習No.12

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

関数 C 言語は関数の言語 関数とは 関数の定義 : f(x) = x * x ; 使うときは : y = f(x) 戻り値 引数

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

プログラミング入門1

Microsoft PowerPoint pptx[読み取り専用]

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

Microsoft Word - 03

Microsoft Word - no11.docx

gengo1-10

プログラミング実習I

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - prog05.ppt

Microsoft PowerPoint L07-Imperative Programming Languages-4-students ( )

関数の中で宣言された変数の有効範囲はその関数の中だけです さっきの rectangle _s で宣言されている変数 s は他の関数では使用できません ( 別の関数で同じ名前の変数を宣言することはできますが 全く別の変数として扱われます このように ある関数の中で宣言されている変数のことをその関数の

Microsoft PowerPoint - 14Chap17.ppt

PowerPoint プレゼンテーション - 物理学情報処理演習

1.1 1 C IIA $ cd comp3a %endminipage ~/comp3a mkdir $ mkdir comp3a $ cd comp3a C.c Emacs Cntrol x Control s 2 Emacs Control-x Control-f Control-

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft Word - Cプログラミング演習(12)

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

gengo1-11

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft PowerPoint ppt

スライド 1

Program Design (プログラム設計)

02: 変数と標準入出力

Microsoft Word - no15.docx

情報処理Ⅰ演習

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

‚æ2›ñ C„¾„ê‡Ìš|

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

02: 変数と標準入出力

02: 変数と標準入出力

Prog1_6th

プログラミング基礎I(再)

02: 変数と標準入出力

02: 変数と標準入出力

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

プログラミング入門1

memo

ゲームエンジンの構成要素

プログラミング及び演習 第1回 講義概容・実行制御

講習No.12

講習No.10

Microsoft PowerPoint - 10.ppt [互換モード]

kiso2-09.key

PowerPoint プレゼンテーション

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - 5Chap10.ppt

PowerPoint Presentation

Cプログラミング1(再) 第2回

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

memo

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

配列, 関数, 構造体

Microsoft Word - Cプログラミング演習(3)

プログラミング実習I

02: 変数と標準入出力

memo

CプログラミングI

Javaプログラムの実行手順

Microsoft PowerPoint - prog07.ppt

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

PowerPoint プレゼンテーション

02: 変数と標準入出力

第1回 プログラミング演習3 センサーアプリケーション

Microsoft PowerPoint - program.ppt [互換モード]

Microsoft Word - Training10_プリプロセッサ.docx

基礎プログラミング2015

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

スライド 1

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

cp-7. 配列

Microsoft PowerPoint - 12.ppt [互換モード]

PowerPoint プレゼンテーション - 物理学情報処理演習

kiso2-06.key

プログラミング及び演習 第1回 講義概容・実行制御

file:///D|/C言語の擬似クラス.txt

Microsoft PowerPoint - 11th.ppt [互換モード]

プログラミング入門1

のプログラムはそのままでは 人間は理解できても コンピュータは理解できません 皆さんが作るプログラムはソースプログラム ( ソースファイル ) と呼ばれます C 言語では *.c という形式にファイルで作成します そのソースプログラムをコンピュータが理解できるようなデータ形式に変換することをコンパイ

プログラミング基礎

PowerPoint プレゼンテーション

数値計算

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

02: 変数と標準入出力

Microsoft PowerPoint - 3.ppt [互換モード]

メソッドのまとめ

02: 変数と標準入出力

02: 変数と標準入出力

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

プログラミングI第10回

Transcription:

第 8 回 関数 (1) 関数の作成

数学ライブラリの関数 以下のような数学関数は, 数学ライブラリに関数として登録されている <math.h> をインクルードすれば使用できる コンパイルするときには, lm を付ける double exp(double x) ee xx double log(double x) llllll ee xx double pow(double x, double y) xx yy double sqrt(double x) xx double cos(double x) cos xx double acos(double x) arccos xx double fabs(double x) 絶対値 xx double floor(double x) 床関数切り捨て : xxを超えない最大の整数 : xx double ceil(double x) 天井関数切り上げ : xx 以上の最小の整数 : xx double round(double x) 四捨五入 : xx に最も近い整数

数学関数の使用 ( 呼び出し ) #include <stdio.h> #include <math.h> double a, b; scanf("%lf", &a); b = cos(a); printf("%f n", b);

引数を 1 つだけもつ関数の定義 例 : double square(double x) x の 2 乗 戻り値の型 (return value) 関数名 引数の型 (arguments) double square(double x) double y; y = x * x; return y; 仮引数 (formal arguments) ( パラメータ ) (parameters) 呼び出し元に関数値 ( 戻り値 ) を戻す (return a value) double a,b; a = 2.3; b=square(a); printf("%f n", b); 関数を呼び出す(call a function) (a の値は実引数 ) (actual arguments)

引数を 2 つもつ関数の定義 例 : double distance(double x, double y) (0, 0) と (x, y) の距離 double distance(double x, double y) double z; z = sqrt(square(x)+square(y)); return z; square は 1 つ前のスライドで自分で定義した関数 sqrt は math.h で定義されている関数 double theta; scanf("%lf", &theta); printf("%f n", distance(cos(theta),sin(theta));

引数や戻り値のない 関数 の定義 #include <stdio.h> 戻り値なし 引数なし void greeting(void) printf("hello! n"); 関数 (function) 手続き (procedure) 戻り値は int 引数なし greeting(); int 型の 0 を OS に戻してプログラムを終了

後方参照の原則 (backward reference) プロトタイプ宣言で前方参照が可能になる (prototype proclamation) (forward reference) int add(int a, int b) int c; c=a+b; return c; 後方参照 int x=1, y=2, z; z=add(x,y); printf("%d n", z); プロトタイプ宣言 int add(int a, int b); int x=1, y=2, z; z=add(x,y); printf("%d n", z); 前方参照 int add(int a, int b) int c; c=a+b; return c;

ローカル変数 ( 局所変数 ) のスコープ (local variable) (scope) int add(int a, int b) int c; c=a+b; return c; 値がコピー されて戻される 異なる変数に 値がコピー される int a, b=2, c=3; a=add(b,c); printf("%d n", a); スコープ : 有効範囲 a, b, c のスコープ ( 局所的 ) a, b, c: ローカル変数 (local variable) これらの a, b, c は名前が同じだが異なる変数 a, b, c: ローカル変数 a, b, c のスコープ ( 局所的 )

グローバル変数 ( 大域変数 ) のスコープ (global variable) double dol2yen(double d); double rate = 116.2; double mydol = 26.0, myyen; myyen = dol2yen(mydol); printf("%f n", myyen); double dol2yen(double d) double yen; yen = d * rate; return yen; rate: グローバル変数 rate のスコープ ( 大域的 ) この rate は大域変数 ( 期待どおり動く )

ローカル変数のライフタイム (lifetime) int countup(void); ライフタイム (lifetime): 生存期間 int one,two; one=countup(); two=countup(); printf("%d n", two); countup count=0 count=1 count のライフタイム ( 局所的 ) countup count=0 count=1 time count のライフタイム ( 局所的 ) int countup(void) int count = 0; count = count + 1; return count; 間違い count : ローカル変数 ローカル変数は, スコープもライフタイムも局所的

グローバル変数のライフタイム int countup(void); int count = 0; 正しい count : グローバル変数 int one,two; one=countup(); two=countup(); printf("%d n", two); countup countup count=0 count=1 count=1 count=2 count のライフタイム : 大域的 ( 永続的 ) time int countup(void) count=count+1; return count; 正しい グローバル変数は, スコープもライフタイムも大域的

擬似乱数を発生する関数 (1/2) (pseud-random number) rand 関数 int rand(void) rand 関数は,0 から RAND_MAX までを範囲とする int 型の擬似乱数を発生して返す. RAND_MAX =2147483647 (=2 31-1) 使用例 : int n = rand(); rand 関数は前回生成した擬似乱数をグローバル変数 r に記憶し, 適当な数 A を用いて r = (A*r)%(RAND_MAX+1); のような処理で新たな擬似乱数を作る

擬似乱数を発生する関数 (2/2) srand 関数 void srand(unsigned seed) srand 関数は, 擬似乱数列の開始点 (seed) をセットする. rand 関数で擬似乱数系列を発生させる前に 1 度だけ実行する. 引数には time 関数を使って現在時刻 ( 秒 ) を与えることが多い. 使用例 :#include <stdlib.h> #include <time.h> srand((unsigned)time(null)); int r1 = rand(); int r2 = rand();

参考 スタティック変数 (static variable) int countup(void); int one,two; one=countup(); two=countup(); printf("%d n", two); スタティック変数は, 過去の記憶を持つ countup countup count=0 count=1 count=1 count=2 count のライフタイム ( 永続的 ) time int countup(void) static int count = 0; count=count+1; return count; count : スタティック変数 宣言と同時に初期値を指定しておくと, はじめて関数が呼び出されたときだけ count は初期値に初期化される count のスコープ ( 局所的 ) スタティック変数は, スコープは局所的, ライフタイムは永続的