岩村雅一 masa@cs.osakafu-u.ac.jp 知能情報工学演習I 第8回(C言語第2回) 岩村雅一 masa@cs.osakafu-u.ac.jp.

Slides:



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

コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
C言語によるプログラミングスタイル 制御システム工学科 山北 昌毅.
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
演算、整数型と浮動小数点型 第3回[平成16年4月27日(火)]:PN04ー03.ppt 今日の内容 1 復習 2 加減・乗除演算子
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
情報処理Ⅱ 第4回 2007年10月29日(月).
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング応用 printfと変数.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
情報処理Ⅱ 第2回:2003年10月14日(火).
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング演習I 2003年4月30日(第3回) 木村巌.
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
知能情報工学演習I 第7回(後半第1回) 課題の回答
x y 復習 変数とその種類 変数とは何か? →データ(数値)を入れておく箱 変数名 変数名とは何か?
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
情報処理Ⅱ 第2回 2005年10月14日(金).
情報処理Ⅱ 第2回 2006年10月13日(金).
情報処理Ⅱ 2005年10月28日(金).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
知能情報工学演習I 第8回(後半第2回) 課題の回答
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング演習I 2003年6月11日(第9回) 木村巌.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報処理Ⅱ 第2回 2004年10月12日(火).
第3回簡単なデータの入出力.
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
printf・scanf・変数・四則演算
知能情報工学演習I 第11回(後半第5回) 課題の回答
知能情報工学演習I 第9回(後半第3回) 課題の回答
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
情報処理Ⅱ 2006年10月27日(金).
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
知能情報工学演習I 第10回( C言語第4回) 課題の回答
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

岩村雅一 masa@cs.osakafu-u.ac.jp 知能情報工学演習I 第8回(C言語第2回) 岩村雅一 masa@cs.osakafu-u.ac.jp

C言語の予定 5月31日 プログラミング環境(テキスト1,2章) 6月 7日 変数とデータ型(3章) 、演算子(4章) 5月31日 プログラミング環境(テキスト1,2章) 6月 7日 変数とデータ型(3章) 、演算子(4章) 6月14日 コンソール入出力(6章) 、配列(3章)、 数学処理の標準ライブラリ(11章) 6月21日 制御文1 (テキスト5章) 6月28日 制御文2(テキスト5章) 7月 5日 関数1(テキスト7章) 、 プリプロセッサ(テキスト10章) 7月12日 応用プログラム

本日のメニュー 変数のデータ型 データ型 ビットとバイト 演算子 算術演算子 インクリメント演算子、デクリメント演算子 キャスト演算子

変数のデータ型 データ型を決める要因 整数か小数か 符号の有無(マイナスを扱えるか) 精度

主なデータ型(テキストP.51) データ型 表現範囲 char 1 unsigned char short int 2 バイト 表現範囲 char 1 -128~127 unsigned char 0~255 short int 2 -32768 ~ 32767 unsigned short int 0~65535 int 4 -2147483648~2147483647 unsigned int 0 ~ 4294967295 long int unsigned long int float 有効6桁 double 8 有効15桁 符号の 有無 精度 unsigned 整数 unsigned unsigned unsigned 小数

ビットとバイト ビット 1 バイト 1 1 = 9 1 = -1 0か1の2通り 8ビット 符号なし:0から255まで表現可能 符号あり:-128~127まで表現可能 1 または 1 8 1 1 = 9 x x x x x x x x 128 64 32 16 8 4 2 1 詳細は省略 0なら正、1なら負 1 = -1 符号 64 32 16 8 4 2 1

参考:符号つき2進数と符号なし2進数 符号なし2進数 符号つき2進数 11111111 = 255 11111110 = 254 … 10000001 = 128 01111111 = 127 00000100 = 4 00000011 = 3 00000010 = 2 00000001 = 1 00000000 = 0 符号つき2進数 01111111 = 127 … 00000010 = 2 00000001 = 1 00000000 = 0 11111111 = -1 11111110 = -2 11111101 = -3 11111100 = -4 10000000 = -128

算術演算子 四則演算と、余りの5種類 可算・・・+ 減算・・・- 乗算・・・* 除算・・・/ 剰余・・・% 100%30  10 7%3  1

演算の優先順位 演算の優先順位は数学と同じ 括弧で囲む:(, ) かけ算、割り算、余り: *, /, % 足し算、引き算:+, - 優先順位が同じならば左から処理される 例: 1+2*3-4  1+6-4  7-4  3

インクリメント、デクリメント演算子 インクリメント演算子 デクリメント演算子 変数の値を1加算する 記述例: a++; または ++a; 変数の値を1減算する 記述例: a--;または --a; a = a + 1;と等価 a = a - 1;と等価

インクリメント、デクリメント演算子 a++; と ++a; の違いは? いつ加算するかが違う b=a++; b=a; a++; b=++a;

サンプルプログラム1 (インクリメント演算子) j=j+iを実行してから i++を実行 #include <stdio.h> int main(void){ int i, j; i = 1; j = 10; printf("1: i=%d, j=%d\n", i,j); i++; printf("2: i=%d, j=%d\n", i,j); ++i; printf("3: i=%d, j=%d\n", i,j); j = j + i++; printf("4: i=%d, j=%d\n", i,j); j = j + ++i; printf("5: i=%d, j=%d\n", i,j); return(0); } i = 4, j = 13 i = 5, j = 18 i = 1, j = 10 i = 2, j = 10 ++iを実行してから j=j+iを実行 i = 3, j = 10

整数の演算と小数の演算 割り算は注意が必要 例えば、10/3はいくつになる? 3.33333333… になるような気がするけど、実際は?

サンプルプログラム2 (出力されるデータ型) #include <stdio.h> int main(void){ int i1, i2; float f1, f2; i1 = 10; i2 = 3; f1 = 10; f2 = 3; printf("i1/i2=%d\n", i1/i2); printf("f1/f2=%f\n", f1/f2); return(0); } 整数 小数 printfの書式 %d は整数を出力する %f は小数を出力する

出力されるデータ型 整数の場合 整数 / 整数 = 整数 int i1, i2; i1 = 10; i2 = 3; printf("i1/i2=%d\n", i1/i2); ソース int / int 整数 出力 i1/i2=3 つまり、 整数 / 整数 = 整数

出力されるデータ型 小数の場合 小数 / 小数 = 小数 float f1, f2; f1 = 10; f2 = 3; printf("f1/f2=%f\n", f1/f2); ソース float / float 小数 出力 f1/f2=3.333333 つまり、 小数 / 小数 = 小数

データ型の自動変換 表現力の大きいほうに自動的に変数の型を合わせる 整数 / = 整数 小数 / = 整数 小数 / = 小数 / =

整数 / = 小数 整数 / = 整数 小数 / = 整数 小数 / = 小数 / = では、 にしたいときは? 整数を小数に変換すればいいんじゃない?

サンプルプログラム3(キャスト) int / int float / float #include <stdio.h> int main(void){ int i1, i2; i1 = 10; i2 = 3; printf("i1/i2=%d\n", i1/i2); printf("(float)i1/(float)i2=%f\n", (float)i1/(float)i2); return(0); } int / int float / float

キャスト演算子 データの型を変換する 書式:(変換する型)変数 例: int i; float f; 整数を小数にキャストするときは問題なし 小数を整数にキャストするときは、小数点以下切り捨て int i; float f; i = 10; f = (float)i;