Repetitive Instruction Pascal Language
คำสั่งวนลูป เป็นคำสั่งเพื่อบอกให้ทำการทำงานใด ๆ ซ้ำ ๆ กันโดยมีเงื่อนไข หรือการกำหนดจำนวนรอบการวนซ้ำ ประกอบด้วย 3 คำสั่งด้วยกัน While Repeat For
WHILE STATEMENT ลักษณะการดำเนินงานเขียนเป็น flow chart ได้ดังนี้ condition Statements; Other Statements yes no
WHILE STATEMENT มีรูปแบบของคำสั่งดังนี้ WHILE <condition> DO begin Statements; end;
WHILE STATEMENT PROGRAM WHILEPROG; VAR a:integer; BEGIN a := 1; WHILE a<10 DO a := 2*a; WRITELN(“Your number is ”,a); END. Your number is 16
WHILE STATEMENT PROGRAM WHILEPROG; number 2 VAR a:integer; number 4 BEGIN a := 1; WHILE a<10 DO a := 2*a; WRITELN(“number: ”,a); END; END. number 2 number 4 number 8 number 16
REPEAT STATEMENT ลักษณะการดำเนินงานเขียนเป็น flow chart ได้ดังนี้ Statements; condition no yes Other Statements
REPEAT STATEMENT มีรูปแบบของคำสั่งดังนี้ REPEAT Statements; UNTIL <condition>;
REPEAT STATEMENT PROGRAM REPEATPROG; VAR a:integer; BEGIN a := 1; a := 2*a; UNTIL a>10; WRITELN(“Your number is ”,a); END. Your number is 16
REPEAT STATEMENT PROGRAM REPEATPROG; number 2 VAR a:integer; number 4 BEGIN a := 1; REPEAT a := 2*a; WRITELN(“number: ”,a); UNTIL a>10; END. number 2 number 4 number 8 number 16
WHILE & REPEAT ทำซ้ำเมื่อเงื่อนไขเป็นจริง true ตรวจสอบเงื่อนไขก่อนทำ statement ออกจากลูปเมื่อเงื่อนไขเป็นเท็จ ทำเพียง 1 คำสั่งหลัง Do เท่านั้น ถ้าต้องการทำมากกว่า 1 คำสั่งต้องมี begin-end คล่อม ทำซ้ำเมื่อเงื่อนไขเป็นเท็จ false ทำ statement ก่อนตรวจสอบเงื่อนไข ออกจากลูปเมื่อเงื่อนไขเป็นจริง ทำทุกคำสั่งที่อยู่ระหว่าง repeat-until จำนวนเท่าใดก็ได้
Assignment จงเขียนโปรแกรมทำการคำนวณสมการต่อไปนี้ วิธีหาค่าตัวหารร่วมมาก (Greatest Common Divisor) ของ Euclid กล่าวไว้ดังนี้ มีอินพุตเป็น m และ n เป็นจำนวนเต็มที่มากกว่าศูนย์ 1 ให้ r เป็นเศษที่เหลือจากการหาร m ด้วย n 2 ถ้า r เป็นศูนย์ n คือ คำตอบ 3 กำหนดค่า m=n และ n=r แล้วกลับไปทำซ้ำในขั้นที่ 1
Question 1 (While Statement) Read N X = 0; I = 0; I<=N No yes Display X X = X + I; I = I+1;
Question2(Repeat Statement) R = M % N; R=0 Read M,N M = N; N = R; Display Answer Answer = N; No yes
FOR STATEMENT ผังงาน รูปแบบ Var = init final Statements do all value no yes For var := init to/downto final do begin Statement1; statement2; … statementN; End;
FOR STATEMENT Variable = initial no Variable != final and init ~ final statements Variable = variable +1 or variable = variable - 1 no yes Other statements
FOR STATEMENT a number is 1 a number is 2 PROGRAM FORPROG; VAR a,b:integer; BEGIN b := 0; FOR a :=1 TO 4 DO WRITELN(“a number is ”,a); END.
FOR STATEMENT a number is 4 a number is 3 a number is 2 a number is 1 PROGRAM FORPROG; VAR a,b:integer; BEGIN b := 0; FOR a :=4 DOWNTO 1 DO WRITELN(“a number is ”,a); END.
FOR STATEMENT PROGRAM FORPROG; VAR a,b:integer; BEGIN b := 0; 1! = 1 FOR a :=1 TO 4 DO begin b := b+a; WRITELN(a, “ =”,b); end; END. 1! = 1 2! = 3 3! = 6 4! = 10
FOR STATEMENT List : 1a List : 1b PROGRAM REPEATPROG; List : 1c List : 1d List : 2a List : 2b List : 2c List : 2d List : 3a List : 3b List : 3c List : 3d PROGRAM REPEATPROG; VAR a:integer; c:char; BEGIN FOR a :=1 TO 3 DO FOR c := ‘a’ TO ‘d’ DO WRITELN(“List : ”,a,c); END.
Factorial using for loop ข้อสังเกต 1! = 1 2! = 1*2 = 1!*2 = 2 3! = 1*2*3 = 2!*3 = 6 4! = 1*2*3*4 = 3!*4 = 24
Factorial using for loop Program factorialN; Var I,fac:integer; Begin write(“Enter number for factorial: ”); readln(n); fac := 1; for I:=1 to n do begin fac := fac * I; end; writeln(“factorial of ”,n,” is ”, fac); End; start Read n Fac = 1 I=1 to n Fac = fac *1 display n completed stop I fac 1 1*1:1 2 1*2:2 3 2*3:6 4 6*4:24
Extend Statement for Loop มีคำสั่งที่ใช้งานร่วมกับคำสั่งลูป อีก 2 คำสั่งคือ BREAK จะทำการออกจากลูปโดยไม่มีเงื่อนไข CONTINUE จะทำการขึ้นลูปใหม่โดยไม่มีเงื่อนไข
BREAK STATEMENT Program BREAKP; var I:integer; begin for I:= 1 to 5 do writeln(“I is ”, i); if I mod 4 = 0 then break; end; writeln(“break I = ”, i);
continue STATEMENT Program CONTP; var I:integer; begin for I:= 1 to 5 do if I mod 2 = 0 then continue; writeln(“I is ”, i); end; writeln(“break I = ”, i);
ASSIGNMENT จงเขียนโปรแกรมแสดงสูตรคูณแม่ 2 จงเขียนโปรแกรม แปลงเลขฐานสิบเป็นเลขฐานสอง
Read N I = 2 to N J = 2 to I yes I % J = 0 Break; no All J no J = I yes Display I All I