intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Chương 5 - Nguyễn Văn Huy

Chia sẻ: Minh Vũ | Ngày: | Loại File: PDF | Số trang:20

25
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Kỹ thuât lập trình - Chương 5: Kiểu dữ liệu cấu trúc" cung cấp cho người học các kiến thức: Khai báo, khởi tạo; truy nhập các thành phần, hàm với cấu trúc, câu lệnh typedef, hàm sizeof. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 5 - Nguyễn Văn Huy

  1. LOGO Chương V Kiểu dữ liệu cấu trúc
  2. www.themegallery.com Nội dung chính 5.1 Khai báo, khởi tạo 5.2 Truy nhập các thành phần 5.3 Hàm với cấu trúc 5.4 Câu lệnh typedef 5.5 Hàm sizeof() Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 2
  3. www.themegallery.com 5.1 Khai báo, khởi tạo Khai báo cấu trúc: struct { các thành phần ; } ;  Mỗi thành phần giống như một biến riêng của kiểu, nó gồm kiểu và tên thành phần.  Phần tên của kiểu cấu trúc và phần danh sách biến có thể có hoặc không.  Các kiểu cấu trúc được phép khai báo lồng nhau.  Một biến có kiểu cấu trúc sẽ được phân bố bộ nhớ sao cho các thực hiện của nó được sắp liên tục theo thứ tự xuất hiện trong khai báo. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 3
  4. www.themegallery.com 5.1 Khai báo, khởi tạo - Khai báo biến kiểu cấu trúc cũng giống như khai báo các biến kiểu cơ sở dưới dạng: struct ; Hoặc: ; - Các biến được khai báo cũng có thể đi kèm khởi tạo: biến = { giá trị khởi tạo } ; Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 4
  5. www.themegallery.com Ví dụ 1: Khai báo kiểu cấu trúc chứa phân số gồm 2 thành phần nguyên chứa tử số và mẫu số. struct Phanso { int tu ; int mau ; }; hoặc: struct Phanso { int tu, mau ; }; Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 5
  6. www.themegallery.com Ví dụ 2: Kiểu ngày tháng gồm 3 thành phần nguyên chứa ngày, tháng, năm. struct Ngaythang { int ng ; int th ; int nam ; } holiday = { 1,5,2000 } ; Một biến holiday cũng được khai báo kèm cùng kiểu này và được khởi tạo bởi bộ số 1. 5. 2000. Các giá trị khởi tạo này lần lượt gán cho các thành phần theo đúng thứ tự trong khai báo, tức ng = 1, th = 5 và nam = 2000. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 6
  7. www.themegallery.com Ví dụ 3: Kiểu Lop dùng chứa thông tin về một lớp học gồm tên lớp và sĩ số sinh viên. Các biến kiểu Lop được khai báo là daihoc và caodang, trong đó daihoc được khởi tạo bởi bộ giá trị {“CN14A", 60} với ý nghĩa tên lớp đại học là CN14A và sĩ số là 60 sinh viên. struct Lop { char tenlop[10], int soluong; }; struct Lop daihoc = {" CN14A ", 60}, caodang ; hoặc: Lop daihoc = {" CN14A ", 60}, caodang ; Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 7
  8. www.themegallery.com 5.2 Truy nhập các thành phần  Đối với biến thường: Tên biến.Tên thành phần  Đối với biến con trỏ : Tên biến -> Tên thành phần  Đối với biến mảng: Truy nhập thành phần mảng rồi đến thành phần cấu trúc.  Đối với cấu trúc lồng nhau. Truy nhập thành phần ngoài rồi đến thành phần của cấu trúc bên trong, sử dụng các phép toán . hoặc -> (các phép toán lấy thành phần) một cách thích hợp. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 8
  9. www.themegallery.com Ví dụ #include #include using namespace std; int main() { struct sinhvien //Khai báo cấu trúc sinhvien { char ten[33]; int tuoi; char que_quan[33]; }*p; sinhvien a={"Ly Minh Tai", 22, "Hai Duong"}; cout
  10. www.themegallery.com 5.3 Hàm với cấu trúc A. Con trỏ và địa chỉ cấu trúc Một con trỏ cấu trúc cũng giống như con trỏ trỏ đến các kiểu dữ liệu khác, có nghĩa nó chứa địa chỉ của một biến cấu trúc hoặc một vùng nhớ có kiểu cấu trúc nào đó B. Địa chỉ của các thành phần của cấu trúc Các thành phần của một cấu trúc cũng giống như các biến, do vậy cách lấy địa chỉ của các thành phần này cũng tương tự như đối với biến bình thường. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 10
  11. www.themegallery.com Ví dụ: Con trỏ và địa chỉ cấu trúc #include using namespace std; int main() { struct sinhvien { char ten[33]; int tuoi; char que_quan[33]; }*p,*q, a[20], b={"Ly Minh Tai", 22, "Nam Dinh"}; p=&b; a[4]=b; //Cho p trỏ vào b, a[4] gán bằng b cout
  12. www.themegallery.com Ví dụ: Địa chỉ của các thành phần của cấu trúc #include using namespace std; int main() { struct sinhvien { char ten[33]; int tuoi; char que_quan[33]; }b={"Tran Viet Hoang",19,"Ca Mau"}; int *t; char *ht; t=&(b.tuoi); // t trỏ vào thành phần tuoi của b ht=b.ten; // ht trỏ vào thành phần ten của b (không cần dấu &) cout
  13. www.themegallery.com 5.3 Hàm với cấu trúc C. Đối của hàm là cấu trúc Một cấu trúc có thể được sử dụng để làm đối của hàm dưới các dạng sau đây:  Là một biến cấu trúc, khi đó tham đối thực sự là một cấu trúc.  Là một con trỏ cấu trúc, tham đối thực sự là địa chỉ của một cấu trúc.  Là một tham chiếu cấu trúc, tham đối thực sự là một cấu trúc.  Là một mảng cấu trúc hình thức hoặc con trỏ mảng, tham đối thực sự là tên mảng cấu trúc. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 13
  14. www.themegallery.com Ví dụ: Sử dụng cấu trúc làm đối số của hàm #include using namespace std; struct so_thuc{ //Khai báo cấu trúc so_thuc int phan_nguyen; unsigned thap_phan;}; void hien(so_thuc a); int main() { so_thuc x={-222,178}; // x là cấu trúc so_thuc hien(x); // Đối số x là một cấu trúc } void hien(so_thuc a) // Hàm hiện số thực { cout
  15. www.themegallery.com 5.3 Hàm với cấu trúc D. Giá trị hàm là cấu trúc Cũng tương tự như các kiểu dữ liệu cơ bản, giá trị trả lại của một hàm cũng có thể là các cấu trúc dưới các dạng sau:  Là một biến cấu trúc.  Là một con trỏ cấu trúc.  Là một tham chiếu cấu trúc. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 15
  16. www.themegallery.com Ví dụ #include using namespace std; struct so_phuc{ float thuc; float ao;}; so_phuc tong(so_phuc a, so_phuc b) { so_phuc kq; kq.thuc=a.thuc+b.thuc; kq.ao=a.ao+b.ao; return kq; } int main() { so_phuc x={1,23}, y={2,22}, z; z = tong(x, y); cout
  17. www.themegallery.com 5.4 Câu lệnh typedef Để thuận tiện trong sử dụng, thông thường các kiểu được người sử dụng tạo mới sẽ được gán cho một tên kiểu bằng câu lệnh typedef như sau: typedef ; Ví dụ: Có thể đặt tên cho kiểu ngày tháng là Date với khai báo sau: typedef struct Date { int ng; int th; int nam; }; Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 17
  18. www.themegallery.com 5.5 Hàm sizeof() Hàm sizeof() trả lại kích thước của một biến hoặc kiểu. Ví dụ: #include using namespace std; int main() { double x; struct date{ int ngay; int thang; int nam; }y; cout
  19. www.themegallery.com Bài tập chương 5 Bài 1. Cho phân số dưới dạng cấu trúc gồm 2 thành phần là tử và mẫu. Viết chương trình nhập 2 phân số, in ra tổng, tích, hiệu, thương của chúng dưới dạng tối giản. Bài 2. Nhập một ngày tháng năm dưới dạng cấu trúc. Tính chính xác (kể cả năm nhuận) số ngày đã qua kể từ ngày 1/1/1 cho đến ngày đó. Bài 3. Hiện thứ của một ngày bất kỳ nào đó, lấy ngày thứ hiện tại để làm chuẩn. Bài 4. Viết chương trình nhập một mảng sinh viên, thông tin về mỗi sinh viên gồm họ tên và ngày sinh (kiểu cấu trúc). Sắp xếp mảng theo tuổi và in ra màn hình. Bài 5. Tính số ngày đã qua kể từ đầu năm cho đến ngày hiện tại. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 19
  20. LOGO www.themegallery.com
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2