หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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 ชนดของขอมล ไอเดนตฟายเออร = คา;
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย
6
เอสเคปซเควนซ ชอ ความหมาย \a Alarm bell เตรยมพรอม (เสยงระฆง) \b Backspace เลอนกลบ \f Formfeed ขนหนาใหม \n Newline ขนบรรทดใหม \r Return เคอเซอรกลบไปอยทตนบรรทด \t Tab เวนระยะในแนวระดบ \\ Backslash การกดเครองหมาย \\ \’ Single quote การกดเครองหมาย \ \” Double quote การกดเครองหมาย “ \? Question mark การกดเครองหมาย ?
ตารางท 2-3 : แสดงคอนสแตนตแบบตาง ๆ
หลกการแกปญหาและการโปรแกรม [ง 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 : แสดงนพจนคณตศาสตร
หลกการแกปญหาและการโปรแกรม [ง 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 : แสดงนพจนตรรก
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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 : แสดงลาดบการทางานของตวดาเนนการ
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย
13
คาสง ! (NOT) เปนการทานเสธซงผลลพธทไดจะเปนดงน X ! X 0 1
1 0
หลกการแกปญหาและการโปรแกรม [ง 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);
หลกการแกปญหาและการโปรแกรม [ง 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 );
หลกการแกปญหาและการโปรแกรม [ง 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);
หลกการแกปญหาและการโปรแกรม [ง 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 );
หลกการแกปญหาและการโปรแกรม [ง 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);
}
หลกการแกปญหาและการโปรแกรม [ง 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);
}
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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; … }
หลกการแกปญหาและการโปรแกรม [ง 40102] สาขาวชาคอมพวเตอร และเทคโนโลย
22
2. ทาแบบ if – else ทมสเตตเมนตเดยว และหลายสเตตเมนต มรปแบบดงน
รปแบบ if (condition) // if – else ทมสเตตเมนต
เดยว statement - 1;
else
statement - 2;
-- หรอ -- if (condition) // if – else หลายสเตตเมนต
{ statement - 1; … } else
{ statement - 2; … }
หลกการแกปญหาและการโปรแกรม [ง 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; … }
หลกการแกปญหาและการโปรแกรม [ง 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));
}
หลกการแกปญหาและการโปรแกรม [ง 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
หลกการแกปญหาและการโปรแกรม [ง 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 :
สเตตเมนต;
สเตตเมนต; }
หลกการแกปญหาและการโปรแกรม [ง 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 เทานน
หลกการแกปญหาและการโปรแกรม [ง 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
เ