Đăng ký Đăng nhập
Trang chủ Chương trình có sử dụng hàm, biến toàn cục, biến cục bộ...

Tài liệu Chương trình có sử dụng hàm, biến toàn cục, biến cục bộ

.PDF
24
86
110

Mô tả:

Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368 PhÇn I. më ®Çu Trong giai ®o¹n hiÖn nay, giai ®o¹n mµ nÒn c«ng nghÖ th«ng tin chiÕm mét vÞ trÝ hÕt søc quan träng. Mäi quèc gia trªn thÕ giíi ®Òu cè g¾ng nç lùc vµo, vµ phÊn ®Êu ph¸t triÓn m¹nh lÜnh vùc c«ng nghÖ th«ng tin. Mét trong nh÷ng c«ng cô tiÕp cËn nhanh nhÊt ®ã lµ tin häc. §· qua råi, thêi mµ cha «ng ta ph¶i lµm vµ ghi nhí mäi viÖc b»ng nh÷ng ph-¬ng tiÖn th« s¬. §Ó tÝnh to¸n hä ®Òu ph¶i b¾t ®Çu b»ng tay vµ tÝnh to¸n mét c¸ch chi tiÕt. Cßn ngµy nay - Thêi ®¹i cña c«ng nghÖ th«ng tin - B¹n kh«ng cÇn ph¶i lµm nh- vËy n÷a. B¹n chØ cÇn lËp ra mét ch-¬ng tr×nh råi sö dông nã. Nã tiÖn Ých vµ thuËn lîi h¬n rÊt nhiÒu. Nã kh«ng h¹n chÕ vÒ khèi l-îng, con sè. ThËm chÝ trong mét gi©y nã cã thÓ gi¶i quyÕt hµng v¹n bµi to¸n phøc t¹p vv…Do ®ã tèc ®é lµm viÖc vµ n¨ng suÊt t¨ng lªn rÊt nhiÒu. Lîi Ých rÊt lín. §Ó nã cã thÓ lµm viÖc vµ ho¹t ®éng ®-îc th× chóng ta cÇn ph¶i lËp tr×nh, mµ muèn lËp tr×nh th× cÇn ph¶i cã ng«n ng÷ lËp tr×nh. Cã rÊt nhiÒu ng«n ng÷ lËp tr×nh nh- Pascal, Cobol, C++ vv… Mçi ng«n ng÷ lËp tr×nh cã mét chøc n¨ng riªng, mét thÕ m¹nh riªng, trong ®ã ng«n ng÷ lËp tr×nh C++ rÊt hay dïng vµ nã cã thÕ m¹nh vÒ qu¸ tr×nh can thiÖp s©u vµo m¸y tÝnh. Nã lµ ®iÒu mµ mäi kü s- lËp tr×nh ®Òu cÇn ph¶i biÕt ®Õn, lµ vÊn ®Ò rÊt quan träng trong qu¸ tr×nh tiÕp cËn víi m¸y tÝnh. Nh÷ng vÊn ®Ò trong ng«n ng÷ lËp tr×nh C++ rÊt ®¸ng ph¶i quan t©m vµ cã rÊt nhiÒu vÊn ®Ò, nh-ng ë ®Ò ¸n nµy chóng ta chØ nghiªn cøu 3 vÊn ®Ò c¬ b¶n nhÊt ®ã lµ: Ch-¬ng I: Hµm. Ch-¬ng II: BiÕn toµn côc, biÕn côc bé. Ch-¬ng III: Ch-¬ng tr×nh cã sö dông hµm, biÕn toµn côc, biÕn côc bé. Trong mçi ch-¬ng sÏ cã nh÷ng vÊn ®Ò nhá, cô thÓ cÇn nghiªn cøu sÏ ®-îc thÓ hiÖn trong phÇn néi dung. §Ò ¸n cña em ®-îc hoµn thµnh d-íi sù h-íng dÉn gióp ®ì cña thÇy TS. §Æng QuÕ Vinh vµ nh÷ng tµi liÖu vÒ bµi gi¶ng cña thÇy còng nh- mét sè tµi liÖu kh¸c. Mét lÇn n÷a em xin c¶m ¬n thÇy. 1 PhÇn II. Néi dung. Néi dung chÝnh bao gåm: Hµm, biÕn toµn côc, biÕn côc bé. Ch-¬ng I: Hµm. Ch-¬ng tr×nh con: Ch-¬ng tr×nh ®-îc viÕt theo nh÷ng quy t¾c ®Æc biÖt ®Ó cã thÓ ®-îc gäi thùc hiÖn b»ng mét ch-¬ng tr×nh kh¸c. Ch-¬ng tr×nh chøa lêi gäi thùc hiÖn ch-¬ng tr×nh con ®-îc gäi lµ ch-¬ng tr×nh chÝnh. ViÖc viÕt vµ sö dông nh÷ng ch-¬ng tr×nh con cho phÐp tiÕt kiÖm c«ng søc cña ng-êi viÕt ch-¬ng tr×nh rÊt nhiÒu. Trong hÇu hÕt c¸c ng«n ng÷ lËp tr×nh bËc cao ch-¬ng tr×nh con ®-îc chia lµm 2 lo¹i lµ thñ tôc( x, thñ tôc) vµ hµm(x, hµm). I. §Þnh nghÜa hµm. Hµm lµ mét ch-¬ng tr×nh con tÝnh mét gi¸ trÞ vµ tr¶ l¹i gi¸ trÞ Êy th«ng qua tªn hµm. Hµm chia thµnh 2 lo¹i lµ hµm chuÈn vµ hµm tù ®Þnh nghÜa cßn gäi lµ hµm do ng-êi sö dông ®Þnh nghÜa. - Hµm chuÈn lµ nh÷ng hµm cã s½n trong ng«n ng÷ lËp tr×nh. LËp tr×nh viªn cã thÓ sö dông c¸c hµm chuÈn mµ kh«ng ph¶i ®Þnh nghÜa l¹i c¸c hµm ®ã. HÇu hÕt c¸c hµm to¸n häc th«ng dông ®Òu lµ c¸c hµm chuÈn trong c¸c ng«n ng÷ lËp tr×nh. TËp hîp c¸c hµm chuÈn t¹o thµnh th- viÖn hµm chuÈn cña ng«n ng÷ lËp tr×nh th- viÖn hµm chuÈn lµ thµnh phÇn rÊt quan träng cña mçi ng«n ng÷ lËp tr×nh. Nã lµm cho viÖc lËp tr×nh ®-îc dÔ dµng h¬n vµ lµm cho kh¶ n¨ng cña ng«n ng÷ lËp tr×nh t¨ng lªn rÊt nhiÒu. - Hµm tù ®Þnh nghÜa: Lµ nh÷ng hµm kh«ng cã s½n trong th- viÖn hµm chuÈn cña ng«n ng÷ lËp tr×nh. Muèn sö dông nh÷ng hµm nµy ng-êi sö dông ph¶i t¹o ra nã. V× vËy nh÷ng hµm nµy míi cã tªn lµ hµm do ng-êi dïng ®Þnh nghÜa. ViÖc t¹o ra vµ sö dông nh÷ng hµm tù ®Þnh nghÜa lµm cho ch-¬ng tr×nh ng¾n gän h¬n, s¸ng sña h¬n vµ cho phÐp tiÕt kiÖm c«ng søc cña lËp tr×nh viªn. Cã thÓ coi hµm lµ mét phÐp to¸n do ng-êi dïng x¸c ®Þnh. Nãi chung hµm ®-îc biÓu thÞ bëi mét tªn gäi chø kh«ng ph¶i lµ mét to¸n tö. C¸c to¸n h¹ng cña hµm, ®-îc gäi lµ c¸c ®èi cña nã, ®-îc x¸c ®Þnh trong danh s¸ch ®èi ph©n c¸ch nhau bëi dÊu phÈy vµ ®-îc bao trong dÊu ngoÆc trßn. KÕt qu¶ cña hµm th-êng ®-îc coi lµ kiÓu cho l¹i cña nã. Hµm kh«ng cho l¹i gi¸ trÞ nµo cã kiÓu cho l¹i lµ Void. C¸c hµnh ®éng thùc t¹i mµ mét hµm thùc hiÖn ®-îc x¸c ®Þnh trong th©n hµm. Th©n hµm ®-îc bao trong ngoÆc nhän( "{ }" ) vµ ®«i khi cßn ®-îc coi lµ mét khèi. Trong C++ cã 2 c¸ch ®Þnh nghÜa hµm: 2 §Þnh nghÜa hµm sau hµm main( ) vµ ®Þnh nghÜa hµm tr-íc hµm main(). Tuy nhiªn c¸ch ®Þnh nghÜa hµm tr-íc hµm main( ) ng¨n gän h¬n vµ hay dïng h¬n cho nªn ë ®©y ta nghiªn cøu kü vÒ chóng. ViÖc ®Þnh nghÜa mét hµm theo mÉu sau: §Çu_®Ò_hµm { PhÇn khai b¸o Th©n hµm } *§Çu ®Ò hµm cã d¹ng sau ®©y: T§K(tõ ®Þnh kiÓu) : int, char; T§K tªn hµm( T§K1 tham sè 1 [, T§K2 tham_sè 2 ]…) T§K(*) x¸c ®Þnh kiÓu cña hµm, tøc lµ x¸c ®Þnh kiÓu cña gi¸ trÞ ®-îc tr¶ l¹i th«ng qua tªn hµm. C¸c tham sè cã trong ngoÆc trßn ( ) ®i sau tªn hµm ®-îc gäi lµ c¸c tham sè h×nh thøc. Toµn bé c¸c tham sè trong ngoÆc ( ) gäi lµ danh s¸ch tham sè h×nh thøc. Danh s¸ch nµy gåm 1 hay nhiÒu tham sè, tham sè nä c¸ch tham sè kia dÊu phÈy. Danh s¸ch tham sè h×nh thøc kÕt thóc bëi dÊu ngoÆc, sau ®ã kh«ng cã dÊu chÊm phÈy. *PhÇn khai b¸o cña hµm: Dïng ®Ó khai b¸o c¸c biÕn ®-îc dïng trong hµm nµy. C¸c biÕn ®-îc khai b¸o trong hµm chØ cã ý nghÜa trong hµm nµy nªn ®-îc gäi lµ c¸c biÕn côc bé( ®Þa ph-¬ng). ViÖc sö dông c¸c biÕn côc bé trong ch-¬ng tr×nh kh¸c hoÆc ch-¬ng tr×nh chÝnh lµ kh«ng hîp lÖ. Mét hµm ®-îc tÝnh bÊt kú khi nµo to¸n tö gäi( "( )") ®-îc ¸p dông vµo tªn cña hµm. NÕu hµm cÇn cã c¸c ®èi th× c¸c ®èi nµy, cßn ®-îc gäi lµ c¸c ®èi thùc t¹i, sÏ ®-îc ®Æt vµo bªn trong to¸n tö gäi. Mçi ®èi ®-îc ph©n c¸ch bëi mét dÊu phÈy. Nã cßn ®-îc gäi lµ truyÒn ®èi cho hµm. *Th©n hµm: Gièng nh- phÇn th©n ch-¬ng tr×nh cña mét ch-¬ng tr×nh th«ng th-êng. Tuy nhiªn sau khi tÝnh xong gi¸ trÞ hµm th× trong th©n hµm th-êng cã c©u lÖnh return ®Ó tr¶ l¹i gi¸ trÞ võa tÝnh ®-îc trong th©n hµm cho tªn hµm. Nã cã d¹ng: Return BiÓu thøc; hoÆc Return( biÓu thøc). 3 C©u lÖnh nµy cã t¸c dông tr¶ cho tªn hµm gi¸ trÞ cña biÓu thøc cã trong c©u lÖnh nµy. C©u lÖnh return kÕt thóc viÖc thùc hiÖn c¸c c©u lÖnh trong th©n hµm vµ tr¶ ®iÒu kiÖn vÒ chç ®· gäi hµm trong ch-¬ng tr×nh chÝnh. Tuy nhiªn c©u lÖnh return lµ kh«ng b¾t buéc ph¶i cã. Hµm tr¶ l¹i gi¸ trÞ qua tªn hµm nªn hµm cã thÓ ®-îc dïng lµ mét to¸n h¹ng trong biÓu thøc. Trong C++ chØ cã mét lo¹i ch-¬ng tr×nh con ®ã lµ hµm. Mçi ch-¬ng tr×nh Trong C++ ph¶i cã Ýt nhÊt mét hµm main( ). Hµm trong C++ kh«ng nhÊt thiÕt ph¶i cã tham sè, tr¶ l¹i gi¸ trÞ( ®ã lµ kiÓu void). Trong ch-¬ng tr×nh nguån hµm cã thÓ lµ mét to¸n h¹ng trong biÓu thøc hoÆc cã thÓ ®øng mét m×nh nh- mét c©u lÖnh ®¬n ®éc. VÝ dô: #include #include // Dinh nghia ham BINH_PHUONG int BINH_PHUONG(int n) { int ketqua; ketqua=n*n; return ketqua; } // Chuong trinh chinh main() { int m; cout<<"m="; cin>>m; cout<<'\n'< #include float TONG(float *vecto, int n) { int i; float s=0; for(i=0; i Void main( ) { int x=3, &y=x; // y lóc nµy lµ " bÝ danh" cña x cout<<"x="< #include /*Ham swap1 duoc goi voi cac tham so duoc truyen theo tham tri*/ void swap1(int x, int y) { int temp=x; x=y; y=temp; } /*Ham swap2 thuc hien viec truyen tham so bang tham tro*/ void swap2(int *x, int *y) { int temp=*x; *x=*y; *y=temp; } /*Ham swap3 thuc hien viec truyen tham so bang tham chieu*/ void swap3(int &x, int &y) { 9 int temp=x; x=y; y=temp; } void main() { int a=2, b=3; clrscr(); cout<<"Truoc khi goi swap1:\n"; cout<<"a = "< & fct(…) { … return< biÕn cã ph¹m vi toµn côc>; } BiÓu thøc ®-îc tr¶ l¹i trong c©u lÖnh return ph¶i lµ tªn cña mét biÕn x¸c ®Þnh tõ bªn ngoµi hµm. V× nÕu lµ biÕn côc bé th× nã sÏ bÞ mÊt ®i khi kÕt thóc thùc hiÖn hµm. Khi tr¶ vÒ cña hµm lµ tham chiÕu ta cã thÓ gÆp vÕ tr¸i lµ mét lêi gäi hµm chø kh«ng ph¶i lµ tªn mét biÕn. VD: #include #include struct TS { char ht[25]; float dt,dl, dh,td; }; TS ts; TS &f() { return ts; } void main() { TS &h=f(); // h tham chieu den bien ts cout<<"\n Ho ten:"; cin.get(h.ht,25); cout<<" Cac diem toan, diem ly, diem hoa:"; cin>>h.dt>>h.dl>>h.dh; h.td=h.dt+h.dl+h.dh; cout<<"\n Ho ten:"< #include>n; for(int i=1;i<=n;++i) { cout<<"\n Nhap 2 canh cua hinh chu nhat thu"<>x[i]>>y[i]; dtcvhcn(x[i],y[i],dt[i],cv[i]); } clrscr(); for(i=1;i<=n;++i) { cout<<"\n Hinh chu nhat thu"< int x; main( ) { int x=10; //biÕn côc bé ::x=10;// biÕn toµn côc cout<< x <<"\n"; //x côc bé cout<< ::x <<"\n"; //x toµn côc } Mét biÕn toµn côc ®-îc ®Þnh nghÜa trong mét tÖp nh-ng ®-îc dïng ë tÖp thø hai hay trong nhiÒu tÖp kh¸c. Tõ kho¸ extert ®-a ra gi¶i ph¸p. Hai biÕn toµn côc ®-îc ®Þnh nghÜa trong c¸c tÖp ch-¬ng tr×nh t¸ch biÖt cïng dïng chung mét tªn nh-ng ®-îc dù ®Þnh nãi tíi c¸c thùc thÓ ch-¬ng tr×nh kh¸c nhau, mçi biÕn râ rµng ®-îc dÞch riªng rÏ. Nh-ng khi g¾n l¹i víi nhau, biÕn bÞ b¸o lµ cã nhiÒu ®Þnh nghÜa vµ tr×nh biªn dÞch dõng l¹i. ViÖc dïng tõ kho¸ static ®-a ra mét gi¶i ph¸p. II. BiÕn côc bé. BiÕn côc bé lµ biÕn ®-îc khai b¸o trong ch-¬ng tr×nh vµ nã chØ cã ý nghÜa ë ph¹m vi nã khai b¸o. Khi ra khái phÇn nã khai b¸o th× nã kh«ng cßn dïng ®-îc n÷a. C¸c nguyªn lý cña biÕn côc bé: + C¸c biÕn côc bé ( dï trïng tªn víi biÕn toµn côc) còng kh«ng lµm thay ®æi gi¸ trÞ cña biÕn toµn côc. + Mäi tham biÕn h×nh thøc lo¹i truyÒn theo trÞ trong c¸c ch-¬ng tr×nh con( thñ tôc vµ hµm) ®Òu lµ c¸c biÕn côc bé. + C¸c biÕn khai b¸o trong c¸c ch-¬ng tr×nh con ®Òu lµ c¸c biÕn côc bé. +Khi ph¶i sö dông biÕn phô th× nªn dïng biÕn côc bé. Ph¹m vi côc bé cã thÓ lång nhau. Mçi khèi cã chøa mét c©u lÖnh khai b¸o ®Òu duy tr× ph¹m vi côc bé riªng cña nã. 16 Ch-¬ng III. Ch-¬ng tr×nh cã sö dông ®Þnh nghÜa hµm, biÕn toµn côc, biÕn côc bé. #include #include #include #include struct MT { double a[20][20]; int n; }; struct VT { double b[20]; int n; }; ostream & operator<<(ostream & os, const MT & x); ostream & operator<<(ostream & os, const VT & y); istream & operator>>(istream & is, MT & x); istream & operator>>(istream & is, VT & y); MT operator+(const MT & x1,const MT & x2); MT operator-(const MT & x1,const MT & x2); MT operator*( const MT & x1,const MT & x2); VT operator*(const MT & x, const VT & y); MT operator!(MT x); ostream & operator<<(ostream & os, const MT & x) { os<>(istream & is, MT & x); { cout<<"- cap ma tran:"; is>>x.n; cout<<"Nhap cac phan tu:\n"; for(int i=1;i<=x.n;++i) for(int j=1;j<=x.n;++j) { cout<<"PT hang"<>x.a[i][j]; } return is; } istream & operator>>(istream & is, VT & y) { cout<<"- cap vector:"; is>>y.n; cout<<"Nhap cac phan tu:\n"; for(int i=1;i<=y.n;++i) { cout<<"Phan tu thu"<>y.b[i]; } return is; } MT operator+(const MT & x1,const MT & x2) { if(x1.n!=x2.n) { cout<<"\n Khong thuc hien duoc phep cong vi 2 ma tran khong cung cap"; getch(); return x1; } else { MT x; int i,j,n; n=x.n=x1.n; for(i=1;i<=n;++i) for(j=1;j<=n;++j) x.a[i][j]=x1.a[i][j]+x2.a[i][j]; return x; } } 18 MT operator-(const MT & x1,const MT & x2) { if(x1.n!=x2.n) { cout<<"\n Khong thuc hien duoc phep tru vi 2 ma tran khong cung cap"; getch(); return x1; } else { MT x; int i,j,n; n=x.n=x1.n; for(i=1;i<=n;++i) for(j=1;j<=n;++j) x.a[i][j]=x1.a[i][j]-x2.a[i][j]; return x; } } MT operator*(const MT & x1,const MT & x2) { if(x1.n!=x2.n) { cout<<"\n Khong thuc hien duoc phep nhan vi 2 ma tran khong cung cap"; getch(); return x1; } else { MT x; int i,j,n,k; n=x.n=x1.n; for(i=1;i<=n;++i) for(j=1;j<=n;++j) { x.a[i][j]=0.0; for(k=1;k<=n;++k) x.a[i][j]+=x1.a[i][j]*x2.a[i][j]; } return x; } } VT operator*(const MT & x,const VT & y) { if(x.n!=y.n) 19 { cout<<"\n cap ma tran khac cap vector, phep nhan vo nghia"; getch(); return y; } else { VT z; int n; n=z.n=y.n; for(int i=1;i<=n;++i) { z.b[i]=0; for(int j=1;j<=n;++j z.b[i]+=x.a[i][j]*y.b[j]; } return z; } } MT operator!(MT x) { MT v; int i,j,k,r,n; double tg; n=v.n=x.n; for(i=1;i<=n;++i) for(j=1;j<=n;++j) if(i==j) v.a[i][j]=1; else v.a[i][j]=0; for(k=1;k<=n;++k) { r=k; for(i=k+1;i<=n;++i) if(abs(x.a[i][k]>abs(x.a[r][k]))r=i; if(abs(x.a[r][k])<1.0E-8) { cout<<"\n Ma tran suy bien, khong co nghich dao"; getch(); return x; } /* Hoan vi hang r va hang k */ for(j=1;j<=n;++j) { tg=x.a[k][j]; x.a[k][j]=x.a[r][j]; x.a[r][j]=tg; 20
- Xem thêm -

Tài liệu liên quan