1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Phương pháp lập trình hướng đối tượng: Nhìn lại lập trình cơ bản qua lăng kính Lập trình hướng đối tượng - Lê Xuân Định (tt)

36 54 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 2,08 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phần tiếp theo bài giảng Phương pháp lập trình hướng đối tượng: Nhìn lại lập trình cơ bản qua lăng kính Lập trình hướng đối tượng cung cấp cho người học các kiến thức về Hàm - Đơn vị xử lý dữ liệu. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

GV: Lê Xuân Định

Trang 2

L.X.Định CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 3

 M ỗi thao tác xử lý dữ liệu được thực hiện bởi 1 hàm

 Tương đương với 1 động từ (1) trong ngôn ng ữ tự nhiên

 V ới mỗi hàm, phải xác định những dữ liệu được xử lý

( đầu vào) và những kết quả xử lý (đầu ra)

 Ví d ụ:

 Tính t ổng tất cả các ước số của một số nguyên cho trước

 Cho m ột mảng các số thập phân, tìm số lớn nhất trong những

ph ần tử mảng nhỏ hơn một số nguyên cho trước

 Ki ểm tra xem tổng các số trong một mảng các số nguyên có phải

là m ột số nguyên tố hay không

_

Trang 4

L.X.Định 4

 M ỗi thao tác xử lý dữ liệu được thực hiện bởi 1 hàm

 Tương đương với 1 động từ (1) trong ngôn ng ữ tự nhiên

 V ới mỗi hàm, phải xác định những dữ liệu được xử lý

( đầu vào ) và nh ững kết quả xử lý ( đầu ra )

 Ví d ụ:

Tính t ổng ất cả các ước số của một s ố nguyên cho trước

 Cho m ột mảng các số thập phân , tìm s ố lớn nhất trong nh ững

ph ần tử mảng nhỏ hơn một số nguyên cho trước

Ki ểm tra xem t ổng các số trong m ột mảng các số nguyên

ph ải là một số nguyên tố hay không

_

1) Nếu hàm có giá trị trả về, ta thường đặt tên hàm là danh/tính từ tương ứng CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 5

Chương trình là một cuộc trò chuy ện giữa

các hàm

 B ắt đầu từ hàm main():

 main() chia toàn chương trình thành các tác vụ, và

 main() giao vi ệc (tác vụ) cho các hàm con

 M ỗi hàm con lại nói chuyện với các hàm khác

để hoàn thành công việc

Giao ti ếp giữa các hàm: Gọi tên, truyền đối

s ố, trả về kết quả

Trang 6

void nhap(∎) float tinhDTK(∎)

void scanf( ) void printf( )

Trang 7

Chương trình là một cuộc trò chuy ện giữa

Trang 8

L.X.Định 9

các hàm G ồm nhiều cuộc đối thoại

void main()

float tinhDTK(∎)

main() - tinhDTK()

• main() g ọi hàm tinhDTK():

• main() truy ền tham số

Này tinhDTK, hãy thực hiện

với đối số <giá trị của a>

Kết quả là <giá trị của dtk>

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 9

Chương trình là một cuộc trò chuy ện giữa

các hàm G ồm nhiều cuộc đối thoại

float tinhDTK(∎) return dtk; }

Trang 10

}

/// Hàm tính điểm tổng kết theo công thức:

/// điểm TK = (điểm LT*6 + điểm TH*4) / 10 /// Input: struct chứa điểm LT và TH; Output: điểm TK

}

/// Hàm tính điểm tổng kết theo công thức:

/// điểm TK = (điểm LT*6 + điểm TH*4) / 10 /// Input: struct chứa điểm LT và TH; Output: điểm TK

float tinhDTK(SinhVien sv);

Giao di ện Cài đặt

S ử dụng

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 11

 T ập hợp các giao diện và đặc tả của một hệ

th ống tạo nên bộ Giao di ện Lập trình (API) của

Trang 13

 Ta đứng trên quan điểm sử dụng hàm f() khi

f() là m ột hàm có s ẵn , VD: printf() trong thư viện stdio; Hoặc

 Trách nhi ệm thiết kế & cài đặt hàm là của người khác,

VD: nhà phát tri ển thư viện, thành viên khác trong nhóm

Khi đó

Bên s ử dụng là bên ngoài!

 Coi ph ần bên trong hàm tức phần cài đặt là hộp đen

Nguyên m ẫu hàm:

Giao di ện Cài đặt

S ử dụng

Trang 14

L.X.Định 15

An toàn!!!

Bên s ử dụng là bên ngoài!

 Coi ph ần bên trong hàm tức phần cài đặt là hộp đen

 Chỉ cần biết hàm này làm cái gì (qua đặc tả), không nên quan tâm nó

làm th ế nào ở bên trong

 Tuân thủ quy tắc “hộp đen”:

Dù th ấy được c ũng coi như không thấy !!!

(Chớ nên phụ thuộc vào nó!)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 15

Tương ứng 1-1

Bên s ử dụng là bên ngoài!

 Coi ph ần bên trong hàm tức phần cài đặt là hộp đen

 Chỉ cần biết hàm này làm cái gì (qua đặc tả), không nên quan tâm nó

làm th ế nào ở bên trong

 Ph ải g ọi hàm đúng theo giao di ện , t ức nguyên mẫu hàm

Cũng như dùng biến:

 Muốn dùng hàm (gọi hàm) thì phải khai báo nguyên m ẫu hàm;

 Rồi gọi đúng tên hàm và truyền tham số có kiểu tương thích với nguyên mẫu hàm đã khai báo

Nguyên m ẫu hàm:

Giao di ện Cài đặt

S ử dụng

Trang 16

L.X.Định 17

Bên s ử dụng là bên ngoài!

 Coi ph ần bên trong hàm tức phần cài đặt là hộp đen

 Chỉ cần biết hàm này làm cái gì (qua đặc tả), không nên quan tâm nó

làm th ế nào ở bên trong

 Ph ải g ọi hàm đúng theo giao di ện , t ức nguyên mẫu hàm

Cũng như dùng biến,

 Muốn dùng hàm (gọi hàm) thì phải khai báo nguyên m ẫu hàm;

 Rồi gọi đúng tên hàm và truyền tham số có kiểu tương thích với nguyên mẫu hàm đã khai báo

 V ề việc “khai báo nguyên mẫu hàm”:

 Các thư viện thường gom sẵn các nguyên mẫu hàm trong file header

#include “myLib.h” ⇔ khai báo t ất cả các hàm trong “myLib.h”

 Nếu phần cài đặt hàm đặt trước lời gọi hàm thì không cần khai báo lại

vì ngay trên phần cài đặt hàm đã có nguyên mẫu hàm

Nguyên m ẫu hàm:

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 17

Tham s ố trong Giao diện Hàm

Trong C/C++ có 2 lo ại tham số (và 2 loại đối số tương ứng)

 Tr ị (tham trị & đối trị): Truyền và nhận giá tr ị dữ liệu

 Bên ngoài truy ền giá trị vào qua đối trị

VD1: s=cong(12,21); //c ộng 12 với 21, lưu vào s

VD2: s=cong(s,33); //c ộng giá tr ị của s với 33, lưu

vào s

 Giá tr ị truyền vào được copy & lưu vào biến tham số

tương ứng bên trong

VD: int cong(int x, int y) { /* bi ến x, y lưu giá tr ị đối số */ }

 Bi ến (tham biến & đối biến): Truyền và nhận bi ến DL

Trang 18

float z = (float)x / y; return z;

pass(copy)

return 3.3333

Trang 19

Tham s ố trong Giao diện Hàm

Trong C/C++ có 2 lo ại tham số (và 2 loại đối số tương ứng)

 Tr ị (tham trị & đối trị): Truyền và nhận giá tr ị dữ liệu

 Bi ến (tham biến & đối biến): Truyền và nhận bi ến DL

Bên ngoài truy ền biến (chứa giá trị cần truyền) vào qua đối biến,

và c ũng nh ận lại giá trị qua biến đó

VD1: hoanvi(a,b); //hoán v ị giá trị lưu trong a và b

VD2: hoanvi(a,10); //l ỗi cú pháp! (10 ko phải biến)

 V ới bên trong, bi ến truyền vào được sử dụng trực tiếp thông

qua tên tham bi ến tương ứng

VD: void hoanvi(int & x, int & y) {/* bi ến x,y chính là 2 bi ến bên ngoài với tên khác */}

Đặc biệt: Tham số m ảng mặc định là tham biến

 Không thêm “&” vào trước tham số mảng

Trang 21

D ữ liệu Đầu ra của Hàm

return s; } //trả về giá tr ị lưu trong biến s

 Người gọi hàm nhận giá trị trả về và sử dụng

VD1: int s=cong(12,21); //lưu kết quả vào biến s

VD2: xuat(cong(12,21),”Tong”);//truyền kết quả vào hàm xuat()

 Tham bi ến

 Nếu có nhiều giá trị cần phải trả về thì chúng ta phải lưu chúng vào trong các tham biến

Trang 22

/// b = a + b

void congDon(int a, int & b);

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 23

 Hãy s ử dụng các hàm sau:

int Thương(int a, int b); /// tr ả về phần nguyên [b/a]

void Dư(int &a, int &b, int &c); /// c = a - [a/b]*b

int Nh ập(); /// tr ả về số nguyên được nhập

void Xu ấtUSCLN(int a, int b, int c);

void Xu ấtTuầnThứ(int thu, int tuan);

 Vi ết CTrình tính USCLN của 2 số

 Nh ập từ Khán giả/Random, xuất ra Bảng/Projector

 Tính b ằng Tay, sau nâng cấp lên bằng Máy

Trang 25

 Hãy s ử dụng các hàm sau:

int Thương(int a, int b); /// tr ả về phần nguyên [b/a]

void Dư(int &a, int &b, int &c); /// c = a - [a/b]*b

int Nh ập(); /// tr ả về số nguyên được nhập

void Xu ấtUSCLN(int a, int b, int c);

void Xu ấtTuầnThứ(int thu, int tuan);

 Vi ết CTrình cho nhập một ngày trong tháng và nhập

tháng này b ắt đầu từ Thứ mấy, xong hiển thị cho biết

ngày này là Th ứ mấy trong Tuần thứ mấy trong tháng

Trang 26

L.X.Định CuuDuongThanCong.com https://fb.com/tailieudientucntt 30

Trang 27

 Giao di ện (nguyên mẫu hàm)

ki ểu_trả_về tên_hàm ( danh_sách_khai_báo_tham_s ố )

float thuong (int a, int b);

 S ử dụng (lời gọi hàm)

bi ến_trả_về = tên_hàm ( danh_sách_đối_số );

 int x = 1;

float q = thuong( x , 15 );

// Đọc máy móc: g ọi hàm thuong() với 2 đối số (giá

tr ị của x và 15), rồi gán giá trị trả về vào biến q

// Đọc tự nhiên: lưu kết quả tính thương của x và 15

vào bi ến q

Trang 28

L.X.Định 32

 Giao di ện (nguyên mẫu hàm)

ki ểu_trả_về tên_hàm ( danh_sách_khai_báo_tham_s ố )

 VD: int f( char ch, float a [] ) // đọc máy móc: Hàm f nh ận 2 tham số (1 ký tự ch

Trang 29

 Giao di ện (nguyên mẫu hàm)

ki ểu_trả_về tên_hàm ( danh_sách_khai_báo_tham_s ố )

VD: float thuong (int a, int b)

Khai báo tham s ố := khai báo bi ến

 S ử dụng (lời gọi hàm)

bi ến_trả_về = tên_hàm ( danh_sách_đối_số );

VD: float q = thuong (x,15);

Truy ền đối số := truyền giá tr ị cho biến

 Giá tr ị vào/ra có kiểu tương ứng với khai báo trong

giao di ện

Tương ứng 1-1

Trang 30

L.X.Định 34

Giao di ện thì phải có ki ểu , s ử dụng thì không ghi kiểu,

nhưng giá-trị vào/ra phải có kiểu tương ứng với khai báo

trong giao di ện

 Ví d ụ:

 Giao di ện: float thuong( int a, int b)

S ử dụng: q = thuong(x,y);

 Các bi ến q,x,y phải có kiểu: float q; int x,y;

 Giao di ện: float thuong( int a, int b)

S ử dụng: q = thuong(x,1.2);

 L ỗi cú pháp: 1.2 không thuộc kiểu int

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 31

Giao di ện thì phải có ki ểu , s ử dụng thì không ghi kiểu,

nhưng giá-trị vào/ra phải có kiểu tương ứng với khai báo

trong giao di ện

 Ví d ụ:

 Giao di ện: float thuong(a, b)

 L ỗi cú pháp: a, b thiếu kiểu trong nguyên mẫu hàm

 S ử dụng: float q = thuong( int x=2, int y=3)

 L ỗi cú pháp: ghi kiểu trong lời gọi hàm

Trang 32

L.X.Định 36

Giao di ện thì phải có ki ểu , s ử dụng thì không ghi kiểu,

nhưng giá-trị vào/ra phải có kiểu tương ứng với khai báo

trong giao di ện

 Ví d ụ:

 Giao di ện: void thuong( int a, int b)

S ử dụng: printf(“%f”, thuong(2,3));

 L ỗi cú pháp: sử dụng giá trị trả về không được khai báo

 Giao di ện: float thuong( int a, int b)

S ử dụng: thuong(2,3);

 L ỗi ngữ nghĩa: b ỏ mất giá trị trả về

Có giá tr ị trả về thì

s ử dụng không b ắt đầu bằng tên hàm

Không có giá tr ị trả

v ề thì sử dụng b ắt đầu bằng tên hàm

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 33

 Các c ấp phụ thuộc: Biến  Hàm

 Khai báo (giao di ện) & sử dụng phải tương thích với nhau

Tóm t ắt: Giao diện & Sử dụng

Khai báo (giao di ện) S ử dụng

Bi ến

Kiểu, tên biến Đọc/ghi giá trị có kiểu tương ứng:

• Khi đọc phải có giá trị xác định

Truy ền tham số cho hàm:

• Gián tiếp đọc/ghi giá trị

Trang 34

L.X.Định 39

Hãy khai báo nguyên m ẫu hàm cho các hàm sau (trước hàm main)

và s ử dụng chúng (1 lời g ọi hàm tương ứng với mỗi hàm) trong hàm

main

1. Ki ểm tra xem một số nguyên có phải là số chẵn hay không

2. Ki ểm tra xem một số nguyên này có chia hết cho một số nguyên kia hay không

3. Tính thương của hai số nguyên (chỉ lấy phần nguyên)

Trang 35

Hãy khai báo nguyên m ẫu hàm (tiếp theo)

Hãy vi ết các khái báo hàm trong file MyLib.h để chương trình sau

d ịch được:

#include “MyLib.h”

void main(){

float a[100]; int x;

for(int i=0; i<10; i++){

Trang 36

Giao diện (lập trình) (Programming) interface Application programming

interface (API) là 1 b ộ giao diện

Nguyên mẫu hàm (Function) prototype Còn g ọi “function signature”,

“function type”

Gọi hàm Function call

Phần cài đặt Implementation

Đặc tả Specification

Hộp đen, hộp xám Black box, gray box

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ngày đăng: 11/01/2020, 19:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm