1 / 24

C10: Kiểu Cấu trúc

C10: Kiểu Cấu trúc. 1. Khái niệm 2. Khai báo 3. Khởi tạo và gán giá trị 4. Truy xuất 5. Cấu trúc của cấu trúc 6. Cấu trúc – mảng 7. Tham số kiểu cấu trúc 8. union. 1. Khái niệm.

curry
Download Presentation

C10: Kiểu Cấu trúc

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C10: Kiểu Cấu trúc 1. Khái niệm 2. Khai báo 3. Khởi tạo và gán giá trị 4. Truy xuất 5. Cấu trúc của cấu trúc 6. Cấu trúc – mảng 7. Tham số kiểu cấu trúc 8. union

  2. 1. Khái niệm • Trong việc xây dựng chương trình, nhiều khi chỉ với các kiểu dữ liệu đơn giản ta chưa thể quản lý hết các dữ liệu • Vậy cần có kiểu dữ liệu phức tạp hơn để quản lý dữ liệu; một trong các kiểu dữ liệu này gọi là dữ liệu kiểu cấu trúc

  3. 1. Khái niệm • Cấu trúc là tập hợp của nhiều kiểu dữ liệu khác nhau • Mỗi kiểu dữ liệu tạo nên cấu trúc gọi là một trường (field) • Tổng hợp các field gọi là bản ghi

  4. Ví dụ 1: Giả sử việc quản lý Sinh viên cần: Dữ liệuKiểu dữ liệu • Tên sinh viên chuỗi • Điểm số thực • Giới tính Đ/S – T-F

  5. Ví dụ 2: • Quản lý hồ sơ Công chức cần: • tên công chức • hệ số lương • ngày vào cơ quan • khen thưởng • ….. • Kiểu dữ liệu?

  6. 2. Khai báo struct <tên_cấu_trúc> { [<kiểu_dl> <tên_biến1>,<tên_biến2>]; . . . } [<tên_biến_kiểu_cấu_trúc>] ;

  7. Ví dụ 1: struct sinhvien { char ten[30], nam[1]; float diem; } sinhvien1, sinhvien2;

  8. Ví dụ 2: struct congchuc { char ten[30], khen[50], ngay[8]; floaft hsl; } cc1, cc2, cc3;

  9. Ví dụ 3: struct ngay { int d; int m; int y; } ngay1, ngay2;

  10. 3. Khởi tạo giá trị • Việc khởi tạo giá trị cho biến cấu trúc được thực hiện khi khai báo biến cấu trúc • Các trường của cấu trúc được khởi tạo phải đặt giữa 2 dấu { }, chúng phân cách bởi dấu phảy (,) Ví dụ: struct NgayThang { unsigned char Ngay; unsigned char Thang; unsigned int Nam; }; Khởi tạo biến cấu trúc NgS: NgayThang NgS ={29, 8, 1986};

  11. 4. Truy xuất • Cú pháp: <tên_biến_cấu_trúc>.<tên_trường> • Ví dụ: struct sinhvien { char ten[30], nam[1]; floaft diem; } sinhvien1, sinhvien2; sinhvien1.ten sinhvien1.diem sinhvien1.nam

  12. Ví dụ: void main() { SinhVien SV, s; cout<<"Nhap MSSV:";cin>>SV.MSSV; cout<<"Nhap ten:";cin>>SV.HoTen; cout<<"Nam sinh:";cin>>SV.NamSinh; cout<<"Dia chi: "; cout>>SV.DiaChi; getch(); } #include<iostream.h> #include<conio.h> #include<string.h> struct SinhVien { char MSSV[10]; char HoTen[40]; unsigned int NamSinh ; char DiaChi[40]; };

  13. 5. Cấu trúc của cấu trúc • Xét việc quản lý sinh viên, cần: • tên • điểm • ngày sinh (ngày-tháng-năm) Vậy: Cấu trúc sinh viên gồm các trường: Tên, điểm, ngày sinh. Trong đó ngày sinh là dữ liệu kiểu cấu trúc với 3 trường là ngày, tháng, năm

  14. Nguyễn Văn Công 8.7 26 11 2008 5. Cấu trúc của cấu trúc struct ngaysinh { int ngay, thang, nam; }; struct sinhvien { char ten[30]; float diem; ngs ngaysinh; } sv1, sv2;

  15. 6. Cấu trúc - mảng • Khi quản lý thông tin về 1 đối tượng thì kiểu cấu trúc là rất thuận lợi • Khi quản lý nhiều thông tin giống nhau về kiểu dữ liệu thì kiểu mảng là phù hợp • Quản lý nhiều đối tượng (mỗi đối tượng có nhiều thông tin khác nhau) thì?

  16. Xét mảng 1 chiều A gồm 5 phần tử

  17. Khai báo struct <tên_cấu_trúc> { [<kiểu_dl> <tên_biến1>,<tên_biến2>]; . . . }; <tên_cấu_trúc> <tên_biến_mảng>[spt] ;

  18. Ví dụ: struct danhsach { int sbd; char hoten[25]; float toan,ly,hoa; }; danhsach bangdiem[50];

  19. #include <iostream.h> #include <conio.h> #define N_MOVIES 5 struct movies { char title [50]; int year; } films[N_MOVIES]; void main () { int i; for (i=0; i<N_MOVIES; i++) { cout << “Title: ";cin>>films[i].title; cout << “Year: ";cin>>films[i].year; } getch(); } Ví dụ:

  20. 7. Tham số kiểu cấu trúc • Việc truyền – nhận tham số kiểu cấu trúc cũng giống như các tham số kiểu vô hướng khác • Có hình thức: • Tham trị • Tham biến • Tham trỏ

  21. 8. Union • Là kiểu dữ liệu sử dụng cùng 1 vùng nhớ cho nhiều biến • Các biến có thể có kiểu dữ liệu khác nhau • Tại mỗi thời điểm chỉ sử dụng được duy nhất 1 trong những biến dùng chung vùng nhớ này

  22. Khai báo union { <Kiểu_dl> <tên_trường1>; <Kiểu_dl> <tên_trường2>; ….. } <tên_biến>; union { char a; int b; floaft n; } cam, buoi;

  23. Ví dụ: Chương trình tính diện tích hình chữ nhật, hình tròn, hình thang #include <iostream.h> #include <conio.h> #include <ctype.h> union dagiac { char loai; struct { float dai,rong;} cn; struct {float bankinh; } tr; struct {float daylon,daynho,cao;} th; };

  24. void main() { dagiac dg; clrscr(); cout <<"loai hinh muon tinh (c(chu nhat)/t(thang)/r(tron)";cin >>dg.loai; switch (toupper(dg.loai)) { case 'C': cout <<"Cho biet chieu dai: ";cin >>dg.cn.dai; cout <<"Cho biet chieu rong: ";cin >>dg.cn.rong; cout <<"Dien tich la: "<<(dg.cn.dai*dg.cn.rong); break; case 'T': cout <<"Cho biet day lon: "; cin >>dg.th.daylon; cout <<"Cho biet day nho: "; cin >>dg.th.daynho; cout <<"Cho biet chieu cao: ";cin >>dg.th.cao; cout <<"Dien tich la: "<<((dg.th.daylon+dg.th.daynho)*dg.th.cao/2); break; case 'R': cout <<"Cho biet ban kinh: "; cin >>dg.tr.bankinh; cout <<"Dien tich la: "<<(dg.tr.bankinh*dg.tr.bankinh*3.14); break; default: cout <<"Du lieu khong chinh xac"; } getch(); }

More Related