Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 9: Hàm

CHÖÔNG 9  
HAØM  
CHÖÔNG 9  
HAØM  
9.1 Khaùi nieäm haøm  
9.2 Khai baùo haøm  
9.3 Ñoái soá cuûa haøm - ñoái soá laø tham trò  
9.4 Keát quaû traû veà cuûa haøm - leänh RETURN  
9.5 PROTOTYPE cuûa moät haøm  
9.6 Haøm ñeä quy  
Baøi taäp cuoái chöông  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Chöông trình con laø ñoaïn chöông trình ñaûm nhaän thöïc  
hieän moät thao taùc nhaát ñònh.  
Ñoái vôùi C, chöông trình con chæ ôû moät daïng laø haøm  
(function), khoâng coù khaùi nieäm thuû tuïc (procedure).  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Haøm main () laø haøm ñaëc bieät cuûa C, noù laø moät haøm maø  
trong ñoù caùc thao taùc leänh (bao goàm caùc bieåu thöùc tính  
toaùn, goïi haøm, ...) ñöôïc C thöïc hieän theo moät trình töï hôïp  
logic ñeå giaûi quyeát baøi toaùn ñöôïc ñaët ra.  
Vieäc söû duïng haøm trong C seõ laøm cho chöông trình trôû  
neân raát deã quaûn y, desa sa
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Taát caû caùc haøm trong C ñeàu ngang caáp nhau. Caùc haøm ñeàu  
coù theå goïi laãn nhau, dó nhieân haøm ñöôïc goïi phaûi ñöôïc khai  
baùo tröôùc haøm goïi.  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Caùc haøm trong moät chöông trình coù theå naèm treân caùc taäp  
tin khaùc nhau vaø khaùc vôùi taäp tin chính (chöùa haøm main  
()), moãi taäp tin ñöôïc goïi laø moät module chöông trình,  
Caùc module chöông trình seõ ñöôïc dòch rieâng reõ vaø sau ñoù  
ñöôïc lieân keát (link) laïi vôùi nhau ñeå taïo ra ñöôïc moät taäp tin  
thöïc thi duy nhaát
Caùch taïo chöông trình theo kieåu nhieàu module nhö vaäy  
trong C laø project  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Ví duï: Chöông trình 1  
#include <stdio.h>  
#include <conio.h>  
#include <math.h>  
main ()  
{
double a, b, c, delta, n1, n2;  
clrscr();  
printf ("Nhap 3 he so phuong trinh bac hai; ");  
scanf ("%lf %lf %lf", &a, &b, &c);  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
if (a ==0)/* phuong trinh suy bien ve bac nhat */  
{
printf ("Phuong trinh suy bien ve bac nhat va  
");  
if (b == 0)  
if (c == 0)  
printf ("vo so nghiem\n");  
ese /* c != 0 /  
printf ("vo nghiem\n");  
else / * b != 0 */  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
{
n1 = -c/b;  
printf ("co 1 nghiem: = %5.2f \n",  
n1);  
}
}
else /* a != 0 /  
{
printf ("Phuong trinh bac hai va ");  
delta = b*b - 4*a*c;  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
if (delta < 0)  
printf ("vo nghiem thuc\n");  
else if (delta == 0)  
{
n1 = n2 = -b/2/a;  
printf ("co nghiem kep x1 = x2 = %5.2f \n"  
,n1);  
}
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
else /* delta > 0 */  
{
n1 = (-b + sqrt(delta))/2/a;  
n2 = (-b - sqrt(delta))/2/a;  
printf ("co hai nghiem phan biet; \n");  
printf ("x1 = %5.2f \n", n1);  
printf ( x2 = %5.2f \n", n2);  
}
}
getch();  
}
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
Ví duï: Chöông trình 2  
#include <stdio.h>  
#include <conio.h>  
#include <math.h>  
void gptb1 (double a, double b);  
void gptb2 (double adouble bdobe c)
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
void gptb1 (double a, double b)  
{
printf ("Phuong trinh suy bien ve bac nhat va ");  
if (a == 0)  
if (b == 0)  
printf ("vo so nghiem\n");  
else /* b != 0 */  
printf ("vo nghiem\n");  
else  
printf ("co 1 nghiem: x = %5.2f \n",-b/a);  
}
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
void gptb2 (double a,double b,double c)  
{
double delta, x1, x2;  
printf ("Phong rnh bc h)
delta = b*b - 4*a*c;  
if (delta < 0)  
printf ("vo nghiem thuc\n");  
else if (delta == 0)  
printf ("co nghiem kep x1 = x2 = %5.2f \n", -  
b/2/a);  
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
else /* delta > 0 */  
{
x1 = (-b + sqrt(delta))/2/a;  
x2 = (-b - sqrt(delta))/2/a;  
printf ("co hai nghiem phan biet: \n");  
printf ("x1 = %5.2f \n ", x1);  
printf ("x2 = %5.2f \n" , x2);  
}
}
CHÖÔNG 9  
HAØM  
9.1 KHAÙI NIEÄM HAØM  
main()  
{
double a, b, c;  
clrscr();  
printf ("Nhap 3 he so phuong trinh bac hai: ");  
scant ("%lf %lf %lf", &a, &b, &c);  
if (a == 0) /* phuong trinh suy bien ve bac nhat */  
gptb1 (b, c);  
else /* a != 0 */  
gptb2 (a, b, c);  
getch();  
}
CHÖÔNG 9  
HAØM  
9.2 KHAI BAÙO HAØM  
Khai baùo moät haøm laø chæ ra roõ raèng traû veà vò trí kieåu gì,  
ñoái soá ñöa vaøo cho haøm coù bao nhieâu ñoái soá, moãi ñoái soá coù  
kieåu nhö theá naøo vaø caùc leänh beân trong thaân haøm xaùc  
ñònh thao taùc cuûa haøm.  
Coù hai loaïi haøm: haøm trong thö vieän cuûa C vaø haøm do laäp  
trình vieân töï ñònh nha
CHÖÔNG 9  
HAØM  
9.2 KHAI BAÙO HAØM  
- Neáu haøm söû duïng laø haøm chuaån trong thö vieän thì vieäc  
khai baùo haøm chæ ñôn giaûn laø khai baùo prototype cuûa haøm,  
caùc prototype naøy ñaõ ñöôïc phaân loaïi vaø ôû trong caùc file .h,  
laäp trình vieân caàn ra leänh #include bao haøm caùc file naøy  
vaøo chöông trình hoaëc module chöông trình söû duïng noù.  
CHÖÔNG 9  
HAØM  
9.2 KHAI BAÙO HAØM  
- Neáu caùc haøm söû duïng laø do laäp trình vieân töï ñònh nghóa  
thì vieäc khai baùo haøm bao goàm hai vieäc: khai baùo  
prototype cuûa haøm ñaàu chöông trình vaø ñònh nghóa caùc  
leänh beân trong thaân haøm (hay thöôøng ñöôïc goïi taét laø ñònh  
nghóa haøm).  
CHÖÔNG 9  
HAØM  
9.2 KHAI BAÙO HAØM  
Daïng 1:  
Daïng 2: (Laïc haäu)  
kieåu teân_haøm  
anh_saùch_ñoái_soá)  
(danh_saùch_khai_baùo_ñoái_soá)  
{
khai_baùo_ñoái_soá  
{
khai_baùo_bieán_cuïc_boä  
khai_baùo_bieán_cuïc_boä  
leänh  
}
leänh  
}
CHÖÔNG 9  
HAØM  
9.2 KHAI BAÙO HAØM  
Daïng 1:  
Daïng 2:  
int so_sanh (int a, int b)  
{
int so_sanh (a, b)  
int a, b;  
int ket_qua;  
if (a >b)  
ket_qua = 1:  
else if (a == b)  
{
int ket_qua:  
if (a >b)  
ket_qua = 1;  
else if (a == b)  
ket_qua = 0;  
else if (a < b)  
ket_qua = -1;  
return ket_qua;  
ket_qua = 0;  
else if (a < b)  
ket_qua = -1;  
return ket_qua;  
}
}
Tải về để xem bản đầy đủ
pdf 105 trang yennguyen 12/04/2022 3020
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 9: Hàm", để 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:

  • pdfbai_giang_he_thong_may_tinh_va_ngon_ngu_c_chuong_9_ham.pdf