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