プログラミング入門 • 小テスト (5分ほど) • 小テストの解答 • 今回の講義内容: 制御文,条件判断と分岐 プログラム入門(第6回) 1 プログラミング入門 • • • • • • • • • • • • • 1 2 3 4 5 6 7 8 9 10 11 12 13 授業概要 プログラムの作成から実行まで (教科書 1.1~1.6, 2.1) 変数と標準入出力 (教科書 3.1~3.2,2.2,2.4,6.4) 演算子 (教科書 4.1~4.9) 制御文,条件判断と分岐 (教科書 5.1~5.2,5.6~5.7) 繰り返し処理 (教科書 5.3~5.5,5.8) 配列と文字列 (教科書 3.3~3.4) 2次元配列 (教科書 3.3) 関数Ⅰ (教科書 7.1~7.3) 関数Ⅱ (教科書 7.4) 構造体 (教科書 9.1) ファイルの入出力 (教科書 12.1~12.3) プログラミング評価 プログラム入門(第6回) 2 Program language C • Algorithms • Flowchart • Program control – if – else – switch - case プログラム入門(第6回) 3 Algorithms アルゴリズム (Algorithms) とは.... • 問題を解くための処方 • コンピュータ向けの解法・手順 • Programming (プログラミング) – アルゴリズムを特定の言語で書いたもの ある目的を実現するために必要な作業の手順を, 明確に述べたもののことを指す プログラム入門(第6回) 4 Program language C • Algorithms • Flowchart • Program control – if – else – switch - case プログラム入門(第6回) 5 Flowchart 例 • 流れ図 – 処理の流れを図を使って表す 端子 処理 Y 判断 N 定義済処理 プログラム入門(第6回) 6 Program language C • Algorithms • Flowchart • Program control – if – else – switch - case プログラム入門(第6回) 7 p.95 制御文 制御文 分岐 if 文 2方向分岐 switch 文 多方向分岐 for 文 反復 指定回数反復 while 文 前判定型 不定回数反復 do-while文 後判定型 不定回数反復 break 文 脱出 反復脱出 continue文 スキップ プログラム入門(第6回) 8 p.98 制御文の基本構造 制御文 { ...制御文 ...括弧 この中で関係演算 子,等価演算子 および 論理演算 し等が使われる { から }までが制 御文の影響が及 ぶ範囲 ...文(単数または複数) } ...括弧 プログラム入門(第6回) 9 条件分岐で使える式 式には以下の関係演算子が使える < より小さい a<b > より大きい a>b <= 等しいか,より小さい a <= b >= 等しいか,より大きい a >= b == 等しい a == b != 等しくない a != b && 論理積 (AND) a && b -> a>100 && b>100 || 論理和 (OR) a || b ! 否定 (NOT) !a プログラム入門(第6回) 10 p.100 条件分岐 • if 文 if 文 条件によって分岐 式 (真) ≠0 if (式) { 文 } ; if ( x < a ) { 実行文 ; } (偽) =0 文 関係演算子 が使用可 次の命令へ プログラム入門(第6回) 11 例1 int data, amari; ... 剰余算 amari = data % 2; ... もし余りがあれば, if ( amari= =1 ) 以下の文を実行する { printf(“このデータは奇数です\n”); } プログラム入門(第6回) 12 p.100 条件分岐2 • if -else 文 式が真ならば文1を 偽ならば文2に分岐 if (式) { 文1 } ; else { 文2 } ; if ( x<a || y < b ) { 実行文1 ; } else { 実行文2 ; } if -else文 式 (偽) =0 (真) ≠0 関係演算子 が使用可 文1 文2 次の命令へ プログラム入門(第6回) 13 例2 int data, amari; amari = data % 2; ... 剰余算 if ( amari= =1 ) ... もし余りがあれば, { 以下の文を実行する printf(“このデータは奇数です\n”); } ... その他の場合は, else 以下の文を実行する { printf(“このデータは偶数です\n”); } プログラム入門(第6回) 14 例題 Start このフローチャートはキーボードから数値を入力し,その数 値に対応した文字を出力するアルゴリズムとなっている. これを if 文 で記述する. プログラム名は prog5a.c とする(サンプルが web にある) 数値 a の入力 a= = 1 yes c = 'A' no a= = 2 yes c= 'B' 文字 c の表示 no a= = 3 no c = 'Z' yes c='C' End プログラム入門(第6回) #include <stdio.h> void main(void) { int a; char c; scanf(“%d”,&a); if( ..... .... } 15 例題(解答例) #include <stdio.h> int main(void) { int a; char c; scanf(“%d”, &a); if( a==1 ) { c=‘A’; } else if( a==2 ) { c=‘B’; } else if( a==3 ) { c=‘C’; } else { c=‘Z’; } printf(“%c”,c); } ... 整数型変数 a の定義 ... 文字型変数 c の定義 ... キーボードから数値を読み取り,変数 a に入れる ... 変数 a が 1 のとき,下の文を実行 ... 変数 c に文字 A を代入 ... 変数 a が 2 のとき,下の文を実行 ... 変数 c に文字 B を代入 ... 変数 a が 3 のとき,下の文を実行 ... 変数 c に文字 C を代入 ... 変数 a がどれにも当てはまらなかったとき,下の文を実行 ... 変数 c に文字 Z を代入 ... 変数 c に入っている文字を表示する プログラム入門(第6回) 16 p.113 分岐 (switch文) switch 文 • switch-case 文 複数の分岐先から条件 に合うものを選ぶ case 式= = 定数式 yes 文1 yes 文2 no case 式というよりも,主に 変数が指定される switch(式) { case 定数式: case 定数式: .... default: } 式= = 定数式 no 文1 ; 文2 ; 文n 文n ; 次の命令へ プログラム入門(第6回) 17 p.120 break 文 (switch-case) switch( k ) { case 0: case 1: default: 定数式 switch 文 文 x=a; break ; x=b; break ; x=c; break ; case 式= = 定数式 yes 文1 yes 文2 no case 式= = 定数式 no 文n } break 文 ループを抜ける 次の命令へ プログラム入門(第6回) 18 例2 int data, amari; amari = data % 2; ... 剰余算 if ( amari= =1 ) ... もし余りがあれば, { 以下の文を実行する printf(“このデータは奇数です\n”); } ... その他の場合は, else 以下の文を実行する { printf(“このデータは偶数です\n”); } プログラム入門(第6回) 19 例3 int data, amari; ... 剰余算 amari = data % 2; switch ( amari ) ... amari を以下で分類分けする { ... 0の場合(偶数)は, case 0: printf(“このデータは偶数です\n”); 以下の文を実行する ... break で switch を終える break; case 1: ... 1の場合(奇数)は, printf(“このデータは奇数です\n”); 以下の文を実行する break; ... break で switch を終える default: ... どれにも当てはまらない場合 printf(“エラー\n”); break; } プログラム入門(第6回) 20 例題 Start このフローチャートはキーボードから数値を入力し,その数 値に対応した文字を出力するアルゴリズムとなっている. これを switch 文で記述する. プログラム名は prog5b.c とする(サンプルが web にある) 数値 a の入力 a= = 1 yes c = 'A' no a= = 2 yes c= 'B' 文字 c の表示 no a= = 3 no c = 'Z' yes c= 'C' End プログラム入門(第6回) #include <stdio.h> void main(void) { int a; char c; scanf(“%d”,&a); switch( ..... .... } 21 例題(解答例) #include <stdio.h> int main(void) { int a; char c; scanf(“%d”, &a); switch( a ) { case 1: c=‘A’; break; case 2: c='B'; break; case 3: c='C'; break; default: c='Z'; break; } printf("%c",c); } ... 整数型変数 a の定義 ... 文字型変数 c の定義 ... キーボードから整数を読み取り,変数 a に入れる ... 変数 a を以下で場合分けする ... 変数 a が 1 のとき,下の文を実行する ... 変数 c に文字 A を入れる ... switch 文を抜ける ... 変数 a が 2 のとき,下の文を実行する ... 変数 c に文字 B を入れる ... switch 文を抜ける ... 変数 a が 2 のとき,下の文を実行する ... 変数 c に文字 C を入れる ... switch 文を抜ける ... どれにも当てはまらない場合,下の文を実行する ... 変数 c に文字 C を入れる ... switch 文を抜ける ... 変数 c に入っている文字を表示する プログラム入門(第6回) 22 Program language C • Algorithms • Flowchart • Program control – if – else – switch - case プログラム入門(第6回) 23 課題 • • • • • キーボードから任意の整数を 2 個入力し,その入力データの平均値(小数点以 下切り上げ)に相当する‘*’を表示するプログラムを作成せよ.使う制御文は if でも switch のどちらでも可 ‘*’の表示個数は 5 までを限度とし,5 を越える時には”ERROR”の文字を表 示をさせるようにせよ. プログラムの確認用データは以下の 2 つとする.各データごとにプログラムを実 行し,画面出力を得ること. – 3,3 → この場合 * は 3 個になる – 3,4 → この場合 * は 4 個になる 例 画面に出力した結果とソースプログラムをwebrep に提出する 画面出力の取得については下記 Homepage を参照すること. 12 “プログラムの実行結果の画面のコピーについて” 合計: 3 http://www.sp.ee.musashi-tech.ac.jp/tk/class/pc/ 平均 : 1.5 • • プログラム名 prog5c.c 画面 prog5c.txt 期限:次週の水曜日18時まで • 注意:文字型変数 char には文字が1文字しか入らず,複数の文字を入れること はできないので注意.(教科書 45 頁を参照のこと) プログラム入門(第6回) ** 24
© Copyright 2024 ExpyDoc