ขอความคำสั่งควบคุม แบงเปนกลุมใหญ ๆ ได 2 กลุม คือ 1. ขอความสั่งทำซ้ำ (loop statements) 2. ขอความสั่งมีเงื่อนไข (conditional statements)
ขอความสั่งมีเงื่อนไข ขอความสั่งมีเงื่อนไข ไดแก if if / else switch/case
คำสั่ง if ทางเลือกเดียว { /* จะมีหรือไม่มีก็ได้*/ คำสั่งที่ 1 ; คำสั่งที่ 2 ; คำสั่งที่ 3 ; . . . . . . . .; } /* จะมีหรือไม่มีก็ได้*/
เครื่องหมายเปรียบเทียบ > มากกวา >= มากกวาหรือเทากับ < นอยกวา <= นอยกวาหรือเทากับ == เทากัน != ไมเทากัน && AND (และ) : : OR (หรือ) ! NOT
Ex1. โปรแกรมรับขอมูลเปนเลข 2 จํานวน แลวนํามาเปรียบเทียบกัน พิมพผลการเปรียบเทียบแจงใหผูใชทราบ
ขอความสั่ง if/else แบบ 2 ทางเลือก { ขอความสั่ง ; /* ทํ าเมื่อเงื่อนไขเปนจริง */ . . . . . . . . . ; } else ขอความสั่ง ; /* ทํ าเมื่อเงื่อนไขเปนเท็จ */ . . . . . . . . . . ;
ตัวอยาง
ขอความสั่ง if/else แบบซอนกัน (nested if) { ขอความสั่ง ; /* ทํ าเมื่อเงื่อนไข 1 เปนจริง */ ขอความสั่ง ; . . . . . . . . . ; } else /* ทํ าเมื่อเงื่อนไข 1 เปนเท็จ */ if (เงื่อนไข 2) ขอความสั่ง ; /* ทํ าเมื่อเงื่อนไข 2 เปนจริง */ else ขอความสั่ง ; /* ทํ าเมื่อเงื่อนไข 2 เปนเท็จ */ . . . . . . . . . .;
ตัวอยาง เป็นตัวอยางที่นํามาจากตัวอยางที่ 5.15 โดยแสดงการใชขอความสั่ง if/else ซอนกันแทนแบบเดิม ดังนี้ (ตัวอย่าง 5.17 หน้า 20)
ตัวอยาง โปรแกรมการตัดเกรด แสดงการใชขอความสั่ง if/else ซอนกันหลายชั้น เกณฑการตัดเกรด 90 – 100 = A 75 - 89 = B 60 - 74 = C 50 - 59 = D 0 - 49 = E (ตัวอย่าง 5.18 หน้า 21)
ขอความสั่ง Switch/case/bread/default เปนขอความสั่งประเภทที่มีการตรวจสอบคาของนิพจนหรือคาของตัวแปรที่รับมาวาสอดคลองกับกรณีใดก็จะปฏิบัติงานตามกรณีนั้น แลวออกจากวงวน เมื่อพบคําสั่ง break เพื่อทําตาม ขอความสั่งที่มีตอจากวงวนนั้น จนกวาจะจบโปรแกรม
รูปแบบ Switch/Case switch (นิพจน หรือ ตัวแปร๗ { ขอความสั่ง 1; ขอความสั่ง 2; . . . . . . . . . . .; break; case (คาของนิพจนหรือตัวแปร คาที่ 2) : . . . . . . . . . . ; . default : ขอความสั่ง ; }
ตัวอยาง โปรแกรมที่ใชตัวแปร ch เปนตัวรับขอมูล และนําคาของ ch ไปตรวจสอบวาตรงกับกรณี (case) ใดก็ปฏิบัติตามขอความสั่ง กรณีนั้น ((ตัวอย่าง 5.19 หน้า 24)
ขอความสั่งทำซ้ำ ขอความสั่งทำซ้ำที่ใชงานในภาษาซี ไดแก 1. ขอความสั่ง while 2. ขอความสั่ง do/while 3. ขอความสั่ง for
ใชสั่งใหทํางาน วนจนกวาเงื่อนไขที่กําหนดจะเปนเท็จจึงจะหยุดการวน คำสั่ง while รูปแบบ while (เงื่อนไข) { คำสั่งที่ 1 ; คำสั่งที่ 2 ; คำสั่งที่ 3 ; ................; .................; } ใชสั่งใหทํางาน วนจนกวาเงื่อนไขที่กําหนดจะเปนเท็จจึงจะหยุดการวน
ทิศทางการทำงานของ while รูปแสดงการทำงาน Statement ของ while Condition เท็จ จริง
ตัวอยางโปรแกรม #include <stdio.h> int i=1; main ( ) { while(i<=5) printf(“COMPUTER\n”); i++ ; } printf (“End of loop.\n”);
ตัวอยางโปรแกรมพิมพสูตรคูณ #include <stdio.h> int i=1; main ( ) { while (i<=12) printf (“ 25x %d = %3d\n”,I,I*25); I++ ; } printf (“End of loop.\n”);
ขอความสั่ง do/while ขอความสั่งวงวนแบบนี้จะเริ่มทําตามขอความสั่งในบล็อกกอน 1 รอบแลวจะตรวจสอบเงื่อนไขของขอความสั่ง while ถาเปน จริงก็วนกลัยไปทําตามขอความสั่งทั้งหมดในบล็อก แลวตรวจสอบเงื่อนไขอีก ถาเปนเท็จก็จะเลิกการทําซํ้า แลวขามไปทําตามข้อความสั่งที่เหลือในโปรแกรมตอไปจนจบ
รูปแบบของคำสั่ง do/while { ขอความสั่งที่ 1 ; ขอความสั่งที่ 2 ; ขอความสั่งที่ 3 ง . . . . . . . . . .; . . . . . . . . . . ; } while (เงื่อนไข);
ทิศทางการทำงานของ do/while รูปแสดงการทำงาน Statement ของ while Condition เท็จ จริง
ตัวอยางโปรแกรม #include <stdio.h> int i=1; main ( ) { do printf(“COMPUTER\n”); I ++; } while (i<=5); printf (“End of loop.\n”);
ตัวอยางโปรแกรมพิมพสูตรคูณ main ( ) { int i=1; do printf (“ 25 x %2d = %3d\n”,i,i*25); i++ ; } while (i<=10); printf (“End of loop.\n”);
ขอความสั่ง for ขั้นตอนการทำงานของ for 1. กำหนดค่าเริ่มต้นให้กับตัวแปร 2. กำหนดเงื่อนไขที่ใช้ในการตรวจสอบ 3. ปฏิบัติตามเงื่อนไข 3.1 ถ้าเงื่อนไขเป็นจริงให้ทำตามคำสั่งภายใน Loop for 3.2 ถ้าเงื่อนไขเป็นเท็จให้ออกจาก Loop for 4. เพิ่ม/ลด ค่าของตัวแปร 5. ย้อนกลับไปทำที่ข้อ 3
รูปแบบของ for for (ค่าเริ่มต้น;เงื่อนไขที่ใช้ตรวจสอบ;การเพิ่ม/ลดค่าตัวแปร) { statement1; statement2; statement3; ………………; }
ทิศทางการทำงานของ for กำหนดค่าเริ่มต้น เท็จ Condition จริง ทำงานตามคำสั่งของ for เปลี่ยนแปลงค่าของตัวแปร
ตัวอยางโปรแกรม main ( ) { int i: for (i=1;i<=5;i++) printf(“COMPUTER\n”); printf(“End of loop.\n”); printf(“ i = %d\n”,i); }
ตัวอยางโปรแกรม for ที่มี 2 ขอความสั่งขึ้นไป main ( ) { int i; for(i=1;i<=5;i++) printf (“COMPUTER\n”); printf(“ i = %d\n”,i); } printf (“End of loop.\n”); printf (“ i = %d\n”,i);
ตัวอย่างโปรแกรม main ( ) { int i: for (i=5;i>0;i --) printf (”COMPUTER\n”); printf (“End of loop.\n”); }
การกําหนดตัวแปรที่มีการเปลี่ยนคาไวมากกวา 1 ตัว ในภาษาซีมีวิธีกําหนดตัวแปรไวในเงื่อนไขไดมากกวา 1 ตัว โดยใช , คั่นตัวแปรไว แตการกําหนดตัวแปรควบคุมในเงื่อนไขจะตองใชตัวแปรตัวเดียวเทานั้น
ตัวอยางกําหนดตัวแปร 2 ตัวไวในวงเล็กหลัง for main ( ) { int i,j; for (i=1 , j=10;i<=5;i++,j+=10) printf (“%d x%d = %d\n”,i,j,i*j); printf (“End of loop.”)’ }
ตัวอยางกําหนดตัวแปร 3 ตัวไวในวงเล็กหลัง for main ( ) { int i,j,k; for iI=1,j=10,k=100;i<=5;i++,j+=10,k-=30) printf (“%d x %2d x %4d = %6d\n”,i,j,k,i*j*k); printf (“End of loop.\n”); }
แบบฝึกหัด จงเขียนโปรแกรมเพื่อหาค่าเฉลี่ยของตัวเลขที่ผู้ใช้กรอกเข้ามาในโปรแกรมจำนวน 10 ตัว โดยแสดงผลการหาค่าเฉลี่ยออกทางจอภาพ จงเขียนโปรแกรมคำนวณค่าอาหารที่ลูกค้าสั่งทั้งหมด โดยภายร้านมีรายการอาหารดังนี้ Pizza 150.- Hamburger 50.- Sandwich 25.- โปรแกรมจะต้องวนรับรายการสั่งซื้อจากลูกค้า (1-3) จนกว่าจะครบตามที่ลูกค้าต้องการโปรแกรมจึงจะทำการคิดเงินรวมออกมาให้