計算機実習 I

第四回 (2015 年 4 月 30 日)

標準入出力

http://www.sw.it.aoyama.ac.jp/2015/CP1/lecture4.html

Martin J. Dürst

AGU

© 2005-15 Martin J. Dürst 青山学院大学

今日の予定

 

ミニテスト

C 言語の最初の本

 

前回の演習結果

03B1 03C1 03C2 03C3 03C4
100点 91 67 40 29 15
60点 4 28 48 55 62
部分点 - - - - 9
エラー 0 1 4 1 1
未提出 1 - 4 11 9

 

前回の演習について

 

前回の演習 03C1

(学生番号の解析)

答案の長さの範囲

行数 バイト数
一番長い答案 201 7025
一番短い答案 46 1255

麺棒プログラム

問題点:

 

DRY

DRY 原則

直積の具体例


数物理 化学 電気 機械 経シス 情テク ...
19xx






200x






20xx






 

文字列の表現

 

入出力の主な関数

(main input/output functions)


入力 出力
一文字 getchar() putchar(char c)
一行 gets(char* buffer) fgets(char*, int, stdin) puts(char* string)
フォーマット付き scanf(char* format,...) (%s) printf(char* format,...)

関数の学習

 

入出力関数の戻り値

入力の定石

具体例:

while ((c = getchar()) != EOF) { ... }

バッファ・オーバーフロー

(buffer overflow)

C 言語のメモリの扱い:

gets の問題点

(演習問題 04B2 参照)

scanf の要点

例: scanf ("%lf", &doubleVar);

場合によって printf と少し書き方が違う。

%sgets と同様に大問題 (演習問題 04A2 参照)

標準入出力

リダイレクトとパイプ

 

標準入出力の応用

標準入出力によるプログラムのテスト

 

テストの役割

今週の演習問題

04A1: 一文字の入力と出力 ('\''\ の文字列ではなく、' 一文字 (\ でエスケープ))

04A2: 文字の番号の調査

04A3: 大文字と小文字の入れ替え

04B1: 様々な型の入出力 (教科書 pp. 385-387 参照)

04B2: バグの入ったプログラムの分析と修正 (今日必ず先生に提出)

04C1 (部分点): ヒント: 入力の一文字ずつ枝分かれを使うか、小さいバッファーに一文字ずらしながら読み込むなど
挑戦 (部分点) は必須、完成は発展問題

 

次回の準備