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文です。
© Copyright 2024 ExpyDoc