Standard Input/Output and Redirection

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

Computing Practice I

4th lecture, April 30, 2018

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

Martin J. Dürst

AGU

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

Today's Schedule

 

ミニテスト

 

The First Book about C

 

Results of Previous Exercises

03B1 03C1 03C2 03C3 03C4
100 points 97 57 37 27 20
60 points 2 42 60 63 53
partial - - - - 16
error - - 2 5 2
not submitted 1 1 1 5 9

 

About Previous Exercises

 

Exercise 03C1

(Analysis of Student Numbers)

Length of Solutions

Lines Bytes
Longest 215 8084
Shortest 41 1202

 

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

 

Input Patterns

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点) は必須、完成は発展問題

締切: 04A1-04B2: 木曜日、04C1: 金曜日

 

次回の準備

 

Glossary

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