http://www.phys.ynu.ac.jp/labs/cosmic/shibata/jisshu/
物理情報処理基礎実習II
第5回
制御構造
~条件文・while文~
原 [email protected]
柴田 [email protected]
§制御構造
プログラムを条件によって、
処理を繰り返したり、分岐させたりする。
while (繰り返し)
 if (分岐)
 for (繰り返し)
 do while (繰り返し)
 switch (分岐)
 goto (分岐)
※ continue と、break は、上記と併せて使用。

§条件式と比較演算子 -I等値演算子(==)、
関係演算子(!=, >, <, >=, <=)

cf. 教科書p60 表2-4
第1オペランド(左辺)と、
第2オペランド(右辺)の関係を判断する。
成立していれば1(真)、していなければ0(偽)。
※「=」ではなく、「==」。代入演算ではない!
※オペランド(operand):被演算子。演算対象の式。
§条件式と比較演算子 -II論理演算子(&&,| |,!) (and,or,not)

cf. 教科書p61 表2-5
複数の条件をまとめて表現するための演算子。
「a≧10 かつ b≠-2」 → (a>=10)&&(b!=-2)
ex.2 「a+b=2 または sin(b)<a」
→ (a+b==2)| |(sin(b)<a)
ex.3 「a<1 かつ b>-2、または、a>-1 かつ b<2」
→ ((a<1)&&(b>-2))| |((a>-1)&&(b<2))
ex.1
※条件式は括弧( )で囲もう。間違えにくくなる!
§while 文 -I条件式が成立している(真である)間、
指定した処理を繰り返す。
文法
while ( 条件式 ) {
指定処理
}
※最初に条件式の判断がある。
§while 文 -II 教科書p62 ex210.c
1.
i=0
#include <stdio.h>
2.
3.
4.
5.
main()
{
int i = 0;
i<3
真
6.
while (i < 3) {
printf("%d, ", i);
i++;
}
7.
8.
9.
10.
11.
printf("\n");
12.
13.
}
printf;
i++;
偽
§関数 getchar / putchar
文字(文字列ではない)を扱う関数。
<stdio.h>が必要。
getchar()
標準入力(キーボード)の入力文字をint値で返す。
[Ctrl]-[d]に対してはEOFを返す。(※)
putchar(引数)
引数の文字を標準出力(画面)に出力する。
※文字はASCIIコードという数値に変換される。
ex. ‘a’→97 (cf. 教科書p95 表3-1)
また、Windows環境の場合、[Ctrl]-[z]に対してEOF。
§while 文 -III 教科書p65 ex211.c
1.
c = getchar()
#include <stdio.h>
2.
3.
4.
5.
main()
{
int c;
c != EOF
偽
真
6.
7.
8.
9.
10.
11.
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
putchar(c);
c = getchar();
}
※実行したら、なにか文字列を入力して[Enter]を押してみよう。
終了するには行頭で[Ctrl]-[d]を入力。
12.
§変数型の精度
変数型には、それぞれ上限と下限があります。
実数は「±仮数部×10指数部」と表現されます。
32bit
CPUを持つ計算機の場合
型
宣言
int
整数
単精度実数 float
ビット数 範囲
32
-231 ~ 231-1(約9桁)
32
仮数部 0~224(約6桁)
指数部 -37~38
倍精度実数 double 64
仮数部 0~253(約15桁)
指数部 -307~308
※ビット(bit):2進数での桁数を意味します。
※char型等にも上下限がありますが、ここでは省略。
§課題5
(1)
n = 1~20の4n を整数値(int型)で出力するプログラム
を作成・実行し、オーバーフローが起こることを確認せ
よ。
(2)
次式の級数和を倍精度で小数点20桁まで出力するプ
ログラムを作成し、n = 1~30の計算値を出力し、計算
精度を確認せよ。
1 1
1
1
1
S  1  
   n 1  n
4 16 64
4
4


ヒント:プログラムはwhile文の入れ子構造に。
注意:(1)をそのまま利用すると、当然途中でオーバーフローしてしまう。
おまけ
<math.h>で使えるようになる数学関数、
いくつかの定数も使えるようになります
(次の例の様に大文字で書くこと)。
→ M_PI
 自然対数の底e → M_E
 円周率π
結果のtypescriptファイルは、
余計な所を編集で除いてから印刷・提出しよう。
文字化け起こす人は大抵それが原因だよ。
質問等、メールでも構いません。
(時間的に)出来得る限り答えています。
ダウンロード

物理情報処理基礎実習II 第5回