วันนี้เราจะมาดูกันว่า Array คืออะไร !!!!
Array คือตัวแปรแถวลำดับ...
ถ้าจะให้พูดง่าย ๆ ก็คือตัวแปรที่มีชนิดเดียวกันหลาย ๆ ตัว นั้นเอง
สมมติว่า ถ้าจะเก็บค่าคะแนนสอบของนักเรียน 100 คน เราจะต้องประกาศตัวแปร 100 ตัวแปรหรอ !!!!
เราจึงจะใช้ตัวแปรแบบ Array มาแก้ปัญหานี้กัน
วิธีการประกาศก็ง่ายแสนง่าย ลองดูตัวอย่างกัน
var
Score: array[0..99] of Integer;
จากภาพ เป็นการประกาศตัวแปรชื่อ Score เป็นตัวแปร Array ที่มีสมาชิก 100 ตัว มี Index ตั้งแต่ 0 ถึง 99 เก็บข้อมูลจำนวนเต็ม
ลองดูที่ 0..99 เลขข้างหน้า (0) คือ Index เริ่มต้น เลขข้างหลังคือ Index สุดท้าย เราสามารถเริ่มที่อะไรก็ได้ ไม่จำเป็นต้องเป็น 0 เช่น
var
Arr1: array[6..20] of Integer;
Arr2: array[-10..5] of Double;
Arr1 มีสมาชิก 20 - 6 + 1 = 15 ตัว
Arr2 มีสมาชิก 5 - (-10) + 1 = 16 ตัว
เวลาจะเรียกใช้ Array ก็เรียกเป็น
Arr[Index] เช่น
var
Arr: array[1..3] of Integer;
I: Integer;
begin
Arr[1] := 50;
I := 2;
Arr[I] := 300;
Arr[3] := I;
Writeln(Arr[1]], ' ', Arr[2], ' ', Arr[3]);
end.
เอาหล่ะ ลองมาดู Array 2 มิติกันบ้างดีกว่า
วิธีการประกาศจะมี 2 แบบ คือ
วีธีการเรียกใช้จึงต่างกัน
แล้ว 2 แบบนั้น มันต่างกันยังไง ?
Arr1 เป็น Array 2 มิติ ของ จำนวนเต็ม ขนาด 6 x 4
Arr2 เป็น Array 1 มิติ ของ Array 1 มิติ ของ จำนวนเต็ม
การประกาศ Array แบบที่ 2 จะดีกว่าแบบที่ 1 อยู่... ดีกว่ายังไง ? เดียวก่อนละกัน
มาดู Array หลาย ๆ มิติกันก่อนนะ
วิธีการประกาศ การใช้ก็เหมือน ๆ กัน
นอกจากนี้ String ก็ยังเหมือนกับ Array 1 มิติอีกแหน่ะ
หรือก็คือ String เป็น Array of Char ก็ว่าได้
การประกาศ String เราสามารถกำหนดได้ว่าจะให้ String นั้นเก็บค่าได้เท่าไร หรือจะไม่กำหนดก็ได้ เช่น
var
Str1: string;
Str2: string[16];
เราสามารถเรียกดูตัวอักขระ ในแต่ละตำแหน่งได้ เช่น Str1[3] ฯลฯ
เรายังสามารถประกาศตัวแปรแบบ Array[0..n-1] of Char แล้วใช้เป็น String ได้อีกด้วย
แต่ !!! ตัว Index เริ่มต้นจะต้องเป็น 0 เท่านั้น แต่จะมีความแตกต่างอยู่อย่างหนึ่งคือ
String จะมี Index เริ่มต้นที่ 1
ส่วน Array[0..n-1] of Char จะมี Index เริ่มต้นที่ 0
ลองดูตัวอย่างกันสักนิด
เราสามารถกำหนดให้ Str2 := ' ข้อความ' ได้
และยังให้ Str1 ที่มีชนิดตัวแปรเป็น string มารับข้อมูลจาก Str2 ได้เลย
แต่ไม่สามารถจะเขียนว่า Str2 := Str1 ได้
และถ้าเราประกาศตัวแปร Str1 เป็น string[80] เราก็ไม่สามารถที่จะให้ Str1 := Str2; ได้
วันนี้ขอจบแค่นี้ก่อน เดียวงงกว่าเดิมส่วนเรื่องที่ว่าการประกาศ Array แบบที่ 2 นั้นมันดียังไง ขอติดไว้ก่อน
ก่อนไปก็ฝากการบ้านไว้สักหน่อยดีกว่า หุหุ
13) ให้รับข้อความเข้ามา แล้วให้แสดงข้อความที่รับมาแบบย้อนจากหลังมาหน้า
เช่นรับเข้าไปว่า String ให้แสดงผลออกมาว่า gnirtS
14) ให้รับข้อความเข้ามาแล้วนับว่าในข้อความนั้นมีตัว i กี่ตัว ( ไม่ต้องนับตัว I ใหญ่ )
15) ให้รับคะแนนนักเรียนเข้ามา 10 คน ไปไว้ใน array ก่อน แล้วค่อยคำนวณหาค่าเฉลี่ย
16) ให้รับข้อความเข้ามาแล้วเปลี่ยนตัวอักษร '@' ให้เป็น ตัว 'a' แทน
17) ให้รับข้อความเข้ามาแล้วเปลี่ยนตัวอักษร '@' ให้เป็นคำว่า 'at' แทน
18) ให้รับค่าจำนวนเต็มเข้ามา 6 ตัว แล้วหาค่าที่มากที่สุด
19) ** ให้รับค่าจำนวนเต็มเข้ามา 10 ตัว แล้วเรียงลำดับข้อมูลจากมากไปน้อย
21) * ให้รับข้อความเข้ามา แล้วแสดงข้อความ แต่ถ้าเจอคำว่า \n ให้ขึ้นบรรทัดใหม่
เช่น รับค่าเข้ามาเป็น
String Line 1\nLine 2\nNew Line
จะแสดงผลเป็น
String Line 1
Line 2
New Line
ลองไปทำกันดูนะครับ ส่วนข้อที่มี * ข้างหน้า จะค่อนข้างยากนิดนึง แต่ไม่เกินความรู้ตั้งแต่เรื่องแรก ๆ เลยครับ
No comments:
Post a Comment