Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
1,28 MB
Nội dung
-13- Ch Ch Ch Ch ơ ơ ơ ơ ng ng ng ng 2 2 2 2 Nh Nh Nh Nh ữ ữ ữ ữ ng ng ng ng m m m m ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng c c c c ủ ủ ủ ủ a a a a C++ C++ C++ C++ Mụcđíchchơngnày: 1. GiớithiệunhữngđiểmkhácbiệtchủyếugiữaCvàC++ 2. CácđiểmmớicủaC++sovớiC(nhữngvấnđềcơbảnnhất) 1. 1. 1. 1. C C C C á á á á c c c c đ đ đ đ i i i i ể ể ể ể m m m m kh kh kh kh ô ô ô ô ng ng ng ng t t t t ơ ơ ơ ơ ng ng ng ng th th th th í í í í ch ch ch ch gi gi gi gi ữ ữ ữ ữ a a a a C++ C++ C++ C++ v v v v à à à à ANSI ANSI ANSI ANSI C C C C 1.1 1.1 1.1 1.1 Đị Đị Đị Đị nh nh nh nh ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a h h h h à à à à m m m m Trongđịnhnghĩahàm,ANSICchophéphaikiểukhaibáodòngtiêuđềcủa hàm,trongkhiđóC++chỉchấpnhậnmộtcách: 1.2 1.2 1.2 1.2 Khai Khai Khai Khai b b b b á á á á o o o o h h h h à à à à m m m m nguy nguy nguy nguy ê ê ê ê n n n n m m m m ẫ ẫ ẫ ẫ u u u u TrongANSIC,khisửdụngmộthàmchađợcđịnhnghĩatrớcđótrong cùngmộttệp,tacóthể: 3. khôngcầnkhaibáo(khiđóngầmđịnhgiátrịtrảvềcủahàmlàint) 4. chỉcầnkhaibáotênhàmvàgiátrịtrảvề,khôngcầndanhsáchkiểucủa cácthamsố. 5.khaibáohàmnguyênmẫu. VớiC++,chỉcóphơngphápthứ3làchấpnhậnđợc.Nóicáchkhác,mộtlời gọihàmchỉđợcchấpnhậnkhitrìnhbiêndịchbiếtđợckiểucủacácthamsố, kiểucủagiátrịtrảvề.Mỗikhitrìnhbiêndịchgặpmộtlờigọihàm,nósẽsosánh cáckiểucủacácđốisốđợctruyềnvớicácthamsốhìnhthứctơngứng.Trong trờnghợpcósựkhácnhau,cóthểthựchiệnmộtsốchuyểnkiểutựđộngđểcho hàmnhậnđợccódanhsáchcácthamsốđúngvớikiểuđãđợckhaibáocủahàm. Tuynhiênphảituântheonguyêntắcchuyểnkiểutựđộngsauđây: char char char char > int int int int > longint longint longint longint > float float float float > double double double double V V V V í í í í d d d d ụ ụ ụ ụ 2.1 2.1 2.1 2.1 doublefexple(int,double) /*khaibáohàmfexple*/ /*cảCvàC++chophép*/ double fexple(intu,double v) int u; double v; {} /*C++khôngcókhaibáokiểunày*/ double fexple(u,v) int u; double v; {} CácmởrộngcủaC++ -14- main(){ int n; char c; double z,res1,res2,res3; res1 = fexple(n,z); /*khôngcóchuyểnđổikiểu*/ res2 = fexple(c,z); /*cóchuyểnđổ i kiểu,từchar(c)thànhint*/ res3 = fexple(z,n); /*cóchuyểnđổ i kiểu,từdouble(z)thànhintvà t ừint(n) thànhdouble*/ } TrongC++bắtbuộcphảicótừkhoávoid void void void trớctêncủahàmtrongphầnkhai báođểchỉrằnghàmkhôngtrảvềgiátrị.Trờnghợpkhôngcó,trìnhbiêndịch ngầmhiểukiểucủagiátrịtrảvềlàint int int int vànhthếtrongthânhàmbắtbuộcphảicó câulệnhreturn return return return .Điềunàyhoàntoànkhôngcầnthiếtđốivớimôtảtrongngônngữ C. Thựcra,cáckhảnăngvừamôtảkhônghoàntoànlàđiểmkhôngtơngthích giữaCvàC++màđóchỉlàsựgạnlọccácđiểmyếuvàhoànthiệncácmặtcòn chahoànchỉnhcủaC. 1.3 1.3 1.3 1.3 S S S S ự ự ự ự t t t t ơ ơ ơ ơ ng ng ng ng th th th th í í í í ch ch ch ch gi gi gi gi ữ ữ ữ ữ a a a a con con con con tr tr tr tr ỏ ỏ ỏ ỏ void void void void v v v v à à à à c c c c á á á á c c c c con con con con tr tr tr tr ỏ ỏ ỏ ỏ kh kh kh kh á á á á c c c c TrongANSIC,kiểuvoid void void void * * * * tơngthíchvớicáckiểutrỏkháccảhaichiều. Chẳnghạnvớicáckhaibáosau: void*gen; int*adj; haiphépgánsauđâylàhợplệtrongANSIC: gen = adj; adj = gen; Thựcra,haicâulệnhtrênđãkèmtheocácphépchuyểnkiểungầmđịnh: int* int* int* int* > void* void* void* void* đốivớicâulệnhthứnhất,và void* void* void* void* > int* int* int* int* đốivớicâulệnhthứhai. CácmởrộngcủaC++ -15- TrongC++,chỉcóchuyểnđổikiểungầmđịnhtừmộtkiểutrỏtuỳýthành void* void* void* void* làchấpnhậnđợc,cònmuốnchuyểnđổingợclại,taphảithựchiệnchuyển kiểutờngminhnhcáchviếtsauđây: gen = adj; adj = (int*)gen; 2. 2. 2. 2. C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng v v v v à à à à o/ra o/ra o/ra o/ra m m m m ớ ớ ớ ớ i i i i c c c c ủ ủ ủ ủ a a a a C++ C++ C++ C++ Cáctiệníchvào/ra(hàmhoặcmacro)củathviệnCchuẩnđềucóthểsửdụng trongC++.Đểsửdụngcáchàmnàychúngtachỉcầnkhaibáotệptiêuđềtrongđó cóchứakhaibáohàmnguyênmẫucủacáctiệníchnày. Bêncạnhđó,C++còncàiđặtthêmcáckhảnăngvào/ramớidựatrênhaitoán tử<<(xuất)và>>(nhập)vớicácđặctínhsauđây: 6. đơngiảntrongsửdụng 7.cókhảnăngmởrộngđốivớicáckiểumớitheonhucầucủangờilập trình. Trongtệptiêuđề iostream.h ngờitađịnhnghĩahaiđốitợngcout cout cout cout vàcin cin cin cin tơngứngvớihaithiếtbịchuẩnra/vàođợcsửdụngcùngvới<<và>>.Thông thờngtahiểucout cout cout cout làmànhìnhcòncin cin cin cin làbànphím. 2.1 2.1 2.1 2.1 Ghi Ghi Ghi Ghi d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u l l l l ê ê ê ê n n n n thi thi thi thi ế ế ế ế t t t t b b b b ị ị ị ị ra ra ra ra chu chu chu chu ẩ ẩ ẩ ẩ n n n n (m (m (m (m à à à à n n n n h h h h ì ì ì ì nh) nh) nh) nh) cout cout cout cout Trongphầnnàytaxemxétmộtsốvídụminhhoạcáchsửdụngcout cout cout cout và<< đểđathôngtinramànhình. V V V V í í í í d d d d ụ ụ ụ ụ 2.2 2.2 2.2 2.2 Chơngtrìnhsauminhhoạcáchsửdụngcout cout cout cout đểđaramànhìnhmộtxâuký tự. #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ main() { cout << "Welcome C++"; } WelcomeC++ << làmộttoántửhaingôi,toánhạngởbêntráimôtảnơikếtxuấtthôngtin (cóthểlàmộtthiếtbịngoạivichuẩnhaylàmộttậptin),toánhạngbênphảicủa << làmộtbiểuthứcnàođó.Trongchơngtrìnhtrên,câulệnh cout <<"Welcome C++" đaramànhìnhxâukýtự Welcome C++ . CácmởrộngcủaC++ -16- V V V V í í í í d d d d ụ ụ ụ ụ 2.3 2.3 2.3 2.3 Sửdụngcout cout cout cout và<<đaracácgiátrịkhácnhau: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value : "; cout <<n; } Value:25 Trongvídụnàychúngtađãsửdụngtoántử<<đểinramànhìnhđầutiênlà mộtxâukýtự,sauđólàmộtsốnguyên.Chứcnăngcủatoántử << rõrànglà khácnhautronghailầnkếtxuấtdữliệu:vớicâulệnhthứnhất,chỉđaramànhình mộtdãycáckýtự,ởcâulệnhsau,đãsửdụngmộtkhuônmẫuđểchuyểnđổimột giátrịnhịphânthànhmộtchuỗicáckýtựchữsố.Việcmộttoántửcónhiềuvaitrò khácnhauliênquanđếnmộtkháiniệmmớitrongC++,đólà Địnhnghĩachồng toántử .Điềunàysẽđợcđềcậpđếntrongchơng4. V V V V í í í í d d d d ụ ụ ụ ụ 2.4 2.4 2.4 2.4 Trongvídụnàytagộpcảhaicâulệnhkếtxuấttrongvídụ2.3thànhmộtcâu lệnhphứctạphơn,tuykếtquảkhôngkháctrớc: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value :" <<n; } Value:25 2.2 2.2 2.2 2.2 C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng vi vi vi vi ế ế ế ế t t t t ra ra ra ra tr tr tr tr ê ê ê ê n n n n cout cout cout cout . . . . Chúngtavừaxemxétmộtvàivídụviếtmộtxâukýtự,mộtsốnguyên.Một cáchtổngquát,chúngtacóthểsửdụngtoántử<<cùngvớicout cout cout cout đểđaramàn hìnhgiátrịcủamộtbiểuthứccócáckiểusau: 8. kiểudữliệucơsở(char char char char , int int int int , float float float float , double double double double ), 9.xâukýtự:(char char char char * ), 10. contrỏ(trừcontrỏchar char char char *) CácmởrộngcủaC++ -17- Trongtrờnghợpmuốnđarađịachỉbiếnxâukýtựphảithựchiệnphép chuyểnkiểutờngminh,chẳnghạn ( char char char char *) > ( void void void void *) . Xétvídụsauđây: V V V V í í í í d d d d ụ ụ ụ ụ 2.4 2.4 2.4 2.4 #include <iostream.h> voidvoidmain(){ int n= 25; long p= 250000; unsigned q= 63000; char c= 'a'; float x= 12.3456789; double y= 12.3456789e16; char * ch = "Welcome C++"; int*ad = &n; cout <<"Value of n:" << n <<"\n"; cout <<"Value of p:" << p <<"\n"; cout <<"Value of c:" << c <<"\n"; cout <<"Value of q:" << q <<"\n"; cout <<"Value of x:" << x <<"\n"; cout <<"Value of y:" << y <<"\n"; cout <<"Value ofch :" <<ch <<"\n"; cout <<"Addrese of n:" <<ad <<"\n"; cout <<"Addrese dech :" << (void*)ch<<"\n"; } Valueofn:25 Valueofp:250000 Valueofc:a Valueofq:63000 Valueofx:12.345679 Valueofy:1.234567e+17 Valueofch:WelcomeC++ Addreseofn:0xfff2 Addresedech:0x00b2 CácmởrộngcủaC++ -18- 2.3 2.3 2.3 2.3 Đọ Đọ Đọ Đọ c c c c d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u t t t t ừ ừ ừ ừ thi thi thi thi ế ế ế ế t t t t b b b b ị ị ị ị v v v v à à à à o o o o chu chu chu chu ẩ ẩ ẩ ẩ n n n n (b (b (b (b à à à à n n n n ph ph ph ph í í í í m m m m ) ) ) ) cin cin cin cin Nếunhcout cout cout cout dùngđểchỉthiếtbịrachuẩn,thìcin cin cin cin đợcdùngđểchỉmột thiếtbịvàochuẩn.Mộtcáchtơngtự,toántử>>đợcdùngkèmvớicin cin cin cin đểnhập vàocácgiátrị;haicâulệnh int n; cin >>n; yêucầuđọccáckýtựtrênbànphímvàchuyểnchúngthànhmộtsốnguyênvà gánchobiếnn. Giốngnhcout cout cout cout và << ,cóthểnhậpnhiềugiátrịcùngkiểuhaykháckiểu bằngcáchviếtliêntiếptêncácbiếncầnnhậpgiátrịcùngvới >> ngaysaucin cin cin cin . Chẳnghạn: int n; float p; char c; cin >> c >> n >>p; Cóthểsửdụngtoántử >> đểnhậpdữliệuchocácbiếncókiểu char char char char ,int int int int , float float float float ,double double double double vàchar char char char *. Giốngvớihàm scanf() ,cin cin cin cin tuântheomộtsốquiớcdùngtrongviệcphân tíchcáckýtự: (i) Cácgiátrịsốđợcphâncáchbởi:SPACE,TAB,CR,LF.Khigặpmộtký tựkhônghợplệ(dấu.đốivớisốnguyên,chữcáiđốivớisố, )sẽ kếtthúcviệcđọctừcin cin cin cin ;kýtựkhônghợplệnàysẽđợcxemxéttrong lầnđọcsau. (ii)Đốivớigiátrịxâukýtự,dấuphâncáchcũnglàSPACE,TAB,CR,còn đốivớigiátrịkýtự,dấuphâncáchlàkýtựCR.Tronghaitrờnghợpnày khôngcókháiniệmkýtựkhônghợplệ.MãsinhradobấmphímEnter củalầnnhậptrớcvẫnđợcxéttronglầnnhậpxâu/kýtựtiếptheovàdo vậysẽcónguycơkhôngnhậpđợcđúnggiátrịmongmuốnkhiđara lệnhnhậpxâukýtựhoặckýtựngaysaucáclệnhnhậpcácgiátrịkhác. Giảiphápkhắcphụcvấnđềnàyđểđảmbảocôngviệcdiễnrađúngtheoý làtrớcmỗilầngọilệnhnhậpdữliệuchoxâu/kýtựtasửdụngmộttrong haichỉthịsauđây: fflush(stdin); //khaibáotrong stdio.h cin.clear(); //hàmthànhphầncủa l ớpđịnhnghĩađố i tợng cin CácmởrộngcủaC++ -19- Tathamkhảochơngtrìnhsau: V V V V í í í í d d d d ụ ụ ụ ụ 2.6 2.6 2.6 2.6 #include<iostream.h> #include<conio.h> voidmain() { int n; float x; chart[81]; clrscr(); do{ cout << "Nhapvaomot so nguyen, mot xau, mot so thuc :"; cin >>n>>t>>x; cout << "Danhap "<<n<< "," <<t<< " va"<<x<< "\n"; } while(n); } Nhapvaomotsonguyen,motxau,motsothuc:3long3.4 Danhap3,longva3.4 Nhapvaomotsonguyen,motxau,motsothuc:5hung5.6 Danhap5,hungand5.6 Nhapvaomotsonguyen,motxau,motsothuc:04 3 Danhap0,4va3 3. 3. 3. 3. Nh Nh Nh Nh ữ ữ ữ ữ ng ng ng ng ti ti ti ti ệ ệ ệ ệ n n n n í í í í ch ch ch ch cho cho cho cho ng ng ng ng ờ ờ ờ ờ i i i i l l l l ậ ậ ậ ậ p p p p tr tr tr tr ì ì ì ì nh nh nh nh 3.1 3.1 3.1 3.1 Ch Ch Ch Ch ú ú ú ú th th th th í í í í ch ch ch ch cu cu cu cu ố ố ố ố i i i i d d d d ò ò ò ò ng ng ng ng Mọikýhiệuđisau//chođếnhếtdòngđợccoilàchúthích,đợcchơng trìnhdịchbỏquakhibiêndịchchơngtrình. Xétvídụsau: cout << "Xin chao\n"; //lờ i chàohỏi Thờngtasửdụngchúthíchcuốidòngkhimuốngiảithíchýnghĩacủamột câulệnhgìđó.Đốivớimộtđoạnchơngtrìnhkiểuchúthíchgiớihạnbởi/*và */chophépmôtảđợcnhiềuthôngtinhơn. CácmởrộngcủaC++ -20- 3.2 3.2 3.2 3.2 Khai Khai Khai Khai b b b b á á á á o o o o m m m m ọ ọ ọ ọ i i i i n n n n ơ ơ ơ ơ i i i i TrongC++khôngnhấtthiếtphảinhómlênđầucáckhaibáođặtbêntrongmột hàmhaymộtkhốilệnh,màcóthểđặtxenkẽvớicáclệnhxửlý.Vídụ. { int n; n=23; cout <<n<<"\n"; int*p=&n; cout <<p<<"\n"; } Giátrịkhởiđầuchocácbiếncóthểthayđổitạicácthờiđiểmchạychơng trìnhkhácnhau. Mộtvídụminhhoạchokhảnăngđịnhnghĩakhắpmọinơilàcóthểkhaibáo cácbiếnđiềukhiểnngaybêntrongcácvònglặpnếubiếnđóchađợckhaibáo trớcđótrongcùngkhốilệnhcũngnhkhôngđợckhaibáolạiởphầnsau.Xem đoạnchơngtrìnhsau: { //chacói for(inti=0; ; ) //khôngđợckhaibáo i } 3.3 3.3 3.3 3.3 To To To To á á á á n n n n t t t t ử ử ử ử ph ph ph ph ạ ạ ạ ạ m m m m vi vi vi vi :: :: :: :: Bìnhthờng,biếncụcbộchelấpbiếntoàncụccùngtên.Chẳnghạn: #include <iostream.h> int x; main() { int x= 10; //xcụcbộ cout<<x<< \n ; //xcụcbộ } CácmởrộngcủaC++ -21- Trongnhữngtrờnghợpcầnthiết,khimuốntruyxuấttớibiếntoàncụcphảisử dụngtoántử:: :: :: :: trớctênbiến: #include <iostream.h> int x; main() { int x= 10; //xcụcbộ ::x = 10; //xtoàncục cout<<x<< \n ; //xcụcbộ cout<<::x<< \n ; //xtoàncục } 4. 4. 4. 4. H H H H à à à à m m m m inline inline inline inline TrongC++cóthểđịnhnghĩacáchàmđợcthaythếtrựctiếpthànhmãlệnh máytạichỗgọi(inline)mỗilầnđợcthamchiếu.Điểmnàyrấtgiốngvớicáchhoạt độngcủacácmacrocóthamsốtrongC.Ưuđiểmcủacáchàminline inline inline inline làchúng khôngđòihỏicácthủtụcbổsungkhigọihàmvàtrảgiátrịvề.Dovậyhàminline inline inline inline đợcthựchiệnnhanhhơnsovớicáchàmthôngthờng. Mộthàminline inline inline inline đợcđịnhnghĩavàđợcsửdụnggiốngnhbìnhthờng. Điểmkhácnhauduynhấtlàphảiđặtmôtảinline inline inline inline trớckhaibáohàm. Xétvídụsauđây: V V V V í í í í d d d d ụ ụ ụ ụ 2.7 2.7 2.7 2.7 #include <iostream.h> #include<math.h> #include<conio.h> inlinedoublenorme(double vec[3]); //khaibáohàminline voidmain(){ clrscr(); doublev1[3],v2[3]; int i; for(i=0;i<3;i++) { v1[i]=i;v2[i]=2*i-1;} cout <<"norme cua v1 : "<<norme(v1)<<" - norme cua v2 : "<<norme(v2); CácmởrộngcủaC++ -22- getch(); } /*Địnhnghĩahàminline*/ inlinedoublenorme(doublevec[3]) { int i;double s=0; for(i=0;i<3;i++) s+=vec[i]*vec[i]; return(sqrt(s)); } normecuav1:2.236068-normecuav2:3.316625 Hàm norme() nhằmmụcđíchtínhchuẩncủa vector vớibathànhphần. Từkhoáinline inline inline inline yêucầuchơngtrìnhbiêndịchxửlýhàmnormekhácvớicác hàmthôngthờng.Cụthểlà,mỗilầngọi norme() ,trìnhbiêndịchghéptrựctiếp cácchỉthịtơngứngcủahàmvàotrongchơngtrình(ởdạngngônngữmáy).Do đócơchếquảnlýlờigọivàtrởvềkhôngcầnnữa(khôngcầnlungữcảnh,sao chépcácthôngsố ),nhờvậytiếtkiệmthờigianthựchiện.Bêncạnhđócácchỉthị tơngứngsẽđợcsinhramỗikhigọihàmdođóchiphílutrữtănglênkhihàm đợcgọinhiềulần. Điểmbấtlợikhisửdụngcáchàminline inline inline inline lànếuchúngquálớnvàđợcgọi thờngxuyênthìkíchthớcchơngtrìnhsẽtănglênrấtnhanh.Vìlýdonày,chỉ nhữnghàmđơngiản,khôngchứacáccấutrúclặpmớiđợckhaibáolàhàminline inline inline inline . Việcsửdụnghàminline inline inline inline sovớicácmacrocóthamsốcóhaiđiểmlợi.Trớc hếthàminline inline inline inline cungcấpmộtcáchcócấutrúchơnkhimởrộngcáchàmđơngiản thànhhàminline inline inline inline .Thựctếchothấykhitạomộtmacrocóthamsốthờnghayquên cácdấuđóngngoặc,rấtcầnđếnđểđảmbảosựmởrộngnộituyếnriêngtrongmỗi trờnghợp.Vớimacrocóthểgâyrahiệuứngphụhoặcbịhạnchếkhảnăngsử dụng.Chẳnghạnvớimacro: #define square(x){x++*x++} Vớilờigọi square(a) với a làbiếnsẽsảnsinhrabiểuthức a++*a++ vàkếtquảlàlàmthayđổigiátrị củabiếnatớihailần. Cònlờigọi [...]... thuoc can nhap? "; -3 7- Các mở rộng của C++ cin >>taille; for(nbloc=1;;nbloc++) { adr =new int [taille]; cout . -1 3- Ch Ch Ch Ch ơ ơ ơ ơ ng ng ng ng 2 2 2 2 Nh Nh Nh Nh ữ ữ ữ ữ ng ng ng ng m m m m ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng c c c c ủ ủ ủ ủ a a a a C++ C++ C++ C++ Mụcđíchchơngnày: 1. GiớithiệunhữngđiểmkhácbiệtchủyếugiữaCv C++ 2. CácđiểmmớicủaC++sovớiC(nhữngvấnđềcơbảnnhất) 1. 1. 1. 1. C C C C á á á á c c c c đ đ đ đ i i i i ể ể ể ể m m m m kh kh kh kh ô ô ô ô ng ng ng ng t t t t ơ ơ ơ ơ ng ng ng ng th th th th í í í í ch ch ch ch gi gi gi gi ữ ữ ữ ữ a a a a C++ C++ C++ C++ v v v v à à à à ANSI ANSI ANSI ANSI C C C C 1.1 1.1 1.1 1.1 Đị Đị Đị Đị nh nh nh nh ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a h h h h à à à à m m m m Trongđịnhnghĩahàm,ANSICchophéphaikiểukhaibáodòngtiêuđềcủa hàm,trongkhiđóC++chỉchấpnhậnmộtcách: 1.2 1.2 1.2 1.2 Khai Khai Khai Khai b b b b á á á á o o o o h h h h à à à à m m m m nguy nguy nguy nguy ê ê ê ê n n n n m m m m ẫ ẫ ẫ ẫ u u u u TrongANSIC,khisửdụngmộthàmchađợcđịnhnghĩatrớcđótrong cùngmộttệp,tacóthể: 3. khôngcầnkhaibáo(khiđóngầmđịnhgiátrịtrảvềcủahàmlàint) 4. chỉcầnkhaibáotênhàmvàgiátrịtrảvề,khôngcầndanhsáchkiểucủa cácthamsố. 5.khaibáohàmnguyênmẫu. VớiC++,chỉcóphơngphápthứ3làchấpnhậnđợc.Nóicáchkhác,mộtlời gọihàmchỉđợcchấpnhậnkhitrìnhbiêndịchbiếtđợckiểucủacácthamsố, kiểucủagiátrịtrảvề.Mỗikhitrìnhbiêndịchgặpmộtlờigọihàm,nósẽsosánh cáckiểucủacácđốisốđợctruyềnvớicácthamsốhìnhthứctơngứng.Trong trờnghợpcósựkhácnhau,cóthểthựchiệnmộtsốchuyểnkiểutựđộngđểcho hàmnhậnđợccódanhsáchcácthamsốđúngvớikiểuđãđợckhaibáocủahàm. Tuynhiênphảituântheonguyêntắcchuyểnkiểutựđộngsauđây: char char char char . > int* int* int* int* đốivớicâulệnhthứhai. CácmởrộngcủaC++ -1 5- TrongC++,chỉcóchuyểnđổikiểungầmđịnhtừmộtkiểutrỏtuỳýthành void* void* void* void* làchấpnhậnđợc,cònmuốnchuyểnđổingợclại,taphảithựchiệnchuyển kiểutờngminhnhcáchviếtsauđây: gen = adj; adj = (int*)gen; 2. 2. 2. 2. C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng v v v v à à à à o/ra o/ra o/ra o/ra m m m m ớ ớ ớ ớ i i i i c c c c ủ ủ ủ ủ a a a a C++ C++ C++ C++ Cáctiệníchvào/ra(hàmhoặcmacro)củathviệnCchuẩnđềucóthểsửdụng trongC++.Đểsửdụngcáchàmnàychúngtachỉcầnkhaibáotệptiêuđềtrongđó cóchứakhaibáohàmnguyênmẫucủacáctiệníchnày. Bêncạnhđó,C++còncàiđặtthêmcáckhảnăngvào/ramớidựatrênhaitoán tử<<(xuất)và>>(nhập)vớicácđặctínhsauđây: 6. đơngiảntrongsửdụng 7.cókhảnăngmởrộngđốivớicáckiểumớitheonhucầucủangờilập trình. Trongtệptiêuđề iostream.h ngờitađịnhnghĩahaiđốitợngcout cout cout cout vàcin cin cin cin tơngứngvớihaithiếtbịchuẩnra/vàođợcsửdụngcùngvới<<và>>.Thông thờngtahiểucout cout cout cout làmànhìnhcòncin cin cin cin làbànphím. 2.1 2.1 2.1 2.1 Ghi Ghi Ghi Ghi d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u l l l l ê ê ê ê n n n n thi thi thi thi ế ế ế ế t t t t b b b b ị ị ị ị ra ra ra ra chu chu chu chu ẩ ẩ ẩ ẩ n n n n (m (m (m (m à à à à n n n n h h h h ì ì ì ì nh) nh) nh) nh) cout cout cout cout Trongphầnnàytaxemxétmộtsốvídụminhhoạcáchsửdụngcout cout cout cout và<< đểđathôngtinramànhình. V V V V í í í í d d d d ụ ụ ụ ụ 2.2 2.2 2.2 2.2 Chơngtrìnhsauminhhoạcáchsửdụngcout cout cout cout đểđaramànhìnhmộtxâuký tự. #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ main() { cout << "Welcome C++& quot;; } WelcomeC++ << làmộttoántửhaingôi,toánhạngởbêntráimôtảnơikếtxuấtthôngtin (cóthểlàmộtthiếtbịngoạivichuẩnhaylàmộttậptin),toánhạngbênphảicủa << làmộtbiểuthứcnàođó.Trongchơngtrìnhtrên,câulệnh cout <<"Welcome C++& quot; đaramànhìnhxâukýtự Welcome C++ . CácmởrộngcủaC++ -1 6- V V V V í í í í d d d d ụ ụ ụ ụ 2.3 2.3 2.3 2.3 Sửdụngcout cout cout cout và<<đaracácgiátrịkhácnhau: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value : "; cout <<n; } Value:25 Trongvídụnàychúngtađãsửdụngtoántử<<đểinramànhìnhđầutiênlà mộtxâukýtự,sauđólàmộtsốnguyên.Chứcnăngcủatoántử << rõrànglà khácnhautronghailầnkếtxuấtdữliệu:vớicâulệnhthứnhất,chỉđaramànhình mộtdãycáckýtự,ởcâulệnhsau,đãsửdụngmộtkhuônmẫuđểchuyểnđổimột giátrịnhịphânthànhmộtchuỗicáckýtựchữsố.Việcmộttoántửcónhiềuvaitrò khácnhauliênquanđếnmộtkháiniệmmớitrongC++,đólà Địnhnghĩachồng toántử .Điềunàysẽđợcđềcậpđếntrongchơng4. V V V V í í í í d d d d ụ ụ ụ ụ 2.4 2.4 2.4 2.4 Trongvídụnàytagộpcảhaicâulệnhkếtxuấttrongvídụ2.3thànhmộtcâu lệnhphứctạphơn,tuykếtquảkhôngkháctrớc: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value :" <<n; } Value:25 2.2 2.2 2.2 2.2 C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng vi vi vi vi ế ế ế ế t t t t ra ra ra ra tr tr tr tr ê ê ê ê n n n n cout cout cout cout . . . . Chúngtavừaxemxétmộtvàivídụviếtmộtxâukýtự,mộtsốnguyên.Một cáchtổngquát,chúngtacóthểsửdụngtoántử<<cùngvớicout cout cout cout đểđaramàn hìnhgiátrịcủamộtbiểuthứccócáckiểusau: 8. kiểudữliệucơsở(char char char char , int int int int , float float float float , double double double double ), 9.xâukýtự:(char char char char * ), 10. contrỏ(trừcontrỏchar char char char *) CácmởrộngcủaC++ -1 7- Trongtrờnghợpmuốnđarađịachỉbiếnxâukýtựphảithựchiệnphép chuyểnkiểutờngminh,chẳnghạn ( char char char char *) . > int* int* int* int* đốivớicâulệnhthứhai. CácmởrộngcủaC++ -1 5- TrongC++,chỉcóchuyểnđổikiểungầmđịnhtừmộtkiểutrỏtuỳýthành void* void* void* void* làchấpnhậnđợc,cònmuốnchuyểnđổingợclại,taphảithựchiệnchuyển kiểutờngminhnhcáchviếtsauđây: gen = adj; adj = (int*)gen; 2. 2. 2. 2. C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng v v v v à à à à o/ra o/ra o/ra o/ra m m m m ớ ớ ớ ớ i i i i c c c c ủ ủ ủ ủ a a a a C++ C++ C++ C++ Cáctiệníchvào/ra(hàmhoặcmacro)củathviệnCchuẩnđềucóthểsửdụng trongC++.Đểsửdụngcáchàmnàychúngtachỉcầnkhaibáotệptiêuđềtrongđó cóchứakhaibáohàmnguyênmẫucủacáctiệníchnày. Bêncạnhđó,C++còncàiđặtthêmcáckhảnăngvào/ramớidựatrênhaitoán tử<<(xuất)và>>(nhập)vớicácđặctínhsauđây: 6. đơngiảntrongsửdụng 7.cókhảnăngmởrộngđốivớicáckiểumớitheonhucầucủangờilập trình. Trongtệptiêuđề iostream.h ngờitađịnhnghĩahaiđốitợngcout cout cout cout vàcin cin cin cin tơngứngvớihaithiếtbịchuẩnra/vàođợcsửdụngcùngvới<<và>>.Thông thờngtahiểucout cout cout cout làmànhìnhcòncin cin cin cin làbànphím. 2.1 2.1 2.1 2.1 Ghi Ghi Ghi Ghi d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u l l l l ê ê ê ê n n n n thi thi thi thi ế ế ế ế t t t t b b b b ị ị ị ị ra ra ra ra chu chu chu chu ẩ ẩ ẩ ẩ n n n n (m (m (m (m à à à à n n n n h h h h ì ì ì ì nh) nh) nh) nh) cout cout cout cout Trongphầnnàytaxemxétmộtsốvídụminhhoạcáchsửdụngcout cout cout cout và<< đểđathôngtinramànhình. V V V V í í í í d d d d ụ ụ ụ ụ 2.2 2.2 2.2 2.2 Chơngtrìnhsauminhhoạcáchsửdụngcout cout cout cout đểđaramànhìnhmộtxâuký tự. #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ main() { cout << "Welcome C++& quot;; } WelcomeC++ << làmộttoántửhaingôi,toánhạngởbêntráimôtảnơikếtxuấtthôngtin (cóthểlàmộtthiếtbịngoạivichuẩnhaylàmộttậptin),toánhạngbênphảicủa << làmộtbiểuthứcnàođó.Trongchơngtrìnhtrên,câulệnh cout <<"Welcome C++& quot; đaramànhìnhxâukýtự Welcome C++ . CácmởrộngcủaC++ -1 6- V V V V í í í í d d d d ụ ụ ụ ụ 2.3 2.3 2.3 2.3 Sửdụngcout cout cout cout và<<đaracácgiátrịkhácnhau: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value : "; cout <<n; } Value:25 Trongvídụnàychúngtađãsửdụngtoántử<<đểinramànhìnhđầutiênlà mộtxâukýtự,sauđólàmộtsốnguyên.Chứcnăngcủatoántử << rõrànglà khácnhautronghailầnkếtxuấtdữliệu:vớicâulệnhthứnhất,chỉđaramànhình mộtdãycáckýtự,ởcâulệnhsau,đãsửdụngmộtkhuônmẫuđểchuyểnđổimột giátrịnhịphânthànhmộtchuỗicáckýtựchữsố.Việcmộttoántửcónhiềuvaitrò khácnhauliênquanđếnmộtkháiniệmmớitrongC++,đólà Địnhnghĩachồng toántử .Điềunàysẽđợcđềcậpđếntrongchơng4. V V V V í í í í d d d d ụ ụ ụ ụ 2.4 2.4 2.4 2.4 Trongvídụnàytagộpcảhaicâulệnhkếtxuấttrongvídụ2.3thànhmộtcâu lệnhphứctạphơn,tuykếtquảkhôngkháctrớc: #include <iostream.h> /*phảikhaibáokhimuốnsửdụngcout*/ voidmain() { int n= 25; cout << "Value :" <<n; } Value:25 2.2 2.2 2.2 2.2 C C C C á á á á c c c c kh kh kh kh ả ả ả ả n n n n ă ă ă ă ng ng ng ng vi vi vi vi ế ế ế ế t t t t ra ra ra ra tr tr tr tr ê ê ê ê n n n n cout cout cout cout . . . . Chúngtavừaxemxétmộtvàivídụviếtmộtxâukýtự,mộtsốnguyên.Một cáchtổngquát,chúngtacóthểsửdụngtoántử<<cùngvớicout cout cout cout đểđaramàn hìnhgiátrịcủamộtbiểuthứccócáckiểusau: 8. kiểudữliệucơsở(char char char char , int int int int , float float float float , double double double double ), 9.xâukýtự:(char char char char * ), 10. contrỏ(trừcontrỏchar char char char *) CácmởrộngcủaC++ -1 7- Trongtrờnghợpmuốnđarađịachỉbiếnxâukýtựphảithựchiệnphép chuyểnkiểutờngminh,chẳnghạn ( char char char char *)