การนำคำสั่งวนซ้ำมาใช้กับ ตัวแปรแถวลำดับ (ตัวแปรแบบ array)
การสั่งงานตามธรรมดาเราอาจจะทำงานกับตัวแปร array
ได้โดยอ้างอิงถึงตัวแปรโดยการเขียน
mystr[1]:='my name is golf'; mystr[2]:='thank
you'; mystr[3]:='good
bye'; mynum[1]:=5; mynum[2]:=25; mynum[3]:=8; |
แต่มีวิธีการที่จะ อ้างอิงถึงตัวแปรได้สะดวก รวดเร็ว ง่ายต่อการแก้ไข
มากกว่านี้ คือการ นำคำสั่ง loop
ชนิดต่างๆ ได้แก่ repeat..until, for..do หรือ while..do มาช่วยทำให้เข้าถึงค่าของตัวแปร และแสดงผลตัวแปรแบบแถวลำดับได้ ง่ายขึ้น
ตามปกติ ใช้ FOR loop
จะเป็นคำสั่งที่สะดวกที่สุด อย่างไรก็ตามสามารถใช้คำสั่ง loop อื่นๆ แทนได้
ตัวอย่าง การนำตัวแปรอะเรย์มาทำงานร่วมกับ loop REPEAT UNTIL
uses
crt ;
const
max=5 ;
var
i : byte ;
mystr : array[1..max] of string ;
begin
clrscr ;
i := 0 ;
repeat
i := i+1 ;
write ( 'please insert array', i, ' of string :' );
readln ( mystr[ i ] );
until i=max ;
i := 0 ;
repeat
i := i+1 ;
writeln ('mystr[', i, '] = ', mystr[ i ]);
until i=max ;
readln ;
end.
|
จากโปรแกรมทางด้านซ้ายจะมีการแสดงผล
ตัวหนังสือด้านล่างนี้ ตามลำดับ
please insert array 1 of string :
please insert array 2 of string :
please insert array 3 of string :
please insert array 4 of string :
please insert array 5 of string :
และหลังจากเราใส่ค่า โปรแกรมจะแสดงผลดังด้านล่างนี้
mystr[1] = ค่าที่ใส่ครั้งที่แรก
mystr[2] = ค่าที่ใส่ครั้งที่สอง
mystr[3] = ค่าที่ใส่ครั้งที่สาม
mystr[4] = ค่าที่ใส่ครั้งที่สี่
mystr[5] = ค่าที่ใส่ครั้งที่ห้า
|
ทางด้านบนนี้ก็คือการกำหนดค่า และการแสดงผล ตัวแปรที่อยู่ในรูปแบบ array
จะเห็นว่าสะดวกมาก เพราะว่าไม่จำเป็นต้องพิมพ์เองทั้งหมด
:::: จากตัวอย่างด้านบน หากเปลี่ยน ค่าของค่าคงที่ max เป็น 10 ล่ะก็
โปรแกรม จะรอรับค่าทั้งหมด 10 ครั้ง เพื่อไปใส่ไว้ในตัวแปร mystr[1] ไปจนถึง mystr[10]
ตามตัวอย่างโปรแกรม หากไม่ได้เขียนเป็นคำสั่ง loop จะเสียเวลาในการเขียนและแก้ไขมากครับ
ตารางรหัสแอสกี ( ascii )
|
รหัสแอสกี เป็นรหัสของสัญลักษณ์และตัวอักษร
บนคอมพิวเตอร์ มี ทั้งหมด 256 ตัว นอกจากตัวอักษรทั่วไปแล้ว
ยังมีอักขระที่เป็นสัญลักษณ์ที่ใช้เป็นสัญลักษณ์แทนสิ่งต่างๆ
ที่ใช้ในคำสั่งของคอมพิวเตอร์อีกด้วย ดูรายละเอียดที่ asciitable.com
ในคำสั่ง ภาษา pascal ที่เขียนว่า chr() เป็น ฟังชั่นที่ให้เราใส่เลขเข้าไป
แล้วจะมีการให้ค่าคืนมาเป็น อักษรแอสกี ที่สามารถแสดงบนจอมอนิเตอร์ได้
### string ก็คือ ข้อมูลที่เป็นอักษร ascii หลายตัวมาเรียงกันนั่นเอง
|
คำสั่งจะแสดงรหัสแอสกี
x=แนวนอน y=แนวดิ่ง
รอบที่ 1
x=0 y=0
ไปที่ตำแหน่ง 1,1
แสดงรหัสแอสกีเบอร์ 0
( 16 * 0 ) + 0
รอบที่ 2
x=1 y=0
ไปที่ตำแหน่ง 2,1
แสดงรหัสแอสกีเบอร์ 1
( 16 * 0 ) + 1
รอบที่ 3
x=2 y=0
ไปที่ตำแหน่ง 3,1
แสดงรหัสแอสกีเบอร์ 2
( 16 * 0 ) + 2
..จนถึง รอบที่ 16
x=15 y=0
ไปที่ตำแหน่ง 16,1
แสดงรหัสแอสกีเบอร์15
( 16 * 0 ) + 15
รอบที่ 17
x=0 y=1
ไปที่ตำแหน่ง 1,2
แสดงรหัสแอสกีเบอร์16
( 16 * 1 ) + 0
รอบที่ 18
x=1 y=1
ไปที่ตำแหน่ง 2,2
แสดงรหัสแอสกีเบอร์17
( 16 * 1 ) + 1
รอบที่ 19
x=2 y=1
ไปที่ตำแหน่ง 3,2
แสดงรหัสแอสกีเบอร์18
( 16 * 1 ) + 2
เมื่อถึง รอบที่ 255
x=14 y=15
ไปที่ตำแหน่ง 15,16
แสดงรหัสแอสกีเบอร์ 254
( 16 * 15 ) + 14
เมื่อถึง รอบที่ 256
x=15 y=15
ไปที่ตำแหน่ง 16,16
แสดงรหัสแอสกีเบอร์ 255
( 16 * 15 ) + 15
|
var
x, y : byte;
begin
for y:=0 to 15 do
for x:=0 to 15 do
begin
gotoxy ( x+1, y+1 );
write ( chr( (16*y)+x ) );
end;
end.
|
ถ้าผม update ครั้งหน้าจะเป็น การใช้การวนซ้ำแบบ while .. do
การใช้ continue และ break
จากนั้นจะตามมาด้วยการเขียน procedure
การเขียนฟังค์ชั่น แล้วก็ ข้อมูลแบบ record
และท้ายสุดก็คงจะการสร้างโปรแกรมอ่าน text file
จากนั้นต่อๆ ไปก็จะมีแบบฝึกหัดเพิ่มขึ้นมาทีละนิด
พร้อมๆ ไปกับโปรแกรมตัวอย่างนิดๆ หน่อยๆ
แน่นอนครับ คงไม่ใช่ทีเดียวทั้งหมดแน่เลย
คงจะค่อยๆ ออกมา นานทีเดียวเชียวหละ
|