Bài giảng Nhập môn Lập trình: Chương 10
lượt xem 4
download
Bài giảng Nhập môn Lập trình: Chương 10 trình bày các nội dung chính sau: Kiểu cấu trúc, khái niệm kiểu cấu trúc, khai báo và truy xuất kiểu cấu trúc, truyền cấu trúc cho hàm. Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Nhập môn Lập trình: Chương 10
- Kiểu cấu trúc - STRUCT BUỔI 13
- Khái niệm kiểu cấu trúc (struct) Khai báo và truy xuất kiểu cấu trúc Bài tập
- Đặt vấn đề • Thông tin 1 sinh viên (SV) • MSSV: kiểu chuỗi • Tên SV: kiểu chuỗi • Ngày tháng năm sinh: kiểu chuỗi • Giới tính: ký tự • Điểm toán, lý, hóa: số thực • Yêu cầu • Lưu thông tin cho N sinh viên ? • Truyền thông tin N sinh viên vào một hàm ?
- Đặt vấn đề • Khai báo các biến để lưu trữ 1 SV • char mssv[7]; // ‚0012078‛ • char hoten[30]; // ‚Nguyen Van A‛ • char ntns[8]; // ‚29/12/82‛ • char phai; // ‘y’ Nam, ‘n’ Nữ • float toan, ly, hoa; // 8.5 9.0 10.0 • Truyền thông tin 1 SV cho hàm • void xuat(char mssv[], char hoten[], char ntns[], char phai, float toan, float ly, float hoa);
- Đặt vấn đề • Nhận xét • Đặt tên biến khó khăn và khó quản lý • Truyền tham số cho hàm quá nhiều • Tìm kiếm, sắp xếp, sao chép,… khó khăn • Tốn nhiều bộ nhớ • … • Ý tưởng • Gom những thông tin của cùng 1 SV thành một kiểu dữ liệu mới => Kiểu struct
- Khai báo kiểu cấu trúc • Cú pháp struct { ; … ; }; • Ví dụ struct DIEM { int x; int y; };
- Khai báo biến cấu trúc • Cú pháp không tường minh struct { ; … ; }; struct ; • Ví dụ struct DIEM { int x; int y; }; struct DIEM diem1, diem2;// C++ có thể bỏ struct
- Sử dụng typedef • Cú pháp typedef struct { ; … ; } ; ; • Ví dụ typedef struct DIEM { int x; int y; }TOADO; TOADO diem1, diem2;
- Khởi tạo cho biến cấu trúc • Cú pháp tường minh struct { ; … ; } = {,…,}; • Ví dụ struct DIEM { int x; int y; } struct DIEM diem1 = {2912, 1706}, diem2;
- Truy xuất dữ liệu kiểu cấu trúc • Đặc điểm • Không thể truy xuất trực tiếp • Thông qua toán tử thành phần cấu trúc hay còn gọi là toán tử chấm (dot operation) . • Ví dụ struct DIEM { int x; int y; } DIEM diem1; diem1.x =3; diem1.y=10; cout > diem1.x; cout > diem1.y; cout
- Gán dữ liệu kiểu cấu trúc struct DIEM { int x, y; } struct DIEM diem1, diem2; diem1.x =3; • Ví dụ diem2 = diem1; // cach 1 // cach 2 diem2.x = diem1.x; diem2.y = diem1.y * 2; // cach 3 diem2.x = diem1.x; diem2.y = diem1.y; diem2.y = diem2.y*2;
- Cấu trúc phức tạp struct DIEM { int x; int y; }; struct DIEM diem1,diem2; typedef struct HINHCHUNHAT { DIEM traitren; DIEM phaiduoi; }HCN; HCN hcn1, hcn3; hcn1.traitren.x = 100; hcn1.traitren.y=10; hcn1.traitren = diem1; Hcn1.phaiduoi = diem2; hcn1 = hcn3;
- Cấu trúc phức tạp struct PHUHUYNH { char hoten[30]; char NTNS[30]; int gioitinh; // 0 : Nam, 1: Nu }; struct PERSON { char hoten[30]; char NTNS[30]; int gioitinh; // 0 : Nam, 1: Nu PHUHUYNH cha; PHUHUYNH me; };
- Cấu trúc phức tạp struct PERSON { char hoten[30]; char NTNS[30]; int gioitinh; // 0 : Nam, 1: Nu struct PERSON *cha; struct PERSON *me; };
- Các lưu ý về cấu trúc • Kiểu cấu trúc được định nghĩa để làm khuôn dạng còn biến cấu trúc được khai báo để sử dụng khuôn dạng đã định nghĩa. • Trong C++, có thể bỏ từ khóa struct khi khai báo biến (hoặc sử dụng typedef) • Khi nhập các biến kiểu số thực trong cấu trúc phải nhập thông qua một biến trung gian. struct DIEM { float x, y;} d1; float temp; cin >> temp; d1.x = temp;
- Mảng cấu trúc • Mảng cấu trúc • Tương tự như mảng với kiểu dữ liệu cơ sở (char, int, float, …) struct DIEM { int x, y; }; DIEM mang1[20]; DIEM mang2[10] = {{1,2}, {4, 4}, {2, 7}}; for(i=0;i
- Truyền cấu trúc cho hàm struct DIEM { int x, y; }; DIEM diem1; void main() { xuat1(diem1.x, diem1.y); xuat3(diem1); } void xuat1(int x, int y) { cout
- Bài tập minh họa 1. Xây dựng cấu trúc sinh viên: tên, mssv, lớp 2. Nhập, xuất cho danh sách sinh viên 3. Tìm sinh viên theo tên
- Bài tập minh họa Tạo cấu trúc sinh viên Nhập danh sách sinh viên typedef struct SinhVien void NhapSinhVien(SV dssv[], int &soluongSV) { { int i; char ten[50]; printf ("Nhap so luong sinh vien : "); char mssv[10]; scanf(‚%d‛,&soluongSV); char lop[5]; }SV; for(i=0;i
- Bài tập minh họa Xuất danh sách sinh viên Tìm sinh viên theo tên void XuatSinhVien(SV dssv[], int thutu) int TimSVTheoTen(SV dssv[], int soluongsv, char ten[]) { { printf ("Ten sinh vien : "); int vitritimthay = -1; for ( int i = 0; i < soluongsv; i++ ) puts(dssv[thutu].ten); { printf ("Ma so sinh vien : "); if (strcmp(dssv[i].ten, ten) == 0) { puts(dssv[thutu].mssv); vitritimthay = i; printf ("Lop cua sinh vien : "); break; } puts(dssv[thutu].lop); } } return vitritimthay; }
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nhập môn lập trình - Chương 10: Kiểu cấu trúc
32 p | 77 | 12
-
Bài giảng Nhập môn Java: Bài 10 – Võ Tấn Dũng
46 p | 68 | 7
-
Chương 10-Phân tích thuật toán
10 p | 69 | 6
-
Bài giảng Nhập môn java - Chương 10: Multi-Threading
46 p | 75 | 6
-
Bài giảng Nhập môn lập trình: Buổi 10 - Tìm hiểu mảng 2 chiều và chuỗi ký tự
40 p | 72 | 6
-
Bài giảng Nhập môn Công nghệ thông tin và truyền thông: Bài 10
38 p | 58 | 5
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn