Bài giảng Lập trình C - Bài 4: Lập trình hàm - Võ Đức Hoàng
Mục tiêu
1. Trình bày kỹ thuật lập trình bằng phương pháp hàm
2. Cách thức phân tích bài toán thành các hàm con
3. Giới thiệu về hàm đệ quy
2
Ví dụ
Xét chương trình nhập vào số nguyên dương n,
in ra màn hình các số nguyên tố nhỏ hơn n
Ví dụ:
Nhập n = 10
Kết quả in ra màn hình là: 2, 3, 5, 7
3
int main()
{
int n;
printf("Nhap so nguyen duong: ");
scanf("%d", &n);
printf("Cac so nguyen to nho hon %d la:\n", n);
for (int so = 2; so < n; so++)
{
int d = 0;
for (int i = 1; i <= so; i++)
{
if (so%i == 0)
Kiểm tra xem giá
trị của so có phải
là số nguyên tố?
d++;
}
if (d == 2)
printf("%d\t", so);
}
getch();
return 0;
4
}
int main()
{
int n;
Nhập số nguyên dương n
printf("Cac so nguyen to nho hon %d la:\n", n);
for (int so = 2; so < n; so++)
{
Kiểm tra xem so có phải là số nguyên tố không?
Nếu là số nguyên tố thì in so ra màn hình
}
getch();
return 0;
}
5
void NhapSoNguyen(int &n)
{
printf("Nhap so nguyen duong: ");
scanf("%d", &n);
Tham số: dùng để truyền
}
giá trị vào
int LaSNT(int k)
{
int d = 0;
for (int i = 1; i <= k; i++)
{
if (k%i == 0)
d++;
Hàm LaSNT dùng để kiểm tra
một số nguyên k bất kỳ (được
truyền vào từ hàm khác) có phải
là số nguyên tố không?
- Trả về 1: Nếu k là số nguyên tố
- Ngược lại trả về 0
}
if (d == 2)
return 1;
return 0;
}
6
int main()
{
Gọi hàm
int n;
NhapSoNguyen(n);
Truyền đối số
printf("Cac so nguyen to nho hon %d la: \n", n);
for (int so = 2; so < n; so++)
Gọi hàm
{
if (LaSNT(so) == 1)
printf("%d\t", so);
Truyền đối số
}
getch();
return 0;
}
7
Cấu trúc chương trì nh
Khai báo thư viện hàm
Khai báo hàm
Khai báo hằng số …
Khai báo
Cài đặt hàm
Hàm main()
Cài đặt tất cả những hàm con
đã đượ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
8
Khá i niệm
Hàm (chương trình con - subroutine) là mꢀt khối lệnh, thꢀc
hiꢁn trꢂn vꢃn mꢄt công viꢁc nhꢅt đꢆnh (module), được đặt
tên và được gọi thực thi nhiều lần tại nhiều vị trí
Khi nào sử dụng hàm?
1. Khi cꢁ mꢀt công việc giống nhau cần thực hiện ꢂ nhiều
vị trí
2. Khi cần chia nhỏ chương trình để dễ quꢃn lý
9
9
Khá i niệm
•Hàm có thể được gọi từ chương trình chính (hàm
main) hoặc từ 1 hàm khác
•Hàm có giá trị trꢃ về hoặc không
•Nếu hàm không có giá trị trꢃ về gọi là thủ tục
(procedure)
10
Khá i niệm
•Hàm thư viện: là những hàm đã được xây dựng sẵn.
Muốn sử dụng các hàm thư viện phꢃi khai báo thư
viện chứa nó trong phần khai báo #include
•Hàm do người dùng định nghĩa
11
Mẫu hàm
<KDL trả về của hàm> TênHàm([ds tham số]);
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
12
Mẫu hàm
• 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, phần này sẽ đề cập sau
13
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ê
14
Ví dụ
Viết chương trình nhập sô
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 (KDL trꢃ về của hàm)
Xuất ra màn hình → Không tra vê gia trị → KDL của
là void
• Xꢍc đꢆnh tên hàm: Hàm này dꢅng in ra các ước sô
́ nguyên dương n và in ra màn hình
́
̉
́)
́
́
̉
̀
́
́
của n
nên cꢁ thê
̉
đặt là LietKeUocSo
void LietKeUocSo(int n);
15
#include <stdio.h>
#include <conio.h>
#pragma warning (disable: 4996)
void LietKeUocSo(int n);
void LietKeUocSo(int n)
{
for (int i = 1; i <= n; i++)
{
if (n % i == 0)
printf("%d\t", i);
}
}
int main()
{
int n;
printf("Nhap so nguyen duong n: ");
scanf("%d", &n);
printf("Cac uoc so cua %d la: ", n);
LietKeUocSo(n);
getch();
return 0;
Muốn thực thi hàm thì
phải gọi hàm
}
16
Bài tập
• Viết hàm in ra màn hình các chữ số của số nguyên n gồm
k chữ số. Mỗi chữ số in trên 1 dòng.
• Hàm main() nhập vào mꢀt số nguyên n gồm k chữ số, gọi
hàm in ra màn hình các chữ số của n
17
Hàm có trả về giá trị
Cài đặt
<KDL 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.
return kq;
}
18
Hàm có trả về giá trị
Gꢂi hàm
<KDL trꢃ về của hàm> Tên biến = TênHàm (danh sách tên
các đối số);
Những hàm này thưꢄng rơi vào các nhꢁm: Tính tổng, tích,
trung bình, đếm, kiểm tra, tìm kiếm
19
Ví dụ
Viết chương trình nhập số nguyên dương n và tính tꢆng
Sn =1+ 2+3++ n ;n 0
Phân tích bài toán:
Input: n (Tham sô
́)
KDL: số nguyên dương (int).
Output: Tꢆng S (KDL phương thức)
Tra
S là tꢆng các sô
dương → KDL tra
̉
vê
̀
gia
́
trị của S.
nguyên dương nên S cꢇng là sô
vê của hàm là int (hoặc long).
́
́ nguyên
̉
̀
TênHàm: Dꢅng tính tꢆng S nên cꢁ thể đặt là TinhTong
20
int TinhTong(int n);
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình C - Bài 4: Lập trình hàm - Võ Đức Hoàng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_c_bai_4_lap_trinh_ham_vo_duc_hoang.pptx

