プログラミング実習I

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

Microsoft PowerPoint ppt

講習No.12

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

Microsoft PowerPoint - 09.pptx

Microsoft Word - no11.docx

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

情報処理Ⅰ演習

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

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

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

PowerPoint Presentation

#include<math.h> 数学関係の関数群で sin() cos() tan() などの三角関数や累乗の pow() 平方根を求める sqrt() 対数 log() などがあります #include<string.h> 文字列を扱う関数群 コイツもまた後日に 4. 自作関数 実は 関数は自分

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

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

Microsoft PowerPoint - prog03.ppt

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

gengo1-10

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

CプログラミングI

memo

PowerPoint Presentation

プログラミング入門1

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog07.ppt

memo

第2回講義:まとめ

gengo1-11

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

memo

kiso2-03.key

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog06.ppt

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

gengo1-12

02: 変数と標準入出力

プログラミング入門1

Microsoft PowerPoint pptx[読み取り専用]

講習No.1

講習No.10

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

Microsoft Word - 03

PowerPoint プレゼンテーション

基礎プログラミング2015

02: 変数と標準入出力

プログラミング基礎

gengo1-12

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

02: 変数と標準入出力

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

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

プログラミング実習I

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

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

Microsoft PowerPoint - 11.pptx

02: 変数と標準入出力

Microsoft Word - no15.docx

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

Prog1_12th

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

gengo1-12

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

Microsoft Word - no202.docx

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

PowerPoint プレゼンテーション

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

PowerPoint Presentation

Prog1_6th

プログラミング基礎

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

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

講習No.12

Taro-ファイル処理(公開版).jtd

Microsoft PowerPoint - lec10.ppt

Microsoft Word - VBA基礎(6).docx

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

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

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

PowerPoint プレゼンテーション

Prog1_10th

2006年10月5日(木)実施

演算増幅器

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

演算増幅器

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

memo

Taro-ポインタ変数Ⅰ(公開版).j

C 言語固有の命令で全部で32 個 の関数C 言語第 1 回 C 言語って?( シラバス 1 2 回目 ) 関数型言語 コンピュータに実行してもらう命令はすべて関数の中に記述されている 関数がプロ グラム

Microsoft PowerPoint - kougi7.ppt

C言語講座

ポインタ変数

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

メソッドのまとめ

講習No.9

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

PowerPoint Presentation

今までの復習 プログラムで最低限必要なもの 入力 ( キーボードから ファイルから ) 出力 ( 画面へ ファイルへ ) 条件分岐 : 条件の成立 不成立により 異なる動作をする 繰り返し : 一定の回数の繰返し 条件成立の間の繰返し 関数の定義 関数の呼び出し C ではそれ以外に ポインタ データ

Microsoft PowerPoint pptx

Transcription:

プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp

関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが, とにかく, 画面に表示してほしい文字列 ( と変数 ) を教えると, 適切に表示処理を行ってくれる

数学の関数と C 言語の関数 p.162 入力 入力された値を 2 乗する関数 出力 f(x) 5 25 入力 "x の値は %d" x (x=10 とする ) 文字列や変数を書式に従って表示する関数 printf() 出力 画面に x の値は 10 と表示

関数はどういうときに便利か ある処理を複数回行う場合 同じソースコードを複数回書くのは面倒, かつ, 変更するときが大変. 間違える可能性も高くなる. ある処理が複数の処理から成り立っている場合 長い手順からなる処理を, 段階ごとに分割し関数として実装すると, 見通しがよくなる. 処理の入力と出力が明確になり, その処理のみに必要な変数などを関数内に隠蔽することができる.

関数の使い方は皆さん既に知っている p.162 printf() や scanf() は関数 C 言語が標準的に用意してくれている標準関数 ( 標準ライブラリ関数 ) の一つ 実はmain() も関数 関数の使い方は既に知っている ソースコード中に関数名と引数 ( ひきすう ) を書く printf("xの値は %d n", x); 加えて, どのような関数を使うのか ( 関数の仕様 ) を,Cコンパイラに教えることも必要 #include <stdio.h>

関数を自作する方法を学ぶ p.163, 164 p.163 プログラムの形式 5.1 関数の定義 p.164 リスト 5.2 整数の正のべき乗を計算する関数 関数の型名 関数名 引数 1 の型名 引数名 1 引数 2 の型名 引数名 2 int powint(int x, int p) { int y = 1; 変数定義 ( 複数行でももちろん可 ) 文 1; } while (p-- > 0) { y *= x; } return y; 文 2; : 関数値 ( 返値あるいは戻り値とも言う )

関数の呼び出しに関連する用語 p.164 p.164 リスト 5.3 を確認 2 0 int powint(int x, int p) { int y = 1; while (p-- > 0) { y *= x; } return y; } : j = powint(2, i); return 文 仮引数 実引数 x p 0 2 i

プロトタイプ宣言 p.166 コンパイラはソースコードを上から下へと一度だけ解釈する リスト 5.3 の関数 powint() は,main() 内で使用される前に, 関数の定義が書かれていた. main() で使用される時には, コンパイラは既に powint() の引数の個数, それぞれの引数の型, 関数値 ( 返値 ) の型などの情報を知っていた. 適切にコンパイル可能 では, 関数の定義が, 関数が呼び出される場所の後ろや, 別のソースコードで書かれている場合には, どうすればよいのか? プロトタイプ宣言をしておく.

プロトタイプ宣言の方法 p.168 p.168 リスト 5.4 を確認 関数の型名 関数名 引数 1 の型名 引数名 1 引数 2 の型名 引数名 2 int powint(int x, int y); セミコロン 関数の定義の1 行目とほぼ同じだが, 末尾にセミコロンを付ける. 仮引数の変数名は, 関数の定義のものと違っていてもよい ( が, 積極的に変える必要もない ).

標準関数のプロトタイプ宣言はどこに? p.167 標準関数 ( 標準ライブラリ関数 ) printf() などに関 する情報をコンパイラはどうやって知ったのか?= 標準関数のプロトタイプ宣言はどこにあるか? これまで定型的に記述していた, ソースコード冒頭の #include <stdio.h> に秘密がある. ヘッダファイルと呼ばれる. ちなみに関数の本体はライブラリファイルに入っている.

#include <stdio.h> は何か? p.167 プリプロセッサ コンパイルの前処理機能 行頭の # から始まる命令がプリプロセッサ向けの命令 他のファイルの読み込み : #include 文字の置換 : #define コンパイル本処理との違い =C 言語の文法の解釈は行わない インクルード プリプロセッサによる他のファイルの読み込み #include <stdio.h> は,( システムのどこかにある )stdio.hという名前のファイル ( ヘッダファイル ) の内容を読み込み, ソースコードのこの場所に展開する.

関数の呼び出し手順 p.175 p.175 中段 関数の呼び出し手順 関数の呼び出しが行われる 実引数の値を, 仮引数にコピー ( 値渡し ) その関数の定義部分を実行する 計算結果をその関数の値として返す 関数を呼び出したプログラムに制御が戻る

仮引数と実引数の確認 p.174 リスト 5.10 抜粋 int main(void) { int t, m; : combi(t, m); : } 実引数 int combi(int n, int r) { : } 箱をまるごと渡すのではない!! 仮引数 変数 t と m は関数 main() 専用 3 t 3 n 変数 n と r は関数 combi() 専用 2 m 値渡し 2 r

局所変数 : 変数の通用範囲 p.176 変数には通用範囲がある. 原則 : 定義されたブロック {} の中でのみ有効. ソースコードの以降全部で有効, ではないので注意. 一番外側 (main() 関数などの外 ) で定義された場合は定義位置以降全体で有効 ( グローバル変数 ). 関数の中で局所変数の値を書き換えても, 呼び出し側の変数は影響を受けない. 関数から複数の値を返したい場合は, ポインタを用いる ( 本実習では扱わない ) けど配列を関数に渡すところで, その香りが出てくるんや

関数の引数は 値渡し int func(int x) { x = x * 2; return x; } int main(void) { int x = 1; int y; } y = func(x); printf("x = %d n", x); 呼出元と呼出先の変数は, 名前は同じでも別のもの なので, 関数内で x を 2 倍しても... p.176 ここで出力される x の値は, 2 ではなく 1.

その他の知識 p.180 引数や返値が無い場合 : void 型 void ex2(int x); void ex3(void); 値を返さない関数 引数が無く値を返さない関数 呼出時の引数の個数は, プロトタイプ宣言 ( もしくは関数定義 ) の引数の個数と一致する必要あり. 変数の型が異っている場合, 自動的に ( 暗黙のうちに ) 型変換が行われる. 同じ名前の関数は定義できない. 注 : C++ ではできるようになっており, どの関数を呼び出すかは引数の型で区別される.