ตัวแปรชุด (Array) - โรงเรียนมหิดลวิทยานุสรณ์

Download Report

Transcript ตัวแปรชุด (Array) - โรงเรียนมหิดลวิทยานุสรณ์

Slide 1

โดยอาจารย์ศิริพร ศักดิบ์ ญ
ุ ญารัตน์
ครู ชานาญการ โรงเรียนมหิดลวิทยานุสรณ์


Slide 2




ตัวแปรชุด เป็ นโครงสร้างข้อมูลทีใ่ ช้เก็บข้อมูลชนิดเดียวกัน เป็ นกลุม่ หรือชุดที่
เรียงติดต่อกันเป็ นแถว มีขอบเขตจากัดและมีขนาดคงที่ เช่น int x[5];
ข้อมูลชนิ ดเดียวกัน คือ ข้อมูลทุกตัวทีอ่ ยู่ในตัวแปรชุดจะต้องเป็ นข้อมูลชนิด
เดียวกันเท่านัน้ เช่น ถ้าเป็ นตัวแปรชุดชนิดจานวนเต็ม ข้อมูลทุกตัวในตัวแปร
ชุดก็ตอ้ งเป็ นชนิดจานวนเต็ม ไม่สามารถเก็บข้อมูลต่างชนิดกันได้


Slide 3



การประกาศตัวแปร
ชนิ ดข้อมูล ชื่อตัวแปร [ขนาดของตัวแปรชุด];
เช่น float score[5];
score[0] score[1] score[2] score[3] score[4]
score
4 bytes

4 bytes

4 bytes

4 bytes

4 bytes


Slide 4





สามารถกาหนดค่าเริ่ มต้นให้กบั array ได้ต้ งั แต่ตอนประกาศตัวแแปร
ค่าที่กาหนดต้องอยูใ่ นเครื่ องหมาย { } และถ้ามีมากกวแ่า 1 ค่า ต้องแยก
จากกันด้วแยเครื่ องหมาย , (comma)
เช่น int a[5] = {10,20,30,40,50 } ;
a

A[0]
10

A[1]
20

A[2]
30

A[3]
40

A[4]
50


Slide 5







ถ้าในตอนประกาศตัวแแปรตัวแแปรชุดไม่กาหนดค่าเริ่ มต้นให้กบั มันแล้วแ
ค่าที่อยูใ่ นตัวแแปรจะเป็ นค่าที่คา้ งอยูใ่ นหน่วแยควแามจาช่วแงที่เราจองไวแ้
เป็ นตัวแแปรชุดนั้น
ถ้ากาหนดค่าเริ่ มต้นตั้งแต่ตอนประกาศตัวแแปรแต่กาหนดไม่ครบ ใน
กรณี ที่เป็ นตัวแแปรชุดแบบตัวแเลขทั้งจานวแนเต็มและจานวแนจริ ง ค่าที่
เหลือจะถูกกาหนดเป็ น 0 โดยอัตโนมัติ
เช่น float price[5] = {50.5, 2.25, 10.0} ;
price[0] price[1] price[2] price[3] price[4]
price 50.5 2.25 10.0
0.0
0.0


Slide 6







บางครั้งถ้ากาหนดค่าเริ่ มต้นให้แก่ตวแั แปรชุดเลย เราไม่จาเป็ นต้องใส่ ขนาด
ของตัวแแปรชุดก็ได้
เช่น float a[ ] = {1,2,3,4,5} ;
ความหมายคือ เป็ นการกาหนดตัวแปรตัวแปรชุดของจานวนจริ งแบบ
float ขนาด 5 ช่ อง
แต่ถา้ เรากาหนดตัวแแปรตัวแแปรชุดโดยไม่ใส่ ขนาดของตัวแแปรชุด และไม่ได้
กาหนดค่าเริ่ มต้นให้กบั มัน
เช่น int a[ ] ;  ประกาศผิด!!!
นั่นคือ เราไม่ สามารถประกาศตัวแปรตัวแปรชุดโดยไม่ ใส่ ขนาดของตัว
แปรชุดได้ ยกเว้ นมีการกาหนดค่ าเริ่ มต้ นให้ กับมันตั้งแต่ แรก


Slide 7




ใช้เลขจานวแนเต็มทาหน้าที่เป็ นดัชนี (index) เพื่อระบุถึงข้อมูลนั้น
โดยระบุชื่อตัวแแปรตัวแแปรชุด แล้วแตามด้วแยค่าตาแหน่งที่อยูข่ องสมาชิก
ในภาษาซี ดัชนีเริ่ มตั้งแต่ [0] จนถึง [n-1] ( n = จานวแนของสมาชิกในตัวแ
แปรชุด )
ตัวอย่ าง ให้ a เป็ นตัวแแปรชุดของ int ขนาด 5 ช่อง โดยแต่ละช่องมี
ข้อมูล 1, 2, 3, 4, 5 ตามลาดับ
a

a[0]
1

a[1]
2

a[2]
3

a[3]
4

a[4]
5


Slide 8



a[0] , ... , a[4] เปรี ยบเสมือนตัวแแปร int ธรรมดา 5 ตัวแ นัน่ คือสามารถ
นามากระทาการต่างๆ ได้เหมือนตัวแแปรธรรมดา เช่น
 รับข้อมูลเข้าไปเก็บไวแ้ในตัวแแปรชุด a ตาแหน่งที่ 3 สามารถเขียนเป็ นคาสัง่ ได้

ดังนี้ scanf ( “%d” , &a[3] ) ;
 i = 3;

a[i] = a[i+1] + a[4] ; หมายถึง
1) กาหนดค่าให้ตวแั แปร i เท่ากับ 3
2) นาข้อมูลในตัวแแปรชุด a ตาแหน่งที่ i+1 มาบวแกกับข้อมูลในตัวแแปรชุด a ตาแหน่ง
ที่ 4 แล้วแเก็บผลลัพธ์ที่ได้ไวแ้ในตัวแแปรชุด a ตาแหน่งที่ i (นัน่ คือ นา a[4] + a[4]
แล้วแเก็บผลลัพธ์น้ ีไวแ้ใน a[3] นัน่ เอง)


Slide 9



เช่น char code[5];
[0]

[1]

[2]

[3]

[4]

code



หมายถึงประกาศให้ตวแั แปร code เป็ นตัวแแปรชุด 1 มิติขนาด 5 ช่อง แต่
ละช่องเก็บข้อมูลประเภทอักขระ


Slide 10



char name[ ] = “MWIT School”; จะได้
name

[0]

[1]

[2]

[3]

M

W

I

T

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

S

c

h

o

o

l

\0

1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte



โดยที่ตาแหน่ง name[11] จะเก็บค่า \0 ไวแ้อตั โนมัติ เพื่อแสดงการสิ้ นสุ ด
ข้อควแาม


Slide 11

คาสัง่ รับค่า
คำสั ่งรับค่ำ

ตัวอย่ำง

scanf(“%s”,ชื่อตัวแแปรสตริ ง); scanf(“%s”,name);
gets(ชื่อตัวแแปร);
gets(name);

คาสัง่ แสดงค่า

คำสังแสดงผล


ตัวอย่ำง

printf(“%s”,ชื่อตัวแแปรสตริ ง); printf(“%s”,name);
puts(ชื่อตัวแแปร);
puts(name);


Slide 12

ชื่อฟังก์ชนั
strlen(ชื่อตัวแปร)
1
2
3
4
5
6
7
8
9
10
11

ควำมหมำย
หาความยาวสตริงของตัวแปรทีร่ ะบุ

#include
#include
void main()
{
char name[20];
int size;
printf(“Please enter your name: ”);
gets(name);
size = strlen(name);
printf(“Hello %s\n”, name);
printf(“Your name has %d characters”, size);
}

Library
string.h


Slide 13

ชื่อฟังก์ชนั
ควำมหมำย
strcpy(ชื่อตัวแปร1,ข้ อความ/ชื่อตัวแปร2) คัดลอกข้อความหรือค่าในตัวแปร 2 ไปเก็บไวแ้ใน ตัวแแปร 1
1
2
3
4
5
6
7
8
9
10
11

#include
#include
void main()
{
char s1[30], s2[30];
printf(“Please enter string1: ”);
gets(s1);
strcpy(s2, “ขุน”);
printf(“s1 : %s\n”, s1);
printf(“s2 : %s\n”, s2);
}

Library
string.h


Slide 14

ชื่อฟังก์ชนั
strcmp(ชื่อตัวแปร1, ชื่อตัวแปร2)

1
2
3
4
5
6
7
8

ควำมหมำย
เปรียบเทียบลาดับสตริงระหว่าง ตัวแปร 1 และตัวแแปร 2 โดย
ถ้าลาดับตัวอักษรใน ตัวแปร1 มาก่อน ตัวแแปร2
แสดงว่า ตัวแปร1 < ตัวแแปร2 ดังนั้นจะได้เงื่อนไขดังนี้
ตัวแปร1 < ตัวแแปร2
ฟังก์ชนั จะให้ค่าติดลบ
ตัวแปร1 == ตัวแแปร2 ฟังก์ชนั จะให้ค่าเท่ากับ 0
ตัวแปร1 > ตัวแแปร2
ฟังก์ชนั จะให้ค่าเป็ นบวแกที่มากกวแ่า 0

char s1[30], s2[30];
int x;
printf(“Please enter string1: ”);
gets(s1);
printf(“Please enter string2: ”);
gets(s2);
x = strcmp(s1, s2);
if (x < 0)
printf(“%s\n%s”, s1, s2);
else if(x > 0)
printf(“%s\n%s”, s2, s1);
else
printf(“similar strings”);

Library
string.h


Slide 15

ชื่อฟังก์ชนั
strcat(ชื่อตัวแปร1, ชื่อตัวแปร2)

1
2
3
4
5
6
7
8
9
10
11
12

ควำมหมำย
รวมสตริงในตัวแปร 2 ไปต่อท้าย ตัวแแปร 1 แล้วแเก็บสตริ งที่ต่อ
กันแล้วแไวแ้ในตัวแแปร 1

#include
#include
void main()
{
char s1[20], s2[]=”School”;
strcpy(s1,”MWIT ”);
printf(“s1 : %s\n”, s1);
printf(“s2 : %s”, s2);
strcat(s1, s2);
printf(“After strcat\n”);
printf(“s1 : %s\n”, s1);
printf(“s2 : %s”, s2);
}

Library
string.h


Slide 16

กำรประกำศตัวแปร
ชนิดข้อมูล ชื่อตัวแปร [row][column];
เช่น int b[3][4];
Column (คอลัมน์)
[1]
[2]

Row
(แถวแ)



b
[0]
[3]
[0] b[0][0] b[0][1] b[0][2] b[0][3]
[1] b[1][0] b[1][1] b[1][2] b[1][3]
[2] b[2][0] b[2][1] b[2][2] b[2][3]


Slide 17



การกาหนดค่าเริ่มต้นให้กบั ตัวแปรชุด 2 มิติ
 int num[2][3] = {11,12,13,21,22,23};
 int num[2][3] = { {11,12,13} , {21,22,23} };
 int num[ ][3] = { {11,12,13} , {21,22,23} };
num [0]
[0] 11
[1] 21

[1]
12
22

[2]
13
23


Slide 18



กำรประกำศตัวแปร
ชนิดข้อมูล ชื่อตัวแปร [row][column][ชัน้ ];
เช่น int G[4][2][3];

ชัน้ 0

ชัน้ 1

ชัน้ 2