โครงสร้างควบคุม control structure

29
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ Control Control Structure Structure โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ (statement) (statement) โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 2 2 โโโโโ โโโโโ โโโ โโโ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ ( ( statement level) statement level) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ (Unit level) (Unit level)

Upload: lawrence-rich

Post on 30-Dec-2015

49 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

โครงสร�างควบคม โครงสร�างควบคม Control Control StructureStructure ภาษาโปรแกรมจะประกอบด้�วยค�าส��ง ภาษาโปรแกรมจะประกอบด้�วยค�าส��ง (statement) (statement) ที่��ที่��

ส��งให้�คอมพิ�วเตอร"ที่�างาน ส��งให้�คอมพิ�วเตอร"ที่�างาน การที่�างานของแต%ละค�าส��งจะต�องม�ล�าด้�บการที่�างานที่��การที่�างานของแต%ละค�าส��งจะต�องม�ล�าด้�บการที่�างานที่��

ชั�ด้เจน ชั�ด้เจน จ(งต�องม�โครงสร�างควบคม เพิ)�อควบคมล�าด้�บการที่�างานจ(งต�องม�โครงสร�างควบคม เพิ)�อควบคมล�าด้�บการที่�างาน

ของโปรแกรมของโปรแกรม ภาษาโปรแกรมชั�*นส+งแบ%งการควบคมเป,น ภาษาโปรแกรมชั�*นส+งแบ%งการควบคมเป,น 2 2 ระด้�บ ค)อระด้�บ ค)อ

การควบคมระด้�บค�าส��ง การควบคมระด้�บค�าส��ง ((statement level)statement level) การควบคมระด้�บกล%มของค�าส��ง การควบคมระด้�บกล%มของค�าส��ง (Unit level) (Unit level)

การควบคมระด้�บค�าส��ง การควบคมระด้�บค�าส��งStatement levelStatement level

โครงสร�างควบคมที่��ใชั�จ�ด้ล�าด้�บการที่�างานโครงสร�างควบคมที่��ใชั�จ�ด้ล�าด้�บการที่�างานของค�าส��งในโปรแกรมของค�าส��งในโปรแกรม

โด้ยที่��วไปจะม� โด้ยที่��วไปจะม� 3 3 ร+ปแบบ ค)อร+ปแบบ ค)อ โครงสร�างแบบเร�ยงล�าด้�บ โครงสร�างแบบเร�ยงล�าด้�บ (S(Sequencing equencing

structure)structure) โครงสร�างแบบม�เง)�อนไข โครงสร�างแบบม�เง)�อนไข (Selection (Selection

structure)structure) โครงสร�างแบบวนซ้ำ�*า โครงสร�างแบบวนซ้ำ�*า (Iteration (Iteration

structure)structure)

ตามล�าด้�บตามล�าด้�บ

Program test;Program test; Var x : integer;Var x : integer; BeginBegin Readln;Readln; Writeln;Writeln;

End.End.

โครงสร�างแบบเร�ยงลำ�าดั�บโครงสร�างแบบเร�ยงลำ�าดั�บ

PascalPascal If a > b then If a > b then

beginbegin a := a + a := a +

1;1;();();

end;end;

CC If (a > b) If (a > b)

{{a++;a++;(“%”,);(“%”,);

}}

A

B

C

if (num<50) then writeln('E')if (num<50) then writeln('E')else if(num<60) then else if(num<60) then writeln('D')writeln('D')else if(num<70) then else if(num<70) then writeln('C')writeln('C')else if(num<80) then else if(num<80) then writeln('B')writeln('B')else writeln('A');else writeln('A');

แบบมี�ทางเลำ�อก selection

Simple conditionSimple condition

ม�เง)�อนไขที่��ต�องตรวจสอบเพิ�ยงเง)�อนไขเด้�ยว โด้ยตรวจสอบม�เง)�อนไขที่��ต�องตรวจสอบเพิ�ยงเง)�อนไขเด้�ยว โด้ยตรวจสอบว%าต�องที่�างานตามค�าส��งที่��ก�าห้นด้ห้ร)อไม%ว%าต�องที่�างานตามค�าส��งที่��ก�าห้นด้ห้ร)อไม%

ร+ปแบบ ร+ปแบบ if <boolean expression> then if <boolean expression> then <block of statements> <block of statements>

ต�วอย%าง ต�วอย%าง if i>0 then i:=i+1;if i>0 then i:=i+1;

expression

statements

t rue (จร�ง)

Two-alternative Two-alternative conditioncondition โครงสร�างควบคมแบบม�เง)�อนไขให้�ม�ที่างเล)อกในการที่�างาน โครงสร�างควบคมแบบม�เง)�อนไขให้�ม�ที่างเล)อกในการที่�างาน 2 2 ที่างที่าง ร+ปแบบ ร+ปแบบ if <boolean expression> then if <boolean expression> then

<block of statements> <block of statements> elseelse

<block of statements> <block of statements> ต�วอย%าง ต�วอย%าง if i = 0 then i:=j else i:=i+1;if i = 0 then i:=j else i:=i+1;

expression

statements

t rue (จร�ง)

statements

f alse (เท�จ)

Booleanexpression

ประโยค ค�าส��ง เง��อนไขเป น เท�จ ประโยคค�าส��ง เง��อนไขเป น จร�ง

tf

If (n<30) then writeln(‘n<30’)If (n<30) then writeln(‘n<30’) Else writeln(n>= 30);Else writeln(n>= 30);

If (condition) then statementIf (condition) then statement Else if(condition) then statementElse if(condition) then statement Else if(condition) then statementElse if(condition) then statement Else statement;Else statement;

ให้�เข�ยนโปรแกรมี ค�านวณ ภาษี�รายไดั� อ�ตราให้�เข�ยนโปรแกรมี ค�านวณ ภาษี�รายไดั� อ�ตราก�าวห้น�าก�าวห้น�า

ถ้�า นอ�ย กว)า ถ้�า นอ�ย กว)า 50005000 ค�านวณ ค�านวณ 5%5% 5000-70005000-7000 ค�านวณ ค�านวณ 10%10% 7000-150007000-15000 ค�านวณ ค�านวณ 50%50% > 15000> 15000 ค�านวณ ค�านวณ 70%70% แลำ�วห้�กออก จากเง�นเดั�อน แลำะร�บจร�งเท)าให้ร)แลำ�วห้�กออก จากเง�นเดั�อน แลำะร�บจร�งเท)าให้ร)

ให้�เข�ยนโปรแกรมี ตรวจสอบค)า ให้�เข�ยนโปรแกรมี ตรวจสอบค)า x x ((ท��ร �บมีาจาก ท��ร �บมีาจาก keyboardkeyboard))

ว)า ว)า X X มี�ค)าเท)าให้ร) ระห้ว)างมี�ค)าเท)าให้ร) ระห้ว)าง 0-1000-100 101-200101-200 201-300201-300 >300>300 แลำ�ว แสดังข�อความี ว)า แลำ�ว แสดังข�อความี ว)า x x อย*)ในช่)วง เท)าให้ร)อย*)ในช่)วง เท)าให้ร)

โครงสร�างแบบวนซ้ำ�-า โครงสร�างแบบวนซ้ำ�-า (Iteration (Iteration structure)structure)

เป,นโครงสร�างควบคมให้�ที่�างานที่��ต�องการเป,นโครงสร�างควบคมให้�ที่�างานที่��ต�องการซ้ำ�*าก�นห้ลาย ๆ คร�*ง ที่�าให้�เข�ยนโปรแกรมได้�ซ้ำ�*าก�นห้ลาย ๆ คร�*ง ที่�าให้�เข�ยนโปรแกรมได้�ง%ายข(*น และโปรแกรมม�ขนาด้ส�*นลงง%ายข(*น และโปรแกรมม�ขนาด้ส�*นลง

ร+ปแบบโครงสร�างการที่�าซ้ำ�*า แบ%งได้�เป,นร+ปแบบโครงสร�างการที่�าซ้ำ�*า แบ%งได้�เป,น Nonterminating iterationNonterminating iteration Pretest iterationPretest iteration Posttest iterationPosttest iteration Fixed count iterationFixed count iteration

Nonterminating Nonterminating iterationiteration ร+ปแบบที่��ง%ายที่��สด้ของโครงสร�างการที่�าซ้ำ�*า ค)อ ร+ปแบบที่��ง%ายที่��สด้ของโครงสร�างการที่�าซ้ำ�*า ค)อ

การที่�าซ้ำ�*าแบบไม%ม�จด้ส�*นสด้ การที่�าซ้ำ�*าแบบไม%ม�จด้ส�*นสด้ (indefinite (indefinite repetition) repetition)

ต�วอย%างการน�าไปใชั�งาน เชั%น โปรแกรมด้�านการต�วอย%างการน�าไปใชั�งาน เชั%น โปรแกรมด้�านการส)�อสารที่��จ�าเป,นต�องม�การตรวจสอบตลอด้เวลาว%าส)�อสารที่��จ�าเป,นต�องม�การตรวจสอบตลอด้เวลาว%าม�การส%งข�อม+ลเข�ามาห้ร)อไม%ม�การส%งข�อม+ลเข�ามาห้ร)อไม%

ผู้+�ฝึ2กเข�ยนโปรแกรมควรห้ล�กเล��ยงโครงสร�างผู้+�ฝึ2กเข�ยนโปรแกรมควรห้ล�กเล��ยงโครงสร�างแบบน�* เพิราะจะม�ผู้ลให้�โปรแกรมที่�างานตลอด้แบบน�* เพิราะจะม�ผู้ลให้�โปรแกรมที่�างานตลอด้เวลา ไม%ห้ยด้เวลา ไม%ห้ยด้

Pretest iterationPretest iteration

โครงสร�างน�*จะม�การก�าห้นด้ให้�ม�การตรวจโครงสร�างน�*จะม�การก�าห้นด้ให้�ม�การตรวจสอบเง)�อนไขก%อนการที่�าซ้ำ�*า สอบเง)�อนไขก%อนการที่�าซ้ำ�*า ((loop) loop)

ถ้�าผู้ลการตรวจสอบเง)�อนไขเป,นจร�งจะถ้�าผู้ลการตรวจสอบเง)�อนไขเป,นจร�งจะที่�างานตามค�าส��งที่��ก�าห้นด้ ถ้�าเป,นเที่4จจะที่�างานตามค�าส��งที่��ก�าห้นด้ ถ้�าเป,นเที่4จจะห้ยด้ที่�างานน�*นห้ยด้ที่�างานน�*น

จ�านวนคร�*งของการที่�าซ้ำ�*าข(*นก�บเง)�อนที่��จ�านวนคร�*งของการที่�าซ้ำ�*าข(*นก�บเง)�อนที่��ก�าห้นด้ก�าห้นด้

While <condition> doBegin

statement;statement;

End;

Booleanexpression

ประโยคค�าส��ง เง��อนไขเป น จร�ง

t

f

iteration

Posttest iterationPosttest iteration

โครงสร�างน�*จะม�การที่�าซ้ำ�*า โครงสร�างน�*จะม�การที่�าซ้ำ�*า ((loop) loop) ก%อนก%อนการการก�าห้นด้ให้�ม�การตรวจสอบเง)�อนไขก�าห้นด้ให้�ม�การตรวจสอบเง)�อนไข

ถ้�าผู้ลการตรวจสอบเง)�อนไขเป,นจร�งจะห้ยด้ถ้�าผู้ลการตรวจสอบเง)�อนไขเป,นจร�งจะห้ยด้ที่�างาน แต%ถ้�าเป,นเที่4จ จะที่�างานตามค�าส��งที่��ที่�างาน แต%ถ้�าเป,นเที่4จ จะที่�างานตามค�าส��งที่��อย+%ใน อย+%ใน looploop

โครงสร�างน�* จะที่�างานตามค�าส��งใน โครงสร�างน�* จะที่�างานตามค�าส��งใน loop loop อย%างน�อย อย%างน�อย 1 1 คร�*งเสมอคร�*งเสมอ

Repeatstatement;statement;

Until <condition>;

Booleanexpression

ประโยคค�าส��ง เง��อนไขเป น จร�ง

t

f

iteration

Fixed count iterationFixed count iteration

โครงสร�างน�*จะม�การที่�าซ้ำ�*า โครงสร�างน�*จะม�การที่�าซ้ำ�*า ((loop) loop) โด้ยโด้ยก�าห้นด้จ�านวนคร�*งที่��แน%นอนของการที่�าซ้ำ�*า ก�าห้นด้จ�านวนคร�*งที่��แน%นอนของการที่�าซ้ำ�*า

จะใชั� จะใชั� Iterator Control Variable Iterator Control Variable (ICV) (ICV) เป,นต�วแปรส�าห้ร�บก�าห้นด้ห้ร)อน�บเป,นต�วแปรส�าห้ร�บก�าห้นด้ห้ร)อน�บจ�านวนคร�*งของการที่�าซ้ำ�*าจ�านวนคร�*งของการที่�าซ้ำ�*า

For <icv> := <initial> to <final> step <increment> do Begin

statement;statement;

End;

Booleanexpression

ประโยคค�าส��ง เง��อนไขเป น จร�ง

t

f

iteration

โครงสร�างควบคมแบบไม%ม�โครงสร�างควบคมแบบไม%ม�เง)�อนไขเง)�อนไข Unconstrained Control StatementUnconstrained Control Statement โครงสร�างควบคมแบบน�* ยอมให้�ผู้+�เข�ยนโครงสร�างควบคมแบบน�* ยอมให้�ผู้+�เข�ยน

โปรแกรมเข�ยนค�าส��งเพิ)�อให้�คอมพิ�วเตอร"ข�ามไปโปรแกรมเข�ยนค�าส��งเพิ)�อให้�คอมพิ�วเตอร"ข�ามไปที่�างานในส%วนของโปรแกรมที่��ต�องการได้� โด้ยไม%ที่�างานในส%วนของโปรแกรมที่��ต�องการได้� โด้ยไม%ต�องก�าห้นด้เง)�อนไขใด้ ๆ ต�องก�าห้นด้เง)�อนไขใด้ ๆ

ข�อเส�ย ค)อ ที่�าให้�โปรแกรมอ%านยาก และต�องข�อเส�ย ค)อ ที่�าให้�โปรแกรมอ%านยาก และต�องระว�งเร)�องขอบเขตของการกระโด้ด้ข�ามไปที่�างานระว�งเร)�องขอบเขตของการกระโด้ด้ข�ามไปที่�างานของค�าส��ง จ(งไม%น�ยมใชั�ของค�าส��ง จ(งไม%น�ยมใชั�

ต�วอย%างเชั%น ค�าส��ง ต�วอย%างเชั%น ค�าส��ง GOTO GOTO ใน ใน PascalPascal

While/doWhile/do For/doFor/do

Repeat/untilRepeat/until

ปฏิ�บ�ต�

var i : integer;var i : integer;

i: = 1;i: = 1;

while (i <= 5) dowhile (i <= 5) do

beginbegin

writeln('i = ', i);writeln('i = ', i);

i := i + 1;i := i + 1;

end; (* while *)end; (* while *)

Pre-Test Loop: While-Pre-Test Loop: While-DoDo

First For Loop ExampleFirst For Loop Example

beginbegin

var i : integervar i : integer;; var total : integervar total : integer;; total := 0total := 0;; for i := 1 to 5 dofor i := 1 to 5 do beginbegin total := total + itotal := total + i;; writeln('i=', i, ‘ total=', total)writeln('i=', i, ‘ total=', total);; endend;; (* for *) (* for *)endend..

Repeat-Until: An Repeat-Until: An Example (2)Example (2) var guess : integer;var guess : integer;

var answer : integer;var answer : integer; var choice : char;var choice : char; repeatrepeat answer := random(10) + 1answer := random(10) + 1;; write('Enter your guess: ')write('Enter your guess: ');; readln(guess)readln(guess);; if (guess = answer) thenif (guess = answer) then writeln('You guessed correctly!')writeln('You guessed correctly!') elseelse writeln('You guessed incorrectly')writeln('You guessed incorrectly');; writeln('Number was ', answer, ', your guess was ', guess)writeln('Number was ', answer, ', your guess was ', guess);; write('Play again? Enter “n” to quit or anything else to continue')write('Play again? Enter “n” to quit or anything else to continue');; write('Choice: ')write('Choice: ');; readln(choice)readln(choice);; writelnwriteln;; until (choice = 'N') OR (choice = 'n')until (choice = 'N') OR (choice = 'n');;

การควบคมระด้�บกล%มของค�าส��ง การควบคมระด้�บกล%มของค�าส��ง(Unit level)(Unit level) โด้ยที่��วไป ภาษาโปรแกรมจะก�าห้นด้ให้�ม�การรวบรวมโด้ยที่��วไป ภาษาโปรแกรมจะก�าห้นด้ให้�ม�การรวบรวม

ค�าส��งที่��ต�องการใชั�ซ้ำ�*าก�นห้ลายคร�*งเป,นโปรแกรมย%อยค�าส��งที่��ต�องการใชั�ซ้ำ�*าก�นห้ลายคร�*งเป,นโปรแกรมย%อย ว�ตถ้ประสงค"ของการเข�ยนให้�ม�โปรแกรมย%อยว�ตถ้ประสงค"ของการเข�ยนให้�ม�โปรแกรมย%อย

ม�ส%วนของโปรแกรมซ้ำ�*าก�นห้ลายแห้%ง ม�ส%วนของโปรแกรมซ้ำ�*าก�นห้ลายแห้%ง สร�างค�าส��งให้ม%เพิ)�อเก4บไว�ใชั�ต%อไปสร�างค�าส��งให้ม%เพิ)�อเก4บไว�ใชั�ต%อไป ชั%วยในการเข�ยนโปรแกรมแบบบนลงล%าง ชั%วยในการเข�ยนโปรแกรมแบบบนลงล%าง (Top-Down (Top-Down

Design)Design) แต%ละภาษาอาจเร�ยกชั)�อต%างก�นไป เชั%น แต%ละภาษาอาจเร�ยกชั)�อต%างก�นไป เชั%น

Subprogram, Procedure, Function, Subprogram, Procedure, Function, SubSub

โปรแกรมย%อย โปรแกรมย%อย : : Pascal PascalProcedureProcedure การก�าห้นดัโปรแกรมีย)อย การก�าห้นดัโปรแกรมีย)อย (Procedure (Procedure

definition)definition) ความีห้มีายโปรแกรมีย)อย ความีห้มีายโปรแกรมีย)อย (Procedure (Procedure

semantic)semantic) การส)งผ่)านค)า การส)งผ่)านค)า (Parameter passing (Parameter passing

machanism)machanism)

Procedure definitionProcedure definition

โครงสร�างของ โครงสร�างของ Procedure Procedure ประกอบด้�วยส%วนห้�ว ประกอบด้�วยส%วนห้�ว ส%วนประกาศ และส%วนค�าส��ง เชั%นเด้�ยวก�บโปรแกรมส%วนประกาศ และส%วนค�าส��ง เชั%นเด้�ยวก�บโปรแกรม

แต%ละโปรแกรมย%อยเป,นอ�สระจากก�น แต%ละโปรแกรมย%อยเป,นอ�สระจากก�น ประเภที่ของต�วแปรแบ%งเป,นประเภที่ของต�วแปรแบ%งเป,น

Global variable Global variable เป,นต�วแปรที่��ก�าห้นด้ไว�ในส%วนเป,นต�วแปรที่��ก�าห้นด้ไว�ในส%วนประกาศของโปรแกรมห้ล�ก และน�าไปใชั�ได้�ที่�*งในโปรแกรมประกาศของโปรแกรมห้ล�ก และน�าไปใชั�ได้�ที่�*งในโปรแกรมห้ล�ก และโปรแกรมย%อยห้ล�ก และโปรแกรมย%อย

Local variable Local variable เป,นต�วแปรที่��ก�าห้นด้ไว�ในส%วนเป,นต�วแปรที่��ก�าห้นด้ไว�ในส%วน ประกาศของโปรแกรมย%อย จะใชั�ต�วแปรน�*ได้�เฉพิาะใน ประกาศของโปรแกรมย%อย จะใชั�ต�วแปรน�*ได้�เฉพิาะใน

โปรแกรมย%อยห้ร)อโปรแกรมย%อยภายในโปรแกรมย%อยห้ร)อโปรแกรมย%อยภายใน

เม)�อ เม)�อ procedure procedure ถ้+กเร�ยกใชั� จะม�ผู้ลที่�าให้�คอมพิ�วเตอร"ถ้+กเร�ยกใชั� จะม�ผู้ลที่�าให้�คอมพิ�วเตอร"ที่�างานตามค�าส��งที่��อย+%ภายใน ที่�างานตามค�าส��งที่��อย+%ภายใน procedure procedure น�*นน�*น

จ(งต�องม�การเก4บรวบรวมข�อม+ลห้ร)อรายละเอ�ยด้ต�วแปร ค%าจ(งต�องม�การเก4บรวบรวมข�อม+ลห้ร)อรายละเอ�ยด้ต�วแปร ค%าคงที่�� พิาราม�เตอร" ฯลฯ ของ คงที่�� พิาราม�เตอร" ฯลฯ ของ procedure procedure อย%างเป,นระบบอย%างเป,นระบบ

ข�อม+ลเห้ล%าน�*จะเก4บไว�ใน ข�อม+ลเห้ล%าน�*จะเก4บไว�ใน Activation Record Activation Record ซ้ำ(�งซ้ำ(�งประกอบด้�วยประกอบด้�วย Local Environment Local Environment ข�อม+ลแบบ ข�อม+ลแบบ local local ที่�*งห้มด้ของที่�*งห้มด้ของ

procedureprocedure Parameter Environment Parameter Environment ข�อม+ลของพิาราม�เตอร"ที่�*งห้มด้ข�อม+ลของพิาราม�เตอร"ที่�*งห้มด้ Global Environment Pointer Global Environment Pointer ชั�*ไปย�ง ชั�*ไปย�ง AR AR ของ ของ

procedure procedure ที่��เร�ยกใชั�ที่��เร�ยกใชั�

Procedure semanticProcedure semantic

Parameter passing machanismParameter passing machanism เม)�อถ้+กเร�ยกใชั� เม)�อถ้+กเร�ยกใชั� procedure procedure จะสร�าง จะสร�าง AR AR ของ ของ

procedure procedure น�*นข(*นน�*นข(*น AR AR ให้ม%น�*จะถ้+ก ให้ม%น�*จะถ้+ก push push ลงใน ลงใน Runtime stack Runtime stack เม)�อ เม)�อ procedure procedure ที่�างานเสร4จ ที่�างานเสร4จ AR AR น�*จ(งจะถ้+ก น�*จ(งจะถ้+ก

pop pop ออกจาก ออกจาก stackstack

Program Test;var i : integer;Procedure P(a : integer);var x:integer;begin

… end;Begin

P(i);End.

i Test

Pxa

Top of stack