Standard Input/Output and Redirection

(標準入出力とリダイレクト)

Computing Practice I

4th lecture, May 11, 2017

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

Martin J. Dürst

Today's Schedule

 

ミニテスト

 

The First Book about C

 

前回の演習結果

03B1 03C1 03C2 03C3 03C4
100 points 93 64 45 34 28
60 points 5 33 48 59 61
partial - - - - 7
error - 1 3 1 -
not submitted 1 1 3 5 3

 

About Previous Exercises

 

Exercise 03C1

(Analysis of Student Numbers)

Length of Solutions

Lines Bytes
Longest 171 5782
Shortest 35 954

 

Rolling Pin Program

Problems:

 

DRY

 

The DRY Principle

 

Example of Cartesian Product


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






200x






20xx






 

Representation of Strings

 

Representation of Line Breaks

C on Windows: automatic conversion between CRLF (in file) and LF (in program)

 

Main Input/Output Functions


Input Output
One character getchar() putchar(char c)
One line gets(char* buffer) fgets(char*, int, stdin) puts(char* string)
Formatted scanf(char* format,...) (%s) printf(char* format,...)

 

How to Study Functions

 

Return Values of Input/Output Functions

 

入力の定石

Example:

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

(Attention: c has to be of type int, not char)

 

Buffer Overflow

C 言語のメモリの扱い:

 

gets の問題点

(演習問題 04B1 参照)

 

scanf の要点

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

printf と少々書き方が違う

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

 

標準入出力

 

リダイレクトとパイプ

 

標準入出力の応用

 

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

 

Why Tests?

 

今週の演習問題

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

04A2: 文字の番号の調査

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

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

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

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

 

次回の準備

 

Glossary

typesetting
組版
rolling pin
麺棒
principle
原則
independence
独立性
orthogonality
直交性
Cartesian product
直積
abstraction
抽象化
repetition
繰り返し
function
関数
specification
仕様
return value
戻り値
input
入力
output
出力
string
文字列
byte array
バイトの配列
interpret
解釈する
null character
ナル文字
input
入力
output
出力
buffer overflow
バッファ・オーバーフロー
standard input/output
標準入出力
specification (document)
仕様 (書)
bug
バグ
regression test
退行テスト、回帰テスト、再帰テスト