Bài giảng Ngôn ngữ lập trình - Chương 4: Kiểu dữ liệu có cấu trúc - Nguyễn Văn Linh

Đặ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

pptx45 trang | Chia sẻ: dntpro1256 | Lượt xem: 714 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ lập trình - Chương 4: Kiểu dữ liệu có cấu trúc - Nguyễn Văn Linh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nguyễn Văn Linh - Programing Language - Chapter 11NGÔN NGỮ LẬP TRÌNH 45 tiết = 3 đơn vị học trình Giảng viên: Nguyễn Văn Linh E-mail: nvlinh@ctu.edu.vn Tel: (84) (71) 831301Nguyễn Văn Linh - Programming Languages - Chapter 42CHƯƠ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.Vectơ (mảng một chiều).Mảng nhiều chiều.Mẩu tin và mẩu tin có cấu trúc thay đổi.Chuỗi ký tự.Cấu trúc dữ liệu có kích thước thay đổi (Danh sách, Con trỏ, Tập hợp, Tập tin).Nguyễn Văn Linh - Programming Languages - Chapter 43ĐỊNH NGHĨAKiể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...Nguyễn Văn Linh - Programming Languages - Chapter 44SỰ ĐẶC TẢThuộc tính: Số lượng phần tử.Kiểu của các phần tử.Tên của phần tử.Kích thước tối đa.Tổ chức phần tử.Phép toán:Lựa chọn phần tử.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.Nguyễn Văn Linh - Programming Languages - Chapter 45ĐẶC TẢ THUỘC TÍNHSố 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ử.Nguyễn Văn Linh - Programming Languages - Chapter 46ĐẶC TẢ PHÉP TOÁNPhé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.Nguyễn Văn Linh - Programming Languages - Chapter 47SỰ CÀI ĐẶTBiể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.Nguyễn Văn Linh - Programming Languages - Chapter 48BIỂU DIỄN BỘ NHỚBiểu diễn tuần tựBiểu diễn liên kếtBộ mô tảPhần tửPhần tửBộ mô tảPhần tửNguyễn Văn Linh - Programming Languages - Chapter 49CÀI ĐẶT PHÉP TOÁNChọn trực tiếp trong biểu diễn tuần tự: Vị trí phần tử = địa chỉ cơ sở + độ dời.Chọn tuần tự trong biểu diễn tuần tự: Xác định vị trí phần tử đầu tiên. Vị trí phần tử tiếp theo = Vị trí phần tử hiện hành + Kích thước phần tử hiện hành.Lựa chọn trong biểu diễn liên kết: Duyệt từ đầu danh sách.Nguyễn Văn Linh - Programming Languages - Chapter 410VÉCTƠ (MẢNG MỘT CHIỀU)Định nghĩa: Là CTDL có kích thước cố định và đồng nhất.Đặc tả:Số lượng phần tử: Tập chỉ số.Kiểu của tất cả các phần tử.Tên phần tử: Chỉ số của phần tử.Phép tóan lựa chọn một phần tử: Chọn trực tiếp bằng cách chỉ ra chỉ số của phần tử. Chỉ số là giá trị của biểu thức.Phép toán gán.Ví dụ: V : ARRAY[1..10] OF REAL11CÀI ĐẶT VÉCTƠ (1)Tổ chức lưu trữ: Biểu diễn tuần tự.Véc tơ ALBUBKiểu phần tửEA[ LB]A[UB]Địa chỉ cơ sởBộ mô tảCác phần tửKiểu dữ liệuCận dưới tập chỉ sốCận trên tập chỉ sốKích thước mỗi PTNguyễn Văn Linh - Programming Languages - Chapter 412CÀI ĐẶT VÉCTƠ (2)Phép toán lựa chọn 1 phần tử:Vị trí phần tử thứ i =  + D + (i – LB)* E là địa chỉ cơ sở.D là kích thước bộ mô tả.Phép toán gán: Copy khối ô nhớ.Nguyễn Văn Linh - Programming Languages - Chapter 413MẢ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 cách lưu:Các phần tử được lưu theo trật tự dòng: Hết dòng này đến dòng khác.Các phần tử được lưu theo trật tự cột: Hết cột này đến cột khác.14BIỂU DIỄN MA TRẬN M[1..3,-1..2] OF INTEGERCận trên tập chỉ số 1Cận dưới tập chỉ số 2Cận trên tập chỉ số 2Ma trận MLB1 (=1)UB1 (=3)LB2 (=-1)UB2 (=2)M[1,-1]M[1,0]M[1,1]M[1,2]M[3,2]Địa chỉ cơ sởBộ mô tảCác phần tửKiểu dữ liệuCận dưới tập chỉ số 1Nguyễn Văn Linh - Programming Languages - Chapter 415CHỌN MỘT PHẦN TỬ CỦA MA TRẬNVị trí của phần tử M[i,j] được tính theo công thức:Vị trí M[i,j] =  + D + (i-LB1)*S + (j-LB2)*E là địa chỉ cơ sở.D là kích thước bộ mô tả.S là kích thước 1 dòng = (UB2-LB2+1)*E.E là kích thước một phần tử.Nguyễn Văn Linh - Programming Languages - Chapter 416MẨU TINĐịnh nghĩa: Là CTDL có kích thước cố định và không đồng nhất.Đặc tả: Số lượng phần tử (trường).Tên của mỗi phần tử.Kiểu của mỗi phần tử.Phép toán chọn phần tử: Sử dụng tên PT.Phép gán.Ví dụ:Nhan_vien: Record Ma: Integer; Ho_ten: string[25]; Tuoi: Integer; Luong: Real;End. 17CÀI ĐẶT MẨU TINBộ nhớ tuần tự: Một khối ô nhớ liên tục để lưu trữ cả mẩu tin. 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_vien22901Nguyễn Văn A202.18Vị 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 MaHo_tenTuoiLuongNguyễn Văn Linh - Programming Languages - Chapter 418MẨU TIN CÓ CẤU TRÚC THAY ĐỔIBài toán. Định nghĩa.Cài đặt. Nguyễn Văn Linh - Programming Languages - Chapter 419MẨ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. Nguyễn Văn Linh - Programming Languages - Chapter 420ĐỊNH NGHĨA MẨU TIN CÓ CẤU TRÚC THAY ĐỔIMỗ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 từng thể hiện.Trong phần tĩnh phải có một trường dùng để phân biệt các thể hiện.Phép toán lựa chọn một phần tử tương tự như mẩu tin bình thường.21VÍ DỤTYPE Loai_Cong_Nhan = (bien_che,hop_dong);VAR Cong_Nhan : RECORD Ho_Ten: String[20]; Ngay_Cong: Real; Luong: Real; CASE loai: Loai_Cong_Nhan OF bien_che: (He_So: Real; Nghi_bhxh:Real); hop_dong: (Gia_Cong_Nhat: Real); END;Nguyễn Văn Linh - Programming Languages - Chapter 422CÀI ĐẶT MẨU TIN CÓ CẤU TRÚC THAY ĐỔIHo_TenNgay_CongLuongLoaiGia_Cong_nhatKhông sử dụngHo_TenNgay_CongLuongLoaiHe_SoNghi_BHXHNguyễn Văn Linh - Programming Languages - Chapter 423CHUỖI KÝ TỰ Đặc tả thuộc tính.Đặc tả phép tóan.Cài đặt chuỗi ký tự.Nguyễn Văn Linh - Programming Languages - Chapter 424ĐẶC TẢ THUỘC TÍNH CHUỖI KÝ TỰ Đặc tả thuộc tính: Có ba phương pháp:Độ 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.Nguyễn Văn Linh - Programming Languages - Chapter 425ĐẶC TẢ PHÉP TOÁN CHUỖI KÝ TỰĐặc tả phép toán:Phép ghép chuỗi.Các phép toán quan hệ.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.Nguyễn Văn Linh - Programming Languages - Chapter 426CÀI ĐẶT CHUỖI KÝ TỰ (1)Độ dài khai báo cố định: Sử dụng một véctơ của các ký tự để lưu trữ một chuỗiVí 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 NNguyễn Văn Linh - Programming Languages - Chapter 427CÀ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 NNguyễn Văn Linh - Programming Languages - Chapter 428CÀI ĐẶT CHUỖI KÝ TỰ (3)Độ dài không cố định: Sử dụng biểu diễn liên kết có bộ mô tả lưu trữ độ dài thực của chuỗi.Ví dụ chuỗi cần lưu trữ là “EINSTEIN”. 8 E I N S E I N T Nguyễn Văn Linh - Programming Languages - Chapter 429CẤU TRÚC DỮ LIỆU CÓ KÍCH THƯỚC THAY ĐỔIĐịnh nghĩa: Là CTDL có số phần tử thay đổi một cách động trong quá trình thực hiện chương trình.Một số cấu trúc điển hình:Danh sách.Ngăn xếp.Hàng đợi.Nguyễn Văn Linh - Programming Languages - Chapter 430CON TRỎCấp phát tĩnh, cấp phát động và con trỏ.Đặc tả.Ví dụ.Cài đặt.Nguyễn Văn Linh - Programming Languages - Chapter 431CON TRỎ (Cấp phát ...)Cấp phát tĩnh:Trong khi dịch.Nhờ khai báo biến, bộ dịch sẽ dành sẵn ô nhớ đủ để lưu trữ.Tự động giải phóng.Sử dụng nhờ tên biếnKhông tối ưu.Cấp phát động:Trong khi thực hiện.Người lập trình chủ động cấp phát và giải phóng.Sử dụng thông qua địa chỉ.Cần có biến con trỏ để lưu trữ địa chỉ.Nguyễn Văn Linh - Programming Languages - Chapter 432ĐẶ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ớ.Nguyễn Văn Linh - Programming Languages - Chapter 433VÍ DỤ VỀ CON TRỎ (1)Con trỏ tham chiếu đến các ĐTDL có kiểu cụ thể Type Sinh_vien = Record Ho_ten : String[25]; Tuoi : Byte; End;Var p : ^Sinh_vien; q : ^Integer;Nguyễn Văn Linh - Programming Languages - Chapter 434VÍ DỤ VỀ CON TRỎ (2)Begin New(p); p^.Ho_ten:= ‘Nguyen Van A’; p^.tuoi := 20; Writeln(p^.Ho_ten, ‘ ‘, p^.tuoi); Dispose(p); New(q); q^ := 3547;End.Nguyễn Văn Linh - Programming Languages - Chapter 435VÍ DỤ VỀ CON TRỎ (3)Con trỏ tham chiếu đến các ĐTDL có kiểu bất kỳType Sinh_vien = Record Ho_ten : String[25]; Tuoi : Byte; End;Var p : pointer ;Nguyễn Văn Linh - Programming Languages - Chapter 436VÍ DỤ VỀ CON TRỎ (4)Begin GetMem(p, SizeOf(Sinh_vien)); {................ } FreeMem(p, SizeOf(Sinh_Vien)); GetMem(p, SizeOf(Integer)); {................. } FreeMem(p, SizeOf(Integer));End.Nguyễn Văn Linh - Programming Languages - Chapter 437CÀI ĐẶT CON TRỎĐịa chỉ tuyệt đối: Giá trị con trỏ là địa chỉ thực của khối ô nhớ cấp phát động. Phương pháp này thường dùng cho con trỏ tham 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). Nguyễn Văn Linh - Programming Languages - Chapter 438TẬP HỢPĐặc tả.Cài đặt tập hợp bằng véctơ bit.Cài đặt tập hợp bằng bảng băm.Nguyễn Văn Linh - Programming Languages - Chapter 439ĐẶC TẢ TẬP HỢPCTDL đồng nhất và có kích thước thay đổi; Không quan tâm đến thứ tự các phần tử; Giá trị các phần tử khác nhau.Phép toán kiểm tra một giá trị có thuộc một tập hợp?Thêm, Bớt phần tử.Hợp, giao và hiệu của hai tập hợp.Nguyễn Văn Linh - Programming Languages - Chapter 440CÀI ĐẶT TẬP HỢP BẰNG VECTO BITMột tập hợp được biểu diễn bởi một véctơ các bit 0 hoặc 1.Phép kiểm tra.Phép Thêm và Bớt.Phép Hợp, Giao và HiệuƯu điểm: dễ dàng cài đặt.Nhược điểm: Không gian nhỏ.Nguyễn Văn Linh - Programming Languages - Chapter 441CÀI ĐẶT TẬP HỢP BẰNG BẢNG BĂMTập hợp là một bảng băm mở.Phép kiểm tra.Phép Thêm và Bớt.Phép Hợp, Giao và HiệuƯu điểm: cài đặt cho tập hợp bất kỳ, các phép kiểm tra, thêm, bớt dễ thực hiện.Nhược điểm: khó thực hiện các phép hợp, giao, hiệu.Nguyễn Văn Linh - Programming Languages - Chapter 442TẬP TINTập tin tuần tựTập tin văn bản.Tập tin truy xuất trực tiếpNguyễn Văn Linh - Programming Languages - Chapter 443TẬ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, closeNguyễn Văn Linh - Programming Languages - Chapter 444CÀ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.Nguyễn Văn Linh - Programming Languages - Chapter 445CÁC LOẠI TẬP TIN KHÁCTập tin văn bản: Tập tin tuần tự đặc biệt, các phần tử là kí tự.Tập tin truy xuất trực tiếp: Có thể nhẩy đến truy xuất phần tử bất kỳ.

Các file đính kèm theo tài liệu này:

  • pptxbai_giang_ngon_ngu_lap_trinh_c4_2797_2051266.pptx
Tài liệu liên quan