3章 変数と式とフローチャート(スライドのPDF版) (6/29)

3章 変数と式と フローチャート
フローチャート
プログラムの処理の「流れ」を図で表す.
プロセス
判断
開始/停止
Process : 任意の処理を表す。出入口は1つ。 (2つ以上あるということは内部で条件判断
が行われていることになる)
Decision : 一つの入口と複数の出口。
条件にしたがって出口を一つ選ぶ。
(条件判断機能)
Terminal : 入口,出口を表す.
(プログラムの開始,終了など)
プログラムの
作成と実行
入口は一つ
ターミナルを起動する
emacsを起動する
合流
ソースファイルを入力
コンパイル
分岐するときは
条件判断が必要
エラーがある
オブジェクトを実行
ソースファイルを修正
エラーがある
出口は一つ
END
真
条件式
文
if (論理式) 文;
偽
真
文1
条件式
偽
文2
if (論理式) 文1;
else 文2;
変数とは
•  コンピュータのメモリに確保された領域 •  数値を入れる「箱」と考える •  変数(variable)の名前 –  最初の文字はA-Zまたはa-zおよび_
–  2番目以降は数字(0-9)も使用できる
–  最大31文字
–  大文字と小文字は区別される
–  途中に空白があってはいけない
–  キーワード、予約済みの識別子は使えない
変数の型(type)
整数
char
int
実数
整数
8bit
32bit
short int
long int
long long
16bit
64bit
64bit
実数
float 32bit
double 64bit
long double
(普通はdoubleを使う)
80bit
長さ(bit数)により表現できる値の範囲に制限がある
(P65)
int型
宣言(定義)
int a = 123;
値の範囲(32bit)
2147483647 0 -2147483648
入力
scanf("%d",&a);
表示
printf("%d\n",a);
double型
宣言(定義)
double a = 6.02e+23;
値の範囲(絶対値)
最大値 1.79769e+308
最小値 2.22507e-308
精度(桁数) 15
入力
scanf("%lg",&a);
表示
printf("%g\n",a);
double型
入力 %lg を使用する
出力 %e、%f、%gが使用できる
%e
d.dddddde ddd
%f
d.dddddd
%g 表示する桁数に応じて%eまたは%f
(dは数字0-9)
char型(P67)
宣言(定義)
char a = 'x';
値の範囲(8bit)
127~0~-128
入力
scanf("%c",&a);
表示
printf("%c\n",a);
文字の表現
char (8bit)で表現できるもの
定数は ’a’ のようにシングルクォートでくく
る
数値(0-255)で表現することも出来る
printfでは %c で文字を表示
日本語の文字は1文字16∼32ビットで
表現しているので、charは使えない。
/* 666666 Tachibana Masayoshi */
/* p66 */
#include <stdio.h>
#include <float.h>
#include <limits.h>
int main(void)
{
printf("double max:\t%g\n",DBL_MAX);
printf("double min:\t%g\n",DBL_MIN);
printf("double digit:\t%d\n",DBL_DIG);
printf("int max:\t%d\n",INT_MAX);
printf("int min:\t%d\n",INT_MIN);
printf("long max:\t%ld\n",LONG_MAX);
printf("long min:\t%ld\n",LONG_MIN);
}
return 0;
p66.c
定数(constant)
整数定数
10進数
浮動小数点定数
123.45
1.2345e+2
変数の定義(宣言)と初期化
1.  型名 変数名;
2.  代入されていない変数の値は不定
3.  必ず初期化を行う
4.  実行文の後には定義をおけない
その他
const double c = 2.99792458e8;
変数の値を固定(定数化)
整数の表現形式を変える
unsigned
unsigned
unsigned
unsigned
符号のない整数
char
0-255
short int 0-65535
int
0-4294967295
(約40億)
演算子の優先順位
Cにはたくさんの演算子がある
すべてを「今」覚える必要はない
演算子には優先順位がある
かけ算は足し算より先にやる
すべて覚えるのは大変
うろ覚えで間違えるよりは表を見ること
括弧を使って確実に
代入式(P87)
左辺値 代入演算子 右辺値
右辺値の値を計算し、代入演算子の規則に
従って、右辺値に適用する式
代入式も値を持つ
値は代入後の左辺値の値
代入演算子(P87)
= , += , -= , *= , /= , %=
<<= , >>= , &= , |= , ^=
代入式(2)
=
+=
-=
*=
/=
%=
a+=b
a-=b
a*=b
a/=b
a%=b
a=a+b
a=a-b
a=a*b
a=a/b
a=a%b
代入式(3)
<<=
>>=
&=
|=
^=
a<<=b
a>>=b
a&=b
a|=b
a^=b
a=a<<b
a=a>>b
a=a&b
a=a|b
a=a^b
代入式(4)
<< 左シフト
>> 右シフト
& ビットAND
| ビットOR
^ ビット排他的OR
詳しくは 情報処理概論で...
算術演算子(P90)
整数
+,-,*,/,%
浮動小数点
+,-,*,/
整数と浮動小数点は同じ記号を使う
コンパイラが型に応じて異なる演算器を
使う命令を生成する
整数型と浮動小数点型の混合演算
一つの式の中で異なる型の値を混ぜて使う
結果に応じて型の変換を行う
精度の高い方へ型変換が行われる
代入における型変換
代入される左辺値の型にあわす
キャスト(cast)
明示的な型変換
sizeof
データの大きさ(バイト数)を答える演算子