講習No3 - 光情報システム研究室

いろいろな変数型(2)
復習
char
1バイト → 英数字1文字を入れるのにぴったり
アスキーコード → 付録
int
4バイト もっとも標準的な整数型
float
2進法で10進実数を表わすので誤差がある
(有効数字8桁程度)
4バイト 単精度実数型(単精度浮動小数点型)
double
floatより高精度(有効数字15桁程度)
8バイト 倍精度実数型(倍精度浮動小数点型)
復習
浮動小数点数の代入と表示
int型で表す
ことができ
ない数値は
おかしな結
果になる
int bb = 1300.5;
printf("bb = %d\n", bb);
int型に不動小数点数を代入する
と,少数以下は切り捨て
bb = 1300
int cc = 10.56e20;
printf("cc = %d\n", cc);
コンパイラからの
メッセージ
warning = 警告
1344274432
warning C4244: '=' : 'double' から 'int' に変換しました。データが失われているかもしれません。
float xx = 100.56e-20, yy = 10000;
printf("xx = %f, yy = %f\n", xx, yy);
xx = 0.000000,
yy = 10000.000000
printf("xx = %e,
yy = %e\n", xx, yy);
xx = 1.005600e-018,
printf("xx = %g,
xx = 1.0056e-018,
変換文字%fは小数点形
式で表示
変換文字%eは指数形式
で表示
yy = 1.000000e+004
yy = %g\n", xx, yy);
yy = 10000
変換文字%gは適切と思
われる形式を自動的に
選んで表示
scanf()関数による数値の入力
int x;
printf("値を入力してください.");
scanf("%d", &x);
printf("入力された値は,%dです.¥n", x);
値を入力してください. 15
入力された値は,15です.
int aa;
scanf(" %d ", & aa );
キーボードから入力
整数値の入力では%dとする.
変数名の前には&をつける
float bb;
scanf("%f", &bb );
復習
scanf()関数の補足
復習
ダブルクォーテーション内に%d
や%f以外の文字を入れてはダメ
値はいくらですか?15
int x;
scanf("値はいくらですか?%d\n", &x);
int x;
printf("値はいくらですか?\n");
15
scanf("%d\n", &x);
値はいくらですか?
15
int x;
printf("値はいくらですか?");
scanf("%d", &x);
値はいくらですか?15
\nで改行して、次の行で
入力されるのでダメ
ダブルクォーテーション内に%d
や%f以外の文字を入れてはダメ
一つの値の入力には,
一つのscanf()を使う.
(複数の変数に一気に入
力することはできない)
いろいろな演算子(2)
復習
算術演算子
+
*
/
%
足し算
引き算
掛け算
割り算
剰余算 (例) x = 5 % 3 → x=2
++
インクリメント演算子
aa++ は aa = aa+1 と同じ → aaの値を1増やす
デクリメント演算子
aa-- は aa = aa-1 と同じ → aaの値を1減らす
-aa = 10;
aa++;
/* aaの値は11になる */
フローチャート(1)
フローチャート→
プログラム処理の流れを示す図
矢印で処
理の順序
を表す
処理1
四角形は
一つの処理
a=10
処理2
b=a*2
処理3
b=a*b
処理4
bを表示
形式
実例
フローチャート(2)
条件分岐→
プログラム処理の流れを変える
ひし形
は条件
分岐
No
false
処理1
条件
偽
Yes
true
真
処理2
aの値を入力
true
a
>10 ?
false
aを2倍する
処理3
aの値を表示
形式
実例
if ~ 選択制御文(条件分岐)
aの値を入力
true
a
>10 ?
false
int a;
aを2倍する
scanf("%d", &a); カッコが必要
if ( a > 10 )
{
a = 2*a;
}
条件
真(true)なら
この中が
実行される
printf(“aの値は%d\n”, a);
aの値を表示
if ~ else~選択制御文(条件分岐)
aを入力
a
>10 ?
false
int a;
true
aを2倍する
aを3倍する
aを表示
scanf("%d", &a);
if ( a > 10 )
{
a = 2*a;
}
else
{
a = 3*a;
}
偽(false)なら
この中が
実行される
printf("aの値は%d\n", a);
いろいろな条件式と関係演算子
Cのソース
半角
文字
a>b
if (a > b)
a≧b
if (a >= b)
a<b
if (a < b)
a≦b
if (a <= b)
a=b
if (a == b)
a≠b
if (a != b)
10 > a かつ a > 5
if (10>a && a>5)
10 > a または 15 < a
if (10>a || 15<a)
10 > a ではない
if ( !(10 > a) ) または
否定
!注意!
等号が二つ
かつ
選択制御文の例
dataを入力
data<0
false
正の数です
と表示
true
#include <stdio.h>
int main(void)
{
int data;
scanf("%d", &data);
if ( data < 0 )
printf("負の数です¥n");
else
printf("正の数です¥n");
負の数です
と表示
}
終了
カッコ { }
が無い!
単文と複文
単文
文 → 単文 or 複文
printf("負の数です¥n");
Cの文法まとめ
a = 2*a;
複文
セミコロンが必要
{
b = 10;
a = 2*b;
printf("aは%dである¥n",a);
}
if (条件)
文1
else
文2
これらの文1と
文2は単文で
も複文でもOK
{
a = 2*a;
}
a = 2*a; と単文で書いても同じ
単文と複文(2)
if (条件)
文1
else
文2
if文も全体で一
つの文である.
int main(void)
{
int x;
printf("整数値xを入力してください:");
scanf("%d", &x);
if (x < 5)
{
printf("xの値は5未満です\n");
}
else if (x >= 5 && x < 10)
{
printf("xの値は5以上10未満です\n");
}
else
{
printf("xの値は10以上です\n");
}
}
複文
if (条件1)
文1
else
if (条件2)
文2
else
文3
整数値xを入力してください:3
xの値は5未満です
整数値xを入力してください:8
xの値は5以上10未満です
整数値xを入力してください:12
xの値は10以上です