Microsoft Word - no11.docx

Similar documents
Microsoft Word - no202.docx

Microsoft Word - no15.docx

Microsoft Word - no103.docx

プログラミング実習I

Microsoft Word - no13.docx

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

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

Microsoft Word - no12.doc

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

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

プログラミング入門1

講習No.12

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

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

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

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

gengo1-11

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

情報処理Ⅰ演習

Microsoft Word - no206.docx

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

Microsoft PowerPoint - lec10.ppt

02: 変数と標準入出力

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

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

gengo1-10

ファイル入出力

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

ファイル入出力

Microsoft Word - 3new.doc

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

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

Microsoft PowerPoint - 11.pptx

メソッドのまとめ

02: 変数と標準入出力

Microsoft PowerPoint - prog08.ppt

Prog1_6th

プログラミング基礎

kiso2-09.key

基礎プログラミング2015

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

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

講習No.9

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

ポインタ変数

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

02: 変数と標準入出力

スライド 1

Prog1_6th

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

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

Microsoft PowerPoint - prog07.ppt

ポインタ変数

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

Microsoft Word - VBA基礎(6).docx

CプログラミングI

PowerPoint Presentation

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

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

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

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

PowerPoint Presentation

プログラミング入門1

Prog1_10th

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

PowerPoint Presentation

ポインタ変数

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

Microsoft Word - no02.doc

Microsoft Word - no205.docx

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

<4D F736F F D2091E63589F182628CBE8CEA8D758DC08E9197BF2E646F6378>

PowerPoint プレゼンテーション

講習No.1

演習課題No12

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

プログラミング基礎

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

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

講習No.10

Microsoft Word - no14.docx

スライド 1

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

memo

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

C C UNIX C ( ) 4 1 HTML 1

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

02: 変数と標準入出力

slide5.pptx

PowerPoint プレゼンテーション

1. 入力した文字列を得る 1.1. 関数 scanf() を使う まずは関数 scanf() を使ったプログラムを作ってみましょう 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> #define SIZE 128 main(

Microsoft Word - 03

kiso2-03.key

Microsoft PowerPoint - 09.pptx

Report#2.docx

kiso2-06.key

cp-7. 配列

Transcription:

3. 関数 3.1 関数関数は数学の関数と同じようなイメージを持つと良いでしょう 例えば三角関数の様に一つの実数値 ( 角度 ) から値を求めますし 対数関数の様に二つの値から一つの値を出すものもあるでしょう これをイメージしてもらえば結構です つまり 何らかの値を渡し それをもとに何かの作業や計算を行い その結果を返すのが関数です C 言語の関数も基本は同じです 0 cos 1 cos(0) = 1 2 4 log 2 log 2 4 = 2 まず 簡単に関数の記法です return は途中にあってもよく その場合はそれ以降は実行されません 関数の戻り値の型関数名 ( 型 1 仮引数 1, 型 2 仮引数 2,...) { 宣言と文 return ( 変数 ); 一つの例として 一の位の数字を返す関数を作ります ex19.c /* 一の位の数字の関数 */ int lastdigit(int n); /* プロトタイプ宣言 */ printf(" 整数を入力してください :? "); scanf("%d",&x); printf("%d の一の位の数字は %d です \n", x, lastdigit(x)); /* 戻り値の型が int 型 引数が int 型の関数 lastdigit を宣言 */ int lastdigit(int n) { return (n % 10); 13

応用プログラミング I II 2014.12.1 ここで int lastdigit(int n){ の部分が関数を定義している部分 lastdigit (x) が関数を呼び出す部分です 定義する部分で括弧の中にある変数を仮引数といい 呼び出す側で括弧の中にある変数を実引数といいます 実引数の値が仮引数に渡されて 関数の中で使われます ところで 関数の定義は最後にあります つまり lastdigit(x) と関数を呼び出す段階では lastdigit 関数の型や引数の数や型などがわかりません したがって この関数の呼び出しが正しいかどうかの判断ができないのです そこで プロトタイプ宣言をおこなって 関数の型や引数の型をあらかじめ教える必要があります 使う時点で関数が定義されていない場合はプロトタイプ宣言をするのが原則です ところでこのプログラムの main の部分を見てみましょう printf(" 整数を入力してください :? "); scanf("%d",&x); printf("%d の一の位の数字は %d です \n", x, lastdigit(x)); ここの int main(void) も実は関数だったのです つまり 関数の名前は main 引数はない(void はないことを表す特別の型 ) 戻り値は int 型である関数を定義していたのです C では実行の際には必ず main 関数が呼ばれるのです 逆に言えば main 関数がなければ C のプログラムは実行できないということなのです さらに 少し考えてみましょう ここでは printf を使っています この printf は形からわかるように関数です では この関数はどこで定義されているのでしょうか? 残念ながらどこでも定義されていません では どこかでプロトタイプ宣言されているのでしょうか? 一見ではどこにもプロトタイプ宣言がされていないように見えますが 実はきちんとプロトタイプ宣言がされているのです 実は の部分ではヘッダーファイル stdio.h は読み込むという命令で このヘッダーファイルの中に標準で用意されている関数のプロトタイプ宣言が書かれているのです そのため 関数の型や引数の型がチェックすることができ ゆえに関数を利用することができるのです 関数の実態は ライブラリという形で ( すでにコンパイルされて ) ハードディスクに入れてあります この関数を使うためにプロトタイプ宣言されたヘッダファイルを読み込むわけです もし ヘッダーファイルを読み込まなかったら エラーが起きることになります 14

もう少し簡単な例を出します ex20.c /* 2 乗を計算する関数 3 乗を計算する関数 */ int sqr(int n); /* sqr 関数のプロトタイプ宣言 */ int cub(int n); /* cub 関数のプロトタイプ宣言 */ int x, y; printf(" 整数を入力してください :"); scanf("%d",&x); y = sqr(x); printf("%d の 2 乗は %d です \n", x, y); printf("%d の 3 乗は %d です \n", x, cub(x)); printf("%d の 4 乗は %d です \n", x, sqr(y)); printf("%d の 5 乗は %d です \n", x, y * cub(x)); printf("%d の 6 乗は %d です \n", x, cub(sqr(x))); printf("%d の 8 乗は %d です \n", x, sqr(sqr(y))); printf("%d の 9 乗は %d です \n", x, cub(cub(x))); /* sqr 関数の定義 */ int sqr(int n) {/* 戻り値の型が int 型 引数が int 型の関数 */ return (n * n); /* cub 関数の定義 */ int cub(int n) {/* 戻り値の型が int 型 引数が int 型の関数 */ return (n * n * n); ここのように 関数の結果を変数に入れて利用しても良いですし 関数の括弧の中に関数の呼び出しを書いてもかまいません 3.2 複数の引数をもつ関数引数の数は1つだけでなく複数あってもかまいません その場合は, を間において仮引数を必要な数だけ並べます 呼び出す側でも 実引数をその数だけ並べなければなりません また 関数の中で 変数を宣言したり if 文や for 文も利用できます 15

ex21.c /* べき乗を計算する関数 */ int power(int m, int n); /* プロトタイプ宣言 */ int x, y; printf(" 整数を入力してください : "); scanf("%d", &x); printf(" 何乗を計算しますか :"); scanf("%d", &y); printf("%d の %d 乗は %d です \n", x, y, power(x, y)); /* power 関数の定義 */ int power(int m, int n) { int i, x = 1; for(i = 0; i < n; i++) { x *= m; return (x); 3.3 文字の関数 文字も数値でしたから 関数を作ることもできます ex22.c /* 文字の関数 */ int kind(char c); /* プロトタイプ宣言 */ char lower(char c); char c; printf(" 文字を入れてください : "); scanf("%c", &c); x = kind(c); printf(" 種類 =%d\n", x); if(x == 1) { printf(" 小文字に直すと %c\n", lower(c)); 16

/* kind 関数の定義 */ int kind(char c) { if(c >= '0' && c <= '9') { else if(c >= 'A' && c <= 'Z') { return(1); else if(c >= 'a' && c <= 'z') { return(2); else { return(3); char lower(char c) { if(c >= 'A' && c <= 'Z') { c = c + 32; return(c); 戻り値は文字にするのか他のものにするのかをきちんと考える必要があります ex23.c /* 文字列の簡単な例 */ char next_char(char c); char str[81]; /* 80 文字までの文字列が格納できるように */ int i; printf(" 文字列を入れてください :"); scanf("%s", str); /* ここは &str としないことに注意 */ for(i = 0; str[i]!= '\0'; i++) { str[i] = next_char(str[i]); printf("1 文字ずらすと %s\n", str); return (0); char next_char(char c) { return(c + 1); 17

練習問題 3.1 次は平成 23 年度の大学入試センター試験数学 II B の問題の一部である 今回はまず 上の操作に当る関数 つまり 変換するための関数を f とおいて! x # (x が偶数 ) f (x) = " 2 # $ 3x +1 (x が奇数 ) という関数を作りなさい ex24.c /* 関数で変換する */ int f(int x); /* プロトタイプ宣言 */ printf(" 調べる整数を入力してください "); scanf("%d", &x); printf("%d %d", x, f(x)); return (0); int f(int x) { 練習問題 3.2 (ex25.c) 次は東京の電車の中にあった広告である この広告の iuuq://xxx.dzcfsefgfotf.kq/epeb.ajq の部分の暗号を解読するプログラムを作成しなさい 18