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

Bài giảng Kỹ thuật lập trình cơ bản: Chương 4 – Trần Minh Thái

46 7 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

Tiêu đề Hàm Con
Tác giả Trần Minh Thái
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Bài Giảng
Định dạng
Số trang 46
Dung lượng 215,12 KB

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

Nội dung

Chương 4 trình bày về lập trình C bằng phương pháp hàm. Các nội dung được trình bày trong chương này gồm có: Phương pháp xây dựng hàm; khai báo hàm, gọi hàm; tầm vực biến; tham số là tham trị, tham biến;... Mời các bạn cùng tham khảo.

Trang 2

đã được khai báo

Gọi thực hiện các hàm theo yêu cầu của bài toán

Trang 3

Xét chương trình nhập vào số nguyên dương n,

Trang 4

void main()

{ int n;

cout<<"Nhap so nguyen duong: ";

cin>>n;

cout<<"Cac so nguyen to nho hon "<<n<<" la:"<<endl;

for(int so=2; so<n; so++)

Trang 5

printf( "Cac so nguyen to nho hon %d la:\n" , n);

for ( int so = 2; so < n; so++)

Trang 7

void NhapSoNguyen(int &n)

Trang 9

Khái niệm

•Hàm là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định và trả về kết quả cho chương trình gọi nó

Trang 10

Mẫu hàm

Kiểu dữ liệu trả về của hàm (kết quả của hàm/ đầu

ra), gồm:

• void: Không trả về giá trị

• float / int / long / char */ kiểu cấu trúc / … : Trả về

kết quả tính được với KDL tương ứng

10

<KDL trả về của hàm> TênHàm([ds tham số]);

Trang 11

•TênHàm: Đặt tên theo qui ước sao cho phản ánh đúng chức năng thực hiện của hàm

•Danh sách các tham số (nếu có): đầu vào của

hàm (trong một số trường hợp có thể là đầu vào

và đầu ra của hàm nếu kết quả đầu ra có nhiều giá trị - Tham số này gọi là tham chiếu)

Trang 12

Hàm không trả về giá trị

Cài đặt

void TênHàm([danh sách các tham số])

{

Khai báo các biến cục bộ

Các câu lệnh / khối lệnh hay lời gọi đến hàm khác.

}

Gọi hàm

TênHàm(danh sách tên các đối số);

Những phương thức loại này thường rơi vào những nhóm

chức năng: Nhập / xuất dữ liệu , thống kê, sắp xếp, liệt kê

12

Trang 13

Ví dụ

Viết chương trình nhập số nguyên dương n và in ra màn hình các ước số của n

Phân tích bài toán:

Input: n (Để xác định tham số)

KDL: số nguyên dương (int).

Output: In ra các ước số của n (Để xác định KDL trả

về của hàm)

Xuất ra màn hình  Không trả về giá trị  KDL của hàm

là void

Xác định tên hàm: Hàm này dùng in ra các ước số của

n nên có thể đặt là LietKeUocSo

void LietKeUocSo(int n);

Trang 15

Hàm có trả về giá trị

Cài đặt

<Kiểu dữ liệu trả về> TênHàm([danh sách các tham số])

{

<Kiểu dữ liệu trả về> kq;

Khai báo các biến cục bộ

Các câu lệnh / khối lệnh hay lời gọi đến hàm khác.

Trang 16

Ví dụ

Viết chương trình nhập số nguyên dương n và tính tổng

Phân tích bài toán:

Input: n (Để xác định tham số)

KDL: số nguyên dương (int).

Output: Tổng S (Để xác định KDL phương thức)

Trả về giá trị của S

S là tổng các số nguyên dương nên S cũng là số

nguyên dương  KDL trả về của hàm là int (hoặc

2

Trang 19

Phạm vi khối

•Một khối được giới hạn bởi ngoặc {}

•Biến khai báo trong khối đó có phạm vi khối, nghĩa là nó chỉ hoạt động trong khối đó mà thôi

Phạm vi này còn gọi là cục bộ, và biến đưọc gọi

là biến cục bộ.

Trang 20

Gia tri i ben trong khoi: 10

Gia tri i ben ngoai khoi: 20

Trang 21

Phạm vi hàm

Hoạt động từ đầu đến cuối một hàm, chỉ có tác dụng trong hàm

void main() {

int k;

float m;

double x;

//Các lệnh khác //…

}

Trang 22

int i;

//Các lệnh

.}

Trang 23

Phạm vi chương trình

•Được khai báo bên ngoài

các hàm – còn được gọi

là biến toàn cục

•Không nên khai báo sử

dụng nhiều nếu không

thực sự cần thiết, vì nó sẽ

gây trở ngại cho quá trình

dò tìm lỗi khi debug

chương trình

int a, b;

void Nhap() {

cout<<"Nhap a: "; cin>>a;

cout<<"Nhap b: "; cin>>b;

} void main() {

int c;

Nhap();

c=a+b;

cout<<"Tong = "<<c; }

Trang 24

Tham số là tham chiếu

• Tham số làm kết quả đầu ra

• Tham số vừa làm đầu vào và đầu ra

• Dùng dấu & phía trước tên tham số khi cài đặt hàm

24

Trang 25

Ví dụ

Xét chương trình hoán vị 2 số nguyên a, b cho

trước

Viết chương trình với 2 trường hợp

•Trường hợp không dùng tham chiếu

•Trường hợp dùng tham chiếu

Trang 26

void HoanVi(int a, int b)

Trang 27

Kết quả

Trang 28

void HoanVi(int &a, int &b)

Trang 29

Kết quả

Trang 30

Nguyên tắc xây dựng hàm

•Kết quả của hàm?  KDL trả về của hàm

•Hàm làm gì?  Xác định tên hàm

•Cần những thông tin gì?  Tham số

Ứng với mỗi thông tin đã xác định, xác định xem đã có giá trị trước khi vào hàm chưa,

- Nếu chưa có  Tham chiếu

- Nếu có mà sau khi thực hiện xong hàm vẫn không thay đổi  Tham trị

- Nếu có mà sau khi thực hiện xong hàm thì giá trị cũng bị thay đổi theo  Tham chiếu

30

Trang 31

Bài tập

1.Viết chương trình tính diện tích và chu vi của hình chữ nhật với chiều dài và chiều rộng được nhập từ bàn phím.

2.Viết chương trình tính diện tích và chu vi hình tròn với bán kính được nhập từ bàn phím.

3.Nhập vào 3 số thực a, b, c và kiểm tra xem chúng có thành lập thành 3 cạnh của một tam giác hay không? Nếu có hãy tính diện tích, chiều dài mỗi đường cao của tam giác và in kết quả ra màn hình 4.Viết chương trình nhập 2 số nguyên dương a, b Tìm USCLN và BSCNN của hai số nguyên đó

Trang 32

• Công thức tính diện tích

s = sqrt(p*(p-a)*(p-b)*(p-c) )

với p là nửa chu vi của tam giác

• Công thức tính các đường cao:

ha = 2s/a, hb=2s/b, hc=2s/c

32

Trang 33

7 Viết chương trình nhập số nguyên dương n gồm k chữ

số, đếm xem n có bao nhiêu chữ số là số nguyên tố

Trang 34

8 Viết chương trình tính tiền thuê máy dịch vụ Internet Với dữ liệu nhập vào là giờ bắt đầu thuê (GBD), giờ kết thúc thuê (GKT), số máy thuê (SoMay)

Điều kiện cho dữ liệu nhập: 6<=GBD<GKT<=21 Giờ

Giả sử rằng:

Tiền trả cho mỗi giờ trước 12 giờ: 6000đ và sau 12

giờ: 7500đ

Giờ vào ca sớm nhất là 6 giờ sáng và giờ ra ca trễ

nhất là 18 giờ (Giả sử giờ nhập vào nguyên).

34

Trang 35

Giới thiệu hàm đệ qui

•Một hàm được gọi có tính đệ qui nếu trong thân của hàm đó có lệnh gọi lại chính nó một cách tường minh hay tiềm ẩn.

•Phân loại đệ qui

•Đệ qui tuyến tính.

•Đệ qui nhị phân.

•Đệ qui phi tuyến.

•Đệ qui hỗ tương.

Trang 36

//Thực hiện một số công việc (nếu có)

TenHam (<danh sách tham số>);

//Thực hiện một số công việc (nếu có)

}

36

Trang 37

Ví dụ: Tính

- Điều kiện dừng: S(0) = 0.

- Qui tắc (công thức) tính: S(n) = S(n-1) + n.

long TongS (int n)

Trang 38

Đệ qui nhị phân

Trong thân của hàm có hai lời gọi hàm gọi lại chính nó một cách tường minh.

<Kiểu dữ liệu hàm> TenHam (<danh sách tham số>)

//Thực hiện một số công việc (nếu có)

.TenHam (<danh sách tham số>); //Giải quyết vấn đề nhỏ hơn

//Thực hiện một số công việc (nếu có)

TenHam (<danh sách tham số>); //Giải quyết vấn đề còn lại

//Thực hiện một số công việc (nếu có)

Trang 39

Ví dụ: Tính số hạng thứ n của dãy Fibonaci được định nghĩa như sau:

Trang 40

Đệ qui phi tuyến

Trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp.

<Kiểu dữ liệu hàm> TenHam (<danh sách tham số>)

{

for (int i = 1; i<=n; i++)

{ //Thực hiện một số công việc (nếu có)

if (điều kiện dừng) {

//Trả về giá trị hay kết thúc công việc }

else { //Thực hiện một số công việc (nếu có)

TenHam (<danh sách tham số>);

}

}

Trang 41

Ví dụ: Tính số hạng thứ n của dãy {Xn} được định nghĩa như sau:

Trang 42

h() f()

Trang 43

<Kiểu dữ liệu hàm> TenHam2 (<danh sách tham số>);

<Kiểu dữ liệu hàm> TenHam1 (<danh sách tham số>)

{

//Thực hiện một số công việc (nếu có)

…TenHam2 (<danh sách tham số>);

//Thực hiện một số công việc (nếu có)

}

<Kiểu dữ liệu hàm> TenHam2 (<danh sách tham số>)

{

//Thực hiện một số công việc (nếu có)

…TenHam1 (<danh sách tham số>);

//Thực hiện một số công việc (nếu có)

}

Trang 44

Ví dụ: Tính số hạng thứ n của hai dãy {X n }, {Y n } được định nghĩa như sau:

Trang 45

Cách hoạt động hàm đệ qui

6 24

120

GiaiThua(2)

1 n GiaiThua(1)

Trang 46

Q&A

Ngày đăng: 11/05/2021, 04:52

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

TÀI LIỆU LIÊN QUAN