230 likes | 301 Views
第5回目 [5月18日、H . 16(‘04)]. 選択構造と条件判断. 本日のメニュー. 1)前回の課題について 2)構造化プログラム(選択構造) 3)等価演算子、関係演算子、条件演算子 4)課題・提出. PE04-05 . ppt. (2)単位を互いに換算するプログラムを書いてみよう。 (a) センチ (cm) とインチの換算[ 1 インチ =2.54cm ] (b) ドル ($) と円 () の換算[ 1$=109.5 ] (c) 摂氏 C (℃) と華氏 F (°) の換算. F. 第2章までの総合演習(前回の課題).
E N D
第5回目 [5月18日、H.16(‘04)]第5回目 [5月18日、H.16(‘04)] 選択構造と条件判断 本日のメニュー 1)前回の課題について 2)構造化プログラム(選択構造) 3)等価演算子、関係演算子、条件演算子 4)課題・提出 PE04-05.ppt
(2)単位を互いに換算するプログラムを書いてみよう。(2)単位を互いに換算するプログラムを書いてみよう。 (a)センチ(cm)とインチの換算[1インチ=2.54cm] (b)ドル($)と円(\)の換算[1$=\109.5] (c)摂氏C(℃)と華氏F(°)の換算 F 第2章までの総合演習(前回の課題) (1)画面に、『本日は晴天なり』と表示するプログラムを書いてみよう。
解答例:文字の表示(1) #include <stdio.h> int main(void) { printf("本日は晴天なり\n"); return(0); } puts("本日は晴天なり"); 以下の解答例では"おまじない"部分は略
解答例:単位の換算(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("華氏温度は?"); scanf("%lf",&f); c = 5.0*(f-32.0)/9.0; printf("摂氏で、%6.2fです\n",c); 5/9*(f-32)
int main(void) { double f, c ; puts("123456 朝日太郎"); printf("華氏温度は?"); scanf("%lf",&f); c = (5.0/9.0)*(f-32.0); printf("摂氏温度 %f です。",c); printf("摂氏温度は?"); scanf("%lf",&c); f = (9.0/5.0)*c + 32.0; printf("華氏温度 %f です。",f); return(0); } 5/9と書くと、 0.55…ではなく、 ゼロになる (整数演算) 9/5と書くと、 1.8ではなく、 1 になる (整数演算)
(4)上底a、下底b、高さh の台形の面積 S を計算するプログラムを書いてみよう。 第2章までの総合演習(前回の課題) (3)単価 a 円のハンバーガーを n 個買い、 y 円札を出したら、お釣りはいくらになるでしょう? この計算をするプログラムを書いてみよう。
解答例:ハンバーガーの問題(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);
前回の宿題 数値=> 65.42 十の位は 6一の位は 5十分の1の位は 4百分の1の位は 2 合計は 17平均は 4.25 • ◎キーボードから整数部分2桁、小数点以下2桁の値を入力し、それぞれの桁の数値とそれらの合計、平均値(小数点以下2桁)を求めよ。 • ◎教科書演習2-6(33頁) ファイル名:hw4-****.c hw4-****.exe • 締め切り: 5月15日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、[森下伊三男]-[プログラミング演習]
int i, a,b,c,d ; double x, z ; printf("浮動小数点数を入れよ===>"); scanf("%lf",&z); z = z * 100.0; i = z; a = i / 1000; b = ( i % 1000) / 100 ; c = ( i % 100) / 10 ; d = i % 10 ; x = (a+b+c+d) / 4.0; ・・・ 内部表現は 65.4199999・・・ となっている可能性あり 65.42 6542.000 6542 100倍すると6541.9999・・ 6 6542 5 542 この場合、iは6541となる 4 42 2 6542 対応策:四捨五入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=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 false true 判断 B A B false 判断 true A 構造化プログラミング • 順次構造 • 選択構造 ・二者択一、複数場合分け ・if文、switch文 • 繰り返し(反復)構造 • ・定数回繰り返し、前判断、後判断 • ・for文、while文、do-while文 どの構造も入口と出口が一つだけ
true false 条件判断 A B 選択構造 • ・条件判断によって処理を選択していく構造 • ・判断の結果は非0 : true(Yes) または0 : false(No) • ・trueの場合にはAを、falseの場合にはBを実行する 菱形の中:0又は非0の結果を持つ式
関係演算子と等価演算子(p.42-) • 関係演算子:値の大小関係を比較する • 関係成立:1(true)、不成立:0(false) a <b aがbより小さいなら 1(条件成立) a <= b aがbより小さいか又は等しいなら1 a > b aがbより大きいなら 1 a >= b aがbより大きいか又は等しいなら 1 • 等価演算子:値が等しいかどうかを判定する • 関係成立:1(true)、不成立:0(false) a == b aとbが等しいなら 1 a != b aとbが等しくないなら 1
true false 式1 式2 式3 条件演算子(p.48-) • 条件判断によって式を選択していく構造 • if文と似た構造を持った式を記述 3項演算子 式1 ?式2: 式3 式の値 式1が非0 式1が0 式2の値 式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つの整数を入力し、最大値と最小値を表示するプログラムを作れ。[46~47頁を参考に] 整数を入力? 8 5 2 最大値は 8です。 最小値は 2 です。 整数を入力? 8 5 2 4 9 最大値は 9です。 最小値は 2です。 {発展問題}入力する整数が五つの場合。 ファイル名:hw5-****.c hw5-****.exe • 締め切り: 5月22日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、[森下伊三男]-[プログラミング演習]
第5回終了 次回(第6回)のプログラミング入門、プログラミング演習は 5月25日です。