21

ทบทวน อาร์เรย์ (Array)

Embed Size (px)

DESCRIPTION

ทบทวน อาร์เรย์ (Array). วัตถุประสงค์. สามารถใช้งานตัวแปรประเภทอาร์เรย์ 1 มิติ และ 2 มิติได้ เข้าใจการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน สามารถใช้งานข้อมูลชนิดโครงสร้าง (structure) ได้. Outline. นิยามอาร์เรย์ การประกาศตัวแปรอาร์เรย์ การเข้าถึงตัวแปรอาร์เรย์ การส่งผ่านอาร์เรย์ไปยังฟังก์ชัน - PowerPoint PPT Presentation

Citation preview

Page 1: ทบทวน  อาร์เรย์  (Array)
Page 2: ทบทวน  อาร์เรย์  (Array)

วั�ตถุ�ประสงค์�สามารถุใช้�งานต�วัแปรประเภทอาร�เรย์� 1 ม�ต�

และ 2 ม�ต�ได้�เข้�าใจการส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นสามารถุใช้�งานข้�อม%ลช้น�ด้โค์รงสร�าง (structure) ได้�

Page 3: ทบทวน  อาร์เรย์  (Array)

Outlineน�ย์ามอาร�เรย์�การประกาศต�วัแปรอาร�เรย์�การเข้�าถุ(งต�วัแปรอาร�เรย์�การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นข้�อม%ลช้น�ด้โค์รงสร�าง

Page 4: ทบทวน  อาร์เรย์  (Array)

น�ย์ามข้องอาร�เรย์�อาร์�เร์ย์� เป)นร%ปแบบข้�อม%ลแบบหน(,งท-,จ�ด้

เก.บข้�อม%ลช้น�ด้เด้-ย์วัก�นอย์!างต!อเน/,องก�น โด้ย์จ�ด้อย์%!ในบล.อกข้องหน!วัย์ค์วัามจ0าเด้-ย์วัก�น และใช้�ช้/,อต�วัแปรร!วัมก�นในการอ�างถุ(ง7

0

6

5

8

4

5

0

4

6

2

3

v[0] v[1] v[2] v[3] v[4] v[5]

Page 5: ทบทวน  อาร์เรย์  (Array)

การประกาศต�วัแปรแบบอาร�เรย์�อาร์�เร์ย์� 1 มิติ ม-โค์รงสร�างเท-ย์บเท!าเมตร�กซ์�

ข้นาด้ n x 1 การประกาศต�วัแปรอาร�เรย์� จะใช้�เค์ร/,องหมาย์ [] ล�อม

ค์!าต�วัเลข้จ0านวันเต.ม เพื่/,อบอกจ0านวันสมาช้�กท-,ต�องการ ร์�ปแบบการ์ปร์ะกาศติ�วแปร์อาร์�เร์ย์� 1 มิติ:

ชนิดของติ�วแปร์ ช��อติ�วแปร์[จำ�านิวนิสมิาชกที่��ติ องการ์]

เช้!น int v[6] float data[10] 7

0

6

5

8

4

5

0

4

6

2

3

Page 6: ทบทวน  อาร์เรย์  (Array)

การประกาศต�วัแปรแบบอาร�เรย์�อาร์�เร์ย์� 2 มิติ ม-โค์รงสร�างค์ล�าย์ก�บเมตร�กซ์�สองม�ต�

ม-การอ�างถุ(งข้�อม%ลโด้ย์ใช้�ค์!าเลข้ด้�ช้น- 2 ค์!า ซ์(,งประกอบค์!าด้�ช้น-ท-,ใช้�ในการอ�างอ�งในแนวัแถุวั (rows) และค์!าด้�ช้น-ท-,ใช้�อ�างอ�งในแนวัค์อล�มน� (columns)

ร์�ปแบบการ์ปร์ะกาศติ�วแปร์อาร์�เร์ย์� 2 มิติ:ชนิดข อมิ�ล ช��อติ�วแปร์[จำ�านิวนิแถว][จำ�านิวนิ

คอล�มินิ�]เช้!น int val[2][3]

float[5][10]

5 2 7

6 7 2

Page 7: ทบทวน  อาร์เรย์  (Array)

การเข้�าถุ(งต�วัแปรอาร�เรย์�ร์�ปแบบการ์เข าถ$งติ�วแปร์อาร์�เร์ย์� 1 มิติ

ช��อติ�วแปร์[ติ�วช�%]

ร์�ปแบบการ์เข าถ$งติ�วแปร์อาร์�เร์ย์� 2 มิติช��อติ�วแปร์[ติ�วช�%แนิวแถว][ติ�วช�%แนิวคอล�มินิ�]

ติ�วช�%อาจป3อนอย์%!ในร%ปข้องต�วัแปร น�พื่จน� หร/อฟั$งก�ช้�นท-,ให�ค์!าเป)นค์!าจ0านวันเต.มได้�

Page 8: ทบทวน  อาร์เรย์  (Array)

ต�วัอย์!างการเข้�าถุ(งต�วัแปรอาร�เรย์�read mark[0] write mark[i]tol tol + v[i]v[0] 78v[i] v[i-1] + 5x[i][j] i*j

Page 9: ทบทวน  อาร์เรย์  (Array)

การใช้�ค์0าส�,ง for ในการเข้�าถุ(งอาร�เรย์� 1 ม�ต�ติ�วอย์&าง ถุ�าต�องการหาผ่ลรวัมข้องต�วัแปร score 5 อ�ล�เมนต� ท0าได้�

ด้�งน-4

sum score[0] + score[1] + score[2] + score[3] + score[4]

เปล��ย์นิเป'นิใช for loop ได ด�งนิ�%

sum 0for i0 to 4

sum sum + score[i]

Page 10: ทบทวน  อาร์เรย์  (Array)

ต�วัอย์!างการร�บค์!าและแสด้งผ่ลล�พื่ธ์�ข้องอาร�เรย์�#include<stdio.h>main(){

int sal[4]for(i=0;i<4;i++)

{printf(“Enter sal[%d]: ”,i); scanf(“%d”, sal[i]); //การร�บค์!า

} for(i=1;i<4;i++)

{sal[i] = sal[i]*sal[i-1]; printf(“sal[%d] = %d\n” , i, sal[i]); //การแสด้ง

ผ่ลล�พื่ธ์�}

}

Enter[0]: 1Enter[1]: 1Enter[2]: 2Enter[3]: 5……………………………………………………………………………

…………………………………………………………………………….

……………………………………………………………………………..

Page 11: ทบทวน  อาร์เรย์  (Array)

การใช้�ค์0าส�,ง for ในการเข้�าถุ(งอาร�เรย์� 2 ม�ต�ใช้�ล%ป for 2 ช้�4น โด้ย์ล%ปช้�4นนอกวันรอบตามจ0านวัน

แถุวั และล%ปช้�4นในวันรอบตามจ0านวันค์อล�มน�ต�วัอย์!างเช้!น ต�วัการหาผ่ลรวัมข้องค์ะแนนเก.บ

ค์ะแนนสอบกลางภาค์ ค์ะแนนสอบปลาย์ภาค์ข้องน�กศ(กษาแต!ละค์น จ0านวัน 5 ค์น

1. for i0 to 41.1 stu[i]01.2 for j 0 to 2

1.2.1 stu[i] stu[i] + score[i][j]

Page 12: ทบทวน  อาร์เรย์  (Array)

ต�วัอย์!างการร�บค์!าและแสด้งผ่ลล�พื่ธ์�ข้องอาร�เรย์� 2 ม�ต�

#include<stdio.h>main(){

float score[5][3], stu[5];for(i=0;i<5;i++){ stu[i]=0; for(j=0;j<3;j++)

{ scanf(“%f”, &score[i][j]); //การร�บค์!า

stu[i] = stu[i] + score[i][j];}

}

for(i=0;i<5;i++){ for(j=0;j<3;j++) printf(“%.2f\t”, score[i][j]); //การแสด้งผ่ลล�พื่ธ์� printf(“\t%.2f\n”, stu[i]);}

}

Page 13: ทบทวน  อาร์เรย์  (Array)

การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นต�วัอย์!างการส!งค์!าแต!ละอ�ล�เมนต�ในอาร�เรย์�ให�ก�บฟั$งก�ช้�น

#include<stdio.h>void chk_v(int num){

if(num%2==0) printf(“%d is an even number\n”, num);else printf(“%d is an odd number\n”,num);

}main(){ int i;

int val[5] = {2,7,4,1,9};for(i=0;i<5;i++)

chk_v(val[i]); //ส&งไปที่��ค&า (call by value)}

Output???

Page 14: ทบทวน  อาร์เรย์  (Array)

การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นต�วัอย์!างการส!งค์!าท�กอ�ล�เมนต�ในอาร�เรย์�ให�

ก�บฟั$งก�ช้�น#include<stdio.h>void chk_v(int num[5]){ int i;

for(i=0;i<5;i++){ if(num[i]%2==0) printf(“%d is an even number\n”, num); else printf(“%d is an odd number\n”,num);}

}main(){

int val[5] = {2,7,4,1,9};chk_v(val); //ส&งไปที่*กค&าในิอาร์�เร์ย์� (call by reference)

}

Output???

Page 15: ทบทวน  อาร์เรย์  (Array)

แบบฝึ8กห�ด้เข้-ย์นข้�4นตอนวั�ธ์-ด้�วัย์รห�สจ0าลองเพื่/,อร�บ

2 เมตร�กซ์� ข้นาด้ 4 x 3 แล�วัเร-ย์กใช้� 2 ฟั$งก�ช้�น

1 .ท0าการบวักก�น2. ท0า transpose

Page 16: ทบทวน  อาร์เรย์  (Array)

ข้�อม%ลช้น�ด้โค์รงสร�างการประกาศข้�อม%ลช้น�ด้โค์รงสร�าง

struct ช้/,อแบบข้�อม%ลช้น�ด้โค์รงสร�าง{

ช้น�ด้ข้�อม%ล ช้/,อต�วัแปรสมาช้�ก ;ช้น�ด้ข้�อม%ล ช้/,อต�วัแปรสมาช้�ก ;....

}ช้/,อต�วัแปรโค์รงสร�าง;

Page 17: ทบทวน  อาร์เรย์  (Array)

ข้�อม%ลช้น�ด้โค์รงสร�างติ�วอย์&าง การประกาศข้�อม%ลช้น�ด้โค์รงสร�าง

struct student_history{

char id[10] ;charname[30];int age;char faculty[20];

}student[50];

Page 18: ทบทวน  อาร์เรย์  (Array)

ข้�อม%ลช้น�ด้โค์รงสร�างการ์เร์�ย์กใช การ์เข าถ$ง และการ์ก�าหนิดค&า

การร�บค์!า และการก0าหนด้ค์!าเร�,มต�น สามารถุท0าได้�เช้!นเด้-ย์วัก�บต�วัแปรท�,วัไป เพื่-ย์งแต!การอ�างถุ(งแต!กต!างก�นเท!าน�4น ซ์(,งการอ�างถุ(งต�วัแปรท-,เป)นสมาช้�กในต�วัแปรโค์รงสร�างน�4น สามารถุท0าได้�โด้ย์การระบ�ช้/,อต�วัแปรโค์รงสร�าง ตามด้�วัย์จ�ด้ (.) และตามด้�วัย์ช้/,อต�วัแปรสมาช้�กท-,ต�องการอ�างถุ(ง

เช้!น student[0].id student[0].name

student[0].age student[0].faculty

Page 19: ทบทวน  อาร์เรย์  (Array)

created by Dararat Saeleee , 344-211 Algorithmic Process & Programming 19

การ์ส&งผ่&านิข อมิ�ลแบบ struct เป'นิ argument

#include<stdio.h>

void print(struct history);

struct history { int id; char name[20]; char faculty[25]; } student;

int main (){ printf ("Enter id :"); scanf ("%d",&student.id); printf ("Enter name :"); scanf ("%s",student.name); printf ("Enter faculty :"); scanf ("%s",student.faculty); printf ("\nstudent detail");

print(student); return 0;}

void print(struct history std)

{ printf ("\n\t ID :%d \n\t Name : %s \n\t Faculty: %s",std.id,std.name,std.faculty);}

Struct1_2.c

Page 20: ทบทวน  อาร์เรย์  (Array)

created by Dararat Saeleee , 344-211 Algorithmic Process & Programming 20

การ์ส&งผ่&านิข อมิ�ลแบบ struct เป'นิ argument

typedef struct { int roomno ; char name [15]; int age ; char sex ;} Detail;

#define size 4Detail customer [size] ;

void range(Detail c[ ]);

void main(){ …..

range(customer); …}

void range (Detail c[ ])

{ int i, minage=999,

maxage=0; for(i=0;i<size;i++) { if (c[i].age < minage) minage = c[i].age; if (c[i].age > maxage) maxage = c[i].age; } printf("age range = %d -%d\

n",minage,maxage);}

Demo struct2_2.c

Page 21: ทบทวน  อาร์เรย์  (Array)

created by Dararat Saeleee , 344-211 Algorithmic Process & Programming

Class Exerciseเข้-ย์นโปรแกรมภาษาซ์-เพื่/,อพื่�มพื่�ราย์งานผ่ลการ

เร-ย์น ด้�งน-4344-201 C programming 3 B+322-212 Basic Math 4 C890-200 English 1 3 A

GPA = 3.05 Status = Pass