Bài giảng Lập trình cơ bản: Bài 7 - TS. Ngô Quốc Việt
lượt xem 4
download
Bài giảng Lập trình cơ bản - Bài 7 trang bị cho người học những hiểu biết về kiểu dữ liệu có cấu trúc. Chương này trình bày những vấn đề sau: Khai báo cấu trúc, truy xuất các thành phần cấu trúc. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình cơ bản: Bài 7 - TS. Ngô Quốc Việt
- KIỂU DỮ LIỆU CÓ CẤU TRÚC LÊ ĐỨC LONG-NGÔ QUỐC VIỆT 2011
- Đặt vấn đề SỐ DANH BỘ char SDB[10]; HỌ VÀ TÊN THÔNG TIN CỦA 1 HỌC SINH: ĐIỂM VĂN char Hoten[100]; int Van, Toan; ĐIỂM TOÁN float TB; TRUNG BÌNH 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) Ngô Quốc Việt-Lập trình cơ bản 2
- Khai báo cấu trúc Đặt sau từ khoá #include …. Và #define …….. 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; }; Ngô Quốc Việt-Lập trình cơ bản 3
- Khai báo cấu trúc 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; Ngô Quốc Việt-Lập trình cơ bản 4
- Khai báo cấu trúc 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; Ngô Quốc Việt-Lập trình cơ bản 5
- Khai báo biến cấu trúc 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; Cần lƣu ý thêm: 10 Byte 100 Byte 2 Byte 2 Byte 4 Byte SDB Hoten Van Toan TB Số lƣợng byte chiếm trong bộ nhớ (sizeof (Hocsinh)) Ngô Quốc Việt-Lập trình cơ bản 6
- Truy xuất các thành phần cấu trúc 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 Ngô Quốc Việt-Lập trình cơ bản 7
- Ví dụ minh hoạ 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 main SƠ ĐỒ THỦ TỤC/HÀM Nhap_lop Tinh_TB_lop Xuat_DS Nhap_HS Tinh_TB_HS Xuat_TT_HS PROTOTYPE void Nhap_HS(Hocsinh &h); void Nhap_lop(Hocsinh h[ ], int &n); void Tinh_TB_HS(Hocsinh &h); void Tinh_TB_lop(Hocsinh h[ ], int n); void Xuat_TT_HS(Hocsinh h); void Xuat_DS(Hocsinh h[ ], int n); Ngô Quốc Việt-Lập trình cơ bản 8
- Ví dụ minh hoạ 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: Thiết kế: Thành phần dƣ̃ liệu: Input: toạ độ tâm (x,y) và bán kính R struct DIEM struct DUONGTRON Output: diện tích S, và chu vi P { { Thành phần xƣ̉ lý: float x; DIEM I; Nhập toạ độ (x,y) và bán kính R float y; float R; Tính diện tích: S = Pi * R * R }; }; Tính chu vi: P = 2 * Pi * R Xuất S, P. main PROTOTYPE void Nhap_Diem(DIEM &p); void Nhap(DUONGTRON &c); Nhap Xuat float Tinh_S(DUONGTRON c); float Tinh_P(DUONGTRON c); void Xuat(DUONGTRON c); Nhap_Diem Tinh_S Tinh_P Ngô Quốc Việt-Lập trình cơ bản 9
- Ví dụ minh hoạ 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(xA, yA), B(xB, yB), C(xC, yC) 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 10
- 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 xA, yA, xB, yB, xC, yC 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ƣ̉lý : 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 thìlà “deu” Nếu a = b hoặc b = c hoặc c = a thìlà “can” Nếu a2+b2=c2 hay a2+c2=b2 hay b2+c2=a2 thì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: xA, yA, xB, yB, xC, yC = 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 11
- -Đơ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 •BỘ DỮ LIỆU KIỂM TRA (EPS=1.0E-3) A B C Chu vi Diện tích Tính chất 1 1 12 12 -9 -9 59.397 0.000 SAI Daicanh 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 Kh_cach Ngô Quốc0Việt-Lập 0 trình 3 cơ0 bản 1.5 2.599 9.002 3.899 TGIAC DEU 12
- 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). Ngô Quốc Việt-Lập trình cơ bản 13
- Nhắc lại Strings (i.e., character arrays) are handled SAI 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. ĐÚNG ĐÚNG Ngô Quốc Việt-Lập trình cơ bản 14
- 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Ó THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình cơ bản: Ngôn ngữ lập trình C
80 p | 69 | 17
-
Bài giảng Lập trình cơ bản: Bài 2 - TS. Ngô Quốc Việt
49 p | 75 | 6
-
Bài giảng Lập trình cơ bản: Bài 5 - TS. Ngô Quốc Việt
39 p | 61 | 6
-
Bài giảng Lập trình cơ bản: Chương 4 - Giải thuật xử lý thông tin và ngôn ngữ lập trình
36 p | 101 | 5
-
Bài giảng Lập trình cơ bản: Bài 6 - Chu Thị Hường
38 p | 10 | 5
-
Bài giảng Lập trình cơ bản: Bài 4 - Chu Thị Hường
46 p | 11 | 5
-
Bài giảng Lập trình cơ bản: Phần 2 - ĐH Sư phạm kỹ thuật Nam Định
83 p | 39 | 5
-
Bài giảng Lập trình cơ bản: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định
125 p | 28 | 5
-
Bài giảng Lập trình cơ bản: Bài 6 - TS. Ngô Quốc Việt
43 p | 76 | 5
-
Bài giảng Lập trình cơ bản: Bài 4 - TS. Ngô Quốc Việt
38 p | 72 | 5
-
Bài giảng Lập trình cơ bản: Bài 3 - TS. Ngô Quốc Việt
37 p | 67 | 5
-
Bài giảng Lập trình cơ bản: Giới thiệu - TS. Ngô Quốc Việt
15 p | 94 | 5
-
Tập bài giảng Lập trình cơ bản
208 p | 29 | 4
-
Bài giảng Lập trình cơ bản: Bài 3 - Chu Thị Hường
34 p | 12 | 4
-
Bài giảng Lập trình cơ bản: Bài 5 - Chu Thị Hường
27 p | 13 | 4
-
Bài giảng Lập trình cơ bản: Bài 8 - Chu Thị Hường
28 p | 11 | 4
-
Bài giảng Lập trình cơ bản: Bài 1 - Chu Thị Hường
32 p | 7 | 3
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