プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.

Slides:



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

コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
プログラミング入門2 第1回 導入、型と演算、条件分岐、式の評価 情報工学科 篠埜 功.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング入門2 第10回 動的な領域確保 情報工学科 篠埜 功.
プログラミング入門2 第1回 導入、型と演算、条件分岐、式の評価 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
演算、整数型と浮動小数点型 第3回[平成16年4月27日(火)]:PN04ー03.ppt 今日の内容 1 復習 2 加減・乗除演算子
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング入門2 第2回 複合文、繰り返し 情報工学科 篠埜 功.
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
第10回関数 Ⅱ (ローカル変数とスコープ).
プログラミング入門2 第2回 演算と型 条件分岐 芝浦工業大学情報工学科 青木 義満
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 条件による繰り返し.
プログラミング入門2 第11回 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
プログラミング序論演習.
基礎プログラミング演習 第6回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
ウェブデザイン演習 第6回.
C言語講座 制御(選択) 2006年 計算技術研究会.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報処理Ⅱ 2005年10月28日(金).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング1 プログラミング演習I 第2回.
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
情報処理Ⅱ 2006年10月27日(金).
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功

今回の講義内容 型と演算 浮動小数点型 条件分岐 いろいろな演算(四則演算など) 型と演算の関係 if文 (例)平均点 第2回 プログラミング入門2

四則演算 四則演算の演算子 使い方 意味 a + b aとbの和 a - b aとbの差 a * b aとbの積 a / b 第2回 プログラミング入門2

(例) 2つの整数の和、差、積、商を表示(打ち込んで実行) #include <stdio.h> int main(void) { int x, y; printf("二つの整数を入力してください。\n"); printf("整数x:"); scanf("%d", &x); printf("整数y:"); scanf("%d", &y); printf("x + y = %d\n", x + y); printf("x - y = %d\n", x - y); printf("x * y = %d\n", x * y); printf("x / y = %d\n", x / y); printf("x %% y = %d\n", x % y); return 0; } 第2回 プログラミング入門2

整数演算から実数演算へ これまでの計算は整数(int型)のみ 実数計算の例 点数の平均点 平方根 sin, cos その他 第2回 プログラミング入門2

平均点を求めるプログラム(打ち込んで実行) /* average_double.c 2科目の点数の平均を表示するプログラム */ #include <stdio.h> int main(void) { int math; int english; double average; printf (“数学の点数は?: ”); scanf (“%d”, &math); printf (“英語の点数は?: ”); scanf (“%d”, &english); average = (math + english) / 2.0; /* 平均点を計算 */ printf (“平均点は、%f 点 です。\n”, average ); return 0; } 第2回 プログラミング入門2

int english ; int math ; double average ; 型とは C言語 実数を 浮動小数点数で表す タコ焼のカタ (型) タコ焼 (各変数) 型名 変数名 int english ; int型 english 型名 変数名 int math ; int型 math 型名 変数名 double average ; double型 average 第2回 プログラミング入門2

int, double型に対するprintf, scanf関数 (int x; と宣言されているとする) double型の場合 (double y; と宣言されているとする) printf printf( “%d”, x ); printf( “%f”, y ); scanf scanf( “%d”, &x ); scanf( “%lf “, &y ); (参考) printfではfloat型もdouble型も%fを用いる。printf関数のfloat型の引数はdouble型に変換される(default argument promotion, 既定の実引数拡張)ので、float型用の変換指定子はいらない。scanf関数では、float型は%f、double型は%lfを用いる。scanf関数の第2以降引数にはポインタ型の式が与えられるので、実引数拡張に該当せず、float型とdouble型の区別が必要。 (補足) printfで%lfを用いた場合の動作は未定義だが、多くのコンパイラにおいて%fと同様に動作する。 第2回 プログラミング入門2

double型変数への値の入力と表示 /* 二つの実数値を読み込んで和・差・積・商を実数で表示 */ /* 二つの実数値を読み込んで和・差・積・商を実数で表示 */ #include <stdio.h> int main(void) { double x, y; printf ("二つの数を入力してください。\n"); printf ("実数x:"); scanf("%lf", &x); printf ("実数y:"); scanf("%lf", &y); printf ("x + y = %f\n", x + y); printf (“x - y = %f\n", x - y); printf (“x * y = %f\n", x * y); printf (“x / y = %f\n", x / y); return 0; } 第2回 プログラミング入門2

nx 9 9.99 型と代入 dx int型の変数に小数値を代入すると double型の変数に整数値を代入すると 第2回 プログラミング入門2

型と演算 int型同士、double型同士の演算 / 2 → 2 5.0 / 2.0 → 2.5 int型同士の場合結果もint型。 double型同士の場合結果もdouble型。 double型とint型の演算 5.0 / 2 → 2.5 5 / 2.0 → 2.5 片方がint型、もう片方がdouble型の場合、int型の数値をdouble型に変換してから演算が行われれる(暗黙の型変換, implicit conversion)。+ や * などの演算でも同様。 第2回 プログラミング入門2

型と演算 型が小さい方のオペランドは、大きい方の型に変換された上で演算が行われる。 +, -, *, /などの算術演算において、異なる型同士の演算では、  型が小さい方のオペランドは、大きい方の型に変換された上で演算が行われる。 第2回 プログラミング入門2

キャスト演算子 ~ 値の型を強制的に変換 (例1) (double) 5 → 5.0 (int) 2.55 → 2 キャスト演算子 ~ 値の型を強制的に変換 (例1)    (double) 5 → 5.0 (int) 2.55 → 2 85は85.0にキャスト演算子(double)によって強制的に型変換される average = (double) (a + b) / 2 ; 85(int型) 42.5が代入される 85.0(double型) (例2)    int a, b; double average; a = 40; b = 45; average = (double) (a+b) / 2 85.0 / 2 (double) / (int) 85.0 / 2.0 (double) / (double) 2は2.0に暗黙に型変換 される(implicit conversion) 第2回 プログラミング入門2

キャスト演算子の構文 構文 (<型>) <式> 式 (t) e の意味 式eの評価結果の値を型tに変換した値が、式 (t) e の評価結果となる。 第2回 プログラミング入門2

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

if文の構文(その1) if文の構文(その1) if (<式>) <文> if文 if (e) s の意味 第2回 プログラミング入門2

例(打ち込んで確認してください) /* 読み込んだ整数値が5で割り切れるかどうか判定 */ #include <stdio.h> int main(void) { int x; printf("整数を入力してください:"); scanf("%d", &x); if (x % 5) printf ("その数は5で割り切れません。\n"); return 0; } 第2回 プログラミング入門2

if文の構文(その2) if文の構文(その2) if (<式>) <文> else <文> if文 if (e) s1 else s2 の意味 式eを評価し、その結果が0でないとき文s1を実行し、0のとき文s2を実行する。 第2回 プログラミング入門2

例(打ち込んで確認してださい) #include <stdio.h> int main (void) { int x; printf ("整数を入力してください:"); scanf ("%d", &x); if (x % 5) printf (“その数は5で割り切れません。\n"); else printf (“その数は5で割り切れます。\n"); return 0; } 第2回 プログラミング入門2

式の評価 C言語における式の例 x 38 x + 38 (x+38) / 2 式の評価 38  x + 38 (x+38) / 2 式の評価 xがint型で、15が代入されていたとする。そのとき、 式xの値は15 式38の値は38 式 x+38の値は、53 式 (x+38) / 2 の値は、26 上記のように、複雑な式は、部分式の評価をまず行い、その結果の値を用いて演算(この例では足し算、割り算)を行う。 第2回 プログラミング入門2

四則演算式 <式> + <式> 足し算式の構文 (引き算、掛け算なども同様。) 足し算式 e1 + e2 の意味 e1とe2をまず評価し、それらの結果v1, v2の和が足し算式 e1+e2 の評価結果である。 四則演算式は式である。したがって、たとえば+の左側や右側に引き算式を書いてよい。 (例)1 - 2 + 3 など。 この例では、赤字の部分の1-2という式が、外側の足し算式の左側の式を成している。 (補足)四則演算の演算子は左結合である。よって1-2+3は1-2に3を足すという意味である。2+3を先にしたい場合は括弧をつけ、1-(2+3)のように記述する。 第2回 プログラミング入門2

<式> == <式> 値の比較の式: 等価演算子(その1) == 構文 <式> == <式> (これ自体も式である。たとえば、==の左辺や右辺で==を使った比較式を書ける。) 式 e1==e2 の意味 式e1, e2を評価し、それらの結果v1, v2が等しいときは1、異なるときは0が、式e1==e2の評価結果となる。 第2回 プログラミング入門2

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

構文 <式> != <式> 式 e1!=e2 の意味 値の比較の式: 等価演算子(その2) != 値の比較の式: 等価演算子(その2) != 構文 <式> != <式> (これ自体も式である。たとえば、==や!=の左辺や右辺で!=を使った比較式を書ける。) 式 e1!=e2 の意味 式e1, e2を評価し、それらの結果v1, v2が異なるときは1、等しいときは0が、式e1!=e2の評価結果となる。 第2回 プログラミング入門2

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

3つ以上の条件分岐をするには? if文の中でif文を使えばよい。(nest, 入れ子) これまでは流れを2つに分岐 → 3つ以上の場合は? 例) 所持金2,000円 (1) 商品が2,000円より高かったら,惜しくも買えない.   (2) 商品が2,000円ピッタリだったら,ビンゴ.   (3) 商品が2,000円より安ければ,余裕で買える. if文の中でif文を使えばよい。(nest, 入れ子) if (<式>) <文> else <文> 復習 if文の構文(その2) if文自体、文である。したがって、if文の中の <文>のところにif文を書いてよい。 第2回 プログラミング入門2

値比較のプログラム(3)(打ち込んで確認) /* 読み込んだ整数値の符号を判定 */ #include <stdio.h> int main (void) { int  n; printf ("整数を入力してください:"); scanf ("%d", &n); if (n == 0) printf ("その数は0です。\n"); else if (n > 0) printf ("その数は正です。\n"); else printf ("その数は負です。\n"); return 0; } 赤字の部分はif文であり、外側のif文のelseパートを成している。 第2回 プログラミング入門2

大小関係を比較する ~ 関係演算子 > 大小比較式の構文 <式> > <式> 大小比較式 e1 > e2 の意味 大小関係を比較する ~ 関係演算子 > 大小比較式の構文 <式> > <式> 大小比較式 e1 > e2 の意味 式e1, e2を評価し、その結果をv1, v2とする。v1がv2より大きければ1,そうでなければ0が、式e1>e2の評価結果である。 この比較式自体、式である。==や!=と同様、典型的にはif文の条件部分に使われるが、その他にも、式が書けるところなら自由に書くことができる。 比較演算子には、< 以外に、>, <=, >= もある。 第2回 プログラミング入門2

大小関係を比較する ~ 関係演算子 比較式 意味 e1 < e2 大小関係を比較する ~ 関係演算子 比較式 意味 e1 < e2 式e1, e2を評価し、その結果をv1, v2とすると、v1がv2より小さければ1,そうでなければ0が、式e1<e2の評価結果である。 e1 > e2 式e1, e2を評価し、その結果をv1, v2とすると、v1がv2より大きければ1,そうでなければ0が、式e1>e2の評価結果である。 e1 <= e2 式e1, e2を評価し、その結果をv1, v2とすると、v1がv2以下のとき1,そうでなければ0が、式e1<=e2の評価結果である。 e1 >= e2 式e1, e2を評価し、その結果をv1, v2とすると、v1がv2以上のとき1,そうでなければ0が、式e1>=e2の評価結果である。 第2回 プログラミング入門2

演習課題 身長を整数値としてキーボードから読み込み、それに対する標準体重をdouble型で求め、それを表示するプログラムを作成せよ。なお、標準体重の計算式は以下で与えられるものとする。 標準体重 = (身長-100)×0.9 2. 点数を整数値でキーボードから読み込み、その点数をA~Dの4段階に分け、それ出力するプログラムを作成せよ。   なお点数の段階分けの基準は、以下の通りとする。 80点以上: A(優) 70点以上80点未満: B(良) 60点以上70点未満: C(可) 60点未満: D(不可) 第2回 プログラミング入門2