第6回(5月22日)

プログラミング演習(2組)
第6回
http://www.fit.ac.jp/~matsuki/PEB1.html
オフィス・アワーのお知らせ
• オフィス・アワーを以下の要領で開講
– 日時:毎週月曜日、5時限目(16:20~)
– 場所:A棟 4階 41番教室
– 内容:プログラミング関連科目
今日の内容
• 前回の課題の解説
• DEBUGについて(エラーの探し方)
• 今回の課題の説明
タイピング
• 喰人王を使用して結果を記録する
• ステージ:第一の店(中華)
• Excelのシートにスコアを毎回記録していく
– 残り時間⇒ FeedBackページで報告
– 総タイプ数
– ミスタイプ数
– 正確さ⇒ FeedBackページで報告
– 喰いっぷり ⇒ FeedBackページで報告
前回の課題(締切:5/21)
【課題1】
車の速さspeedと、目的地までの距離distance
を入力させて、目的地までの所要時間を以下
のような表示形式で求めるプログラムを作成
せよ。
車の速さ(km/h):100
距離(km) :250
所要時間は、2時間30分00秒です
課題1
double Speed_kmph; //時速[km/h]
double Speed_mps;
//秒速[m/s]
//時速[km/h]を秒速[m/s]に変換
Speed_mps = Speed_kmph / 3.6;
課題1
int AllSecond;
//秒単位の時間
int Hour;
//時
int Minute; //分
int Second; //秒
//秒単位の経過時間を,時・分・秒に分割
Hour = AllSecond / 3600;
//1時間は3600秒
Minute = ( AllSecond % 3600 ) / 60;
//1分は60秒
Second = AllSecond - Hour*3600 – Minute*60;
(または、Second = ( AllSecond % 3600) % 60;)
int Allsecond;
double speed;
double distance;
double time;
int hour;
int minute;
int second;
//秒単位の時間
//車の速さ
//目的地までの距離
//時間
//時
//分
//秒
printf("目的地までの所要時間を求める。\n");
printf("目的地までの距離を入力\n");
scanf("%lf", &distance);
//距離
printf("車の速さを入力\n");
scanf("%lf", &speed);
//速さ
time=distance/speed;
Allsecond=time*3600;
hour=distance/speed;
minute=Allsecond%3600/60;
second=Allsecond%3600%60;
printf("目的地までの所要時間は\n");
printf("%d時間%d分%d秒", hour, minute, second);
東君の解答例
課題2
今までの知識を使って、自分で問題を設定し、その問
題を解決するプログラムを作成せよ。ただし、以下の機
能を盛り込むこと。メール本文に問題についての説明を
書くこと。
1.
2.
3.
4.
5.
6.
7.
8.
int型変数の使用
double型変数の使用
+、ー、*、/を用いた演算(すべて使うこと)
sqrt, sin, cos, tanのいずれかを用いた計算
printfを用いた整数の表示
printfを用いた実数の表示
scanfを用いた整数の入力
scanfを用いた実数の入力
課題2の例
• 数学
–
–
–
–
図形(三角形、台形)の面積・辺の長さを計算
正弦定理・余弦定理・三平方の定理の利用
座標の計算(下田君)
加法定理(黒武者さん)
• 物理現象
– 斜方投射(東君)
– 摩擦力(松本君)
– 磁界の強さとトルクの大きさ(竹中君)
• 占い
– 入力値に応じて占い結果を表示(平田さん)
• お金の計算(小西君、柴田君)
DEBUGでよくある間違い
1.「;」の忘れ
2.全角スペースが入っている
3.変数が未定義
4.「studio.h」と書いている
4.変数の値が定まっていないのに、計算に
使っている
int x;
int z;
z = x*x;
printf(“z = %d\n”,z);
例(DEBUGの仕方)
int main()
この中には、間違いがわざと
{
まちがいが入っています。
int x;
int y;
分かりますか?
double number;
y = x*x;
number = y*3
prinf(“number = %d\n”, numbre);
reture 0;
}
論理演算子
• &&(論理積AND)
(例)条件A&&条件B
すべての条件を満たす
• ||(論理和OR)
(例)条件A||条件B
どれか一つでも条件を満たす
• !(否定NOT)
(例)!条件A
条件結果を否定する
論理演算(AND)
if ( (a == 3) && (b == 4) )
{
文1;
}
aが3,bが4と等しい時に,文1が実行される
論理演算(OR)
if ( (a == 3) || (b == 4) )
{
文1;
}
aが3またはbが4と等しい時に,文1が実行される
論理演算で間違える例
変数a,b,cがすべて同じときに、真文を実行したい
if ( a == b == c )
{
文1;
文2
}
論理演算で間違える例
たとえば,
a = 7; b = 4; c = 5;
のとき,
if ( a < b < c )
{
文1;
文2
}
次の演算結果を求めよ
(1) a < b
(2) b < c
(3) a < b < c
(1) 0
(2) 1
(3) 1
例題
• 2次方程式の判別式を使って,解の種類を判
別するプログラムを作成せよ.
二次方程式 a*x*x + b*x + c = 0の解の種類を
調べます.
係数aは? 1
係数bは? 5
係数cは? 4
この2次方程式の解は,虚数解です
判別式Dを計算
D>0
FALSE
TRUE
「2つの実数解」
と表示
D<0
FALSE
TRUE
「虚数解」と表示
「重解」と表示
解答例
D = b*b-4*a*c;
if (D > 0) {
printf(“2つの実数解です”);
} else if (D < 0) {
printf(“虚数解です”);
} else {
printf(“重解です”);
}
今日の課題
課題1:三角形の3辺の長さを入力させて,その
大小関係からどのような三角形かを判定する
プログラムを作れ.
一つ目の辺の長さは? 3
二つ目の辺の長さは? 5
三つ目の辺の長さは? 4
この三角形は,直角三角形です!
課題2:3つの値を入力させて,その中で最も大
きい値を表示するプログラムを作れ.
一つ目の値は? 3
二つ目の値は? 8
三つ目の値は? -1
この中で一番大きいのは,8です!
注意事項
• ソースファイルについて
ソースファイルは添付ファイルで送る
ソースファイル以外は送らない
ソースファイルの名前は,半角のみ使用
• メールについて
件名は,学籍番号+半角スペース+氏名
(例)S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
その他
• 講義に関する質問・課題提出など:
[email protected]
• Feed back page:
http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html
メールアドレスの入力は不要です
ニックネームを決めてください(Ranking表示に使います)