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 1: Lập trình cơ sở 1 Mục đích bài th

Tài liệu tương tự
Chương trình dịch

Lập trình và ngôn ngữ lập trình

Animation, Modules 6 - Hoạt hình, tách file

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Template and Exception Template and Exception Bởi: Thanh Hiền Vũ TEMPLATE Trong phần này, chúng ta tìm hiểu về một trong các đặc tính còn lại của C++,

OpenStax-CNX module: m Giới thiệu về ngôn ngữ C và môi trường turbo C 3.0 ThS. Nguyễn Văn Linh This work is produced by OpenStax-CNX and licens

Tìm hiểu ngôn ngữ lập trình Visual Basic Tìm hiểu ngôn ngữ lập trình Visual Basic Bởi: Khuyet Danh Tìm hiểu ngôn ngữ lập trình Visual Basic Tổng quan

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 13. Hàm Nội dung 1. Khái niệm hàm 2. Khai báo và sử dụn

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 9. Vào ra dữ liệu trong C Các lệnh vào ra dữ liệu C cun

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

Slide 1

Kiểm soát truy suất Kiểm soát truy suất Bởi: Khoa CNTT ĐHSP KT Hưng Yên Khái niệm Bảo mật thực chất là kiểm soát truy xuất [1]. Mục đích của bảo mật m

Bài tập thực hành Chuyên đề 1 CNPM - Java Khoa CNTT- Trường ĐH Công nghệ TP.HCM Lab 01: LẬP TRÌNH JAVA CƠ BẢN VỚI NET BEANS A. MỤC TIÊU: Hướng dẫn tải

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

NGÔN NGƯ LÂ P TRIǸH Biên tập bởi: nguyenvanlinh

BÀI TẬP THỰC HÀNH

PowerPoint Template

Microsoft Word - Bang tom tat chuc nang do an.doc

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 11. Mảng và xâu kí tự Nội dung 1. Mảng 2. Xâu kí tự 2 1

Ví dụ về duyệt đồ thị ưu tiên chiều sâu DFS và ứng dụng Đồ thị ví dụ: Nguyễn Hữu Tuân vimaru.edu.vn Hình 1: Đồ thị vô hướng có 8 đỉnh Với đồ thị trên,

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

TRƯỜnG ĐẠI HỌC BÁCH KHOA HÀ nội VIỆn CÔnG nghệ THÔnG TIn VÀ TRUYỀn THÔnG TIN HỌC ĐẠI CƯƠNG Bài 10. Các cấu trúc lập trình trong C Nội dung 1. Cấu trúc

BỘ VĂN HÓA, THỂ THAO VÀ DU LỊCH TRƯỜNG ĐẠI HỌC VĂN HÓA TP. HỒ CHÍ MINH & QUY CHẾ HỌC VỤ Tài liệu dành cho sinh viê

Chöông 1 (tt.)

TRƯỜNG ĐẠI HỌC NAM CẦN THƠ KHOA LUẬT ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN XÃ HỘI HỌC PHÁP LUẬT (LƯU HÀNH NỘI BỘ) CẦN THƠ 2018

Huong dan su dung phan mem Quan ly chat luong cong trinh GXD

Microsoft Word - Huong dan su dung phan mem Evyhome.docx

Tâp Sách Chỉ Thị Chấp Thuận Học Sinh Sử Dụng Kỹ Thuật Nội Dung Định Nghĩa... 2 Chỉ Thị Tổng Quát... 2 Chấp Thuận Học Sinh Sử Dụng Dụng Cụ Điện Tử Cá N

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRUNG TÂM LUYỆN THI THỦ KHOA Hồ Chí Minh - Năm

Bài tập thực hành NNLT Visual Basic GV. Nguyễn Thị Hải Bình BÀI THỰC HÀNH ÔN TẬP 1. Sinh viên ĐỌC CẨN THẨN TẤT CẢ NỘI DUNG trong bài thực hành trước k

ESET Mobile Security

Easy UI Solution 3 Hướng dẫn sử dụng

MỘT SỐ GIẢI PHÁP NHẰM NÂNG CAO CHẤT LƯỢNG GIẢNG DẠY CÁC MÔN LÝ LUẬN CHÍNH TRỊ CỦA CÁC TRƯỜNG CAO ĐẲNG, ĐẠI HỌC Ở NƯỚC TA HIỆN NAY TS. Võ Minh Hùng Bộ

Trường Đại học Dân lập Văn Lang - Nội san Khoa học & Đào tạo, số 5, 11/2005 NHÓM HỌC TẬP SÁNG TẠO THS. NGUYỄN HỮU TRÍ Trong bài viết này tôi muốn chia

Phương pháp biểu diễn thuật toán Phương pháp biểu diễn thuật toán Bởi: Khoa CNTT ĐHSP KT Hưng Yên Khi chứng minh hoặc giải một bài toán trong toán học

Kế thừa

Microsoft Word - Tin hoc dai cuong 2015

Tạp chí KHOA HỌC ĐHSP TPHCM Số 54 năm 2014 PHƯƠNG PHÁP SỬ DỤNG TRÒ CHƠI TRONG DẠY HỌC NGUYỄN THỊ BÍCH HỒNG * TÓM TẮT Bài viết trình bày phương pháp sử

1.1. Ma trận chuẩn kiến thức, kĩ năng (Tin học 3, cuối năm)

Chương II - KIẾN TRÚC HỆ ĐIỀU HÀNH

HIỆP ĐỊNH GIỮA CHÍNH PHỦ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM VÀ CHÍNH QUYỀN KHU HÀNH CHÍNH ĐẶC BIỆT HỒNG KÔNG CỦA NƯỚC CỘNG HÒA NHÂN DÂN TRUNG HOA

Kế thừa và đa hình

Thực hành trên Rose Thực hành trên Rose Bởi: Đoàn Văn Ban Xây dựng biểu đồ thành phần + Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trư

Bài 1:

TÀI LIỆU HƯỚNG DẪN CÀI ĐẶT HƯỚNG DẪN CÀI ĐẶT VÀ KIỂM TRA ỨNG DỤNG QUẢN LÝ BÁN HÀNG

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Hãy chọn phương án đúng CÂU HỎI TRẮC NGHIỆM TIN HỌC 7 HK1 Câu 1: Bảng tính thường được dùng để: a. Tạo bảng điểm của lớp em b. Bảng theo dõi kết quả h

Xử lý ngoại lệ

HỘI THI TIN HỌC TRẺ TỈNH AN GIANG ĐỀ CHÍNH THỨC ĐỀ THI LÝ THUYẾT BẢNG A - KHỐI TIỂU HỌC Khóa ngày: Thời gian : 20 phút (không kể thời gian

Lỗi thường gặp ở Windows Lỗi thường gặp ở Windows Bởi: Vien CNTT DHQG Hanoi LỖI THƯỜNG GẶP Ở WINDOWS Khi hệ thống gặp bất ổn, hệ điều hành (HĐH) sẽ cố

Công ty CP công nghệ thẻ NACENCOMM HÓA ĐƠN ĐIỆN TỬ CA2 CÔNG TY CỔ PHẦN CÔNG NGHỆ THẺ NACENCOMM TÀI LIỆU NGHIỆP VỤ HÓA ĐƠN ĐIỆN TỬ CA2 Hà Nội 12/2017 1

50. Làm cách nào để người ta ngoan ngoãn bước vào trại tù mặc dù không biết trước ngày về? Đó là câu hỏi mà nhiều người không bị nếm mùi «học tập cải

Co s? d? li?u (Database)

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Ngày nay, khi công nghệ thông tin đã xâm nhập vào mọi lĩnh vực của xã hội, trong công tác giáo dục và đào tạo, công nghệ thô

SM-N9208 SM-N920C SM-N920CD SM-N920I Sách hướng dẫn sử dụng Vietnamese. 08/2015. Rev.1.0

2018 Nhận xét, phân tích, góp ý cho Chương trình môn Tin học trong Chương trình Giáo dục Phổ thông mới

Slide 1

Phân tích bài Tiếng nói của văn nghệ

Bài 1 Nội dung chính trong bài: Khám phá những công cụ vẽ cải tiến Lệnh Copy và Paste Motion Tìm hiểu tính năng nhập và xuất thành video cải tiến Sử d

Microsoft Word - Bai 7.1.docx

Bài thực hành 6 trang 106 SGK Tin học 10

Microsoft Word - PQLKSTL.DOC

1. PHI1004 Những nguyên lý cơ bản của Chủ nghĩa Mác Lênin 1 2 tín chỉ Học phần tiên quyết: Không Tóm tắt nội dung học phần: Học phần những nguyên lý c

Microsoft Word - bo_tien_xu_ly_trong_c.docx

Array, Indexer và Collection Array, Indexer và Collection Bởi: phamvanviet truonglapvy Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được

Chủ đề :

Chương trình dịch

Hướng dẫn sử dụng SSI Pro Trading dành cho MG

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 5. Kiểu dữ liệu và biểu thức trong C Nội dung 1. Các ki

Giáo án Âm nhạc 9 Nhạc lí: Giới thiệu về dịch giọng Tập đọc nhạc: Giọng pha trưởng - TĐN số 3 I. Mục tiêu: - Có khái niệm sơ bộ về dịch giọng, đó là s

CHƯƠNG 1

Microsoft Word - cau-truc-du-lieu-hang-doi.docx

Microsoft Word - su_dung_sqlite_voi_php.docx

(Tái bản lần thứ hai)

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

Nghị định số 159/2013/NĐ-CP ngày 12/11/2013 quy định xử phạt vi phạm hành chính trong hoạt động báo chí, xuất bản

HƯỚNG DẪN SỬ DỤNG WEBSITE FSHARE V2 Hươ ng dâ n sư du ng Fshare 2 1/31

PowerPoint Presentation

HƯỚNG DẪN CHUYỂN KHOẢN VÀ THANH TOÁN HÓA ĐƠN

LỌC ĐIỆN

HỌC VIỆN KỸ THUẬT QUÂN SỰ


Chương 1:

Chương trình dịch

Tài liệu Hướng dẫn sử dụng

Nhập môn lịch sử Đảng cộng sản Việt Nam Nhập môn lịch sử Đảng cộng sản Việt Nam Bởi: unknown Đối tượng nghiên cứu Đảng Cộng sản Việt Nam do Hồ Chí Min

Bia GV LDTE

HƯỚNG DẪN SỬ DỤNG PHẦN MỀM ebh NỘI DUNG I. Giới thiệu II. Hướng dẫn sử dụng phần mềm kê khai BHXH ebh Bắt đầu sử dụng chương trình...

Công cụ trong VB6 Công cụ trong VB6 Bởi: FPT Software Để tìm hiểu về các công cụ trong VB chúng ta sẽ đề cập tới Add-in Các công cụ trong add-in Trình

BÀI 4 GIAO TIẾP TRÊN MẠNG XÃ HỘI A. NỘI DUNG 1/ Thực trạng chung Trong khi mạng xã hội được xem là phương tiện giao tiếp rất tốt với mọi người thì nó

Bài 3 Tựa bài

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM NGHỆ THUẬT TRUNG ƯƠNG NGUYỄN THỊ PHƯƠNG NHUNG DẠY HỌC MÔN TRANG TRÍ CHO NGÀNH CAO ĐẲNG SƯ PHẠM TIỂU HỌC

Microsoft Word - Tom tat Luan van - Nguyen Thi Ngoc Quynh.doc

PHẦN LÝ THUYẾT Câu 1 : Trong Windows Explorer để đánh dấu chọn tất cả các đối tượng ta sử dụng? a. ấn Alt + Click chuột c. Tổ hợp phím Ctrl + A b. Ấn

Tải truyện Đóng Gói Gả Chồng (Trọng Sinh Trước Cửa Cục Dân Chính) | Chương 10 : Chương 10: Lời ân ái

Hướng dẫn sử dụng dịch vụ FTP

Microsoft Word - danh-sach-lien-ket-doi-trong-c.docx

Bản ghi:

Bài 1: Lập trình cơ sở Giúp học viên làm quen với công cụ lập trình Visual C++, thử nghiệm viết chương trình theo phong cách hướng hàm, qua đó nắm vững các kiến thức lập trình cơ sở như: 1) Phương pháp thể hiện thuật toán bằng các các cấu trúc điều kiện, vòng lặp 2) Cách sử dụng mảng, con trỏ, bộ nhớ động 3) Khai báo, thực hiện và sử dụng hàm; các phương pháp truyền tham số hàm. 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 quả được nhớ vào hai dãy số mới. Sử dụng mảng động để biểu diễn hai dãy số kết quả sao cho bộ nhớ được cấp phát động chỉ 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 dài của một dãy kết quả. 2. Viết chương trình minh họa cách sử dụng hàm trong câu 1 với hai trường hợ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 khởi tạo 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 qua bàn phím Hai dãy số kết quả được đưa ra màn hì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!) 1) Làm quen với Visual C++, tạo một dự án mới (New Project), đặt tên dự án (ví dụ SortApp ) và chọn Win32 Console Application 2) Viết hàm trên máy và lưu vào một 2 files riêng: Header file (ví dụ sort.h) chứa mã khai báo hàm và file nguồn (*.cpp) chứa mã thực hiện hàm. Bổ sung 2 files đó vào dự án. Biên dịch file 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 (compile error). 3) Viết chương trình minh họa trong file chính (ví dụ sortapp.cpp). Dịch toàn bộ dự án (Build), sửa các lỗi biên dịch (compile error), lỗi liên kết (link error) 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 (runtime error), tìm cách giải thích và sửa lỗi nếu có. 5) Mở menu Project Setting 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ện vòng lặp (for... hoặc while..., sử dụng phương pháp dị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ảng tĩ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. buổi thực hành. Báo cáo có thể viết tay hoặc in, nhưng các bản sao photocopy sẽ không được chấp nhận. Bài 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 3 files 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. 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 <iostream.h> [2] #include <conio.h> [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++] = a[i]; [17] else [18] chan[ic++] = a[i]; [19] ++i; [20] } [21] return sochan; [22] } [23] void print(int* a, int n) { [24] for (int i = 0; i < n; ++i) [25] cout << '\t' << a[i]; [26] } [27] void main() { [28] // mang tinh [29] int n = 10; [30] int as[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 << "\nday so ban dau:"; [34] print(as,n); [35] cout << "\nday so chan:"; [36] print(c,sochan); [37] cout << "\nday so le:"; [38] print(l,n-sochan); [39] delete [] c; delete [] l; [40] // mang dong [41] cout << "\ncho chieu dai day so:"; [42] cin >> n; [43] int *ad = new int[n]; [44] for (int i = 0; i < n; ++i) { [45] cout << "\nad[" << i << "]="; [46] cin >> ad[i]; [47] } [48] sochan = phanloai(ad,n,c,l); [49] cout << "\nday so ban dau:"; [50] print(ad,n); [51] cout << "\nday so chan:"; [52] print(c,sochan); [53] cout << "\nday so le:"; [54] print(l,n-sochan); [55] delete [] c; delete [] l; [56] cout << "\n 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 a[n] = {...} thay cho a[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?

Bài 2: Lập trình hướng đối tượng: Lớp và chồng toán tử 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 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. 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!) 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 (Build), tìm cách giải thích và sửa các lỗi. 4) Bổ sung một dự án mới Win32 Console Application vào trong Workspace đã có để viết chương trình minh họa. Bổ sung thư viện được tạo 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 (compile error), lỗi liên kết (link error) 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 tạo 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. buổi thực hành. Bài 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 files 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.

Bài 3: Dẫn xuất lớp và cơ chế đa xạ 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 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ực hiện các hệ thống điều khiển theo phương pháp sơ đồ khối theo bài giảng trên lớp. 2. Tự chọn một ví dụ mô phỏng và viết chương trình để minh họa cách sử dụng thư viện hàm này. 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ụ trên lớp. 2) Vẽ biểu đồ lớp và viết mã chương trình sẵn trên giấy (viết tay, không chấp nhận bản sao!) 1) Tạo một dự án thư viện mới. Khai báo và thực hiện mỗi lớp trong một file *.h và một file *.cpp. Bổ sung các file này vào dự án. Dịch thử dự án và sửa lỗi. 2) Bổ sung một dự án mới vào Workspace để viết chương trình minh họa cách mô phỏng một hệ thống sử dụng các lớp đã xây dựng. Sử dụng một mảng động có các phần tử là con trỏ để chứa các đối tượng (khối hàm) trong hệ thống. Bổ sung thư viện được tạo ra ở trên vào dự án mới. Dịch toàn bộ dự án mới này, sửa các lỗi và chạy thử chương trình. 3) Thí nghiệm với việc thay đổi quyền truy nhập (public, protected, private) của dữ liệu cũng như một số hàm thành viên ở lớp cơ sở và các lớp dẫn xuất, dịch lại lần lượt cả hai dự án để xem tác dụng. 4) Thí nghiệm với việc thay đổi thuộc tính virtual của một số hàm thành viên ở lớp cơ sở và các lớp dẫn xuất, dịch lại lần lượt cả hai dự án để xem tác dụng. 5) Trong chương trình minh họa, thử không dùng các biến con trỏ vào lớp cơ sở để tạo và lưu giữ địa chỉ các đối tượng, mà dùng biến tham chiếu hoặc biến trực tiếp thông thường và tìm hiểu các vấn đề gặp phải trong việc tạo cũng như quản lý và sử dụng các đối tượng. buổi thực hành. Báo cáo có thể viết tay hoặc in, nhưng các bản sao photocopy sẽ không được chấp nhận. Bài 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 files 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. 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.

Bài 4: Lập trình tổng quát Cho học viên luyện tập về phương pháp lập trình tổng quát, qua đó nắm vững các kỹ thuật như: 1) Khuôn mẫu hàm, khuôn mẫu lớp 2) Tổng quát hóa phép toán 3) Tổng quát hóa phương pháp truy nhập phần tử qua Iterator 1. Xây dựng các thuật toán sao chép (copy) và tìm kiếm phần tử cực trị (find) tổng quát. Bổ sungmột số khuôn mẫu lớp toán tử tiêu biểu (Greater, Less,...) để sử dụng với thuật toán tìm kiếm tổng quát. Viết chương trình minh họa như sau: - Khai báo 2 mảng tĩnh các số thực với giá trị đầu tùy ý. - Áp dụng thuật toán sao chép để sao chép từ mảng 1 sang mảng 2 - Áp dụng thuật toán tìm kiếm để tìm phần tử lớn nhất/nhỏ nhất trong mảng 1 - Các kết quả quan trọng được in ra màn hình 2. Tổng quát hóa lớp Vector trong bài thí nghiệm 2 thành một khuôn mẫu lớp. Bổ sung hai hàm thành viên begin() và end() để có thể áp dụng các thuật toán tổng quát. Sử dụng thuật toán sao chép tổng quát trong câu 1 để thực hiện hàm tạo bản sao và hàm toán tử gán. Bổ sung các phép toán cộng và trừ vector là các khuôn mẫu hàm toán tử bên ngoài (có thể áp dụng phương pháp thuật toán tổng quát). Viết chương trình minh họa cách sử dụng kết hợp với các thuật toán tổng quát trong câu 1 như sau: - Khai báo một mảng tĩnh và một biến Vector kiểu số thực và có số phần tử như nhau. Các phần tử của mảng tĩnh được đặt giá trị đầu tùy ý. - Áp dụng thuật toán sao chép để sao chép giá trị các phần tử từ mảng sang Vector - Áp dụng thuật toán tìm kiếm để tìm phần tử lớn nhất/nhỏ nhất của Vector - Các kết quả quan trọng được đưa ra màn hì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!) 1) Thực hiện các bước như trong phần 2.1 yêu cầu. Các thuật toán tổng quát và các khuôn mẫu lớp toán tử được lưu trong một file riêng algo.h. Khuôn mẫu lớp Vector được lưu riêng trong file vector.h. Các chương trình thử nghiệm có tên lần lượt là ct1.cpp và ct2.cpp. 2) Ghi chép các bước thực hiện để làm báo cáo. buổi thực hành. Báo cáo có thể viết tay hoặc in, nhưng các bản sao photocopy sẽ không được chấp nhận. Bài 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 files 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.1 và 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.