Cプログラミング演習資料.

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第6回関数(2). プログラミング入門2 2 今回の講義内容 関数 配列データの受け渡し ( p.130 ~) 入出力と文字 ( p.198 ~) 文字列の基本 ( p.208 ~)
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
プログラムのパタン演習 解説.
情報処理演習C2 ファイル操作について (2).
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
プログラミング論 数値積分
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング論 I 行列の演算
プログラミング序論演習.
プログラミング入門2 第6回 関数(2) 芝浦工業大学情報工学科 青木 義満
プログラミング演習(2組) 第12回
C言語 配列 2016年 吉田研究室.
第6章 2重ループ&配列 2重ループと配列をやります.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
プログラミング論 ファイル入出力
プログラミング入門2 ファイルの入出力 ポインタ 芝浦工業大学情報工学科 青木 義満
繰り返し計算 while文, for文.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
関数の定義.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
フーリエ級数展開 ~矩形波について~ 長江 栞 中島 涼 中村 勇樹
高度プログラミング演習 (03).
知能情報工学演習I 第12回(後半第6回) 課題の回答
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
プログラミング入門2 第11回 情報工学科 篠埜 功.
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
プログラミング論 ファイル入出力
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
関数への道.
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
疑似乱数, モンテカルロ法によるシミュレーション
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
演習07-0 “Hello\n” “World!\n”と
Cプログラミング演習資料.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2)
プログラミング序論演習.
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
精密工学科プログラミング基礎 第7回資料 (11/27実施)
extern の意味 (C プログラミング演習,Visual Studio 2019 対応)
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
演習00-0 “Hello\n” “World!\n”と
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
高度プログラミング演習 (07).
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
プログラミング演習I 補講用課題
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

Cプログラミング演習資料

ファイルからの読み込み ファイルから整数のデータを読み込む方法に二通り:比較しよう int n,i,ar[NUM]; FILE *fp; 共通部分 NUMの値は 1000などとする int n,i,ar[NUM]; FILE *fp; fp= fopen(FName,"r"); for(i=0; i<NUM; i++) { fscanf(fp,"%d",&ar[i]); } n =0; while (fscanf(fp,”%d”,&ar[n]) != EOF) { n++; } ファイルの行数が既知(NUM行)の場合にしか使えない 少なかったり多かったりすると問題が起きる ファイルの行数が未知でも大丈夫 読み込んだ個数がnの値となっている  ∴お勧め!

ファイルのデータを使う場合のmain関数 #define NUM 100 int main(void) { int i=0,ar[NUM]; FILE *fp = fopen("data.txt","r"); while ( fscanf(fp,"%d",&ar[i]) != EOF ) { printf("%d ", ar[i]); i++; } fclose(fp); printf("\n平均=%f, 分散=%f\n",mean(ar,i),var(ar,i)); return 0; 平均を求める関数meanの呼び出し 分散を求める関数varの呼び出し データを記憶した配列(ar)と要素数(n)を引数として、それぞれの関数を呼び出す

関数… int main(void) { int ar[NUM1], br[NUM2], cr[NUM3]; // 途中省略 // arの和を求める sumA = 0; for (i=0; i < NUM1; i++) { sumA += ar[i]; } // brの和を求める sumB = 0; for (i=0; i < NUM2; i++) { sumB += br[i]; // crの和を求める sumC = 0; for (i=0; i < NUM3; i++) { sumC += cr[i]; ... 同じことを何回も書かなければならない。 プログラムがわかりにくく、間違いを起こしやすい main関数の中で処理をするの をやめ、関数の形で書くこと を議論してきた。その大きな 理由は、関数の形にしておく と「再利用できる」ことにあ る。 次の例をみてみよう:

関数… int main(void) { int ar[NUM1], br[NUM2], cr[NUM3]; // 途中省略 sumA = 0; for (i=0; i < NUM1; i++) { sumA += ar[i]; } // brの和を求める sumB = 0; for (i=0; i < NUM2; i++) { sumB += br[i]; // crの和を求める sumC = 0; for (i=0; i < NUM3; i++) { sumC += cr[i]; ... 同じことを何回も書かなければならない。 プログラムがわかりにくく、間違いを起こしやすい ひとつにまとまっている int sum(int x[ ], int n) { // xは配列、nは要素数 // xの和を求める int i, ans= 0; for (i=0; i < n; i++) { ans += x[i]; } return ans; int main(void) { int ar[NUM1], br[NUM2], cr[NUM3], as, bs, cs; as = sum(ar, NUM1); bs = sum(br, NUM2); cs = sum(cr, NUM3); ... 関数sumを適切な引数で呼び出せば良い main関数にかぎらず、いろいろなところで利用可能