プログラミング Ⅰ ( 1 組) 第 4 回

27
プププププププ 1ププ4プ http://www.fit.ac.jp/~matsuki/ lecture.html

Upload: elysia

Post on 05-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

プログラミング Ⅰ ( 1 組) 第 4 回. http://www.fit.ac.jp/~matsuki/lecture.html. 今日の内容. 前回の課題の 説明 前回 の復習 いろいろな演算. タイピングソフト. 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録していく 残り時間 ⇒  FeedBack ページで報告 総タイプ数 ミスタイプ数 正確さ ⇒  FeedBack ページで報告 喰いっぷり ⇒  FeedBack ページで報告 このシートは,途中で提出してもらいます. char 型について. - PowerPoint PPT Presentation

TRANSCRIPT

プログラミングⅠ( 1 組)第 4 回

http://www.fit.ac.jp/~matsuki/lecture.html

今日の内容• 前回の課題の説明• 前回の復習• いろいろな演算

タイピングソフト• 喰人王を使用して結果を記録する• ステージ:第一の店(中華)• Excel のシートにスコアを毎回記録していく– 残り時間 ⇒  FeedBack ページで報告– 総タイプ数– ミスタイプ数– 正確さ ⇒  FeedBack ページで報告– 喰いっぷり ⇒  FeedBack ページで報告

• このシートは,途中で提出してもらいます

char 型について• char 型は, 1 バイトの大きさ– 256 種類の値を表現できる( 16 進数で 00 ~

FF )

• char 型は ASCII コードとして利用される(注意:文字型だけでなく,整数も使え

る)

文字についてprintf(“Hello World”); Hello Wolrd

コンピュータの中で,文字をどう扱っているの?

各文字に,予め番号が割り当てられている

ASCII コード表  0 1 2 3 4 5 6 70 NUL DLE SP 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF IS4 , < L \ l |D CR IS3 - = M ] m }E SO IS2 . > N ^ n ~F SI IS1 / ? O _ o DEL

黄色:上位の桁緑色:下位の桁

ASCII コードの 48(16) は,「 H 」

ASCII コード表  0 1 2 3 4 5 6 70 NUL DLE SP 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF IS4 , < L \ l |D CR IS3 - = M ] m }E SO IS2 . > N ^ n ~F SI IS1 / ? O _ o DEL

黄色:上位の桁緑色:下位の桁

H e l l o W ro l d

48 65 6C 6C 6F 20 6F57 6C72 64 0A

SPACE

Line Feed( \n )

変数に値を入れる

①   30 = x; // 間違い②   x = 10 + 20; //10+20 の計算結果を x に代入③   x = x + 1; //x + 1 の計算結果を x に代入④   x = 0x41 // 16進数の 41 をxに代入⑤   x = ‘A’; //x = 0x41 と同じこと

65 xxという変数に, 65 という整数値を格納(代入)

x = 65;

printf 関数

型 意味 例 結果d 整数を 10 進数で表示 a = 123; printf(“%d”,a); 123

x 整数を 16 進数で表示 a = 123; printf(“%x”,a); 7b

c 1文字を表示 a = ‘R’; printf(“%c”,a); R

s 文字列を表示 char *a=“ABC”; printf(“%s”,a); ABC

f 実数を 10 進数で表示 a = 123.45; printf(“%f”,a); 123.450000

• 変数の中身を表示することが可能• 書式を指定することが可能

演算複合演算子演算子 使用例 意味 算術演算子+= a += b a に b を加えた値を a に代入 a = a + b

-= a -= b a から b を引いた値を a に代入

a = a – b

*= a *= b a に b を掛けた値を a に代入 a = a * b

/= a /= b a を b で割った値を a に代入 a = a / b

%= a %= b a を b で割った余りを a に代入

a = a % b

前回の課題1.次のプログラムを実行したら,何が表示されるか?

#include <stdio.h>int main(){

printf(“%c %c %c %c %c %c\n”, 0x4c, 0x6f, 0x6e, 0x64, 0x61, 0x79);return 0;

}

前回の課題printf(“%c %c %c %c %c %c\n”, 0x4c, 0x6f, 0x6e, 0x64, 0x61, 0x79);

printf(“%c”,0x4c);

4C(16) に対応する ASCII 文字として表示

ASCII コード表  0 1 2 3 4 5 6 70 NUL DLE SP 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF IS4 , < L \ l |D CR IS3 - = M ] m }E SO IS2 . > N ^ n ~F SI IS1 / ? O _ o DEL

黄色:上位の桁緑色:下位の桁

ASCII コードの 4C(16) は,「 L 」

前回の課題printf(“%c %c %c %c %c %c\n”, 0x4c, 0x6f, 0x6e, 0x64, 0x61, 0x79);

printf(“%c”,0x4c);

4C(16) に対応する ASCII 文字として表示

結果:Londay

前回の課題2.次のプログラムを実行したら,何が表示される

か?

#include <stdio.h>int main(){

printf(“%x %x %x %x %x %x\n”, ‘S’, ‘u’, ‘n’, ‘d’, ‘a’, ‘y’);return 0;

}

前回の課題printf(“%x %x %x %x %x %x\n”, ‘S’, ‘u’, ‘n’, ‘d’, ‘a’, ‘y’);

%x : 16 進数の整数として表示

文字の「 S 」= ?? (16)

ASCII コード表

ASCII コード表  0 1 2 3 4 5 6 70 NUL DLE SP 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF IS4 , < L \ l |D CR IS3 - = M ] m }E SO IS2 . > N ^ n ~F SI IS1 / ? O _ o DEL

黄色:上位の桁緑色:下位の桁

「 S 」 は, ASCII コードの 53(16)

前回の課題printf(“%x %x %x %x %x %x\n”, ‘S’, ‘u’, ‘n’, ‘d’, ‘a’, ‘y’);

%x : 16 進数の整数として表示

ASCII 文字の S

結果:53 75 6e 64 61 79

= 53(16)

前回の課題3. printf の書式指定文字列について,以下の意味

を説明せよ

(1)%d:  10 進の整数を指定(2)%f: 浮動小数を指定(3)%x:  16 進の整数を指定(4)%c: 文字変換を指定

前回の課題4. C 言語で次の演算を行った際,(1),(2)について

は演算結果を,(3)~(5)については変数 a の値を答えなさい.ただし,変数 a,b は int 型で定義されており,演算前の a,b の値はそれぞれ 12 と4とする.

(1) 9 + 6 / 3 * 2  ⇒  13(2) a + b % 5  ⇒  12 + 4 % 5 12 + 4 16⇒ ⇒(3) a += b ⇒   a = a + b ⇒ 「 a には 12 + 4 の結果 16 が入

る」(4) a *= b  ⇒  a = a * b ⇒ 「 a には 12×4 の結果 48 が入

る」(5) a %= (a / b) a = a % (a / b) a = a % 3 ⇒ ⇒ ⇒  「 a には 12

を 3 で割った余り( 0 )が入る」括弧内から計算

演算について• 優先順位– 優先順位の高い演算から順に行われる– (例) d = a + b * c (「*」,「+」,「=」の

順)

• 結合規則– 同じ優先順位が複数ある場合は,結合規則(方向)に

従って順に演算が行われる– (例) d = a / b * c (「/」と「*」は同じ順位なの

で,結合規則に従って,「左から右の順」に演算する)

様々な演算• インクリメント

a = a + 1; //a に 1 を加えて,その結果を a に代入

a++; //a を評価したのちに 1 を加算++a; //a に 1 を加算したのちに a を評価

様々な演算• デクリメント

a = a - 1; //a から 1 を減算し,その結果を aに代入

a--; //a を評価したのちに 1 減算--a; //a を 1 減算したのちに a を評価

様々な演算• 不等号演算子– 「>」:左辺は右辺より大きい– 「<」:右辺は左辺より大きい– 「>=」:左辺は右辺より大きい,または等

しい– 「<=」:右辺は左辺より大きい,または等

しい「5>3」 ⇒ 真( True ):値は1「5<3」 ⇒ 偽( False ):値は0

様々な演算• 等価演算子と非等価演算子– 「==」:左辺と右辺は等しい– 「!=」:左辺と右辺は等しくない

a = 3;「 a == 3 」 ⇒ 真( True ):値は1「 a != 3 」  ⇒ 偽( False ):値は0

様々な演算• キャスト演算子– 型を変換することが目的– 使い方:(キャストしたい型)変数名 ;

y = (int)x;b = (double)a;

様々な演算• キャスト演算子– 型を変換することが目的

int a = 10, b = 3;double c;c = a / b;printf(“%f”, a / b);

printf(“%f”, c);

printf(“%f”, (double)a / b );

int 型の値を %f で表示

切り捨てが発生

a を double 型に変換