第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){

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

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

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

プログラミング入門1

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

プログラミング実習I

Microsoft PowerPoint pptx[読み取り専用]

Microsoft Word - no11.docx

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

Microsoft Word - 03

gengo1-10

Microsoft PowerPoint - prog05.ppt

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

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 14Chap17.ppt

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

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

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 Word - Cプログラミング演習(12)

スライド 1

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

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

Microsoft PowerPoint ppt

Program Design (プログラム設計)

02: 変数と標準入出力

Microsoft Word - no15.docx

gengo1-11

02: 変数と標準入出力

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

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

情報処理Ⅰ演習

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

02: 変数と標準入出力

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

memo

プログラミング入門1

02: 変数と標準入出力

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

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

02: 変数と標準入出力

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

Prog1_6th

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

Microsoft PowerPoint - 5Chap10.ppt

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

PowerPoint Presentation

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

Microsoft PowerPoint - prog07.ppt

02: 変数と標準入出力

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

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

講習No.12

kiso2-09.key

講習No.10

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

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

PowerPoint プレゼンテーション

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

プログラミング実習I

memo

PowerPoint プレゼンテーション

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

配列, 関数, 構造体

02: 変数と標準入出力

memo

スライド 1

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

CプログラミングI

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

cp-7. 配列

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

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

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

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

kiso2-06.key

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

Javaプログラムの実行手順

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

基礎プログラミング2015

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

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - chap10_OOP.ppt

02: 変数と標準入出力

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

02: 変数と標準入出力

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

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

メソッドのまとめ

プログラミング入門1

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

演算増幅器

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

プログラミング基礎

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

数値計算

Transcription:

第 9 回 関数 (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;

ローカル変数 ( 局所変数 ) のスコープ (1/2) (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 のスコープ ( 局所的 )

ローカル変数 ( 局所変数 ) のスコープ (2/2) double dol2yen(double d); double mydol= 26.0, rate = 116.2, myyen; myyen = dol2yen(mydol); printf("%f n", myyen); double dol2yen(double d) double yen; yen = d * rate; return yen; mydol, rate, myyen: ローカル変数 mydol,rate,myyen のスコープ d: ローカル変数 yen : ローカル変数 d, yen のスコープ この rate はスコープの外に書かれているのでコンパイルエラー

グローバル変数 ( 大域変数 ) のスコープ (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); int one,two; one=countup(); two=countup(); printf("%d n", two); int countup(void) int count = 0; count = count + 1; return count; ライフタイム (lifetime): 生存期間 countup count=0 count=1 count のライフタイム ( 局所的 ) count : ローカル変数 countup count=0 count=1 ローカル変数は, スコープもライフタイムも局所的 time count のライフタイム ( 局所的 )

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

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

擬似乱数を発生する関数 (2/2) (pseud-random number) 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(); srand 関数を使うときは #include < stdlib.h> が必要

参考 スタティック変数 (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 のスコープ ( 局所的 ) スタティック変数は, スコープは局所的, ライフタイムは永続的