情報処理Ⅰ演習

Similar documents
gengo1-11

Microsoft PowerPoint - 09.pptx

プログラミング実習I

02: 変数と標準入出力

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

02: 変数と標準入出力

02: 変数と標準入出力

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

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

PowerPoint プレゼンテーション

C言語7

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

02: 変数と標準入出力

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

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

02: 変数と標準入出力

概要 プログラミング論 構造体 構造体 複数の変数を組合わせて, ひとまとめにしたもの 簡単 重要 自己参照型, リスト 重要, 難しい S-1 S-2 新しい構造体の宣言 struct 構造体名 { データ型メ

memo

Microsoft PowerPoint - prog07.ppt

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

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

Microsoft Word - no11.docx

Microsoft PowerPoint ppt

プログラミング入門1

Microsoft PowerPoint - prog06.ppt

基礎プログラミング2015

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

C言語講座 後半

Microsoft Word - CHAP2.DOC

Microsoft Word - 3new.doc

gengo1-10

memo

プログラミング実習I

PowerPoint プレゼンテーション

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft PowerPoint pptx[読み取り専用]

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

Microsoft PowerPoint - 11.pptx

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

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

プログラミング入門1

Prog1_10th

Prog1_6th

Microsoft Word - no202.docx

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

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

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

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

CプログラミングI

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

メソッドのまとめ

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

講習No.12

JavaプログラミングⅠ

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

02: 変数と標準入出力

プログラミングI第6回

Microsoft PowerPoint - lec10.ppt

C-programming_kouza4(2007)

Microsoft Word - no12.doc

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

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

C言語講座

PowerPoint Presentation

プログラミング基礎

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

プログラミング演習3 - Cプログラミング -

講習No.12

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

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

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

第2回講義:まとめ

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

Microsoft PowerPoint - 5Chap15.ppt

Microsoft PowerPoint - kougi7.ppt

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

講習No.10

gengo1-2

Microsoft Word - 05

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

PowerPoint Presentation

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

kiso2-09.key

スライド 1

Microsoft PowerPoint - prog04.ppt

02: 変数と標準入出力

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

演算増幅器

PowerPoint プレゼンテーション

目次

Prog1_12th

目次

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

プログラミング入門1

02: 変数と標準入出力

プログラミングI第10回

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

Microsoft PowerPoint pptx

Microsoft PowerPoint - lec06 [互換モード]

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

Transcription:

C プログラミング Ⅱ の基礎

アドレス 変数のために用意されたメモリ領域の位置 アドレス 0x1000 0x1001 0x100 0x1003 0x1004 0x100 0x1006 0x1007 0x1008 0x1009 0x100A 0x100B メモリ 整数型の変数を宣言 int ; アドレス 0x1000 0x1001 0x100 0x1003 0x1004 0x100 0x1006 0x1007 0x1008 0x1009 0x100A 0x100B メモリ 変数 のメモリ領域が確保される

変数のアドレスの参照 アドレス演算子を用いた変数のアドレスの参照 int = ; アドレス演算子 (&) & 変数名 printf(" 変数 の値は %d です. n", ); printf(" 変数 のアドレスは %p です. n", & ); return 0; 変数 の値は です. 変数 のアドレスは 0x1004 です. この値が出力される 変数 のアドレスを出力 アドレス 0x1000 0x1001 0x100 0x1003 0x1004 0x100 0x1006 0x1007 0x1008 0x1009 0x100A 0x100B メモリ 3

アドレスを格納する変数 int = ; int *p; の宣言 型名 * 名 ; p = &; p の宣言 変数 のアドレスを p に格納 = ; p = &; 0x1004 p p には変数 のアドレス 0x1004 が格納される 0x1004 0x100 0x1006 0x1007 p p は変数 を指す 変数の型との型は一致している必要がある 4

による変数の値の参照 間接参照演算子を用いたによる変数の値の参照 間接参照演算子 (*) * 名 ; * p 同じ意味 ただし, あらかじめ p = &; が実行されていることが条件 int = ; int *p; p = &; printf("p が指す変数の値は %d です. n", *p ); p が指す変数の値は です.

のまとめ int 型変数 について & 変数 変数 のアドレス int 型の p について p = &; としたとき p *p 変数 のアドレスを格納した ( p は変数 を指している ) p が格納しているアドレスに記憶領域が設定されている変数 ( p が指している変数 の値 ) 6

への別のアドレスの代入 に別のアドレスを代入する int =, b = 10; int *p; p は変数 を指す p = &; printf("pが指す変数の値は %dです. n", *p ); p = &; 10 b p p = &b; printf("p が指す変数の値は %d です. n", *p ); p = &b; p は変数 b を指す p p が指す変数の値は です. p が指す変数の値は 10 です. 10 b 7

からへのアドレスの代入 に格納されているアドレスを別のに代入する int = ; int *p, *pb; p は変数 を指す p = &; p p = &; pb = p; pb も, p が指している変数 ( ) を指すようにする pb printf("p が指す変数の値は %d です. n", *p ); printf("pb が指す変数の値は %d です. n", *pb ); pb = p; p p が指す変数の値は です. pb が指す変数の値は です. pb 8

による変数の値の変更 をもちいて, そのが指す変数の値を変更する int = ; int *p; p は変数 を指す p = &; printf("pが指す変数の値は %dです. n", *p ); *p = 10; printf("p が指す変数の値は %d です. n", *p ); p が指している変数 ( ) の値を変更する = 10; と書いたのと同じ意味 p = &; p *p = 10; 10 p アスタリスク * を付けること! p が指す変数の値は です. p が指す変数の値は 10 です. 9

引数と つの変数の値を交換する関数を作成してみる void swp(int x, int y); int =, b = ; printf(" の値は %d です. n", ); printf("b の値は %d です. n", b); printf(" 交換します. n"); void swp(int x, int y) int tmp; tmp = x; x = y; y = tmp; 引数で受け取った値を交換する swp(, b); と b の値を交換したい 実行結果 printf(" の値は %d です. n", ); printf("b の値は %d です. n", b); return 0; の値は です. b の値は です. 交換します. の値は です. b の値は です. 交換できていない! 10

引数と 値渡し 実引数の値だけが関数の仮引数に渡される int =, b = ; swp(, b); printf(" = %d b = %d n",, b); void swp(int x, int y) int tmp; tmp = x; x = y; y = tmp; このままでは,b の値は交換されない min 関数 swp 関数 x x b y y コピー swp 関数の x,y の値が交換されるだけである = b = 11

引数と 参照渡し 実引数のアドレスを関数に渡す受け取る側の関数の仮引数はとする int =, b = ;,b のアドレスを渡す swp(&, &b); printf(" = %d b = %d n",, b); min 関数 b min 関数 b void swp(int *x, int *y) int tmp; tmp = *x; *x = *y; *y = tmp; x,y を用いて変数,b の値を交換する = b = swp 関数 x y x y tmp swp 関数 tmp x,y が指す変数,b の値を交換する 1

引数と 参照渡しを用いれば, 関数で計算した複数の値を呼び出し側に返すことが可能となる w にも s にも 7 が入る int keisn(int x, int t); int =, b = ; int w, s; 複数の値を返すことができない例 の値と b の値の和と差の計算を keisn 関数で行いたい w = keisn(, b); s = keisn(, b); printf("w = %d s = %d n", w, s); int keisn(int x, int y) return (x + y); x + y の計算結果しか返せない return (x y); return (x - y); は実行されない w = 7 s = 7 min 関数 w s 7 7 w s keisn 関数 x + y 7 13

引数と 参照渡しを用いれば, 関数で計算した複数の値を呼び出し側に返すことが可能となる void keisn(int x, int y, int *p, int *q); int =, b = ; int w, s; w と s のアドレスを渡す keisn(, b, &w, &s ); printf("w = %d s = %d n", w, s); void keisn(int x, int y, int *p, int *q ) *p = x + y; *q = x y; 足し算, 引き算の結果が w と s に入る w = 7 s = 3 p は w を指し, q は s を指している min 関数 w s 7 3 w s keisn 関数 x y 7 + - 3 p q 14