Lập trình cơ bản - Kiểu dữ liệu có cấu trúc

Vân đề nôp đồ an – điêm thanh phân  Vân đề thi thưc hanh:  Thơi gian, đia điêm: t.Khanh (quyêt đinh)  Vân đề miên thi, câm thi  Vân đề thi lý thuyêt:  Thơi gian: 90phut – không sử dung tai liêu  Nôi dung: toan bộ chương trinh  Hinh thưc: trăc nghiêm – tự luân (3-5 bai tâp lâp trinh)  Đề thi chung 2 lơp năm 1: SP tin, CNTT

pdf16 trang | Chia sẻ: nguyenlam99 | Lượt xem: 865 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Lập trình cơ bản - Kiểu dữ liệu có cấu trúc, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
KIỂU DỮ LIỆU CÓ CẤU TRÚC LÊ ĐỨC LONG-NGÔ QUỐC VIỆT 2011 Đặt vấn đề Ngô Quốc Việt-Lập trình cơ bản 2 THÔNG TIN CỦA 1 HỌC SINH: SỐ DANH BỘ HỌ VÀ TÊN ĐIỂM VĂN ĐIỂM TOÁN TRUNG BÌNH char SDB[10]; char Hoten[100]; int Van, Toan; float TB; Nhận xét cách khai báo trên:  Thể hiện 1 cách độc lập, không liên quan – trong khi thực tế các thuộc tính có sự liên hệ với nhau (thuộc tính thông tin về một học sinh)  Thông tin của nhiều học sinh – ví dụ trong một lớp ???  Mở rộng các đối tƣợng trong thế giới thực – thông tin về 1 đối tƣợng thực tế thƣờng phức tạp và có nhiều thuộc tính có ý nghĩa và kiểu dữ liệu khác nhau. PHÁT SINH MỘT KIỂU DỮ LIỆU MỚI: CẤU TRÚC (BẢN GHI/MẪU TIN) Khai báo cấu trúc Ngô Quốc Việt-Lập trình cơ bản 3 CÁCH 1: struct Kiểu_cấu_trúc { //Khai báo các thành phần của cấu trúc }; Ví dụ: struct Hocsinh { char SDB[10]; char Hoten[100]; int Van,Toan; float TB; }; Đặt sau từ khoá #include . Và #define .. Khai báo cấu trúc Ngô Quốc Việt-Lập trình cơ bản 4 CÁCH 2: typedef struct { //Khai báo các thành phần của cấu trúc } Kiểu_cấu_trúc; Ví dụ: typedef struct { char SDB[10]; char Hoten[100]; int Van,Toan; float TB; }Hocsinh; Khai báo cấu trúc Ngô Quốc Việt-Lập trình cơ bản 5 CÁCH 3: struct Kiểu_cấu_trúc { //Khai báo các thành phần của cấu trúc }; typedef struct Tên_kiểu Kiểu_cấu_trúc; Ví dụ: struct Hocsinh { char SDB[10]; char Hoten[100]; int Van,Toan; float TB; }; typedef struct HS Hocsinh; Khai báo biến cấu trúc Ngô Quốc Việt-Lập trình cơ bản 6 TƢƠNG TỰ NHƢ KHAI BÁO BIẾN BÌNH THƢỜNG Kiểu_cấu_trúc Tên_biến; Ví dụ: Hocsinh HS1, HS2; Hocsinh stu; SDB Hoten Van Toan TB 10 Byte 100 Byte 2 Byte 2 Byte 4 Byte Số lƣợng byte chiếm trong bộ nhớ (sizeof (Hocsinh)) Cần lƣu ý thêm: Truy xuất các thành phần cấu trúc Ngô Quốc Việt-Lập trình cơ bản 7 Tên_biến . Tên_thành_phần; Ví dụ: HS1.Hoten --------- truy xuất đến thành phần Họ Tên của biến HS1 HS1.TB --------- truy xuất đến thành phần điểm TB của biến HS1 HS2.Van --------- truy xuất đến thành phần điểm Văn của biến HS2 Với 1 học sinh có các thuộc tính nhƣ trên  Lớp học có n học sinh sẽ ntn ???  Khai báo biến mảng: Hocsinh HS[50]; // biểu diễn cho 1 mảng tối đa 50 phần tử có kiểu dữ liệu Hocsinh  Thông tin của học sinh thứ i: HS[i].SDB; HS[i].Hoten; HS[i].Van; HS[i].Toan; HS[i].TB; HS 50 phần tử – mỗi phần tử là một cấu trúc Ví dụ minh hoạ Ngô Quốc Việt-Lập trình cơ bản 8 Bài toán: Nhập vào thông tin học sinh của một lớp (tối đa 50 hs), tính điểm trung bình của mỗi hs, trung bình lớp, và xuất ra danh sách gồm thông tin kết quả của từng học sinh SƠ ĐỒ THỦ TỤC/HÀM main Xuat_DS Nhap_HS Tinh_TB_lop Tinh_TB_HS Nhap_lop Xuat_TT_HS PROTOTYPE void Nhap_HS(Hocsinh &h); void Tinh_TB_HS(Hocsinh &h); void Xuat_TT_HS(Hocsinh h); void Nhap_lop(Hocsinh h[ ], int &n); void Tinh_TB_lop(Hocsinh h[ ], int n); void Xuat_DS(Hocsinh h[ ], int n); Ví dụ minh hoạ Ngô Quốc Việt-Lập trình cơ bản 9 Bài toán 1: Viết chƣơng trình nhập toạ độ tâm, và bán kính của 1 đƣờng tròn trong mặt phẳng Oxy. Tính diện tích và chu vi của nó rồi xuất kết quả. Phân tích:  Thành phần dƣ̃ liệu:  Input: toạ độ tâm (x,y) va ̀ bán kính R  Output: diện tích S, va ̀ chu vi P  Thành phần xƣ̉ lý:  Nhập toạ độ (x,y) va ̀ bán kính R  Tính diện tích: S = Pi * R * R  Tính chu vi: P = 2 * Pi * R  Xuất S, P. Thiết kế: struct DIEM { float x; float y; }; struct DUONGTRON { DIEM I; float R; }; main Tinh_PNhap_Diem Xuat Tinh_S Nhap PROTOTYPE void Nhap_Diem(DIEM &p);  void Nhap(DUONGTRON &c);  float Tinh_S(DUONGTRON c);  float Tinh_P(DUONGTRON c);  void Xuat(DUONGTRON c); Ví dụ minh hoạ Ngô Quốc Việt-Lập trình cơ bản 10 BÀI TOÁN 2: VIẾT CHƢƠNG TRÌNH NHẬP VÀO TỌA ĐỘ BA ĐỈNH CỦA MỘT TAM GIÁC, XUẤT RA CHU VI, DIỆN TÍCH, VÀ TÍNH CHẤT CỦA TAM GIÁC (ĐỀU, CÂN, VUÔNG) MỘT SỐ NỘI DUNG CHUẨN BỊ: -Đọc sách giáo khoa MÔN TIN HỌC LỚP 11, Bài tập và thực hành 7, trang 105 – 108 -Xác định bài toán, tìm hiểu cách xử lý bài toán bằng toán học -Hiểu tại sao cần phải định nghĩa kiểu dữ liệu có cấu trúc (DIEM, TAMGIAC) -Hiểu tại sao cần phải sử dụng các thủ tục, hàm như trong bài mẫu của SGK YÊU CẦU: chương trình được xây dựng dưới dạng các chương trình con (thủ tục và hàm), tận dụng việc khai kiểu dữ liệu có cấu trúc (record cho điểm vàtam giác) 1. XÁC ĐỊNH BÀI TOÁN Input: Tọa độ3 đỉnh tam giác ABC,với A(x A , y A ), B(x B , y B ), C(x C , y C ) Output: chu vi, diện tích, tính chất: đều, cân, vuông Ngô Quốc Việt-Lập trình cơ bản 11 2. PHÂN TÍCH VÀ THIẾT KẾ 2.1. Phân tích: -Thành phần dƣ ̃liệu: Input: sô ́thực x A , y A , x B , y B , x C , y C Output: sô ́thực chuvi, dientich chuỗi thông báo “tam giac can”, “tam giac deu”, “tam giac vuong” -Thành phần xƣ ̉ly:́ Nhập tọa đô ̣đỉnh •Tính đô ̣dài cạnh a, b, c •Tính chu vi = a + b + c •Tính diện tích = sqrt(p(p-a)*(p-b)*(p-c)) với p = (a+b+c)/2 •Kiểm tra tính chất Nếu a = b = c thi ̀là “deu” Nếu a = b hoặc b = c hoặc c = a thi ̀là “can” Nếu a2+b2=c2 hay a2+c2=b2 hay b2+c2=a2 thi ̀là “vuong” •Xuất chu vi, diện tích, tính chất: đều, cân, vuông tƣơng ứng 2.2. Thiết kế -Đơn vị dƣ ̃liệu: Input: x A , y A , x B , y B , x C , y C = real; Output: chuvi, dientich: real; deu, can, vuong: boolean; Cải tiến: sƣ ̉dụng cách định nghĩa kiểu dƣ ̃liệu có cấu trúc (RECORD) (*MO TA DIEM CUA TAM GIAC *) Diem = record x, y: real; End; (* MO TA TAM GIAC VOI BA DINH A,B,C *) Tamgiac = record A,B,C: Diem; End; Ngô Quốc Việt-Lập trình cơ bản 12 -Đơn vị xử lý: sƣ̉dụng các chƣơng trình con nhƣ sau Lƣu ý: tìm hiểu sƣ̣khác biệt khi sƣ̉dụng hàm vàthủtục, cách truyền tham biến vàtruyền tham trị trong các hàm vàthủtục của chƣơng trình này. (*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *) Function Kh_cach (P,Q: Diem):real; (*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH a,b,c*) Procedure Daicanh(var R: Tamgiac;var a,b,c: real); (* HAM TINH CHU VI TAM GIAC R *) Function Chuvi(var R: Tamgiac): real; (* HAM TINH DIEN TICH CUA TAM GIAC R *) Function Dientich(var R: Tamgiac): real; (* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *) Procedure Hienthi(var R: Tamgiac); (* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM GIAC *) Procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean); •Sơ đồthủtục/hàm: Tinh_chat_tam_giac Hienthi Chuvi Dientich Tinhchat Daicanh Kh_cach A B C Chu vi Diêṇ tićh Tính chất 1 1 12 12 -9 -9 59.397 0.000 SAI 7 9 13 6 0 12.5 29.069 0.000 SAI 2 -3 3 -2 1 -1 5.886 1.500 TGIAC CAN -1 2 3 4 3 2 10.472 4.000 TGIAC VUONG 2 30 15 20 15 40 52.802 130.000 TGIAC CAN 0 0 3 4 4 3 11.414 3.500 TGIAC CAN 0 0 3 0 1.5 2.599 9.002 3.899 TGIAC DEU •BỘ DỮ LIỆU KIỂM TRA (EPS=1.0E-3) Ngô Quốc Việt-Lập trình cơ bản 13 We have already seen that a string can be represented as a one-dimensional character- type array. Each character within the string will be stored within one element of the array. Some problems require that the characters within a string be processed individually. However, there are many other problems which require that strings be processed as complete entities. Such problems can be simplified considerably through the use special string-oriented library functions. (Xem trong ví dụ 9.14. trang 254 – 259, tài liệu Programming with C, Gottfried (1996) – đã upload) Most C compilers include library functions that allow strings to be compared, copied or concatenated (i.e., combined, one behind another). Nhắc lại Ngô Quốc Việt-Lập trình cơ bản 14  SAI  ĐÚNG  ĐÚNG Strings (i.e., character arrays) are handled somewhat differently.The proper array size will be assigned automatically. This will include a provision for the null character \0, which is automatically added at the end of every string. Hướng dẫn ôn tập  Vấn đề nộp đồ án – điểm thành phần  Vấn đề thi thực hành:  Thời gian, địa điểm: t.Khánh (quyết định)  Vấn đề miễn thi, cấm thi  Vấn đề thi lý thuyết:  Thời gian: 90phút – không sử dụng tài liệu  Nội dung: toàn bộ chương trình  Hình thức: trắc nghiệm – tự luận (3-5 bài tập lập trình)  Đề thi chung 2 lớp năm 1: SP tin, CNTT Ngô Quốc Việt-Lập trình cơ bản 15 CÁM ƠN ĐÃ THEO DÕI TP.HCM - 2011

Các file đính kèm theo tài liệu này:

  • pdfltcb_baigiang07_6884.pdf