วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2552

LECTURE2

DTS : 02-24-06-2552

เรื่อง Array and Record

อะเรย์เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้ายเซ็ตในคณิตศาสตร์
คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากันเรียงต่อเนื่องในหน่วยความจำหลัก

การกำหนด Array

การกำหนดอะเรย์จะต้องกำหนดชื่ออะเรย์ พร้อมsubscript ซึ่งเป็นตัวกำหนดขอบเขตของอะเรย์ มีได้มากกว่า 1 ตัวจำนวน subscript จะเป็น ตัวบอกมิติของอะเรย์นั้น อะเรย์ที่มี subscript มากกว่า 1 ตัวขึ้นไป จะเรียกว่า อะเรย์หลายมิติ

การกำหนด subscript แต่ละตัวจะประกอบไปด้วย ค่าสูงสุดและ ค่าต่ำสุดของ subscript นั้น การประกาศค่าตัวแปรอะเรย์ ในภาษาคอมพิวเตอร์ บางภาษา เช่น

ภาษาปาสคาล var A: array[1..10] of real;

var K: array[1..5,1..10] of integer;

ภาษาซี float A[10];

int K[5] [10];

ข้อกำหนดของการกำหนดค่าต่ำสุดและค่าสูงสุดของ subscript คือ

1. ค่าต่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ

2. ค่าต่ำสุด เรียกว่า ขอบเขตล่าง (lower bound)

3. ค่าสูงสุด เรียกว่า ขอบเขตบน (upper bound)


ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก จะต้องมีค่ามากกว่า หรือเท่ากับขอบเขตล่าง และน้อยกว่าหรือเท่ากับขอบเขตบน

ตัวอย่าง

จำนวนสมาชิกหรือขนาดของอะเรย์ nมิติ หาได้จากขนาดของอะเรย์ = ผลคูณของขนาดของsubscript แต่ละตัวเช่นขนาดของอะเรย์

A = Upper bound – lower bound+1

= 10-1+1 = 10


อะเรย์ 1 มิติ

รูปแบบ
data-type array-name[expression]

data-type คือ ประเภทของข้อมูลอะเรย์ เช่น int char float

array-name คือ ชื่อของอะเรย์expression คือ นิพจน์จำนวนเต็มซึ่งระบุจำนวนสมาชิกของอะเรย์ตัวอย่าง char[4]; int num[10];

Example


#include
#define N 5
int main(void) {
int i;
float score[N];
float total=0;
printf("Number of student [%d]\n",N);
for(i=0; i

การส่งอะเรย์ให้ฟังก์ชั่น
สามารถกำหนดอะเรย์เป็นพารามิเตอร์ส่งให้กับฟังก์ชันได้ 2 ลักษณะ
1. การกำหนด array element เป็นพารามิเตอร์ส่งค่าให้กับฟังก์ชัน ทำได้โดยอ้างถึงชื่ออะเรย์พร้อมระบุsubscript
ตัวอย่าง
swap(num[2],num[3]);
draw_house(color[i],x[i],y[i]);


2. ส่งอะเรย์ทั้งชุดให้ฟังก์ชันทำได้โดยอ้างถึงชื่ออะเรย์โดยไม่มีsubscript
ตัวอย่าง
#define N 10
float a[N]; float avg;
avg = average(N,a);

อะเรย์2มิติ
รูปแบบ
type array-name[n] [m];
type หมายถึง ชนิดของตัวแปรที่ต้องการประกาศเป็นอะเรย์
array-name หมายถึง ชื่อของตัวแปรที่ต้องการประกาศเป็นอะเรย์
n หมายถึง ตัวเลขที่แสดงตำแหน่งของแถว
m หมายถึง ตัวเลขที่แสดงตำแหน่งของคอลัมน์

ตัวอย่าง
char a[2][3];
col1 col2 col3
row1 a[0][0] a[0][1] a[0][2]
row 2 a[1][0] a[1][1] a[1][2]
หมายถึง คอมพิวเตอร์จะจองเนื้อที่ในหน่วยความจำ จำนวน 6 ที่สำหรับตัวแปร a


Example
#include
int main(void)
{
int a[3][4],r,c;
for(r=0; r<=2; r++) for(c=0;c<=3;c++) { printf(" Entry Number "); scanf("%d",&a[r][c]); } for(r=0; r<=2; r++) for(c=0;c<=3;c++) { printf("\n Display"); printf("%4d",a[r][c]); } return 0;


การนิยาม structure
รูปแบบ
struct struc-name {
type name-1;
type name-2;
………
type name-n;
} struc-variable;


struct เป็นคำหลักที่ต้องมีเสมอ
struc-name ชื่อกลุ่ม structure
type ชนิดของตัวแปรที่อยู่ในกลุ่ม structure
name-n ชื่อของตัวแปรที่อยู่ในกลุ่ม structure
struc-variable ชื่อตัวแปรชนิดโครงสร้างคือ ตัวแปรที่มีโครงสร้าง เหมือนกับที่ประกาศไว้ใน ชื่อของกลุ่ม structureอาจมีหรือไม่มีก็ได้
ถ้ามีมากกว่า
1 ชื่อ แยกกันด้วยเครื่องหมายคอมม่า (,)


การประกาศสมาชิกแต่ละตัวของ structure

สมาชิกแต่ละตัวของ structure จะเป็นตัวแปรธรรมดา พอยน์เตอร์ อะเรย์หรือ structure ตัวอื่นก็ได้ โดยชื่อของสมาชิกแต่ละตัวต้องแตกต่างกัน

ตัวอย่าง
struct employee {
char name[30];
int age;
float salary;
} personel;




ไม่มีความคิดเห็น:

แสดงความคิดเห็น