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

http://www.phys.ynu.ac.jp/labs/cosmic/shibata/jisshu/
物理情報処理基礎実習II
第6回
制御構造
~if文・for文~
(原 [email protected])
柴田 [email protected]
石川 [email protected]
§課題5(1) フローチャート
真→青分岐
偽→赤分岐
課題5(1) n = 1~20 の 4n の値
i=n=1
値を
n、
ループ変数を i とする。
ループの条件式は、
この場合、
i <= 20 でも良いが、
< を使うのが一般的。
n = n*4 は、
n*= 4 でも当然可。
※n=pow(4,i)でもよいが…
i < 21
n = n*4
出力 n
i ++
§課題5(2) フローチャート
 課題5(2)
1 1
1
1
1
S  1  
   n 1  n
4 16 64
4
4
は、
倍精度で宣言。
 n = n*4 は、
n*= 4 でも当然可。
 s = s+1/n は、
s + = 1/n でも当然可。
※参考 考え方
 n、s
真→青分岐
偽→赤分岐
i=1
n = s = 1.0
i < 31
n = n*4
s = s+1/n
出力 s
i ++
§制御構造
プログラムを条件によって、
処理を繰り返したり、分岐させたりする。
while (繰り返し)
 if (分岐)
 for (繰り返し)
 do while (繰り返し)
 switch (分岐)
 goto (分岐)
※ continue と、break は、上記と併せて使用。

§if 文 -I条件式が成立している場合、
処理を実行する。
成立していない場合は何もしない。
文法
if ( 条件式 ) {
処理
}
○サンプル
※処理の実行文が1つ
であれば{}は省略可能。
条件式
真
処理
偽
§if 文 -II- “if~else”
条件式が成立している場合、処理1を、
成立していない場合、処理2を実行する。
文法
if ( 条件式 ) {
処理1
}else{
処理2
}
条件式
偽
真
処理1
処理2
§if 文 -III- “if~else if~else”
条件式1が成立している場合、処理1を実行し、
成立していない場合、条件式2を判断し、
条件式2が成立している場合、処理2を実行し、
成立していない場合、処理3を実行する。
偽
文法
条件式1
if ( 条件式1 ) {
処理1
}else if ( 条件式2 ) {
処理2
}else{
処理3
}
真
処理1
条件式2
偽
真
処理2
処理3
§if 文 -IV 教科書p74-75 ex218.c
1.
#include <stdio.h>
2.
3.
4.
5.
main()
{
int c;
6.
while ((c = getchar()) != EOF) { ※cがEOFでない限りループ
if (c == ’\n’) {
※「 ” 」ではなく「’」に注意
printf(”<LF>\n”);
※LFとはLine Feedの略
} else if (c == ’\t’) {
※\tはタブ文字
printf("<tab>");
} else {
putchar(c);
}
}
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
}
§for 文 -I最初に処理1を実行する。
次に条件式を判断し、成立しているなら、
繰り返しを行う処理を実行し、
処理1
処理2を実行し条件式判断に戻る。
条件式
文法
for ( 処理1 ; 条件式 ; 処理2) {
繰り返しを行う処理
}
○サンプル
偽
真
繰返処理
処理2
§for 文 -II同じことをwhile文でも可能。
ただ、こちらの方が書きやすいことが多い
(特に科学計算では)。
処理1
while文で同じことをやるには…
処理1;
while ( 条件式 ) {
繰り返しを行う処理;
処理2;
}
条件式
真
繰返処理
処理2
偽
§for 文 -III 教科書p78 ex219.c
1.
#include <stdio.h>
2.
3.
4.
5.
main()
{
int i;
※↓10進数、8進数、16進数の意味
printf("decimal octal hexadecimal\n");
※↓非常にシンプルに書ける!
for (i = 0; i < 16; i++) {
printf(" %2d %2o
%2x\n", i, i, i);
}
※↑それぞれ2桁で10、8、16進数を出力
6.
7.
8.
9.
10.
11.
12.
}
§課題6
フローチャート(流れ図)も描いて提出すること。
簡単なものでよい。
入力(scanfを使用)された整数が、素数かどう
かを判断し回答するプログラムを作成し、数例
実行せよ。素数とは以下のような整数である。
自然数である。
1より大きい。
1とその数自身しか約数を持たない。
おまけ
if 文の“else if” は、いくつでもつなげて使えます。
複雑な条件の時に使えます。
プログラムを書く前に自分なりのフローチャートを書き
ましょう。設計せずに、いきなりエディタで書き始めても
なかなかうまくいかないことが多いです。
来週は、do~while()とswitch文です。