第5回目 [5月18日、H.16(‘04)] 選択構造と条件判断 本日のメニュー 1)前回の課題について 2)構造化プログラム(選択構造) 3)等価演算子、関係演算子、条件演算子 4)課題・提出 PE04-05.ppt 第2章までの総合演習(前回の課題) (1)画面に、『本日は晴天なり』と表示す るプログラムを書いてみよう。 (2)単位を互いに換算するプログラムを書い てみよう。 (a)センチ(cm)とインチの換算[1インチ=2.54cm] (b)ドル($)と円(\)の換算[1$=\109.5] F (c)摂氏C(℃)と華氏F(°)の換算 5 C ( F 32) 9 解答例:文字の表示(1) #include <stdio.h> int main(void) { printf("本日は晴天なり\n"); puts("本日は晴天なり"); return(0); } 以下の解答例では"おまじない"部分は略 解答例:単位の換算(2.a) double cm, inch; puts("cm?");scanf("%lf",&cm); inch = cm/2.54; printf("%6.2fcmは%6.2fインチです\n", cm, inch); puts("インチ?");scanf("%lf",&inch); cm = 2.54*inch; printf("%6.2fインチは%6.2fcmです\n", inch, cm); 解答例:単位の換算(2.b) double dl, en; printf("$?");scanf("%lf",&dl); en = dl*109.5; printf("$%6.2fは¥%6.2fです\n", dl, en); printf("¥?");scanf("%lf",&en); dl = en/109.5; printf("¥%6.2fは$%6.2fです\n", en, dl); 解答例:単位の換算(2.c) double c, f; printf("摂氏温度は?"); scanf("%lf",&c); f = 9.0*c/5.0 + 32.0; printf("華氏で、%6.2fです\n",f); printf("華氏温度は?"); 5/9*(f-32) scanf("%lf",&f); c = 5.0*(f-32.0)/9.0; printf("摂氏で、%6.2fです\n",c); int main(void) { 5/9と書くと、 double f, c ; 0.55…ではなく、 puts("123456 朝日太郎"); ゼロになる printf("華氏温度は?"); (整数演算) scanf("%lf",&f); c = (5.0/9.0)*(f-32.0); 9/5と書くと、 printf("摂氏温度 %f です。",c); 1.8ではなく、 printf("摂氏温度は?"); 1 になる scanf("%lf",&c); (整数演算) f = (9.0/5.0)*c + 32.0; printf("華氏温度 %f です。",f); return(0); } 第2章までの総合演習(前回の課題) (3)単価 a 円のハンバーガーを n 個買 い、 y 円札を出したら、お釣りはいくらにな るでしょう? この計算をするプログラムを書いてみよう。 (4)上底a、下底b、高さh の台形の面積 S s ( a b ) h 2 を計算するプログラムを書いてみよう。 解答例:ハンバーガーの問題(3) int a, n, y, turi; printf("単価?");scanf("%d",&a); printf("個数?");scanf("%d",&n); printf("お札の金額?"); scanf("%d",&y); turi = y – a*n; printf("お釣りは %6d 円です\n", turi); 解答例:面積計算(4) double a, b, h, s; printf("上底、下底、高さは?"); scanf("%lf %lf %lf",&a,&b,&h); s = (a + b) * h / 2.0; printf("面積は、%6.2f です。\n", s); 前回の宿題 ◎キーボードから整数部分 2桁、小数点以下2桁の 値を入力し、それぞれの 桁の数値とそれらの合 計、平均値(小数点以下 2桁)を求めよ。 ◎教科書演習2-6(33頁) ファイル名:hw4-****.c 数値=> 65.42 十の位は 6 一の位は 5 十分の1の位は 4 百分の1の位は 2 合計は 17 平均は 4.25 hw4-****.exe • 締め切り: 5月15日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] int i, a,b,c,d ; double x, z ; printf("浮動小数点数を入れよ===>"); 内部表現は scanf("%lf",&z);65.42 65.4199999・・・ z = z * 100.0; 6542.000 となっている可能性あり i = z; 6542 a6 = i 6542 / 1000; 100倍すると 6541.9999・・ b5 = ( i % 1000) 542 / 100 ; c4 = ( i % 100)42 / 10 ; この場合、iは 6541となる d2 = 6542 i % 10 ; x = (a+b+c+d) / 4.0; 対応策:四捨五入 ・・・ i=z*100.0+0.5; 直接に i=z*100.0 と記述しても良い 解答例:演習2-6 int h; double w; printf("身長を入力してください:"); scanf("%d", &h); w = ( h – 100.0 ) * 0.9; printf("標準体重は%.1fです。\n", w); 課題についての注意 ・数学的な問題 → 式の変形ができない(問題外) C 32 C 5 ( F 32) を変形すると F 9 5 9 ・c=5/9*(f-32); f=9/5*c+32; と書くと、 結果がおかしくなる。 次の場合ならば良い。 c=(f-32)*5/9; f=c*9/5+32; (整数型)(*/+-%)(整数型) → (整数型) 演算は括弧内が優先で、左から行われる ・かけ算の式で*を忘れる 5/9(kashi-32) → 5.0/9.0*(kashi-32) 課題についての注意 ・インチ-センチ、ドル-円の変換で、利用する式 を逆に使っている ・出力例や簡単な場合の結果を参考に、必ず実 行結果をチェックする事。 ・途中まででも、リスト出力を必ず提出する事。 ・*.C のファイルの拡張子を *.exe に書き換 えてファイル転送している → パソコン停止 .exe ファイルはコンパイルが完了すると自動 的に生成されるファイルである。 ・問題を良く読む→演習2-6:整数値を入力する 構造化プログラミング 順次構造 A B 選択構造 ・二者択一、 複数場合分け ・if文、switch文 true 判断 A false B 繰り返し(反復)構造 ・定数回繰り返し、前判断、後判断 ・for文、while文、do-while文 どの構造も入口と出口 が一つだけ false 判断 true A 選択構造 ・条件判断によって処理を選択していく構造 ・判断の結果は 非0 : true(Yes) または true false 条件判断 0 : false(No) ・trueの場合にはAを、 A falseの場合には B Bを実行する 菱形の中:0又は非0の結果を持つ式 関係演算子と等価演算子(p.42-) 関係演算子:値の大小関係を比較する 関係成立:1(true)、不成立:0(false) a a a a < b <= b > b >= b aがbより小さいなら 1(条件成立) aがbより小さいか又は等しいなら 1 aがbより大きいなら 1 aがbより大きいか又は等しいなら 1 • 等価演算子:値が等しいかどうかを判定する 関係成立:1(true)、不成立:0(false) a == b aとbが等しいなら 1 a != b aとbが等しくないなら 1 条件演算子(p.48-) 条件判断によって式を選択していく構造 if文と似た構造を持った式を記述 3項演算子 式1 ? 式2 : 式3 式1 が非0 式 の 値 式2の値 true 式1 が0 式3の値 式2 式1 false 式3 今日の課題 教科書の各演習を順に処理していくプログ ラムを作成せよ。 (1)演習3-1(41頁)、演習3-3(45頁)、 演習3-4(45頁) (2)[発展](時間に余裕の有る人は進む) 演習3-2、演習3-5~演習3-8 ファイル名は en5-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c 今日の提出 1)プログラムリストを提出する。 今日の課題の各演習について、できたところま でのリストを印刷して提出する (途中まででも、必ず提出すること) なお、授業中にできなかった演習は、各自で必 ず完成させること。 2)aucopyで en5-****.c を転送する。 3)aucopyで en5-****.exe を転送する。 .C の拡張しを変えて .exe を作らないこと ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c 今回の宿題 ◎3つの整数を入力し、 整数を入力? 8 5 2 最大値と最小値を表示 最大値は 8 です。 最小値は 2 です。 するプログラムを作れ。 [46~47頁を参考に] 整数を入力? 8 5 2 4 最大値は 9 です。 {発展問題}入力する整 最小値は 2 です。 数が五つの場合。 ファイル名:hw5-****.c hw5-****.exe 9 • 締め切り: 5月22日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] 第5回終了 次回(第6回)の プログラミング入門、 プログラミング演習は 5月25日です。
© Copyright 2024 ExpyDoc