1 / 17

ตัวแปรชุด

ตัวแปรชุด. Arrays. สมาชิกตัวที่ ๑. สมาชิกตัวที่ ๒. สมาชิกตัวที่ N. ตัวแปรชุด (Arrays). กลุ่มของข้อมูลซึ่งมีชนิดข้อมูลเป็นอย่างเดียวกัน อ้างถึงกลุ่มข้อมูลชุดนี้ด้วยชื่อตัวแปรเดียวกัน ข้อมูลแต่ละตัวเรียกว่าเป็นสมาชิกของตัวแปรชุด สมาชิกแต่ละตัวจะมีหมายเลข/ดัชนีี ( index ) กำกับ.

ansel
Download Presentation

ตัวแปรชุด

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ตัวแปรชุด Arrays

  2. สมาชิกตัวที่ ๑ สมาชิกตัวที่ ๒ ... สมาชิกตัวที่ N ตัวแปรชุด (Arrays) กลุ่มของข้อมูลซึ่งมีชนิดข้อมูลเป็นอย่างเดียวกัน อ้างถึงกลุ่มข้อมูลชุดนี้ด้วยชื่อตัวแปรเดียวกัน ข้อมูลแต่ละตัวเรียกว่าเป็นสมาชิกของตัวแปรชุด สมาชิกแต่ละตัวจะมีหมายเลข/ดัชนีี(index) กำกับ

  3. ตัวแปรชุด(Arrays) • การประกาศตัวแปรชุด • การอ้างถึงหรือการเรียกใช้ข้อมูลของตัวแปรชุด • ความสัมพันธ์ระหว่างตัวแปรชุดกับตัวแปรพอยน์เตอร์ • การส่งผ่านตัวแปรชุดให้กับฟังก์ชัน

  4. สมาชิกตัวที่ ๑ สมาชิกตัวที่ ๒ ... สมาชิกตัวที่ 10 การประกาศตัวแปรชุด N เป็นค่าคงที่สัญลักษณ์ กำหนดโดย #define N 25 • รูปแบบ (1) ชนิดข้อมูล ชื่อตัวแปร[จำนวนสมาชิก]; int score [10]; char id[8], name[N]; • การจัดสรรเนื้อที่ในหน่วยความจำ สมาชิกแต่ละตัวจะถูกจัดสรรที่ในหน่วยความจำแบบต่อเนื่อง ขนาดหน่วยความจำของแต่ละตัวจะขึ้นกับชนิดข้อมูล เช่นตัวแปร score จะใช้เนื้อที่ขนาด 2 x10=20 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์ id จะใช้เนื้อที่ขนาด 1 x 8 = 8 ไบต์ name จะใช้เนื้อที่ขนาด 1 x 25 = 25 ไบต์ score จะใช้เนื้อที่ขนาด 2 x 10 = 20 ไบต์

  5. สมาชิกตัวที่ ๑ สมาชิกตัวที่ ๒ ... สมาชิกตัวที่ 10 การอ้างถึงหรือการเรียกใช้ข้อมูลของตัวแปรชุด • รูปแบบ ชื่อตัวแปรชุด [ดัชนี หรือ ตัวบ่งชี้ ] • ในภาษา C ดัชนี • มีชนิดข้อมูลเป็นจำนวนเต็ม • ดัชนีตัวแรกมีค่าเป็น 0 เสมอ • อาจอยู่ในรูปค่าคงที่ หรือ ตัวแปร หรือ นิพจน์ที่ให้ค่าเป็นจำนวนเต็ม score ตัวบ่งชี้ 0 1 9 score [0] /* อ้างถึงสมาชิกตัวแรกของscore */ score [i] /* สมาชิกหมายเลขi */ score [i+1] /* สมาชิกหมายเลข i+ 1 */

  6. 0 0 ... 0 ตัวอย่างชุดคำสั่งภาษา C • กำหนดค่าเริ่มต้นให้กับสมาขิกทุกตัวของ score มีค่าเป็น 0 int i, score[10]; for (i= 0; i<10; i++) score[i] = 0; score[0] score[1] score[9]

  7. 5 2 4 1 3 ‘2’ ‘3’ ‘0’ ‘5’ ‘1’ ‘7’ ‘1’ ‘\0’ id[0] id[1] id[2] id[3] id[4] id[5] id[6] id[7] การประกาศตัวแปรชุดพร้อมกับกำหนดค่าเริ่มต้น • รูปแบบ (2) ชนิดข้อมูล ชื่อตัวแปร[ ]= {ค่าเริ่มต้นตัวที่ 1, ค่าเริ่มต้นตัวที่ 2, …ค่าเริ่มต้นตัวสุดท้าย}; (3) ชนิดข้อมูล ชื่อตัวแปร[n] = {ค่าเริ่มต้นตัวที่ 1,ค่าเริ่มต้นตัวที่ 2, …ค่าเริ่มต้นตัวสุดท้าย}; n ค่า int X[ ] = {5, 2, 4, 1, 3}; char id[8] = { ‘2’,’3’,’0’,’5’,’1’,’7’,’1’,’\0’}; X[0] X[1] X[2] X[3] X[4]

  8. ตัวอย่างชุดคำสั่งภาษาCตัวอย่างชุดคำสั่งภาษาC • เรียงลำดับคะแนนจากน้อยไปมาก #define N 5 : int i, j, tmp, score[N]= {5, 2, 4, 1, 3}; for (i = 0; i< N -1; i++) for (j = i+1; j< N; j++) if (score[i] > score[ j]) { tmp = score[i]; score[i] = score[ j]; score[j] = tmp; }

  9. 1 4 1 4 2 5 2 5 6 3 3 6 ตัวแปรชุดหลายมิติ • ตัวแปรชุด 2 มิติ (two dimensional arrays) int a[2][3] ={{1,2,3},{4,5,6}}; แถว 0 แถว 1 • เพื่อเข้าให้ถึงข้อมูลซึ่งเป็นสมาชิกของตัวแปรชุด จะต้องใช้ตัวบ่งชี้เท่ากับจำนวนมิติ a[0][0] /*สมาชิกที่อยู่ในแถวแรก สดมภ์แรก*/ a[1][2] /*สมาชิกที่อยู่ในแถวที่สอง สดมภ์ที่ ๓ */ a[k][k+1] /*สมาชิกที่อยู่ในแถว k สดมภ์ k+1*/

  10. ตัวอย่าง • ชุดคำสั่งเพื่อสร้างเมทริกเอกลักษณ์ (Identity matrix) ขนาด n x nIdentity matrix เป็นเมทริกซ์ ที่ค่าสมาชิกทุกตัวมีค่าเป็น 0 ยกเว้นสมาชิกในแนวทะแยงที่ตำแหน่งแถวเท่ากับตำแหน่งคอลัมน์จะมีค่าเป็น 1 เช่น I เป็นเมทริกซ์เอกลักษณ์ขนาด 3 x 3 I = 1 0 0 0 1 0 0 0 1 #define Size 3 : int m, n, I [Size][Size]; for (m = 0; m< Size; m++) for (n = 0; n<Size; n++) I [m][n] = (m == n ? : 1 : 0);

  11. สรุป • ตัวแปรชุด หมายถึง กลุ่มของข้อมูลซึ่งมีชนิดข้อมูลเป็นอย่างเดียวกัน อ้างถึงกลุ่มข้อมูลชุดนี้ด้วยชื่อตัวแปรเดียวกัน และ อ้างถึงสมาชิกแต่ละตัวด้วยชื่อตัวแปรชุดพร้อมระบุหมายเลข/ดัชนี • การประกาศตัวแปรชุด (1) ชนิดข้อมูล ชื่อตัวแปร[จำนวนสมาชิกในมิติที่ 1] [จำนวนสมาชิกในมิติที่ 2]; (2) ชนิดข้อมูล ชื่อตัวแปร[]={ค่าคงที่ตัวที่ 1,ค่าคงที่ตัวที่ 2,…, ค่าคงที่ตัวสุดท้าย}; (3) ชนิดข้อมูล ชื่อตัวแปร[n] = {ค่าคงที่ตัวที่ 1, ค่าคงที่ตัวที่ 2, …, ค่าคงที่ตัวสุดท้าย}; • การอ้างถึงหรือการเรียกใช้ข้อมูลของตัวแปรชุด ชื่อตัวแปรชุด[ดัชนี หรือ ตัวบ่งชี้ ] ในภาษา Cดัชนี • มีชนิดข้อมูลเป็นจำนวนเต็ม • ดัชนีตัวแรกมีค่าเป็น 0 เสมอ • อาจอยู่ในรูปค่าคงที่ หรือ ตัวแปร หรือ นิพจน์ที่ให้ค่าเป็นจำนวนเต็ม • จำนวนมิติของตัวแปรชุด จะบอกถึงจำนวนดัชนีที่ต้องใช้เพื่อระบุถึงสมาชิกของตัวแปรชุด

  12. 10 20 30 40 50 ความสัมพันธ์ระหว่างตัวแปรชุดกับตัวแปรพอยน์เตอร์ • ตัวแปรพอยน์เตอร์ เป็น • ตัวแปรซึ่งเก็บค่าแอดเดรสหรือตำแหน่งในหน่วยความจำ • เราสามารถเปลี่ยนแปลงค่าของตัวแปรพอยน์เตอร์ได้ • ตัวแปรชุด เป็นชื่อที่เราใช้อ้างถึงกลุ่มของข้อมูล ในภาษา C เมื่อเราอ้างถึงชื่อตัวแปรชุดเราจะได้เป็นค่าของตำแหน่งใน หน่วยความจำ เราไม่สามารถเปลี่ยนค่านี้ได้ int x[ ] = {10, 20, 30, 40, 50}; x[0] x[1] x[2] x[3] x[4] *x *(x+1) *(x+2) *(x+3) *(x+4) เมื่ออ้างถึงxเราจะได้ แอดเดรสของสมาชิกตัวแรก

  13. ตัวอย่าง // Demonstrate array and address of elements # include <stdio.h> void main ( ) { int indx, data [5] = {10, 20, 30, 40, 50}; printf(“Starting address of array is %u\n”, data); for (indx=0; indx < 5; indx++) printf (“address of element %u = %u \t data is %d\n”, indx+1, data+indx, *(data+indx)); }

  14. การใช้ตัวแปรพอยน์เตอร์กับแอเรย์การใช้ตัวแปรพอยน์เตอร์กับแอเรย์ #define N 10 : int i, *p, A[N], sum = 0; // summing an array using subscripts for (i=0; i<N; i++) sum += A[i]; // using pointer for (p=A; p<&A[N]; p++) sum += *p; // using an array variable as a pointer for (i=0; i<N; i++) sum += *(A + i); // using pointer with subscripts for (p=A, i=0; i<N; i++) sum += p[i];

  15. 1 4 2 5 3 6 ตัวแปรชุดหลายมิติ (2) int a[2][3] ={{1,2,3},{4,5,6}}; a : address of the first row *a : address of the 1st column of the 1st row **a : element of the 1st column of the 1st row a[0][0] /*สมาชิกที่อยู่ในแถวแรกสดมภ์แรก*/ *a + j : address of the jth column of the 1st row * (a + i) : address of the 1st column of the ith row * (a + i)+j : address of the jth column of the ith row *(* (a + i)+j) : element of the jth column of the ith row *(a[i] + j) = ? *(&a[0][0] + 3*i + j) = ?

  16. การส่งผ่านตัวแปรชุดให้กับฟังก์ชันการส่งผ่านตัวแปรชุดให้กับฟังก์ชัน // Function to sum elements of an array // array A is passed as a pointer, Size of array is passed as separate int int sum (int A[], int Size) { int i, s=0; for (i=0; i<Size; i++) s += A[i]; return s; } // at the calling side int sum ( int [], int ) ; // prototype of sum function // Various ways that sum() might be called Invocation What gets computed and returned sum(v, 100) v[0] + v[1] +…+ v[99] sum(&v[7], k-7) v[7] + v[8] +…+ v[k-1] sum(v+7, 2*k) v[7] + v[8] + …+ v[2*k+6]

  17. การส่งผ่านตัวแปรชุดให้กับฟังก์ชันการส่งผ่านตัวแปรชุดให้กับฟังก์ชัน • Call by value :ส่งได้แค่สมาชิกของตัวแปรชุด • ที่ส่วนของการประกาศพารามิเตอร์ ประกาศให้พารามิเตอร์มีชนิดข้อมูลเป็นอย่างเดียวกับค่าที่ต้องการส่งผ่าน • Call by reference :ส่งเป็น address ของสมาชิกตัวแรกของตัวแปรชุดที่ต้องการประมวลผล • ที่ส่วนหัวของการประกาศฟังก์ชัน (Function header) ในส่วนของการประกาศพารามิเตอร์ หากพารามิเตอร์เป็นตัวแปรชุด 1 มิติไม่ต้องระบุจำนวนสมาชิก แต่ถ้าเป็นตัวแปรชุด 2 มิติ ให้ระบุเฉพาะจำนวนสมาชิกของมิติที่สอง (จำนวนคอลัมน์) • พารามิเตอร์ที่ใช้รับค่าของตัวแปรชุด อาจจะถูกประกาศในลักษณะของ ตัวแปรพอยน์เตอร์ได้

More Related