プログラミング基礎

Similar documents
プログラミング基礎

ファイル入出力

ファイル入出力

情報処理演習 B8クラス

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

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

PowerPoint プレゼンテーション

PowerPoint Presentation

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

PowerPoint プレゼンテーション

演算増幅器

gengo1-12

gengo1-12

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

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

gengo1-12

C言語講座 ~ファイル入出力編~

memo

Microsoft PowerPoint - prog04.ppt

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

計算機プログラミング

※ ポイント ※

Microsoft PowerPoint - kougi9.ppt

PowerPoint Presentation

2006年10月5日(木)実施

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

Prog1_12th

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

1. ファイルにアクセスするには ファイルにアクセスするには 1. ファイルを開く 2. アクセスする 3. ファイルを閉じるという手順を踏まなければなりません 1.1. ファイルを読み込む まずはファイルの内容を画面に表示させるプログラムを作りましょう 開始 FILE *fp char fname

Microsoft PowerPoint - kougi8.ppt

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

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

memo

Microsoft Word - no204.docx

Microsoft PowerPoint - kougi6.ppt

PowerPoint Presentation

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

02: 変数と標準入出力

練習&演習問題

02: 変数と標準入出力

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

スライド タイトルなし

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

プログラミング基礎

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

データ構造

DVIOUT

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

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

Microsoft Word - no15.docx

Prog1_15th

Microsoft PowerPoint - prog06.ppt

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - kougi4.ppt

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi2.ppt

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

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

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

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

スライド 1

02: 変数と標準入出力

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

PowerPoint プレゼンテーション

kiso2-09.key

演習課題No12

memo

プログラミング演習 土曜日(Q組)

演算増幅器

memo

基礎プログラミング2015

Microsoft Word - cpro_m_13.doc

PowerPoint プレゼンテーション

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l

訋箊æ©�ã…Šã…�ㇰㅩã…�ㅳㇰ - 第13åłž ã…Łã‡¡ã‡¤ã…«å⁄¦ç’ƒ

Microsoft PowerPoint pptx

Microsoft PowerPoint - prog05.ppt

02: 変数と標準入出力

memo

Taro-リストⅠ(公開版).jtd

mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

PowerPoint プレゼンテーション

Microsoft PowerPoint - guidance.ppt

Microsoft Word - 06

C言語入門

スライド 1

データ構造

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

PowerPoint Presentation

memo

DVIOUT

slide4.pptx

Microsoft Word - 3new.doc

Original : Hello World! (0x0xbfab85e0) Copy : Hello World! (0x0x804a050) fgets mstrcpy malloc mstrcpy (main ) mstrcpy malloc free fgets stream 1 ( \n

Microsoft PowerPoint - kougi7.ppt

PowerPoint プレゼンテーション

講習No.12

cp-7. 配列

プログラミング実習I

Transcription:

C プログラミング 演習 アルゴリズム基礎論 演習 第 10 回

今後の予定 12/22( 月 ) 期末試験 (60 分間 ) 場所 :A1611 時間 :16:20~17:20 課題の最終提出締切 :12/19( 金 ) これ以降の新規提出は評価されない 12/22までに最終状況を提示するので, 提出したのに や になってる人は自分の提出内容や提出先を再確認した上で12/26までに問い合わせること

名前体重構造体 構造体とは複数の ( 異なる型の ) 変数を1つの変数に格納することが可能な変数例 ) 構造体 health は以下の全ての情報を格納する 名前 (char 型 ) 年齢 (int 型 ) 身長 (double 型 ) 体重 (double 型 ) health 年齢身長

構造体の宣言 main 関数の前に構造体を宣言する struct 構造体の名前 ( 構造体タグ ) } ; 構造体内部で使う変数 ( メンバ ) の宣言 例 ) struct health } ; char name[100];// 名前 int age; // 年齢 double length;// double weight;// 身長 体重 構造体 health char int double double name age length weight

構造体変数の宣言 <stdio.h> struct health char name[100]; int age; double length; double weight; } ; // 名前 // 年齢 // 身長 // 体重 void main() struct health konishi; struct health yamada; struct health taro, hanako;... } struct 構造体タグ変数名 ;

構造体への値の代入と参照 struct health taro; taro.id= 13066; taro.age = 20; taro.length = 180.0; taro.weight = 70.0; struct health int id; // 学籍番号 int age; // 年齢 double length; // 身長 double weight; // 体重 } ; printf( 学籍番号 :%d, 年齢 :%d n, taro.id, taro.age); printf( 身長 :%f, 体重 %f n, taro.length, taro.weight); 変数名 (taro). メンバ名 (id, age, length, weight) で 参照と代入ができる

構造体変数の宣言 2 struct health int id; // 学籍番号 int age; // 年齢 double length; // 身長 double weight; // 体重 } ; struct health taro= 13066, 20, 180.0, 70.0 }; struct health int name[100]; // 名前 int age; // 年齢 double length; // 身長 double weight; // 体重 } ; struct health taro= Taro YAMADA, 20, 180.0, 70.0 };

構造体の配列 struct score int math; int english; double average; }; main() struct score student[100]; student[0].math = 100; student[0].english = 10; student[1].math = 50;... } 宣言 :struct 構造体タグ配列変数名 [ 個数 ]; 参照及び代入 : 配列変数名 [ 番号 ]. メンバ

復習 1 #include < stdio.h > #include < math.h > 1 point struct point int x; int y; }; double length(struct point a1, struct point a2) double xx, yy; x y } xx = (a1.x - a2.x) * (a1.x - a2.x); yy = (a1.y - a2.y) * (a1.y - a2.y); return sqrt(xx + yy); // sqrt(x) は x の平方根を求める void main() struct point p1, p2; double a; } p1.x = 2; p1.y = 1; p2.x = 5; p2.y = -3; a = length(p1, p2); y p1 (2, 1) a p2 (5, -3) x a = 5

#include < stdio.h > struct exam int a; double b; }; struct exam set(int x, int y) struct exam result; 2 構造体を返す 復習 2 exam a b } result.a = x; result.b = (double)y/x; return result; void main() double a; set(50, 120) hensu a } struct exam hensu; hensu = set(50, 120); a = hensu.b; b a = hensu.b a = 2.4

復習 3 #include < stdio.h > struct bunsu int m; int n; }; struct bunsu seki(struct bunsu X, struct bunsu Y) struct bunsu ans; } ans.m = X.m * Y.m; ans.n = X.n * Y.n; return ans; 3 構造体を引数 構造体を返す bunsu m n A B C void main() struct bunsu A = 10, 3}; struct bunsu B = 6, 5}; struct bunsu C = 2, 7}; struct bunsu D; int a; 10 3 6 5 2 7 } D = seki(a, seki(b, C)); a = D.n; D = A (B C) a = D.n a = 105

メールでの課題提出に関して 課題を 2 種類用意 練習課題 : 特に指定がない場合は, プログラムを提出する必要はない 各課題の指示に従った内容をメール本文に記述 提出課題 : プログラムを提出 ( コメントは各自つけること ) ファイル名 : 第 4 回の場合 sec04-j123456-final.cpp 注意点 : 毎回, 送り先のメールアドレスは変わるので注意 提出先を間違うと, 課題が受理されないことがある

参考

ファイル操作及び入出力関数 ファイル操作の関数 fopen(): ファイルを開く ( ファイル名の指定 ) fclose(): ファイルを閉じる ファイル入出力関数 fprintf(): ファイルへ値を書き込む fscanf(): ファイルから値を読み込む

fopen() とファイルポインタ main() FILE *fp; fp はファイルポインタ fp = fopen( data.txt, r );.. fopen( ファイル名, モード )

ファイルポインタ どの ファイルの どこ を読んでいるのかを示すポインタ このファイルの Space: The final frontier These are the voyages of the Starship, Enterprise Its 5 year mission To explore strange new worlds To seek out new life and new civilizations To boldly go where no man has gone before ここまで読んだ ポインタで示す fp

fopen() 関数 ファイルをオープンし, ファイルポインタを返す FILE *fp; fp = fopen( ファイル名, モード ); モード 動作 ファイルがあるとき ファイルがないとき r 読み出し専用 正常 エラー NULLを返す w 書き込み専用 サイズを0にして上書き 新規作成 a 追加書き込み専用 最後に追加する 新規作成 r+ 読み込みと書き込み 正常 エラー NULLを返す w+ 書き込みと読み込み サイズを0にして上書き 新規作成 a+ 読み込みと追加書き込み 最後に追加する 新規作成

ファイルがオープンできなかった場合, ファイルポインタは NULLを返す - r ( ファイル読み込み ) でファイルが存在しない場合 - w ( ファイル書き込み ) でファイルが書き込み禁止になっている場合 FILE *fp; fopen() のエラー処理 fp = fopen( data.txt, r ); if ( fp == NULL ) printf( ファイルオープンエラー n ); exit(1); // プログラム終了 }

fclose() 関数 ファイル操作後にファイルを使わなくなった場合には fclose() 関数でファイルをクローズ fclose(fp);

ファイルへの値の書き込み fprintf() fprintf( ファイルポインタ, 書き込む内容, ); ファイルポインタを指定する以外は printf と同じ int x=1; FILE *fp; fp = fopen( data.txt, w ); fprintf(fp, 書き込みテスト n ); fprintf(fp, 変数 xの値は %dです, x); 書き込みモードでオープン data.txt 書き込みテスト変数 x の値は 1 です fclose(fp);

ファイルから値の読み込み 1 fscanf() fscanf( ファイルポインタ, 書式, ) ファイルポインタを指定する以外は fscanf と同じ int x1, x2, x3; FILE *fp; fp = fopen( data.txt, r ); 読み込みモードでオープン fscanf(fp, %d, &x1); fscanf(fp, %d, &x2); fscanf(fp, %d, &x3); fclose(fp); x1 = 10 x2 = 15 x3 = 3 10 15 3 17 19 data.txt

EOF(end of file) ファイルの終わりとして,fscanf() は EOF を返す main() int x; FILE *fp fp = fopen( data.txt, r ); if ( fp == NULL ) exit(1); while ( fscanf(fp, %d, &x)!= EOF ) printf( x=%d n, x); } 10 15 3 17 19 EOF data.txt } fclose(fp);