Document

第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日です。