การเขียนคำสั่งควบคุมแบบมีทางลือก.2. 1. คำสั่งจัดเก็บข้อมูลลงหน่วยควำมจำ
1.1 กฎเกณฑ์การกาหนดชื่อ
ชื่อ (Identifier)หมายถึง ชื่อหน่วยความจาประเภทตัวแปร ชื่อหน่วยความจาประเภทค่าคงที่
หรือ ชื่อในส่วนใดๆ ของโปรแกรมที่ผู้สร้างโปรแกรมเป็นผู้กาหนดด้วยตนเอง มีกฎเกณฑ์ดังนี้
1. อักขระแรกต้องเป็นตัวอักษร หรือเครื่องหมายขีดล่าง (_) ตัวถัดไปเป็นตัวอักษร หรือตัวเลข
หรือเครื่องหมายขีดล่าง (_) ก็ได้
2. ชื่อที่ใช้อักษรตัวพิมพ์ใหญ่ หรือตัวพิมพ์เล็ก จะจัดเก็บข้อมูลในหน่วยความจาตาแหน่งที่
ต่างกัน
3. ห้ามใช้อักขระพิเศษ เช่น $ @ และห้ามมีช่องว่างระหว่างอักขระโดยเด็ดขาด
4. ควรตั้งชื่อให้มีความหมายสอดคล้องกับงาน
5. ต้องไม่ซ้ากับคาสงวนของภาษาซี (Reserved Word)
5. 1.3 คาสั่งกาหนดข้อมูลแบบค่าคงที่ มี 3 ลักษณะคือ
1.3.1 แบบที่ 1 ไม่ต้องกาหนดชื่อหน่วยความจารองรับข้อมูล (Literal Constant)
อธิบาย เลข 4 กับ ‘c’ คือข้อมูลแบบค่าคงที่ ไม่ต้องจัดเก็บในหน่วยความจา
1.3.2 แบบที่ 2 เขียนบริเวณส่วนหัว ในโครงสร้างภาษาซี (Defined Constant)
1.3.3 แบบที่ 3 เขียนบริเวณส่วนฟังก์ชันหลัก main ( ) (Memory Constant)
8. 2.3 ตัวดาเนินการเชิงตรรกะ (Logical Operators)
เป็นสัญลักษณ์ใช้เชื่อมประโยคคาสั่งแบบมีเงื่อนไข2 ประโยคขึ้นไป
ตรรกะ คือ การคิดเชิงเหตุผลที่มีความจริงค่าใดค่าหนึ่งคือ จริง (True: 1) หรือ (False: 0)
9. 3. คำสั่งควบคุมแบบมีทำงเลือก ลักษณะ if
3.1 กรณีใช้ประโยคคาสั่งแบบ if
ประสิทธิภาพของคาสั่ง: ควบคุมการทางานแบบมีทางเลือก ลักษณะหากประโยคเงื่อนไข
ตรรกะได้
ข้อสรุปค่าความจริงเป็นจริงให้ไปทางานตามคาสั่ง (กลุ่มคาสั่ง) ต่อจากประโยคเงื่อนไข แล้ว
ไปตาแหน่งบรรทัดคาสั่งชุดต่อไป แต่หากเงื่อนไขเป็นเท็จไม่ต้องทาคาสั่งใดให้ไปทางานที่ตาแหน่งคาสั่ง
ต่อไป
12. 3.2 กรณีใช้ประโยคคาสั่งแบบ if – else
ประสิทธิภาพของคาสั่ง: ใช้กรณีควบคุมการทางานในลักษณะ หากประโยคเงื่อนไขตรรกะได้ข้อ
สรุปความจริงเป็นจริง ให้ทางานตามคาสั่ง (กลุ่มคาสั่ง) ชุดที่ 1 แล้วไปที่คาสั่งต่อไป แต่หากเงื่อนไขตรรกะ
เป็นเท็จ ให้ทางานตามคาสั่ง (กลุ่มคาสั่ง) ชุดที่ 2 แล้วไปทางานที่ตาแหน่งคาสั่งชุดต่อไป
13. 3.3 กรณีใช้ประโยคคาสั่งแบบ if – else if –else
ประสิทธิภาพคาสั่ง: ใช้กรณีควบคุมการทางานในลักษณะ หากประโยคเงื่อนไขตรรกะมี
ทางเลือกทางานมากกว่า 2 ทางเลือก ระบบจะตรวจสอบเงื่อนไข ดังนี้
15. 3.4โครงสร้าง หรือ รูปแบบ ที่ใช้ if ซ้อนกัน หรือ อาจเรียกว่า nested if
โครงสร้าง nested if เพิ่ม if เข้ามาในคาสั่ง if ทาให้ใช้คาสั่ง if เพิ่มได้ตามที่ต้องการ ใช้กับการ
ตัดสินใจที่มีทางเลือกมากกว่า 2 ทางเลือก อาจเขียนผังงานได้เป็น (มีได้หลายแบบ)
19. ตัวอย่างการใช้คาสั่ง switch
ตัวอย่างที่ 1 การใช้คาสั่ง switch โดยไม่ใช้คาสั่ง break ในแต่ละ case
#include <stdio.h>
main()
{
/*printf("n");*/
switch(getchar())
{
case '9': printf("99 9 9 9 9 9 9 9n");
case '8': printf("8 8 8 8 8 8 8 8n");
case '7': printf("7 7 7 7 7 7 7n");
case '6': printf("6 6 6 6 6 6n");
case '5': printf("5 5 5 5 5n");
case '4': printf("4 4 4 4n");
case '3': printf("3 3 3n");
case '2': printf("2 2n");
case '1': printf("1n");
default: printf("0000000000000000000");
}
getch();
}
21. ตัวอย่างที่ 2 แสดงการใช้ค าสั่ง switch โดยมีการใช้ค าสั่ง break ในแต่ละ case
#include <Stdio.h>
main()
{
float num1 = 1.0 , num2 = 1.0;
int operate;
printf("nPlease enter firstfloatingpoint number : ");
scanf("%f",&num1);
printf("nPlease enter seconf floatingpoint number : ");
scanf("%f",&num2);
printf("n Please enter the operator. : ");
operate = getche();
switch( operate) /* start switch*/
{
case '+' :
printf("ntresult tof t%0.2ft%c t%02.2ftist %.2f",num1,operate,num2,num1+num2);
break;
case '-' :
printf("ntresult tof t%0.2ft%c t%02.2ftist %.2f",num1,operate,num2,num1- num2);
break;
22. case '/' :
printf("ntresult tof t%0.2ft%c t%02.2ftist %.2f",num1,operate,num2,num1+num2);
break;
default :
printf("unknownoperator");
} /* end switch*/
Getch();
} /* end main() */
โดยการทางานของโปรแกรมนี้เป็นไปในลักษณะ ดังรูป
case '*' :
printf("ntresult tof t%0.2ft%c t%02.2ftist %.2f",num1,operate,num2,num1+num2);
break;
25. 1.6 ลาดับขั้นตอนการทางาน (action)
1) เริ่มต้นการทางาน
2) แสดงส่วนเมนูเลือกงาน
3) ป้อนค่าตัวเลือกเมนู (ans)
4) เลือกทางานด้วยคาสั่ง switch ( ans )
4.1) ถ้า ans เป็น ‘1’ ให้ท างานกลุ่มคาสั่ง ดังนี้
- ป้อนคาสั่ง w, l
- คานวณ area = w * l
- พิมพ์area
(ออกไปทางานข้อ 5)
4.2) ถ้า ans เป็น ‘2’ ให้ทางานกลุ่มคาสั่ง ดังนี้
- ป้อนคาสั่ง b, h
- คานวณ area = b * h/2
- พิมพ์area
(ออกไปทางานข้อ 5)
26. 4.3) ถ้า ans เป็น ‘3’ ให้ทางานกลุ่มคาสั่ง ดังนี้
- ออกจากส่วนการทางาน
(ออกไปทางานข้อ 5)
4.4) นอกเหนือจากนี้ พิมพ์ข้อความแจ้งข้อผิดพลาด
(ออกไปทางานข้อ 5)
5) สิ้นสุดการทางาน
29. สมาชิก
นายธนวัฒน์ น้อยเกตุ เลขที่ 6
นายณัฐกาญจน์ สุขสม เลขที่ 7
นางสาวกมลวรรณ สมบูรณ์ศิริ เลขที่ 17
นางสาวจุฑามาศ เนียมหอม เลขที่ 18
นางสาวธนาภรณ์ นิลบุตร เลขที่ 28
นางสาวกาญจนาพร รุ้งพรม เลขที่ 34
ชั้นมัธยมศึกษาปีที่ 6/2