อาเรย์ (array)
DESCRIPTION
อาเรย์ (Array). หัวข้อ. การประกาศตัวแปรอาเรย์ การเข้าถึงข้อมูลในอาเรย์ Multidimensional arrays ( อาเรย์หลายมิติ ) การกำหนดค่าเริ่มต้นให้กับอาเรย์ 2 มิติ อาเรย์ของ characters string การผ่านตัวแปร array ระหว่างฟังก์ชัน. Array. - PowerPoint PPT PresentationTRANSCRIPT
อาเรย์� (Array)
2
หั�วข้�อ
*การประกาศตั วแปรอาเรย์�*การเข้�าถึ�งข้�อมู�ลในอาเรย์�*Multidimensional arrays (อาเรย์�หลาย์มู�ตั�)*การก�าหนดค่�าเร� มูตั�นให�ก บอาเรย์� 2 มู�ตั�*อาเรย์�ข้อง characters string*การผ่�านตั วแปร array ระหว�างฟั$งก�ชั น
3
Array อาเรย์� คื�อ กลุ่��มข้องตั�วแปรชนิ�ดเด�ย์วก�นิมากกว�า 1 ตั�วที่��ใช�ช��อเด�ย์วก�นิ ซึ่!�งการเข้�าถึ!งสมาช�ก (element) แตั�ลุ่ะตั�วจะใช�ดรรช� (index หัร�อ subscript) ที่��เป&นิเลุ่ข้จ'านิวนิเตั(มในิการระบุ�
Array ใชั�ทำ�าอะไรได�บ�างเก(บุช�ดตั�วอ�กษร หัร�อ (Characters
String) เก(บุช�ดคื�าตั�วแปรได�ที่�กชนิ�ด เช�นิ int
salary[50]
*ดรรชนิ�ข้องอาเรย์�ที่�กชนิ�ดในิภาษา C จะเร��มที่�� 0 เสมอ
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]
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;
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]);
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]); //ได�ผ่ลล พธ์�อย์�างไร
8
ล กษณะการใชั�นค่จำ . ข้องตั วแปรอาเรย์�
ประกาศตั�วแปรint arr_i[4] = { 1, 2, 3, 4};
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) );
10
แบุบุฝึ4กหั�ดใหั�ที่'าการประกาศตั�วแปรเพื่��อเก(บุคืะแนินินิ�กศ!กษาจ'านิวนิ 1 0 คืนิ แลุ่�วที่'าการรอร�บุคืะแนินินิ�กศ!กษาที่�กคืนิจากผ่.�ใช� แลุ่ะหัาคื�าเฉลุ่��ย์ข้องนิ�กศ!กษาที่�/ง 10 คืนินิ�/นิ
11
Multidimensional arrays (อาเรย์�หลาย์มู�ตั�) ที่��ผ่�านิมา
Array หันิ!�งม�ตั� (one-dimensional arrays)
คื�อ ใช�ดรรชนิ� (index หัร�อ subscript) เพื่�ย์งตั�วเด�ย์ว
อาเรย์�หลาย์มู�ตั� (Multidimensional arrays) ใช�ดรรชนิ�หัลุ่าย์ตั�ว หัากใช�ดรรชนิ� 2 ตั�ว จะเร�ย์กว�า อาเรย์� 2 ม�ตั� หัากใช�ดรรชนิ� 3 ตั�ว จะเร�ย์กว�า อาเรย์� 3 ม�ตั�
หันิ!�งม�ตั�
สองม�ตั�
สามม�ตั�
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]
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
ให�ค่�า ณ. ทำ. ประกาศตั วแปร
โดย์ใชั�การวนรอบ
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]
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]
16
แบบฝึ7กห ดจงประกาศตั�วแปรอาเรย์�เพื่��อเก(บุข้�อม.ลุ่ตั�อไปนิ�/ (ประกาศตั�วแปรพื่ร�อมก�บุก'าหันิดคื�าเร��มตั�นิ) พื่ร�อมแสดงผ่ลุ่ลุ่�พื่ธ์�ข้�อม.ลุ่ที่�กราย์การตัามลุ่'าด�บุชั( อ ค่ะแนนJOHN 20.5MICHEAL 31DAVID 28JEFF 36.7HERBERT 26
17
อาเรย์�ข้อง characters string
ตั�องการเก(บุ characters string ลุ่งในิตั�วแปรอาเรย์� เช�นิข้�อม.ลุ่
GeorgeMichelleJoeMarcusStephanie
เราอาจจะสร�างอาเรย์�สองมู�ตั� เพ( อเก0บข้�อมู�ล character เช�นิchar NameArr[ 5] [15] = { {“George”},
{“Michelle”},{“Joe”},{“Marcus”},
{“Stephanie”} };NameArr จะใช�พื่�/นิที่��เที่�าไร?
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 ได�• จำะประหย์ ดเน(/อทำ. มูากกว�า
19
เป&นิอาเรย์�ม�ตั�เด�ย์วที่��เก(บุพื่อย์นิ�เตัอร�ที่��ช�/ไปที่��ข้�อม.ลุ่ charcter
นิ��นิก(คื�อ การสร�าง อาเรย์�ข้องพื่อย์นิ�เตัอร�นิ��นิเอง ซึ่!�งจากตั�วอย์�างที่��ผ่�านิมาประกาศตั�วแปรอาเรย์�ใหัม�เป&นิ
char * names[ 5] = { “George”, “Michelle”,
“Joe”,“Marcus”,“Stephanie” };
ใช�พื่�/นิที่��เที่�าไร?
อาเรย์�ข้องพื่อย์นิ�เตัอร�ที่��ใช�เก(บุตั�วอ�กษร
20
การใช�พื่�/นิที่��ในิ Memorynames[0]names[1]
names[2]
names[3]
names[4]
21
จงแสดงคื�าผ่ลุ่ลุ่�พื่ธ์�names หมูาย์ถึ�งค่�า
__________names[0] หมูาย์ถึ�งค่�า __________*names หมูาย์ถึ�งค่�า __________names[1] หมูาย์ถึ�งค่�า __________names+1 หมูาย์ถึ�งค่�า __________*(names+1) หมูาย์ถึ�งค่�า __________
22
แบุบุฝึ4กหั�ดchar * names[ 5] = { “George”,
“Michelle”,“Joe”,“Marcus”,“Stephanie” };
จากการประกาศตั�วแปรข้�างตั�นิ จงแสดงข้�อม.ลุ่ character string ที่��เก(บุในิ array ที่�/งแบุบุที่างตัรงแลุ่ะที่างอ�อม