Tài suất hướng dẫn thực hành: KĨTHUẬT LẬP TRÌNH C/C ++ Trường ĐHBK Hà Nội Khoa điện Bộmôn Điều khiển Tự động Hai 1: Lập trình cơsở1 Mục đích bàithực hànhGiúp học viênlàm quen với công cụlập trình VisualC ++, thửnghiệm Matrix chươngtrình theo phong cáchhướng hàm, qua đó nắm vững các kiến ngữ lập trình cơsởnhư: 1) Phương phápthểhiện thuật toán bằng các các cấu trúc ban kiện, vòng lặp 2) Cách sửdụngmảng, con trỏ, bộnhớ động 3) Khai báo, thực hiện và sửdụng hàm; Các phươngpháp truyền tham sốhàm. 2 Nhiệm vụthí nghiệm 2.1 hai tổ 1. Xây dựng một hàm thực hiện phân loại các sốchẵn và lẻtrong một dãy sốnguyên, kết tên được nhớ vào hai dãy sốmới. Sửdụng mảng động đểbiểu diễnhai dãy sốkết quảsao cho bộnhớ được cấpphát độngchỉvừa đủdùng. Kết quảtrảvềcủa hàm sẽlà sốcác sốchẵn trong dãy ban đầu, hay cũng chính là chiều 戴思杰 của một dãy kết tên. 2. Matrix chương trình minh họa cáchsửdụnghàm trong câu 1 với hai trườnghợp: -dãy sốban đầu được chứa trong một mảng tĩnh vàgiá trịcác sốtrong dãy được lớn chức ngay khi khai báo. -dãy sốban đầu được chứa trong một mảng động và giá trịcác sốcần được đưa vào quaBàn phím Hai dãy sốkết tên được đưa ra màn chuyển. 2.2 Nhiệm vụchuẩn bị ởnhà1) Ôn lại các kiến ngữ cơsở nêu trong phần 1, xem lại các vídụvà hai tổ trên lớp. 2) Xây dựng thuật toán và Matrix chương trình sẵn trên tập (Matrix tay, không chấp nhận bản sao!) 2.3 Nhiệm vụtrên phòng thí nghiệm 1) Làm quen với Visual c + +, chức một dựánmới (NewProject), đặt tên dựán (ví dụ "SortApp") vàchọn "Ứng dụng giao diện điều khiển Win32" 2) Matrix hàm trênmáy và lưuvào một 2 tập tin riêng: tiêu đề tập tin (ví dụsort.h) chứa mã khai báo hàm vàtập tin nguồn (*.cpp) chứa mã thực hiện hàm. Bổsung 2 tập tin đó vàodựán. Biên dịch tập tin nguồn (ví dụSort.cpp),tìm cách giải thích và sửa các lỗi biên dịch (biên dịch lỗi). 3) Matrix chương trình minh họa trong tệp chính (ví dụsortapp.cpp). Dịch toàn bộdựán (xây dựng), sửa các lỗi biên dịch (biên dịch lỗi), lỗi liên kết (liên kết lỗi) nếu có vàchạy thửchương trình. 4) Làm quen sửdụng Debugger đểtìm lỗi chạy (thời gian chạy lỗi), tìm cáchgiải thích và sửa lỗi nếu có. 5) Mởmenu "ProjectSetting" và tìm hiểu ý nghĩa các thông sốlựa chọn cho dựán.6) Thửnghiệm thay đổi cách thểhiệnvòng lặp (cho... hoặcwhile..., sửdụng phương phápdịch con trỏthay cho sửdụng chỉsố). 7) Thửnghiệm không dùng mảng động, mà dùng mảngtĩnh đểchứa dãy số đầu vào và các dãy sốkết quảtrong hàm. Phân tích các vấn đềgặp phải. 8) Ghi chép các bước thực hiện đểlàm báo cáo. 3 Báo cáo thực hành Mỗi học viên phải làm một báo cáo riêng, nộp cho cánbộhướngdẫn thí nghiệm chậm nhất là một tuầnsau buổi thực hành. Báocáo có thểviết tay hoặc in,nhưng các bản saophotocopy sẽkhông được chấp nhận.Bài báo cáo phải có đủcácphần sau: 1. Toàn bộmãchương trình đã chạy chia làm 3 files nhưhướng dẫn trong phần 2.32. Mô tảtừngbước thực hiện nhưhướng dẫn trong phần 2.3. Trongmỗi bước,cần nêu bậtcác côngviệc đã làm, các vấn đề đã gặp phải, các lỗi chủyếu đã gặp, lý giải lỗi và mô tảcách giải quyết. 3. Nêu các vấn đềmà anh (chị) thấy chưa thật hiểu, cần giảng viên giải thích kỹhơn. [1] #include [2] #include [3] int phanloai(int* a, int n, int*& chan, int*& le) { [4] int i = 0, sochan = 0; [5] while (i < n) { [6] if (a[i] % 2 == 0) // so chan [7] ++sochan; [8] ++i; [9] } [10] chan = new int[sochan]; [11] le = new int[n-sochan]; [12] i = 0; [13] int ic=0,il=0; [14] while (i < n) { [15] if (a[i] % 2) // so le [16] le [il ++] = [i]; [17] khác [18] chan [ic ++] = [i]; [19] ++ tôi; [20]} [21] trở lại sochan; [22]} [23] void in (int * a, n int) {} [24] cho (int tôi = 0; tôi < n; ++ tôi) [25] cout << ' ' << một [i]; [26]} [27] void main() {} [28] / / mang tinh [29] int n = 10; [30] int là [10] = {1,2,3,4,5,6,7,8,9,10}; [31] int * c, * l; [32] int sochan = phanloai(as,n,c,l); [33] cout << "
Day vì vậy ban dầu:"; [34] print(as,n); [35] cout << "
Day rất chan:"; [36] print(c,sochan); [37] cout << "
Day rất le:"; [38] print(l,n-sochan); [39] xóa c []; xóa [] l; [40] / / mang đồng [41] cout << "
Cho Chiểu đại ngày vì vậy:"; [42] cin >> n; [43] int * quảng cáo = mới int [n]; [44] cho (int tôi = 0; tôi < n; ++ tôi) {} [45] cout << "
ad [" << tôi << "] ="; [46] cin >> quảng cáo [i]; [47]} [48] sochan = phanloai(ad,n,c,l); [49] cout << "
Day vì vậy ban dầu:"; [50] print(ad,n); [51] cout << "
Day rất chan:"; [52] print(c,sochan); [53] cout << "
Day rất le:"; [54] print(l,n-sochan); [55] xóa c []; xóa [] l; [56] cout << "
Nhan mot phim bat ky de ket thuc"; [57] cout.flush(); [58] getch(); [59]} Các câu hỏi gợi ý, kiểm tra bổsung: 1. Dòng 1 và 2 có ý nghĩa gì? 2. Tại sao các tham biến chan và le ởdòng 3 lại có kiểu int * &? 3. Giải thích các dòng lệnh 16 và 18 4. Tại sao ởdòng 30, ta không thểviết một [n] = {...} thay cho một [10]? 5. Tại sao ởdòng 39, ta không viết delete c; delete l? 6. Dòng 57 có ý nghĩa gì? Nếu xóa dòng đó đi thì sao? Tài liệu hướng dẫn thực hành: KĨTHUẬT LẬP TRÌNH C/C++ Bài 2: Lập trình hướng đối tượng: Lớp và chồng toán tử1 Mục đích bài thực hành Học viên biết cách xây dựng một cấu trúc dữliệu tiêu biểu dưới dạng một lớp với các phép toán thông dụng, thửnghiệm viết chương trình theo phong cách hướng đối tượng, qua đó nắm vững các khái niệm và phương pháp thực hiện như: 1) Đóng gói dữliệu 2) Hàm tạo, hàm hủy, hàm tạo bản sao, hàm toán tửgán, chồng toán tử3) Tham sốmặc định, truyền tham sốvà kiểu trảvề4) Xây dựng một thưviện lớp 2 Nhiệm vụthí nghiệm 2.1 Bài tập 1. Xây dựng một lớp Vector đểbiểu diễn kiểu vector toán học có các phần tử(thành phần) kiểu double với các yêu cầu sau: -Có thểkhai báo một vector với kích thước (sốchiều) bất kỳ. Nếu không đưa kích thước thì nó sẽ được mặc định là 0. Tất cảcác phần tử được khởi tạo giá trịbằng 0. -Một vector tựquản lý bộnhớ động, có khảnăng tựsao chép và thực hiện phép gán tương tựnhưvới các kiểu dữliệu cơbản -Có thểxác định sốchiều vector cho một vector bất kỳ-Có thểtruy nhập từng phần tửvector thông qua toán tử[] với sốthứtựtính từ0 và toán tửgọi hàm () với sốthứtựtính từ1. -Có thểthực hiện các phép +, - cũng như+=, -= và các phép so sánh giữa hai vector và các phép *, / cũng như*=, /= giữa một vector và một sốthực (double), đảo dấu (-) và đồng dấu (+). 2. Viết chương trình minh họa cách sửdụng lớp Vector câu 1. Yêu cầu đưa sốchiều, giá trịcác phần tửqua bàn phím và kết quảthực hiện ra màn hình. Định nghĩa lại các toán tử<<, >> tương ứng đểcó thểsửdụng lại. 2.2 Nhiệm vụchuẩn bị ởnhà 1) Ôn lại các kiến thức cơsởnêu trong phần 1, xem lại các ví dụvà bài tập trên lớp. 2) Xây dựng thuật toán và viết chương trình sẵn trên giấy (viết tay, không chấp nhận bản sao!) 2.3 Nhiệm vụtrên phòng thí nghiệm 1) Tạo một dựán thưviện mới (New Project), đặt tên dựán (ví dụ“Mathlib”) và chọn “Win32 Static Library”. Chấp nhận các tham sốmặc định. 2) Tạo một Header file (ví dụvector.h) chưa phần khai báo lớp và một file nguồn (vector.cpp) chứa phần thực hiện các hàm thành viên còn lại. Bổsung 2 files đó vào dựán. 3) Thực hiện lớp Vector theo các yêu cầu nêu trong phần 2.1, dịch toàn bộdựán (xây dựng), tìm cách giải thích và sửa các lỗi. 4) Bổsung một dựán mới "Ứng dụng giao diện điều khiển Win32" vào trong Workspace đã có đểviết chương trình minh họa. Bổsung thưviện được chức ra ởtrên (mathlib.lib) vào dựán và dịch toàn bộdựán mới, sửa các lỗi biên dịch (biên dịch lỗi), lỗi liên kết (liên kết lỗi) nếu có và chạy thửchương trình. 5) Thửnghiệm thay đổi một sốkiểu tham sốvà kiểu trảvềtrong hàm chức bản sao, hàm toán tửgán và Các hàm toán học. Phân tích các vấn đềgặp phải. Ghi chép các bước thực hiện đểlàm báo cáo. 3 Báo cáo thực hành Mỗi học viên phải làm một báo cáo riêng, nộp cho quý bộhướng dẫn thí nghiệm chậm nhất là một tuần sau buổi thực hành. Hai báo cáo phải có đủcác phần sau: 1) Toàn bộmã chương trình đã chạy chia làm các tập tin nhưhướng dẫn trong phần 2,3 2) Mô tảtừng bước thực hiện nhưhướng dẫn trong phần 2.3. Trong mỗi bước, cần nêu bật các công việc đã làm, các vấn đề đã gặp phải, các lỗi chủyếu đã gặp, lý giải lỗi và mô tảcách giải quyết. Trường ĐHBK Hà Nội Khoa điện Bộmôn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨTHUẬT LẬP TRÌNH C/C++ Bài 3: Dẫn xuất lớp và cơchế đa xạ1 Mục đích bài thực hành Học viên hiểu sâu vềcác cơchếthừa kếvà đa xạtrong dẫn xuất lớp, qua đó nắm vững các vấn đềnhư: 1) Phân tích và mô tảquan hệtĩnh giữa các lớp đối tượng thông qua dẫn xuất lớp 2) Kiểm soát truy nhập thành viên ởlớp cơsởvà tác dụng đối với các lớp dẫn xuất 3) Phân biệt giữa hàm ảo và hàm thành viên thông thường, lớp trừu tượng và lớp thông thường 4) Phân biệt giữa thừa kếgiao diện và thừa kếphần thực hiện và các tác dụng của chúng 5) Ý nghĩa của việc sửdụng con trỏtrong lập trình hướng đối tượng 2 Nhiệm vụthí nghiệm 2.1 Bài tập 1. Xây dựng một thưviện lớp (có ít nhất 4 lớp đối tượng) đểbiểu diễn các khối hàm sửdụng trong mô phỏng và th
đang được dịch, vui lòng đợi..
