PowerPoint Presentation

Similar documents
PowerPoint Presentation

PowerPoint プレゼンテーション

情報処理演習 B8クラス

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

PowerPoint Presentation

ファイル入出力

ファイル入出力

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

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

gengo1-12

数値計算

プログラミング基礎

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

プログラミング基礎

演算増幅器

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

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

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

kiso2-06.key

2006年10月5日(木)実施

gengo1-12

計算機プログラミング

Prog1_12th

gengo1-12

Microsoft PowerPoint - prog04.ppt

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

講習No.9

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

演算増幅器

PowerPoint プレゼンテーション

講習No.12

Microsoft Word - 3new.doc

PowerPoint プレゼンテーション

※ ポイント ※

memo

第2回講義:まとめ

Microsoft PowerPoint - kougi6.ppt

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

USB ID TA DUET 24:00 DUET XXX -YY.c ( ) XXX -YY.txt() XXX ID 3 YY ID 5 () #define StudentID 231

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

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

Microsoft PowerPoint - prog05.ppt

プログラミング実習I

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

PowerPoint プレゼンテーション

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

Microsoft PowerPoint - kougi4.ppt

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

02: 変数と標準入出力

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

Prog1_10th

スライド 1

02: 変数と標準入出力

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi2.ppt

cp-7. 配列

02: 変数と標準入出力

講習No.8

Microsoft Word - no103.docx

02: 変数と標準入出力

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

Microsoft PowerPoint - lec10.ppt

のプログラムはそのままでは 人間は理解できても コンピュータは理解できません 皆さんが作るプログラムはソースプログラム ( ソースファイル ) と呼ばれます C 言語では *.c という形式にファイルで作成します そのソースプログラムをコンピュータが理解できるようなデータ形式に変換することをコンパイ

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

プログラミング基礎

kiso2-09.key

02: 変数と標準入出力

Microsoft Word - no204.docx

02: 変数と標準入出力

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

02: 変数と標準入出力

Microsoft Word - no11.docx

Microsoft PowerPoint - kougi8.ppt

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

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

02: 変数と標準入出力

DVIOUT

<4D F736F F D2091E63589F182628CBE8CEA8D758DC08E9197BF2E646F6378>

02: 変数と標準入出力

ポインタ変数

02: 変数と標準入出力

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

プログラミング実習I

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

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

Microsoft Word - 18環設演付録0508.doc

gengo1-8

Microsoft PowerPoint - guidance.ppt

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

02: 変数と標準入出力

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

PowerPoint プレゼンテーション

Microsoft Word - no202.docx

Prog1_15th

Microsoft Word - no15.docx

9 ライブラリ関数 ( 教科書 P.84) C 言語には使用頻度が高そうな機能は関数として用意されており, それらは幾つかのライブラリに分類されている. それらの総称を C 言語標準ライブラリと呼ぶ. 次を参照のこと.

PowerPoint Presentation

PowerPoint Presentation

Prog1_6th

データ構造

Transcription:

第 7 回文字列数学関数ファイルの入出力 芝浦工業大学情報工学科青木義満 今回の講義内容 文字列 文字列の配列の扱い 関数への受け渡し 数学関数の利用 平方根, べき乗, 三角関数など ファイル入出力

文字列とは? (p.0) 文字列リテラル 文字 つつ : A, B, 複数の文字の並び= 文字列 puts( ぷろぐらみんぐ入門 ); で囲まれた部分 = 文字列リテラルという 文字列リテラルとナル文字 (NULL) 文字列リテラルの末尾には, 必ずナル文字が付加 ABCD A B C D 0 0 ナル文字 4 文字 + 文字 3 文字列型 文字を格納するためのデータ型 char 型 文字の並び ( 文字列 ) を格納するには? char 型の変数を文字数 +ナル文字分用意 char 型の配列で実現!! ABCD A B C D 0 4 文字 + 文字 char str[5];? 要素数 5 の文字型の配列 4

文字列を格納する配列 (p.0) ソースファイル名 : list090.c 文字列を char 型の配列に格納し, 表示 int main(void) { char str[4]; /* 文字列を格納する配列 */ str[0] = 'A'; /* 代入 */ str[] = 'B'; /* 代入 */ str[] = 'C'; /* 代入 */ str[3] = ' 0'; /* 代入 */ printf(" 文字列 str は %s です n", str); /* 表示 */ return (0); 5 文字列の表示 初期化 文字列を printf 関数で表示 変換指定 : %s を使用 printf( 文字列は %s です n, str ); 文字配列の初期化 変換指定 配列名を指定 前ページの例のように, 一文字づつの代入は大変 以下の形式で, 配列にまとめて文字を代入可能 配列の要素数は省略可能 (a) char ss[ ] = { A, B, C, D, 0 ; (b) char ss[ ] = ABCD ; 6 3

文字列の初期化と表示 (p.) ソースファイル名 : list0903.c 文字配列を初期化し,printf で表示 int main(void) { char str[ ] = "ABC"; /* 初期化 */ printf(" 文字列 str は %s です n", str); /* 表示 */ return (0); 7 文字列の読込み scanf 関数による文字列の読込み 名前を格納する文字配列を用意 char name[40]; 39 文字までの文字を格納可 scanf の使い方 scanf( %s, name ); 文字列用変換指定 配列名 ( 文字配列の場合,& は不要!) 8 4

文字列の読込み (p.) ソースファイル名 : list0904.c 名前を表す文字列を読込み, 挨拶をする int main(void) { char name[40]; printf(" お名前は :"); scanf("%s", name); printf(" こんにちは %s さん!! n", name); return (0); 9 文字列の配列 (p.4) 文字列に名前データを格納 char name[ ] = aoki ; 複数の名前データの扱い char name[ ] = aoki ; char name[ ] = tokunaga ; char name3[ ] = okura ; 添え字変数を使っていないので, for 文で回せない! 同じ型のデータの集合 配列で実現 文字列を配列として扱えれば便利! 0 5

文字列の配列の実現 文字列のデータ構造 char name[ ] = aoki ; name a o k i n char name[ ] = tokunaga ; char name3[ ] = okura ; name t o k u n a g a n name3 o k u r a n 文字列の配列 つの文字列自体が文字の集合 配列 複数の文字列を配列として扱うには? 次元配列 0 3 4 5 6 7 8 name[3][9] 名前の文字数 (9 文字分 ) 名前の数 ( 文字列データの個数 ) name[0] name[] name[] a o k i n n n n n t o k u n a g a n o k u r a n n n n 文字列の配列の実現 ソースファイル名 : list0906.c (p.4) 複数の氏名データを文字列の配列で実現, 表示 int main(void) { char name[3][9] = { "aoki", "tokunaga", "okura" ; int i; 文字列の配列の宣言と初期化 printf("name[0] = %s n", name[0]); printf("name[] = %s n", name[]); printf("name[] = %s n", name[]); for(i=0; i < 3; i++){ printf("name[%d] = %s n", i, name[i]); 文字列の配列の表示 return(0); 6

文字列配列への文字列の読込み ソースファイル名 : list0907.c (p.5) キーボードから複数の氏名データを文字列配列に読み込み, 表示 int main(void) { char name[3][8]; int i; 文字列の配列の宣言と初期化 ( 文字数を多めに確保 ) printf( 名前を入力 n"); for(i=0; i < 3; i++){ printf( name[%d] :", i); scanf( %s, name[i]); printf(" 名前を表示 n"); for(i=0; i < 3; i++){ printf("name[%d] = %s n", i, name[i]); return(0); キーボードから文字列の配列へデータを読込み注意 :scanf 関数は, 文字列の場合,& はいらない! 文字列の配列の表示 3 数学関数の必要性 先週の課題 得点データ 平均点 : 分散 : 標準偏差 : : x avg n var n i n i std ( i,,3,... n) n i n : データ数 ( 人数 ) x ( x avg) i i var for 文, + 演算子 乗の計算 (x-avg)*(x-avg) 平方 b 根? n 乗, 平方根,sin, cos 数値計算用の便利な関数は? 数学関数 4 7

C 言語の数学関数 C 言語標準の便利な数学関数群 sqrt( 平方根 ),pow(n 乗計算 ),sin, cos, tan( 三角関数 ), その他 5 数学関数をプログラム中で使用するには? ソースファイルに数学関数定義の記述された math.h をインクルード ソースファイル :xxx.c #include <math.h> Int main(void){ 数学関数用ヘッダーをインクルードb math.h コンパイル時に, 以下の記述を追加 gcc xxx.c -o xxx -lm ソースファイル名 実行ファイル名 -l リンクオプション ( 使用する関数を指定 ) m math.lib( 数学関数 ) の m 6 8

代表的な数学関数たち () 平方根の計算 sqrt 関数 仕様 double sqrt ( double x ); 役割 べき乗の計算 pow 関数 double の値を受け取り, その平方根を計算して double の値で返す y = sqrt(4.0) y.0 仕様 double pow ( double x, double y ); 役割 x の y 乗を計算し, その結果を double の値で返す z = pow( 4.0,.0) z 6.0 7 数学関数の使用例 () ソースファイル名 :math.c 平方根, べき乗の計算 #include <math.h> math.h のインクルードを忘れずに! int main(void) { double x, y, z; printf("input x : "); scanf("%lf", &x ); y = sqrt(x); コンパイル方法 gcc math.c -o math -lm z = pow(x,.0); printf(" 入力値 = %f n", x ); printf(" 平方根 = %f n", y ); printf(" 乗 = %f n", z ); return(0); 8 9

代表的な数学関数たち () 三角関数の計算 sin, cos, tan 関数 仕様 役割 double sin ( double x ); double cos ( double x ); double tan ( double x ); 角度 ( 単位ラジアン ) を受け取り,sin, cos, tan を計算して double の値で返す 高校の復習ラジアン 80 = π( ラジアン ) = π/80 ( ラジアン ) 角度を で入力し, ラジアンに変換 x x*(π/80) 9 数学関数の使用例 () ソースファイル名 :math.c 三角関数 sin, cos, tan の計算 #include <math.h> int main(void) { double x, sin_x, cos_x, tan_x; double radian; math.h のインクルードを忘れずに! printf("input x : "); scanf("%lf", &x ); 角度を入力 ( 単位は ) radian = x * (PI / 80.0); sin_x = sin(radian); cos_x = cos(radian); tan_x = tan(radian); printf(" 入力値 = %f n", x ); printf("sin = %f n", sin_x ); printf("cos = %f n", cos_x ); printf("tan = %f n", tan_x ); return(0); 角度の単位を ラジアンに変換 PI : πの値,math.h 内でマクロ定義 #define PI 3.45 sin, cos, tan の計算 コンパイル方法 gcc math.c -o math -lm 0 0

その他の数学関数の例 ( 他にもあります ) pow(x, y) x の y 乗 sqrt(x) 平方 sin(x) サイン cos(x) コサイン tan(x) タンジェント asin(x) アーク サイン acos(x) アーク コサイン atan(x) アーク タンジェント sinh(x) ハイパボリック サイン cosh(x) ハイパボリック コサイン tanh(x) ハイパボリック タンジェント exp(x) e の x 乗 log(x) 自然対数 log0(x) 基底 0の対数 abs(x) 絶対値 (int 用 ) fabs(x) 絶対値 (double 用 ) * 三角関数の角度はラジアン ファイルとは何か? これまでのプログラム プログラムが終了すると, 計算結果などのデータは保存されない 変数の寿命は有限 ファイルの必要性 プログラム中のデータをファイルへ保存可能 ファイル内のデータをプログラム中に読み込み 間接的に他のプログラムとデータのやりとり ファイルの入出力

ファイルとは? 文章, 画像, 音楽データ ファイルとして保存 ファイルの構造 ハードディスク, フロッピーディスク CD-ROM, メモリ - カード等 パソコンでは, データは全てメモリ上に記録 メモリ管理の単位 : バイト (byte) バイト単位のデータの連なり = ファイル 3 ファイルへのデータの書き込み ファイルにデータを書き込む際の手順 ファイルを開く どのファイルに対して ( ファイル名 )? どのような形式で?( テキスト or バイナリ, Read or Write) データの書き込み 関数を使って, データをファイルに書き込む ファイルを閉じる 使ったファイルを必ず閉じる 4

ファイルを開く ~ fopen 関数 データを書き込む先の ファイル名 を指定 どんなモードでファイルを開くか? 書き込み用 読込み用 読み書き用 ファイルを開く操作 FILE *fp; FILE *fp ( ファイルポインタ ) fp = fopen( file.txt, w ); ファイルを指定 file.txt ( ファイル ) ファイル名 ファイルを開く際のモード fp を介して, ファイルにアクセスが可能! 5 ファイルを開く際のモードの種類 ( テキストファイル ) モード r w a r+ w+ a+ 意味 読込み用にファイルを開く ファイルが存在しない場合や見つからない場合は失敗する 書き込み用にファイルを作成 ファイルが存在する場合はそのファイルの内容は破棄する 追加書き込みのために既存ファイルを開く ファイルが存在しない場合には作成する 読み書き用にファイルを開く ファイルは存在していなければならない 読み書き用にファイルを作成 ファイルが存在する場合には, そのファイルの内容は破棄する 読込みと追加の両方のモードでファイルを開く ファイルが存在しない場合は作成する 6 3

ファイルへのデータの書き込み ~ fprintf 関数 printf 関数 ( 画面へのデータ出力 ) fprintf 関数 (file へのデータ出力 ) fprintf 関数の書式 printf 関数 printf( i の値は %d です n, i ); fprintf 関数 fprintf( fp, i の値は %d です n, i ); file.txt i の値は です データ書き込み先 のファイル ( ポインタ ) 7 fprintf 関数の使用例 実数データの書き込み double x fprintf( fp, %f n, x ); 文字列データの書き込み char str[56] fprintf( fp, %s n, str ); 複数の型のデータを 行に書き込み char name[ ] = morishima ; int student_id = 00; 学籍番号 double tensu = 95.5; 点数 名前 fprintf( fp, %d %s %f n, student_id, name, tensu ); 8 4

ファイルを閉じる 使い終わったら, 後片付け ファイルを閉じる ファイルを開く時に指定したファイルポインタを指定 fclose(fp); 9 ファイルへのデータ書き込み例題 ソースファイル名 :fileio.c 様々なデータをファイルに書き込み int main(void) { ファイルポインタ宣言 FILE *fp; int student_id = 00; char name[ ]= "morishima"; ファイルに書き込むデータ double tensu = 95.5; fp = fopen("test.txt","w"); fprintf( fp, "%d n", student_id ); fprintf( fp, "%s n", name ); fprintf( fp, "%f n", tensu ); test.txt という名前でファイルをオープン ( 書き込み用 ) fprintf( fp, "%d %s %f n", student_id, name, tensu ); fprintf( fp, "%d t%s t%f n", student_id, name, tensu ); データをファイルに書き込み fclose(fp); ファイルを閉じる return(0); 30 5

演習課題 ) 名前の入力とファイルへの書き込み (kada7-.c) キーボードから数人分の氏名を入力し, 入力した氏名データを画面表示した上で, 以下のようにテキストファイルに保存せよ name.txt scanf char name[num][8]; fprintf ) 数学関数を用いた数値計算 (kadai7-.c) 参考 : Aoki Tokunaga Okura Morishima Komiya つのベクトルの成分 P (x, y), P (x, y) をキーボードから入力し, 内積の値を利用して, つのベクトルの成す角度 θ( ) を求めよ o θ P (x, y ) P (x, y ) P P x * x P P cos P P y * y P P P P cos P x y P P cos ( ) P P cos - : アークコサイン acos 関数使用 θ はラジアンで出るので, 角度 ( ) に変換して表示 3 演習課題 3) 数学関数を用いた数値計算 (kadai7-3.c) 以下の 次方程式の係数 (a, b, c) を入力し, その方程式の解が 実数解 ( つ ) 実数解 ( つ ( 重解 )) 3 虚数解 のどの解を持つかを判別せよ また, 実数解を持つ (,) 場合には, その解を求めて表示せよ ax bx c 0 解の判別 X=? 3 6