プログラミング入門2 第2回 演算と型 条件分岐 芝浦工業大学情報工学科 青木 義満

Slides:



Advertisements
Similar presentations
プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
Advertisements

プログラミング入門2 芝浦工業大学情報工学科青木 義満 第6回関数(2). プログラミング入門2 2 今回の講義内容 関数 配列データの受け渡し ( p.130 ~) 入出力と文字 ( p.198 ~) 文字列の基本 ( p.208 ~)
プログラミング演習( 2 組) 第 9 回
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報処理演習 (秋学期・樋口担当) 2回目 10/1 日本工業大学 コンピュータリテラシーII.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング入門2 第1回 イントロダクション 芝浦工業大学情報工学科 青木 義満
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
プログラミング演習(1組) 第7回
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ポインタ プログラミング入門2 第10回 芝浦工業大学情報工学科 青木 義満
初年次セミナー 第4回 整数と実数の取り扱い.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミング入門2 ポインタについて補足 構造体 第11回 芝浦工業大学情報工学科 青木 義満、篠埜 功
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
演算、整数型と浮動小数点型 第3回[平成16年4月27日(火)]:PN04ー03.ppt 今日の内容 1 復習 2 加減・乗除演算子
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング基礎I(再) 山元進.
プログラミング入門2 第6回 関数(2) 芝浦工業大学情報工学科 青木 義満
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
構造体 プログラミング入門2 芝浦工業大学情報工学科 青木 義満
第10回 プログラミングⅡ 第10回
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
C言語講座 第3回 ポインタ、配列.
プログラミング入門2 第5回 関数(1) 芝浦工業大学情報工学科 青木 義満
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング入門2 ファイルの入出力 ポインタ 芝浦工業大学情報工学科 青木 義満
Computer Graphics 第3回 座標変換 芝浦工業大学情報工学科 青木 義満
繰り返し計算 while文, for文.
プログラミング演習(2組) 第8回
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
C言語 はじめに 2016年 吉田研究室.
プログラミングⅡ 第2回.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
C言語講座 制御(選択) 2006年 計算技術研究会.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
第4章 double 小数型の変数;.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング入門2 第5回 配列 変数宣言、初期化について
printf・scanf・変数・四則演算
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
知能情報工学演習I 第10回( C言語第4回) 課題の回答
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

プログラミング入門2 第2回 演算と型 条件分岐 芝浦工業大学情報工学科 青木 義満 I’ll get started with Introduction and Conventional works around our study, then mention our motivation and goal. Next, I’ll explain our 3D Face Modeling Method and its medical application. Finally, I’ll conclude this presentation with some future works. 芝浦工業大学情報工学科 青木 義満

今回の講義内容 いろいろな演算(四則演算) 整数だけでなく小数データも!(int以外の変数の型) 演算と型の関係 前回 → 点数の合計 前回 → 点数の合計 今回 → 平均点(小数データ) 演算と型の関係 第2回 プログラミング入門2

これに他の演算(差,積,商,剰余) を加えていく 前回の復習も兼ねて… キーボードから2つの整数を読み込み、和を表示するプログラムを作成せよ。 これに他の演算(差,積,商,剰余) を加えていく 第2回 プログラミング入門2

+ 四則演算 a b コンピュータに様々な計算を実行させる 四則演算を実現する演算子(演算の働きを持った記号) 演算子 用法 説明 + → 四則演算が基本 (和、差、積、商) 四則演算を実現する演算子(演算の働きを持った記号) 演算子 用法 説明 + a + b aとbの和 ー a - b aとbの差 * a * b aとbの積 / a / b aをbで割った商 % a % b aをbで割った剰余 a 第一(左)オペランド + 二項演算子 b 第二(右)オペランド 第2回 プログラミング入門2

四則演算の例題 ソースファイル名:list0201.c 目的: 四則演算を実行し、結果を確認する(特に / , % 演算子の結果に注意) 目的: 四則演算を実行し、結果を確認する(特に / , % 演算子の結果に注意) /* 読み込んだ二つの整数値の和・差・積・商・剰余を表示 */ #include <stdio.h> int main(void) { int vx, vy; puts("二つの整数を入力してください。"); printf("整数vx:"); scanf("%d", &vx); printf("整数vy:"); scanf("%d", &vy); printf("vx + vy = %d\n", vx + vy); printf("vx - vy = %d\n", vx - vy); printf("vx * vy = %d\n", vx * vy); printf("vx / vy = %d\n", vx / vy); printf("vx %% vy = %d\n", vx % vy); return (0); } 第2回 プログラミング入門2

型と演算結果の関係 整数 / 整数 商の整数部 5 / 3 → 1, 3 / 5 → 0 整数 % 整数 剰余 5 % 3 → 2, 3 % 5 → 3 整数(int型)と整数(int型)の四則演算 結果も整数 第2回 プログラミング入門2

整数演算から実数演算へ これまでの計算 → 整数のみ(int型) 実際の数値計算では、実数計算がほとんど 例) 点数の平均点を求める 平方根の計算 sin, cos その他 第2回 プログラミング入門2

平均値を求めるプログラム(整数版) ファイル名:heikin_int.c /* 2科目の点数の平均を表示するプログラム 整数版*/ /* 2科目の点数の平均を表示するプログラム  整数版*/ #include <stdio.h> int main(void) { int sugaku; int english; int heikin; printf(“数学の点数は?: ”); scanf(“%d”, &sugaku); printf(“英語の点数は?: ”); heikin = (sugaku + english) / 2; /* 平均点を求める */ printf(“平均点は、%d 点 です。”, heikin ); return(0); } 演算は、*, / (乗算、除算)が優先される +, -を先に計算させる場合には、  半角( )でくくる 第2回 プログラミング入門2

平均値を求めるプログラム(実数版) ファイル名:heikin_dbl.c /* 2科目の点数の平均を表示するプログラム 実数版*/ /* 2科目の点数の平均を表示するプログラム  実数版*/ #include <stdio.h> int main(void) { int sugaku; int english; printf(“数学の点数は?: ”); scanf(“%d”, &sugaku); printf(“英語の点数は?: ”); heikin = (sugaku + english) / 2.0; /* 平均点を求める */ printf(“平均点は、%f 点 です。”, heikin ); return(0); } double heikin; int を double に! 割る数を 2 → 2.0 に! %d を %f に! 第2回 プログラミング入門2

int sugaku; double heikin; 解説 ~ 変数の”型”と”実体” 宣言 宣言 C言語 実数を 浮動小数点数で表す 解説 ~ 変数の”型”と”実体” C言語 実数を 浮動小数点数で表す 整数 → int 型 浮動小数点 → double型,float型 整数 変数の宣言 sugaku heikin タコ焼 (実体) 型名 変数名 int sugaku; 宣言 double型 タコ焼のカタ (設計図) int型 浮動小数点数 変数の宣言 型名 変数名 double heikin; 宣言 第2回 プログラミング入門2

int, double型に対するprintf, scanf関数 printf( “%d”, no ); printf( “%f ”, no ); scanf scanf( “%d”, &no ); scanf( “%lf ”, &no ); %lf (パーセント・エル・エフ) 忘れずに! 忘れずに! 第2回 プログラミング入門2

double型変数への値の入力と表示 ファイル名:list0207.c 目的: double型変数に対する printf, scanf の使い方をマスター /* 二つの実数値を読み込んで和・差・積・商を実数で表示 */ #include <stdio.h> int main(void) { double vx, vy; /* 浮動小数点数 */ puts("二つの数を入力してください。"); printf("実数vx:"); scanf("%lf", &vx); printf("実数vy:"); scanf("%lf", &vy); printf("vx + vy = %f\n", vx + vy); printf("vx - vy = %f\n", vx - vy); printf("vx * vy = %f\n", vx * vy); printf("vx / vy = %f\n", vx / vy); return (0); } 第2回 プログラミング入門2

OK! dx nx printf → 9.000000 9 9.99 9.99 型と代入(重要!) dx int型変数に小数値(double)を代入すると…… double型に整数値(int)を代入すると… 9.99 小数点以下は切り捨て! 型に入らない! 9.99 OK! dx double型 nx int型 dx double型 9 printf → 9.000000 第2回 プログラミング入門2

型と演算(重要!) 同じ型どうし、異なる型どうしの演算 / 2 → 2 int / int → int 5.0 / 2.0 → 2.0 double / double →  double 同じ型どうしの演算 5.0 / 2 double / int 5.0 / 2.0 → 2.5 double / double → double 5 / 2.0 int / double 5.0 / 2.0 → 2.5 double / double → double 格上げ 格上げ 異なる型どうしの演算 第2回 プログラミング入門2

< 重要 int double 整数のみ 実数 型と演算 小さい方の型のオペランドは、より大きい方の型に変換 異なる型どうしの演算では、  小さい方の型のオペランドは、より大きい方の型に変換 された上で演算が行われる 重要 int 整数のみ double 実数 < 第2回 プログラミング入門2

例題(演算と型) ソースファイル名:list0208.c (p.29) 確認事項: 同じ型,異なる型どうしの演算結果 確認事項: 同じ型,異なる型どうしの演算結果 /* 型と演算について確認する */ #include <stdio.h> int main(void) { int n1, n2, n3, n4; double d1, d2, d3, d4; n1 = 5 / 2; n2 = 5.0 / 2.0; n3 = 5.0 / 2; n4 = 5 / 2.0; d1 = 5 / 2; d2 = 5.0 / 2.0; d3 = 5.0 / 2; d4 = 5 / 2.0; printf("n1 = %d\n", n1); printf("n2 = %d\n", n2); printf("n3 = %d\n", n3); printf("n4 = %d\n\n", n4); printf("d1 = %f\n", d1); printf("d2 = %f\n", d2); printf("d3 = %f\n", d3); printf("d4 = %f\n", d4); return (0); } 第2回 プログラミング入門2

a (型) キャスト演算子 ~ 値の型を(強引に)変換 aの値を型名で指定された値に 変換したものを生成 キャスト演算子 ~ 値の型を(強引に)変換 a aの値を型名で指定された値に 変換したものを生成 (型) 例1)    (double) 5 → 5.0 を生成 (int) 2.55 → 2  を生成 例2)    int na, nb; double heikin; na = 40; nb = 45; heikin = (double) (na + nb) / 2 ; 代入 85.0 / 2 (double) / (int) 85.0(double型) 85(int型) 45.2 (double) 第2回 プログラミング入門2

if文による条件分岐 キーボードから入力した整数値が… 条件にもとづいて、プログラムの流れを変える 例えば、  ・ もし、5で割り切れなかったら、“5の倍数でありません。”    と表示する。  ・ そうでなかったら(5で割り切れたら)、“5の倍数です。” 第2回 プログラミング入門2

if文 例題 ~ 最初のif文プログラム %: 余り ソースファイル名: list0301.c 概要: 読み込んだ整数値が5で割り切れないかどうか判定 目的: if 文の動作を確認 /* 読み込んだ整数値は5で割り切れないか */ #include <stdio.h> int main(void) { int vx; printf("整数を入力してください:"); scanf("%d", &vx); if (vx % 5) puts("その数は5で割り切れません。"); return (0); } %: 余り if文 第2回 プログラミング入門2

例題解説(1) ~ if文の動作 構文 if ( 式 ) 文 式 if (vx % 5) 文 puts("その数は5で割り切れません。"); vxが5の倍数 → vx%5 = 0 vxが5の倍数でない → vx%5 ≠0(非ゼロ)  構文 if ( 式 ) 文 (式)を評価 式の結果が非0だったら、文を実行 式の結果が0だったら、文を実行せず 第2回 プログラミング入門2

If~else~文 例題~ if文プログラム(2) ソースファイル名: list0303.c 概要: 割り切れなくても,割り切れても,その結果を表示 目的: if ~else~文の動作を確認 #include <stdio.h> int main(void) { int vx; printf("整数を入力してください:"); scanf("%d", &vx); if (vx % 5) puts("その数は5で割り切れません。"); else puts(“その数は5で割り切れます。"); return (0); } If~else~文 第2回 プログラミング入門2

例題解説(2): if~else~文の動作 構文 if ( 式 ) else 式 vxが5の倍数でない → vx%5 ≠0(非ゼロ) if (vx % 5) puts("その数は5で割り切れません。"); else puts(“その数は5で割り切れます。"); 文1 vxが5の倍数 → vx%5 = 0 vxが5の倍数でない → vx%5 ≠0(非ゼロ)  文2 構文 if ( 式 ) 式を評価,その値が, もし(if),非0だったら・・・ → 文1 を実行 そうでなければ(else),(0以外であれば) → 文2 を実行 文1 else 文2 第2回 プログラミング入門2

X + 38 X % 5 「式の評価」とは?? C言語における「式」 x (int型変数) 38 (int型定数) x + 38 (演算) 全てその値を評価できる 「式」 53 式全体の評価値  X  +  38 15 38 X % 5 5 7 2 式全体の評価値 第2回 プログラミング入門2

値を比較するには? ~ 等価演算子,関係演算子 値を比較するには? ~ 等価演算子,関係演算子 条件分岐における条件判定 人間の日常生活の中での様々な判断は,1つの条件,またはいくつかの条件を総合して判断している。  例えば… 只今の所持金は財布の中の2000円のみ   欲しい品物が2000円より高い → 買えない   2000円以下 → 買える! 大学の成績評価   A(80~100),B(70~79),C(60~69),D(~59) 駅から歩くか,学バスが来るまで待つか,タクシーに乗るか 判断要素: 天候,次のバスが来るまでの時間,所持金,疲労度,授業までの残り時間 など ある値の大小によって,処理を分岐する必要になる! 第2回 プログラミング入門2

値比較のプログラム(1) ファイル名:list0306.c /* 読み込んだ二つの整数値は等しいか */ /* 読み込んだ二つの整数値は等しいか */ #include <stdio.h> int main(void) { int x1, x2; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d", &x1); printf("整数2:"); scanf("%d", &x2); if (x1 == x2) puts("それらの値は同じです。"); else puts("それらの値は違います。"); return (0); } 第2回 プログラミング入門2

値比較のプログラム(2) ファイル名:list0307.c /* 読み込んだ二つの整数値は等しいか */ /* 読み込んだ二つの整数値は等しいか */ #include <stdio.h> int main(void) { int x1, x2; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d", &x1); printf("整数2:"); scanf("%d", &x2); if (x1 != x2) puts("それらの値は違います。"); else puts(“それらの値は同じです。"); return (0); } 第2回 プログラミング入門2

等価演算子 2つの式の値が等しいか,等しくないかを判定 等価演算子 ※ != はこの逆 ==演算子 a == b !=演算子 a != b aとbの値が等くなければ1,そうでなければ0 等価演算子 値が1(等しい) if (x1 == x2) puts("それらの値は同じです。"); else puts("それらの値は違います。"); 値が0 (等しくない) ※ != はこの逆 第2回 プログラミング入門2

3つ以上の条件分岐をするには? 値の比較により,処理の流れを3つに分岐したい これまでは流れを2つに分岐 → 3つ以上の場合は? 例) これまでは流れを2つに分岐 → 3つ以上の場合は? 例) 所持金2,000円 (1) 商品が2,000円より高かったら,惜しくも買えない.   (2) 商品が2,000円ピッタリだったら,ビンゴ.   (3) 商品が2,000円より安ければ,余裕で買える. 値が等しいかどうかを判定:等価演算子(==,!=) 値の大小を比較する演算子が必要!! 値の比較により,処理の流れを3つに分岐したい 第2回 プログラミング入門2

値比較のプログラム(3) ファイル名:list0309.c if (no == 0) puts("その数は0です。"); /* 読み込んだ整数値の符号を判定 */ #include <stdio.h> int main(void) { int  no; printf("整数を入力してください:"); scanf("%d", &no); if (no == 0) puts("その数は0です。"); else if (no > 0) puts("その数は正です。"); else puts("その数は負です。"); return (0); } 第2回 プログラミング入門2

3つ以上の分岐: if ~, else if ~, else ~ 文1   else if(条件式2) 文2   else 文3 ① If(もし) 条件1であれば,文1実行 ①でなく,条件2であれば,文2実行 ①, ②のどの条件にもあてはまらない場合 ② ③ if (no == 0) puts("その数は0です。"); else if (no > 0) puts("その数は正です。"); else puts("その数は負です。"); ① ② ③ ①,②以外,つまり,0でも正でもない場合 ※else if は何個でも書ける. 第2回 プログラミング入門2

if ( a >= b ) ○ → 値は1 × → 値は0 大小関係を比較する ~ 関係演算子 < 演算子 a < b 大小関係を比較する ~ 関係演算子 < 演算子 a < b aがbより小さければ1,そうでなければ0 >演算子 a > b aがbより大きければ1,そうでなければ0 <=演算子 a <= b aがb以下であれば1,そうでなければ0 >=演算子 a >= b aがb以上であれば1,そうでなければ0 if ( a >= b ) ○ → 値は1 × → 値は0 第2回 プログラミング入門2

2つの整数の大きい方の値を求める(1) ファイル名:list0310.c int main(void) { int n1, n2; /*  2つの整数の大きい方の値を求める */ #include <stdio.h> int main(void) { int n1, n2; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d", &n1); printf("整数2:"); scanf("%d", &n2); if (n1 > n2) printf("大きい方の値は%dです。\n", n1); else printf("大きい方の値は%dです。\n", n2); return (0); } 第2回 プログラミング入門2

2つの整数の大きい方の値を求める(2) ファイル名:list0311.c 求めた値を,後の処理のために変数に格納 /*  2つの整数の大きい方の値を求める */ #include <stdio.h> int main(void) { int n1, n2, max; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d", &n1); printf("整数2:"); scanf("%d", &n2); if (n1 > n2) max = n1; else max = n2; printf("大きい方の値は%dです。\n", max); return (0); } 第2回 プログラミング入門2

} } 大きい方の値, 小さい方の値両方を求める(3) ファイル名:list0315.c if (n1 > n2) { /*  2つの整数の大きい方,小さい方の値両方を求める */ #include <stdio.h> int main(void) { int   n1, n2, max, min; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d", &n1); printf("整数2:"); scanf("%d", &n2); if (n1 > n2) { max = n1; min = n2; } else { max = n2; min = n1; printf("大きい方の値は%dです。\n", max); printf("小さい方の値は%dです。\n", min); return (0); 今までに無かった中括弧 } 文が2つ(複数) 今までに無かった中括弧 } 文が2つ(複数) 第2回 プログラミング入門2

複合文(ブロック) 重要 単一の文が要求されるところで,複数の文を実行しなければ 複合文(ブロック)  単一の文が要求されるところで,複数の文を実行しなければ ならない時には,{}の中にまとめて,複合文(ブロック)として実現. 重要 例1) if (n1 > n2) { max = n1; min = n2; } 複合文(ブロック) ※文が一つの場合,   {}は書いても書かなくてもOK. 実はこんなところにも… #include <stdio.h> int main(void) {     printf(“こんにちは。”);     return (0); } 複合文(ブロック) 第2回 プログラミング入門2

論理演算子 の導入 複数の条件から判断 ~ 論理演算子 複数の条件から判断 ~ 論理演算子 一つの条件だけでなく,複数の条件が成立,またはどちらからかが成立した時,というように複数の条件から処理を判断. 例) とある飲み会へ参加しようかどうか迷っている  (1)友人AとBが両方とも(AかつB)参加表明 → 私も参加  (2)友人AとBの少なくともどちらかが(AまたはB)参加表明 → 参加微妙  (3)友人AとB,両方とも不参加 → 私も不参加 論理演算子 の導入 第2回 プログラミング入門2

論理演算子 ~ AかつB,AまたはB の実現 読み込んだ月から季節を判定するプログラム 仕様 整数値(月:変数名 month )を入力 その数字が, 3,4,5 → 春 6,7、8 → 夏 9,10,11 → 秋 12,1,2 → 冬 と判定したい 条件を ?以上?以下で表現できる 条件を 12または1または2 と表現できる 第2回 プログラミング入門2

論理演算子 && 「かつ」 条件の「かつ」,「または」を表現 a && b aとbがどちらも非0であれば1,そうでなければ0 &&(and) 演算子 a && b aとbがどちらも非0であれば1,そうでなければ0 || (or)演算子 a || b aとbの一方でも非0であれば1,そうでなければ0 例) もし,3月以上(かつ)5月以下だったら… && 「かつ」 ① ② 3 <= month <= 5 month >= 3 month <= 5 ○(1:正) → ○(1:正) ○(1:正) ×(0:誤) →×(0:誤) ×(0:正) ①,②の両方成り立てば○ 第2回 プログラミング入門2

論理演算子 || 条件の「かつ」,「または」を表現 a && b aとbがどちらも非0であれば1,そうでなければ0 || (or)演算子 &&(and) 演算子 a && b aとbがどちらも非0であれば1,そうでなければ0 || (or)演算子 a || b aとbの一方でも非0であれば1,そうでなければ0 例) 12月,または1月だったら 「または」 ① ② ①,②のどちらかが成り立てば○ || month == 12 month == 1 ○(1:正) → ○(1:正) ○(1:正) ×(0:誤) →○(1:正) ×(0:正) →×(0:誤) 第2回 プログラミング入門2

季節判定プログラム(論理演算子) ファイル名:list0316.c if (month >= 3 && month <= 5) /* 読み込んだ月の季節を表示 */ #include <stdio.h> int main(void) { int month; /* 月 */ printf("何月ですか:"); scanf("%d", &month); if (month >= 3 && month <= 5) puts("春です。"); else if (month >= 6 && month <= 8) puts("夏です。"); else if (month >= 9 && month <= 11) puts("秋です。"); else if (month == 1 || month == 2 || month == 12) puts("冬です。"); else puts("そんな月はありませんよ!!\a"); return (0); } 第2回 プログラミング入門2

もう一つの条件分岐文 ~ switch 文 ソースファイル名: list0317.c 読み込んだ整数値を3で割った剰余を表示(if文使用) /* 読み込んだ整数値を3で割った余りを表示 */ #include <stdio.h> int main(void) { int  num; printf("整数を入力してください:"); scanf("%d", &num); return (0); } 同じ式が2回登場 → 無駄? if (num % 3 == 0) puts(“3で割った余りは0です"); else if (num % 3 == 1) puts(" 3で割った余りは1です"); else puts(“3で割った余りは2です"); 処理を自分で記述 第2回 プログラミング入門2

switch 文 単一の条件式の値によって,処理を複数に分岐させる場合 → if文よりも簡潔に記述できる! ソースファイル名: list0318.c /* 読み込んだ整数値を3で割った余りを表示 */ #include <stdio.h> int main(void) { int  num; printf("整数を入力してください:"); scanf("%d", &num); switch ( num % 3 ) { case 0 : puts(“3で割り切れます”); break ; case 1 : puts(“余りは1です”); break ; case 2 : puts(“余りは2です”); break ; } return (0); 第2回 プログラミング入門2

switch文の構造 switch ( num % 3 ) { case 0 : puts(“3で割り切れます”); break ; 条件式① switch ( num % 3 ) {  case 0 : puts(“3で割り切れます”); break ;  case 1 : puts(“余りは1です”);   break ;   case 2 : puts(“余りは2です”);   break ; } ①の値が 0の場合 1の場合 2の場合 (Switch文終了) break で switch文を抜ける ()カッコ内の式を評価し,case で書かれた 値と一致するところにプログラムの流れを移行 第2回 プログラミング入門2

switch文の break; と default : の役割 ソースファイル名: list0319.c /* switch文の動作を確認するプログラム */ #include <stdio.h> int main(void) { int sw; printf("整数を入力してください:"); scanf("%d", &sw); switch (sw) {  case 1 : puts("A"); puts("B"); break;  case 2 : puts("C");  case 5 : puts("D"); break;  case 6 :  case 7 : puts("E"); break;  default : puts("F"); break; } return (0); break; がない break; がない 新しい default : switch文の動作を確認 第2回 プログラミング入門2

case 1 : puts("A"); puts("B"); break; case 2 : puts("C"); switch (sw) { case 1 : puts("A"); puts("B"); break; case 2 : puts("C"); case 5 : puts("D"); break; case 6 : case 7 : puts("E"); break; default : puts("F"); break; } “sw” が 1, 2, 5, 6, 7 以外の場合 第2回 プログラミング入門2

switch文 と if文 を行い,処理を分岐することができる Switch文 → 単一の式の値によって,プログラムの流れを分岐 if 文 → 単一の式の値によって,プログラムの流れを分岐 if 文  → 複数の式の値によって,複雑な条件判断     を行い,処理を分岐することができる 第2回 プログラミング入門2

演習課題(簡単な数値計算) kadai2-1.c kadai2-2.c 身長を整数値として読み込んで(scanf)、それに対する標準体重を実数で表示(printf)するプログラムを作成せよ。なお、標準体重の計算式は以下で与えられるものとする。 標準体重 = (身長-100)×0.9 2. あるサッカーチームのゴール決定率を計算・表示するプログラムを作成せよ。   ただし、決定率は小数点2桁まで表示すること。  手順) ・チーム名を表示(printf) ・シュート数を入力 ・ゴール数を入力 ・ゴール決定率を計算(ゴール数÷シュート数)×100 (%) ・ゴール決定率を表示 (小数点2桁まで) kadai2-1.c kadai2-2.c 第2回 プログラミング入門2

演習課題(条件分岐) 3.if文を用いて,点数を入力すると、その評価を出力するプログラムを作れ。 なお評価は、以下のとおりとする。   なお評価は、以下のとおりとする。    ・80点以上: A(優), 70点以上80点未満: B(良),60点以上70点未満: C(可),      60点未満: D(不可) 4.月を数字で読込み,その月が何日あるかを表示するプログラムを作れ。なお、1〜12以外の数字を入力した際には、”1〜12までの数字を入力してください”と表示すること。   ただし,    ・2月 →28日    ・ 4, 6, 9, 11  → 30日    ・1,3,5,7,8,10,12 → 31日 kadai2-3.c kadai2-4.c 第2回 プログラミング入門2

プログラミング入門2 レポート課題(第1回目) プログラミング入門2 レポート課題(第1回目) 演習課題1〜4のプログラムを作成し,動作確認した上で ソースファイル4つ(それぞれ,kadai2-1.c 〜 kadai2-4.c) をメールに添付して提出せよ。 (授業中にできた課題は授業中にチェックしてもらうこと。) 提出方法:   メールの題名(subjet)を, “学籍番号”+”自分の苗字”(全て半角英数文字にて)とする。 例) L02001 aoki 提出先: yaoki@sic.shibaura-it.ac.jp (青木アドレス) 提出期限: 10月12日(金) 18:00まで(時間厳守) 第2回 プログラミング入門2

次回の講義予定 繰り返し文 で、プログラミングの幅を広げよう! 第2回 プログラミング入門2