41
บทปฏิบัติการ การจําลองความคิด และการเขียนโปรแกรมภาษาซีเบื้องตน โดย สาขาวิชาวิทยาการคอมพิวเตอร โรงเรียนมหิดลวิทยานุสรณ

บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

บทปฏิบัติการ

การจําลองความคิด

และการเขียนโปรแกรมภาษาซีเบื้องตน

โดย

สาขาวิชาวิทยาการคอมพิวเตอร

โรงเรียนมหิดลวิทยานุสรณ

Page 2: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

คํานํา

บทปฏิบัติการเรื่องการจําลองความคิดและการเขียนโปรแกรมภาษาซีเบื้องตนท่ีจัดทําข้ึนนี้ เพ่ือใชเปน

เครื่องมือประกอบการจัดกิจกรรมการเรียนการสอนสําหรับผูเรียนรายวิชาหลักการแกปญหาและการเขียน

โปรแกรมภาษาซี หรือรายวิชาท่ีเก่ียวของ บทปฏิบัติการนี้มีท้ังสิ้น 8 บทปฏิบัติการยอย เก่ียวกับกระบวนการ

แกปญหาและรหัสเทียม ผังงาน โครงสรางของภาษาซี คําสั่งรับคาและแสดงผล โครงสรางแบบลําดับ

โครงสรางแบบมีทางเลือก และโครงสรางแบบทําซํ้า

ผูจัดทํามีความมุงหวังใหผูเรียนไดรับความรูและทักษะเก่ียวกับการจําลองความคิดและการเขียน

โปรแกรมภาษาซีเบื้องตน อีกท้ังทําใหการจัดกิจกรรมการเรียนการสอนของครูผูสอนประสบผลสําเร็จตาม

จุดมุงหมายของหลักสูตร

สาขาวิชาวิทยาการคอมพิวเตอร

โรงเรียนมหิดลวิทยานุสรณ

ผูจัดทํา

Page 3: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

สารบัญ

บทปฏิบัติการท่ี 1 กระบวนการแกปญหาและรหัสเทียม 1

บทปฏิบัติการท่ี 2 ผังงาน(1) 3

บทปฏิบัติการท่ี 3 ผังงาน(2) 11

บทปฏิบัติการท่ี 4 โครงสรางของภาษาซี คําสั่งรับคาและแสดงผล 14

บทปฏิบัติการท่ี 5 โครงสรางแบบลําดับ 18

บทปฏิบัติการท่ี 6 โครงสรางแบบมีทางเลือก(1) 21

บทปฏิบัติการท่ี 7 โครงสรางแบบมีทางเลือก(2) 28

บทปฏิบัติการท่ี 8 โครงสรางแบบทําซํ้า 31

โจทยฝกหัด 37

Page 4: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

1

บทปฏิบัติการท่ี 1

กระบวนการแกปญหาและรหัสเทียม

ตอนท่ี 1 จงแสดงการวิเคราะหและกําหนดรายละเอียดของปญหาตอไปนี้ และเขียนรหัสเทียม (Pseudo code)

1. การหาผลบวกของจํานวนเต็ม 3 จํานวน แลวแสดงผลลัพธทางจอภาพ

(1) ขอมูลเขา (input)

(2) ขอมูลออก (output)

(3) วิธีประมวลผล (process)

รหัสเทียม (Pseudo code)

2. การหาปริมาตรทรงกระบอก แลวแสดงผลลัพธทางจอภาพ

(1) ขอมูลเขา (input)

(2) ขอมูลออก (output)

(3) วิธีประมวลผล (process)

รหัสเทียม (Pseudo code)

Page 5: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

2

3. การหาคาสูงสุดระหวางเลขจํานวนเต็ม 2 ตัวใดๆ แลวแสดงผลลัพธทางจอภาพ

(1) ขอมูลเขา (input)

(2) ขอมูลออก (output)

(3) วิธีประมวลผล (process)

รหัสเทียม (Pseudo code)

4. การหาคาสูงสุดระหวางเลขจํานวนเต็ม 3 ตัวใดๆ แลวแสดงผลลัพธทางจอภาพ

(1) ขอมูลเขา (input)

(2) ขอมูลออก (output)

(3) วิธีประมวลผล (process)

รหัสเทียม (Pseudo code)

Page 6: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

3

บทปฏิบัติการท่ี 2

ผังงาน(1)

ตอนท่ี 1 พิจารณาขอความทางขวามือท่ีกําหนดให แลวนําไปเติมลงในสัญลักษณผังงานใหถูกตอง

1.

หมายเหตุ: การเขียนผังงานเปนภาษาไทย

แสดงผล x x 10

2.

หมายเหตุ: การเขียนผังงานเปนภาษาไทย

Area 3.14*r*r จบ รัศมี r แสดงผล Area เริ่มตน

เริ่มตน

จบ

Page 7: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

4

3.

หมายเหตุ: การเขียนผังงานเปนภาษาองักฤษ

Start End X > Y Input X and Y X Y Output X

คําถามยอยสําหรับตอนท่ี 1 ขอ 1 - 3

1) ผังงานในขอท่ี 1 และ 2 เปนผังงานท่ีมีโครงสรางแบบ

เพราะ

2) ผังงานในขอท่ี 3 เปนผังงานท่ีมีโครงสรางแบบ

3) สัญลักษณผังงานใดบาง ท่ีมีลูกศรออกจากสัญลักษณมากกวา 1 เสนเสมอ

4) ถากําหนดขอมูลเขา โดยให X มีคาเทากับ 1 และ Y มีคาเทากับ 2

เม่ือทํางานตามข้ันตอนของผังงานในขอท่ี 3 ผลลัพธท่ีได คือ

Yes No

Page 8: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

5

ตอนท่ี 2 จงเขียนผังงานใหสอดคลองกับรหัสเทียม (Pseudo code) ท่ีกําหนดให

1. การหาผลบวกของจํานวนเต็ม 2 จํานวน แลวแสดงผลออกทางจอภาพ รหัสเทียม

เริ่มตน รับเลขจํานวนเต็ม A และ B C A+B แสดงผล C ออกทางจอภาพ จบ

ผังงาน (Flowchart)

Page 9: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

6

2. การหาพ้ืนท่ีสามเหลี่ยมมุมฉาก แลวแสดงผลออกทางจอภาพ รหัสเทียม

เริ่มตน รับคาความยาวฐาน รับคาความสูง พ้ืนท่ี 0.5*พ้ืนท่ีฐาน*ความสูง แสดงผลพ้ืนท่ีออกทางจอภาพ จบ

ผังงาน (Flowchart)

Page 10: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

7

3. การหาคาสูงสุดระหวางเลขจํานวนเต็ม 2 ตัวใดๆ แลวแสดงผลลัพธทางจอภาพ รหัสเทียม

begin Input A and B if A>B show A else show B end

ผังงาน (Flowchart)

Page 11: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

8

4. การหาคาเฉลี่ยของจํานวนเต็ม 2 จํานวน และถาคาเฉลี่ยมากกวา 10 จะแสดงผลบวกของจํานวนเต็ม 2 จํานวนนั้น

ออกทางจอภาพ รหัสเทียม

begin Input A and B Sum A+B Average Sum/2 if Average > 10 show Sum end

ผังงาน (Flowchart)

Page 12: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

9

ตอนท่ี 3 จงเขียนผังงานเพ่ือแกปญหาโจทยท่ีกําหนด

สถานีบริการน้ํามัน “น้ํามันไทย” มีโปรโมชั่นสําหรับลูกคาท่ีมาใชบริการเติมน้ํามัน ดังนี้

เติมน้ํามันครบทุกๆ 200 บาท ไดรับน้ําดื่ม 1 ขวดลิตร

และถาเติมน้ํามันตั้งแต 1,000 บาทข้ึนไป รับหมอนโดราเอมอนเพ่ิมอีก 1 ลูก

นอกจากนี้สถานีบริการน้ํามัน ไมมีนโยบายขายน้ํามันแกลูกคาเกิน 5,000 บาท เนื่องจากอาจเปนการสงเสริมใหมีการ

กักตุนน้ํามันได จากขอมูลขางตน จงเขียนผังงานคิดโปรโมชั่นสําหรับลูกคา โดยรับคาน้ํามันท่ีลูกคาจาย แลวแสดง

ขอความของสมนาคุณท่ีลูกคาจะไดรับ

Page 13: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

10

บทปฏิบัติการท่ี 3

ผังงาน(2)

ตอนท่ี 1 เติมขอความทางซายมือลงในสัญลักษณผังงาน และตอบคําถามใหถูกตอง

1.

Start End Show A A < 5 A A+1

พิจารณาผังงานขอ 1

1) เปนโครงสรางผังงานแบบ

2) เม่ือทํางานเสร็จสิ้น จะแสดงผลออกทางจอภาพ โดยผลลัพธท่ีได คือ

3) ถาเปลี่ยนจาก A 1 เปน A 5

เม่ือทํางานเสร็จสิ้น ผลลัพธท่ีไดคือ

A 1

No

Yes

Page 14: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

11

2.

Start End Show A A < 5 A A+1

พิจารณาผังงานขอ 2

1) เปนโครงสรางผังงานแบบ

2) เม่ือทํางานเสร็จสิ้น จะแสดงผลออกทางจอภาพ โดย ผลลัพธท่ีได คือ

3) ถาเปลี่ยนจาก A 1 เปน A 5

เม่ือทํางานเสร็จสิ้น ผลลัพธท่ีไดคือ

พิจารณาผังงานขอ 1 และ 2

1) เม่ือเปรียบเทียบโครงสรางผังงานระหวางขอ 1 และขอ 2 แลว มีความแตกตางกัน คือ

A 1

No

Yes

Page 15: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

12

ตอนท่ี 2 จงเขียนผังงานเพ่ือแกปญหาโจทยท่ีกําหนด

1. จงเขียนผังงานเพ่ือตรวจสอบวาตัวเลข N ท่ีรับเขามานั้นมีคามากกวา 100 หรือไม ถามากกวาใหแสดง N ออกทาง

จอภาพ แตถาไมมากกวา 100 ก็จะวนรับตัวเลข N ไปเรื่อยๆ

Page 16: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

13

2. จงเขียนผังงานเพ่ือแสดงผลรวมของตัวเลข 1+3+5+7+ … + N ออกทางจอภาพ โดยท่ี N เปนจํานวนค่ี

Page 17: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

14

บทปฏิบัติการท่ี 4

โครงสรางของภาษาซี คําส่ังรับคาและแสดงผล

ตอนท่ี 1 ปฏิบัติตามข้ันตอนท่ีกําหนดให พิจารณาผลลัพธและตอบคําถามใหถูกตอง

1. สรางโฟลเดอรสําหรับจัดเก็บไฟล source code

2. เขียนโปรแกรม แลวบันทึกไฟล source code ลงในโฟลเดอรท่ีสรางไวแลว โดยตั้งชื่อวา lab4-1-1.cpp

1 #include<stdio.h> 2 int main() 3 { printf(“Hello world”); 4 return 0; 5 } เม่ือสั่งรันโปรแกรมแลว

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) พิจารณาไฟลในโฟลเดอรท่ีสรางไวในขอ 1. พบวามีท้ังสิ้น ไฟล

3) ไฟล source code คือไฟลท่ีมีนามสกุลเปน

4) ถาลบคําสั่ง #include<stdio.h> ในบรรทัดท่ี 1 แลวสั่งรันโปรแกรม ผลลัพธท่ีไดคือ

5) คําสั่ง #include<stdio.h> เก่ียวของกับคําสั่ง printf(“Hello world”); อยางไร

6) ถาเปลี่ยนจาก main เปน main1 หรือตั้งชื่ออ่ืน ผลลัพธท่ีไดจะเปนอยางไร และเพราะเหตุใด

ตอนท่ี 2 จงเขียนโปรแกรมตามท่ีกําหนดให และตอบคําถามใหถูกตอง

1.

1 //lab4-2-1.cpp 2 #include<stdio.h> 3 int main() 4 { printf(“Hello world”); 5 printf(“Bye Bye”); 6 return 0; 7 }

จากโปรแกรมดานบน

1) // ท่ีปรากฏในบรรทัดท่ี 1 คือ

Page 18: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

15

2) ผลลัพธท่ีแสดงออกทางจอภาพคือ

3) ถาตองการใหแสดงผลทางจอภาพ ดังนี้

Hello world Bye Bye

ควรแกไข source code ดังนี้

#include<stdio.h> int main() { return 0; }

2.

1 /*lab4-2-2.cpp 2 Program to display an integer, a floating point value, and a character*/ 3 #include<stdio.h> 4 int main() 5 { printf(“%d\n%f\t%c”, 5, 10.123, ‘A’); 6 return 0; 7 }

จากโปรแกรมดานบน

1) /* …. */ ท่ีปรากฏในบรรทัดท่ี 1 และ 2 คือ

2) ผลลัพธท่ีแสดงออกทางจอภาพคือ

3) แกไขคําสั่งในบรรทัดท่ี 5 ดังนี้ printf(“%d\n%.2f\t%c”, 5, 10.123, ‘A’);

ผลลัพธท่ีแสดงออกทางจอภาพคือ

Page 19: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

16

3.

1 // lab4-2-3.cpp 2 #include<stdio.h> 3 int main() 4 { char ch=’A’; 5 printf(“%c”, ch); 6 return 0; 7 }

จากโปรแกรมดานบน จงแทนท่ีคําสั่งในบรรทัดท่ี 5 ดวยคําสั่งอ่ืน เพ่ือใหโปรแกรมแสดงตัวแปร ch ออกทาง

จอภาพ

4. พิจารณาการประกาศตัวแปรและการกําหนดคาเริ่มตนตอไปนี้

int a=10, b=5;

float score=85.5;

char code=’$’;

จงเขียนคําสั่ง 1 คําสั่งเพ่ือแสดงผลลัพธออกทางจอภาพ ดังนี้

5 10 85.50$

5.

1 //lab4-2-4.cpp 2 #include<stdio.h> 3 int main() 4 { float x=10.5, y; 5 int a=5, b; 6 y = x+a; 7 printf(“x + a = %.3f”, y); 8 return 0; 9 }

จากโปรแกรมดานบน

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) ถาตองการใหแสดงผลทางจอภาพ ดังนี้

10.50 + 5 = 15.50 ควรแกไขคําสั่ง printf ในบรรทัดท่ี 7 ดังนี้

3) ในบรรทัดท่ี 6 เราสามารถเปลี่ยนเปนคําสั่ง b = x+a; ไดหรือไม เพราะเหตุใด

Page 20: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

17

6.

1 // lab4-2-4.cpp 2 #include<stdio.h> 3 int main() 4 { char ch; 5 scanf(“%c”, &ch); 6 printf(“%c”, ch); 7 return 0; 8 }

จากโปรแกรมดานบน จงแทนท่ีคําสั่งในบรรทัดท่ี 5 ดวยคําสั่งอ่ืน เพ่ือใหโปรแกรมรับตัวอักขระเก็บไวในตัวแปร ch

7. พิจารณาการประกาศตัวแปรตอไปนี้

int a, b, c;

float score;

char code;

จงเขียนคําสั่งรับขอมูลเขา ดังนี้

1) เขียนคําสั่ง 1 คําสั่ง เพ่ือรับขอมูลเขา เก็บไวในตัวแปร a, b และ c

2) เขียนคําสั่ง 1 คําสั่ง เพ่ือรับขอมูลเขา เก็บไวในตัวแปร score

3) เขียนคําสั่ง 1 คําสั่งเพ่ือรับขอมูลเขา เก็บไวในตัวแปร code โดยไมตองกดแปน Enter เม่ือสิ้นสุดการรับ

ขอมูล และขอมูลท่ีปอนจะปรากฏอยูบนจอภาพ

4) เขียนคําสั่ง 1 คําสั่งเพ่ือรับขอมูลเขา เก็บไวในตัวแปร code โดยตองกดแปน Enter เม่ือสิ้นสุดขอมูล และ

ขอมูลท่ีปอนจะไมปรากฏใหเห็นบนจอภาพ

5) เขียนคําสั่ง 1 คําสั่งเพ่ือรับขอมูลเขา เก็บไวในตัวแปร code โดยตองกดแปน Enter ทุกครั้งเม่ือสิ้นสุด

ขอมูล และขอมูลท่ีปอนจะปรากฏใหเห็นบนจอภาพ

Page 21: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

18

บทปฏิบัติการท่ี 5

โครงสรางแบบลําดับ

ตอนท่ี 1 จงเขียนโปรแกรมตามท่ีกําหนดให และตอบคําถามใหถูกตอง

1.

1 //lab5-1-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a, b, c; 5 printf(“Enter 2 number: ”); 6 scanf(“%d%d”, &a, &b); 7 c = a+b; 8 printf(“Output is %d”, ); 9 return 0;

10 }

จากโปรแกรมดานบน ควรเติมตัวแปรใดลงในชองวาง(บรรทัดท่ี 8) เพ่ือใหโปรแกรมแสดงผลบวกของเลขจํานวน

เต็ม 2 ตัวไดอยางถูกตอง

2.

1 //lab5-1-2.cpp 2 #include<stdio.h> 3 int main() 4 { float r; 5 printf(“Enter radius: ”); 6 scanf(“%f”, &r); 7 printf(“Circle area: %.2f”, ); 8 return 0; 9 }

จากโปรแกรมดานบน ควรเติมนิพจนใดลงในชองวาง (บรรทัดท่ี 7) เพ่ือใหโปรแกรมคํานวณและแสดงผลพ้ืนท่ี

วงกลมจากรัศมีท่ีปอนเขามาไดอยางถูกตอง

Page 22: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

19

ตอนท่ี 2 จงเขียนโปรแกรม

1. จงเขียนโปรแกรมใหสอดคลองกับผังงานท่ีกําหนดให

start

end

Show sum

sum n*(n+1)/2

Input n

Page 23: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

20

2. จงเขียนโปรแกรมคํานวณหาพ้ืนท่ีสี่เหลี่ยมใดๆ แลวแสดงผลออกทางจอภาพ

3. จงเขียนโปรแกรมแปลงอุณหภูมิจากองศาเซลเซียสเปนองศาฟาเรนไฮน

Page 24: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

21

บทปฏิบัติการท่ี 6

โครงสรางแบบมีทางเลือก(1)

ตอนท่ี 1 จงเขียนโปรแกรมตามท่ีกําหนดให และตอบคําถามใหถูกตอง

1.

1 //lab6-1-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a < 0) 6 { printf(“%d ”, a); 7 printf(“%d ”, b); 8 } 9 printf(“end”);

10 return 0; 11 }

จากโปรแกรมดานบน

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) ถาลบเครื่องหมาย { ในบรรทัดท่ี 6 และเครื่องหมาย } ในบรรทัดท่ี 7 ผลลัพธท่ีแสดงออกทางจอภาพคือ

2.

1 //lab6-1-2.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a > b) 6 printf(“%d ”, a); 7 else 8 printf(“%d ”, b); 9 return 0;

10 } จากโปรแกรมดานบน

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) ถาแกไขการกําหนดคา a ในบรรทัดท่ี 4 โดยเปลี่ยนให a= 10 ผลลัพธท่ีแสดงออกทางจอภาพคือ

3) ถาแกไขการกําหนดคา a ในบรรทัดท่ี 4 โดยเปลี่ยนให a= 2 ผลลัพธท่ีแสดงออกทางจอภาพคือ

ซ่ึงมาจากการทํางานของคําสั่ง printf ในบรรทัดท่ี

Page 25: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

22

4) จงแกไขโปรแกรมใหสามารถแสดงผลตามเง่ือนไขดังนี้

คาในตัวแปร a มากกวา b แสดงขอความวา “more than”

คาในตัวแปร a นอยกวา b แสดงขอความวา “less than”

คาในตัวแปร a เทากับ b แสดงขอความวา “equal”

#include<stdio.h> int main() { int a = 1, b = 2; return 0; }

Page 26: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

23

3.

1 //lab6-1-3.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a < b) printf(“%d ”, a); 6 else if(a != b) printf(“%d ”, a+b); 7 else if(b > 0) printf(“%d ”, b); 8 return 0; 9 }

จากโปรแกรมดานบน

สังเกตวา ขอบเขตของคําสั่ง if เปนดังนี้

1 //lab6-1-3.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a < b) printf(“%d ”, a); 6 else if(a != b) printf(“%d ”, a+b); 7 else if(b > 0) printf(“%d ”, b); 8 return 0; 9 }

จากโปรแกรมดานบน

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) ถาลบ else ในบรรทัดท่ี 6 ผลลัพธท่ีแสดงออกทางจอภาพคือ

ซ่ึงจะเห็นวา ขอบเขตของคําสั่ง if เปนดังนี้

1 //lab6-1-3.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a < b) printf(“%d ”, a); 6 if(a != b) printf(“%d ”, a+b); 7 else if(b > 0) printf(“%d ”, b); 8 return 0; 9 }

Page 27: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

24

3) ถาลบ else ในบรรทัดท่ี 6 และ 7 ผลลัพธท่ีแสดงออกทางจอภาพคือ

4) จงลากเสนเพ่ือแสดงขอบเขตของคําสั่ง if ท่ีเกิดจากการแกไขในขอ 3)

1 //lab6-1-3.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, b = 2; 5 if(a < b) printf(“%d ”, a); 6 if(a != b) printf(“%d ”, a+b); 7 if(b > 0) printf(“%d ”, b); 8 return 0; 9 }

ตอนท่ี 2 จงเขียนโปรแกรม

1. จงเขียนโปรแกรมใหสอดคลองกับผังงานท่ีกําหนดให

Start

Input X and Y

X > Y

X Y

End

Output X

Yes No

Page 28: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

25

2. จงเขียนโปรแกรมใหสอดคลองกับผังงานท่ีกําหนดให

Start

Input X and Y

X > Y

X Y

End

Output Y

Yes No

Output X

Y 10

Page 29: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

26

3. สถานีบริการน้ํามัน “น้ํามันไทย” มีโปรโมชั่นสําหรับลูกคาท่ีมาใชบริการเติมน้ํามัน ดังนี้

เติมน้ํามันครบทุกๆ 200 บาท ไดรับน้ําดื่ม 1 ขวดลิตร

และถาเติมน้ํามันตั้งแต 1,000 บาทข้ึนไป รับหมอนโดราเอมอนเพ่ิมอีก 1 ลูก

นอกจากนี้สถานีบริการน้ํามัน ไมมีนโยบายขายน้ํามันแกลูกคาเกิน 5,000 บาท เนื่องจากอาจเปนการสงเสริมใหมีการ

กักตุนน้ํามันได จากขอมูลขางตน จงเขียนโปรแกรมคิดโปรโมชั่นสําหรับลูกคา โดยรับคาน้ํามันท่ีลูกคาจาย แลวแสดง

ขอความของสมนาคุณท่ีลูกคาจะไดรับ

Page 30: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

27

Page 31: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

28

บทปฏิบัติการท่ี 7

โครงสรางแบบมีทางเลือก(2)

ตอนท่ี 1 จงเขียนโปรแกรมตามท่ีกําหนดให และตอบคําถามใหถูกตอง

1.

1 //lab6-1-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1; 5 switch(a) 6 { case 1: printf(“I ”); 7 case 2: printf(“II ”); 8 case 3: printf(“III ”); 9 case 4: printf(“IV ”);

10 default: printf(“error”); 11 } 12 return 0; 13 }

จากโปรแกรมดานบน

1) ผลลัพธท่ีแสดงออกทางจอภาพคือ

2) ถาแกไขคําสั่งในบรรทัดท่ี 4 โดยให a = 3 ผลลัพธท่ีแสดงออกทางจอภาพคือ

3) ถาแกไขคําสั่งในบรรทัดท่ี 4 โดยให a = 5 ผลลัพธท่ีแสดงออกทางจอภาพคือ

4) แกไขโปรแกรม โดยเพ่ิมคําสั่ง break ดังนี้

1 //lab6-1-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1; 5 switch(a) 6 { case 1: printf(“I ”); break; 7 case 2: printf(“II ”); break; 8 case 3: printf(“III ”); break; 9 case 4: printf(“IV ”); break;

10 default: printf(“error”); 11 } 12 return 0; 13 }

Page 32: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

29

พิจารณาโปรแกรมในขอยอยท่ี 4) แลวตอบคําถาม

5) ผลลัพธท่ีแสดงออกทางจอภาพคือ

6) ถาแกไขคําสั่งในบรรทัดท่ี 4 โดยให a = 3 ผลลัพธท่ีแสดงออกทางจอภาพคือ

7) ถาลบคําสั่ง break ในบรรทัดท่ี 6 ผลลัพธท่ีแสดงออกทางจอภาพคือ

8) แกไขโปรแกรม โดยเพ่ิมคําสั่ง break ดังนี้

1 //lab6-1-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1; 5 switch(a) 6 { case 1: 7 case 2: printf(“II ”); break; 8 case 3: 9 case 4: printf(“IV ”); break;

10 default: printf(“error”); 11 } 12 return 0; 13 }

พิจารณาโปรแกรมในขอยอยท่ี 8) แลวตอบคําถาม

9) ผลลัพธท่ีแสดงออกทางจอภาพคือ

10) ถาแกไขคําสั่งในบรรทัดท่ี 4 โดยให a = 3 ผลลัพธท่ีแสดงออกทางจอภาพคือ

11) โปรแกรมจะแสดงขอความ II เม่ือตัวแปร a มีคาเปน

12) โปรแกรมจะแสดงขอความ IV เม่ือตัวแปร a มีคาเปน

13) โปรแกรมจะแสดงขอความ error เม่ือตัวแปร a มีคาเปน

14) คําสั่ง break มีความสําคัญอยางไร

Page 33: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

30

2. จงเขียนโปรแกรมโดยใชชุดคําสั่ง switch เพ่ือตรวจสอบคาเกรดท่ีผูใชปอน และเลือกพิมพขอความตอไปนี้ตามคา

ของเกรด

เกรด A หรือ a แสดงขอความ Excellent.

เกรด B หรือ b แสดงขอความ You are good.

เกรด C หรือ c แสดงขอความ You should practice more.

นอกเหนือจากนี้ แสดงขอความ Incorrect character.

Page 34: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

31

บทปฏิบัติการท่ี 8

โครงสรางแบบวนซํ้า

ตอนท่ี 1 จงเขียนโปรแกรมใหสอดคลองกับผังงานท่ีกําหนดให

1. จงเขียนโปรแกรมใหสอดคลองกับผังงาน โดยใชคําสั่ง while

Start

A = 1

A < 5

Show A

End

A A+1

Yes

No

Page 35: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

32

2. จงเขียนโปรแกรมใหสอดคลองกับผังงานในขอ 1 โดยใชคําสั่ง for

Page 36: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

33

3. จงเขียนโปรแกรมใหสอดคลองกับผังงาน

Start

A = 1

A < 5

End

Show A

A = A+1

Yes

No

Page 37: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

34

ตอนท่ี 2 จงเติมนิพจนหรือตัวแปรลงใน Source code เพ่ือใหไดผลลัพธตามท่ีกําหนด

1. บรรทัดที่ Source code ผลลัพธ

1 // lab8-2-1.cpp 1 2 3 4 5 6 7 8

2 #include<stdio.h> 3 int main() 4 { int i; 5 for( ; ; ) 6 printf(“%d \n”, i+1); 9 return 0; 10 }

2. บรรทัดที่ Source code ผลลัพธ

1 // lab8-2-2.cpp 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8

2 #include<stdio.h> 3 int main() 4 { int i, j; 5 for( i = 1; ; i++) 6 { for( ; ; ) 9 printf(“%d ”, j); 10 printf(“\n”); 11 } 12 return 0; 13 }

3. บรรทัดที่ Source code ผลลัพธ

1 // lab8-2-3.cpp 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 6 6 6 6 6 6 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1

2 #include<stdio.h> 3 int main() 4 { int i, j; 5 for( ; ; ) 6 { for( ; ; ) 9 printf(“%d ”, i); 10 printf(“\n”); 11 } 12 return 0; 13 }

Page 38: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

35

ตอนท่ี 3 จงเขียนโปรแกรมเพ่ือแกปญหาโจทยท่ีกําหนดให

1.

1 // lab8-3-1.cpp 2 #include<stdio.h> 3 int main() 4 { int a = 1, i; 5 for(i=0 ; i<10 ; i++) 6 { a += 2; 7 printf(“%d ”, a); 8 } 9 return 0;

10 }

จงเขียนโปรแกรมดวยคําสั่ง while เพ่ือใหไดผลลัพธเชนเดียวกันกับโปรแกรมท่ีกําหนดใหดานบน

Page 39: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

36

2. จงเขียนโปรแกรมเพ่ือตรวจสอบวาตัวเลข N ท่ีรับเขามานั้นมีคามากกวา 100 หรือไม ถามากกวาใหแสดง N ออก

ทางจอภาพ แตถาไมมากกวา 100 ก็จะวนรับตัวเลข N ไปเรื่อยๆ

3. จงเขียนผังงานเพ่ือแสดงผลรวมของตัวเลข 1+3+5+7+ … + N ออกทางจอภาพ โดยท่ี N เปนจํานวนค่ี

Page 40: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

37

โจทยฝกหัด

1. เขียนโปรแกรมคํานวณหาปริมาตรทรงกระบอกใดๆ 2. เขียนโปรแกรมคํานวณหาพ้ืนท่ีรูปสี่เหลี่ยมใดๆ 3. เขียนโปรแกรมคํานวณเกรด (A – F) จากคะแนนเต็ม 100 ท่ีผูใชปอนเขามา 4. เขียนโปรแกรมคํานวณหาคามากท่ีสุดของตัวเลข 3 ตัวท่ีผูใชปอนเขามา 5. เขียนโปรแกรมแสดงคาดัชนีมวลกาย(BMI)ของผูใช แลวแปลผลคา BMI ท่ีได (สืบคนขอมูลเพ่ิมเติมจาก

อินเทอรเน็ต) 6. เขียนโปรแกรมคํานวณคาโดยสารจากระยะทางท่ีผูใชปอนเขามา (หนวยเปนกิโลเมตร) แลวแสดงคาโดยสารท่ี

ตองจายออกทางจอภาพ โดยมีการคํานวณคาโดยสารตามเง่ือนไขดังนี้ ถาระยะทางไมเกิน 5 กิโลเมตร คิดคาโดยสาร 10 บาท

ถาระยะทางมากกวา 5 กิโลเมตร แตไมเกิน 10 กิโลเมตร คิดคาโดยสาร 15 บาท

ถาระยะทางมากกวา 10 กิโลเมตร คิดคาโดยสาร 20 บาท

7. เขียนโปรแกรมรับคาจํานวนนาทีท่ีโทร แลวคํานวณคาโทรศัพท โดยมีเง่ือนไข คือ โทรฟรี 600 นาทีตอเดือน จาย 300 บาท คาโทรสวนเกินนาทีละ 1.50 บาท (คิดคาโทรเปนนาที)

8. เขียนโปรแกรมคํานวณคาโดยสารจากระยะทางท่ีผูใชปอนเขามา (หนวยเปนกิโลเมตร) ตามเง่ือนไขดังนี้ ถาระยะทางไมเกิน 5 ก.ม. คิดคาโดยสาร 10 บาท

ถาระยะทางมากกวา 5 ก.ม. แตไมเกิน 10 ก.ม. คิดคาโดยสาร 15 บาท

ถาระยะทางมากกวา 10 ก.ม. คิดคาโดยสาร 20 บาท

9. เขียนโปรแกรมรับคาเงินเดือนของพนักงานบริษัท 3 คน แลวปรับเงินเดือนของท้ัง 3 คนตามเง่ือนไขตอไปนี้ ถาเงินเดือนนอยกวาคาเฉลี่ยเงินเดือนของท้ัง 3 คน ปรับเงินเดือนข้ึนอีก 10 %

ถาเงินเดือนมากกวาคาเฉลี่ยเงินเดือนของท้ัง 3 คน ปรับเงินเดือนข้ึนอีก 5 %

ถาเงินเดือนเทากับคาเฉลี่ยเงินเดือนของท้ัง 3 คน ปรับเงินเดือนข้ึนอีก 7 %

10. เขียนโปรแกรมใหผูใชเลือกวาตองการหาคาเฉลี่ยเลขคณิต คามัธยฐาน(คากลางของขอมูล) และคาท่ีมากท่ีสุดของเลขจํานวนเต็ม 3 ตัว (กําหนดใหใชคําสั่ง switch และ if)

โดยเลือก 1 หมายถึง แสดงผลคาเฉลี่ยเลขคณิต

เลือก 2 หมายถึง แสดงผลคามัธยฐาน

เลือก 3 หมายถึง แสดงคาท่ีมากท่ีสุด

11. เขียนโปรแกรมแสดงจํานวนเต็มตั้งแต 1 ถึง 10 ท่ีเปนเลขคูบนจอภาพ 12. เขียนโปรแกรมแสดงจํานวนเต็มท่ีอยูในชวง [100, 200] ท่ีหารดวย 5 หรือ 7 ลงตัวบนจอภาพ 13. เขียนโปรแกรมคํานวณผลบวกของเลขจํานวนเต็มตั้งแต 1 ถึง 100 14. เขียนโปรแกรมคํานวณผลบวกของเลขจํานวนเต็มท่ีหารดวย 3 ลงตัว ตั้งแต 1 ถึง 100 15. เขียนโปรแกรมคํานวณหาคาเฉลี่ยของตัวเลข 5 ตัวท่ีผูใชปอนเขามา 16. เขียนโปรแกรมคํานวณหาคาเฉลี่ยของตัวเลข n ตัวท่ีผูใชปอนเขามา 17. เขียนโปรแกรมหาคา n! โดยรับคา n จากผูใช และมีเง่ือนไขคือ 0 ≤ n ≤ 10 แลวแสดงผลทางจอภาพ 18. เขียนโปรแกรมเพ่ือหาวาจํานวนเต็มตั้งแต 1 ถึง N มีจํานวนเฉพาะก่ีตัว และมีอะไรบาง 19. เขียนโปรแกรมเพ่ือคํานวณหาคา least common multiple หรือ ค.ร.น. ของจํานวนเต็มบวก a และ b

Page 41: บทปฏิบัติการ - MWITcs/download/C_labSheet.pdfบทปฏ บ ต การท 1 กระบวนการแก ป ญหาและรห สเท ยม

38

20. เขียนโปรแกรมเพ่ือคํานวณหาคา greatest common divisor หรือ ห.ร.ม. ของจํานวนเต็มบวก a และ b 21. เขียนโปรแกรมเพ่ือรับเลขจํานวนเต็มบวก n แลวคํานวณหาวา n มีตัวประกอบอะไรบางและมีท้ังสิ้นก่ีตัว

โดยแสดงผลลัพธออกทางจอภาพ 22. เขียนโปรแกรมรับจํานวนเต็ม a และ b จากผูใชแลวตรวจสอบวา a และ b เปนจํานวนเฉพาะสัมพัทธหรือไม หมายเหตุ: จํานวนเต็ม a และ b เปนจํานวนเฉพาะสัมพัทธ (co-prime หรือ relatively prime) ก็ตอเม่ือ

มันไมมีตัวประกอบรวมนอกจาก 1 และ -1, หรือกลาวไดวา ถาตัวหารรวมมาก (the Greatest

Common Divisor หรือ GCD) คือ 1

23. เขียนโปรแกรมตรวจสอบจํานวนเต็มตั้งแต 1 – 1000 วามีเลขท่ีลงทายดวย 9 ก่ีตัว 24. เขียนโปรแกรมเพ่ือหาวามีจํานวนเต็มก่ีตัวท่ีอยูในชวง [50, 500] ท่ีผลรวมของตัวเลขทุกหลักเทากับ 5 25. เขียนโปรแกรมเพ่ือหาวาจํานวนเต็มตั้งแต 1 – 500 เปน Perfect Number (จํานวนสมบูรณ) ก่ีตัว และมี

อะไรบาง โดย Perfect Number คือ จํานวนท่ีมีคาเทากับผลบวกของตัวหารแทท้ังหมดของจํานวนนั้น เชน 6 เปน Perfect Number เพราะมี 1, 2, 3 เปนตัวหารแท และ 6 = 1+2+3

26. เขียนโปรแกรมเพ่ือรับเลขจํานวนเต็มบวก x และ y แลวคํานวณหาวาเปนจํานวนเชิงมิตร(amicable numbers)หรือไม ความหมายของจํานวนเชิงมิตร คือ จํานวนเต็มบวก 2 จํานวน จะเปนจํานวนเชิงมิตรตอกัน เม่ือผลรวมของตัวหารแทท่ีเปนบวกทุกตัวของจํานวนหนึ่งมีคาเทากับอีกจํานวนหนึ่ง เชน 284 และ 220 เปนจํานวนเชิงมิตร เพราะวา ตัวหารแทของ 220 คือ 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 และ 110 ผลบวกของตัวหารแท คือ 284 ตัวหารแทของ 284 คือ 1, 2, 4, 71 และ 142 ผลบวกของตัวหารแท คือ 220

27. เขียนโปรแกรมรับเลขจํานวนเต็ม n แลวแสดง * จํานวน n แถวๆ ละ n ตัว ( n > 0) โดยมีรูปแบบตาม

ตัวอยาง

ตัวอยางท่ี คา n การแสดงผล 1 n = 1 *

2 n = 2 * * * *

3 n = 3 * * * * * * * * *

4 n = 5 * * * * * * * * * * * * * * * * * * * * * * * * *