PowerPoint Presentation TRƯỜNG ĐẠI HỌC THỦY LỢI Khoa Cơ khí Bộ môn Kỹ thuật Cơ điện tử Mục tiêu môn học Các chương trình, ứng dụng trên các thiết bị, máy tính hoạt động như thế nào? Làm sao để tạo một[.]
Trang 1TRƯỜNG ĐẠI HỌC THỦY LỢI
Khoa Cơ khí
Bộ môn: Kỹ thuật Cơ điện tử
Trang 2- Làm quen với ngôn ngữ lập trình C++
- Thực hành lập trình trên trình biên dịch DEV C++
Trang 3Nội dung môn học
Chương 5 Lớp và Lập trình hướng đối tượng
Kiểm tra và đánh giá kết quả:
Trang 5Chương 1: Mở đầu
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
1.1 Giới thiệu về ngôn ngữ lập trình C/C++
Ngôn ngữ C
Tác giả: Dennis Ritchie.
Ra đời trong những năm 1970, gắn
liền với sự phát triển HĐH Unix.
Là một trong những ngôn ngữ phổ
biến nhất
Ngôn ngữ C++
Tác giả: Bjarne Stroustrup.
Ra đời năm 1979 bằng việc mở rộng ngôn
ngữ C.
Bổ sung các tính năng mới so với C: lập
trình hướng đối tượng (OOP), lập trình
tổng quát (template), một số tính năng giúp
cho lập trình linh hoạt
Trang 8Từ khóa
Là những danh từ riêng của ngôn ngữ lập trình được định nghĩa trước với ý nghĩa hoàn toàn xác định Từ khóa thường được dung để khai báo biến định nghĩa các kiểu dữ liệu, định nghĩa các toán tử, các hàm và viết các câu lệnh,…
Trang 9Chương 1: Mở đầu
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
1.2 Cấu trúc một chương trình C/C++
• Dòng 1: khai báo thư viện
iostream cho việc nhập xuất.
• Dòng 2: sử dụng thư viện chuẩn
• Dòng 3: Hàm chính
• Dòng 5: Khai báo biến x
• Dòng 6: Nhập dữ liệu từ bàn phím cho biến x
• Dòng 7: Xuất kết quả
• Dòng 8: Hàm trả về 0
Chương trình: Nhập 𝒙 và in ra kết quả 𝒙𝟐
Trang 10Chương 1: Mở đầu
1.3 Vào ra trong C++
Để in dữ liệu ra màn hình và nhập dữ liệu từ bàn phím, trong c++vẫn có thể dùng các hàm printf và scanf, ngoài ra C++ dùng toán tửxuất để đưa giá trị biểu thức ra màn hình, toán tử nhập để nhập giá trị
số (nguyên, thực) từ bàn phím và gán cho các biến
cout<<biểu thức<<…<<biểu thức;
cin>>biến>>…>>biến;
Nhập dữ liệu là số:
Nhập dữ liệu là chuỗi/ xâu ký tự: sử dụng thư viện string để khai báo
string A; getline(cin, A);
Trang 11Chương 1: Mở đầu
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
- Kiểu dữ liệu giống như là các thùng chứa, vật dụng để đựng
đồ dùng của chúng ta.
- Mỗi loại dữ liệu có kích thước khác nhau và tương ứng với miền giá trị và loại giá trị mà nó có thể thực hiện VD: Kiểu int chiếm 2 byte bộ nhớ và để chứa các số nguyên,…
Các kiểu dữ liệu cơ bản
Bao gồm:
- Các kiểu số nguyên
- Các kiểu số thực
1.4 Kiểu dữ liệu
Trang 12Chương 1: Mở đầu
1.5 Biến & hằng
Biến chứa giá trị, có thể thay đổi trong khi chạy
Cần khai báo trước khi dùng và phải có kiểu dữ liệu
Phạm vi sử dụng: Toàn cục/ nội bộ (global/local)
Khai báo biến: <kiểu dữ liệu ><danh sách biến> Ví dụ:
Biến có thể được khởi tạo giá trị khi khai báo:
Hằng
Giống như biến nhưng giá trị nó không thay đổi trong quá trình chạy
Sử dụng macro để khai báo hằng
Trang 13Chương 1: Mở đầu
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
1.5 Toán tử
Cơ bản: +, - , *, /
Sinh viên giải ví dụ sau:
Trang 15Chương 1: Mở đầu
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Toán tử bit
Bao gồm : &, |, ^, ~, >>, <<
Chỉ áp dụng với kiểu số nguyên
Chú ý tránh nhầm lần với các toán tử logic
Trang 17Chương 2: Cấu trúc điều khiển
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
2.3 Các cấu trúc lặp
2.4 Lệnh rẽ nhánh và nhảy
Trang 18Chương 2: Cấu trúc điều khiển
2.1 Cấu trúc điều kiện rẽ nhánh if, if…else
}
Trang 19Sinh viên viết, phân tích và in kết quả của các chương trình sau:
Trang 20Chương 2: Cấu trúc điều khiển
2.2 Cấu trúc lựa chọn switch … case
}
Trang 21Chương 2: Cấu trúc điều khiển
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Ví dụ 2: Viết chương trình nhập vào một số tự nhiên,
xuất ra màn hình tên của tháng trong năm.
Ví dụ 3: Viết chương trình nhập vào một số tự nhiên,
xuất ra màn hình số ngày của tháng đó.
Trang 22Chương 2: Cấu trúc điều khiển
2.3 Các cấu trúc lặp
- Vòng lặp for
- Vòng lặp while
- Vòng lặp do … while
Trang 23Chương 2: Cấu trúc điều khiển
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Trang 24Chương 2: Cấu trúc điều khiển
Ví dụ:
Trang 25Chương 2: Cấu trúc điều khiển
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Cú pháp
while (<điều kiện>) {<công việc>}
Điểm chính của vòng lặp
while là nó có thể không chạy.
Bởi vì khi kiểm tra điều kiện
và kết quả là false, phần thân
vòng lặp được bỏ qua và lệnh
đầu tiên ngay sau vòng lặp sẽ
được thực thi.
Trang 26Chương 2: Cấu trúc điều khiển
Trang 27Chương 2: Cấu trúc điều khiển
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Trang 28Chương 2: Cấu trúc điều khiển
Lệnh Continue
Lệnh continue trong C++
làm việc khá giống với lệnh
break Thay vì bắt buộc kết
thúc, nó bắt buộc vòng lặp
tiếp theo diễn ra, bỏ qua bất
kỳ đoạn code nào ở giữa
Trang 30Ví dụ: trong thư viện <math.h>
- Hàm sin(x): Là chuỗi các lệnh tính toán để tính giá trị sin của một góc x được truyền vào, góc x có đơn vị tính là radian; hàm sin(x) trả về một số thực
- Hàm sqrt(x): Là chuỗi các lệnh tính toán để tính căn bậc 2 của đại lượng x được truyền vào, đại lượng x có đơn vị tính là một
số thực (float hay double); hàm sqrt trả về một số thực
Trang 32Chương 3: HÀM
Lý do sử dụng Hàm?
Tránh lặp lại mã nguồn
Sử dụng lại một đơn vị tính toán mà không phải viết lại
Giúp cho việc phát triển giải thuật, việc tổ chức chương trình dễdàng
Trang 34Chương 3: HÀM
Trang 36- Data type: kiểu trả về của hàm Đồng thời là kiểu dữ liệu mà hàm trả về.
Nếu hàm không trả về thì kiểu trả về là void.
- Function name: tên hàm, có sẵn hoặc ta tự đặt.
- Data 1, data 2,…Parameter 1, …: kiểu dữ liệu và danh sách các tham
số Một hàm có thể có hoặc không có tham số, tham số đại diện cho dữ liệu mà hàm sẽ nhận để thao tác.
- Statements: tập hợp các câu lệnh xác định nhiệm vụ mà hàm sẽ thực
hiện.
Trang 37Ví dụ: hàm trả về giá trị lớn nhất trong hai giá trị a, b:
int max (int a, int b){
if (a>b) return a;
return b;
}
Khai báo hàm như sau:
int max (int a, int b);
Hoặc: int max (int , int );
Trong c++ kiểu tham số quan trọng hơn tên tham số của hàm trongkhai báo hàm
Trang 39Chương 3: HÀM
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
3.3 Truyền tham số cho hàm
Để chuyển thông tin vào một hàm để tính toán, cần biết kháiniệm về tham số và đối số
Tham số (parameters): là các biến được sử dụng trong một hàm
mà giá trị của biến đó được cung cấp bởi lời gọi hàm Các tham sốđược đặt bên trong dấu ngoặc đơn, cú pháp giống khai báo biến,cách nhau bằng dấu phẩy
Đối số: các giá trị truyền vào hàm qua lời gọi hàm, cách nhau bởi
dấu phẩy Số lượng đối số tương ứng số lượng tham số của hàm
Trang 40Chương 3: HÀM
3.3 Truyền tham số cho hàm
Ví dụ tham số và đối số
10: là đối số của thông số a
15: là đối số của thông số b
Trang 41Chương 3: HÀM
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
3.3 Truyền tham số cho hàm
Có hai kiểu truyền tham số
Truyền tham số bằng trị
Được sử dụng khi KHÔNG CHO PHÉP hàm được gọi thay đổi giá trị đối
Truyền tham số bằng con trỏ, truyền bằng địa chỉ
Được sử khi MUỐN CHO PHÉP hàm được gọi thay đổi giá trị đối Hoặc Khi không muốn bộ thực thi tốn nhiều thời gian cho việc chuẩn bị tham số của hàm được gọi (nghĩa là COPY giá trị của đối số vào thông số), như truyền một mảng nhiều phần tử vào hàm được gọi
Trang 42Chương 3: HÀM
3.3 Truyền tham số cho hàm
Dấu sao (*) chỉ ra thông số nào sẽ được truyền bằng địa chỉ
a và b sẽ được truyền bằng địa chỉ
a và b sẽ được truyền bằng trị
Trang 43Chương 3: HÀM
3.3 Truyền tham số cho hàm
Lời gọi hàm: truyền bằng trị
Hàm swap(int a, int b) hoán đổi giá trị của 2 biến a và b
Trang 44Chương 3: HÀM
Tham số của hàm là biến tạm thời, tạo ra khi gọi và huỷ khi hàmkết thúc
Gán giá trị cho tham số không ảnh hưởng tới biến nơi gọi
Hàm được gọi là đệ quy nếu bên trong thân hàm có một lời gọiđến chính nó
Luôn luôn phải có điều kiện dừng – “điểm neo” Khi đặt tới điểmneo này, hàm sẽ không gọi chính nó nữa
VD: Viết hàm tính n! với n được nhập từ bàn phím
Trang 45Chương 3: HÀM
3.4 Qúa tải Hàm
Định nghĩa chồng hàm (overloading): Định nghĩa chồng hàm ( hay
còn gọi là sự tải bội ) các hàm là dung cùng một tên để định nghĩa cáchàm khác nhau Đây là một mở rộng rất có ý nghĩa của C++
Trong C và các ngôn ngữ khác như pascal, foxpro,… thì mỗi hàm phải có một tên riêng biệt hạn chế lớn vì dùng nhiều hàm
Nhờ định nghĩa chồng hàm, C++ có thể dùng chung một tên cho cả 3 hàm
Trang 46Chương 4: Con trỏ và mảng
4.1 Khai báo mảng, con trỏ
4.2 Truy xuất đến các phần tử trong
mảng, thao tác trên mảng
4.3 Mảng nhiều chiều
Trang 47Chương 4: Con trỏ và mảng
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
nó lưu trữ một tập hợp tuần tự các phần tử cùng kiểu với độ dài cốđịnh Mảng thường được sử dụng để lưu trữ tập hợp dữ liệu, nhưng
nó cũng hữu dụng khi dùng để lưu trữ một tập hợp biến có cùngkiểu
4.1 Khai báo mảng, con trỏ
Kiểu dữ liệu Tên mảng [Kích cỡ mảng]
Trang 48Chương 4: Con trỏ và mảng
Nếu bạn không khai báo kích cỡ mảng thì mảng vừa đủ lớn để giữcác giá trị được khởi tạo
int balance[] = {15, 20, 25, 30, 35};
Chỉ số trong mảng
Trang 49Chương 4: Con trỏ và mảng
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Một mảng được truy cập bởi cách đánh chỉ số trong tên của mảng
int hocphi = hocphik60[55];
Câu lệnh trên lấy phần tử thứ 56 của mảng và gán giá trị này cho biến hocphi
4.2 Truy xuất đến các phần tử trong mảng, thao tác trên mảng
Trang 50Chương 4: Con trỏ và mảng
Mảng là một phần rất quan trọng trong ngôn ngữ C/C++ Dưới đây lànhững định nghĩa quan trọng liên quan đến một mảng
Mảng đa chiều trong C/C++ C/C++ hỗ trợ các mảng đa chiều Mẫu đơn giản nhất của mảng này là mảng hai chiều
Con trỏ tới một mảng trong
C/C++
Bạn có thể trỏ tới phần tử đầu tiên của mảng một cách đơn giản chỉ bởi xác định tên mảng đó, chứ không phải một chỉ số
Truyền mảng tới hàm như là
tham số trong C/C++
Bạn có thể truyền tới hàm một điểm trỏ chỉ tới một mảng bởi xác định tên mảng chứ không phải là một chỉ số
Trả về mảng từ hàm trong
C/C++
C/C++ cho phép một hàm có thể trả về một mảng
Trang 51Chương 4: Con trỏ và mảng
C++ hỗ trợ các mảng đa chiều Dưới đây là mẫu chung
của một khai báo mảng đa chiều
Trang 52Chương 4: Con trỏ và mảng
Xét ví dụ sau đây: Ta khai báo mảng 2 chiều với 3 hàng và 4 cột
int a[ 3 ][ 4 ] = {
Trang 53Chương 4: Con trỏ và mảng
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Một con trỏ là một biến mà trong đó giá trị của nó là địa chỉ của biếnkhác Ví dụ như địa chỉ của vùng nhớ Giống như các biến và hằng số,bạn phải khai báo con trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất
kì địa chỉ của biến nào
Khai báo con trỏ
int *sv; // tro toi mot gia tri nguyen
double *nv; // tro toi mot gia tri
double float *luong; // tro toi mot gia tri
float char *ten // tro toi mot ky tu
Trang 54Chương 4: Con trỏ và mảng
Khai báo con trỏ
Cú pháp khai báo: <type> * <pointer name>
Sử dụng con trỏ trong C++
- Định nghĩa biến con trỏ
- Gán địa chỉ của biến đến một con trỏ
- Truy cập các giá trị biến địa chỉ trong biến con trỏ
Trang 55Chương 5: Lớp và lập trình hướng đối tượng
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
5.1 Khái niệm lớp về lớp
5.2 Khai báo và sử dụng lớp
5.3 Phạm vi truy xuất
5.4 Hàm tạo, hàm hủy và các vấn đề liên quan
5.5 Một số chương trình minh họa về lập trình
hướng đối tượng
Trang 56Chương 5: Lớp và lập trình hướng đối tượng
Đặt vấn đề:
Lớp (Class) là khái niệm trung tâm của lập trình hướng đối tượng, nó là sự
mở rộng của các khái niệm cấu trúc (struct) của C và bản ghi (record) của pascal
Trang 57Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Lớp (Class) có thể coi là bản thiết kế của các đối tượng (Object) Nó
là một kiểu dữ liệu do người dùng định nghĩa, chứa các thành viên
dữ liệu và các hàm thành viên của riêng nó
Ví dụ:
5.1 Khái niệm lớp về lớp
Chương 5: Lớp và lập trình hướng đối tượng
Mỗi sinh viên đều có thuộc tính chung là: mã sinh viên, mã sinh viên, tên, tuổi, quê quán, điểm toán, điểm lý, điểm hoá, đi, đứng, ngồi, học tập, …
Mỗi sinh viên là một lớp (Class)
Lớp sinhvien sẽ có các thành viên là: mã sinh viên, tên, tuổi,
quê quán, điểm toán, điểm lý, điểm hoá, … đi, đứng, ngồi, học tập,
…
Trang 58Chương 4: Con trỏ và mảng
Trong C++, để định nghĩa một lớp ta bắt đầu bằng từ khóa class, tiếp theo đó là tên của lớp và phần thân lớp được bao bởi cặp dấu {} Kết thúc lớp bằng dấu ;
5.2 Khai báo và sử dụng lớp
Lớp được định nghĩa theo mẫu:
Class Tên_lớp{
//khai báo các thuộc tính (peroperties)//khai báo các phương thức (methods)};
Trang 59Chương 4: Con trỏ và mảng
Bộ môn CĐT – Khoa Cơ Khí - ĐHTL
Trong ví dụ trên: Lớp sinh viên sẽ có:
Thuộc tính (Attribute) là: mã sinh viên, tên, tuổi, quê quán,
điểm toán, điểm lý, điểm hoá, …
Hành vi (Trong C++ sẽ gọi là phương thức – Method): đi, đứng, ngồi, học tập, …
5.2 Khai báo và sử dụng lớp
Trang 60Chương 4: Con trỏ và mảng
Khai báo đối tượng:
Một lớp (sau khi định nghĩa) có thể được xem như một kiểu đối tượng và có thể dùng để khai báo các biến, mảng đối tượng
5.2 Khai báo và sử dụng lớp
Trong lập trình hướng đối tượng, các đối tượng (Object) là một thực thể trừu tượng của một sự vật trong thế giới thực, được con người mô hình hóa, ghi lại những tính chất và hành vi, để tạo nên thuộc tính (Attribute) và phương thức (Method) của đối tượng (Object).
Khi một lớp (Class) được định nghĩa, chỉ có đặc tả cho đối tượng được xác định Do đó các đối tượng sẽ không được khởi tạo, nghĩa là không có bộ nhớ hoặc lưu trữ được phân bổ cho các đối tượng thuộc lớp đó.
Để sử dụng dữ liệu và các hàm truy cập được xác định trong lớp, bạn cần khai báo các đối tượng.
Lưu ý:
Trang 6123
Trang 62Chương 4: Con trỏ và mảng