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

Bài giảng Tin học đại cương: Bài 10 - ĐH Bách khoa Hà Nội

Chia sẻ: Khang Duy | Ngày: | Loại File: PDF | Số trang:7

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

Bài 10 Cấu trúc thuộc bài giảng "Tin học đại cương", cùng nắm kiến thức trong chương này thông qua các các nội dung sau: khái niệm cấu trúc, khai báo và sử dụng cấu trúc, xử lý dữ liệu cấu trúc, mảng cấu trúc.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học đại cương: Bài 10 - ĐH Bách khoa Hà Nội

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nội dung VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG 10.1. Khái niệm cấu trúc 10.2. Khai báo và sử dụng cấu trúc TIN HỌC ĐẠI CƯƠNG 10.3. Xử lý dữ liệu cấu trúc Phần 3. Lập trình C 10.4. Mảng cấu trúc Bài 10. Cấu trúc 2 Nội dung 10.1. Khái niệm cấu trúc 10.1. Khái niệm cấu trúc • Kiểu dữ liệu cấu trúc (struct) 10.2. Khai báo và sử dụng cấu trúc – Là kiểu dữ liệu phức hợp, bao gồm nhiều thành phần có thể thuộc các kiểu dữ liệu khác nhau 10.3. Xử lý dữ liệu cấu trúc – Các thành phần: gọi là trường dữ liệu (field) 10.4. Mảng cấu trúc • Ví dụ – Thông tin về kết quả học tập môn Tin đại cương của sinh viên: TenSV, MaSV, Diem. – Thông tin về cầu thủ: Ten, Tuoi, CLB, SoAo, Vitri,… 3 4 1
  2. 10.2. Khai báo và sử dụng cấu trúc 10.2.1. Khai báo kiểu dữ liệu cấu trúc 10.2.1. Khai báo kiểu dữ liệu cấu trúc • Khai báo cấu trúc • Ví dụ 10.2.2. Khai báo biến cấu trúc struct tên_cấu_trúc{ struct sinh_vien{ char ma_so_sinh_vien[10]; 10.2.3. Định nghĩa kiểu dữ liệu với typedef }; char ho_va_ten[30]; float diem_tinDC; }; struct point_3D{ float x; float y; float z; }; 5 6 10.2.2. Khai báo biến cấu trúc 10.2.2. Khai báo biến cấu trúc • Cú pháp: • Các cấu trúc có thể được khai báo lồng nhau struct tên_cấu_trúc tên_biến_cấu_trúc; struct diem_thi { • Ví dụ: float dToan, dLy, dHoa; – struct sinh_vien a, b, c; }; • Kết hợp khai báo struct thi_sinh{ char SBD[10]; struct [tên_cấu_trúc] { char ho_va_ten[30]; ; struct diem_thi ket_qua; } tên_biến_cấu_trúc; } thi_sinh_1, thi_sinh_2; 7 8 2
  3. 10.2.2. Khai báo biến cấu trúc 10.2.3. Định nghĩa kiểu dữ liệu với typedef • Có thể khai báo trực tiếp các trường dữ liệu • Mục đích của một cấu trúc bên trong cấu trúc khác – Đặt tên mới cho kiểu dữ liệu cấu trúc struct thi_sinh{ – Giúp khai báo biến “quen thuộc” và ít sai hơn char SBD[10]; • Cú pháp char ho_va_ten[30]; typedef struct ; struct [diem_thi]{ hoặc typedef struct [tên_cũ] { float dToan, dLy, dHoa; ; } ket_qua; } danh_sách_các_tên_mới; } thi_sinh_1, thi_sinh_2; • Chú ý: cho phép đặt tên_mới trùng tên_cũ 9 10 10.2.3. Định nghĩa kiểu dữ liệu với typedef 10.2.3. Định nghĩa kiểu dữ liệu với typedef • Ví dụ: • Ví dụ struct point_3D{ typedef struct { typedef struct point_2D{ float x, y, z; float x, y, z; float x, y; }; }point_3D; }point_2D, diem_2_chieu, ten_bat_ki; struct point_3D M; point_3D M; point_2D X; typedef struct point_3D point_3D; point_3D N; diem_2_chieu Y; point_3D N; ten_bat_ki Z;  point_2D, diem_2_chieu, ten_bat_ki là các tên cấu trúc, không phải tên biến 11 12 3
  4. 10.3. Xử lý dữ liệu cấu trúc 10.3.1. Truy cập các trường dữ liệu • 10.3.1. Truy cập các trường dữ liệu • Cú pháp • 10.3.2. Phép gán giữa các biến cấu trúc tên_biến_cấu_trúc.tên_trường • Lưu ý – Dấu “.” là toán tử truy cập vào trường dữ liệu trong cấu trúc – Nếu trường dữ liệu là một cấu trúc => sử dụng tiếp dấu “.” để truy cập vào thành phần mức sâu hơn 13 14 10.3.1. Truy cập các trường dữ liệu 10.3.1. Truy cập các trường dữ liệu Ví dụ: #include • Xây dựng một cấu trúc biểu diễn điểm trong #include không gian 2 chiều. Nhập giá trị cho một typedef struct{ biến kiểu cấu trúc này, sau đó hiển thị giá trị char ten[5]; các trường dữ liệu của biến này ra màn hình. int x,y; – Cấu trúc: tên điểm, tọa độ x, tọa độ y }toado; – Nhập, hiển thị từng trường của biến cấu trúc void main(){ như các biến dữ liệu khác toado t; printf("Nhap thong tin toa do\n"); 15 16 4
  5. 10.3.1. Truy cập các trường dữ liệu 10.3.2. Phép gán giữa các biến cấu trúc printf("Ten diem: ");gets(t.ten); • Muốn sao chép dữ liệu từ biến cấu trúc này printf("Toa do x: ");scanf("%d",&t.x); sang biến cấu trúc khác cùng kiểu printf("Toa do y: ");scanf("%d",&t.y); – gán lần lượt từng trường trong hai biến cấu trúc printf("Gia tri cac truong\n"); => “thủ công” printf("%-5s%3d%3d\n",t.ten,t.x,t.y); – C cung cấp phép gán hai biến cấu trúc cùng getch(); kiểu: } biến_cấu_trúc_1 = biến_cấu_trúc_2; 17 18 10.3.2. Phép gán giữa các biến cấu trúc 10.3.2. Phép gán giữa các biến cấu trúc • Ví dụ #include – Xây dựng cấu trúc gồm họ tên và điểm TĐC của #include sinh viên typedef struct{ – a, b, c là 3 biến cấu trúc. char hoten[20]; – Nhập giá trị cho biến a. int diem; – Gán b=a, còn gán từng trường của a cho c. }sinhvien; b?c void main(){ sinhvien a,b,c; printf("Nhap thong tin sinh vien\n"); printf("Ho ten: ");gets(a.hoten); 19 printf("Diem:");scanf("%d",&a.diem); 20 5
  6. 10.3.2. Phép gán giữa các biến cấu trúc 10.4. Mảng cấu trúc b=a; • Là tập hợp các phần tử có cùng kiểu dữ liệu là kiểu strcpy(c.hoten,a.hoten); cấu trúc c.diem=a.diem; • Mục đích: printf(“Bien a: "); – Lưu trữ một tập hợp các phần tử có cùng kiểu. printf("%-20s%3d\n",a.hoten,a.diem); – Mỗi phần tử là một tập hợp các thành phần có printf(“Bien b: "); thể khác nhau: thông tin các sinh viên trong lớp, printf("%-20s%3d\n",b.hoten,b.diem); đội bóng… printf(“Bien c: "); printf("%-20s%3d\n",c.hoten,c.diem); getch(); } 21 22 7.4. Mảng cấu trúc 10.4. Mảng cấu trúc • Cú pháp: • Ví dụ struct ten_cau_truc ten_mang_ctruc[so_ptu]; – Khai báo một cấu trúc gồm họ tên và điểm thi • Ví dụ: Tin đại cương struct sinh_vien { – Khai báo mảng tên là Tin1 gồm 60 phần tử có char ho_ten[20]; kiểu trên float diem_thi; – Nhập thông tin cho mảng trên và hiển thị kết }; quả. struct sinh_vien lop[80]; 24 6
  7. Bài tập Bài tập • Viết 1 chương trình thực hiện những công việc • Viết 1 chương trình thực hiện những công sau: việc sau (tiếp): – Yêu cầu người dùng nhập vào một số nguyên dương – Yêu cầu người dùng nhập vào từ bàn phím n với 5  n  20 (có kiểm tra tính hợp lệ của giá trị một số thực. Đưa ra màn hình danh sách các được nhập vào, nếu giá trị n nhập vào không thỏa sinh viên có điểm thi Tin đại cương nhỏ hơn mãn điều kiện thì yêu cầu nhập lại) giá trị số thực vừa nhập vào. – Yêu cầu người dùng nhập vào thông tin của n sinh – Đưa ra màn hình danh sách sinh viên được viên gồm những mục sau sắp xếp theo chiều giảm dần của điểm thi Tin – Họ và tên: có kiểu dữ liệu là xâu kí tự gồm không quá 30 kí tự – Lớp: xâu kí tự có độ dài không quá 5 kí tự đại cương. – Điểm thi Tin đại cương: là một số nguyên có giá trị từ 0 đến 10 – Đưa ra màn hình danh sách các sinh viên cùng thông tin của họ mà người dùng vừa nhập vào. 7
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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