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

  • Số trang: 24 |
  • Loại file: PDF |
  • Lượt xem: 12 |
  • Lượt tải: 0
hoangtuavartar

Đã đăng 24721 tài liệu

Mô tả:

Website: http://www.docs.vn Email : lienhe@docs.vn 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 -