プログラム言語第一

文字と文字列
数理情報システム工学科
担当: 汐月哲夫
2015/10/1
プログラミング方法論
[email protected]
1
文字列の表現
C言語の記述
"TETSUO\n"
T E T S U O \n \0
メモリ内の格納状況
84 69 84 83 85 79 10 0
10進数による表現
54 45 54 53 55 4F a 0
2015/10/1
16進数による表現
プログラミング方法論
[email protected]
2
文字と文字列
•
•
•
•
•
文字列(string)=文字(character)の配列
文字はアスキーコード(0~127)
文字列の最後はナルコード(=\0)
New lineのアスキーコード=10 (=0x0a)
改行のアスキーコード=13 (=0x0d)
2015/10/1
プログラミング方法論
[email protected]
3
C言語の約束(6)
• 関数は return 文で値を返す
#include <stdio.h>
int main(void)
{
printf("TETSUO\n");
return 0;
}
2015/10/1
プログラミング方法論
[email protected]
この場合には
main() は常に
整数値0を返す
4
ex1-1 のまとめ
•
•
•
•
•
•
C言語のソースファイル名(拡張子=.c)
C言語のプログラム=関数の集合
関数=ヘッダ+本体ブロック
コンパイルの方法
実行の方法
文字列の表現
2015/10/1
プログラミング方法論
[email protected]
5
制御の流れ(連接構造)
• 文を並べると順番に実行する(連接構造)
/* ex1-2.c */
#include <stdio.h>
int main( void )
{
printf( "TETSUO\n" );
printf( "TETSUO\n" );
printf( "TETSUO\n" );
printf( "TETSUO\n" );
printf( "TETSUO\n" );
return 0;
}
2015/10/1
プログラミング方法論
[email protected]
ファイル名=
"ex1-2.c"
6
制御の流れ(反復構造:for)
• for 文による反復(反復構造)
/* ex1-3.c */
#include <stdio.h>
int main( void )
{
int i;
for ( i=1; i<=100; i=i+1 ) {
printf( "TETSUO\n" );
}
return 0;
}
2015/10/1
ファイル名=
"ex1-3.c"
変数宣言
for 文による反復構造
プログラミング方法論
[email protected]
7
制御の流れ(反復構造: while)
• while 文による反復(反復構造)
ファイル名=
"ex1-4.c"
/* ex1-4.c */
#include <stdio.h>
int main( void )
{
変数宣言+初期値設定
int i;
i = 0;
while ( i < 10 ) {
printf( "T" ); printf("E");printf( "T" );
printf( "S" ); printf("U");printf( "O" );
while 文による
i = i+1;
反復構造
}
return 0;
2015/10/1 }
8
プログラミング方法論
[email protected]
変数を使う
• 変数を宣言するとは。。。
ファイル名=
"ex1-1a.c"
#include <stdio.h>
char mes[]="TETSUO\n";
int main( void )
{
printf(mes);
return 0;
}
2015/10/1
プログラミング方法論
[email protected]
9
変数宣言
char mes[]="TETSUO\n"
mes
C言語の記述
メモリのイメージ
T E T S U O \n \0
size = 8バイト
1:メモリ上に領域(サイズ)を確保する
2:データの意味付(型)を決める
3:メモリの位置(番地)と名前(変数名)を対応させる
4:領域を初期化する(省略することもある)
2015/10/1
プログラミング方法論
[email protected]
10
変数の型
• 変数の型と表示。。。
#include <stdio.h>
char mes[]="TETSUO\n";
int main(void)
{
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
return 0;
}
2015/10/1
%x
%x
%x
%x
%x
ファイル名=
"ex1-1b.c"
%c \n" ,mes[0],mes[0],mes[0]);
%c \n" ,mes[1],mes[1],mes[1]);
%c \n" ,mes[2],mes[2],mes[2]);
%c \n" ,mes[3],mes[3],mes[3]);
%c \n" ,mes[4],mes[4],mes[4]);
プログラミング方法論
[email protected]
11
変数の型(基本型)
型
宣言子 値の記述例
文字型 char
‘A’, ‘+’, ‘¥n’
整数型 int
2, 0x0a, -12 %d, %x
実数型 double 3.5, 2e-4
2015/10/1
printf の書式
プログラミング方法論
[email protected]
%c
%f, %g, %e
12
printf の使い方
• printf(書式指定, 変数1, 変数2,…)
• 書式指定
2015/10/1
プログラミング方法論
[email protected]
13
for 文による繰り返し
• for 構文。
#include <stdio.h>
char mes[]="TETSUO\n";
ファイル名=
"ex004.c"
int main(void)
{
int i;
for(i=0; i<=7; i++) {
printf("%d %x %c \n" ,mes[i],mes[i],mes[i]);
}
return 0;
}
2015/10/1
プログラミング方法論
[email protected]
14
for 構文
i←0
for(i=0; i<=7; i++) {
printf(****);
}
i<=7
yes
no
printf(****);
i++
2015/10/1
プログラミング方法論
[email protected]
15
2進数
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
2015/10/1
10進数
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
16進数
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
2進数
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
プログラミング方法論
[email protected]
10進数
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
16進数
1
2
4
8
10
20
40
80
100
200
400
800
1000
16
ビット、バイト、ワード
1または0
1ビット(bit)
4bit = 1nibble
8bit = 1byte
2byte = 16bit = 1word
4byte = 32bit = 1dword
2015/10/1
プログラミング方法論
[email protected]
8byte = 64bit = qword
17
アスキーコード(ASCII)
下位4ビット
0 1 2 3 4 5 6 7 8 9 a b c d e f
上
位
3
ビ
ッ
ト
0
1
2
3
4
5
6
7
NUL
SOH
EXT
EOT
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
!
1
A
Q
a
q
“
2
B
R
b
r
#
3
C
S
c
s
$
4
D
T
d
t
%
5
E
U
e
u
&
6
F
V
f
v
‘
7
G
W
g
w
(
8
H
X
h
x
)
9
I
Y
i
y
*
:
J
Z
j
z
+
;
K
[
k
{
,
<
L
¥
l
|
=
M
]
m
}
.
>
N
^
n
~
/
?
O
_
o
SP
0
@
P
`
p
DEL
7 6 5 4 3 2 1 0
パリティビット
2015/10/1
上位
下位
プログラミング方法論
[email protected]
18