Microsoft PowerPoint - prog04.ppt

Similar documents
Microsoft PowerPoint - prog06.ppt

Microsoft PowerPoint - prog03.ppt

ファイル入出力

情報処理演習 B8クラス

ファイル入出力

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

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

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

Microsoft PowerPoint - prog08.ppt

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

演算増幅器

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

PowerPoint Presentation

Microsoft PowerPoint - prog07.ppt

計算機プログラミング

PowerPoint Presentation

PowerPoint プレゼンテーション

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

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

プログラミング基礎

Microsoft PowerPoint - prog05.ppt

gengo1-12

gengo1-12

2006年10月5日(木)実施

gengo1-12

Microsoft PowerPoint - prog03.ppt

Prog1_12th

※ ポイント ※

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

Microsoft PowerPoint - kougi6.ppt

プログラミング実習I

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

PowerPoint プレゼンテーション

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

PowerPoint プレゼンテーション

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

Microsoft Word - no204.docx

02: 変数と標準入出力

02: 変数と標準入出力

PowerPoint プレゼンテーション

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

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

ポインタ変数

ポインタ変数

Prog1_15th

Microsoft PowerPoint - kougi2.ppt

memo

PowerPoint Presentation

Microsoft PowerPoint - prog04.ppt

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

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

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

cp-7. 配列

Microsoft PowerPoint - prog13.ppt

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

kiso2-09.key

Microsoft PowerPoint - 5Chap15.ppt

Microsoft Word - no15.docx

Microsoft PowerPoint - lec10.ppt

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

C言語入門

Microsoft PowerPoint - prog09.ppt

プログラミング基礎

Microsoft PowerPoint - prog09.ppt

Microsoft Word - no103.docx

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

目次

Microsoft Word - 3new.doc

プログラミング実習I

第2回講義:まとめ

memo

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

Prog1_6th

全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎

ポインタ変数

プログラミング基礎

Microsoft PowerPoint ppt

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

Microsoft Word - no11.docx

講習No.12

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

スライド 1

計算機プログラミング

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

データ構造

Microsoft PowerPoint - kougi4.ppt

Microsoft PowerPoint - 11.pptx

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

02: 変数と標準入出力

講習No.1

講習No.9

データ構造

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

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

Microsoft Word - no202.docx

Microsoft PowerPoint pptx

gengo1-2

slide5.pptx

PowerPoint Presentation

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

Transcription:

プログラミング言語 2 第 04 回 (2007 年 05 月 14 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1

今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 14 日分と書いてある部分が 本日の教材です 本日の内容 先週の課題の簡単な解答 ファイルからのからの入力 ファイルへのへの出力 XGraph を使ったったグラフグラフの書き方 第 3 回の課題の簡単な解説 2

第 3 回の課題の簡単な解説 問題 1: 次の printf が何を出力するか答えなさい printf("%s n",str): 文字型の配列 str の内容を文字列として出力し 改行する %s は 引数をポインタ ( アドレス ) として扱い そのアドレスから順番に NULL になるまで 文字を表示します 文字型の配列 str に対して str とだけ書くとアドレスになることを思い出しましょう 第 3 回の課題の簡単な解説 問題 1: 次の printf が何を出力するか答えなさい printf("%u n",str): 文字型の配列 str のアドレスを 符号なし 10 進数として出力し 改行する 配列の [] が無い部分は その配列のアドレスとなります 一番最初の要素のアドレスを同じものになります 3

第 3 回の課題の簡単な解説 問題 1: 次の printf が何を出力するか答えなさい printf("%c n",str[3]): 文字型の配列 str の 4 番目の要素を 文字型として出力し 改行する 文字型の配列の個々の要素は文字型です printf("%u n",&str[0]): 文字型の配列 str の最初の要素を 符号なし 10 進数として出力し 改行する printf( %u n,str): と同じ結果になります 第 3 回の課題の簡単な解説 問題 1: 次のprintfが何を出力するか答えなさい printf("%d n",*&i): 整数型 i の値を 符号つき10 進数として出力し 改行する 右側から考えるとわかりやすいです i : 整数値の変数 ( の値 ) &i : 整数値の変数に & がついているので その値を保存しているアドレス *&I : アドレス (&i) に * がついているので そのアドレスに保存されている変数 ( の値 ) 4

第 3 回の課題の簡単な解説 問題 2: 次の要求を満たすプログラムを書いて提出しなさい 要求 1:1~3までの値のうち いずれかをキーボードから printf("%d n",*&i): 入力したとき 1が入力されたときはMonday と出力し 改行する 2が入力されたときは Tuesday と出力し 改行する 3が入力されたときはWednesday と出力し 改行する 要求 2:1~3 以外の値が入力されたときのことは 考えなくてもよい ポイント : 1. scanf で値を読み込むことができるか? 2. 条件分岐が ちゃんとできるか? 第 3 回の課題の簡単な解説 問題 2: 前半部 #include<stdio.h> // // 入出力を使うので stdio.h を include する main(){ int inti; i; // // 整数型の変数 iを宣言する i scanf("%d",&i); // // 標準入力から読み込み // // i i に符号付き 10 10 進数を代入 代入する先はアドレスで与える 5

第 3 回の課題の簡単な解説 問題 2: 後半部 : if 文を用いた場合 if(i==1){ // // もし iの内容が i 1 であったなら printf("monday n"); // // Monday を出力して改行する }else if(i==2){ // // もし iの内容が i 1 でなく 2 であったなら printf("tuesday n"); // // Tuesday を出力して改行する }else if(i==3){ // // もし iの内容が i 1 や 2 でなく 3 であったあなら printf("wednesday n"); } } switch 文の説明 switch( 整数式 ){ } case ラベル 1: 文 1 case ラベル 2 : 文 2 default: 文 3 整数式を評価し 対応するラベルまでジャンプします 対応するラベルが無い場合 default にジャンプします ラベルの数は任意です default は省略可能です 途中で抜けるときは berak を用います 6

switch 文の説明 #include<stdio.h> int t; scanf("%d",&t); switch(t){ } case 1: 文 1 case 2: 文 2; break; case 3: 文 3 default: 文 3 対応するラベルまでジャンプ 対応するラベルがないと default にジャンプ break で switch 文の外に t=1 のとき t=2 のとき t=3 のとき t=4 のとき 第 3 回の課題の簡単な解説 問題 2: 後半部 : switch 文を用いた場合 } } switch(i){ case 1: 1: printf( Monday n ); // // i i が 1 なら ここに飛ぶ break; // // switch 文の外まででる case 2: 2: printf( Tuesday n ); // // i i が 2 なら ここに飛ぶ break; // // switch 文の外まででる case 3: 3: printf( Wednesday n ); break; // // switch 文の外まででる 7

ファイルの入出力 ファイルへの入出力 C 言語では ファイルへの出力や ファイルからの入力を行うことができる ファイルの入力と出力を行う printf 系の命令 (fprintf, fscanf) が準備されている 標準入力や標準出力への入出力とは異なる点も 対象とするファイルの指定して開く (fopen) 処理の終わったファイルを閉じる (fclose) 8

プログラムの流れ 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) ( 構造体とは何かについては そのうちやります ) ファイル構造体 1. ファイル構造体構造体へのへのポインタポインタを宣言宣言するする 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) 最初に ファイル構造体へのポインタを宣言する必要がある fprintf や fscanf は ファイル構造体へのポインタを通じて 書き込み先の指定等を行う 以下のように宣言する FILE *fp; ( もちろん fp 以外の名前でも良いです ) 9

プログラムの流れ ファイル構造体へのポインタを使って 対象となるファイルを指定 1. ファイル構造体へのポインタを宣言する 例えば FILE *fp; と宣言 2. ファイルを開く (fopen) ファイルを開いて fp と関連づける 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する fp に対して 書き込みや読み込みを行う 4. ファイルを閉じる (fclose) fp とファイル名の関連づけを消して ファイルを閉じます ファイルのオープン fopen は 指定したファイルを開き FILE 構造体へのポインタを返す 書式は fopen(name,action); のようになる ここで name と action は文字列である 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) nameは ファイル名をいれる actionは 以下のうちの何れかをいれる 書き込みのみ(w) 読み込みのみ(r) ファイルの末尾に書き込み(a) 読み書き兼用(w+ or r+) 読み込みとファイルの末尾に書き込み兼用(a+) 10

ファイルのクローズ fclose は 指定したファイルを閉じる 書式は fclose(fp); のようになる ここで fp はファイル構造体へのポインタ 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) 例 : 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) #include<stdio.h> // // 入出力を使うので stdio.h stdio.hを include include FILE *fp; // // ファイル構造体へのポインタ fp fp を宣言 main(){ } ファイル example.txt を書き込み専用で開いて その後 閉じるには fp=fopen("example.txt","w"); fclose(fp); // // ファイルをクローズする example.txt を読み込み専用で 開いて fp にポインタを返す 11

関数 fscanf は データをフォーマットに従って ファイルに出力します 書式は 書き込み 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) fscanf(fp, format [,pointer]); のようになる format として scanf と同様のモノが指定できる 関数 fscanf は データをフォーマットに従って ファイルに出力します 書式は 読み込み 1. ファイル構造体へのポインタを宣言する 2. ファイルを開く (fopen) 3. ファイルへ書き込んだり (fprintf) ファイルからから読み込んだり (fscanf) する 4. ファイルを閉じる (fclose) fprintf(fp, format [,arg]...); のようになる format として printf と同様のモノが指定できる 12

読み書き例 #include<stdio.h> // // 入出力を使うので stdio.h stdio.hを include include FILE *fp; // // ファイル構造体へのポインタ fp fpと fp2 fp2を宣言 int i; i; // // 整数型の変数 i を宣言 main(){ fp=fopen("input.txt","r"); // // 読み込みのみで開く fp2=fopen("output.txt","w");// 書き込みのみで開く fscanf(fp,"%d",&i); fprintf(fp2,"%d",i); fclose(fp); // // ファイルをクローズする fclose(fp2); // // ファイルをクローズする } // // 符合付き 10 10 進数を読み込む // // 符合付き 10 10 進数を書き込む printf の format printf(format [,arg]...); format に従って出力を行う format の部分は 文字列である % から始まるものは 順番に arg を参照して変換される それ以外 ( たんなる文字とか ) は そのまま 例 : int i; char c; char str*; printf("print %d %c %s n",i,c,str); そのまま出る 空白や改行も そのままでる 符合無し 10 進数に置換される 文字列に置換される 文字に置換される 13

XGraph によるグラフの書き方 Xgraph とは 2 次元のグラフを書くプログラム 所定の形式のデータを読み込ませることによって 簡単にグラフを書くことができる 読み込ませるデータはテキストファイル グラフを Postscript 形式で保存することもできる 14

入力データ形式 普通のテキストファイル 1 行に 2 つの値を書く (x 座標と y 座標を書く ) 2 つの値はスペースで区切る 例 : x 座標の値 0 0 1 1 2 4 3 9 4 16 5 25 y 座標の値スペースで区切る 入力データ形式 複数のグラフを書くときは データを空行で分割する 例は整数だけど 実数でも大丈夫 1 つめのグラフ 空行で区切る 2 つめのグラフ 0 0 1 1 2 4 3 9 4 16 5 25 0 0 1 1 2 2 3 3 4 4 5 5 15

Xgraph の使い方 コンソールで xgraph 入力データファイル名 とうつと グラフが出てくる データファイルが xgraph00.dat なら xgraph xgraph00.dat Postscript ファイルでの保存 Hardcopy をクリック 16