Bài giảng Kỹ thuật lập trình - Chương 6: Kiểu cấu trúc. Kiểu mảng, chuỗi - Trần Quang

Chương 06  
Kiểu cấu trúc  
Kiểu mảng – chuỗi  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 06:Array - struct  
1
Nội dung  
Từ khoá typedef  
Cấu trúc  
Mảng  
Chuỗi ký tự  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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:  
Mã số sinh viên  
Họ tên  
Ngày sinh  
Email, …  
Kỹ thuật lậ4p trình  
Trần Quang  
© 2016  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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;  
}
6
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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;  
Kỹ thuật lậ7p trình  
Trần Quang  
© 2016  
Chương 06:Array - struct  
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>;  
Kỹ thuật lậ8p trình  
Trần Quang  
© 2016  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
10  
Mảng  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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  
Kỹ thuật lậ1p2trình  
Trần Quang  
© 2016  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
13  
Chương 06:Array - struct  
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ì  
Địa chỉ của ô nhớ chứa 20: 104  
Địa chỉ của ô nhớ chứa 30: 108  
Địa chỉ của ô nhớ chứa 40: 112  
Địa chỉ của ô nhớ chứa 50: 116  
Địa chỉ của ô nhớ chứa 60: 120  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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 LUÔN LUÔN 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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
15  
Khái niệm mảng  
Để tính địa chỉ của ô nhớ có chỉ số k, chương trình  
dùng công thức sau:  
Đị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  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
16  
Chương 06:Array - struct  
Mảng 1 chiều  
Cú pháp khai báo  
<kiểu dữ liệu> <tên mảng> [<kích thước>];  
Ví dụ  
// khai báo mảng A gồm 10 phần tử thuộc kiểu int  
int A[10];  
Kỹ thuật lậ1p7trình  
Trần Quang  
© 2016  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
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  
Kỹ thuật lập trình  
Chương 06:Array - struct  
20  
Tải về để xem bản đầy đủ
pdf 37 trang Thùy Anh 14280 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 6: Kiểu cấu trúc. Kiểu mảng, chuỗi - Trần Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_6_kieu_cau_truc_kieu_man.pdf