Tải bản đầy đủ (.pdf) (37 trang)

Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (933.08 KB, 37 trang )

Ch ng 06
Ki u c u trúc
Ki u m ng – chu i

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
1


N i dung






T khoá typedef
C u trúc
M ng
Chu i ký t

Tr n Quang


© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
2


nh ngh a ki u m i v i typedef


typedef cho phép ng i l p trình t o ra tên m i
cho m t ki u d li u đã có.






Tên m i mang l i tính d hi u h n, trong ng c nh
c a bài toán đang xét.
Tên m i giúp rút ng n mã ngu n

Cú pháp
typedef <tên_ki u_c > <tên_m i>;




Ví d
typedef unsigned char BYTE;
BYTE a, b;

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
3


ki u c u trúc (struct)







Là ki u d li u ph c h p, bao g m nhi u thành

ph n có th thu c các ki u d li u khác nhau
Các thành ph n g i là: tr ng d li u (field)
M t bi n thu c ki u c u trúc đ c xem là m t t p
h p nhi u bi n đ n l thành m t bi n duy nh t
Ví d


M i sinh viên c n l u các thông tin:





Tr n Quang
© 2016

Mã s sinh viên
H tên
Ngày sinh
Email, …
CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 4p trình
4



ki u c u trúc (struct)







T t c các d li u trong m t bi n c u trúc có quan
h v i nhau t o thành m t kh i
Luôn luôn c p phát cùng nhau và s p x p liên t c
trong b nh
Luôn luôn đ c hu kh i b nh cùng nhau
Các m nh d li u thành ph n có th truy xu t đ c
l p, thơng quan tên field.

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
5



Khai báo ki u d li u c u trúc




Khai báo ki u c u trúc
struct <tên c u trúc> {
<khai báo các tr ng >
}
Ví d
struct sinhvien {
char mssv[8];
char hoten[30];
float dtb;
}

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
6
K thu t l p trình
6



Khai báo bi n c u trúc




Cú pháp:
struct <tên c u trúc> <danh sách bi n>;
Ví d :
struct sinhvien sv1, sv2, sv3;

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 7p trình
7


Khai báo bi n c u trúc







Cú pháp:
struct <tên c u trúc> <danh sách bi n>;
Ví d :
struct sinhvien sv1, sv2, sv3;
K t h p khai báo bi n v i khai báo c u trúc
struct [tên c u trúc] {
<khai báo các tr ng>;
} <danh sách bi n>;

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 8p trình
8


Gán giá tr kh i t o khi khai báo
struct sinhvien {
char mssv[8];
char hoten[30];

float dtb;
S1: Không đ c kh i đ ng
};
s2: đ c kh i đ ng không đ y đ
void main() {
s3: đ c kh i đ ng đ y đ
struct sinhvien s1;
struct sinhvien s2 = { "001", "Nguyen Van An" };
struct sinhvien s3 = { "001", "Nguyen Van An", 9.5f };
printf("MSSV: %s\n", s3.mssv);
printf("Ho Ten: %s\n", s3.hoten);
Truy xu t d li u thành ph n qua tên g i
}
Quy t c: <tên bi n>.<tên thành ph n>
Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
9


K t h p typedef v i struct




B t khoá “struct” khi khai báo bi n có ki u struct
Ví d :
typedef struct sPoint3D {
float x, y, z;
} Point3D;

cách đ nh ngh a m t tên ki u m i
là Point3D thông qua typedef

void main(){
struct sPoint3D p1 = {1.0f, 2.0f, 3.0f};
Point3D p2 = {1.0f, 2.0f, 3.0f};
printf("p1 = (%4.1f,%4.1f,%4.1f)\n", p1.x, p1.y, p1.z);
printf("p2 = (%4.1f,%4.1f,%4.1f)\n", p2.x, p2.y, p2.z);
}

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
10



M ng

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
11


Khái ni m m ng




M ng là m t ki u d li u g m m t s h u h n
thành ph n. Các thành ph n có cùng m t ki u, g i
là ki u c s hay là ki u thành ph n.
M i ph n t c a m ng đ c tham kh o thông qua
tên m ng và ch s c a ph n t trong m ng

Tr n Quang

© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 12
p trình
12


Khái ni m m ng







M ng là m t dãy các ph n t cùng m t ki u n m
li n k nhau trong b nh .
Các ph n t có cùng m t ki u, g i là ki u c s
M i ph n t c a m ng đ c tham kh o thông qua
tên m ng và ch s c a ph n t trong m ng
Ví d

Tr n Quang

© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
13


Khái ni m m ng



Sáu s này n m liên t c nhau trên b nh
Do đó,




N u ơ nh đ u tiên, ch a giá tr 10, b t đ u BYTE
có đ a ch 100 trong vùng nh c a ch ng trình
Thì







Tr n Quang
© 2016

a ch
a ch
a ch
a ch
a ch

c
c
c
c
c

CuuDuongThanCong.com

a ô nh
a ô nh
a ô nh
a ô nh
a ô nh
Ch

ch
ch
ch
ch

ch

a 20: 104
a 30: 108
a 40: 112
a 50: 116
a 60: 120

ng 06: Array - struct

/>
K thu t l p trình
14


Khái ni m m ng





Các ph n t trong m ng đ c đánh ch s đ truy xu t
 Ph n t
đ u tiên LN LN CĨ ch s là 0
 Các ph n t
k ti p theo là 1, 2, …
Do đó,
 Ơ nh
ch a 10 có ch s là 0
 Ơ nh

ch a 20 có ch s là 1
 Ơ nh
ch a 30 có ch s là 2
 Ơ nh
ch a 40 có ch s là 3
 …

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
15


Khái ni m m ng



tính đ a ch c a ô nh có ch s k, ch
dùng công th c sau:





Tr n Quang
© 2016

ng trình

a ch = đ a ch ph n t đ u tiên + k *(kích th c
ph n t )
Do đó, ch ng trình d dàng ch ra ngay m t ph n
t có ch s b t k => TRUY C P NG U NHIÊN

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
16


M ng 1 chi u




Cú pháp khai báo
<ki u d li u> <tên m ng> [Ví d


c>];

// khai báo m ng A g m 10 ph n t thu c ki u int
int A[10];

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 17
p trình
17


M ng 1 chi u









Ví d :
int a[6];
int b[6] = {10, 20, 30};
int c[6] = {10, 20, 30, 40, 50, 60};
a: m ng g m 6 s nguyên giá tr các ph n t ch a
xác đ nh
b: m ng g m 6 s nguyên. Giá tr 3 ph n t đ u là:
10, 20, và 30. Còn 3 ph n t sau ch a xác đ nh
c: m ng g m 6 s nguyên. Giá tr các ph n t l n
l t là: 10, 20, 30, 40, 50, và 60

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
18


M ng 1 chi u

Hình nh trong
b nh c a các
m ng a, b, và c


Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
19


M ng 1 chi u




S ph n t c a m ng ph i bi t tr c th i đi m
biên d ch và là h ng s không âm.
S d ng macro




#define MAX_SIZE

Khai báo h ng s nguyên



const int max_size
#define MAX_SIZE 6
void main(){
const int max_size = 10;
int a[MAX_SIZE];
int b[max_size];
}

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
20


Truy c p đ n thành ph n c a m ng


Truy c p ph n t c a m ng thông qua tên m ng
và ch s c a ph n t trong m ng
<tên m ng> [<ch s >]





Chú ý: ch s m ng luôn b t đ u t 0
Ví d





Tr n Quang
© 2016

int a[10]; //m ng nguyên có 10 ph n t
a[0] : ph n t đ u tiên (th nh t) c a m ng
a[9]: ph n t cu i cùng (th 10) c a m ng:
a[i-1]: là ph n t th i c a m ng a

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 21
p trình
21



Nh p d li u cho m ng



Dùng hàm scanf()
Ví d ta khai báo m ng:
int a[10];



Nh p d li u cho ph n t a[1]:
scanf(“%d”, &a[1]);



Nh p d li u cho toàn b các ph n t c a m ng
s d ng vòng l p for
for (int i=0; i < 10; i++) {
printf ("Nhap a[%d]: ", i);
scanf("%d", &a[i]);
}

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch


ng 06: Array - struct

/>
22
K thu t l p trình
22


L uý


Tr ng h p s ph n t c a m ng ch a bi t tr
(ch xác đ nh khi ch ng trình đang th c hi n)





c

Khai báo m ng v i kích th c t i đa
S d ng bi n l u s ph n t th c s c a m ng.

Ví d :
int a[100];
int n, i;
printf ("Cho biet so phan tu cua mang: ");
scanf (“%d”,&n);
for(i = 0; i < n; i++){
printf (“a[%d] = ", i);

scanf ("%d",&a[i]);
}

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
23
K thu t l p trình
23


Duy t m ng 1 chi u



Dùng 1 bi n ch s (ki u s nguyên)
u tiên gán ch s này b ng 0




Ch đ n ph n t đ u tiên c a m ng


Dùng vòng l p đ duy t qua m i ph n t c a m ng
int arr[MAX_SIZE];
int n = 5;
Nh p m ng
In ra các ph n t trong m ng
for(int i=0; iprintf("%-3d", arr[i]);

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l p trình
24


M ng nhi u chi u


M i ph n t c a m ng c ng có th là m t m ng
=> m ng nhi u chi u




Ví d
int a[6][5] ;
 m ng a g m 6 ph n t
m i ph n t l i là m t m ng
g m 5 s nguyên int
 T
ng đ ng ma tr n 6 dòng x 5 c t
 a[0]: ph n t
đ u tiên c a m ng a, là m ng 1 chi u
 a[i][j]: ph n t
th j+1 c a m ng a[i]

Tr n Quang
© 2016

CuuDuongThanCong.com

Ch

ng 06: Array - struct

/>
K thu t l 25
p trình
25


×