Giáo trình Lập trình căn bản: Phần 2 - Trần Thị Hoa
Số trang: 68
Loại file: pdf
Dung lượng: 1.05 MB
Lượt xem: 14
Lượt tải: 0
Xem trước 7 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Nối tiếp nội dung phần 1, phần 2 giáo trình "Lập trình căn bản" sẽ cung cấp tới người học nội dung kiến thức về: Kiểu dữ liệu quan trọng; Các thao tác trên tệp như: tạo một tệp mới, ghi dữ liệu từ bộ nhớ lên tệp, đọc dữ liệu từ tệp vào bộ nhớ,… Mời các bạn cùng tham khảo giáo trình.
Nội dung trích xuất từ tài liệu:
Giáo trình Lập trình căn bản: Phần 2 - Trần Thị Hoa lOMoARcPSD|16991370 CHƢƠNG 6: KIỂU CẤU TRÚC, KIỂU HỢP Để lƣu trữ và xử lý thông tin trong máy tính ta có các biến và các mảng. Mỗi biến chỉ lƣu đƣợc một giá trị. Mảng là một tập hợp nhiều biến có cùng một kiểu giá trị và cùng tên mảng. Cấu trúc có thể xem nhƣ một sự mở rộng của các khái niệm biến và mảng, nó cho phép lƣu trữ và xử lý các dạng thông tin phức tạp hơn. Khái niệm cấu trúc trong C có nhiều nét tƣơng tự nhƣ khái niệm bản ghi trong pascal hay foxpro. Cấu trúc là một công cụ mạnh để mô tả và xử lý các cấu trúc dữ liệu phức tạp trong các bài toán quản lý, điển hình nhƣ bài toán quản lý sinh viên,khi đó mỗi sinh viên đƣợc xem nhƣ một cấu trúc gồm các thành phần nhƣ họ tên, quê quán, tuổi, địa chỉ,… 6.1. Kiểu cấu trúc 6.1.1. Định nghĩa kiểu cấu trúc Khi định nghĩa một kiểu cấu trúc ta cần chỉ ra: tên của kiểu cấu trúc và các thành phần của nó. Việc này đƣợc thực hiện theo mẫu sau: Mẫu 1: struct tên kiểu cấu trúc { Khai báo các thành phần }; trong đó thành phần của cấu trúc có thể là biến, mảng hoặc một cấu trúc khác mà kiểu của nó đã đƣợc định nghĩa từ trƣớc. Ví dụ 6.1: struct que_quan { char xa[20], huyen[20], tinh[20]; } ; Thiết kế một kiểu cấu trúc có tên là que_quan gồm ba thành phần: xa, huyen, tinh đều có cùng kiểu dữ liệu là kiểu mảng ký tự. struct sinh_vien { 101 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; }; Thiết kế một kiểu cấu trúc có tên là sinh_viên gồm bốn thành phần: thành phần thứ nhất có tên là ho_ten là một mảng char, thành phần thứ hai là tuoi có kiểu là int, thành phần thứ ba là diem có kiểu là float và thành phần cuối cùng là dia_chi, là một cấu trúc có kiểu là que_quan đƣợc định nghĩa ở trƣớc đó. Chú ý: Có thể dùng toán tử typedef để định nghĩa các kiểu cấu trúc nhƣ sau: Mẫu 2: typedef struct { Khai báo các thành phần } tên kiểu cấu trúc; Ví dụ 6.2. Các kiểu cấu trúc que_quan và sinh_vien ở trên có thể định nghĩa nhƣ sau: typedef struct { char xa[20], huyen[20], tinh[20]; } que_quan; typedef struct { char ho_ten[30]; int tuoi; float diem; que_quan dia_chi; } sinh_vien; 102 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 6.1.2. Khai báo biến cấu trúc Khai báo biến cấu trúc đƣợc thực hiện theo các mẫu sau: Mẫu 1: struct tên kiểu cấu trúc danh sách tên biến cấu trúc; Ví dụ 6.3: struct sinh_vien sv1, sv2; sẽ cho ta hai biến cấu trúc sv1 và sv2. Cả hai đều đƣợc xây dựng theo kiểu sinh_viên đã đƣợc định nghĩa ở ví dụ 6.1 trên. Mẫu 2: Cho phép vừa thiết kế kiểu cấu trúc vừa khai báo biến cấu trúc struct tên kiểu cấu trúc { Khai báo các thành phần } danh sách tên biến cấu trúc; Ví dụ 6.4: Các biến cấu trúc sv1 và sv2 có thể đƣợc xây dựng theo cách sau: struct sinh_vien { char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; } sv1, sv2; trong đó kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.1. Mẫu 3: Vừa định nghĩa kiểu cấu trúc vừa khai báo biến cấu trúc nhƣ trên, ta có thể không cần chỉ ra tên kiểu cấu trúc nhƣ sau struct { Khai báo các thành phần } danh sách tên biến cấu trúc; Ví dụ 6.5: Các cấu trúc sv1, sv2 có thể khai báo nhƣ sau: 103 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 struct { char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; } sv1, sv2; với kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.1. Sự khác nhau giữa mẫu 2 và mẫu 3: ở mẫu 2 ngoài việc xây dựng đƣợc các biến cấu trúc ta còn tạo ra đƣợc kiểu cấu trúc. Kiểu này có thể đƣợc sử dụng để khai báo các biến cấu trúc khác. Còn mẫu 3 thì chỉ khai báo các biến cấu trúc, tức là chỉ thực hiện đƣợc một phần công việc của mẫu 2. Chú ý: Nếu dùng typedef để định nghĩa kiểu cấu trúc, thì khi khai báo biến cấu trúc có kiểu đã định nghĩa đó thì ta chỉ cần dùng tên kiểu (bỏ từ khóa struct). Ví dụ nếu kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.2 thì biến cấu trúc dịa_chi có thể khai báo trong các ví dụ 6.4 và 6.5 nhƣ sau: struct sinh_vien { char ho_ten[30]; int tuoi; float diem; que_quan dia_chi; } sv1, sv2; 6.1.3. Truy nhập tới các thành phần của cấu trúc Từ các chƣơng đầu, ta đã khá quen với việc sử dụng các biến, các phần tử mảng trong các câu lệnh. Các thành phần của một cấu trúc đóng vai trò nhƣ là biến, phần tử mảng. Do đó phép toán nào thực hiện đƣợc trên các biến, phần tử mảng thì cũng thực hiện đƣợc trên các thành phần đó. Câu lệnh nào dùng cho biến, phần tử mảng thì cũng có thể dùng đƣợc cho các thành phần của cấu trúc. Để truy nhập đến các thành phần của cấu trúc ta sử dụng một trong các cách sau: 104 Downloaded by nguyenphuong Phuong ng ...
Nội dung trích xuất từ tài liệu:
Giáo trình Lập trình căn bản: Phần 2 - Trần Thị Hoa lOMoARcPSD|16991370 CHƢƠNG 6: KIỂU CẤU TRÚC, KIỂU HỢP Để lƣu trữ và xử lý thông tin trong máy tính ta có các biến và các mảng. Mỗi biến chỉ lƣu đƣợc một giá trị. Mảng là một tập hợp nhiều biến có cùng một kiểu giá trị và cùng tên mảng. Cấu trúc có thể xem nhƣ một sự mở rộng của các khái niệm biến và mảng, nó cho phép lƣu trữ và xử lý các dạng thông tin phức tạp hơn. Khái niệm cấu trúc trong C có nhiều nét tƣơng tự nhƣ khái niệm bản ghi trong pascal hay foxpro. Cấu trúc là một công cụ mạnh để mô tả và xử lý các cấu trúc dữ liệu phức tạp trong các bài toán quản lý, điển hình nhƣ bài toán quản lý sinh viên,khi đó mỗi sinh viên đƣợc xem nhƣ một cấu trúc gồm các thành phần nhƣ họ tên, quê quán, tuổi, địa chỉ,… 6.1. Kiểu cấu trúc 6.1.1. Định nghĩa kiểu cấu trúc Khi định nghĩa một kiểu cấu trúc ta cần chỉ ra: tên của kiểu cấu trúc và các thành phần của nó. Việc này đƣợc thực hiện theo mẫu sau: Mẫu 1: struct tên kiểu cấu trúc { Khai báo các thành phần }; trong đó thành phần của cấu trúc có thể là biến, mảng hoặc một cấu trúc khác mà kiểu của nó đã đƣợc định nghĩa từ trƣớc. Ví dụ 6.1: struct que_quan { char xa[20], huyen[20], tinh[20]; } ; Thiết kế một kiểu cấu trúc có tên là que_quan gồm ba thành phần: xa, huyen, tinh đều có cùng kiểu dữ liệu là kiểu mảng ký tự. struct sinh_vien { 101 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; }; Thiết kế một kiểu cấu trúc có tên là sinh_viên gồm bốn thành phần: thành phần thứ nhất có tên là ho_ten là một mảng char, thành phần thứ hai là tuoi có kiểu là int, thành phần thứ ba là diem có kiểu là float và thành phần cuối cùng là dia_chi, là một cấu trúc có kiểu là que_quan đƣợc định nghĩa ở trƣớc đó. Chú ý: Có thể dùng toán tử typedef để định nghĩa các kiểu cấu trúc nhƣ sau: Mẫu 2: typedef struct { Khai báo các thành phần } tên kiểu cấu trúc; Ví dụ 6.2. Các kiểu cấu trúc que_quan và sinh_vien ở trên có thể định nghĩa nhƣ sau: typedef struct { char xa[20], huyen[20], tinh[20]; } que_quan; typedef struct { char ho_ten[30]; int tuoi; float diem; que_quan dia_chi; } sinh_vien; 102 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 6.1.2. Khai báo biến cấu trúc Khai báo biến cấu trúc đƣợc thực hiện theo các mẫu sau: Mẫu 1: struct tên kiểu cấu trúc danh sách tên biến cấu trúc; Ví dụ 6.3: struct sinh_vien sv1, sv2; sẽ cho ta hai biến cấu trúc sv1 và sv2. Cả hai đều đƣợc xây dựng theo kiểu sinh_viên đã đƣợc định nghĩa ở ví dụ 6.1 trên. Mẫu 2: Cho phép vừa thiết kế kiểu cấu trúc vừa khai báo biến cấu trúc struct tên kiểu cấu trúc { Khai báo các thành phần } danh sách tên biến cấu trúc; Ví dụ 6.4: Các biến cấu trúc sv1 và sv2 có thể đƣợc xây dựng theo cách sau: struct sinh_vien { char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; } sv1, sv2; trong đó kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.1. Mẫu 3: Vừa định nghĩa kiểu cấu trúc vừa khai báo biến cấu trúc nhƣ trên, ta có thể không cần chỉ ra tên kiểu cấu trúc nhƣ sau struct { Khai báo các thành phần } danh sách tên biến cấu trúc; Ví dụ 6.5: Các cấu trúc sv1, sv2 có thể khai báo nhƣ sau: 103 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 struct { char ho_ten[30]; int tuoi; float diem; struct que_quan dia_chi; } sv1, sv2; với kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.1. Sự khác nhau giữa mẫu 2 và mẫu 3: ở mẫu 2 ngoài việc xây dựng đƣợc các biến cấu trúc ta còn tạo ra đƣợc kiểu cấu trúc. Kiểu này có thể đƣợc sử dụng để khai báo các biến cấu trúc khác. Còn mẫu 3 thì chỉ khai báo các biến cấu trúc, tức là chỉ thực hiện đƣợc một phần công việc của mẫu 2. Chú ý: Nếu dùng typedef để định nghĩa kiểu cấu trúc, thì khi khai báo biến cấu trúc có kiểu đã định nghĩa đó thì ta chỉ cần dùng tên kiểu (bỏ từ khóa struct). Ví dụ nếu kiểu cấu trúc que_quan đƣợc định nghĩa nhƣ trong ví dụ 6.2 thì biến cấu trúc dịa_chi có thể khai báo trong các ví dụ 6.4 và 6.5 nhƣ sau: struct sinh_vien { char ho_ten[30]; int tuoi; float diem; que_quan dia_chi; } sv1, sv2; 6.1.3. Truy nhập tới các thành phần của cấu trúc Từ các chƣơng đầu, ta đã khá quen với việc sử dụng các biến, các phần tử mảng trong các câu lệnh. Các thành phần của một cấu trúc đóng vai trò nhƣ là biến, phần tử mảng. Do đó phép toán nào thực hiện đƣợc trên các biến, phần tử mảng thì cũng thực hiện đƣợc trên các thành phần đó. Câu lệnh nào dùng cho biến, phần tử mảng thì cũng có thể dùng đƣợc cho các thành phần của cấu trúc. Để truy nhập đến các thành phần của cấu trúc ta sử dụng một trong các cách sau: 104 Downloaded by nguyenphuong Phuong ng ...
Tìm kiếm theo từ khóa liên quan:
Giáo trình Lập trình căn bản Lập trình căn bản Các kiểu cấu trúc dữ liệu Các thao tác trên tệp Ứng dụng lập trình căn bảnGợi ý tài liệu liên quan:
-
114 trang 239 2 0
-
80 trang 218 0 0
-
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 131 0 0 -
124 trang 112 3 0
-
7 trang 82 0 0
-
87 trang 79 0 0
-
8 trang 74 0 0
-
81 trang 67 0 0
-
72 trang 50 1 0
-
109 trang 37 0 0