文字と文字列 数理情報システム工学科 担当: 汐月哲夫 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
© Copyright 2024 ExpyDoc