1 / 29

โครงสร้างควบคุม Control Structure

โครงสร้างควบคุม Control Structure. ภาษาโปรแกรมจะประกอบด้วยคำสั่ง (statement) ที่สั่งให้คอมพิวเตอร์ทำงาน การทำงานของแต่ละคำสั่งจะต้องมีลำดับการทำงานที่ชัดเจน จึงต้องมีโครงสร้างควบคุม เพื่อควบคุมลำดับการทำงานของโปรแกรม ภาษาโปรแกรมชั้นสูงแบ่งการควบคุมเป็น 2 ระดับ คือ

Download Presentation

โครงสร้างควบคุม Control Structure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. โครงสร้างควบคุม Control Structure • ภาษาโปรแกรมจะประกอบด้วยคำสั่ง (statement) ที่สั่งให้คอมพิวเตอร์ทำงาน • การทำงานของแต่ละคำสั่งจะต้องมีลำดับการทำงานที่ชัดเจน • จึงต้องมีโครงสร้างควบคุม เพื่อควบคุมลำดับการทำงานของโปรแกรม • ภาษาโปรแกรมชั้นสูงแบ่งการควบคุมเป็น 2 ระดับ คือ • การควบคุมระดับคำสั่ง (statement level) • การควบคุมระดับกลุ่มของคำสั่ง (Unit level)

  2. การควบคุมระดับคำสั่ง Statement level • โครงสร้างควบคุมที่ใช้จัดลำดับการทำงานของคำสั่งในโปรแกรม • โดยทั่วไปจะมี 3 รูปแบบ คือ • โครงสร้างแบบเรียงลำดับ (Sequencing structure) • โครงสร้างแบบมีเงื่อนไข (Selection structure) • โครงสร้างแบบวนซ้ำ (Iteration structure)

  3. ตามลำดับ • Program test; • Var x : integer; • Begin • Readln; • Writeln; End.

  4. โครงสร้างแบบเรียงลำดับโครงสร้างแบบเรียงลำดับ • PascalIf a > b thenbegin a := a + 1; writeln(a);end; • CIf (a > b) { a++; printf(“%d”,a);} A B C

  5. แบบมีทางเลือก selection if (num<50) then writeln('E') else if(num<60) then writeln('D') else if(num<70) then writeln('C') else if(num<80) then writeln('B') else writeln('A');

  6. true (จริง) expression statements Simple condition • มีเงื่อนไขที่ต้องตรวจสอบเพียงเงื่อนไขเดียว โดยตรวจสอบว่าต้องทำงานตามคำสั่งที่กำหนดหรือไม่ • รูปแบบ if <boolean expression> then <block of statements> • ตัวอย่าง if i>0 then i:=i+1;

  7. Two-alternative condition • โครงสร้างควบคุมแบบมีเงื่อนไขให้มีทางเลือกในการทำงาน 2 ทาง • รูปแบบ if <boolean expression> then <block of statements>else<block of statements> • ตัวอย่าง if i = 0 then i:=j else i:=i+1; true (จริง) false (เท็จ) expression statements statements

  8. t Boolean expression f ประโยค คำสั่ง เงื่อนไขเป็น เท็จ ประโยคคำสั่ง เงื่อนไขเป็น จริง

  9. If (n<30) then writeln(‘n<30’) • Else writeln(n>= 30); • If (condition) then statement • Else if(condition) then statement • Else if(condition) then statement • Else statement;

  10. ให้เขียนโปรแกรม คำนวณ ภาษีรายได้ อัตราก้าวหน้า • ถ้า นอ้ย กว่า 5000 คำนวณ 5% • 5000-7000 คำนวณ 10% • 7000-15000 คำนวณ 50% • > 15000 คำนวณ 70% • แล้วหักออก จากเงินเดือน และรับจริงเท่าใหร่

  11. ให้เขียนโปรแกรม ตรวจสอบค่า x (ที่รับมาจาก keyboard) • ว่า X มีค่าเท่าใหร่ ระหว่าง • 0-100 • 101-200 • 201-300 • >300 • แล้ว แสดงข้อความ ว่า x อยู่ในช่วง เท่าใหร่

  12. โครงสร้างแบบวนซ้ำ (Iteration structure) • เป็นโครงสร้างควบคุมให้ทำงานที่ต้องการซ้ำกันหลาย ๆ ครั้ง ทำให้เขียนโปรแกรมได้ง่ายขึ้น และโปรแกรมมีขนาดสั้นลง • รูปแบบโครงสร้างการทำซ้ำ แบ่งได้เป็น • Nonterminating iteration • Pretest iteration • Posttest iteration • Fixed count iteration

  13. Nonterminating iteration • รูปแบบที่ง่ายที่สุดของโครงสร้างการทำซ้ำ คือ การทำซ้ำแบบไม่มีจุดสิ้นสุด (indefinite repetition) • ตัวอย่างการนำไปใช้งาน เช่น โปรแกรมด้านการสื่อสารที่จำเป็นต้องมีการตรวจสอบตลอดเวลาว่ามีการส่งข้อมูลเข้ามาหรือไม่ • ผู้ฝึกเขียนโปรแกรมควรหลีกเลี่ยงโครงสร้างแบบนี้ เพราะจะมีผลให้โปรแกรมทำงานตลอดเวลา ไม่หยุด

  14. Pretest iteration • โครงสร้างนี้จะมีการกำหนดให้มีการตรวจสอบเงื่อนไขก่อนการทำซ้ำ (loop) • ถ้าผลการตรวจสอบเงื่อนไขเป็นจริงจะทำงานตามคำสั่งที่กำหนด ถ้าเป็นเท็จจะหยุดทำงานนั้น • จำนวนครั้งของการทำซ้ำขึ้นกับเงื่อนที่กำหนด While <condition> do Begin statement; statement; End;

  15. iteration Boolean expression t ประโยคคำสั่ง เงื่อนไขเป็น จริง f

  16. Posttest iteration • โครงสร้างนี้จะมีการทำซ้ำ (loop) ก่อนการกำหนดให้มีการตรวจสอบเงื่อนไข • ถ้าผลการตรวจสอบเงื่อนไขเป็นจริงจะหยุดทำงาน แต่ถ้าเป็นเท็จ จะทำงานตามคำสั่งที่อยู่ใน loop • โครงสร้างนี้ จะทำงานตามคำสั่งใน loop อย่างน้อย 1 ครั้งเสมอ Repeat statement; statement; Until <condition>;

  17. iteration ประโยคคำสั่ง เงื่อนไขเป็น จริง Boolean expression f t

  18. Fixed count iteration • โครงสร้างนี้จะมีการทำซ้ำ (loop) โดยกำหนดจำนวนครั้งที่แน่นอนของการทำซ้ำ • จะใช้ Iterator Control Variable (ICV) เป็นตัวแปรสำหรับกำหนดหรือนับจำนวนครั้งของการทำซ้ำ For <icv> := <initial> to <final> step <increment> do Begin statement; statement; End;

  19. iteration Boolean expression t ประโยคคำสั่ง เงื่อนไขเป็น จริง f

  20. โครงสร้างควบคุมแบบไม่มีเงื่อนไขโครงสร้างควบคุมแบบไม่มีเงื่อนไข • Unconstrained Control Statement • โครงสร้างควบคุมแบบนี้ ยอมให้ผู้เขียนโปรแกรมเขียนคำสั่งเพื่อให้คอมพิวเตอร์ข้ามไปทำงานในส่วนของโปรแกรมที่ต้องการได้ โดยไม่ต้องกำหนดเงื่อนไขใด ๆ • ข้อเสีย คือ ทำให้โปรแกรมอ่านยาก และต้องระวังเรื่องขอบเขตของการกระโดดข้ามไปทำงานของคำสั่ง จึงไม่นิยมใช้ • ตัวอย่างเช่น คำสั่ง GOTO ใน Pascal

  21. ปฏิบัติ • While/do • For/do • Repeat/until

  22. Pre-Test Loop: While-Do var i : integer; i: = 1; while (i <= 5) do begin writeln('i = ', i); i := i + 1; end; (* while *)

  23. First For Loop Example begin var i : integer; var total : integer; total := 0; for i := 1 to 5 do begin total := total + i; writeln('i=', i, ‘ total=', total); end; (* for *) end.

  24. Repeat-Until: An Example (2) var guess : integer; var answer : integer; var choice : char; repeat answer := random(10) + 1; write('Enter your guess: '); readln(guess); if (guess = answer) then writeln('You guessed correctly!') else writeln('You guessed incorrectly'); writeln('Number was ', answer, ', your guess was ', guess); write('Play again? Enter “n” to quit or anything else to continue'); write('Choice: '); readln(choice); writeln; until (choice = 'N') OR (choice = 'n');

  25. การควบคุมระดับกลุ่มของคำสั่ง (Unit level) • โดยทั่วไป ภาษาโปรแกรมจะกำหนดให้มีการรวบรวมคำสั่งที่ต้องการใช้ซ้ำกันหลายครั้งเป็นโปรแกรมย่อย • วัตถุประสงค์ของการเขียนให้มีโปรแกรมย่อย • มีส่วนของโปรแกรมซ้ำกันหลายแห่ง • สร้างคำสั่งใหม่เพื่อเก็บไว้ใช้ต่อไป • ช่วยในการเขียนโปรแกรมแบบบนลงล่าง (Top-Down Design) • แต่ละภาษาอาจเรียกชื่อต่างกันไป เช่น Subprogram, Procedure, Function, Sub

  26. โปรแกรมย่อย : Pascal Procedure • การกำหนดโปรแกรมย่อย (Procedure definition) • ความหมายโปรแกรมย่อย (Procedure semantic) • การส่งผ่านค่า (Parameter passing machanism)

  27. Procedure definition • โครงสร้างของ Procedure ประกอบด้วยส่วนหัว ส่วนประกาศ และส่วนคำสั่ง เช่นเดียวกับโปรแกรม • แต่ละโปรแกรมย่อยเป็นอิสระจากกัน • ประเภทของตัวแปรแบ่งเป็น • Global variable เป็นตัวแปรที่กำหนดไว้ในส่วนประกาศของโปรแกรมหลัก และนำไปใช้ได้ทั้งในโปรแกรมหลัก และโปรแกรมย่อย • Local variable เป็นตัวแปรที่กำหนดไว้ในส่วนประกาศของโปรแกรมย่อย จะใช้ตัวแปรนี้ได้เฉพาะในโปรแกรมย่อยหรือโปรแกรมย่อยภายใน

  28. Procedure semantic • เมื่อ procedure ถูกเรียกใช้ จะมีผลทำให้คอมพิวเตอร์ทำงานตามคำสั่งที่อยู่ภายใน procedure นั้น • จึงต้องมีการเก็บรวบรวมข้อมูลหรือรายละเอียดตัวแปร ค่าคงที่ พารามิเตอร์ ฯลฯ ของ procedure อย่างเป็นระบบ • ข้อมูลเหล่านี้จะเก็บไว้ใน Activation Record ซึ่งประกอบด้วย • Local Environment ข้อมูลแบบ local ทั้งหมดของ procedure • Parameter Environment ข้อมูลของพารามิเตอร์ทั้งหมด • Global Environment Pointer ชี้ไปยัง AR ของ procedure ที่เรียกใช้

  29. x a P Parameter passing machanism • เมื่อถูกเรียกใช้ procedure จะสร้าง AR ของ procedure นั้นขึ้น • AR ใหม่นี้จะถูก push ลงใน Runtime stack • เมื่อ procedure ทำงานเสร็จ AR นี้จึงจะถูก pop ออกจาก stack Program Test; var i : integer; Procedure P(a : integer); var x:integer; begin … end; Begin P(i); End. Top of stack i Test

More Related