เรื่องที่ 2 ชนิดข้อมูล ตัวแปร...

28
หลักการแก้ปัญหาและการโปรแกรม [40102] สาขาวิชาคอมพิวเตอร์ และเทคโนโลยี 1 เรื่องที2 ชนิดข้อมูล ตัวแปร และค่าคงทีชนิดข้อมูล (Data Types) ชนิดข้อมูลพื ้นฐานมีด ้วยกัน 5 ประเภทคือ 1. char (1 ไบต์ ) 2. int (2 ไบต์ ) 3. float (4 ไบต์ ) 4. double (8 ไบต์ ) 5. void (0 ไบต์ ) ให้ทําความเข้าใจกับชนิดข้อมูลพื ้นฐานในตารางที2-1 ชนิดข้อมูล ความหมาย ไบต์ ( bytes) พิสัย (range) char อักษรหรืออักขระ 1 -128 ถึง 127 int จํานวนเต็ม 2 -32,768 ถึง 32,767 float จํานวนจริง (เลขทศนิยม) 4 3.4E + 38 (7 ตําแหน่ง) double จํานวนจริงละเอียด 2 เท่า 8 1.7E + 308 (15 ตําแหน่ง) void ไม่ให้ค่าใด 0 ไม่ให้ค่า ตารางที2-1 : ชนิดข้อมูลพื ้นฐานของ C ชนิดข้อมูลในตารางที2-1 ที่ได้กล่าวแล้ว ตัวแปรจะมี 4 ประเภทเท่านั ้นที่สามารถเก็บข้อมูลเหล่านี เพื่อความคล่องตัว และสามารถเก็บข้อมูลนอกเหนือจากนี ้ได ในภาษาซีจึงได้สร้างตัวแปรชนิด ข้อมูลแบบ คิดเครื่องหมาย (signed) ไม่คิดเครื่องหมาย (unsigned), ยาว (long) และสั ้น (short) เพิ่มเติมขึ ้นมา และยังนําไปประยุกต์ใช้กับชนิดข้อมูลพื ้นฐานได ดังในตารางที2-2

Upload: others

Post on 29-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

1

เรองท 2 ชนดขอมล ตวแปร และคาคงท

ชนดขอมล (Data Types)

ชนดขอมลพนฐานมดวยกน 5 ประเภทคอ

1. char (1 ไบต)

2. int (2 ไบต)

3. float (4 ไบต)

4. double (8 ไบต)

5. void (0 ไบต)

ใหทาความเขาใจกบชนดขอมลพนฐานในตารางท 2-1

ชนดขอมล ความหมาย ไบต (bytes) พสย (range) char อกษรหรออกขระ 1 -128 ถง 127

int จานวนเตม 2 -32,768 ถง 32,767

float จานวนจรง (เลขทศนยม) 4 3.4E + 38 (7 ตาแหนง) double จานวนจรงละเอยด 2 เทา 8 1.7E + 308 (15 ตาแหนง)

void ไมใหคาใด ๆ 0 ไมใหคา

ตารางท 2-1 : ชนดขอมลพนฐานของ C

ชนดขอมลในตารางท 2-1 ทไดกลาวแลว ตวแปรจะม 4 ประเภทเทานนทสามารถเกบขอมลเหลานเพอความคลองตว และสามารถเกบขอมลนอกเหนอจากนได ในภาษาซจงไดสรางตวแปรชนดขอมลแบบ คดเครองหมาย (signed) ไมคดเครองหมาย (unsigned), ยาว (long) และสน (short)

เพมเตมขนมา และยงนาไปประยกตใชกบชนดขอมลพนฐานได ดงในตารางท 2-2

Page 2: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

2

ชนดขอมล ความหมาย ไบต (bytes) พสย (range) char คดเครองหมาย 1 -128 ถง 127

int คดเครองหมาย 2 -32,768 ถง 32,767

short คดเครองหมาย 2 -32,768 ถง 32,767

short int คดเครองหมาย 2 -32,768 ถง 32,767

long คดเครองหมาย 4 -2,147,483,648 ถง 2,147,483,647

long int คดเครองหมาย 4 -2,147,483,648 ถง 2,147,483,647

unsigned char ไมคดเครองหมาย 1 0 ถง 255

unsigned ไมคดเครองหมาย 2 0 ถง 65,535

unsigned int ไมคดเครองหมาย 2 0 ถง 65,535

unsigned short ไมคดเครองหมาย 2 0 ถง 65,535

unsigned long ไมคดเครองหมาย 4 0 ถง 4,294,967,295

signed char คดเครองหมาย 1 -128 ถง 127

signed คดเครองหมาย 2 -32,768 ถง 32,767

signed int คดเครองหมาย 2 -32,768 ถง 32,767

signed short คดเครองหมาย 2 -32,768 ถง 32,767

signed long คดเครองหมาย 4 -2,147,483,648 ถง 2,147,483,647

ตารางท 2-2 : ชนดของตวแปรใน C

Page 3: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

3

ตวแปร (Variables)

ตวแปร (Variables) คอสวนทวางในหนวยความจาของคอมพวเตอรใชเกบขอมลชนดตาง ๆ เชน

จานวน (numbers) อกขระ (characters) และสตรงหรอขอความ (string) เปนตน

กฎในการตงชอ มดงน

1. ประกอบดวยตวอกษร ตวอกษรปนตวเลข หรอปนเครองหมาย underscore ( _ ) ได

2. ตวแรกจะตองเปนตวอกษรหรอเครองหมาย underscore ( _ ) เทานน

3. สามารถใช underscore เปนสวนของชอ ทอยระหวางตวอกษรหรอตวเลขได

4. มความยาวไดตงแต 1 ตวอกขระ ไปจนถง 32 ตวอกขระ (เฉพาะเทอรโบซแตบางเครองอาจไดนอยหรอมากกกวาน )

5. หามตงชอซ ากบคาสงวน (Reserved word)

6. ชอทตงขนแลวเขยนเปนตวเลก ตวใหญหรอตวใหญปนตวเลกจะถอวาเปนคนละชอกนหมด เชน count COUNT Count จะถอเปน 3 ชอตวแปรทแตกตางกน

ชอตวแปรทถก ชอตวแปรทผด Count 1count

Num12 num !

m-mum m…mun

ขอสงเกต

การกาหนดชนดของตวแปร มสงทควรพจารณาอย 2 ประการคอ ตวแปรนน จะตองสามารถรบคาไดทกคาโดยไมเกนขอบเขตของขอมลชนดนน และตวแปรจะตองไมใชหนวยความจามากเกนความจาเปน เชน ถาขอมลไมเกนขอบเขตของ int กไมควรกาหนดตวแปรใหเปน float

Page 4: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

4

คาคงท (Constant)

คาคงท (Constant) คอคาทเปลยนแปลงไมไดขณะรนโปรแกรม การกาหนดคาคงทกเพอไม

ตองการหรอปองกนไมใหโปรแกรมเปลยนแปลงคานน

รปแบบการกาหนดคอนสแตนตเปนดงน

ตวอยาง const float Pi = 3.1415;

หมายความวา Pi เปนคอนสแตนตชนด float ซงมคาเทากบ 3.1415

1. คอนสแตนตชนดอนทเจอร

คอนสแตนตชนดอนทเจอร (integer constant) เปนคอนสแตนตชนดตวเลขซง

อาจจะเปนคาบวก 0 หรอ คาลบ คอนสแตนตชนดนม 3 ประเภท คอ คอนสแตนตอนทเจอรฐานสบ ฐานแปดและฐานสบหก ซงมรายละเอยดดงน

1.1 คอนสแตนตอนทเจอรฐานสบ (decimal integer constant) หมายถงชด

ของเลขฐานสบ ( 0 ถง 9 ) ซงเลขตวแรกไมเปน 0 ดงตวอยางตอไปน const int price = 1000;

const int WeekDay = 7;

1.2 คอนสแตนตอนทเจอรฐานแปด (octal integer constant) หมายถงชดของ

เลขฐานแปด ( 0 ถง 7 ) ซงเลขตวแรกเปน 0 ดงตวอยางตอไปน const int Oct1 = 01000;

const int Oct2 =03 7;

1.3 คอนสแตนตอนทเจอรฐานสบหก (hexadecimal integer constant)

หมายถงชดของเลขฐานสบหก ( 0 ถง 9 และ A ถง F) ซงนาหนาดวย 0X หรอ 0x ดงตวอยาง

ตอไปน const int Hex1 = 0xF78;

const int Hex2 =0xFF;

const ชนดของขอมล ไอเดนตฟายเออร = คา;

Page 5: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

5

2. คอนสแตนตชนด float

คอนสแตนตชนด float (floating point constant) เปนคอนสแตนตชนดตว

เลขทมทศนยม คอนสแตนตชนดนม 2 รปแบบดงน

2.1 เปนชดของตวเลขทประกอบดวยเลข 0 ถง 9 และจดทศนยม ดงตวอยางตอไปน

const float Pi = 3.1415;

const float InterestRate =0.65;

2.1 เปนเลขยกกาลงซงมสวนประกอบ 2 สวนคอ สวนหนงเปนอนทเจอรหรอ float อกสวนหนงเปนตวคณสบยกกาลงซงแสดงดวยอกษร E (หรอ e) ตามดวยเลขยกกาลงซง

เปนอนทเจอรบวกหรอลบดงตวอยางตอไปน

const float A = 1.0E2; // หมายถง 1.0 * 102 ซง = 100.0

const float A = 1E+3; // หมายถง 1 * 103 ซง = 1000.0

const float A = 1E-2; // หมายถง 1 * 10 - 2 ซง = 0.01

3. คอนสแตนตชนดอกษร

คอนสแตนตชนดอกษร (character constant) เปนคอนสแตนตท

ประกอบดวยอกษรหนงตวอยภายในเครองหมาย ( ‘ ‘ ) ดงตวอยางตอไปน

const char A = ‘a’;

const char B =’b’;

คอนสแตนตชนดอกษรมชนดเปน char คาของคอนสแตนตจะเปนตวเลขซงมคา

เทากบรหส ASCII ของอกษรนน (ตาราง ASCII อยทภาคผนวก ก.) เชน ‘A’ = 65, ‘B’ = 66

คอนสแตนตชนดอกษรอกประเภทหนงมชอวา เอสเคปซเควนซ (escape

sequence) ซงเปนคอนสแตนตทประกอบดวยเครองหมาย \ และอกษรอยภายในเครองหมาย

( ‘ ‘ ) เชน ‘ \n ’ , ‘ \t ’ คอนสแตนตประเภทนมจานวนจากดและมความหมายเฉพาะดงแสดงใน

ตารางท 2-3

Page 6: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

6

เอสเคปซเควนซ ชอ ความหมาย \a Alarm bell เตรยมพรอม (เสยงระฆง) \b Backspace เลอนกลบ \f Formfeed ขนหนาใหม \n Newline ขนบรรทดใหม \r Return เคอเซอรกลบไปอยทตนบรรทด \t Tab เวนระยะในแนวระดบ \\ Backslash การกดเครองหมาย \\ \’ Single quote การกดเครองหมาย \ \” Double quote การกดเครองหมาย “ \? Question mark การกดเครองหมาย ?

ตารางท 2-3 : แสดงคอนสแตนตแบบตาง ๆ

Page 7: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

7

นพจน และตวดาเนนการ

นพจน (Expression)

นพจน (Expression) คอการนาตวแปร คาคงท มาสมพนธกนโดยใชเครองหมายอยางใด

อยางหนงเปนตวเชอมโดยมกฎเกณฑทว ๆ ไปในการเขยนนพจนของภาษา C มดงน

1. เขยนตวอกษรหลายตวตดกนไดโดยไมมเครองหมายคน เชน XY ถอเปน 1 ตวแปร

2. กรณนพจนมคาของตวแปรหรอคาคงทตางชนดกนในนพจนเดยวกน กลไกของภาษา C จะเปลยนชนดของขอมลทมขนาดเลกใหเปนชนดของขอมลทใหญขน ดงนนจง

ควรระวงในการตงตวแปรเพอเกบผลลพธทไดจากการดาเนนการของนพจนมคาของตวแปรหรอคาคงทตางชนดกน ซงตวแปรทตงขนควรเปนชนดของขอมลทใหญทสดในนพจนนน ดงตวอยาง หากนพจนม int กบ long กลไกของภาษา C จะเปลยนชนดของขอมลเปน long

หากนพจนม int กบ double กลไกของภาษา C จะเปลยนชนดของขอมลเปน double

นพจนคณตศาสตร นพจนภาษา C 2X2 2*(X*X)

10X + 3XY + 10Y2 10*X-3*X*Y+10*Y*Y

ตารางท 3-1 : แสดงตวอยางของนพจนในภาษา C

นพจนแบงออกเปน 1. นพจนคณตศาสตร (Arithmetic Expression)

หมายถงการนาตวแปร คาคงท มาสมพนธกนโดยใชเครองหมายคณตศาตรเปนตวเชอมผลทไดจากนพจนแบบนจะเปนตวเลข ดงตารางท 3-2

นพจนคณตศาสตรในภาษา C

3X + 5Y 3*X + 5*Y

X2 - Y2 X*X - Y*Y

ตารางท 3-2 : แสดงนพจนคณตศาสตร

Page 8: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

8

2. นพจนตรรก (Logical Expression)

หมายถง การนาตวแปร คาคงท หรอนพจน มาสมพนธกนโดยใชเครองหมายเปรยบเทยบและเครองหมายตรรกเปนตวเชอมผลทไดจะเปนจรง หรอเทจ คอจะใหคาเปน 1 หรอ 0 ออกมาเปนผลลพธซงสามารถนาไปคานวณตอไดดงตารางท 3-3

โจทย ถา I มคาเปน 3 J มคาเปน 5 A มคาเปน 3 ถาเขยนนพจนดงน

I = = J ผลลพธไมจรง (0)

I = = A ผลลพธจรง (1) I > J*5 ผลลพธไมจรง (0) I+3 > J –2 && a*2 > 10 ผลลพธไมจรง (0)

ตารางท 3-3 : แสดงนพจนตรรก

Page 9: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

9

ตวดาเนนการ (Operator)

ตวดาเนนการ (Operator) คอการใชในการกาหนดคาใหตวแปร มตวดาเนนการ 3

ประเภทใหญ ๆ ดงน

1. ตวดาเนนการเลขคณต (arithmetic operators)

2. ตวดาเนนการเปรยบเทยบและ (relational operators)

3. ตวดาเนนการตรรกะ ( logical operators)

ตวดาเนนการเลขคณต (arithmetic operators)

เปนตวดาเนนการทางดานคณตศาสตร ไดแกเครองหมายทใชในการบวก ลบ คณ หาร ตวเลข และอน ๆ ดงในตารางท 3-4

ตวดาเนนการ ความหมาย ตวอยาง - การลบ X – Y

+ การบวก X + Y

* การคณ X * Y

/ การหาร X / Y

% การหารจะเอาเฉพาะเศษไว 11%3 = 3 เศษ 2 ดงนน 2 เปนผลลพธ

- - การลดคาลงครงละ 1 X- -หรอ - -X เหมอนกบ X=X-1 + + การเพมคาครงละ1 X+ +หรอ + +X เหมอนกบ X=X+1

ตารางท 3-4 : แสดงตวดาเนนการของ C

นอกจากตวดาเนนการบวก ลบ คณ หาร ธรรมดาแลว ยงมโมดลส (modulas) คอการหาร

เอาเฉพาะเศษดงในตารางท 3-4 และใน C มวธการรวบรดการใชตวดาเนนการเลขคณตดงน

รวมสญลกษณ + และ = เขาดวยกนกลายเปน +=

- และ = เขาดวยกนกลายเปน -= ดงตารางท 3-5

Page 10: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

10

ตวอยาง

. . .

y = x + a ++;

. . .

ขนตอนการประมวลผล 1. y = x + a

2. a = a + 1

. . .

y = x + ++ a;

. . .

ขนตอนการประมวลผล 1. a = a + 1

2. y = x + a

. . .

y += x ;

. . .

ขนตอนการประมวลผล y = y + x

. . .

y += x ++ ;

. . .

ขนตอนการประมวลผล 1. y = y + x

2. x = x + 1

. . .

y -= 9 ;

. . .

ขนตอนการประมวลผล y = y - 9

. . .

y *= 7 * x++ ;

. . .

ขนตอนการประมวลผล 1. y = y * 7 * x

2. x = x + 1

. . .

y /= x ;

. . .

ขนตอนการประมวลผล y = y / x

. . .

y %= x ;

. . .

ขนตอนการประมวลผล y = y % x

ตารางท 3-5 : แสดงตวอยางตวดาเนนการของ C

Page 11: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

11

ขนตอนการทางานของตวดาเนนการใน C

ในบางครงนพจนประกอบดวยตวดาเนนการมากมาย ทาใหเกดความยงยากในการพจารณาขนตอนการทางานของตวดาเนนการ จงไดตงกฏเกยวกบลาดบการทางานกอนหลงของตวดาเนนการ (Operator) ดงตารางท 3-6

ตวดาเนนการ ลาดบท ( ) 1 (สงสด) + + - - unary 2

* / % 3 + - 4 += -= *= = /= %= 5 (ตาสด)

ตารางท 3-6 : แสดงลาดบการทางานของตวดาเนนการ

ตวดาเนนการทมความสาคญอยในระดบเดยวกน ใหทางานตามขนตอนจากซายไปขวาเปนหลกตอไปน เปนตวอยางพอสงเขป ดงตารางท 3- 7

ตวอยาง

5 + 6 * 2 ♣ ตวดาเนนการ * อยลาดบสงกวา + จงตองคณเลขกอนแลวบวกเลข 5 ภายหลง

2 * 3 – 14 / 7 + 5 ♣ ตวดาเนนการ * และ / อยลาดบเดยวกนใหทาจากซายไปขวา คอ คณเลข แลวหารเลข

♣ ตวดาเนนการ – และ + อยในลาดบเดยวกน

ทาจากซายมอกอนคอ ลบเลข แลวจงบวก เลขในภายหลง

ตารางท 3-7 : แสดงลาดบการทางานของตวดาเนนการ

Page 12: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

12

ตวดาเนนการเปรยบเทยบ (Relational operators)

หมายถง เครองหมายทใชในการเปรยบเทยบและตดสนใจ ผลการเปรยบเทยบจะใหคาเปน 1 และ เทจจะใหคาเปน 0 เครองหมายทใชมดงตารางท 3-8

เครองหมาย ความหมาย ตวอยาง > มากกวา A > B (A มากกวา B) >= มากกวาหรอเทากบ A >= B (A มากกวาหรอเทากบ B) < นอยกวา A < B (A นอยกวา B) <= นอยกวาหรอเทากบ A <= B (A นอยกวาหรอเทากบ B) == เทากบ A == B (A เทากบ B)

!= ไมเทากบ A != B (A ไมเทากบ B)

ตารางท 3-8 : แสดงตวดาเนนการเปรยบเทยบ

เครองหมายตรรกะ (logical operators) เครองหมายตรรกะมจดประสงคใชในการเปรยบเทยบเพอตดสนใจซงผลทไดจากการเปรยบเทยบจะไดผลลพธ 2 อยาง คอ ถาไดผลลพธเปนจรงจะมคาเปน 1 และถาไดผลลพธเปนเทจจะมคา 0 เปนเครองหมายตรรกะทใชในภาษา C มดงน

คาสง && (AND) เปนการนาเงอนไข 2 เงอนไขมาเปรยบเทยบกนซงผลลพธทไดจะเปนดงน

X Y X && Y 0 0 0 0 1 0

1 0 0

1 1 1

คาสง | | (OR) เปนการนาเงอนไข 2 เงอนไขมาเปรยบเทยบกนซงผลลพธทไดจะเปนดงน

X Y X | | Y 0 0 0 0 1 1

1 0 1

1 1 1

Page 13: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

13

คาสง ! (NOT) เปนการทานเสธซงผลลพธทไดจะเปนดงน X ! X 0 1

1 0

Page 14: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

14

คาสงรบ - แสดงผลและคาสงการทางานแบบมทางเลอก

ฟงกชนในการรบขอมลและแสดงผลขอมล (Input / Output Function)

1. printf( ) เปนฟงกชนทใชในการแสดงผลขอมลทอยในตวแปร คาคงท นพจน

ออกมาทางจอภาพ

Argument list เปนคาตวแปร คาคงท หรอนพจนทตองการนามาแสดงผลถามมากกวา 1 คา จะแยกกนโดยใชเครองหมายคอมมา ( , )

Control จะตองเขยนอยภายใตเครองหมาย “ “ ซงสามารถเขยนได 2 ลกษณะคอ 1. เปนขอความทตองการใหแสดงออกมา เชน

print(“ Sum of X = “); 2. เปนรหสรปแบบ (Format Code) ทใชในการแสดงผลซงทกรหส

รปแบบจะตองอยตามหลงเครองหมาย % รหสรปแบบ ขอมลทนยม

ใชไดแก

รหส ความหมาย % c ใชกบตวแปรทเกบคาทเปนตวอกษรเพยงตวเดยว % s ใชกบตวแปรทเกบคาทเปนขอความทเกบในตวแปรชด % d ใชกบตวแปรทเกบคาทเปนเลขจานวนเตม % u ใชกบตวแปรทเกบคาทเปนเลขจานวนเตมบวก % f ใชกบตวแปรทเกบคาทเปนเลขทศนยม % e ใชกบตวแปรทเกบคาทเปนเลขทศนยมในรป e ยกกาลง

% x ใชกบตวแปรทเกบคาทเปนคาเลขฐานสบหก % o ใชกบตวแปรทเกบคาทเปนคาเลขฐานแปด % p ใชกบตวแปรทเกบคาทเปนตวชตาแหนง (pointer)

รปแบบ printf (control, argument list);

Page 15: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

15

ตวอยาง แสดงการใชคาสง printf ทมขอความทเปนคาอธบายอยในรปคาสง void main( )

{ int sum = 3;

printf(“ The sum is %d ”,sum);

}

ผลลพธ The sum is 3

ตวอยาง แสดงการใชคาสง printf รหสรปแบบ % d และ % u

void main( )

{ int num = -3, tot = 5;

printf(“ num = %d tot = %u ”,num, tot);

}

ผลลพธ Num = -3 tot = 5

ตวอยาง แสดงการใชคาสง printf รหสรปแบบ % f และ % e โดยมทศนยม 2 ตาแหนง void main( )

{ float num = 22.75;

printf(“ %.2f %.2e ”,num,num);

}

ผลลพธ 22.75 2.28e+01

5. ฟงกชน putchar ( ) เปนฟงกชนทใชในการแสดงผลขอมลชนดตวอกขระ (char) ให

เหนบนหนาจอภาพ

6. ฟงกชน puts ( ) เปนฟงกชนทใชในการแสดงผลขอมลสตรงหรอขอความ (string) ให

เหนบนหนาจอภาพ

รปแบบ putchar ( char );

รปแบบ puts ( string );

Page 16: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

16

4. ฟงกชน scanf ( ) เปนฟงกชนทใชในการรบขอมลจากแปนพมพ (key board) เขามา

เกบไวในตวแปร

Argument list เปนตวแปรทจะรบคาจากแปนพมพมาเกบไวถามมากกวาหนงคา จะตองแยกกนดวยเครองหมายคอมมา ( , ) และตวแปรทกตวทใช

จะตองนาหนาดวยเครองหมาย & ทกตว ยกเวนตวแปรชด

Control เปนรหสรปแบบทใชในการรบขอมลซงจะตองเขยนอยภายในเครองหมาย “ “ และจะมรหสรปแบบเหมอนกบรหสรปแบบทใช

ในคาสง printf

ตวอยาง แสดงการใชคาสง scanf

main( )

{ int num;

scanf( “ %d ” ,&num);

}

หมายความวา เครองจะรอรบคาทเปนจานวนเตมหนงจานวนทจะปอนเขามาทางแปนพมพมาเกบไวในตวแปร num

ตวอยาง แสดงการใชคาสง scanf

main( )

{ int num; char ch;

scanf(“ %d %c ” ,&num, &ch);

}

หมายความวา เครองจะรอรบคาทเขามา 2 คา คอคาทหนงเปนจานวนเตมหนงจานวน และคาทสองเปนอกขระหนงตวทจะปอนเขามาทจะปอนเขามาทางแปนพมพแลวนาไปเกบไวในตวแปร num และ ch ตามลาดบ

รปแบบ scanf (control, argument list);

Page 17: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

17

5. ฟงกชน getchar ( ) เปนฟงกชนทใชในการรบขอมลจากแปนพมพทละ 1 ตวอกขระ

โดยตองกด enter ทกครงเมอสนสดขอมล และขอมลทปอนจะปรากฎใหเหนบนหนาจอภาพ

6. ฟงกชน getch ( ) เปนฟงกชนทใชในการรบขอมลเปนตวอกขระ 1 ตวอกขระเขามา

ทางแปนพมพโดยเมอปอนขอมลเสรจไมตองกดปม enter และขอมลทปอนจะไมปรากฎบน

หนาจอภาพ

7. ฟงกชน getche ( ) เปนฟงกชนทใชในการรบขอมลเปนตวอกขระ 1 ตวอกขระเขามา

ทางแปนพมพโดยเมอปอนขอมลเสรจไมตองกดปม enter และขอมลทปอนจะปรากฎบน

หนาจอภาพ

8. ฟงกชน gets ( ) เปนฟงกชนทใชในการรบขอมลสตรงหรอขอความ (string) เขามาทางแปนพมพโดยตองกด enter ทกครงเมอสนสดขอมล และขอมลทปอนจะปรากฏใหเหนบนหนาจอภาพ

ตวอยางโปรแกรม การใชคาสงรบ - แสดงผล #include <stdio.h>

void main()

{

int x_value = 9;

printf("x = %d\n",x_value);

}

รปแบบ char = getchar ( );

รปแบบ char = getch ( );

รปแบบ getche ( );

รปแบบ gets ( string );

Page 18: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

18

#include <stdio.h>

void main()

{

int x, y, sum;

x = 7; y = 2;

sum = x + y;

printf("Total = %d\n",sum);

}

#include <stdio.h>

void main()

{

int x, y;

x = 7; y = 4;

--x; ++y;

printf("x = %d\n",x);

printf("y = %d\n",y);

}

#include <stdio.h>

void main()

{

int profits, employees;

profits = 9;

employees = 2 ;

printf("Each employee gets %f.", (float) profits/employees);

}

Page 19: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

19

include <stdio.h>

void main()

{

char any_char;

printf("Please type a character: ");

scanf("c%",&any_char);

printf("Thank you, your character are %c",any_char);

}

#include <stdio.h>

void main(void)

{

printf("\n****Using .1f****\n");

printf("%.1f%.1f%.1f\n", 4.0, 16.5, 589.3);

printf("%.1f%.1f%.1f", 400.0, 1600.5, 58900.3);

printf("\n\n****Using 8.1f****\n");

printf("%8.1f%8.1f%8.1f\n", 4.0, 16.5, 589.3);

printf("%8.1f%8.1f%8.1f", 400.0, 1600.5, 58900.3);

printf("\n\n**** Using -8.1f****\n");

printf("%-8.1f%-8.1f%-8.1f\n", 4.0, 16.5, 589.3);

printf("%-8.1f%-8.1f%-8.1f", 400.0, 1600.5, 58900.3);

}

Page 20: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

20

#include <stdio.h>

void main(void)

{

printf("\n");

printf("\xC9\xCD\xBB\n");

printf("\xC8\xCD\xBC\n");

}

#include <stdio.h>

#include <ctype.h>

void main()

{

char any_char;

printf("Please type a lowercase letter:");

scanf("%c", &any_char);

if(any_char >= 'a')

printf("In uppercase: %c \n", toupper(any_char));

}

ตวอยางโปรแกรม การใชคาสงรบ – แสดงผล ทมา :: พ.อ.เจนวทย เหลองอรามและปยวทย เหลองอราม ,การเขยนโปรแกรม สาหรบ Application ดวย C/C++, ธรรมสาร จากด, 2543

Page 21: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

21

คาสงการทางานแบบมทางเลอก

การทางานแบบมทางเลอก หมายถง การกาหนดใหโปรแกรมทางานอยางใดอยางหนงเมอเงอนไขเปนจรงและทา (หรอไมทา) งานอกอยางหนงเมอเงอนไขเปนเทจ ตวอยางการเลอกทาทอาจพบเหนไดบอยเชน

การเตอนใหเลอกบนทกขอความไวในดสกคอ

Save (Y/N) ถาเลอก Y จะบนทกขอมลในดสก

ถาเลอก N จะไมบนทกขอมล

การเลอกทาม 2 แบบคอการเลอกทาแบบ if และการเลอกทาแบบ switch

♦ คาสง if (if statement)

♦ คาสง switch (switch statement)

การเลอกทาแบบ if เรมดวยการทดสอบเงอนไข ถาเงอนไขเปนจรง สเตตเมนตตอจาก if

จะทางาน ถาเงอนไขเปนเทจสเตตเมนตตอจาก if จะไมทางานรปแบบของการเลอกทาแบบ if ม 3

รปแบบคอ

1. การเลอกทาแบบ if ทมสเตตเมนตเดยว และหลายสเตตเมนต มรปแบบดงน

การเลอกทาแบบ if

รปแบบ if (condition) // if ทมสเตตเมนตเดยว

statement - 1;

-- หรอ -- if (condition) // if หลายสเตตเมนต

{ statement - 1;

statement - 2; … }

Page 22: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

22

2. ทาแบบ if – else ทมสเตตเมนตเดยว และหลายสเตตเมนต มรปแบบดงน

รปแบบ if (condition) // if – else ทมสเตตเมนต

เดยว statement - 1;

else

statement - 2;

-- หรอ -- if (condition) // if – else หลายสเตตเมนต

{ statement - 1; … } else

{ statement - 2; … }

Page 23: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

23

3. แบบ if – else – if ทมสเตตเมนตเดยว และหลายสเตตเมนต มรปแบบดงน

รปแบบ if (condition) // if – else - if ทมสเตตเมนตเดยว

statement - 1;

else if (condition)

statement - 2; … else

statement - n;

-- หรอ -- if (condition) // if – else - if หลายสเตตเมนต

{ statement - 1; … } else if (condition)

{ statement - 2; … } … else

{ statement - n; … }

Page 24: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

24

ตวอยางโปรแกรม การใชคาสงเลอกทาแบบ if #include <stdio.h>

#include <ctype.h>

void main()

{

char any_char;

printf("Please type a lowercase letter:");

scanf("%c",&any_char);

if(any_char < 'a')

printf("Sorry, I can not capitalize that.\n");

else

printf("Thank you. In uppercase : %c.",toupper (any_char));

}

#include <stdio.h>

#include <ctype.h>

void main()

{

char any_char ;

printf("Please type a lowercase letter:");

scanf("%c",&any_char);

if(any_char< 'a')

printf("Sorry,I can not capitalize that./n");

else if (any_char>'z')

printf("Sory, I can not capitalize that./n");

else

printf("Thank you. In uppercase: %c \n", toupper (any_char));

}

Page 25: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

25

#include <stdio.h> // for printf()

#include <conio.h> // for getche()

void main(void)

{

int x, y;

clrscr();

printf("\n"); // new line

for (y=1; y<24; y++) // step down the screen

{

for (x=1; x<24; x++) // step across the screen

if ( x == y ) // NW-SE diagonal?

printf("\xDB"); // print solid color

else

if ( x == 24 - y ) // SW-NE diagonal?

printf("\xDB"); // print solid color

else

printf("\xB0"); // print gray

printf("\n"); // next line

delay(200);

}

getche();

}

ตวอยางโปรแกรม การใชคาสงเลอกทาแบบ if ทมา :: พ.อ.เจนวทย เหลองอรามและปยวทย เหลองอราม ,การเขยนโปรแกรม สาหรบ Application ดวย C/C++, ธรรมสาร จากด, 2543

Page 26: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

26

คาสง switch ใชเพอเลอกทาคาสงใดคาสงหนงตามตองการ โดยมทางเลอกใหทาคาสง

หลาย ๆ ทาง คาตวแปรจะทาหนาทควบคมคาสง switch คาสง switch และคาสง if – else – if

เปนคาสงเลอกทา เชนเดยวกน แตตางกนทรปแบบเงอนไข ตอไปนเปนรปแบบของการเลอกทาแบบ switch

การเลอกทาแบบ switch มวธเลอกทาโดยการเปรยบเทยบคาของ switch แวเรยเบล กบ

คาของคอนสแตนตในแตละ case ถามคาเทากนสเตตเมนตของ case นนจะทางาน และถาคาของ

switch แวเรยเบลไมเทากบคาของคอนสแตนตใน case ใด ๆ เลย สเตตเมนตของ default จะ

ทางาน

การเลอกทาแบบ switch

รปแบบ switch ( แวเรยเบลชนด int หรอ char ) {

case คอนสแตนตชนด int หรอ char :

สเตตเมนต;

สเตตเมนต;

break;

case คอนสแตนตชนด int หรอ char :

สเตตเมนต;

สเตตเมนต;

break;

default :

สเตตเมนต;

สเตตเมนต; }

Page 27: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

27

ตวอยางโปรแกรม การใชคาสงเลอกทาแบบ switch #include <stdio.h> void main()

{ int ch; clrscr();

printf(" Menu \n"); printf("===================\n"); printf(" 1 :Create Data \n"); printf(" 2 :Display Data \n"); printf(" 3 :Append Data \n"); printf(" 4 :Edit Data \n"); printf(" 5 :Quit \n"); printf("===================\n"); printf("Please select <1, 2, 3, 4, 5 > ==> "); scanf("%d", & ch); switch (ch)

{ case 1: printf("You take choice 1:Create Data \n");

break;

case 2: printf("You take chaoice 2:Display Data\n");

break;

case 3: printf("You take choice 3:Append Data \n");

break;

case 4: printf("You take choice 4: Edit Data \n");

break;

case 5: printf("You take choice 5:Quit\n");

break;

default: printf("You take choice the other:default");

}

}

ขอสงเกต

แวเรยเบลและคอนสแตนตทใชสาหรบเปรยบเทยบในการเลอกทาแบบ switch

จะตองมชนดเปน int และ char เทานน

Page 28: เรื่องที่ 2 ชนิดข้อมูล ตัวแปร และค่าคงที่cs/download/it40102/03-sequencial_selection.pdf · ( ‘ ‘ ) เช่น

หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย

28

#include <stdio.h> // for printf()

void main(void)

{

float Fnum1=1.0, Fnum2=1.0;

char op;

clrscr();

while ( !(Fnum1==0.0 && Fnum2==0.0) )

{ printf("\n\nEnter number, operator, number\n");

scanf("%f %c %f", &Fnum1, &op, &Fnum2);

switch ( op )

{ case '+' : printf(" = %f", Fnum1 + Fnum2);

break;

case '-' : printf(" = %f", Fnum1 - Fnum2);

break;

case '*' :

case 'x' : printf(" = %f", Fnum1 * Fnum2);

break;

case '/' :

case '\\': printf(" = %f", Fnum1 / Fnum2);

break;

default : printf("Unknown operator");

} // end switch

} // end while

} // end main()

ตวอยางโปรแกรม การใชคาสงเลอกทาแบบ switch :: พ.อ.เจนวทย เหลองอรามและปยวทย เหลองอราม ,การเขยนโปรแกรม สาหรบ Application ดวย C/C++, ธรรมสาร จากด, 2543