ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C
2
คำสั่งตรวจสอบเงื่อนไข if
แก้ไขปัญหาที่ต้องมีการเลือกทำงานเมื่อเงื่อนไขบางเงื่อนไข “เป็นจริง” เมื่อคะแนนที่กรอกเข้ามามีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” เมื่อผู้ใช้กรอกอายุว่ายังไม่ถึง 18 ปี ให้ออกจากโปรแกรม ถ้าเงื่อนไขที่ทดสอบเป็นเท็จ จะไม่ทำอะไร
3
คำสั่งตรวจสอบเงื่อนไข if
รูปแบบคำสั่งคือ if (expression) { statement 1 ; } statement 2 ; expression เท็จ จริง statement 1; statement 2;
4
ถ้าค่า expression มีค่าเป็นจริง (ผลลัพธ์ของ expression มีค่าเป็นค่าอื่นที่ไม่ใช่ศูนย์ ) ให้ทำ statement 1; ถ้า expression มีค่าเป็นเท็จ (ผลลัพธ์ของ expression มีค่าเป็นศูนย์ ) จะข้ามไปทำ statement 2; คำสั่งที่อยู่ในบล็อก if สามารถประกอบไปด้วยคำสั่งมากกว่า 1 คำสั่งได้ โดยการใช้เครื่องหมายวงเล็บปีกกา { } เพื่อจัดคำสั่งเป็นกลุ่ม มองเสมือนว่า { } คือ 1 คำสั่งใหญ่
5
ตัวอย่าง 1 if (score<50) printf (“***Fail***\n”); printf (“*** end score ***”); ตัวอย่าง 2 { printf (“congratulation\n”); }
6
คำสั่งตรวจสอบเงื่อนไข if - else
เมื่อคะแนนที่กรอกเข้ามามีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” แต่ถ้า 50 คะแนนขึ้นไป ให้พิมพ์คำว่า “pass” เมื่อผู้ใช้กรอกอายุว่ายังไม่ถึง 18 ปี ให้ออกจากโปรแกรม แต่ถ้าอายุถึง 18 ปี ให้ run โปรแกรมได้
7
คำสั่งตรวจสอบเงื่อนไข if - else
รูปแบบคำสั่งคือ if (expression) { statement 1 ; } else statement 3 ; statement 2 ; เท็จ expression จริง statement 3; statement 1; statement 2;
8
ทำงานคล้ายกับคำสั่ง if แต่ถ้าผลลัพธ์ของ expression มีค่าเป็นเท็จ (ศูนย์) จะเข้าไปทำงาน statement 3 ก่อน ตัวอย่าง if (score<50) { printf (“***Fail***\n”); printf (“Try again next course\n”); } else printf (“***Pass***\n”); printf (“Congratulation\n”); printf (“*** end score ***”);
9
การใช้คำสั่ง if ซ้อน if (nested if)
คำสั่งภายใต้เงื่อนไข “จริง” หรือ “เท็จ” ของ if…else… อาจเป็นคำสั่งธรรมดา หรือเป็นคำสั่ง if…else… ก็ได้ มักใช้ในกรณีที่มีเงื่อนไขต้องทำมากกว่า 2 เงื่อนไข คะแนนมีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” แต่ถ้า 50 คะแนนขึ้นไป ถ้าคะแนนน้อยกว่า 75 คะแนน (50 – 74) ให้พิมพ์เกรด B แต่ ถ้า 75 คะแนนขึ้นไป ให้พิมพ์เกรด A
10
if (expression 1) { statement 1 ; } else if (expression 2) statement 2 ; statement 3 ; statement 4 ; expression 1 เท็จ จริง expression 2 เท็จ จริง statement 1; statement 2; statement 3; statement 4;
11
sum<50 sum<60 Sum<70 “F” “D” “C” … if ( sum < 50 )
print “F” else { if ( sum < 60 ) print “D” if ( sum < 70 ) print “C” … } sum<50 sum<60 Sum<70 “F” “D” “C” …
12
คำสั่งเงื่อนไข switch – case
รูปแบบคำสั่งคือ switch (variable / expression) { case ค่าที่ 1 : statement 1; break; case ค่าที่ 2 : statement 2; default statement 3; } switch() case value1 case value2 case value3 … default
13
จะเข้าทำงานคำสั่ง default ก็ต่อเมื่อเงื่อนไขไม่ตรงกับ case ใดๆ เลย
ถ้าไม่มีคำสั่ง default เมื่อตรวจสอบแล้วเงื่อนไขไม่ตรงกับ case ใดๆ ก็จะไม่ทำคำสั่งใดๆ ภายใน switch – case นั้นเลย ในทุกๆ case ควรมีคำสั่ง break; เพื่อปิดท้าย case นั้นๆ ยกเว้น default เนื่องจากเป็นกรณีสุดท้าย จึงไม่ต้องมี ถ้าในแต่ละ case มี statement มากกว่า 1 statement สามารถใช้ต่อกันได้เลยโดยไม่ต้องใส่ {}
14
ตัวอย่าง switch (c) { case ‘+’: x = y + z; break; case ‘-’: x = y - z; case ‘*’: x = y * z; case ‘/’: x = y / z; } ตัวอย่าง switch (x+y) { case 1: x = y + x; break; case 2: printf(“x+y=2”); case 3: printf(“x+y=3”); x=y+x; default : printf(“not 1,2,3”); }
15
โครงสร้างควบคุมแบบทำซ้ำ
สำหรับคำสั่งที่ใช้ในโครงสร้างควบคุมแบบทำซ้ำในภาษาซีมีหลายรูปแบบ ดังนี้ คำสั่งวนซ้ำ while คำสั่งวนซ้ำ do-while คำสั่งวนซ้ำ for
16
คำสั่งทำซ้ำ while โปรแกรมบางลักษณะต้องมีการทำงานเดิมซ้ำๆ จนกว่าจะได้เงื่อนไขที่เหมาะสม จึงจะไปทำงานอื่นต่อ รับค่าคะแนนสอบ midterm (เต็ม 50 คะแนน) ถ้าผู้ใช้กรอกคะแนนที่ไม่อยู่ในช่วง 0 – 50 คะแนน -> ต้องให้กรอกใหม่ โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ไปทำงานอื่นต่อ ถ้าไม่ใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2
17
คำสั่งทำซ้ำ while เท็จ เงื่อนไข จริง คำสั่งที่ 2 คำสั่งที่ 1
{ คำสั่งที่ 1; } คำสั่งที่ 2; ตรวจสอบเงื่อนไขก่อนเข้าทำงานในบล็อก while loop ทุกครั้ง ถ้าเงื่อนไขเป็นจริง จะทำงานคำสั่งที่ 1 แล้วจึงกลับไปตรวจสอบเงื่อนไขอีกครั้ง วน loop จนกว่าเงื่อนไขจะเป็นเท็จ จึงออกไปทำคำสั่งที่ 2
18
โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้
คะแนนที่ได้อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ไปทำงานอื่นต่อ ถ้าไม่ใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 เนื่องจากคำสั่ง while จะทำงานวนซ้ำก็ต่อเมื่อเงื่อนไขเป็นจริง ดังนั้นจะได้ โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้ไม่อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 ถ้าไม่ใช่ ไปทำงานอื่นต่อ (ออกจากข้อ 2. ได้)
19
โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้
คะแนนที่ได้ไม่อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 ถ้าไม่ใช่ ไปทำงานอื่นต่อ (ออกจากข้อ 2. ได้) printf(“Input MIDTERM score : ”); scanf(“%f”,&score); while( !((Mscore>=0) && (Mscore<=50)) ) { scanf(“%f”,&Mscore); }
20
จงเขียนโปรแกรมที่ทำงานดังนี้
เริ่มจากรับคะแนน midterm จากผู้ใช้ ถ้าไม่อยู่ในช่วง 0 – 50 ให้ผู้ใช้กรอกใหม่ แต่ถ้าอยู่ ให้ทำขั้นต่อไป ถัดมา ให้รับคะแนน final จากผู้ใช้ ถ้าไม่อยู่ในช่วง 0 – 50 ให้ผู้ใช้กรอกใหม่ แต่ถ้าอยู่ ให้ทำขั้นต่อไป นำคะแนนที่ได้มาบวกกันเพื่อหาคะแนนรวมและเกรดที่ได้ แสดงผลลัพธ์(คะแนนรวมและเกรด)ออกทางหน้าจอ
21
คำสั่งทำซ้ำ do - while do – while loop ก็เป็น while loop เช่นกัน
แต่มีการเปลี่ยนตำแหน่งของการเช็คเงื่อนไข while – เช็คก่อนทำใน loop ดังนั้น ถ้าเช็คครั้งแรกแล้วเงื่อนไขเป็นเท็จ จะไม่มีการเข้าทำงานในลูปเลย do – while – ทำใน loop 1 ครั้งก่อนแล้วค่อยไปเช็คเงื่อนไข ดังนั้น ถึงการเช็คเงื่อนไขครั้งแรกจะให้ผลลัพธ์เป็นเท็จ คำสั่งที่อยู่ภายในลูปก็จะได้รับการทำงานอย่างน้อยที่สุด 1 ครั้งเสมอ
22
เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2
คำสั่งทำซ้ำ do - while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ do { คำสั่งที่ 1; } while (เงื่อนไข) ; คำสั่งที่ 2; เข้าทำงานในบล็อก do - while ก่อนจึงค่อยตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริง จะวน loop กลับไปทำงานคำสั่งที่ 1 วน loop จนกว่าเงื่อนไขจะเป็นเท็จ จึงออกไปทำงานคำสั่งที่ 2 ต่อไป
23
เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2
คำสั่งทำซ้ำ do – while เปรียบเทียบกับ while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ do – while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ while
24
while do – while printf(“Input MIDTERM score : ”);
scanf(“%f”,&Mscore); while( !((Mscore>=0) && (Mscore<=50)) ) { } while do { printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); } while( !((Mscore>=0) && (Mscore<=50)) ) ; do – while
25
while do – while printf(“Input MIDTERM score : ”);
scanf(“%f”,&Mscore); while( (Mscore<0) || (Mscore>50) ) { } while do { printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); } while( (Mscore<0) || (Mscore>50) ); do – while
26
ข้อสังเกตของ while และ do - while
ทั้ง while loop และ do – while loop มีข้อสังเกตคือ นิยมใช้กับการทำงานที่เราไม่รู้จำนวนครั้งที่แน่นอน วน loop รับค่าจนกว่าจะได้ค่าที่ต้องการ วน loop คำนวณค่าจนกว่าผลลัพธ์มีค่าเท่ากับศูนย์ คำสั่งที่อยู่ใน loop ต้องส่งผลให้เงื่อนไขที่เช็คมีโอกาสเป็นเท็จ (ออกจาก loop ได้) คำสั่งที่อยู่ใน loop ต้องส่งผลกระทบต่อตัวแปรหรือค่าที่นำมาเป็นเงื่อนไขในการออกจาก loop
27
โจทย์ปัญหา เขียนโปรแกรมเพื่อวน loop รับค่าตัวเลขจำนวนเต็มจากผู้ใช้ไปเรื่อยๆ ในระหว่างที่ใส่ตัวเลข ให้โปรแกรมคอยนับด้วยว่า ตัวเลขที่ผู้ใช้ใส่เข้ามาเป็นเลขจำนวนเต็มบวกกี่ตัว , เลขจำนวนเต็มลบกี่ตัว โปรแกรมจะหยุดรับค่าเมื่อผู้ใช้ใส่ค่าตัวเลข 0 ให้กับโปรแกรม โปรแกรมจะแสดงผลให้ผู้ใช้ได้ทราบว่า ผู้ใช้กรอกตัวเลขจำนวนเต็มบวกทั้งหมดกี่ตัว, จำนวนเต็มลบทั้งหมดกี่ตัว
28
คำสั่งวนซ้ำ for เป็นคำสั่งสำหรับการทำงานวนซ้ำเช่นเดียวกับ while
แต่นิยมใช้ในลักษณะการเขียนโปรแกรมคนละแบบ ใช้ใน loop ที่ทราบจำนวนรอบที่แน่นอน บวกตัวเลขตั้งแต่ 1 – 100 รับคะแนนสอบของนิสิต 104 คน
29
คำสั่งวนซ้ำ for รูปแบบคำสั่งคือ
{ statement 1; } statement 2; ค่าเริ่มต้น เท็จ เงื่อนไข ปรับค่าตัวแปร จริง statement 2; statement 1;
30
ตัวอย่าง int count ; for ( count = 1 ; count <= 10 ; count++ ) { printf( “%d\n” , count ) ; } จากตัวอย่าง ในคำสั่ง for มีตัวแปร count เพื่อคอยนับ, ควบคุมจำนวนรอบของลูป ก่อนเข้าลูป กำหนดค่าเริ่มต้นให้ count = 1 เช็คเงื่อนไข count <= 10 จึงจะทำงานในลูป เมื่อทำงานในลูปเสร็จ เพิ่มค่าตัวแปร count++ และย้อนกลับไปเช็คเงื่อนไข
31
โปรแกรมเพื่อคำนวณหาค่าผลรวมของตัวเลขตั้งแต่ 1 ถึง 50
ตัวอย่าง โปรแกรมเพื่อคำนวณหาค่าผลรวมของตัวเลขตั้งแต่ 1 ถึง 50 #include <stdio.h> void main() { int i , sum = 0; for (i=1 ; i<=50 ; i++) sum += i; } printf(“ = %d\n”,sum); = 1275
32
ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i); Input = 4 * * * *
ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i , n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) printf(“* ”); } Input = 4 * * * * Input = 7 * * * * * * * ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i);
33
ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i); Input = 3 * Input = 4
ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i , n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) printf(“*\n”); } Input = 3 * Input = 4 ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i);
34
ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,j); Input = 2 **
*** ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i ,j ,n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) { for (j=1 ; j<=n ; j++) printf(“*\n”); } ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,j);
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.