プログラミング演習( 1 組) 第 6 回

Slides:



Advertisements
Similar presentations
プログラミング演習( 2 組) 第 6 回
Advertisements

論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
論理回路 第 11 回
プログラミング演習( 2 組) 第 9 回
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
情報処理演習 (秋学期・樋口担当) 2回目 10/1 日本工業大学 コンピュータリテラシーII.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
第6回条件による分岐.
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
プログラミング演習(1組) 第7回
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
初年次セミナー 第4回 整数と実数の取り扱い.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について
多重ループ 繰り返し構造:補足事項 第8回目 [6月12日、H.15(‘03)] 本日のメニュー 1)前回の課題について
プログラミング演習(2組) 第12回
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
第二回 連立1次方程式の解法 内容 目標 連立1次方程式の掃出し法 初期基底を求める 連立1次方程式を掃出し法を用いてExcelで解析する
第6章 2重ループ&配列 2重ループと配列をやります.
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
論理回路 第7回
論理回路 第8回
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
C言語講座 第3回 ポインタ、配列.
プログラミング入門2 第5回 関数(1) 芝浦工業大学情報工学科 青木 義満
プログラミング演習(2組) 第8回
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
今までの練習問題の復習.
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第11回 プログラミングⅡ 第11回
コンピュータープログラミング (C言語)(5) 1.条件分岐1(if文、復習) 2.条件分岐2(switch,case文)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
高度プログラミング演習 (05).
高度プログラミング演習 (05).
C言語 はじめに 2016年 吉田研究室.
プログラミング序論演習.
論理回路 第12回
論理回路 第4回
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
プログラミング基礎a 第4回 C言語によるプログラミング入門 条件判断と反復
論理回路 第5回
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
C言語講座 制御(選択) 2006年 計算技術研究会.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
第4章 double 小数型の変数;.
プログラミング演習I 数値計算における計算精度と誤差
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング1 プログラミング演習I 第2回.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
プログラミング演習I 補講用課題
Presentation transcript:

プログラミング演習( 1 組) 第 6 回

今日の内容 前回の課題の解説 DEBUG について(エラーの探し方) 今回の課題の説明

タイピング 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録してい く – 残り時間⇒ FeedBack ページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBack ページで報告 – 喰いっぷり ⇒ FeedBack ページで報告

前回課題(締切: 5/18 ) (1)車の速さ speed と、目的地までの距離 distance を入力させて、目的地までの所要時 間を以下のような表示形式で求めるプログラ ムを作成せよ。 車の速さ (km/h) : 100 距離 (km) : 250 所要時間は、 2 時間 30 分 00 秒です (2) 2 次方程式 a x 2 + b x + c = 0 の解を求める プログラムを作成せよ( a,b,c は入力させよ) x の平方根を求めるプログラムを参考にせよ。

課題1(解答例) int speed; int distance; int time; printf(" 車の速さ "); scanf("%d",&speed); printf(" 目的地までの距離 "); scanf("%d",&distance); time = distance / speed; printf(" 目的地までの所要時間 "); printf("%d 分 \n", time); int 型で宣言 時間の単位に注意 入力処理 計算処理 出力処理

課題1(計算処理) time= distance / speed; 計算処理 整数型と整数型の計算 ⇒ 整数型 問題: distance 、 speed が int 型のとき, distance = 18 、 speed = 10 ならば, distance / speed は,いくらになるか? 問題: distance 、 speed が int 型のとき, distance = 18 、 speed = 10 ならば, distance / speed は,いくらになるか? 答え:1

課題1(計算処理) 所要時間を実数で求めるためには … ? (1)「 distance / speed 」を実数型として 計算 実数型と整数型の計算 ⇒ 実数型 (格上げという) 実数型と実数型の計算 ⇒ 実数型 実数型と整数型の計算 ⇒ 実数型 (格上げという) 実数型と実数型の計算 ⇒ 実数型 (double)distance / speed; → distance を double 型として計算する。 int distance; int speed; double distance; double speed;

課題1(計算処理) 所要時間を実数で求めるためには … ? (2)所要時間を格納する変数 time を実数型として 宣言 int time;double time;

課題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; )

double speed; double distance; double time; int AllSecond; int Hour; int Minute; int Second; printf(" 車の速さ (km/h) : "); scanf("%lf",&speed); printf(" 距離 (km) : "); scanf("%lf",&distance); time = distance / speed; AllSecond = time * 3600; Hour = AllSecond / 3600; Minute = (time - Hour) * 60; Second = AllSecond - Hour * Minute * 60; printf(" 所要時間は、 %d 時間 %d 分 %d 秒です \n",Hour,Minute,Second); 嶋田君の解答例

課題2の解く手順 (1) 2 次方程式の係数 a, b, c を入力させる(入力処 理) (2) 2 次方程式の解の公式を利用して,2つの解 を計算する(計算処理) (3)2つの解を表示する(出力処理)

課題2(解答例 2 組:黒武者 さん) int a, b, c; // 入力用 double kai1, kai2, y, root; // 「 kai1 」「 kai2 」は解 y はルートの中身 root は y をルー トに変換 // 画面表示 printf("2 次方程式 ax^2 + bx + c = 0 の解を求める計算をします \n"); //a の値入力 printf("a の値を入力してください \n"); scanf("%d", &a); //b の値入力 printf("b の値を入力してください \n"); scanf("%d", &b); //c の値入力 printf("c の値を入力してください \n"); scanf("%d", &c); 使用する変数を宣言 プログラムの目的を表示 入力処理

課題2(解答例 2 組:黒武者 さん) // ルートの中身 y = b*b - 4*a*c; // ルート変換 root = sqrt(y); // 解の計算 kai1 = (-b + root)/(2 * a); kai2 = (-b - root)/(2 * a); // 結果表示 printf(" 求める解は %.2lf %.2lf\n", kai1, kai2); 計算処理 y (判別式)の計算 sqrt(y) の計算 解1,2を計算 出力処理

解答例(惜しい!) 解の計算部分において、 x1=(-b+sqrt(b*b-4*a*c))/2*a; x2=(-b-sqrt(b*b-4*a*c))/2*a; x1=(-b+sqrt(b*b-4*a*c))/2*a; x2=(-b-sqrt(b*b-4*a*c))/2*a; 問題:どこが、まずいのか? ( 分子 ) / 2 * a 1. 分子を計算 2. 上記結果 / 2 3. 上記結果 * a 1. 分子を計算 2. 上記結果 / 2 3. 上記結果 * a

解答例(惜しい!) 解の計算部分において、 x1=(-b+sqrt(b*b-4*a*c))/2*a; x2=(-b-sqrt(b*b-4*a*c))/2*a; x1=(-b+sqrt(b*b-4*a*c))/2*a; x2=(-b-sqrt(b*b-4*a*c))/2*a; ( 分子 ) / 2 * a; ( 分子 ) / (2 * a); x1=(-b+sqrt(b*b-4*a*c))/( 2*a ); x2=(-b-sqrt(b*b-4*a*c))/( 2*a ); x1=(-b+sqrt(b*b-4*a*c))/( 2*a ); x2=(-b-sqrt(b*b-4*a*c))/( 2*a );

課題( Special ) ( Special ) 2 次方程式 ax 2 +bx+c=0 を解き,因数 分解の形で表示するプログラムを作成せよ. さらに, if 文を使って,重解・虚数解にも対応 させよ( pp 参照).なお,表示方法にも 注意すること 入力: a = 1 b = 1 c = -2 入力: a = 1 b = 1 c = -2 出力: (x - 1)(x + 2) = 0 出力: (x - 1)(x + 2) = 0

Special 課題 大隈君の解答例

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が実行 される

例題 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 表示に使い ます)