You are on page 1of 13

If Statement การใชทางเลือก

If เปนการทํางานแบบการเลือกใชทางเลือก หรือการทํางานแบบมีเงื่อนไข ซึ่งประกอบดวยสวนที่


หนาทีต
่ รวจสอบเงื่อนไขที่เรียกวา นิพจนทางตรรกศาสตร

สามารถแบงตามลักษณะการทํางานได 3 แบบ ดังนี้


• คําสั่ง if แบบทางเดียว
• คําสง if แบบสองทางเลือก (if-else)
• คําสั่ง if แบบหลายทางเลือก (nested-if)

่ if แบบทางเดียว --- One Selection


1. คําสัง

ในการตัดสินใจ จะมีใหเลือกเพียงทางเดียวเทานั้น หากเงื่อนไขเปนจริง จะไปทงานกลุมคําสั่ง


แตหากเงื่อนไขเปนเท็จ ก็จะขามการํางานในหลุมคําสั่งของ if เพื่อไปทํางานคําสั่งถัดไป

เชน... ถานักเรียนสอบไดคะแนนไมต่ํากวา 60 คะแนน ถือวาสอบผาน

¾ สามารถเขียนเปนภาษาเชิงโครงสรางไดวา

If student’s grade is greater than or equal to 60


Print “Passed”

¾ สามารถเขียนเปน flowchart ไดดังนี้

¾ สามารถนํามาเขียนเปนภาษา C ไดดังนี้

if ( grade >= 60 )
printf(“Passed\n”);

รูปแบบของ if statement แบบ one selection คือ

if ( condition ) {
statement;
}

- condition : เงื่อนไขเพื่อใชพิจารณาวาจะทํา หรือไมทํากลุมคําสั่งนั้น


สามารถเขียนใหอยูในรูปของนิพจนของการคํานวณ คาของตัวแปร และนํามา
เปรียบเทียบก็ได
- statement : คําสั่ง หรือกลุมคําสั่งที่จะใหทาํ งาน หากเงื่อนไขในการตรวจสอบนั้น
เปนจริง หากเปนกลุมคําสั่งจําเปนตองมีเครื่องหมาย { } ครอบไวดวย

1
2. คําสัง
่ if แบบสองทาง --- Double Selection

คลายกับประโยคควบคุม if แบบทางเดียว เพียงแตเพิ่มทางเลือกเขามา ใชในกรณีทต


ี่ องการใหมี
2 ทางใหประมวลผล

ทางเลือกแรก เมื่อ เงื่อนไขเปนจริง


ทางเลือกทีส
่ อง เมือ่ เงือ่ นไขเปนเท็จ

เชน... ถานักเรียนสอบไดคะแนนไมต่ํากวา 60 คะแนน ถือวาสอบผาน


แตหากไดคะแนนต่ํากวานั้น ถือวาสอบตก

¾ สามารถเขียนเปนภาษาเชิงโครงสรางไดวา

If student’s grade is greater than or equal to 60


Print “Passed
Else
Print “Failed”

¾ สามารถเขียนเปน flowchart ไดดังนี้

Print(“Failed”) false Grade >= 60 true Print(“Passed”)

¾ สามารถนํามาเขียนเปนภาษา C ไดดังนี้

if(grade>=60)
printf(“Passed\n”);
else
printf(“Failed\n”);

รูปแบบของ if statement แบบ Double Selection คือ

if (condition) {
statements1;
}
else {
statements2;
}

- ถาผลการตรวจสอบเงื่อนไขเปนจริง ก็ทํางานตามกลุมคําสั่งของ if
- ถาผลการตรวจสอบเงื่อนไขเปนเท็จ ก็ใหทํางานตามกลุมคําสั่งของ else แทน

2
3. คําสัง
่ if แบบหลายทางเลือก --- Multiple Selection

เปนการทํางานแบบการเลือกใชทางเลือก ที่มคี วามซับซอนมากขึ้น ซึ่งจะใชในกรณีทท ี่ างเลือกมี


มากกวา 2 ทาง โดยแตละทางเลือกมีเงื่อนไขตางกัน จึงตองใชคาํ สั่ง if หลายครั้งเพื่อกําหนดเงื่อนไข
สําหรับแตละทางเลือก

พิจารณาเงื่อนไขแรก หากเปนจริงก็จะทําตามคําสั่งของ if นั้น


แตหากไมเปนจริง จะพิจารณาที่ if (else-if) ตัวตอไป

หากเงื่อนไขนั้น ๆ ยังเปนเท็จ พิจารณาเงื่อนไขเรียงลําดับไปเรื่อย ๆ


จนกวาจะเปนจริง และทํางานตามคําสั่งนั้น ๆ
จนเมื่อครบทุกเงื่อนไขแลว ถาผลยังคงไมเปนจริง จะทํางานตามคําสั่งของ else ที่กําหนดไว

เชน...

¾ จากภาษาโครงสราง

If student’s grade is greater than or equal to 90


Print “A”
Else
If student’s grade is greater than or equal to 80
Print “B”
Else
If student’s grade is greater than or equal to 70
Print “C”
Else
If student’s grade is greater than or equal to 60
Print “D”
Else
Print “F”

¾ มาเขียนเปน ภาษา C ได ดังนี้

if (grade >= 90 )
printf("A\n");
else if (grade >= 80)
printf("B\n");
else if (grade >= 70)
printf("C\n");
else if (grade >= 60)
printf("D\n");
else
printf("F\n");

3
รูปแบบของ if statement แบบ Multiple Selection คือ

if ( condition1 ) {
statement of condition1;
}
else if ( condition2 ) {
statement of condition2;
}
else if ( condition3 ) {
statement of condition3;
}

...

else if ( condition N ) {
statement of condition N;
}
else {
statement;
}

Remark :)
 หากภายในเงื่อนไขมีมากกวาหนึ่งคําสั่งตองมีวงเล็บปกกาครอม
เชน...
if (grade >= 60)
printf("Passed\n");
else {
printf("Failed.\n");
printf("You must take this course again.\n");
}

หากไมใสปกกาครอม
เชน...
if (grade >= 60)
printf("Passed\n");
else
printf("Failed.\n");
printf("You must take this course again.\n");

สวนของโปรแกรมในบรรทัด
printf("You must take this course again.\n");
จะถูกแสดงทุกครั้ง ไมวา grade จะเกิน 60 หรือไมก็ตาม

 นอกจากรูปแบบของ if-else แลว เรายังสามารถใชเครื่องหมาย ? มาประยุกตในการเขียน code


เพื่อใหไดความหมายเดียวกันกับ if-else ดังแสดงใหเห็นดังนี้

if (x < y)
a = x * 2;
else
a = x + y;

สามารถเขียนไดในอีกรูปแบบหนึ่ง คือ
a = x < y ? x*2: x+y;
ซึ่งจะใหความหมายเดียวกันกับ code ขางบนนั่นเอง

4
Switch Case!
ในการเลือกการทํางานเมื่อมีทางเลือกหลายทาง การใช if-else ซอนๆกันทําใหโปรแกรมมีความยุงยาก
และซับซอน
เชน การเลือกเมนู 1, 2, 3 ซึ่งถาเราใช if-else จะใชคาํ สั่งดังตัวอยาง

if (menu == 1)
printf(“Menu choice is 1 \n”);
} else if (menu == 2)
printf(“Menu choice is 2 \n”);
} else if (menu == 3)
printf(“Menu choice is 3 \n”);
} else {
printf(“Menu choice is not 1, 2, 3 \n”);
}

จะเห็นไดวา มีขั้นตอนการเปรียบเทียบทีย ่ ุงยาก ! ดังนั้นใน C จึงมีคําสั่งในการทดสอบคาที่เปนตัวเลข


(จํานวนเต็ม, อักขระ หรือนิพจนที่คาํ นวณไดเปนคาจํานวนเต็ม) โดยใชคําสัง่ switch ดังนี้
ซึ่ง switch มีรูปแบบ ดังนี้

switch (expression) {
case value_1: statement of value 1 break;
case value_2: statement of value 2 break;
case value_3: statement of value 3 break;

default: statement of default;
}

และสามารถนําสวนของโปรแกรม ในรูปแบบ if-else มาเขียนใหมในรูปแบบของ switch-case ไดวา

switch (menu) {
case 1: printf(“menu choice is 1 \n”); break;
case 2: printf(“menu choice is 2 \n”); break;
case 3: printf(“menu choice is 3 \n”); break;
default: printf(“Menu choice is not 1, 2, 3 \n”);
}

และในการทํางานนั้น หาก case มีการทํางานอยางเดียวกัน สามารถรวมเงือ


่ นไข case ได !!!

เชน ...

switch (menu) {
case 1: case 2: printf(“menu choice is either 1 and 2 \n”); break;
case 3: printf(“menu choice is 3 \n”); break;
default: printf(“Menu choice is not 1, 2, 3 \n”);
}

:)

5
พิจารณาจากสวนของโปรแกรมนี้ .........

switch (code) {
case 1: case 3: case 5: Level = “A”; break;
case 2: case 4: case 6: Level = “B” break;
case 6: case 7: case 8: case 9: case 10: Level = “C”; break;
default: Level = “D”
}

ถาคาของ code เปน ...


1 หรือ 3 หรือ 5 กําหนด Level = “A”
2 หรือ 4 กําหนด Level = “B”
6 หรือ 7 หรือ 8 หรือ 9 หรือ 10 กําหนด Level = “C”
คาอื่น ๆ กําหนด Level = “D”

** ในการมี break เพื่อใหโปรแกรมขามการทํางานทั้งหมดที่อยูในกลุม


 ของคําสั่งที่ถูกเขียนรวมอยูใน
บล็อกนั้น

การทํางานแบบวนซ้ํา Loop!
เปนการทํางานที่ตองวนซ้ํา เชน การคํานวณคะแนนสอบ ที่ตอ  งมีการรวมคะแนนของนักเรียนทุกคน > <
การทํางานแบบวนซ้ํานี้ จะมีดว ยกัน 2 สวน คือ
- สวนของการตรวจสอบ (loop test)
- สวนของการทําวนซ้ํา (loop body)
จะทํางานโดย ตรวจสอบเงื่อนไขกอน หากเงื่อนไขเปนจริง จะทํางานในนั้น และมาตรวจสอบ หากเปนจริง
ก็จะทําการทํางาน วนซ้ําไปเรือ่ ย ๆ จนกวาเงื่อนไขจะเปนเท็จ

Loop มีดวยกัน 3 ประเภท คือ …


- for loop
- while loop
- do-while loop

while loop
เปนคําสั่งสําหรับการทําการวนซ้ําแบบตรวจสอบกอนหนา (pretest) มีการทํางานคลายกับ for loop แต
ตางกันตรงที่ while loop ไมตองมีการกําหนดคาเริ่มตนใหตัวควบคุมการทําวนซ้ํากอนการทํางาน

รูปแบบของ while loop

่ ){
While ( สวนที1
สวนที่2
}

สวนที่1 สวนของเงื่อนไข เปนคําสั่งที่ใชในการตรวจสอบเงื่อนไขการทําวนซ้าํ วาเปนจริงหรือเท็จ


ถาเปนจริงจะทําการวนซ้ําตอไป จนกวาเงื่อนไขจะเปนเท็จ
สวนที่2 สวนของ loop body เปนชุดของคําสั่งที่ถูกทํางานในการวนซ้ํา จนกวาเงือ ่ นไขจะเปนเท็จ

6
ตัวอยางการใช while loop

1.
i=1;
while ( i<10 ) {
printf( “%d\n”, i );
i += 2;
}
เปนสวนของโปรแกรมพิมพเลขคี่ที่อยูร ะหวาง 1 ถึง 10
1. กําหนดคา i = 1
2. ตรวจสอบวา i นอยกวา 10 หรือไม ถาไม ใหหยุด
ถาใช ใหพิมพคา I พรอมขึ้นบรรทัดใหม
3. เพิ่มคา i ทีละ 2 หนวย แลวกลับไปทําที่ขอ 2

2.
scanf( “%f”, &score );
while( score>=0 && score<=100 ){
if(score>50)
printf(“Pass\n”);
else printf(“Fail\n”)
scanf( “%f”, &score )
}
เปนสวนของโปรแกรมแสดงการสอบผานหรือสอบตก
1. อานขอมูลจากแปนพิมพ ใสในตัวแปร score
2. ตรวจสอบ 0 < score < 100 ถาไม หยุดการวนซ้ํา
3. ถาใช ใหตรวจสอบวา score > 50 หรือไม ถาใช ใหพิมพคําวา Pass
ถาไมใช ใหพิมพคําวา Fail
4. อานขอมูล score ใหมแลวกลับไปทําขอที่ 2

do-while loop
เปนคําสั่งสําหรับการทําการวนซ้ําแบบตรวจสอบมีหลัง (post-test) มีการทํางานคลายกับ while loop
แตสวนทีต ่ นไขกอน คือ จะทํางานในสวนของ loop
่ างกันคือ ในการทํางานครั้งแรก จะไมมีการเช็คเงือ
body กอน 1 ครั้ง แลวจึงมาเช็คเงื่อนไขที่ while อีกที ~

รูปแบบของ while loop

do {
สวนที่1
} while ( สวนที่2 )

สวนที่1 สวนของ loop body เปนชุดของคําสั่งที่ถูกทํางาน ครั้งแรก และครั้งตอ ๆ ไป หากเงื่อนไขใน


while ถูก
สวนที่2 สวนของเงื่อนไข เปนคําสั่งที่ใชในการตรวจสอบเงื่อนไขการทําวนซ้าํ วาเปนจริงหรือเท็จ
ถาเปนจริงจะทําการวนซ้ําทํางานใน do ตอไป จนกวาเงื่อนไขจะเปนเท็จ

*** สังเกตไดวา do while คลายกันกับ while


เพียงแต do while ทํางานตามคําสั่งที่เราเขียนไวกอนอยางนอย 1 ครั้งนั่นเอง

7
ตัวอยางการใช do-while loop

i=1;
do {
printf( “%d\n”, i );
i += 2;
} while ( i<10 )
เปนสวนของโปรแกรมพิมพเลขคี่ที่อยูร ะหวาง 1 ถึง 10
1. กําหนดคา i = 1
2. พิมพคา i พรอมขึ้นบรรทัดใหม
3. เพิ่มคา i ทีละ 2 หนวย
4. ตรวจสอบวา i นอยกวา 10 หรือไม ถาไม ใหหยุด
ถาใช ใหกลับไปทําที่ขอ 2

-----

for loop
เปนการทําการวนซ้ําแบบกอนหนา (pretest) คือ การตรวจสอบเงื่อนไขกอน จึงทํางานใน statement
นั้น ...

รูปแบบของ for loop

for ( สวน1 ; สวน2 ; สวน4 ) {


สวน 3
}

สวน 1 กําหนดคาเริ่มตนของดรรชนีทใี่ ชควบคุม loop


สวน 2 เงื่อนไขที่ใชตรวจสอบคาของดรรชนี --- ถาดรรชนีคานอกเหนือจากเงื่อนไข
สวน 3 สวนของ loop body เปนชุดคําสั่งทีถ ่ ูกทําในการทําวนซ้ําจนกวาเงื่อนไขจะไมเปนจริง
สวน 4 คําสั่งที่ใชเพิ่มคา หรือลดคาดรรชนี หลังจากทํางานในสวนของ loop body แลว

ความแตกตางระหวาง i++ และ ++i

i++ และ ++i จะมีความหมายใกลเคียงกันมาก .. > < !!!


จะแตกตางเพียง การจัดลําดับในการคํานวณ เมื่อตองนําไปใชกับตัวแปรตัวอื่น ~

A = 10;
C = A++; // A= 11, C = 10

A = 10;
C = ++A; // A = 11, C = 11

A = 10;
C = A--; // A = 9, C = 10

A = 10;
C = --A; // A = 9, C = 9

8
ตัวอยางการใช for loop

1.
for ( i=1; i<10; i+=2 ){
printf( “%d\n”, i );
}
เปนสวนของโปรแกรมพิมพเลขคี่ที่อยูร ะหวาง 1 ถึง 10
1. กําหนดคา i = 1
2. ตรวจสอบวา I นอยกวา 10 หรือไม ถาไม ใหหยุด
3. ถาใช ใหพิมพคา i พรอมขึ้นบรรทัดใหม
4. เพิ่มคา i ทีละ 2 หนวย แลวกลับไปทําที่ขอ 2
-----
2.
count = 0;
scanf( “%f”, &score);
for (; score>=0 && score<=100;)
if(score>50)
printf(“Pass\n”);
else printf(“Fail\n”);
count += 1;
scanf( “%f”, &score);
}
เปนสวนของโปรแกรมแสดงการสอบผานหรือสอบตก
1. กําหนด count = 0 ซึ่งเก็บจํานวนคะแนนที่ปอ  นทั้งหมด
2. อานขอมูลจากแปนพิมพ ใสในตัวแปร count
3. ถา 0 < score < 100 ใหทําการวนซ้ํา
4. ถา score > 50 พิมพคําวา Pass มิฉะนั้นพิมพคําวา Fail
5. เพิ่มจํานวนที่อยูใน count อีก 1 หนวย
6. อานขอมูล score ใหมแลวกลับไปทําขอ 3

Arrays
ตัวแปรแถวลําดับ หรือ Array คือ การเก็บขอมูลประเภทเดียวกันจํานวนมาก เพื่อใหงายตอการ
นํามาประมวลผล
เชน...
การเก็บขอมูลคะแนนสอบของนักเรียน 100 คน หากเปนการประกาศขอมูลแบบปกติ จะตอง
ประกาศตัวแปร score1, score2, score3, …, score100 เพื่อเก็บคาคะแนนของนักเรียนแตละคน ซึ่ง
จะทําใหนํามาใชงานยุงยาก อีกทั้ง ตองรูช
 ื่อของตัวแปรนั้น ๆ ดวย
แต.. หากเปนการใชอาเรยในการเก็บขอมูล สามารถทําไดโดยการประกาศตัวแปรเพียงครั้งเดียว
int score [100];
โดยการอางอิงถึงขอมูลที่เก็บคาไว ก็ทําไดโดยการระบุ index ซึ่งในที่นี้ จะตองมีการเก็บขอมูล
ที่เปนจํานวนเต็ม เริ่มจาก score[0], score[1], score[2], … จนถึง score[99]

9
1. อาเรยหนึ่งมิติ

อาเรยหนึ่งมิติ จะประกอบไปดวย ชื่อของอาเรย และจํานวนสมาชิก โดยเริ่มนับจาก index ที่ 0


ถึง n-1
รูปแบบของอาเรย 1 มิติ คือ
type-declaration variable_name[SIZE];
℘ type-declaration ชนิดของตัวแปร --- int, short, float, char เปนตน
℘ variable_name ชื่อของตัวแปรแถวลําดับ
℘ SIZE จํานวนสมาชิกของอาเรยทั้งหมด

ตัวอยางของอาเรย
double v[20]; ตัวแปรแถวลําดับชื่อ v ประเภทจํานวนจริงความจุสูงจํานวน 20 ตัว
const int max = 40; กําหนดคาคงตัว max = 40 และสรางอาเรยชอ ื่ score ประเภท
จํานวนจริง
double score[max]; ความจุจํานวน max ตัว
#define MAX 20 กําหนดใหมีการแทนคา MAX = 20 และสรางอาเรยชื่อ score
ประเภท
double score[MAX]; จํานวนจริง ความจุจํานวน MAX ตัว
หลังจากการสรางอาเรยแลว ตองกําหนดคาเริม
่ ตนใหคาตัวแปรดวย เพราะการเรียกใช
ตัวแปรโดยไมมีการกําหนดคาเริ่มตน จะทําใหไดคําตอบซึ่งไมสามารถคาดการณได การ
กําหนดคาเริ่มตนจะใช loop โดยมี index ควบคุม loop
ดังตัวอยาง
const int MAX = 40; // ประกาศคาคงตัว MAX = 40
int i; // ประกาศตัวแปร i ชนิดจํานวนเต็ม เพื่อใชเปน
index
float score[max]; // สรางอาเรยชนิดจํานวนจริง ความจุ MAX ตัว
for( i=0; i<MAX; i++) // วน loop ตั้งแตรอบที่ i = 0 ถึง i = 39
score[i] = 0; // กําหนดคาเริม
่ ตนให score ที่ index ที่ i เปน
0
2. อาเรยหลายมิติ

ในการแกปญหาทางคณิตศาสตรมักพบวา อาจตองมีเก็บขอมูลในลักษณะของเมทริกซ
--- ทั้ง row และ column ซึ่งการใชอาเรย 1 มิติ อาจจะไมเพียงพอตอการคํานวณเมทริกซ
ดังนั้นเพื่อใหผใู ชงานเกิดความสะดวก ภาษาซีจึงมี อาเรย 2 มิติ เพื่อสนับสนุนการกําหนดตัว
แปร
รูปแบบอาเรยหลายมิติ คือ
type-declaration variable_name[DIM1][DIM2];
℘ type-declaration ชนิดของตัวแปร --- int, short, float, char เปนตน
℘ variable_name ชื่อของตัวแปรที่ใชอางถึง
℘ DIM1 จํานวนสมาชิกในมิติแรก --- row
℘ DIM2 จํานวนสมาชิกในมิติทส ี่ อง --- column
** การสรางอาเรย 3 มิติ หรือมากกวา ก็จะใชหลักการเดียวกัน โดยเพิ่มวงเล็บระบุ
ขนาดฃผของมิติเพิ่มเขาไป

10
เชน... ตารางหมากรุกที่มีขนาด 8x8 ตัวเลขแรก บอกถึงจํานวน row
ตัวแรกหลัง บอกถึงจํานวน column

[0] [1] [2] [3] [4] [5] [6] [7]

[0]

[1]

[2] ♫

[3]

[4]

[5]

[6]

[7]

การอางอิงถึงเซลลในแตละเซลล ในอาเรยทําไดโดยการระบุ index เชน...


cross[2][3] อางอิงถึงเซลลทม
ี่ ีเครื่องหมายตัวโนต ♫ อยางในตารางดานบนนี้

ตัวอยางโปรแกรม...
#include <stdio.h>
#define ROW 4
#define COL 5

int main(void) {
int r, c;
int arr[ROW][COL];
for( r=0; r<ROW; r++ ) {
for( c=0; c<COL; c++ ) {
arr[r][c] = r*c;
}
}
for ( r=0; r<ROW; r++ ){
for( c=0; c<COL; c++ ){
printf(“%d\n”,arr[r][c]);
}
printf(“\n”);
}
return 0;
}

11
โปรแกรมมีการทํางาน ดังนี.้ ..
1. ประกาศคาคงตัว ROW = 4 และ COL = 5
2. ประกาศตัวแปร r, c เพื่อใชในการระบุ index ของอาเรย
3. สรางตัวแปร arr เปนอาเรย 2 มิติ ขนาด 4x5 เพื่อใชในการเก็บคาของเมทริกซ
4. วน loop เพื่อกําหนดคาของเมทริกซดวยผลคูณของ index row และ column
5. วน loop เพื่อพิมพคาของเมทริกซ arr ออกมาทีละแถว
6. จบการทํางาน และสงคา 0 ออกไป

แบบฝกหัด เรื่อง If else statement

นางสาวสุดสวยเกิดความกังวลเรื่องน้ําหนักตัวของตนจึงอยากรูวา ตัวเองอวนไปรึปาว จึงขอรอง


ใหนองๆ ชวยเขียนโปรแกรมรับคาน้ําหนักเปนกิโลกรัม และความสูงเปนเมตร จากนั้นจึงคํานวณคา BMI
โดยมีสูตรในการหา คือ

BMI = weight (kg)/height2 (m)

และมีเกณฑดังนี้
• Too Thin: นอยกวา 18.5 (<18.5)
• Balance: มากกวาหรือเทากับ 18.5 แตนอยกวา 25 (≥18.5 แต <25)
• Over weight: มากกวาหรือเทากับ 25 แตนอ  ยกวา 30 (≥25 แต <30)
• Fat: มากกวาหรือเทากับ 30 แตนอยกวา 40 (≥30 แต <40)
• Dangerous: มากกวาหรือเทากับ 40 (≥40)

และทายสุดใหมีการแสดงคา BMI พรอมบอกวาอยูในเกณฑใด

12
แบบฝกหัดเรื่อง Switch Case

นางสาวสุดสวยยังคงกังวลในน้าํ หนักของตัวเองจนเก็บไปฝนวาไดเดินทางออกนอกโลก ไปยัง


ยังดาว 3 ดวงดาว

ดาวแรก ชื่อ ดาว gug มีแรงโนมถวงเปน1.6 เทาของโลก


ดาวดวงทีส่ อง ชื่อ ดาว gig มีแรงโนมถวงเปน 0.8 เทาของโลก
่ าม ชื่อ ดาว gag มีแรงโนมถวงเปน 1.24 ของโลก
ดาวดวงทีส

นางสาวสุดสวยจึงอยากทราบวาตนเองจะมีน้ําหนักเทาใด เมื่ออยูบนดาวดังที่กลาวมาขางตน
จึงอยากขอใหนองๆ ชวยเขียนโปรแกรมรับคาน้ําหนักของนางสาวสุดสวย และจากนั้นใช
Switch case เพื่อเลือกดาวทีต ่ องการทราบน้าํ หนัก จากนั้นใหแสดงน้ําหนักของนางสาวสุดสวยบนดาวที่
เลือกนั้น ขอใหนองๆ ชวยนางสาวสุดสวยดวย

แบบฝกหัด Do…while, while

หลังจากนางสาวสุดสวยกลับจากเที่ยวดาวตางๆ ในยามราตรี ก็ยังไมเลิกวิตกจริตเรื่องน้ําหนัก


ตัวเอง จึงไลถามเพื่อนๆ วาแตละคนมีนา้ํ หนักเทาไร (เปนกิโลกรัม) แลวมาหาคาเฉลี่ยเพื่อนํามา
เปรียบเทียบกับตน จึงอยากใหนองๆ ชวยเขียนโปรแกรมทีม่ ีการรับคาน้ําหนักของเพื่อนๆ นางสาวสุดสวย
โดยที่

“สามารถเขียนไดทั้ง while loop หรือ do … while loop แลวแตความถนัด ขอใหรับคา


น้ําหนักมาเรื่อยๆ จนกวา จะใสคา input เปนเลข 0ถา input เปนเลข 0 เมื่อไร ใหทําการหยุดการวนลูป
แลวคํานวณหาคาเฉลีย ่ แลวแสดงผลออกมาทางหนาจอ”

แบบฝกหัด For Loop , Array

นางสาวสุดสวยยังคงไมพึงพอใจในน้ําหนัก และรูปรางของตนเอง จึงตั้งใจวาจะออกกําลังกาย


เปนเวลาหนึ่งอาทิตย (7 วัน)

พี่อยากใหนองๆ ชวยนางสาวสุดสวยคํานวณแคลอรีท ่ ี่ใชในการออกกําลังกายทั้งเจ็ดวัน โดย


เขียนโปรแกรม วนลูป for 7 รอบ เพื่อรับรูปแบบการออกกําลังกาย และจํานวนชั่วโมง (* Optional อาจ
เช็คดวยวาออกไมเกินวันละ 3 ชั่วโมง ไมงั้นเดี๋ยวจะตายกอนผอม *) ในแตละวัน วันละหนึ่งกิจกรรม เมือ ่
วนครบ ใหแสดงจํานวนแคลอรี่ทั้งหมดที่นางสาวสุดสวยออกกําลังไปทั้งหมดในหนึ่งอาทิตย โดยมีการ
เก็บคาจํานวนแคลอรีท ่ ี่ใชในแตละวันลงใน array 1 มิติ แลวแสดงผลออกมาพรอมกับผลรวมของแคลอรี่
ทั้งหมดทีใ่ ชใน 1 สัปดาห

โดยกิจกรรมการออกกําลังกายที่นางสาวสุดสวยจะเลือกไดนน
ั้ มีดังตอไปนี้

ตารางการเผาผลาญแคลอรี่ของแตละกิจกรรม

กิจกรรม ระยะเวลา แคลอรี่


วายน้า ํ 1 ชั่วโมง 650
วิ่ง 1 ชั่วโมง 1,000
ขี่จักรยาน 1 ชั่วโมง 500
ตีแบดฯ 1 ชั่วโมง 380

13

You might also like