プログラミング演習( 2 組) 第 6 回
オフィス・アワーのお知らせ オフィス・アワーを以下の要領で開講 – 日時:毎週月曜日、 5 時限目(16:2 0~) – 場所: 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.int 型変数の使用 2.double 型変数の使用 3. +、ー、*、/を用いた演算(すべて使う こと) 4.sqrt, sin, cos, tan のいずれかを用いた計算 5.printf を用いた整数の表示 6.printf を用いた実数の表示 7.scanf を用いた整数の入力 8.scanf を用いた実数の入力
課題2の例 数学 – 図形(三角形、台形)の面積・辺の長さを計算 – 正弦定理・余弦定理・三平方の定理の利用 – 座標の計算(下田君) – 加法定理(黒武者さん) 物理現象 – 斜方投射(東君) – 摩擦力(松本君) – 磁界の強さとトルクの大きさ(竹中君) 占い – 入力値に応じて占い結果を表示(平田さん) お金の計算(小西君、柴田君)
DEBUG でよくある間違い 1.「;」の忘れ 2.全角スペースが入っている 3.変数が未定義 4.「 studio.h 」と書いている 4.変数の値が定まっていないのに、計算 に使っている int x; int z; z = x*x; printf(“z = %d\n”,z); 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 } if ( a == b == c ) { 文1; 文2 }
論理演算で間違える例 if ( a < b < c ) { 文1; 文2 } if ( a < b < c ) { 文1; 文2 } たとえば, a = 7; b = 4; c = 5; のとき, 次の演算結果を求めよ (1) a < b (2) b < c (3) a < b < c 次の演算結果を求めよ (1) a < b (2) b < c (3) a < b < c (1) 0 (2) 1 (3) 1 (1) 0 (2) 1 (3) 1
例題 2次方程式の判別式を使って,解の種類 を判別するプログラムを作成せよ. 二次方程式 a*x*x + b*x + c = 0 の解の種類を 調べます. 係数 a は? 1 係数 b は? 5 係数 c は? 4 この2次方程式の解は,虚数解です 二次方程式 a*x*x + b*x + c = 0 の解の種類を 調べます. 係数 a は? 1 係数 b は? 5 係数 c は? 4 この2次方程式の解は,虚数解です
判別式 D を計算 D > 0 D < 0 「2つの実数 解」 と表示 「虚数解」と 表示 「重解」と表 示 TRUE FALSE
解答例 D = b*b-4*a*c; if (D > 0) { printf(“ 2つの実数解です ”); } else if (D < 0) { printf(“ 虚数解です ”); } else { printf(“ 重解です ”); }
今日の課題 課題1:三角形の3辺の長さを入力させて, その大小関係からどのような三角形かを 判定するプログラムを作れ. 課題2:3つの値を入力させて,その中で 最も大きい値を表示するプログラムを作 れ. 一つ目の辺の長さは? 3 二つ目の辺の長さは? 5 三つ目の辺の長さは? 4 この三角形は,直角三角形です! 一つ目の辺の長さは? 3 二つ目の辺の長さは? 5 三つ目の辺の長さは? 4 この三角形は,直角三角形です! 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8で す! 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8で す!
注意事項 ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 メールについて 件名は,学籍番号+半角スペース+氏名 (例) S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける
その他 講義に関する質問・課題提出など: Feed back page : メールアドレスの入力は不要です ニックネームを決めてください( Ranking 表示に使い ます)