Bài giảng Nhập môn lập trình - Chương 7: Giới thiệu tổng quan về lập trình cung cấp cho người học các kiến thức: Dữ liệu có cấu trúc, dữ liệu mảng với kích thước cố định, ứng dụng mảng trong lập trình,... Mời các bạn cùng tham khảo.
Nhập mơn lập trình Trình bày: Nguyễn Sơn Hồng Quốc Email: nshquoc@fit.hcmus.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Dữ liệu có cấu trúc Dữ liệu mảng với kích thước cố định Ứng dụng mảng lập trình Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp Thuật ngữ đọc thêm tiếng Anh CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt Đặt vấn đề • Khai báo biến để lưu trữ SV char mssv[8]; // "0912345" char hoten[30]; // "Nguyen Van A" char ntns[9]; // "01/01/91" char phai; // ‘y’:Nam ;‘n’:Nu float toan, ly, hoa;// 8.5 9.0 10.0 • Truyền thông tin SV cho hàm void xuat(char* mssv,char* hoten,char* ntns, char phai,float toan,float ly,float hoa); CuuDuongThanCong.com https://fb.com/tailieudientucntt Đặt vấn đề • Nhận xét – Đặt tên biến khó khăn khó quản lý – Truyền tham số cho hàm nhiều – Tìm kiếm, xếp, chép,… khó khăn – Tốn nhiều nhớ –… • Ý tưởng – Gom thông tin SV thành kiểu liệu => Kiểu struct CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo kiểu cấu trúc • Cú pháp struct { ; … ; }; • Ví dụ struct Point2D { int x; int y; }; CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo kiểu cấu trúc • Ví dụ struct Point2D { int x; int y; }; • Áp dụng – Khai báo kiểu liệu sau: Phân số Hỗn số Điểm không gian Đơn thức Ngày CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo biến • Cú pháp khai báo tường minh struct , ; • Ví dụ struct Point2D { int x; int y; } p1, p2; CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo biến • Ví dụ struct Point2D { int x; int y; } p1, p2; • Áp dụng – Khai báo biến kiểu liệu sau: Thời gian (giờ, phút, giây) Đường thẳng (có dạng ax + by + c = 0) CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo biến • Cú pháp khai báo khơng tường minh struct , ; • Ví dụ struct int int }; struct Point2D { x; y; Point2D p1, p2; // C++ bỏ từ khóa struct 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Khai báo biến • Ví dụ struct Point2D { int x; int y; }; struct Point2D p1, p2; // C++ bỏ từ struct • Áp dụng – Khai báo khơng tường minh kiểu liệu sau: Tam giác (với độ dài ba cạnh) Tam giác (với tọa độ ba điểm) 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng typedef • Cú pháp typedef struct { ; … ; } ; , ; • Ví dụ typedef struct { int x; int y; } Point2D; Point2D p1, p2; 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng typedef • Ví dụ typedef struct { int x; int y; } Point2D; Point2D p1, p2; • Áp dụng – Sử dụng typedef khai báo biến liệu sau: Khai báo hình cầu Cầu thủ (với thơng tin mã cầu thủ 30 ký tự, tên cầu thủ tối đa 30 ký tự, ngày sinh) 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt Khởi tạo cho biến cấu trúc • Cú pháp struct { ; … ; } = {, , …, }; • Ví dụ struct Point2D { int x; int y; } p1= {2912, 1706}, p2; 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Khởi tạo cho biến cấu trúc • Ví dụ struct Point2D { int x; int y; } p1= {2912, 1706}, p2; • Áp dụng – Khởi tạo cho biến sau: Số phức Điểm khơng gian 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt Truy xuất • Đặc điểm – Không thể truy xuất trực tiếp – Thông qua tốn tử thành phần cấu trúc Hay gọi toán tử chấm (dot operation) . • Ví dụ 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Truy xuất Ví dụ struct Point2D { int x, y; } p = {2912, 1706}; void show(Point2D p) { printf("x = %d, y = %d\n", p.x, p.y); } 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt Truy xuất • Ví dụ struct Point2D { int x; int y; } p = {2912, 1706}; void show(Point2D p) { printf("x = %d, y = %d\n", p.x, p.y); } • Ví dụ áp dụng: Tính khoảng cách hai điểm khơng gian 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Gán liệu • Có cách = biến cấu trúc nguồn . = • Ví dụ struct Point2D { int x, y; } p1 = {2912, 1706}, p2; void main() { p2 = p1; p2.x = p1.x; p2.y = p1.y * 2; } 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt Gán liệu • Ví dụ struct Point2D { int x, y; } p1 = {2912, 1706}, p2; void main() { p2 = p1; p2.x = p1.x; p2.y = p1.y * 2; } • Áp dụng : Viết hàm tìm trung điểm hai điểm mặt phẳng 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ tìm trọng tâm tam giác • Các định nghĩa hàm void gravCenter(Triangle t, Point2D& p) { p.x = (t.ver[0].x + t.ver[1].x + t.ver[2].x) / 3; p.y = (t.ver[0].y + t.ver[1].y + t.ver[2].y) / 3; } void inputTriangle(Point2D& p) { for (int i = 0; i < 3; i++) { 10 cout