Tải bản đầy đủ (.ppt) (34 trang)

chuong 6 hàm và cấu trúc chương trình

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 (140.5 KB, 34 trang )


CHặNG VI
HAèM VAè CU TRUẽC CHặNG TRầNH
I. Haỡm
1. Quy từc xỏy dổỷng mọỹt haỡm:
Haỡm coù thóứ xem laỡ mọỹt õồn vở õọỹc lỏỷp cuớa chổồng
trỗnh. Caùc haỡm coù vai troỡ ngang nhau, vỗ vỏỷy khọng
cho pheùp xỏy dổỷng mọỹt haỡm bón trong mọỹt haỡm
khaùc.
Doỡng õỏửu tión (cuớa mọỹt haỡm) chổùa caùc thọng tin vóử
haỡm:
-
Kióứu giaù trở cuớa haỡm (nóỳu haỡm coù giaù trở)
-
Tón haỡm
-
Danh saùch caùc õọỳi sọỳ (nóỳu coù)

Caùc doỡng tióỳp theo duỡng õóứ khai baùo kióứu giaù trở
cuớa õọỳi sọỳ.Vaỡ bừt buọỹc phaới khai baùo kióứu giaù trở
cho tỏỳt caớ caùc õọỳi sọỳ.
Tieùp theo laỡ thỏn haỡm. Thỏn haỡm laỡ nọỹi dung
chờnh cuớa haỡm noù bừt õỏửu bũng dỏỳu { vaỡ kóỳt
thuùc }
Trong thỏn haỡm coù thóứ duỡng 1 hoỷc nhióửu lóỷnh
return hoỷc coù thóứ khọng duỡng. Vaỡ coù thóứ õỷt
chuùng ồớ bỏỳt kyỡ chọự naỡo nóỳu thỏỳy thờch hồỹp.
Cuù phaùp chung cuớa lóỷnh return
return ([Bióứu thổùc]);
Giaù trở cuớa bióứu thổùc trong ngoỷc seợ õổồỹc
gaùn cho haỡm.



2. Quy từc hoaỷt õọỹng cuớa haỡm
Caùch goỹi haỡm:
tón_haỡm([Danh saùch tham sọỳ thổỷc]);
Chuù yù:
- Sọỳ tham sọỳ thổỷc phaới bũng vồùi sọỳ tham sọỳ
hỗnh thổùc (õọỳi) vaỡ mọựi tham sọỳ thổỷc phaới coù
cuỡng kióứu vồùi giaù trở nhổ kióứu giaù trở cuớa õọỳi
tổồng ổùng cuớa noù.
- Vóử nguyón từc moỹi haỡm cỏửn õổồỹc khaùi baùo
trổồùc khi sổớ duỷng noù. Noù hoaỡn toaỡn giọỳng vồùi
vióỷc khai baùo mọỹt bióỳn.

Vờ duỷ:
Vióỳt chổồng trỗnh tỗm sọỳ lồùn nhỏỳt vaỡ nhoớ nhỏỳt
cuớa tổỡng cọỹt trong ma trỏỷn, coù sổớ duỷng haỡm tỗm max,
tỗm min.
#include "stdio.h"
int max(a,b)
int a,b;
{
int m;
m=a>b?a:b;
return (m);
}

int min(a,b)
int a,b;
{
int m;

m=a<b?a:b;
return (m);
}
main()
{
int s,k,i,j,ma,mi,max(),min(),temp;
int a[3][3];
clrscr();

for (i=0;i<3;++i)
for (j=0;j<3;++j)
{
printf("a[%d,%d] ",i,j);
scanf("%d",&temp);
a[i][j]=temp;
}
for (i=0;i<3;++i)
{
for (j=0; j<3;++j) printf(" %10d",a[i][j]);
printf("\n");
}

for (j=0;j<3;++j)
{
ma=mi=a[0][j];
for (i=0; i<3;++i)
{
mi=min(a[i][j],mi);
ma=max(a[i][j],ma);
}

printf("\n Cot %d Max = %d \Min = %d",i,ma,mi);
}
getch();
return 0;
}

3. Caùc khaùi nióỷm lión quan õóỳn haỡm:
-
Tón haỡm
-
Kióứu giaù trở cuớa haỡm
-
ọỳi hay tham sọỳ hỗnh thổùc
-
Thỏn haỡm
-
Khaùi baùo haỡm
-
Lồỡi goỹi haỡm
-
Tham sọỳ thổỷc

4. Caùch xỏy dổỷng haỡm
[type] tón_haỡm([Danh saùch õọỳi sọỳ])
[Khai baùo kióứu giaù trở cho tỏỳt caớ caùc õọỳi]
{
[Caùc khai baùo kióứu giaù trở cho caùc bióỳn cuỷc bọỹ vaỡ caùc
haỡm noù sổớ duỷng]
<Caùc cỏu lóỷnh>
[return ([Bióứu thổùc]);]

}
Chuù yù:
-
Khi xỏy dổỷng haỡm cỏửn nừm vổợng nhổợng qui õởnh vóử
mọỳi quan hóỷ giổợa: tham sọỳ thổỷc vaỡ tham sọỳ hỗnh thổùc
(õọỳi) cuợng nhổ caùc õọỳi trong thỏn cuớa haỡm

-
ọỳi vồùi haỡm khọng cho giaù trở thỗ chuùng ta
khọng cỏửn khai baùo kióứu giaù trở cuớa noù.
-
ọỳi vồùi caùc haỡm coù giaù trở maỡ ta quón khọng
khai baùo kióứu giaù trở cuớa noù, thỗ maùy seợ coi
haỡm õoù coù giaù trở nguyón. Nhổ vỏỷy õọỳi vồùi
haỡm coù gaùi trở kióứu nguyón thỗ khọng cỏửn
khai baùo kióứu giaù trở cho chuùng.
-
Khi gỷp lóỷnh return coù chổùa bióứu thổùc, thỗ
giaù trở cuớa bióứu thổùc bao giồỡ cuợng õổồỹc
chuyóứn vóử theo kióứu giaù trở cuớa haỡm trổồùc
khi noù õổồỹc gaùn cho haỡm.


Nguyón từc hoaỷt õọỹng cuớa tham sọỳ thổỷc, caùc õọỳi vaỡ caùc bióỳn
cuỷc bọỹ
-
Do õọỳi vaỡ bióỳn cuỷc bọỹ õóửu coù phaỷm vi hoaỷt õọỹng trong
cuỡng mọỹt haỡm nón õọỳi vaỡ bióỳn cuỷc bọỹ cỏửn coù tón khaùc
nhau.
-

ọỳi vaỡ bióỳn cuỷc bọỹ õóửu laỡ bióỳn tổỷ õọỹng. Chuùng õổồỹc cung
cỏỳp bọỹ nhồù khi haỡm õổồỹc khồới õọỹng vaỡ chuùng seợ lỏỷp tổùc
bióỳn mỏỳt khi maùy ra khoới haỡm. Nhổ vỏỷy, khọng thóứ mang
giaù trở cuớa õọỳi ra khoới haỡm. ióửu naỡy coù nghộa laỡ khọng
thóứ sổớ duỷng õọỳi õóứ laỡm thay õọứi giaù trở cuớa bỏỳt kyỡ mọỹt õaỷi
lổồỹng naỡo ồớ ngoaỡi haỡm.
-
Khi mọỹt haỡm õổồỹc goỹi tồùi, vióỷc õỏửu tión laỡ gaùi trở cuớa caùc
tham sọỳ thổỷc õổồỹc gaùn cho caùc õọỳi. Nhổ vỏỷy, caùc õọỳi
chờnh laỡ baớn sao cuớa caùc tham sọỳ thổỷc. Haỡm chố laỡm vcóỷc
trón caùc õọỳi, tổùc laỡ chố laỡm vióỷc trón caùc baớn sao naỡy. Caùc
õọỳi coù tóứ bở bióỳn õọứi nhổng caùc tham sọỳ thổỷc (caùc baớn
chờnh) khọng hóử bở thay õọứi

II. Con troớ vaỡ õởa chố
1. ia chố
Lión quan õóỳn mọỹt bióỳn ta õaợ coù caùc khaùi nióỷm:
-
Tón bióỳn
-
Kióứu giaù trở cuớa bióỳn
-
Giaù trở cuớa bióỳn
Khi khai baùo mọỹt bióỳn thỗ maùy seợ cỏỳp phaùt cho
bióỳn mọỹt vuỡng nhồù coù sọỳ byte bũng vồùi õọỹ lồùn cuớa
kióứu õoù.
Vờ duỷ:
Kióứu int laỡ 2 byte
Kióứu float laỡ 4 byte


Chuùng ta cuợng coù thóứ hióứu: ởa chố cuớa bióỳn laỡ sọỳ
thổù tổỷ cuớa byte õỏửu tión trong mọỹt daợy caùc byte lión
tióỳp nhau maỡ maùy daỡnh cho bióỳn.
Cỏửn chuù yù rũng: ởa chố cuớa bióỳn laỡ mọỹ sọỳ
nguyón nhổng khọng õổồỹc õaùnh õọửng noù vồùi caùc sọỳ
nguyón thọng thổồỡng trong caùc pheùp tờnh
Pheùp toaùn
&x
cho ta õởa chố cuớa bióỳn x

2. Con troớ
Con troớ laỡ mọỹt bióỳn duỡng õóứ chổùa õởa chố. Vỗ coù
nhióửu loaỷi õởa chố nón cuợng coù bỏỳy nhióu kióứu con
troớ tổồng ổùng.
Vờ duỷ:
Con troớ kióứu int duỡng õóứ chổùa õởa chố caùc
bióỳn kióứu int.
Cuợng nhổ bióỳn thỗ con troớ cuợng cỏửn phaới õổỷoc khai
baùo trổồùc khi sổớ duỷng.
Cuù phaùp khai baùo:
type *tón_con_troớ
Vờ duỷ:
int x,y,*px,*py

Toạn tỉí: & v * l cạc toạn tỉí mäüt ngäi, nọ chè tạc âäüng
lãn biãún, pháưn tỉí ca mng hồûc chùi.
&: Toạn tỉí láúy âải chè ca biãún
*: Toạn tỉí láúy giạ trë tải âëa chè no âọ.
Cạc toạn tỉí ny cọ âäü ỉu tiãn hån cạc toạn tỉí säú hc v cọ
âäü ỉu tiãn tỉång âỉång våïi toạn tỉí mäüt ngäi.

3. Cạc biãøu thỉïc con tr:
a. Phẹp gạn con tr:
Con tr cng l mäüt biãún nãn ta cng cọ thãø ạp dủng phẹp
gạn lãn nọ.
Vê dủ:
int *p1, *p2,x;
Lục âọ cạc phẹp toạn sau l håüp lãû:
p1=&x;
p2=p1;

b. Pheùp toaùn sọỳ hoỹc trón con troớ:
Caùc pheùp toaùn sọỳ hoỹc õổồỹc aùp duỷng trón bióỳn con troớ cuợng
nhổ giaù trở cuớa noù laỡ 2 pheùp toaùn cọỹng vaỡ trổỡ.
Vờ duỷ:
int *p;
Thỗ ta coù thóứ duỡng:
p++: õóứ troớ õóỳn phỏửn tổớ kóỳ tióỳp;
p : troớ õóỳn phỏửn tổớ trổồùc õoù
p= p+3: Nhaớy õóỳn õởa chố caùch p laỡ 3*Sizeof(p)
Trong bióứu thổùc ta coù thóứ duỡng caùc daỷng sau cuớa mọỹt bióỳn
con troớ p:
(*p)++,++(*p):Tng giaù trở taỷi p lón 1
*(p++): lỏỳy gờa trở phỏửn tổớ kóỳ tióỳp troớ bồới p,

c. So sạnh con tr
Cạc phẹp toạn so sạnh âëa chè ca cạc biãún con
tr l:
>,<, = =
4. Kiãøu giạ trë trong khai bạo:
Mi thnh pháưn ca cng mäüt khai bạo (biãún, pháưn

tỉí mng, hm, con tr) khi xút hiãûn trong biãøu
thỉïc âãưu cọ cng mäüt kiãøu giạ trë.
Vê dủ:
int a, b[5], f(), *p;
Thç a, b[i], f(x) hồû *p xút hiãûn trong mäüt biãøu
thỉïc thç chụng ln ln cho mäüt gia trë kiãøu
float.

5. Haỡm coù õọỳi con troớ:
Nóỳu õọỳi laỡ con troớ thỗ tham sọỳ thổỷc tổồng ổùng phaới laỡ
õởa chố cuớa bióỳn hoỷc õởa chố cuớa phỏửn tổớ maớng coù
kióứu tổồng ổùng.
Khi õoù õởa chố cuớa bióỳn õổồỹc truyóửn cho õọỳi con troớ
tổồng ổùng.
Vờ duỷ:

#include "stdio.h"
int swap(x,y)
int x,y;
{
int tem;
tem=x;
x=y;
y=tem;
return (x,y);
}

main()
{
int x,y,swap();

printf("Nhap x = \n y = ");
scanf("%d %d",&x,&y);
printf("x = %d y = %d",x,y);
swap(x,y);
printf("x = %d y = %d",x,y);
getch();
return 0;
}

#include "stdio.h"
swap(x,y)
int *x,*y;
{
int tem;
tem=*x;
*x=*y;
*y=tem;
}

main()
{
int x,y;
clrscr();
printf("Nhap x = ");
scanf("%d",&x);
printf("\nNhap y = ");
scanf("%d",&y);
printf("x = %d y = %d",x,y);
swap(&x,&y);
printf("\nx = %d y = %d",x,y);

getch();
return 0;
}

6. Sổớ duỷng bióỳn con troớ:
Trong caùc õọỳi cuớa haỡm, ta coù thóứ chia thaỡnh 2 loaỷi:
-
Gọửm caùc õọỳi duỡng õóứ chổùa caùc giaù trở õaợ
bióỳt.(Tham trở)
-
Gọửm caùc õọỳi duỡng õóứ chổùa caùc kóỳt quaớ mồùi
nhỏỷn õổồỹc (Tham bióỳn)
Vờ duỷ:
Vióỳt chổồng trỗnh giaới phuồng trỗnh bỏỷc hai coù sổớ
duỷng con troớ õóứ xỏy dổỷng haỡm giaới phổồng trỗnh

#include "stdio.h"
#include "math.h"
int ptb2(a,b,c,x1,x2)
float a,b,c,*x1,*x2;
{
float delta;
if (a==0) return (0);
delta=pow(b,2)-4*a*c;
if (delta<0) return (-1);
*x1=(-b+sqrt(delta))/(2*a);
*x2=(-b-sqrt(delta))/(2*a);
return (1);
}


main()
{
int s;
float a,b,c,x1,x2;
clrscr();
printf("Nhap cac gia tri cho he so");
scanf("%f%f%f",&a,&b,&c);
printf("\na = %6.2f b = %6.2f c =
%6.2f",a,b,c);
s=ptb2(a,b,c,&x1,&x2);
if (s==0)
printf("\nKhong phai la phuong trinh bac 2
vi a=0");

×