情報処理Ⅱ
第2回
2007年10月15日(月)
授業の進め方
構造体
プリプロセッサ
指令
その他の型
ライブラリ関数
識別子
算術型
制御文
演算子
2年以降で
さらに学習・習熟
ファイル入出力
配列・文字列
ポインタ
関数
変数の
有効範囲
再帰呼び出し
プログラムの作成・
コンパイル・実行
2
本日学ぶこと
コラッツの問題のプログラムで,変数の宣言を
int x = 3;
としたが,これ以外にどんな書き方があるのか?
xは「識別子」
intは「型」
3
識別子(identifier)
プログラムの中でさまざまな対象を識別するために用いられ
る「名前」のこと
リp.36
対象の例
• 変数 ⇒ 本日のテーマ
• 関数
• 型定義
• 構造体のタグやメンバ
• 列挙体と列挙定数
• ラベル など
4
識別子の命名規則(1)
最初の文字は,英字または下線記号(_)
2文字目以降は,英字,下線記号または数字
英字は大文字と小文字が区別される
例
○ int x, variable, Variable, x_y, _, _ _;
× int 0x, <variable>, x-y;
5
識別子の命名規則(2)
「予約語」はNG
auto, break, case, char, const, continue,
default, do, double, else, enum, extern,
float, for, goto, if, int, long, register,
return, short, signed, sizeof, static,
struct, switch, typedef, union, unsigned,
void, volatile, while
例
× int int;
○ int intchar;
入p.231
リp.42
6
識別子の命名規則(3)
「予約済み識別子」もNG
例
リp.38
printfなど,既に定義されている名前
下線記号から始まるもの
× int printf, NULL, __LINE__;
○ int Printf;
7
変数名の慣習
変数名は,1文字~数文字.もしくは,その用途がわかるも
のにする.
よく使う変数名
a, b, c, filename, msg
ループカウンタ: i, j, k
座標: x, y
大文字は使わない
定数は大文字のみで書くのが慣例(NULL,EOFなど)
入pp.229-230
8
型(type)
変数や値がどのような種類の情報を持っているか
C, C++, Javaなどでは,変数宣言時に型を決めなければ
ならない
型の違いの例
int i = 1;
double d = 1.0;
char c = '1';
char *p = "1";
(整数の「1」)
(実数の「1」)
(文字の「1」)
(文字列の「1」)
入p.222-225
リp.60
9
型の分類
オブジェクト型
リp.62
算術型 ⇒ 本日のテーマ
配列型 ⇒ 後日しっかり学ぶ
構造体型 ⇒ 後日しっかり学ぶ
共用体型
ポインタ型 ⇒ 後日しっかり学ぶ
派生型
関数型
不完全型
10
算術型(よく使う)
char : 文字,小さな範囲の整数
int : 整数
語源…long integer
float : 実数
語源…integer
long : より大きな範囲の整数
語源…character
語源…floating point(浮動小数点)
double : より大きな範囲の実数
語源…double precision(倍精度)
入p.223
リp.64
11
算術型(あまり使わない)
たまに見かけるかも
short
unsigned char
signed char
unsigned int
unsigned long
long double
なるべく使わない
short int
long int
long long
long long int
signed
unsigned
signed int
char signed
12
整数型の範囲
整数型(char, int, longなど)のとり得る値は
その型を何バイト(何ビット)で表現するか
符号の有無
で決まる.
nビットなら,2進数を用いて2n個の数値を表現できる.
どの整数型も,0を表現できる.
この授業では,整数の表現として「2の補数」を前提とする.
入pp.131-133
13
signedとunsigned
signed (符号あり)
unsigned (符号なし)
負の数をとり得る整数
1 0 0 0 0 0 0 0
最小は,-2n-1
0 1 1 1 1 1 1 1
最大は,2n-1-1
負の数をとらない整数
0 0 0 0 0 0 0 0
最小は,0
1 1 1 1 1 1 1 1
最大は,2n-1
n=8の
ビットパターン
signedもunsignedも書かなかったら…
int, short, longでは「符号あり」と決まっている
charでは処理系に依存
14
整数型の範囲の例
例1: int型が4バイト(32ビット)なら,
例2: char型は常に1バイト(8ビット)
-2147483648≦int型の値≦2147483647
0≦unsigned int型の値≦4294967295
char=signed charなら,-128≦char型の値≦127
char=unsigned charなら,0≦char型の値≦255
注意
char以外の整数型のバイトサイズは処理系に依存
• 演習室の環境は,intとlongがともに4バイト.
• intが2バイトという処理系もあったりする.
範囲を超えた演算や代入は? …第4回授業で
15
浮動小数点とは?
科学技術計算では,602000000000000000000000 を
6.02×1023 と書く.
(符号)仮数×底指数による表現を,浮動小数点形式という.
計算例:(6.02×1023)×10 = 6.02×1024
ただし1≦仮数<底,指数は整数(0や負でもよい)
「底」は「基数」とも言う.
計算例:(6×102)×(6×102) = (6×6)×102+2 =
36×104 = 3.6×105
2を底とする浮動小数点形式で表されることが多い.
例:-0.625 (=1/2+1/8)は,「-」1.01(2) * 2-1
入pp.135-137
リp.66
16
実数型の範囲(1)
仮数と指数をそれぞれ何ビットで表現するかによって,取り
得る値が決まる.
単精度の例:符号1ビット+仮数部23ビット+指数部8ビット
=32ビット(4バイト)
倍精度の例:符号1ビット+仮数部52ビット+指数部11ビット
=64ビット(8バイト)
ビット数の制約があるため,あらゆる実数を表すことはできな
い.
表現できない数の例:101000 ,√2,π
17
定数の表現方法
整数定数
123, 0123, 0x123
-123
long型
123U, 123L, 123UL
浮動小数点定数
8進数値
16進数値
( 0~9, a~f )
int型
unsigned long型
unsigned int型
3.14, -3.1415926
double型
.14, 3.
6.02×1023
float型
6.02E23
6.63E-34F, 6.6260693E-34L
long double型
上記の英字は,大文字でも小文字でもよい.
constant.c
入p.130
リp.46, p.52
18
printfの変換指示子
int a = 123;
unsigned int b = 123;
long c = 123;
double d = 3.14;
double d2 = 3.14;
printf("%d\n",
printf("%u\n",
printf("%l\n",
printf("%f\n",
printf("%g\n",
a);
b);
c);
d);
d2);
19
識別子と型:まとめ
変数や関数などの名前は「識別子」と呼ばれ,そのルール
(命名規則)や慣用的な使われ方がある.
「数」には,「整数」と「浮動小数点数」がある.
表現できる数値には制限がある.
「整数」といっても,いくらでも大きな整数値が使えるわけでは
ない.
「実数」といっても,いくらでも精密な実数値が使えるわけでは
ない.
20
次に学ぶこと
制御文
for, while, do~while
if~else, switch~case
問題
九九の表を出力できる?
21
ダイクストラの構造化プログラミング
プログラムは,「順接」,「反復」,「分岐」の組み合わせで表
現できる.
順接
反復
処理1
条件
条件
処理
条件を満たす
ときの処理
処理2
入p.253
分岐
条件を満たさ
ないときの処理
22
for
よく使う
構文
for (初期化; 条件; 増分) {
処理
}
•
初期化
最初に「条件」を満たしていな
ければ,1回も「処理」をしない.
条件
処理
増分
入p.260
リp.248, p.256
23
0, 0.1, ..., 1.0 を出力するには
ループ用の変数iは整数型にする.
for文を用いて,i の値を 0, 1, ..., 10 と変えるよ
うにする.
i / 10.0 は,0, 0.1, ..., 1.0 となる.
for (i = 0; i <= 10; i++) {
iの初期値は0
iは10まで
(for i less than
from0to1.c or equal to 10)
入p.261
iの値を1増やす
i = i + 1 と等価
24
while
よく使う
構文
while (条件) {
処理
}
•
条件
最初に「条件」を満たしていな
ければ,1回も「処理」をしない.
処理
入p.258
リp.248
25
do~while
構文
do {
処理
} while (条件);
たまに使う
セミコロンを忘れずに
•
少なくとも1回は「処理」をする.
while文で記述可能
リp.248
処理がbreakを含む場合は
やや煩雑
処理
条件
26
if
よく使う
構文
if (条件) {
処理
}
条件
•
処理
if (条件) {
条件を満たすときの処理
} else {
条件を満たさないときの処理
}
条件
•
•
条件を満たす
ときの処理
条件を満たさ
ないときの処理
入p.256
リp.232
27
制御文:ここまでのまとめ
反復は for,while,do~while
分岐は if,if~else
28
© Copyright 2026 ExpyDoc