Array: One Dimension 886201 Programming I 9
Array คืออะไร ตัวแปรแถวลำดับ ชุดของตัวแปรหลายๆ ตัว มีชนิดข้อมูลเดียวกัน มีชื่อเรียกเดียวกัน การอ้างถึงตัวแปรแต่ละตัวทำโดยอ้างถึง ชื่อและตำแหน่ง (index) ของตัวแปร
ใช้ตัวแปรแถวลำดับทำอะไร เหมือนตัวแปรทั่วไป คือ เก็บข้อมูลโดยที่ ข้อมูลที่เก็บจะ เป็นชุด ใช้แทนสิ่งที่คล้ายๆ กัน มีชนิดข้อมูลเหมือนกัน นำไปใช้ด้วยวิธีคล้ายๆ กัน ตัวอย่าง รหัสนิสิตของนิสิตในห้องนี้ คะแนนสอบวิชา 886201 ของนิสิตในห้อง นี้ เกรดวิชา 886201 ของนิสิตในห้องนี้
Array คือ โครงสร้างข้อมูลรูปแบบหนึ่ง สำหรับเก็บ ข้อมูลประเภทเดียวกัน ในลักษณะแถวที่มีช่อง เก็บข้อมูลหลายๆช่องเรียงต่อกันไปใน หน่วยความจำ อาร์เรย์ทั้งแถวมีชื่อกำกับ a แสดงถึง อาร์เรย์ a มี 4 ช่อง เก็บข้อมูลได้ 4 ตัว การจะใช้ข้อมูลในช่องใด ทำได้โดยอาศัยการ อ้างถึงเลขลำดับ (index) index จะเรียงจากซ้ายไปขวาเริ่มนับช่องแรกที่ 0 เสมอ เช่น 0, 1, 2, 3 เมื่อต้องการใช้ข้อมูลช่องที่ k ของ อาเรย์ a ให้เขียน d[k] จากตัวอย่าง a[0] = 30 , a[1] = 15, a[2] = 78 และ a[3] = 43 30 15 78 43
Array ขนาดหรือความยาวของอาร์เรย์ คือจำนวนข้อมูลที่เก็บอยู่ในอาร์เรย์แถว นั้น เช่น อาเรย์ยาว 4 (เก็บข้อมูลได้ 4 ตัว) 1 2 3 6 1 7 9
ที่มา : วงศ์ยศ เกิดศรี Computer Programming using Java มิติของอาร์เรย์ สามารถมีได้ไม่จำกัด เช่น หนึ่งมิติ สองมิติ สามมิติ n มิติ ที่มา : วงศ์ยศ เกิดศรี Computer Programming using Java ในสัปดาห์นี้จะนำเสนอเฉพาะอาร์เรย์ 1 มิติก่อน
การประกาศตัวแปร Array เช่น int score[5]; ชนิดตัวแปร ชื่อตัวแปร[ขนาด]; score [0] [1] [2] [3] [4] int index value
การอ้างถึงข้อมูลใน Array เช่น int score[5]; ชื่อตัวแปร[ตำแหน่ง] score [0] [1] [2] [3] [4] int index value score[0] score[1] score[2] score[3] score[4]
การประกาศตัวแปร Array และกำหนดค่า int score[5]; score[0] = 5; score[1] = 20; score[2] = 12; score[3] = 7; score[4] = 30; score [0] [1] [2] [3] [4] int index value score [0] [1] [2] [3] [4] 5 20 12 7 30 index value
การประกาศตัวแปร Array และกำหนดค่า ประกาศตัวแปร array ระบุขนาด(n) พร้อม กับกำหนดค่าทั้งหมด เช่น int score[5] = {5, 20, 12, 7, 30}; ชนิดตัวแปร ชื่อตัวแปร[ขนาด] = {ค่าที่1, ค่าที่2, …, ค่าที่n}; score [0] [1] [2] [3] [4] 5 20 12 7 30 index value
การประกาศตัวแปร Array และกำหนดค่า ประกาศตัวแปร array ระบุขนาด(n) พร้อม กับกำหนดค่าส่วนแรก เช่น int score[5] = {0, 20, 12}; ชนิดตัวแปร ชื่อตัวแปร[ขนาด] = {ค่าที่1, ค่าที่2, …, ค่าที่n}; score [0] [1] [2] [3] [4] 20 12 index value
การประกาศตัวแปร Array และกำหนดค่า ประกาศตัวแปร array ระบุขนาด(n) พร้อม กับกำหนดค่าส่วนแรก เช่น int score[5] = {0}; ชนิดตัวแปร ชื่อตัวแปร[ขนาด] = {ค่าที่1, ค่าที่2, …, ค่าที่n}; score [0] [1] [2] [3] [4] index value
การประกาศตัวแปร Array และกำหนดค่า ประกาศตัวแปร array ไม่ระบุขนาด พร้อมกับกำหนดค่า เช่น int score[ ] = {5, 20, 12, 7, 30}; ชนิดตัวแปร ชื่อตัวแปร[ ] = {ค่าที่1, ค่าที่2, …, ค่าที่n}; score [0] [1] [2] [3] [4] 5 20 12 7 30 index value
การอ้างถึงข้อมูลใน Array int score[ ] = {5, 20, 12, 7, 30}; cout<<score[0]; cout<<score[2]; cout<<score[4]; score [0] [1] [2] [3] [4] 5 20 12 7 30 index value
การอ้างถึงข้อมูลใน Array int score[ ] = {5, 20, 12, 7, 30}; score[0] = 40; score[2] = score[3]; score[4] = score[2] + 10; score [0] [1] [2] [3] [4] 40 20 7 17 index value
กำหนดขนาดตัวแปร Array เป็นค่าคงที่ การกำหนดขนาด Array เป็นค่าคงที่ต้อง ใช้ const ตัวอย่าง const int n = 5; int score[n] = {5, 20, 12, 7, 30}; score [0] [1] [2] [3] [4] 5 20 12 7 30 index value
สายอักขระ สายอักขระ (string) คือกลุ่มของตัว อักขระที่เรียงต่อกัน ระบุขนาด พร้อมกำหนดค่าสายอักขระ เช่น char department[5] = “Math”; department [0] [1] [2] [3] [4] M a t h \0 index value
สายอักขระ ไม่ระบุขนาด พร้อมกำหนดค่าสาย อักขระ เช่น char department[ ] = “Math”; ไม่ระบุขนาด พร้อมกำหนดค่าทีละตัว อักขระ เช่น char department[ ] = “’M’, ‘a’, ‘t’, ‘h’, ‘\0’”; department [0] [1] [2] [3] [4] M a t h \0 index value
ฟังก์ชันหาขนาดของสายอักขระ : strlen( ) #include <iostream> #include <cstring> using namespace std; int main() { int x; char str1[20]; cout << “Please enter the first string: ”; cin >> str1; x = strlen(str1); cout << “The length of this string: ” << x; return 0; } Sample output: Please enter the first string: Hello The length of this string: 5
การประมวลผล array ที่พบบ่อย
การรับข้อมูลชนิดเดียวกัน 8 ตัว int num[8]; cin >> num[0]; cin >> num[1]; cin >> num[2]; cin >> num[3]; cin >> num[4]; cin >> num[5]; cin >> num[6]; cin >> num[7]; int num[8]; for (int i=0; i<8; i++){ cin >> num[i]; }
การรับข้อมูลชนิดเดียวกัน n ตัว int n; cin >> n; int num[n]; for (int i=0; i<n; i++){ cin >> num[i]; }
การค้นข้อมูลใน array a [0] [1] [2] [3] [4] [5] 50 10 70 20 เมื่อมีการเก็บกลุ่มข้อมูล ก็ต้องมีการค้นหา ข้อมูล สมมติให้ โปรแกรมนี้ผู้ใช้จะบอกข้อมูลที่ ต้องการค้นหา จากนั้นโปรแกรมจะแสดง ผลลัพธ์ ดังนี้ ถ้าพบข้อมูลดังกล่าวในแถวอาร์เรย์ จะแจ้งว่า ข้อมูลอยู่ตำแหน่งไหน ถ้าไม่พบข้อมูลในแถวอาร์เรย์นี้ จะคืนค่าเป็น -1 ตัวอย่าง ต้องการค้นหา 10 จากอาร์เรย์ a คำตอบคือ 1 a [0] [1] [2] [3] [4] [5] 50 10 70 20 index value
การค้นหาข้อมูลใน Array [0] [1] [2] [3] [4] [5] 50 10 70 20 index int index = -1; for(int i = 0; i < 6 ; i++ ) { if ( a[i] == 10 ) { index = i; } cout << index; value ต้องการค้นหาเลข 10 ว่าอยู่ในตำแหน่ง(index) ที่เท่าไหร่ ถ้าเลขที่ต้องการหามีหลายตัว โปรแกรมนี้จะแสดงตำแหน่งใด ตำแหน่งแรก หรือ ตำแหน่งสุดท้าย ถ้าต้องการให้แสดงตำแหน่งแรก ที่พบตัวเลขดังกล่าว ต้องแก้ไขโปรแกรมนี้อย่างไร
การค้นหาข้อมูลใน Array int index = -1; for(int i = 0; i < 6 ; i++ ) { if ( a[i] == 10 ) { index = i; } cout << index; a [0] [1] [2] [3] [4] [5] 50 10 70 20 index value ถ้าต้องการนับว่ามีตัวเลข 10 กี่จำนวน ต้องแก้ไขโปรแกรมนี้อย่างไร
การเปรียบเทียบ array เป็นการประมวลผลในลักษณะที่ เปรียบเทียบว่าอาร์เรย์ 2 แถว เหมือนกัน หรือไม่ มีขนาดเท่ากัน และ มีข้อมูลในแต่ละช่อง เหมือนกันแบบช่องต่อช่อง สมมติอาร์เรย์ 2 แถวที่ต้องการ เปรียบเทียบเป็นดังนี้ a b 5 6 2 3 1 5 6 2 3 4
การเปรียบเทียบ array a b for(int i = 0 ;i < 5 ; i++) { if(a[i] != b[i]) { cout<<“No”; return 0; // คำสั่งจบการทำงานของ โปรแกรม } cout<<“Yes”; 5 6 2 3 1 5 6 2 3 4
การหาค่ามากสุดใน array คำตอบ คือ 6 5 6 2 3 1
การหาค่ามากสุดใน array a int max = a[0]; for(int i = 1 ; i < 5 ; i++ ) { if(a[i] > max) { max = a[i]; } cout<<max; 5 6 2 3 1 ถ้าอยากแสดงด้วยว่าตำแหน่ง ของข้อมูลมากสุดอยู่ใน index ที่เท่าไร จะต้องปรับปรุง code อย่างไร