-1-
บททท ท 9
โครงสรร้างแบบททาซทซา เนนนื้ อหา
1.คคคำสสงสั่ for 2. คคคำสสงสั่ while 3. คคคำสสงสั่ do – while 4. ควคำมสสมพสนธธ์ของเทคโนโลยยีสคำรสนเทศกสบโปรแกรมคอมพพิวเตอรธ์
ผลการเรรียนรรรู้ทรีที่คาดหววัง
29. เขยียนโปรแกรมทยีมสั่ โยี ครงสรร้คำงกคำรทคคำงคำนแบบวนซคซคำและเลลือกใชร้คคำค สสงไดร้ สั่ อยย่คำงเหมคำะสม 30. อธพิบคำยควคำมสสมพสนธธ์ของเทคโนโลยยีสคำรสนเทศ ขร้อมมูล คอมพพิวเตอรธ์ และกคำรเขยียนโปรแกรมไดร้ 31. ใชร้คอมพพิวเตอรธ์สรร้คำงงคำนอยย่คำงมยีจตพิ สคคำนนึกและมยีควคำมรสบผพิดชอบ
กคำรวนซคซคำ (Loop) หมคำยถนึง กลลย่มของคคคำสสงทยี สั่ ตสั่ อร้ งกคำรประมวลผลซคซคำหลคำยครสงซ ทสงซ นยีซขนซนึ อยมูกย่ บส เงลือสั่ นไขทยีสั่ กคคำหนดไวร้ โปรแกรมภคำษคำ C มยีคคำค สสงวนซค สั่ ซคำอยมูย่ 3 คคคำสสงสั่ ไดร้แกย่ คคคำสสงสั่ while, คคคำสสงสั่ do … while และคคคำสสงสั่ for
1. คคาสวังที่ while
รมูปแบบของคคคำสสงสั่ while ไดร้แกย่ while(condition) { statement1; statement2; } โดยทยีสั่ condition statement
คลือ คลือ
เงลือสั่ นไขทยีถสั่ มูกกคคำหนดขนึนซ คคคำสสงทยี สั่ ตสั่ อร้ งกคำรใหร้โปรแกรมประมวลผล
กคำรทคคำงคำนของคคคำสสงสั่ while จะเรพิมสั่ ตร้นดร้วยกคำรตรวจสอบเงลือสั่ นไข (condition) ถร้คำผลกคำรตรวจสอบเปป็ น จรพิงหรลือมยีคย่คำไมย่เทย่คำกสนศมูนยธ์ คคคำสสงสั่ (statement) ทยีอสั่ ยมูภย่ คำยใตร้เครลือสั่ งหมคำย { } ทลกคคคำสสงจะไดร้ สั่ รบส กคำรประมวลผล 1 ครสงซ แลร้วโปรแกรมจะกลสบไปตรวจสอบเงลือสั่ นไข ถร้คำผลกคำรตรวจสอบยสงคงเปป็ นจรพิงอยมูย่ โปรแกรมกป็จะประมวลผล รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-2-
คคคำสสงหลส สั่ งเงลือสั่ นไขอยีก 1 รอบ และทคคำซคซคำในลสกษณะนยีซจนกระทสงผลกคำรตรวจสอบเปป็ สั่ นเทป็จ (มยีคย่คำเทย่คำกสบ 0) จนึงจะยลตพิ กคำรทคคำงคำนในลมูป
รรปทรีที่ 1 ผสงงคำนแสดงกคำรทคคำงคำนของโครงสรร้คำงแบบทคคำซคซคำ while และ for ตวัวอยยางทรีที่ 1 แสดงเลขจคคำนวนเตป็มทยีเสั่ รยียงตย่อกสนไป โดยใชร้ while main() { int digit = 0; while(digit <= 9) { printf(“%d\n”, digit); digit++; } } จคำกตสวอยย่คำง กคคำหนดคย่คำเรพิมสั่ ตร้นใหร้ digit มยีคย่คำเปป็ น 0 จคำกนสนซ จะตรวจสอบเงลือสั่ นไข (digit <= 9) วย่คำเปป็ นจรพิง หรลือไมย่ ถร้คำเปป็ นจรพิงกป็จะทคคำคคคำสสงทส สั่ งซ 2 คคคำสสงสั่ ซนึงสั่ จะมยีกคำรเพพิมสั่ คย่คำ digit ขนึนซ ทยีละ 1 จนกระทสงคย่ สั่ คำ n เปป็ น 10 ทคคำใหร้ เงลือสั่ นไข (digit <= 9) เปป็ นเทป็จจนึงออกจคำกลมูป (ทคคำซคซคำทสงซ สพินซ 10 รอบ คลือ รอบทยีสั่ digit มยีคย่คำเทย่คำกสบ 0 จนถนึง digit เทย่คำกสบ 9)
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-3-
ตวัวอยยางทรีที่ 2 กคำรคคคำนวณหคำคย่คำแฟคทอเรยียล โดยใชร้ while main() { int n, fac = 1; printf(“Enter positive number”); scanf(“%d”,&n); while(n>=1) { fac = fac * n; n = n-1; } printf(“%d”,fac); } จคำกตสวอยย่คำง มยีกคำรกคคำหนดคย่คำเรพิมสั่ ตร้นใหร้กบส ตสวแปร fac เปป็ น 1 แลร้วรสบคย่คำ n จคำกผมูใร้ ชร้ หลสงจคำกนสนซ จะ ตรวจสอบเงลือสั่ นไข (n>1) วย่คำเปป็ นจรพิงหรลือไมย่ ถร้คำเปป็ นจรพิงกป็จะทคคำคคคำสสงทส สั่ งซ 2 คคคำสสงสั่ ซนึงสั่ จะมยีกคำรลดคย่คำ n ลงทยีละ 1 จนกระทสงคย่ สั่ คำ n เปป็ น 1 ดสงนสนซ ถร้คำ n = 5 จะไดร้ 5! = 5 x 4 x 3 x 2 x 1 = 120
2. คคาสวังที่ do..while
คคคำสสงสั่ do..while จะมยีกคำรทคคำงคำนคลร้คำยกสบ while แตย่ตย่คำงกสนตรงทยีสั่ คคคำสสงสั่ do..while จะตรวจสอบเงลือสั่ นไข ทยีหลสง นสนคลื สั่ อจะมยีกคำรทคคำคคคำสสงในลมู สั่ ปอยย่คำงนร้อย 1 ครสงซ เสมอ เมลือสั่ ทคคำคคคำสสงในลมู สั่ ปแลร้วจนึงตรวจสอบเงลือสั่ นไขทยีหลสง รมูปแบบของคคคำสสงสั่ do..while ไดร้แกย่ do { statement1; statement2; … } while(condition); โดยทยีสั่ condition statement
คลือ คลือ
เงลือสั่ นไขทยีถสั่ มูกกคคำหนดขนึนซ คคคำสสงทยี สั่ ตสั่ อร้ งกคำรใหร้โปรแกรมประมวลผล
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-4-
รรปทรีที่ 2 ผสงงคำนแสดงกคำรทคคำงคำนของโครงสรร้คำงแบบทคคำซคซคำ do..while ตวัวอยยางทรีที่ 3 แสดงเลขจคคำนวนเตป็มทยีเสั่ รยียงตย่อกสนไป โดยใชร้ do..while main() จคำกตสวอยย่คำง โปรแกรมจะทคคำกคำรประมวลผลคคคำ { int digit = 0; สสงภคำยใตร้ สั่ คคำค สสงสั่ do..while ภคำยในเครลืสั่องหมคำย {} กย่อน หนนึสั่งครสงซ แลร้วจนึงมคำตรวจสอบเงลือสั่ นไขวย่คำเปป็ นจรพิงหรลือไมย่ do ถร้คำเปป็ นจรพิงกป็จะวนกลสบไปทคคำคคคำสสงอยี สั่ กครสงซ ทคคำอยย่คำงนยีซไป { printf(“%d\n”, digit); จนกวย่คำกคำรตรวจสอบเงลือสั่ นไขจะเปป็ นเทป็จ จนึงจะจบกคำร digit++; ทคคำงคำน } while(digit <= 9); } ตวัวอยยางทรีที่ 4 กคำรคคคำนวณคย่คำแฟคทอเรยียล โดยใชร้ do..while main() { int n, fac = 1; printf(“Enter positive number”); scanf(“%d”,&n); do { fac = fac * n; n = n-1; } while(n>=1); printf(“%d”,fac); } จคำกตสวอยย่คำง โปรแกรมจะทคคำกคำรประมวลผลคคคำสสงสั่ fac = fac * n; และ n = n-1; กย่อน แลร้วจนึงมคำตรวจ สอบเงลือสั่ นไขวย่คำเปป็ นจรพิงหรลือไมย่ ถร้คำเปป็ นจรพิงกป็จะวนกลสบไปทคคำคคคำสสงสั่ (statement) ทยีอสั่ ยมูใย่ นลมูปอยีกครสงซ ทคคำอยย่คำงนยีซไป จนกวย่คำกคำรตรวจสอบเงลือสั่ นไขจะเปป็ นเทป็จ จนึงจะจบกคำรทคคำงคำน
3. คคาสวังที่ for
คคคำสสงสั่ for เปป็ นคคคำสสงวนลมู สั่ ปทยีมสั่ สยี ย่วนประกอบอยมูย่ 3 สย่วน ไดร้แกย่ 1. สย่วนเรพิมสั่ ตร้น (initialization) 2. สย่วน เงลือสั่ นไข (Condition) 3. สย่วนปรสบคย่คำ (Update) รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-5-
รมูปแบบของคคคำสสงสั่ for ไดร้แกย่ for(initialization; condition; update) { statement1; statement2; ... } สคคำหรสบลคคำดสบหรลือขสนซ ตอนกคำรทคคำงคำนของคคคำสสงสั่ for จะเหมลือนกสบคคคำสสงสั่ while ตวัวอยยางทรีที่ 5 แสดงเลขจคคำนวนเตป็มทยีเสั่ รยียงตย่อกสนไป โดยใชร้ for main() { int digit; for(digit=0; digit<=9; digit++) { printf(“%d\n”, digit); } } ตวัวอยยางทรีที่ 6 กคำรคคคำนวณคย่คำแฟคทอเรยียล โดยใชร้ for main() { int n, i, fac = 1; printf(“Enter positive number”); scanf(“%d”,&n); for(i=1;i<=n;i++) fac = fac * n; printf(“%d”,fac); } จคำกตสวอยย่คำง มยีกคำรกคคำหนดคย่คำเรพิมสั่ ตร้น(initialzation) คลือ i =1 และใหร้มกยี คำรปรสบคย่คำใหร้ตวส แปร i เพพิมสั่ ขนึนซ ทยีละ 1 ซนึงสั่ ลมูป for จะทคคำงคำนกป็ตย่อเมลือสั่ เงลือสั่ นไข i<=n เปป็ นจรพิง
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-6-
ตวัวอยยางทรีที่ 7 กคำรแสดง asterisk (*) ออกมคำทคำงจอภคำพ n แถวๆ ละ n ตสว โดยใชร้คคำค สสงสั่ for main() { int i, j, n; printf("Enter number : "); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("*"); printf("\n"); } }
4. คคาสวังที่ break เชย่น
ถร้คำใชร้คคำค สสงสั่ break ใน loop ใดๆ แลร้ว จะทคคำใหร้ออกจคำก loop ทสนทยี แลร้วมคำทคคำคคคำสสงทยี สั่ ตสั่ ย่อจคำก loop นสนซ for(i=0;i<6;i++) { if(i==3) }
break; printf(“Hello %d\n”,i);
ไดร้ผลลสพธธ์ดงส นยีซ Hello 0 Hello 1 Hello 2
5. คคาสวังที่ continue
ถร้คำใชร้คคำค สสงสั่ continue ใน loop ใดๆ แลร้ว จะทคคำใหร้คคำค สสงทส สั่ งซ หมดทยีอสั่ ยมูหย่ ลสงจคำกคคคำสสงสั่ continue ภคำยใน loop นสนซ ๆ ไมย่ถมูกประมวลผล จะขร้คำมกคำรทคคำงคำนไปทคคำคคคำสสงใน สั่ loop ตย่อไปทสนทยี เชย่น for(i=0;i<6;i++) { if(i==3) ไดร้ผลลสพธธ์ดงส นยีซ continue; Hello 0 printf(“Hello %d\n”,i); Hello 1 } Hello 2 Hello 4 Hello 5
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-7-
6. ตวัวอยยางโปรแกรม 6.1) #include<stdio.h> #include<stdlib.h> main() { int i, x=0; for(i=1;i<10;i*=2) { x++; printf("%d ", x); } printf(“\n”); system(“pause”); } ---------------------------------------------------------------------------------------------------------------------------------6.2) #include<stdio.h> #include<stdlib.h> main() { int i=0, x=0; while(i<20) { if(i%5 == 0) { x += i; printf("%d\n", x); } i++; } printf("\nx = %d", x); printf("\ni = %d", i); printf(“\n”); system(“pause”); } ----------------------------------------------------------------------------------------------------------------------------------
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552
-8-
6.3)
#include<stdio.h> #include<conio.h> main() { float x; do { printf("Input a positive value: "); scanf("%f", &x); } while(x < 0); printf("Your positive value is %.2f", x); getch(); } ---------------------------------------------------------------------------------------------------------------------------------6.4) #include<stdio.h> #include<conio.h> main() { int i, j, x=0; for(i=1;i<5;i++) { for(j=0;j<=i;j++) { x += (i+j); printf("%d ", x); } } printf("\nx = %d", x); getch(); } ----------------------------------------------------------------------------------------------------------------------------------
รายววิชา ง 40101 เทคโนโลยยีสารสนเทศและการเขยียนโปรแกรมขขนขั้ ตต้น
ภาคเรยียนทยี ที่ 1/2552