อาเรย์ (array)

22
ออออออ (Array)

Upload: masato

Post on 05-Jan-2016

55 views

Category:

Documents


2 download

DESCRIPTION

อาเรย์ (Array). หัวข้อ. การประกาศตัวแปรอาเรย์ การเข้าถึงข้อมูลในอาเรย์ Multidimensional arrays ( อาเรย์หลายมิติ ) การกำหนดค่าเริ่มต้นให้กับอาเรย์ 2 มิติ อาเรย์ของ characters string การผ่านตัวแปร array ระหว่างฟังก์ชัน. Array. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: อาเรย์  (Array)

อาเรย์� (Array)

Page 2: อาเรย์  (Array)

2

หั�วข้�อ

*การประกาศตั วแปรอาเรย์�*การเข้�าถึ�งข้�อมู�ลในอาเรย์�*Multidimensional arrays (อาเรย์�หลาย์มู�ตั�)*การก�าหนดค่�าเร� มูตั�นให�ก บอาเรย์� 2 มู�ตั�*อาเรย์�ข้อง characters string*การผ่�านตั วแปร array ระหว�างฟั$งก�ชั น

Page 3: อาเรย์  (Array)

3

Array อาเรย์� คื�อ กลุ่��มข้องตั�วแปรชนิ�ดเด�ย์วก�นิมากกว�า 1 ตั�วที่��ใช�ช��อเด�ย์วก�นิ ซึ่!�งการเข้�าถึ!งสมาช�ก (element) แตั�ลุ่ะตั�วจะใช�ดรรช� (index หัร�อ subscript) ที่��เป&นิเลุ่ข้จ'านิวนิเตั(มในิการระบุ�

Array ใชั�ทำ�าอะไรได�บ�างเก(บุช�ดตั�วอ�กษร หัร�อ (Characters

String) เก(บุช�ดคื�าตั�วแปรได�ที่�กชนิ�ด เช�นิ int

salary[50]

*ดรรชนิ�ข้องอาเรย์�ที่�กชนิ�ดในิภาษา C จะเร��มที่�� 0 เสมอ

Page 4: อาเรย์  (Array)

4

การประกาศตั วแปรอาเรย์�

ชัน�ดข้�อมู�ล ชั( อตั วแปร[จำ�านวนสมูาชั�ก] [= { ราย์การค่�าเร� มูตั�น }];ตั�วแปรอาเรย์�ตั�องม�จ'านิวนิสมาช�กเสมอ เราอาจจะก'าหันิดใหั� หัร�อ Compiler ก'าหันิดใหั�ก(ได� เช�นิ

• int arr[5];•char arr_c[3] = {‘a’,

‘b’, ‘c’};•char arr_c[] = {‘a’,

‘b’, ‘c’};•float arr_f[ ] = { 1.25,

3 , 4.5, 6.5};• int mid[100] =

{50}; //ตั�วอ��นิๆ จะเป&นิ 0•static int fin[100];

arr[0]

arr[4]

Page 5: อาเรย์  (Array)

5

การก'าหันิดคื�าเร��มตั�นิ

ก'าหันิดคื�าเร��มตั�นิ = { ราย์การข้�อมู�ล } ใชั�ได�เฉพาะจำ-ดทำ. ประกาศตั วแปรเทำ�าน /น

ตั วอย์�างทำ. ผ่�ด ตั วอย์�างทำ. ถึ�ก หร(อ ตั วอย์�างทำ. ถึ�ก int arr[5]; int arr[5];for(i=0; i <=4 ;i++) arr = { 1, 2, 3, 4, 5 }; arr[0] = 1;{

arr[1] = 2; arr[i]=i+1;

arr[2] = 3; } arr[3] = 4; arr[4] = 5;

Page 6: อาเรย์  (Array)

6

การเข้�าถึ�งข้�อมู�ลในอาเรย์�• คื�อการใช�ข้�อม.ลุ่ตั�วแปรอาเรย์�นิ�/นิๆ• การเข้�าถึ!งข้�อม.ลุ่โดย์ผ่�านิตั'าแหันิ�ง

สมาช�ก(element)ข้องอาเรย์�• สามารถึเข้�าถึ!งได�โดย์ตัรงโดย์ระบุ�ดรรชัน.

(index หัร�อ subscript) • ดรรชนิ� เป&นิเลข้จำ�านวนเตั0มู และเร� มูตั�นทำ. 0

เสมูอ(หร(ออาจำใชั�ตั วแปรแทำนก0ได�)• เราจ�ดการสมาช�กแตั�ลุ่ะตั�วได�อย์�างอ�สระเหัม�อนิ

ก�บุตั�วแปรที่��วๆไป เช�นิint arr[5] = { 1, 2, 3, 4, 5 };

int i;i = arr[0]; arr[1] = arr[2];arr[0]++;printf(“%d”, arr[0]); //แสดงคื�าอะไรscanf(“%d”, &arr[1]);

Page 7: อาเรย์  (Array)

7

การเข้�าถึ�งข้�อมู�ลในอาเรย์�(ตั�อ)

ดรรชัน. ข้องอาเรย์�• เป1นเลข้จำ�านวนเตั0มู ทำ. เร� มูตั�นทำ. 0เชั�น arr[0], arr[5]• ใชั�น�พจำน�ทำ. เป1น integer ตั วอย์�างint i = 3, arr_i[i] =

{ 1,2,3 }; /* การประกาศตั วแปร */float arr_f[i]; /* การประกาศตั วแปร */arr_f[i-3] = 5.5;arr_f[arr_i[2]] = 3.14;for (i=1; i < 3;i++)printf(“%f\n”, arr_f[i]); //ได�ผ่ลล พธ์�อย์�างไร

Page 8: อาเรย์  (Array)

8

ล กษณะการใชั�นค่จำ . ข้องตั วแปรอาเรย์�

ประกาศตั�วแปรint arr_i[4] = { 1, 2, 3, 4};

Page 9: อาเรย์  (Array)

9

การเข้�าถึ!งข้�อม.ลุ่แบุบุที่างตัรงแลุ่ะที่างอ�อมการเข้�าถึ�งโดย์ทำางตัรง โดย์ใชั� ดรรชัน.

• เป&นิเลข้จำ�านวนเตั0มู ทำ. เร� มูตั�นทำ. 0 เชั�น arr[0], arr[5]• ใชั�น�พจำน�ทำ. เป1น integer เชั�น arr[i]

การเข้�าถึ�งโดย์ทำางอ�อมู• ค่(อการเข้�าถึ�งแบบพอย์น�เตัอร�

int arr_i[4] = { 1, 2, 3, 4}; // ประกาศตั�วแปรprintf(“%d”, arr_i[0]); //ตั�วแรก ทำางตัรงprintf(“%d”, *arr_i ); /* หัร�อ*(arr_i+0) */ // ตั�วแรก ทำางอ�อมูprintf(“%d”, arr_i[1]); //ตั�วที่��สองโดย์ ทำางตัรงprintf(“%d”, *(arr_i+1) ); //ตั�วที่��สองโดย์ทำางอ�อมูprintf(“%d”, arr_i[2]);printf(“%d”, *(arr_i+2) );

Page 10: อาเรย์  (Array)

10

แบุบุฝึ4กหั�ดใหั�ที่'าการประกาศตั�วแปรเพื่��อเก(บุคืะแนินินิ�กศ!กษาจ'านิวนิ 1 0 คืนิ แลุ่�วที่'าการรอร�บุคืะแนินินิ�กศ!กษาที่�กคืนิจากผ่.�ใช� แลุ่ะหัาคื�าเฉลุ่��ย์ข้องนิ�กศ!กษาที่�/ง 10 คืนินิ�/นิ

Page 11: อาเรย์  (Array)

11

Multidimensional arrays (อาเรย์�หลาย์มู�ตั�) ที่��ผ่�านิมา

Array หันิ!�งม�ตั� (one-dimensional arrays)

คื�อ ใช�ดรรชนิ� (index หัร�อ subscript) เพื่�ย์งตั�วเด�ย์ว

อาเรย์�หลาย์มู�ตั� (Multidimensional arrays) ใช�ดรรชนิ�หัลุ่าย์ตั�ว หัากใช�ดรรชนิ� 2 ตั�ว จะเร�ย์กว�า อาเรย์� 2 ม�ตั� หัากใช�ดรรชนิ� 3 ตั�ว จะเร�ย์กว�า อาเรย์� 3 ม�ตั�

หันิ!�งม�ตั�

สองม�ตั�

สามม�ตั�

Page 12: อาเรย์  (Array)

12

อาเรย์�หันิ!�งม�ตั�arr[0], arr[1]

อาเรย์�สองม�ตั�ชนิ�ด ช��อ[แถึว][คือลุ่�มนิ�]int TwoArray[2][3];float MyArr[3][4]; //เป&นิอย์�างไร

การเข้�าถึ!งข้�อม.ลุ่

[0][0][0][1][0][2]

[1][0][1][1][1][2]

Page 13: อาเรย์  (Array)

13

การก�าหนดค่�า

for(i=0;i<3;i++){ for (j=0;j<4;j++){ MyArr[i][j] = 0; }}

0 0 0

0 0 0

0

0

0 0 0 0

int arri[3][4] = { {2, 5, 12, 3}, {1,4,11,9}, {6,7,10,8} };

2 5 12

1 4 11

3

9

6 7 10 8

ให�ค่�า ณ. ทำ. ประกาศตั วแปร

โดย์ใชั�การวนรอบ

Page 14: อาเรย์  (Array)

14

ให�เตั�มูค่�าข้�อมู�ลint TestArr[4][2];

for(i=0;i<4;i++){

for (j=0;j<2;j++){

TestArr[i][j] = i+j;

}

}

TestArr[4][2]

Page 15: อาเรย์  (Array)

15

การใชั�พ(/นทำ. Memory

ใช�การจ�ดเร.ย์งไปทำ.ละแถึว

เชั�น int TestArr[3][2]

TestArr[0][0]TestArr[0][1]TestArr[1][0]TestArr[1][1]

Memory 1( ช�อง 1 ไบุตั�)

TestArr[2][0]TestArr[2][1]

Page 16: อาเรย์  (Array)

16

แบบฝึ7กห ดจงประกาศตั�วแปรอาเรย์�เพื่��อเก(บุข้�อม.ลุ่ตั�อไปนิ�/ (ประกาศตั�วแปรพื่ร�อมก�บุก'าหันิดคื�าเร��มตั�นิ) พื่ร�อมแสดงผ่ลุ่ลุ่�พื่ธ์�ข้�อม.ลุ่ที่�กราย์การตัามลุ่'าด�บุชั( อ ค่ะแนนJOHN 20.5MICHEAL 31DAVID 28JEFF 36.7HERBERT 26

Page 17: อาเรย์  (Array)

17

อาเรย์�ข้อง characters string

ตั�องการเก(บุ characters string ลุ่งในิตั�วแปรอาเรย์� เช�นิข้�อม.ลุ่

GeorgeMichelleJoeMarcusStephanie

เราอาจจะสร�างอาเรย์�สองมู�ตั� เพ( อเก0บข้�อมู�ล character เช�นิchar NameArr[ 5] [15] = { {“George”},

{“Michelle”},{“Joe”},{“Marcus”},

{“Stephanie”} };NameArr จะใช�พื่�/นิที่��เที่�าไร?

Page 18: อาเรย์  (Array)

18

การเก(บุข้�อม.ลุ่ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 G e o r g e \0 1 M i c h e l l e \0 2 J o e \0 3 M a r c u s \0 4 S t e p h a n I e \0

• ม�พื่�/นิที่�� ที่��ไม�ได�ใช�งานิ =>ส�/นเปล(องหน�วย์ค่วามูจำ�า• ตั�องม�ว�ธ์�การที่��ด�กว�านิ�/แนิ�ๆ

• ภาษาซี. จำะมู. ตั วแปรพอย์น�เตัอร�ทำ. สามูารถึ character string ได�• จำะประหย์ ดเน(/อทำ. มูากกว�า

Page 19: อาเรย์  (Array)

19

เป&นิอาเรย์�ม�ตั�เด�ย์วที่��เก(บุพื่อย์นิ�เตัอร�ที่��ช�/ไปที่��ข้�อม.ลุ่ charcter

นิ��นิก(คื�อ การสร�าง อาเรย์�ข้องพื่อย์นิ�เตัอร�นิ��นิเอง ซึ่!�งจากตั�วอย์�างที่��ผ่�านิมาประกาศตั�วแปรอาเรย์�ใหัม�เป&นิ

char * names[ 5] = { “George”, “Michelle”,

“Joe”,“Marcus”,“Stephanie” };

ใช�พื่�/นิที่��เที่�าไร?

อาเรย์�ข้องพื่อย์นิ�เตัอร�ที่��ใช�เก(บุตั�วอ�กษร

Page 20: อาเรย์  (Array)

20

การใช�พื่�/นิที่��ในิ Memorynames[0]names[1]

names[2]

names[3]

names[4]

Page 21: อาเรย์  (Array)

21

จงแสดงคื�าผ่ลุ่ลุ่�พื่ธ์�names หมูาย์ถึ�งค่�า

__________names[0] หมูาย์ถึ�งค่�า __________*names หมูาย์ถึ�งค่�า __________names[1] หมูาย์ถึ�งค่�า __________names+1 หมูาย์ถึ�งค่�า __________*(names+1) หมูาย์ถึ�งค่�า __________

Page 22: อาเรย์  (Array)

22

แบุบุฝึ4กหั�ดchar * names[ 5] = { “George”,

“Michelle”,“Joe”,“Marcus”,“Stephanie” };

จากการประกาศตั�วแปรข้�างตั�นิ จงแสดงข้�อม.ลุ่ character string ที่��เก(บุในิ array ที่�/งแบุบุที่างตัรงแลุ่ะที่างอ�อม