หลักการนำข้อมูลออกของคอมพิวเตอร์
ในการประมวลผลข้อมูลของคอมพิวเตอร์ จะมีการนำข้อมูลเข้าไปในหน่วยความจำก่อน ต่อจากนั้นจะมีการเคลื่อนย้ายข้อมูลเข้าและออกระหว่างหน่วยความจำกับหน่วยประมวลผลกลาง (CPU) เพื่อทำการประมวลผลตามคำสั่งจากโปรแกรม ข้อมูลและผลลัพธ์ที่ได้จะคงถูกเก็บอยู่ในหน่วยความจำเช่นเดิม ข้อมูลเหล่านี้จะหายไปเมื่อคอมพิวเตอร์หยุดทำงาน หรือเมื่อมีโปรแกรมอื่นเข้ามาแทน ตามปกติโปรแกรมส่วนใหญ่มักจะมีการสั่งให้นำข้อมูลออกจากหน่วยความจำเสมอ ซึ่งอาจจะเพื่อแสดงที่จอภาพ พิมพ์ที่เครื่องพิมพ์ บันทึกไว้ในดิสก์ ส่งเสียงที่ลำโพง เป็นต้น
ในภาษาปาสคาล มีวิธีนำข้อมูลออกจากหน่วยความจำโดยใช้คำสั่ง Write หรือ WirteLn (Wirte-Line)
รูปแบบของ Write และ WriteLn
![]() |
คำสั่ง Write และ WirteLn มีรูปแบบดังนี้
จากรูปแบบข้างต้นมีความหมายดังต่อไปนี้
1. OUTPUT หมายถึง ตัวแปรที่เป็นชื่อของอุปกรณ์เอาต์พุตของคอมพิวเตอร์ซึ่งอาจจะเป็นจอภาพ เครื่องพิมพ์ พล็อตเตอร์ ดิสก์ ลำโพง หรืออื่น ๆ ถ้าส่วนนี้ไม่ระบุตัวแปรเอาไว้ แสดงว่าให้แสดงที่จอภาพ
2. Item1, …… , itemN คือข้อมูลต่าง ๆ ที่นำออกตั้งแต่รายการที่ 1 ถึงรายการที่ N แต่ละรายการจะคั่นด้วยเครื่องหมาย , ข้อมูลแต่ละรายการจะถูกนำออกเรียงตามลำดับจากรายการแรกถึงรายการสุดท้าย ถ้าเป็นการแสดงที่จอภาพ รายการข้อมูลจะเรียงอยู่ในแถวเดียวกัน
3. ข้อมูลแต่ละรายการ (item) อาจจะมีคุณสมบัติดังต่อไปนี้
8 เป็นสตริง (string) คือข้อมูลที่อยู่ในเครื่องหมาย ' ' เช่น 'HI' '4+5 = '
8 เป็นตัวแปร เช่น CarnName TotalAmount Done
8 เป็นการคำนวณ เช่น 4 + 5 (ซึ่งจะได้ผลลัพธ์เป็น 9) Value1 + Value2 (จะได้ผลลัพธ์เท่ากับผลบวกของค่าที่อยู่ใน Value1 และ Value2 )
4. สำหรับที่จอภาพ WriteLn เมื่อแสดงข้อมูลที่มีใน ( ) หมดแล้ว เคอร์เซอร์จะเลื่อนลงมาอยู่ที่คอลัมน์ที่ 1 ของแถวล่างที่อยู่ถัดลงมา ส่วน Write เคอร์เซอร์จะอยู่ตอนท้ายของแถวเดิม
ตัวอย่างที่ 1 คำสั่ง Write (' 4 + 5 = ', 4 +5 )
การแสดงผลที่จอภาพ 4 + 5 = 9 o (ตำแหน่งเคอร์เซอร์)
ตัวอย่างที่ 2 คำสั่ง WriteLn (' 4 + 5 = ', 4 +5 )
การแสดงผลที่จอภาพ 4 + 5 = 9
o (ตำแหน่งเคอร์เซอร์)
5. สำหรับ WriteLn ที่ไม่มี ( ) ต่อท้าย หมายถึง การเลื่อนเคอร์เซอร์ลงมาอยู่ที่คอลัมน์ที่ 1 ของล่างที่อยู่ถัดลงมา โดยไม่มีการแสดงข้อใด ๆ
ตัวอย่างที่ 3 คำสั่ง WriteLn
การแสดงผลที่จอภาพ
o (ตำแหน่งเคอร์เซอร์)
การกำหนดตำแหน่งแสดงข้อมูลที่จอภาพ
จากโปรแกรมที่ผ่านมาจะเห็นได้ว่า คอมพิวเตอร์จะแสดงข้อมูลเริ่มจากทางด้านซ้ายสุดของจอภาพและเรียงลำดับไปทางขวาเสมอ ในกรณีที่เราต้องการจัดตำแหน่งแสดงข้อมูลให้แตกต่าง ไปจากนี้สามารถทำได้ โดยปาสคาลกำหนดรูปแบบไว้ดังนี้
![]() |
ข้อมูลที่ไม่มีทศนิยม มีรูปแบบดังนี้
ตัวอย่าง WriteLn ('Pascal' : 20);
สตริง Pascal ถูกกำหนดให้มีความยาว 20 ตัวอักษร ซึ่งจำนวนที่แท้จริงคือ 6 ตัวอักษร ดั้งนั้นคอมพิวเตอร์จะเติมเครื่องหมายวรรคเข้าข้างหน้าคำ Pascal อีก 14 ตัวเพื่อให้ครบ 20 ตัวอักษร แล้วแสดงข้อมูลโดยกำหนดตำแหน่งต่าง ๆ ดังนี้
อักษร l อยู่ตำแหน่ง 20 นับจากทางซ้ายของจอภาพ
a อยู่ตำแหน่ง 19 นับจากทางซ้ายของจอภาพ
c อยู่ตำแหน่ง 18 นับจากทางซ้ายของจอภาพ
P อยู่ตำแหน่ง 15 นับจากทางซ้ายของจอภาพ
ข้อมูลที่มีทศนิยม มีรูปแบบดังนี้
ตัวอย่าง WriteLn(123.456789 :9:2);
ในที่นี้กำหนดให้ 123.456789 มีความยาวเป็น 9 ตัวอักษร (รวมจุดทศนิยม 1 อักษรด้วย) และกำหนดให้มีเลขหลังจุดทศนิยม 2 ตำแหน่ง
คอมพิวเตอร์ จะแสดงที่จอภาพดังนี้ 123.46
โดย เลข 6 อยู่ที่ตำแหน่ง 9 นับจากทางซ้าย
เลข 4 อยู่ที่ตำแหน่ง 8 นับจากทางซ้าย
เลข 1 อยู่ที่ตำแหน่ง 4 นับจากทางซ้าย
จุดทศนิยม อยู่ที่ตำแหน่ง 7 นับจากทางซ้าย
การคำนวณเลขคณิต (Arithmatic Expression)
การคำนวณค่าทางเลขคณิต ปาสคาลมีการกระทำหรือโอเปอเรชัน (operation) รวม 6 รายการ แต่ละรายการมีเครื่องหมายหรือโอเปอเรเตอร์ (operator) ดังตารางต่อไปนี้
โอเปอเรชัน | โอเปอเรเตอร์ | ตัวอย่าง |
บวก | + | Year + 1 |
ลบ | - | Year - 1 |
คูณ | * | Price * Quantity |
หาร อินทีเจอร์ | DIV | 8 DIV 3 { ได้ค่าเป็น 2 } |
หาร | / | 8/3 { ได้ค่าเป็น 2.666} |
modulue | MOD | 17 MOD 12 { ได้ค่าเป็น 5} |
ลำดับการคำนวณ (Precedence)
ในกรณีที่การคำนวณประกอบด้วยโอเปอรเรเตอร์หลายตัว จะมีลำดับการคำนวณดังนี้
1. การคำนวณที่อยู่ในเครื่องหมายวงเล็บ ( ) จะมีการกระทำเป็นลำดับแรก
2. เครื่องหมาย * / DIV MOD มีลำดับการคำนวณก่อน + และ -
3. การคำนวณทีมีเครื่องหมายที่มีลำดับเท่ากันอยู่ด้วยกันจะมีการคำนวณจากทางซ้ายไปทางขวาตามลำดับ
ตัวอย่าง แสดงผลของการคำนวณจากโจทย์ 5*10+2*5 เมื่อกำหนดการคำนวณให้มีลำดับแตกต่างกัน
|
ซึ่งจะได้ผลลัพธ์ดังนี้
5*10+2*5 = 60
5*(10+2)*5 = 300
(5*10)+(2*5) = 60
((5*10)+2)*5 = 260
5*(10+(2*5)) = 100
การแสดงค่าจากตัวแปร
ตัวแปรเป็นชื่อของหน่วยความจำที่ใช้สำหรับเก็บข้อมูล
ตัวอย่าง สมมติมีการตั้งชื่อดังนี้
VAR Inches : Real;
Weight : Integer;
สามารถสร้างเป็นภาพความคิดได้ดังนี้
หน่วยความจำชื่อ Inches มีขนาด 6 ไบต์
ใช้สำหรับเก็บข้อมูลชนิดตัวเลขที่มีทศนิยม
หน่วยความจำชื่อ Weight มีขนาด 2 ไบต์
ใช้สำหรับเก็บข้อมูลชนิดตัวเลขที่ไม่มีทศนิยม
ตัวอย่างที่ โปรแกรมแสดงการสร้าง กำหนดค่า และแสดงค่าจากตัวแปรชนิดอินทรีเจอร์ซึ่งใช้สำหรับเก็บค่าตัวเลขที่ไม่มีทศนิยม
|
การรับข้อมูลเข้า (Read, ReadLn Statement)
หลักการรับข้อมูล
เพื่อให้โปรแกรมใช้งานได้อย่างกว้างขวางและสะดวกในโปรแกรมส่วนใหญ่จึงไม่กำหนดค่าของ ตัวแปรไว้ในโปรแกรม แต่จะใช้วิธีการรับค่าเข้าไปตอนโปรแกรมทำงาน
คอมพิวเตอร์จะรับข้อมูลเข้ามาในหน่วยความจำโดยผ่านทางอุปกรณ์อินพุต (Input devices) เช่น คีย์บอร์ด (keyboard) ดิสก์ไดร์ฟ (disk drive) เมาส์ (mouse) ซึ่งปาสคาลจะรับข้อมูลด้วยคำสั่ง Read และ ReadLn (Read-Line)
รูปแบบของ Read และ ReadLn
![]() |
คำสั่ง Read และ ReadLn มีรูปแบบดังนี้
จากรูปแบบข้างต้นมีความหมายดังต่อไปนี้
1. Input หมายถึง ตัวแปรที่เป็นชื่ออุปกรณ์อินพุตของคอมพิวเตอร์ ซึ่งอาจจะเป็นคีย์บอร์ด ดิสก์ เมาส์ หรืออื่น ๆ ถ้าส่วนนี้ไม่ระบุตัวแปรเอาไว้ แสดงว่าว่างให้รับข้อมูลจากคีย์บอร์ด
2. Var1,…VarN คือตัวแปรสำหรับเก็บข้อมูลแต่ละรายการที่รับเข้ามา ตั้งแต่รายการที่ 1 ถึงรายการที่ N แต่ละรายการจะคั่นด้วยเครื่องหมาย , เวลาป้อนข้อมูลจะต้องคั่นแต่ละรายการด้วยเครื่องหมายวรรค หรือกดคีย์ Enter ข้อมูลที่รับเข้ามาจะถูกนำไปเก็บในตัวแปรแต่ละตัวเรียงตามลำดับจากซ้ายไปขวา
3. ตัวแปรแต่ละตัวจะรับข้อมูลได้เฉพาะที่เป็นชนิดเดียวกันถ้าป้อนข้อมูลผิดชนิดเช่น
Var Year : integer;
ถ้าเราป้อนข้อมูลเป็น 12.50 จะเกิดความผิดพลาดประเภท Run time Error ขึ้นซึ่งจะมีผลให้โปรแกรมหยุดการทำงานทันที
4. สำหรับจอภาพ ReadLn เมื่อรับข้อมูลครบตามจำนวนตัวแปรที่มีใน ( ) แล้วเคอร์เซอร์จะเลื่อนลงมาอยู่ที่ที่คอลัมน์ที่ 1 ของแถวล่างที่อยู่ถัดลงมา ส่วน Read เคอร์เซอร์จะอยู่ตอนท้ายของแถวเดิม
ตัวอย่างที่ 1 คำสั่ง Read(Name,Age)
ป้อนข้อมูล Bamrung 50 กดคีย์ Enter
แสดงที่จอ Bamrung 50 o (ตำแหน่งเคอร์เซอร์)
ตัวอย่างที่ 2 คำสั่ง ReadLn(Name,Age)
ป้อนข้อมูล Bamrung 50 กดคีย์ Enter
แสดงที่จอ Bamrung 50
o (ตำแหน่งเคอร์เซอร์)
5. สำหรับ ReadLn ที่ไม่มี ( ) ต่อท้าย หมายถึงการหยุดรอรับการกดคีย์ Enter เมื่อคีย์ Enter ถูกกด โปรแกรมจะทำตามคำสั่งที่อยู่ต่อมา
ตัวอย่าง คำสั่ง Write ('Press Enter'); ReadLn;
แสดงที่จอ Press Enter o
กดคีย์ Enter
แสดงที่จอ o (ตำแหน่งเคอร์เซอร์)
คำสั่งตามตัวอย่างนี้ นิยมใช้ในกรณีที่ต้องการให้โปรแกรมหยุดการทำงานชั่วคราว และเมื่อกดแป้น Enter โปรแกรมจะทำงานต่อไป
ตัวอย่างคำสั่ง Read และ ReadLn
![]() |
ตัวอย่าง โปรแกรม แสดงการรับข้อมูลสตริงที่เป็นชื่อคน เมื่อป้อนข้อมูลแล้วคอมพิวเตอร์จะแสดงข้อความ Hi (ชื่อ)
โปรแกรมแสดงผลดังนี้
Input your Name
พิมพ์ชื่อ CHAIYA กดคีย์ Enter
ที่หน่วยความจำ Name มีข้อมูลดังนี้ Name
CHAIYA
ที่จอภาพจะเป็นดังนี้
Hi CHAIYA
ลูปแบบ Repeat
การทำซ้ำ
สมมติว่าต้องการใช้คอมพิวเตอร์แสดงข้อความต่อไปนี้
I am a MEDIA INTELLIGENCE TECHNOLOGY .
I am a MEDIA INTELLIGENCE TECHNOLOGY .
I am a MEDIA INTELLIGENCE TECHNOLOGY .
I am a MEDIA INTELLIGENCE TECHNOLOGY .
I am a MEDIA INTELLIGENCE TECHNOLOGY .
นักเรียนมีวิธีการเขียนโปรแกรมได้ 2 วิธีคือ
1. เขียนทุกคำสั่ง ดังนี้
WriteLn(‘I am a MEDIA INTELLIGENCE TECHNOLOGY . ’);
WriteLn(‘I am a MEDIA INTELLIGENCE TECHNOLOGY . ’);
WriteLn(‘I am a MEDIA INTELLIGENCE TECHNOLOGY . ’);
WriteLn(‘I am a MEDIA INTELLIGENCE TECHNOLOGY . ’);
WriteLn(‘I am a MEDIA INTELLIGENCE TECHNOLOGY . ’);
วิธีการนี้อาจจะไม่สะดวกถ้าคำสั่งมีจำนวนมาก ๆ
2. โปรแกรมคอมพิวเตอร์มีวิธีการเฉพาะสำหรับดำเนินการกับงานที่ต้องทำซ้ำ ๆ เรียกว่าการทำงานในลักษณะลูป (Loop) ในภาษาปาสคาลมีอยู่ 3 แบบ คือ Repeat While และ For
หลักการทำงานของโปรแกรมในลักษณะลูปก็คือ โปรแกรมจะทำงานตามคำสั่งในคำสั่งชุดเดิมซ้ำ ๆ กัน จนกระทั่งสอดคล้องกับเงื่อนไขที่เป็นจริง (True) หรือเท็จ (False) แล้วแต่กรณีของลูปแต่ละแบบ
ค่าของเงื่อนไขที่เป็นจริงหรือเท็จนี้ได้มาจากการกระทำ 2 ประเภท คือ การเปรียบเทียบ (Relational expression) และการหาค่าบูลีน (Boolean expression)
การเปรียบเทียบ
การเปรียบเทียบ หรือรีเลชันนอลเอกซ์เพรสชัน หมายถึง การหาคำตอบว่าเมื่อนำค่าที่อยู่ทางด้านซ้ายและทางขวาของโอเปอเรเตอร์เปรียบเทียบ มาเปรียบเทียบกันแล้วจะได้ผลเป็นจริงหรือเท็จ
การเปรียบเทียบมี 6 กรณี แต่ละกรณีจะได้ผลเป็นจริงหรือเท็จ อย่างใดอย่างหนึ่งเพียงอย่างเดียว ดังตาราง
โอเปอเรชั่น | โอเปอเรเตอร์ | ชนิดของข้อมูลที่ใช้ได้ (Y) | ||||
เท่ากับ | = | ซิมเปิล | สตริง | เซต | พอยน์เตอร์ | เรคอร์ด |
ไม่เท่ากับ | < > | Y | Y | Y | Y | Y |
น้อยกว่า | < | Y | Y | |||
มากกว่า | > | Y | Y | |||
น้อยกว่าหรือเท่ากับ | <= | Y | Y | |||
มากกว่าหรือเท่ากับ | >= | Y | Y | |||
ตารางแสดงการเปรียบเทียบของโอเปอเรเตอร์แบบต่าง ๆ
ตัวอย่าง
ถ้า A มีค่าเป็น 5 B มีค่าเป็น 5 และ C มีค่าเป็น 4
A = B Ture A <> B False
A < B False A > B False
A > C Ture C <= A Ture
C >= B False
การหาค่าบูลีน
การหาค่าบูลีนหรือบูลีนเอ็กเพรสชัน เป็นการหาผลลัพธ์จากบูลีนโอเปอเรเตอร์ตามหลักของคณิตศาสตร์บูลีน บูลีนโอเปอเรเตอร์มีหลายตัว แต่นำมาใช้บ่อย ๆ ในการเขียนโปรแกรมมี 4 ตัว ได้แก่ NOT AND OR และ XOR ผลลัพธ์ที่ได้จากการหาค่าบูลีนก็คือ true หรือ false อย่างใดอย่างหนึ่ง
ตัวอย่าง เมื่อกำหนดให้ a และ b เป็น true และ false ในกรณีต่าง ๆ ที่เป็นไปได้ ค่าบูลีนที่ได้จากโอเปอเรเตอร์ NOT AND OR และ XOR จะเป็นดังตาราง
A | b | NOT a | a AND b | a OR b | a XOR b |
true | true | false | true | true | false |
true | false | false | false | true | true |
false | true | true | false | true | true |
false | false | true | false | false | false |
ลักษณะลูปแบบ Repeat
ลูปแบบ repeat จะทำงานตามคำสั่งจำนวนหนึ่งไปจนกระทั่งเงื่อนไขเป็นจริงแล้วจึงเลิกทำ แต่ถ้าเงื่อนไขเป็นเท็จจะทำงานตามคำสั่งจำนวนนั้นซ้ำอีก โดยแสดงลักษณะดังภาพ
Repeat
คำสั่ง;
...
คำสั่ง;
เท็จ
เงื่อนไขเป็น
จริง
จบ
รูปแบบของ Repeat
คำสั่ง Repeat มีรูปแบบดังนี้
Repeat
คำสั่ง ;
...
คำสั่ง ;
Until เงื่อนไขเป็นจริง
ตัวอย่างโปรแกรมลูปแบบ Repeat
ตัวอย่าง โปรแกรมใช้แสดงตัวเลขตั้งแต่ 1 ถึง 9 โดยวิธีให้โปรแกรมทำงานซ้ำที่ คำสั่งชุดเดิมแบบ Repeat
|
ผลที่ได้คือ
Repeat Counter
1
2
3
4
5
6
7
8
9
ลูปแบบ Repeat ซ้อนกัน (Nested Repeat)
คำสั่งที่ทำงานเป็นลูปอาจจะต้องนำมาซ้อนกันเพื่อให้สามารถทำงานที่มีลักษณะเป็นลูปซ้อนกันได้ Repeat ที่เป็นลูปซ้อนกันได้ Repeat ที่เป็นลูปซ้อนกันมีโครงสร้างดังนี้
Repeat
คำสั่ง;
....
Repeat
คำสั่ง;
....
Until เงื่อนไขเป็นจริง
คำสั่ง;
....
Until เงื่อนไขเป็นจริง
ตัวอย่างที่ 1 ในโปรแกรมที่ต้องการแสดงผลในลักษณะตาราง อาจจะต้องใช้คำสั่ง Repeat ซ้อนกัน เช่นโปรแกรมแสดงตารางสูตรคูณ ซึ่งต้องการให้แสดงผลเป็นตารางดังนี้
2 x 1 = 2 3 x 1 = 3 ... 9 x 1 = 9
2 x 2 = 4 3 x 2 = 6 ... 9 x 2 = 18
.... ...
2 x 10 = 20 3 x 10 = 30 ... 9 x 10 = 90
โปรแกรมแสดงตารางสูตรคูณดังกล่าวข้างต้น มีตัวอย่างดังโปรแกรมที่ 8
|
ลูปแบบ WHILE
ลักษณะลูปแบบ While
ลูปแบบ While จะเริ่มด้วยการตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทำงานตามคำสั่งจำนวนหนึ่งไปจนกระทั่งเงื่อนไขเป็นเท็จแล้วจึงเลิกทำ
รูปแบบของ While
คำสั่ง While มีรูปแบบดังนี้
[1]
While เงื่อนไขเป็นจริง Do คำสั่ง
[2]
While เงื่อนไขเป็นจริง Do
Begin
คำสั่ง;
.....
คำสั่ง;
End.
รูปแบบในข้อ [1] เป็นรูปแบบที่มีคำสั่งเดียว ส่วนรูปแบบในข้อ [2] เป็นรูปแบบผสม คำสั่งที่อยู่ระหว่าง Begin และ End จะทำงานด้วยกัน
ตัวอย่างโปรแกรมลูปแบบ While
ตัวอย่าง การแสดงข้อความ I am a MEDIA INTELLIGENCE ซ้ำกันหลายครั้ง โดยโปรแกรมที่มีการทำงานเป็นลูปแบบ While แสดงในโปรแกรม
ลูปแบบ While ซ้อนกัน (Nested While)
คำสั่งที่ทำงานเป็นลูปอาจจะต้องนำมาซ้อนกันเพื่อให้สามารถทำงานที่มีลักษณะเป็นลูปซ้อนกันได้ While ที่เป็นลูปซ้อนกันมีโครงสร้างดังนี้
While เงื่อนไขเป็นจริง Do
Begin
คำสั่ง;
While เงื่อนไขเป็นจริง DO
Begin
คำสั่ง;
End;
คำสั่ง;
End;
โดยในส่วนคำสั่งอาจจะเป็นคำสั่งเดียว หรือคำสั่งผสมก็ได้
ตัวอย่าง ในโปรแกรมที่ต้องการแสดงผลในลักษณะตาราง อาจจะต้องใช้คำสั่ง While ซ้อนกัน เช่น โปรแกรมแสดงสูตรคูณ ซึ่งต้องการให้แสดงผลเป็นตารางดังนี้
2 x 2 = 2 3 x 1 = 3 ... 9 x 1 = 9
2 x 2 = 4 3 x 2 = 6 ... 9 x 2 = 18
... ...
2 x 10 = 20 3 x 10 = 30 ... 9 x 10 = 90
โปรแกรมแสดงตารางสูตรคูณดังกล่าวนี้ มีตัวอย่างดังโปรแกรม
|
ลูปแบบ FOR
ลักษณะลูปแบบ For
ลูปแบบ For จะควบคุมการทำงานของคำสั่งให้ครบตามจำนวนที่กำหนดแล้วจึงเลิกทำ แสดงลักษณะได้ดังต่อไปนี้
For จากค่าเริ่มต้น จนถึงค่าสุดท้าย ให้ทำคำสั่ง
คำสั่งจะเป็นคำสั่งเดียวหรือผสมคำสั่งก็ได้
รูปแบบของ For
คำสั่ง For มีรูปแบบดังนี้
[1]
For ตัวแปร := ค่าเริ่มต้น To ค่าสุดท้าย Do คำสั่ง
[2]
For ตัวแปร := ค่าเริ่มต้น Downto ค่าสุดท้าย Do คำสั่ง
รูปแบบในข้อ [1] และข้อ [2] ต่างกันที่ To และ Downto จำนวนครั้งของการทำงานขึ้นอยู่กับ ตัวแปร (ซึ่งมีชื่อว่าตัวแปรควบคุม Control variable) ถ้าเลือกใช้ To ค่าของตัวแปรจะเพิ่มขึ้นจากค่าเริ่มต้นครั้งละ 1 ถ้าเลือกใช้ Downto ค่าของตัวแปรจะลดลงจากค่าเริ่มต้นครั้งละ 1 หลังจากทำงานตามคำสั่งแล้ว
ในกรณี For....To ถ้าค่าเริ่มต้นมีค่ามากกว่าค่าสุดท้าย เครื่องจะไม่ทำงานตามคำสั่ง ส่วนในกรณี For....Downto ถ้าค่าเริ่มต้นมีค่าน้อยกว่าค่าสุดท้ายเครื่องจะไม่ทำงานตามคำสั่งเช่นกัน
คำสั่งจะเป็นคำสั่งเดียวหรือผสมคำสั่งก็ได้
ตัวอย่างโปรแกรมลูปแบบ For
ตัวอย่าง โปรแกรมใช้แสดงตัวเลขตั้งแต่ 1 ถึง 9 โดยวิธีให้โปรแกรมทำงานซ้ำ คำสั่งเดิมแบบ For....To
|
ผลที่ได้คือ
For Counter
1
2
3
4
5
6
7
8
9
ลูปแบบ For ซ้อนกัน (Nested For)
คำสั่งที่ทำงานเป็นลูปอาจจะต้องนำมาซ้อนกันเพื่อให้สามารถทำงานที่มีลักษณะเป็นลูปซ้อนกันได้ For ที่เป็นลูปซ้อนกันมีโครงสร้างดังนี้
For จากค่าเริ่มต้นจนถึงค่าสุดท้ายให้ทำคำสั่ง
For จากค่าเริ่มต้นจนถึงค่าสุดท้ายให้ทำคำสั่ง
โดยคำสั่งอาจจะเป็นคำสั่งเดียวหรือผสมคำสั่งก็ได้
ตัวอย่าง โปรแกรมที่ต้องการแสดงผลในลักษณะตาราง อาจจะต้องใช้คำสั่ง For ซ้อนกัน เช่น โปรแกรมแสดงสูตรคูณซึ่งต้องการให้แสดงผลเป็นตารางดังนี้
2 x 2 = 2 3 x 1 = 3 ... 9 x 1 = 9
2 x 2 = 4 3 x 2 = 6 ... 9 x 2 = 18
... ...
2 x 10 = 20 3 x 10 = 30 ... 9 x 10 = 90
|
ข้อสังเกตสำหรับ While, Repeat, และ For
5.1 While ควรใช้ในกรณีที่จะต้องมีการตรวจสอบเงื่อนไข ก่อนการทำซ้ำอย่างน้อย 1 ครั้ง
5.2 Repeat ควรใช้ในกรณีที่จะต้องมีการทำงานด้วยคำสั่งในลูปอย่างน้อย 1 ครั้ง ก่อนการตรวจสอบเงื่อนไข
5.3 For ควรใช้ในกรณีที่เราทราบหรือโปรแกรมสามารถคำนวณจำนวนครั้งที่ต้องทำล่วงหน้าก่อนได้
การเลือกทำแบบ IF
การเลือกทำ
การเลือกทำหมายถึงการกำหนดให้โปรแกรมทำงานอย่างหนึ่งเมื่อเงื่อนไขเป็นจริงและทำงานอีกอย่างหนึ่งเมื่อ เงื่อนไขเป็นเท็จ ตัวอย่างการเลือกทำที่อาจพบได้บ่อย เช่น การเตือนให้เลือกบันทึกข้อมูลไว้ในดิสก์ คือ
SAVE (Y/N)
ถ้าเราเลือก Y ข้อมูลจะถูกบันทึกเข้าในดิสก์
ถ้าเราเลือก N จะไม่มีการบันทึกข้อมูล
การให้เลือกว่าจะใช้โปรแกรมนั้นต่อหรือไม่ คือ
CONTINUE (Y/N)
ถ้าเราเลือก Y โปรแกรมจะทำงานต่อไป
ถ้าเราเลือก N โปรแกรมหยุดทำงาน
ลักษณะการเลือกทำแบบ IF
การเลือกทำรูปแบบ IF มีลักษณะดังรูปที่ 1ภาพแสดงรูปแบบการเลือกทำแบบ IF
![]() |
รูปแบบของการเลือกทำแบบ IF เป็นดังนี้
คอมพิวเตอร์จะเลือกทำงานตามเงื่อนไข โดยใช้เงื่อนไขเป็นจริงจะทำงานตามคำสั่ง 1 (ที่อยู่ต่อจาก THEN) แต่ถ้าเงื่อนไขเป็นเท็จ จะทำงานตามคำสั่ง 2 (ที่อยู่ต่อจาก ELSE)
ELSE และ คำสั่ง 2 จะมีหรือไม่มีก็ได้
ตัวอย่างการเลือกทำแบบ IF
ตัวอย่าง โปรแกรมรับอายุเข้าไปเปรียบเทียบ ถ้าอายุมากกว่า 55 คอมพิวเตอร์จะแสดงข้อความ “คุณเป็นคนสูงอายุ”และถ้าอายุตั้งแต่ 55 ลงมาคอมพิวเตอร์จะแสดงข้อความ“คุณเป็นวัยรุ่น”
PROGRAM YoungOld; VAR Age : Real; BEGIN Write( ‘Your Age = ‘); ReadLn(Age); IF Age > 55 THEN WriteLn( ‘You are Old’) ELSE WriteLn( ‘You are Young’); ReadLn END. |
การเลือกทำแบบ IF ซ้อนกัน (Nested IF)
การเลือกทำแบบ IF ในบางโปรแกรมจะต้องทำซ้ำกัน ลักษณะโครงสร้างของการเลือกทำแบบ IF ซ้อนกันเป็นดังนี
|
จำนวนครั้งของการเลือกทำซ้ำมีได้มากเท่าที่ต้องการ สำหรับ ELSE จะมีหรือไม่ก็ได้
ตัวอย่าง การหาปี ค.ศ. ใดที่เดือนกุมภาพันธ์มี 29 วัน มีหลักการดังนี้
ถ้า ปี มากกว่า 0
ถ้า ปี หารด้วย 100 ลงตัว
และหารด้วย 400 ลงตัว นั้น กุมภาพันธ์มี 29 วัน
มิฉะนั้น ต้องหารด้วย 4 ลงตัว กุมภาพันธ์ จะต้องมี 29 วัน
โปรแกรม จะรับข้อมูลปี ค.ศ. จากคีย์บอร์ดเข้าไป แล้วตรวจดูว่าเป็นปีที่เดือนกุมภาพันธ์มี 29 วัน (leap year) หรือไม่ และแสดงผลการตรวจสอบที่จอภาพ
Program LeapYearOrNot; VAR LeapYear : Boolean; Year : integer; Begin WriteLn('Leap Year or Not ?'); REPEAT WriteLn; Write('Enter Year (0=End)'); ReadLn(Year); IF Year > 0 THEN Begin IF Year MOD 100 = 0 THEN LeapYear := (Year MOD 400)=0 ELSE LeapYear := (Year MOD 4)=0; IF LeapYear THEN WriteLn(Year,' is a Leap year') ELSE WriteLn(Year,' is not a Leap year'); END UNTIL Year=0 END. |
การเลือกทำแบบ CASE
ทางเลือกที่มีจำนวนมาก
ในกรณีที่การเลือกทำมีรายการให้เลือกมากไป การเลือกทำแบบ IF ก็อาจจะมีผลให้โปรแกรมมีความยาวเกินความจำเป็น และทำให้อ่านเข้าใจยาก
ลักษณะของการเลือกทำแบบ CASE
การเลือกทำแบบ CASE มีลักษณะดังต่อไปนี้
CASE ตัวแปร มีค่า เท่ากับ ค่าคงที่ : ทำ คำสั่ง ก. เท่ากับ ค่าคงที่ 1 หรือค่าคงที่ 2 : ทำ คำสั่ง ข. อยู่ในช่วงของ คำสั่ง A ถึงค่าคงที่ N : ทำ คำสั่ง ค. ELSE ทำ คำสั่ง ง. END |
รูปแบบของการเลือกทำแบบ CASE
การเลือกทำแบบ CASE มีรูปแบบดังต่อไปนี้
CASE ค่าของตัวแปร OF ค่าคงที่ [, ค่าคงที่] : คำสั่ง ค่าคงที่ .. ค่าคงที่ : คำสั่ง ELSE END |
ค่าของค่าคงที่จะต้องเป็นข้อมูลชนิดเดียวกันกับตัวแปร สำหรับ [, ค่าคงที่] ค่าคงที่.. ค่าคงที่ และ ELSE จะมีหรือไม่มีก็ได้ ส่วนคำสั่งจะเป็นคำสั่งเดียวหรือผสมคำสั่งก็ได้
คอมพิวเตอร์จะทำงานตามเงื่อนไขที่สอดคล้องกันระหว่างตัวแปรกับค่าคงที่ โดยถ้าค่าของตัวแปรเท่ากับค่าคงที่ค่าใดแล้ว โปรแกรมจะทำงานตามคำสั่งทีอยู่ต่อจากเครื่องหมาย : แต่ถ้าไม่มีเงื่อนไขที่สอดคล้องกัน โปรแกรมจะทำงานตามคำสั่งที่อยู่ต่อจาก ELSE
ตัวอย่างโปรแกรมปรับปรุงจากโปรแกรมเดิม โดยเปลี่ยนการเลือกทำจาก IF เป็น CASE แต่การทำงานของโปรแกรมยังคงเหมือนเดิม คือ แสดงอักษรย่อของสีให้เลือก เมื่อเลือกอักษรตัวหนึ่งแล้ว โปรแกรมจะแสดงชื่อเต็มของสีนั้นที่จอภาพ ขอให้สังเกตการใช้ CASE ซึ่งทำให้โปรแกรมสั้นลง และอ่านเข้าใจง่ายขึ้น
PROGRAM CaseColor;
VAR
Choice : Char;
UserQuits : Boolean;
BEGIN
WriteLn( 'What is Color ? ');
UserQuits := False;
REPEAT
Write( 'Select B G O P R Y or Q.uit ');
ReadLn( Choice );
CASE Choice OF
'B', 'b' : WriteLn( 'B is Blue'); { B หรือ b }
'G', 'g' : WriteLn( 'G is Green');
'O', 'o' : WriteLn( 'O is Orange');
'P', 'p' : WriteLn( 'P is Purple');
'R', 'r' : WriteLn( 'R is Red');
'Y', 'y' : WriteLn( 'Y is Yellow');
'Q', 'q' : UserQuits := True;
ELSE WriteLn( 'Error : Try again ')
End
UNTIL UserQuits
END.
การเลือกทำแบบ CASE ซ้อนกัน
ในบางกรณีการเลือกทำแบบ CASE จะต้องใช้ซ้อนกัน ซึ่งมีโครงสร้างดังนี้
CASE ค่าของ ตัวแปร OF { CASE 1 }
ค่าคงที่ : CASE ค่าของตัวแปร OF { CASE 2 }
ค่าคงที่ : คำสั่ง
ELSE คำสั่ง
END { CASE 2 }
ค่าคงที่ : คำสั่ง
ELSE คำสั่ง
END { CASE 1 }



![กล่องข้อความ: Program HiName;
Var
Name : String[50];
Begin
Write('Input your Name ');
ReadLn(Name);
WriteLn('Hi',Name');
End.](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image008.gif)

ไม่มีความคิดเห็น:
แสดงความคิดเห็น