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

Slides:



Advertisements
Similar presentations
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
Advertisements

コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
課題 1 キーボードから整数値を 1つ読み込み、その値の二乗と三乗を出力するプログラムを作れ。 動作例: % ./a.out
初年次セミナー 第4回 整数と実数の取り扱い.
第2章 数値の入力と変数 scanfと変数をやります.
演算、整数型と浮動小数点型 第3回[平成16年4月27日(火)]:PN04ー03.ppt 今日の内容 1 復習 2 加減・乗除演算子
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
x y 復習 変数とその種類 変数名 数学の場合 未知数 「変数xに‥を代入し‥」 x = 5 x = 1.3
C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室.
C言語講座 第4回 ポインタ.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
情報処理Ⅱ 第4回 2007年10月29日(月).
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
第二回 VB講座 電卓を作ろう.
プログラミング応用 printfと変数.
プログラミング入門 電卓を作ろう・パートIV!!.
プログラミング序論 2. n人のインディアン.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
情報処理Ⅱ 第2回:2003年10月14日(火).
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
x y 復習 変数とその種類 変数とは何か? →データ(数値)を入れておく箱 変数名 変数名とは何か?
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
プログラミング入門 電卓を作ろう・パートI!!.
C言語講座 制御(選択) 2006年 計算技術研究会.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
情報処理Ⅱ 2005年10月28日(金).
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
標準入出力、変数、演算子、エスケープシーケンス
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
コンパイラ 2012年10月11日
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報処理Ⅱ 第2回 2004年10月12日(火).
第3回簡単なデータの入出力.
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

プログラミング論 第八回数字の計算,整数の入出力

本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子

演習 ensyu12.c のプログラムを完成させな さい。 ensyu12.c のプログラムを完成させな さい。 –char 型配列変数 name を宣言しなさい。そ の時,自分の名前を初期値として与えな さい。 –double 型変数 tall を宣言する際,自分の身 長を初期値として与えなさい。 – 「~さんの身長は~ cm です。」と出力す る printf 文を作りなさい。 ~の部分には変数値が与えられるようにしな さい。 ~の部分には変数値が与えられるようにしな さい。 身長は,整数部 3 桁,小数部 1 桁で表示される ように指定しなさい。 身長は,整数部 3 桁,小数部 1 桁で表示される ように指定しなさい。

加減乗除を行う 加減乗除を行うときは,算術演算子を用い ます。 加減乗除を行うときは,算術演算子を用い ます。 算術演算子は,次の通りです。 算術演算子は,次の通りです。 演算子説明例 +加算a=b+c; -減算a=b-c; *乗算a=b*c; /除算a=b/c; %余りa=b%c;

算術演算子の注意点 整数値同士で除算を行うと,小数点以 下は切り捨てられる。 整数値同士で除算を行うと,小数点以 下は切り捨てられる。 整数に対して%演算を使用すると,余 りを求めることができる。 整数に対して%演算を使用すると,余 りを求めることができる。 0で除算を行うことはできない。 0で除算を行うことはできない。 整数と実数を混ぜて計算すると,答え は実数表現になる。 整数と実数を混ぜて計算すると,答え は実数表現になる。 ensyu13.c で確認しましょう。 ensyu13.c で確認しましょう。

算術演算子の優先順位 *, / は, +, - より先に計算されます。 *, / は, +, - より先に計算されます。 ( )で囲むと,その中が先に計算さ れます。 ( )で囲むと,その中が先に計算さ れます。 同じ優先順位( * や / )の算術演算子が 連続する場合は,左側から先に計算さ れます。 同じ優先順位( * や / )の算術演算子が 連続する場合は,左側から先に計算さ れます。 –a/b/c の場合は,まず, a/b が計算され,そ の結果と c の除算が計算されます。

演習 次の計算結果を予測しなさい。 ensyu14.c を実行し確認しなさい。 次の計算結果を予測しなさい。 ensyu14.c を実行し確認しなさい。 int n; n = 2 * * 5; n = 16 / 3 – 6 / 2; n = 23 % 5 * 3; n = 2 * ( ) / 2; n = 3 * ( ( 5 – 3) / 2);

考えてみましょう 右の式は,プログ ラム上ではどのよ うに表現されると 思いますか? 右の式は,プログ ラム上ではどのよ うに表現されると 思いますか? 下のプログラムは,どんな式を意味してい ると思いますか? 下のプログラムは,どんな式を意味してい ると思いますか?

インクリメント演算子と デクリメント演算子 プログラムの中で,「 1 だけ加算」「 1 だけ 減算」というのは,よく使います。 プログラムの中で,「 1 だけ加算」「 1 だけ 減算」というのは,よく使います。 特に繰り返しの処理で。詳しくは後日。 特に繰り返しの処理で。詳しくは後日。 C 言語では,これらのために,特別なコンパ クトな記述ができます。 C 言語では,これらのために,特別なコンパ クトな記述ができます。 a=a+1; a の値を 1 だけ加算 a++ または ++a 同様に,「 1 だけ減らす」は, a--, --a

インクリメント演算子と デクリメント演算子 次のプログラムの動作を確認しましょう。 (ensyu15.c) 次のプログラムの動作を確認しましょう。 (ensyu15.c) #include int main(void) { int a = 5; a++; ++a; printf("a=%d\n",a); } a=a+1; が実行されます 再度 a=a+1; が実行されます

a++ と ++a の違い 次のプログラムを実行してみましょう。 ensyu16.c 次のプログラムを実行してみましょう。 ensyu16.c // ensyu16.c ++a と a++ の違い #include int main(void) { int a,b; a=5;b=++a; printf("b=%d a=%d\n",b,a); a=5;b=a++; printf("b=%d a=%d\n",b,a); }

a++ と ++a の違い 実行結果はこうなります。 実行結果はこうなります。 b=6 a=6 b=5 a=6 Press any key to continue b=a++; の結果 b=++a; の結果 なぜ,結果がちがうのでしょう???

b=++a; の意味は。 結果から予想されることは, 「 a の値が 1 加算された後に b に代入された」 ということです。 結果から予想されることは, 「 a の値が 1 加算された後に b に代入された」 ということです。 つまり a = a + 1; b = a; と同じです

それでは, b=a++; の意味 は。 結果から予想されることは, 「 a の値が b に代入された後に, a の値が 1 加算さ れた」 ということです。 結果から予想されることは, 「 a の値が b に代入された後に, a の値が 1 加算さ れた」 ということです。 つまり b = a; a = a + 1; と同じです

演習 kadai1.c のプログラムを完成させてくだ さい。 kadai1.c のプログラムを完成させてくだ さい。 –int 型変数として a を宣言し,初期値として 30 を与え,これを二進数に変換して表示するプ ログラムです。 –2 で割って,その余りを配列 d[] に入れていき ます。 d[0] が二進数の最下位桁とします。 – 先に筆算で二進数を求め,その通りの計算を プログラムしてみてください。

考え方 ) 30 2 15 2 ) ・・0 ) 2 7・・1 ) 2 3 1 十進数 30 を二進 数に変換する。 結果: 1 1110 d[0]=a%2; a=a/2; d[1]=a%2; a=a/2; d[2]=a%2; a=a/2; d[3]=a%2; d[4]=a/2; d[4],d[3],d[2],d[1],d[0] a は 15 になる a は 7 になる a は 3 になる

演算子:その他 変数 a に 10 を代入する 変数 a に 10 を代入する a = 10; 変数 b に変数 a の値を代入する 変数 b に変数 a の値を代入する b = a; 1 文で書けないかな? このように書けます! b = a = 10; この優先順位で 計算されます。

演習 ensyu17.c で, b=a=10; の代入文の働 きを確認してください。 ensyu17.c で, b=a=10; の代入文の働 きを確認してください。 a=5; b=5; c=5; のような,同じ値を 代入する代入文は, 1 文で表現できま す。この代入文を, b=a=10; を参考に して考えてみましょう。 a=5; b=5; c=5; のような,同じ値を 代入する代入文は, 1 文で表現できま す。この代入文を, b=a=10; を参考に して考えてみましょう。

インクリメント演算子,デク リメント演算子の演習 次の代入文を実行した後の変数 a と b の値を予想しな さい。プログラムを作成し確認しなさい。 次の代入文を実行した後の変数 a と b の値を予想しな さい。プログラムを作成し確認しなさい。 計算答え 例題 a=50; ++a; a=51 問題1 a=50; b=++a; a= b= 問題2 a=66; b=a++; a= b= 問題3 a=30; b=--a; a= b= 問題4 a=31; b=a--; a= b=

整数の入出力を行う キーボードから整数値データを入力す る キーボードから整数値データを入力す る // ensyu18.c // 整数値をキーボードから入力する #include int main(void) { int a; scanf("%d", &a); printf("a=%d\n",a); return 0; } まずは実行して みましょう。

整数の入出力を行う キーボードから整数値データを入力す る キーボードから整数値データを入力す る // ensyu18.c // 整数値をキーボードから入力する #include int main(void) { int a; scanf("%d", &a); printf("a=%d\n",a); return 0; } これが初めてみる 関数ですね。

scanf 関数 キーボード(標準入力)からの入力に は,一般に scanf 関数を利用します。 キーボード(標準入力)からの入力に は,一般に scanf 関数を利用します。 変換仕様(書式)の指定により,数値 (整数,浮動小数点数),文字,文字 列も入力出来ます。 変換仕様(書式)の指定により,数値 (整数,浮動小数点数),文字,文字 列も入力出来ます。 scanf( “ %d ”, &a); これが変換仕様。 “ “ で囲みます。 ここに変数名を指定します。 この変数に値が代入されます。 &はどうして必要なの?

scanf 関数の変換仕様 変換仕様意味 %d 10 進数として入力する %lf 浮動小数点 (double) として入力 する %f 浮動小数点 (float) として入力す る %c文字(一文字)として入力する %s文字列として入力する

そもそも,どうして変換仕様 の指定が必要なの? キーボードから, 56 と入力された時。。 あなたなら,どう解釈しますか? コンピュータでは, 5 というキーと 6 というキーが 押された,という判断しかできません。 「ごじゅうろく」という整数かもしれない。実数かも しれない。 いや, 16 進数の「ご・ろく」かもしれない。いや,8 進数? ‘ 5 ’ という文字と ’ 6 ’ という文字の 2 文字の文字列かもしれ ない。 いろんな解釈があって,決められません。 そこで, %d と指定 することで 十進数の 56 という数値データだ,と判断出来るわけです。

変換仕様の働き-演習 ensyu18.c において, ensyu18.c において, – 変換仕様をさまざまに変更して,その時 の出力をみてみましょう。 – 変数 a の型を変更してみましょう。 – 変数の型と変換仕様が一致していないと 正確に動作しないことを確認してくださ い。

では, & はなぜ必要なの? では,試しに, & を無くしてみましょ う。 では,試しに, & を無くしてみましょ う。 コンパイルは通るけど,実行するとエ ラーが出ます。 コンパイルは通るけど,実行するとエ ラーが出ます。 何か意味がありそうです(当たり 前!) 何か意味がありそうです(当たり 前!) コンピュータの身になって考えてみま しょう コンピュータの身になって考えてみま しょう

& の意味 scanf( “ %d ”, &a); は,「キーボードから入力された十進数値を, 変数 a に代入してください」という意味です。 変数 a の箱は,メモリ上のどこかにあるはずです。 「56」 a メモリの中 変数 a の箱 はどこ? メモリの中のどこに変数 a があるかわからない!

& の意味 じゃ,どうすればいい? 「56」 a メモリの中 メモリの中の変数 a の箱の場所 変数 a 様 OK! 56 これが&a の意味です!