พื้นฐานปาสคาลพื้นฐาน rapidqเว็บภาษาไทยเว็บภาษาอังกฤษ

การนำคำสั่งวนซ้ำมาใช้กับ ตัวแปรแถวลำดับ (ตัวแปรแบบ 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 อื่นๆ แทนได้

uses
          crt ;
const
          max=3;
var
       i : byte ;
       mystr : array[1..max] of string ;
begin 
       clrscr;
             for i:=1 to max do
               begin
                    write ( 'please insert array', i, ' of string :' );
                    readln ( mystr[ i   ] );
               end; 

      for i:=1 to max do
         begin
            writeln ('mystr[', i, '] = ', mystr[ i ]);
         end;

            readln ;
end.

จากโปรแกรมทางด้านซ้ายจะมีการแสดงผล
ตัวหนังสือด้านล่างนี้ ตามลำดับ

please insert array 1 of string :
please insert array 2 of string :
please insert array 3 of string :

และหลังจากเราใส่ค่า โปรแกรมจะแสดงผลดังด้านล่างนี้
mystr[1] = ค่าที่ใส่ครั้งที่แรก
mystr[2] = ค่าที่ใส่ครั้งที่สอง
mystr[3] = ค่าที่ใส่ครั้งที่สาม

 

ตัวอย่าง การนำตัวแปรอะเรย์มาทำงานร่วมกับ 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.
ascii pic

ถ้าผม update ครั้งหน้าจะเป็น การใช้การวนซ้ำแบบ while .. do
การใช้ continue และ break
จากนั้นจะตามมาด้วยการเขียน procedure
การเขียนฟังค์ชั่น แล้วก็ ข้อมูลแบบ record
และท้ายสุดก็คงจะการสร้างโปรแกรมอ่าน text file
จากนั้นต่อๆ ไปก็จะมีแบบฝึกหัดเพิ่มขึ้นมาทีละนิด
พร้อมๆ ไปกับโปรแกรมตัวอย่างนิดๆ หน่อยๆ

แน่นอนครับ คงไม่ใช่ทีเดียวทั้งหมดแน่เลย
คงจะค่อยๆ ออกมา นานทีเดียวเชียวหละ


best view with ie 5.0++, screen 600x800