งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)"— ใบสำเนางานนำเสนอ:

1 หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
เอกลักษณ์ สุมนพันธุ์ Computer Engineering

2 บทนำ การทำงานของโปรแกรมคอมพิวเตอร์ ประกอบไป ด้วย 3 ลักษณะใหญ่ ได้แก่
การทำงานของโปรแกรมคอมพิวเตอร์ ประกอบไป ด้วย 3 ลักษณะใหญ่ ได้แก่ 1. การทำงานตามโปรแกรมทีละคำสั่งตามลำดับ ก่อนหลัง (Sequencing) 2. ควบคุมให้โปรแกรมทำงานซ้ำจนกว่าจะเป็นไป ตามเงื่อนไขที่ตั้งไว้ (Iteration) 3. การตรวจสอบเงื่อนไขแล้วเลือกทำตามคำสั่งที่ เลือก (Selection)

3 บทนำ (ต่อ) การทำซ้ำและการตรวจสอบเงื่อนไข ภาษาซีมี คำสั่งในหมวดนี้ 3 คำสั่งได้แก่ 1. คำสั่งที่ให้ข้ามไปทำงานโดยไม่มีเงื่อนไข goto, break และ continue 2. คำสั่งให้ข้ามไปทำงานโดยมีเงื่อนไข if และ switch 3. คำสั่งให้ทำงานซ้ำ while, do…while และ for

4 คำสั่ง If if เป็นคำสั่งแบบมีเงื่อนไข (Conditional Statement)
ผลการตรวจสอบเงื่อนไข จริง ทำภายใน if{ } แต่ถ้าเท็จทำภายใน else{ } รูปแบบของคำสั่ง if(condition){ statement1; } else{ statement2;

5 ตัวอย่างการใช้คำสั่ง if
Example: scanf(“Enter x and y :”,&x,&y); if(x>y){ printf(“x>y”); } else{ printf(“y>x”);

6 การใช้ if/else หลายทางเลือก
สำหรับการตรวจสอบเงื่อนไขมากกว่า 2 ทางเลือก ใช้คำสั่ง if/else ได้ใช้คำสั่ง if/else ซ้อนกัน หลายระดับ รูปแบบการใช้คำสั่ง if(condition1)statement1; else if(condition2)statement2; else if(condition3)statement3; Else statement4;

7 if/else สามารถเขียนเป็น Flowchart ได้ดังนี้

8 โปรแกรมแปลงหน่วยความยาวฟุต เมตร
โปรแกรมแปลงหน่วยความยาวฟุต เมตร #include”stdio.h” main(){ float num; int choice; printf(“1. Feet to Meter 2.Meter to Feet\n”); printf(“Enter choice :”); scanf(“%d”,&choice); if(choice==1){ printf(“\n\nEnter number of feet :”); scanf(“%f”,&num); printf(“Meter : %f”,num/3.28); } else{ printf(“\n\nEnter number of meter :”); scanf(“%f”,&num); printf(“Feet : %f”,num*3.28); }

9 การใช้ Logical Operator ในการตรวจสอบเงื่อนไข
&& (AND) || (OR) ! (NOT) สามารถใช้กับคำสั่ง if ได้ทำให้ทางเลือก การทำงานหลากหลายขึ้น เช่น x>0 && x<10 y>=0 && y<=10 z==5 || z==15

10 โปรแกรมการคิดเกรดจากคะแนน score
#include <stdio.h> main(){ int score; char grade; printf(“Enter score :”); scanf(“%d”,&score); if(score>=60 && score<=80)grade=‘B’; else if(score>80) grade=‘A’; else grade=‘C’; printf(“Grade is %c”,grade); }

11 คำสั่ง switch เหมือนกันกับคำสั่ง if/else ซ้อนกันหลายครั้ง แต่ใช้ งานได้สะดวกกว่า ประกอบไปด้วยคำสั่งย่อยภายใน case เพื่อเลือก ตัดสินใจทำงานตามนิพจน์ที่ได้ผลลัพธ์ทางลอจิกเป็นค่า จริง รูปแบบของคำสั่ง : switch(variable){ case constant1: statement; break; case constant2: statement; break; ……… default: statement }

12 ตัวอย่างการใช้งานคำสั่ง switch
switch(x){ case 1: printf(“x = 1\n”); break; case 2: printf(“x = 2\n”); case 3: printf(“x = 3\n”); default: printf(“No Value !”); }

13 for(initialization;condition;increment) statement;
เป็นคำสั่งสำหรับการทำซ้ำ ใช้ควบคุมการทำงานของโปรแกรมให้มีการทำซ้ำกันหลายๆ ครั้งตามที่ กำหนด โครงสร้างของคำสั่งประกอบด้วย 3 ส่วนดังนี้ 1) ส่วนที่กำหนดค่าเริ่มต้น 2) ส่วนตรวจสอบเงื่อนไข 3) ส่วนค่าที่เปลี่ยนไป รูปแบบ for(initialization;condition;increment) statement;

14 แนวทางการเขียนผังงานคำสั่ง for

15 ตัวอย่าง การใช้งานคำสั่ง for
for(x=1;x<=100;x++) printf(“%d”,x); #include “stdio.h” main(){ int I; for(i=1;i<100;i++){ printf(“This is i: %d”,i); printf(“and I squared is %d\n”,i*i); }

16 การกำหนดนิพจน์ใน () ของคำสั่ง for
นิพจน์ภายในวงเล็บ () สามารถกำหนดให้ยืดหยุ่นต่อการใช้ งาน นิพจน์แต่ละส่วนคั่นด้วย ; แต่บางนิพจน์อาจจะไม่ระบุก็ได้เช่น เมื่อไม่มีส่วนของการระบุนิพจน์สำหรับตรวจสอบเงื่อนไข คอมไพเลอร์จะถือว่าส่วนที่ไม่ระบุนิพจน์มีค่าเป็น 0 (เท็จ) ตลอดเวลา for(x=0; ;x=x+5) printf(“%d”,x); for(; ;);

17 การใช้นิพจน์ย่อยในคำสั่ง for
โปรแกรมวนรอบแสดงตัวเลขตั้งแต่ 0 ถึง 98 โดยเพิ่มค่าขึ้นครั้งละ 2 กำหนดให้ใช้ตัวแปร 2 ตัว x และ y กำหนดค่าเริ่มต้นเท่ากับ 0 #include “stdio.h” main(){ int x,y; for(x=0,y=0;x+y<100;++x,++y) printf(“%d”,x+y); }

18 ตัวแปรที่สามารถใช้ได้กับคำสั่ง for
ตัวแปรที่ใช้ในคำสั่ง for สำหรับการวนรอบจะเป็น int หรือ char กรณีที่ใช้ตัวแปร char for(ch=‘A’;ch<=‘Z’;ch++) printf(“ASCII = %c decimal = %d\n”,ch,ch);

19 while(condition) statement;
เป็นคำสั่งการทำงานวนรอบเช่นเดียวกับคำสั่ง for การทำงานจะเริ่มต้นด้วยการตรวจสอบเงื่อนไขก่อน เมื่อตรวจพบว่านิพจน์ที่ทำการตรวจสอบให้ค่าจริงก็จะทำ คำสั่งต่อจากคำสั่ง while แต่ถ้าพบว่าไม่จริงก็จะหยุดรอบ การทำงานแล้วข้ามไปทำคำสั่งต่อไป รูปแบบ while(condition) statement;

20 แนวทางการเขียนผังงานคำสั่ง while

21 ตัวอย่างการใช้งานคำสั่ง while
Example #include “stdio.h” main(){ int i=1; int count=0; while(i<=100){ count+=1; i++; } printf(“Total = %d”,count);

22 คำสั่ง do/while ใช้สำหรับควบคุมการทำงานของโปรแกรมให้ทำวนรอบ เหมือนคำสั่ง for และ while และลักษณะการทำงานจะตรงกันข้าม ลักษณะการทำงานจะเริ่มต้นทำตามคำสั่งที่อยู่ใน do แล้วจึงไปตรวจสอบเงื่อนไข หลังคำสั่ง while กรณีที่ผลจากการตรวจสอบเป็นจริง ก็จะกลับไปทำตามคำสั่งที่อยู่ หลัง do แต่ถ้าพบว่าไม่จริงก็จะจบการทำงาน โดยข้ามไปทำคำสั่งหลังจาก while รูปแบบ do{ statement; }while(condition);

23 แนวทางการเขียนผังงานคำสั่ง do-while

24 ตัวอย่างการใช้คำสั่ง do/while
#include “stdio.h” main(){ int i=1,count=0; do{ count+=I; i++; }while(i<=100); printf(“Total = %d”,count); }

25 ตัวอย่างการใช้คำสั่ง do/while
โปรแกรมวนรอบแสดงอัตราส่วนของตัวแปร a/b โดย b ต้องไม่เป็น 0 เมื่อกดคีย์ ‘S’ จึงจบการทำงาน do{ printf(“\nEnter two number :”); scanf(“%f %f”,&a,&b); if(b==0.0) printf(“The ratio is undefined !\n”); else{ ratio=a/b; printf(“The ratio is %f\n”,ratio); } printf(“Press <S> to stop, any key to continue.”); }while(getch()!=‘S’);

26 การวนรอบซ้ำ (Nested Loop)
การแก้ปัญหาโจทย์หรือระบบงานที่ซับซ้อน จะ เกี่ยวข้องกับการใช้ตัวแปรหลายๆตัว ระบบงานที่ซับซ้อน อาจจะกระทำในลักษณะ ของการวนรอบซ้อน เรียกว่า Nested Loop for, while และ do…while สามารถใช้ใน ลักษณะการวนรอบซ้อนได้ตามความต้องการ

27 โปรแกรมวนรอบซ้อน ด้วยคำสั่ง for
printf(" x x^2 x^3 x^4 \n"); for(x=1; x<10; x++){ for(y=1; y<5; y++){ num=1; for(z=0; z<y; z++){ num=num*x; } printf("%9d",num); printf("\n"); ผลลัพธ์จะปรากฎดังนี้ X x^2 x^ x^4 …. … … …..

28 คำสั่ง break การทำงานของคำสั่งวนรอบ จะหยุดการทำงานเมื่อ เงื่อนไขที่ตรวจสอบเป็นเท็จ กรณีที่ต้องการหยุดการวนรอบก่อนครบกำหนด สามารถทำได้โดยใช้คำสั่ง break for(x=0;x<100;x++){ printf(“%d”,x); if(x==10) break; }

29 คำสั่ง continue ตรงข้ามกับคำสั่ง break เมื่อพบคำสั่ง continue จะกลับไปวนรอบใหม่เพื่อตรวจสอบ เงื่อนไขตามที่กำหนด for(x=0;x<100;x++){ continue; printf(“%d”,x); }

30 โปรแกรมบวกเลข ด้วยคำสั่ง continue
do{ printf(“Enter next number <0 to STOP> “); scanf(“%d”,&i); printf(“ls %d correct ? <Y/N> “,i); ch=getch(); printf(“\n”); if(ch==‘N’) continue; total+=i; }while(i); printf(“Total is %d\n”,total);

31 คำสั่ง goto goto ใช้สำหรับสั่งให้ข้ามการทำงานไปยังตำแหน่ง หรือชื่อที่กำหนดโดยไม่มีเงื่อนไข ประกอบด้วยส่วน สำคัญ 2 ส่วน คือ 1. ส่วนของคำสั่ง 2. ส่วนของ Label รูปแบบ goto label;

32 ตัวอย่างการใช้คำสั่ง goto
ไม่มีโอกาสประมวลผล goto step; printf(“This line will not print”); step: printf(“This line will print”); float r=2,pi= ; loop: printf(“R=%f Area=%f\n”,r,pi*r*r); r=r+1; goto loop; }

33 บทสรุป คำสั่งตัดสินใจทางเลือก if..else , switch คำสั่งวนรอบ
for, while, do..while คำสั่งข้ามไปทำยังตำแหน่งที่ต้องการ goto

34 THE END


ดาวน์โหลด ppt หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)

งานนำเสนอที่คล้ายกัน


Ads by Google