Bài giảng Ngôn ngữ lập trình - Chương 4 - Kiểu dữ liệu có câu trúc
Trang 1Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
1
CHƯƠNG 4:
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Định nghĩa kiểu dữ liệu có cấu trúc.
Sự đặc tả kiểu dữ liệu có cấu trúc.
Sự cài đặt các cấu trúc dữ liệu.
Trang 2Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
2
ĐỊNH NGHĨA
Kiểu dữ liệu có cấu trúc hay còn gọi là
CTDL là kiểu dữ liệu mà các ÐTDL có cấu trúc Như vậy CTDL là một tập các ÐTDL
có cấu trúc và tập các phép toán trên các
ÐTDL đó
Các CTDL thông dụng: Mảng, chuỗi ký tự, mẩu tin, ngăn xếp, con trỏ, tập tin
Trang 3Nguyễn Văn Linh - Programmi
• Phép toán trên toàn cấu trúc.
• Thêm/bớt phần tử, tạo/hủy cấu trúc.
Trang 4Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
4
ĐẶC TẢ THUỘC TÍNH
Số lượng phần tử: Kích thước cố định, kích thước thay đổi
Kiểu phần tử: Đồng nhất và không đồng
nhất
Tên của phần tử: Chỉ số, tên trường
Kích thước tối đa: Số lượng lớn nhất các
phần tử
Tổ chức phần tử: Một dãy các phần tử
Trang 5Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
5
ĐẶC TẢ PHÉP TOÁN
Phép toán lựa chọn một phần tử: Chọn trực tiếp và chọn tuần tự
Phép toán trên toàn cấu trúc: Gán
Thêm / Bớt phần tử: Làm thay đổi kích
thước
Tạo / Hủy cấu trúc
Trang 6Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
6
SỰ CÀI ĐẶT
Biểu diễn bộ nhớ:
• Biểu diễn tuần tự.
• Biểu diễn liên kết.
Cài đặp phép toán chọn một phần tử:
• Chọn trực tiếp trong biểu diễn tuần tự.
• Chọn tuần tự trong biểu diễn tuần tự
• Chọn trực tiếp trong biểu diễn liên kết.
• Chọn tuần tự trong biểu diễn liên kết.
Trang 7Nguyễn Văn Linh - Programmi
Trang 8Nguyễn Văn Linh - Programmi
Trang 9Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
9
VÉCTƠ (MẢNG MỘT CHIỀU)
Định nghĩa: Là CTDL có kích thước cố định và đồng nhất.
Phép toán gán.
Ví dụ: V : ARRAY[1 10] OF REAL
Trang 10CÀI ĐẶT VÉCTƠ (1)
Tổ chức lưu trữ: Biểu diễn tuần tự
Véc t A ơ LB UB
Ki u ph n t ể ầ ử
E A[ LB]
Trang 11Nguyễn Văn Linh - Programmi
Trang 12Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
12
MẢNG NHIỀU CHIỀU
Đặc tả: Mỗi chiều có một tập chỉ số
Cài đặt: Biểu diễn bộ nhớ tuần tự, các phần
tử được lưu trũ kế tiếp nhau, nhưng có 2
Trang 14Nguyễn Văn Linh - Programmi
Trang 15Nguyễn Văn Linh - Programmi
Tên của mỗi phần tử.
Kiểu của mỗi phần tử.
Ho_ten: string[25]; Tuoi: Integer;
Luong: Real;
End
Trang 16tin Mỗi trường được
lưu trong một khối
Mỗi khối có thể có bộ
mô tả riêng.
Ví dụ: Nhan_vien
22901 Nguy n Văn A ễ
20 2.18
Vị trí phần tử = α + Tổng kích thước các phần
tử trước đó
Ví dụ: Vị trí Tuoi = α + Kích thước Ma + Kích thước Ho_ten
Ma Ho_ten Tuoi Luong
Trang 17Nguyễn Văn Linh - Programmi
Trang 18Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
18
MẨU TIN CÓ CẤU TRÚC
THAY ĐỔI (BÀI TOÁN)
Ví dụ: Một xí nghiệp có hai loại công nhân: Biên chế và hợp đồng
Lương công nhân biên chế = Số ngày công
* múc lương tối thiểu * Hệ số /20
Những ngày nghỉ bảo hiểm xã hội, họ được trả lương bảo hiểm
Lương công nhân hợp đồng = Số ngày công
* đơn giá công nhật
Trang 19Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
19
ĐỊNH NGHĨA MẨU TIN CÓ
CẤU TRÚC THAY ĐỔI
Mỗi mẩu tin bao gồm hai phần: Phần tĩnh và phần động.
Phần tĩnh gồm các trường mà tất cả các thể hiện đều có.
Phần động sẽ có các trường khác nhau tùy theo
Trang 20VÍ DỤ
TYPE
Loai_Cong_Nhan = (bien_che,hop_dong); VAR
Trang 21Nguyễn Văn Linh - Programmi
Loai Gia_Cong_nhat Không s d ng ử ụ
Ho_Ten Ngay_Cong
Luong Loai He_So Nghi_BHXH
Trang 22Nguyễn Văn Linh - Programmi
Trang 23Nguyễn Văn Linh - Programmi
Độ dài khai báo cố định.
Độ dài thay đổi trong một giới hạn đã được khai báo.
Độ dài không giới hạn.
Trang 24Nguyễn Văn Linh - Programmi
Lấy chuỗi con của một chuỗi bằng cách chỉ ra
ký tự đầu tiên và ký tự cuối cùng.
Định dạng nhập - xuất.
Chọn chuỗi con bằng cách so mẫu.
Trang 25Nguyễn Văn Linh - Programmi
Ví dụ chuỗi được khai báo có độ dài 12
nhưng chuỗi thực là “EINSTEIN” Thì phải thêm vào 4 ký tự trắng để có độ dài 12
E I N S T E I N
Trang 26Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
26
CÀI ĐẶT CHUỖI KÝ TỰ (2)
Độ dài thay đổi trong giới hạn đã khai báo:
Sử dụng một véctơ để lưu trữ một chuỗi và
có bộ mô tả lưu cả độ dài được khai báo và
độ dài thực
Ví dụ chuỗi được khai báo có độ dài 12
nhưng chuỗi thực là “EINSTEIN” Sẽ có 4
ô không sử dụng
12 8 E I N S T E I N
Trang 27Nguyễn Văn Linh - Programmi
Ví dụ chuỗi cần lưu trữ là “EINSTEIN”
T
Trang 28Nguyễn Văn Linh - Programmi
Trang 29Nguyễn Văn Linh - Programmi
Trang 30Nguyễn Văn Linh - Programmi
Sử dụng thông qua địa chỉ.
Cần có biến con trỏ để lưu trữ địa chỉ.
Trang 31Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
31
ĐẶC TẢ CON TRỎ
Con trỏ tham chiếu đến các ĐTDL có kiểu cụ thể.
Con trỏ tham chiếu đến các ĐTDL có kiểu bất kỳ.
Phép toán cấp phát ô nhớ động và trả địa chỉ về cho con trỏ.
Phép toán truy xuất tới ĐTDL được cấp phát động.
Phép toán giải phóng ô nhớ.
Trang 32Nguyễn Văn Linh - Programmi
Trang 33Nguyễn Văn Linh - Programmi
Trang 34Nguyễn Văn Linh - Programmi
Trang 35Nguyễn Văn Linh - Programmi
Trang 36Nguyễn Văn Linh - Programmi
chiếu đến một ĐTDL có kiểu cụ thể
Địa chỉ tương đối: Giá trị con trỏ là độ dời của khối ô nhớ cấp phát động Địa chỉ của khối ô nhớ = địa chỉ cơ sở + giá trị con trỏ (độ dời)
Trang 37Nguyễn Văn Linh - Programmi
Trang 38Nguyễn Văn Linh - Programmi
Trang 39Nguyễn Văn Linh - Programmi
Ưu điểm: dễ dàng cài đặt
Nhược điểm: Không gian nhỏ
Trang 40Nguyễn Văn Linh - Programmi
Trang 41Nguyễn Văn Linh - Programmi
Trang 42Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
42
TẬP TIN TUẦN TỰ
Đặc tả: một dãy tuyến tính các phần tử có cùng kiểu Ðộ dài của tập tin là không giới hạn Kiểu phần tử có thể là kiểu sơ cấp hoặc kiểu cấu trúc có kích thước cố định như
mảng hoặc mẩu tin
Mode read, mode write, con trỏ tập tin
Phép toán: open, read, write, EOF, close
Trang 43Nguyễn Văn Linh - Programmi
ng Languages - Chapter 4
43
CÀI ĐẶT TẬP TIN TUẦN TỰ
Hệ điều hành
Giao tiếp giữa bộ nhớ trong và bộ nhớ
ngoài thông qua buffer
Trang 44Nguyễn Văn Linh - Programmi