第14章 ファイル操作 (コマンドプロンプト版)

Slides:



Advertisements
Similar presentations
JMP version5(以上) 日本語版のScripting Languageによる プログラミング
Advertisements

初年次セミナー 第8回 データの入力.
2017/3/2 情報処理 第8回.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
2017/3/7 情報処理 第8回.
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
第2章 数値の入力と変数 scanfと変数をやります.
コンピュータプラクティスⅠ グラフと表 水野嘉明
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
16.3 関数と構造体 構造体ポインタ 地底探査ゲーム
第2回ネットワークプログラミング 中村 修.
第13回 プログラミングⅡ 第13回
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
担当: 遠藤 美純 情報教育 初級講座 担当: 遠藤 美純
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
初年次セミナー 第2回 文字の出力.
Microsoft PowerPoint Netscape Communicator
情報処理基礎 2006年 6月 22日.
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
第10回:Microsoft Excel (2/2)
Cプログラミング演習.
プログラミング応用 printfと変数.
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年6月25日(第10回) 木村巌.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
今までの練習問題の復習.
第14章 ファイル操作 (コマンドプロンプト版)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
データを渡すことで自動的にグラフを描画してくれるコンポーネント
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習I 2003年7月2日(第11回) 木村巌.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
標準入出力、変数、演算子、エスケープシーケンス
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
printf・scanf・変数・四則演算
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第2章 数値の入力と変数 scanfと変数をやります.
プログラミング演習I 補講用課題
第1章 printf(“文字の出力\n”);
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

第14章 ファイル操作 (コマンドプロンプト版) 第14章 ファイル操作 (コマンドプロンプト版) CSVファイルへの出力 CSVファイルからの入力 CSVファイルへの追加出力 練習問題 Excel による関数グラフ描画 今日のポイント リダイレクトとCSVファイルをうまく使おう

CSVファイルとは コンマ区切り(Comma Separated Values)形式のテキストファイル データをコンマ(,)で区切り、改行を用いて2次元的に配列 コンマを含むデータは二重引用符(")でくくられる 標準出力例 標準入力例 printf("%f, %f, %f\n", a, b, sum); scanf("%lf, %lf, %lf", &a, &b, &sum);

例14.1.1 CSVファイルへの出力 /* ex14_1_1.c */ #include <stdio.h> int main(void) { double a, b, sum; a = 2.345; b = 5.678; sum = a + b; printf("%f, %f, %f\n", a, b, sum); return 0; } notepad で新規作成 devenv で編集 コンマがなければCSVじゃない Z:\nyumon2>cl ex14_1_1.c Z:\nyumon2>ex14_1_1 > foo.csv

ソースファイルの新規作成と編集 notepad (メモ帳) copy (内部コマンド) devenv (開発環境) Z:\nyumon2>notepad ex14_1_1.c 保存先が Z:\nyumon2 であることを確認 copy (内部コマンド) Z:\nyumon2>copy ex14_1_1.c ex14_2_1.c 以前作った14章のファイルを exploler でコピーしてもよい devenv (開発環境) Z:\nyumon2>e14_1_1.c 新規作成のとき コピーするとき 編集するとき

例14.2.1 CSVファイルからの入力 /* ex14_2_1.c */ #include <stdio.h> int main(void) { double a, b, sum; scanf("%lf, %lf, %lf", &a, &b, &sum); printf("a=%f, b=%f, sum=%f\n", a, b, sum); return 0; } copy でコピー devenv で編集 コンマを取ったら? Z:\nyumon2>copy ex14_1_1.c ex14_2_1.c Z:\nyumon2>ex14_2_1.c Z:\nyumon2>cl ex14_2_1.c Z:\nyumon2>ex14_2_1 < foo.csv

例14.2.2 CSVファイルからの入力 /* ex14_2_2.c */ #include <stdio.h> int main(void) { double a, b, sum; char s[135]; fgets(s, 128, stdin); sscanf(s, "%lf, %lf, %lf", &a, &b, &sum); printf("a=%f, b=%f, sum=%f\n", a, b, sum); return 0; } copy でコピー devenv で編集 コンマを 取ったら? fgets: 一行入力、sscanf: 文字列sからscanf Z:\nyumon2>cl ex14_2_2.c Z:\nyumon2>ex14_2_2 < foo.csv

例14.3.1 CSVファイルへの追加出力 /* ex14_3_1.c */ #include <stdio.h> int main(void) { double a, b, sum; a = 1.234; b = 2.567; sum = a + b; printf("%f, %f, %f\n", a, b, sum); return 0; } copy でコピー devenv で編集 Z:\nyumon2>cl ex14_3_1.c Z:\nyumon2>ex14_3_1 >> foo.csv

例14.4.3, 例14.5.1のための準備 boo.csvファイルの作成 Z:\nyumon2>notepad boo.csv 1.000000, 2.000000 3.000000, 4.000000 5.000000, 6.000000 以前の第14章14.4の学習時に例14.4.3で用いた foo.txt が 作ってある人は、そこからコピーすればよい

fgets関数の値が NULL でない(入力が Ctrl-z でない)間は{}を繰り返す 例14.4.3 標準ファイル入出力 /* ex14_4_3.c stdin version */ #include <stdio.h> int main(void) { double x, y; int i = 0; char s[135]; while (fgets(s, 128, stdin) != NULL) { sscanf(s, "%lf, %lf", &x, &y); printf("%f, %f\n", x, y); i++; } printf("ファイル中のデータ (x, y) の数は %d 組です.\n", i); return 0; 読んですぐ使い捨てるので配列は不要 fgets関数の値が NULL でない(入力が Ctrl-z でない)間は{}を繰り返す Z:\nyumon2>cl ex14_4_3.c Z:\nyumon2>ex14_4_3 < boo.csv

例14.5.1 標準ファイル入出力 /* ex14_5_1.c stdin version */ #include <stdio.h> int main(void) { double a, b, sum; char s[135]; while (fgets(s, 128, stdin) != NULL) { sscanf(s, "%lf, %lf", &a, &b); sum = a + b; printf("%f, %f, %f\n", a, b, sum); } return 0; Z:\nyumon2>cl ex14_5_1.c Z:\nyumon2>ex14_5_1 < foo.csv > bar.csv

問題14.1 関数値を出力するプログラム 教科書p.139 /* q14_1_1.c */ #include <stdio.h> int main(void) { int i; double x, y; for (i = -10; i <= 10; i++) { x = i; y = 2*x*x + 3; printf("%f, %f\n", x, y); } return 0; Z:\nyumon2>cl q14_1_1.c Z:\nyumon2>q14_1_1 > data1.csv

データの項目名も出力する場合 /* q14_1_2.c */ #include <stdio.h> int main(void) { int i; double x, y; printf("x, y\n"); for (i = -10; i <= 10; i++) { x = i; y = 2*x*x + 3; printf("%f, %f\n", x, y); } return 0; この行を追加

Excel による関数グラフ描画 CSVファイルをダブルクリックして、Excelを起動 Microsoft Excelブック(*.xls)形式で保存 プロットしたいデータのセル範囲を選択 「グラフウィザード」をクリック 「散布図」を選択し、「形式(T)」で好みの折れ線グラフを選択 「次へ>」を2回クリックし、「タイトルとラベル」タブを表示 「X/数値軸(A)」に x、「Y/数値軸(V)」に y を記入 「完了」をクリック 忘れない うちに保存 最後に上書き保存

Excel におけるグラフの修正 必ずグラフエリアを選択した状態で行う 「グラフ(C)」メニューの「グラフオプション(C)...」に よる変更 「目盛線」タブでY軸の目盛線の削除、など 「グラフ(C)」メニューの「元のデータ(S)...」による 変更 「系列」タブで各系列に名前を設定、など 右クリックでの「~書式設定(O)…」による変更 「軸の書式設定(O)...」の「目盛」タブで範囲の変更、など

修正前と修正後 y y = 2 x^2 + 3 x 50 100 150 200 250 -20 -10 10 20 x y 系列 1 50 50 100 150 200 250 -20 -10 10 20 x y 系列 1 50 100 150 200 250 -10 -5 5 10 x y y = 2 x^2 + 3

Excel で対数グラフを描く 0より大きいデータ領域のみを選択 「グラフウィザード」により「散布図」の折れ線 グラフを描く 中級者向け Excel で対数グラフを描く 0より大きいデータ領域のみを選択 「グラフウィザード」により「散布図」の折れ線 グラフを描く X軸またはY軸の数値軸(目盛)を右クリック 「軸の書式設定(O)...」をクリック 「目盛」タブを選択 下方の「対数目盛を表示する(L)」をチェック 「 OK 」をクリック 「グラフオプション(O)…」で目盛線を描く

第2回レポートの類題 スキルアップタイム 1 標準入力から x と y を読み込み、プログラム中で z = x3 - 75x を計算し、x, y, z を標準出力するプログラム q14_s.c を作成せよ data1.csv から入力し、結果を data2.csv に書き込め 例14.5.1のプログラムを参考にするとよい

スキルアップタイム 2 data2.csv をExcelで読み込み、data2.xls に保存 Xラベルを x、Yラベルを y, z としてグラフを描画 X軸の範囲を -10 ~ 10、 Y軸の範囲を -300 ~ 300 に変更 Y軸の目盛線を削除 凡例の系列1に y = 2x^2 + 3、系列2に z = x^3 - 75x と記入 凡例をプロットエリア内の空いている領域に移動 プロットエリアのサイズを調整 プロットエリアの背景色をなくす

第3回レポート(必須) 課題: スキルアップタイム 1 および 2 提出期限: 2010年1月8日(金) 12:50 提出場所: ネットワーク実験室(1)入口の提出箱 以下の項目を入れること(表紙は不要) 学籍番号、氏 名 "q14_s.c" のソースリスト 実行結果(data2.csv)とそのグラフ 感 想 第2回レポートの類題

前回のスキルアップタイムの解答例 ~コマンド行引数を用いた自作コマンドの作成~ コマンド行で指定した文字の数をカウントする chc.c を完成させよう /* chc.c: char counter */ #include <stdio.h> int main(int argc, char *argv[]) { int c, cnt=0; while ((c=fgetc(stdin)) != EOF) { if (c == *argv[1]) cnt++; } printf("%c: %d\n", *argv[1], cnt); return 0;

前回のスキルアップタイム (オプション)の解答例 /* excel exec program */ #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char cmd[128]="\"C:\\Program Files\\" "Microsoft Office\\Office11\\Excel.exe\" "; if (argc > 1) strcat(cmd, argv[1]); system(cmd); return 0; } excel3.c Z:\nyumon2>cl excel3.c Z:\nyumon2>excel3 foo.csv