Tải bản đầy đủ (.pptx) (46 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (472.31 KB, 46 trang )

CHƯƠNG 4. HÀM CON

TRẦN MINH THÁI
Email:
Website: www.minhthai.edu.vn

1

1


Cấu trúc chương trình
Khai báo thư viện hàm

Khai báo

Khai báo hàm

CHƯƠNG TRÌNH C

Khai báo hằng số …

Cài đặt tất cả những hàm con

Cài đặt hàm

đã được khai báo

Gọi thực hiện các hàm theo

Hàm main()



yêu cầu của bài toán

2


Ví dụ

Xét chương trình nhập vào số ngun dương n, in ra màn hình các số ngun 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


void main()
{

int n;
cout<<"Nhap so nguyen duong: ";
cin>>n;
cout<<"Cac so nguyen to nho hon "<for(int so=2; so{
int d=0;
for(int i=1; i<=so; i++)
Kiểm tra xem giá trị của so có


{
if(so%i==0)

phải là số nguyên tố?

d++;
}
if(d==2)
cout<}
}

4


void 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)
d++;


Kiểm tra xem giá trị của so
có phải là số nguyên tố?

}
if (d == 2)
printf("%d\t", so);
}
}

5


void main()
{

int n;

cout<<"Cac
nguyen dương
to nho hon
Nhập sốsonguyên
n "<//printf(“Cac so nguyen to nho hon %d la:\n”);
for(int so=2; so{

}
}


Kiểm tra xem so có phải là số ngun tố khơng? Nếu là số nguyên tố thì in
so ra màn hình

6


void NhapSoNguyen(int &n)
{
cout<<"Nhap so nguyen duong: ";
cin>>n;
}

Tham số

bool LaSNT(int k)
{
int d=0;
for(int i=1; i<=k; i++)
{
if(k%i==0)
d++;
}
return d==2;
}

7


void main()
{

int n;

Gọi hàm

NhapSoNguyen(n);

Truyền đối số
cout<<"Cac so nguyen to nho hon "<for(int so=2; so{
if(LaSNT(so)==true)

cout<
Gọi hàm

Truyền đối số

}
}

8


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ó.
Khi nào sử dụng hàm?


• Khi có mợt cơng việc giống nhau cần thực hiện ở nhiều vị trí.
• Khi cần chia nhỏ chương trình để dễ quản lý.

9

9


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

10


• 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)

11


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


Ví dụ
Viết chương trình nhập số ngun dương n và in ra màn hình các ước số của n
Phân tích bài tốn:



Input: n (Để xác định tham số)
KDL: số ngun 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);

13


#include <iostream.h>
void LietKeUocSo(int n);

void LietKeUocSo(int n)

Có dấu chấm phẩy
Khơng dấu chấm phẩy

{
for (int i = 1; i <= n; i++)
{
if (n % i == 0)
cout<}
}

void main()
{
int n;
cout<<"Nhap so nguyen duong n: ";
cin>>n;
cout<<"Cac uoc so cua “<
14



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.
  return kq;
}
Gọi hàm
<Kiểu dữ liệu 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

15


Ví dụ
Viết chương trình nhập số ngun dương n và tính tởng

Sn = 1 + 2 + 3 +  + n

;n > 0

Phân tích bài tố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 long).
TênHàm: Dùng tính tởng S nên có thể đặt là TongS
int TongS(int n);
16


#include <iostream.h>
int TongS(int n);
int TongS(int n)
{
int kq = 0;
for (int i = 1; i <= n; i++)
kq + = i;
return kq;
}
void main()
{
int n, S;
cout<<"Nhap vao so nguyen n: ";
cin>>n;
S = TongS(n);
cout<<"Tong tu 1 den n: " <}

17



Tầm vực của biến

• Phạm vi khối
• Phạm vi hàm
• Phạm vi tập tin
• Phạm vi chương trình

18


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ộ.

19


Phạm vi khối (tt)

void main()
{
int i=20;
{
int i=10;
cout<<"Gia tri i ben trong khoi: "<}
cout<<"Gia tri i ben ngoai khoi: "<}

Kết quả
Gia tri i ben trong khoi: 10
Gia tri i ben ngoai khoi: 20
20


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
//…
}
21


Phạm vi tập tin
Biến được khai báo toàn cục và có kèm từ khóa static

int x = 0;          
static int y = 0; 
static float z = 0.0;
void main()
{
   int i;  

   //Các lệnh
   .
   .
}

22


Phạm vi chương trình

int a, b;
void Nhap()
{

• Được khai báo bên ngồi các hàm – cịn
được gọi là biến tồn cục

• Khơng

nên khai báo sử dụng nhiều nếu

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

khơng thực sự cần thiết, vì nó sẽ gây trở ngại

void main()


cho q trình dị tìm lỗi khi debug chương

{

trình

int c;
Nhap();
c=a+b;
cout<<"Tong = "<}

23


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


Ví dụ

Xét chương trình hốn vị 2 số ngun 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

25


×