8/14/2019 Baigiang C++
1/50
MC LC
BI 1. CU TRC MT CHNG TRNH TRONG C++ .................................31.1. Gii thiu v C++ .........................................................................................31.2. V d v mt chng trnh trong C++ ..........................................................3
BI 2. CC BIN, KIU V HNG S ..............................................................52.1. T kho .........................................................................................................52.2. Cc kiu d liu ............................................................................................62.3. Khai bo mt bin .........................................................................................62.3. Khi to cc bin ..........................................................................................82.4. Phm vi hot ng ca cc bin ....................................................................82.5. Cc hng s ...................................................................................................92.6. nh ngha cc hng (#define) ....................................................................112.7. Khai bo cc hng (const) ...........................................................................11
BI 3. CC TON T .........................................................................................123.1. Ton t gn (=). ..........................................................................................123.2. Cc ton t s hc ......................................................................................123.3. Cc ton t gn phc hp ..........................................................................133.4. Cc ton t quan h ....................................................................................143.5. Cc ton t logic ........................................................................................143.6. Ton t iu kin ........................................................................................153.7. Th t u tin ca cc ton t ....................................................................16
BI 4. NHP XUT D LIU TRONG C++ .....................................................174.1. Xut d liu (cout) ......................................................................................18
4.2. Nhp d liu (cin).......................................................................................19BI 5. CC CU TRC IU KHIN ..............................................................20
5.1. Cu trc iu kin: if v else ......................................................................205.2. Cc cu trc lp ...........................................................................................215.3. Cc lnh r nhnh v lnh nhy ..................................................................245.4. Cu trc la chn: switch. ..........................................................................25
BI 6. HM ..........................................................................................................276.1. Gii thiu ....................................................................................................276.2. Cc hm khng kiu. Cch s dng void...................................................30
BI 7. TRUYN THAM S CHO HM .............................................................317.1. Truyn tham s theo tham s gi tr hay tham s bin............................... 317.2. Gi tr mc nh ca tham s......................................................................337.3. Qu ti cc hm...........................................................................................347.4. Cc hm inline............................................................................................35 qui.................................................................................................................357.5. Khai bo mu cho hm...............................................................................36
BI 8. MNG .......................................................................................................378.1. Khi nim mng ..........................................................................................37
8.2. Khi to mt mng.....................................................................................388.3. Truy xut n cc phn t ca mng..........................................................398.4. Mng nhiu chiu........................................................................................40
1
8/14/2019 Baigiang C++
2/50
8.5. Dng mng lm tham s.............................................................................42BI 9. XU K T ...............................................................................................43
9.1. Khi to cc xu k t. ................................................................................449.2. Gn gi tr cho xu k t .............................................................................459.3. Chuyn i xu k t sang cc kiu khc....................................................48
9.4. Cc hm thao tc trn chui ...................................................................49TI LIU THAM KHO .....................................................................................50
2
8/14/2019 Baigiang C++
3/50
BI 1. CU TRC MT CHNG TRNH TRONG C++
1.1. Gii thiu v C++
C++ l ngn ng lp trnh bc cao pht trin bi hng Borland. y l mt ngnng lp trnh hng i tng rt c a chung pht trin cc ng dng hin nay.
1.2. V d v mt chng trnh trong C++
C l mt trong nhng cch tt nht bt u hc mt ngn ng lp trnh l bng mtchng trnh. Vy y l chng trnh u tin ca chng ta :
// my first program in C++
#include int main (){
cout
8/14/2019 Baigiang C++
4/50
Theo sau main l mt cp ngoc n bi v n l mt hm. Trong C++, tt c cc hmm sau l mt cp ngoc n () th c ngha l n c th c hoc khng c tham s(khng bt buc). Ni dung ca hm main tip ngay sau phn khai bo chnh thc c
bao trong cc ngoc nhn ( { } ) nh trong v d ca chng ta
cout
8/14/2019 Baigiang C++
5/50
#include int main (){
cout
8/14/2019 Baigiang C++
6/50
Trnh dch ca bn c th thm mt t dnh ring c trng khc. V d, rt nhiu trnhdch 16 bit (nh cc trnh dch cho DOS) cn c th cc t kho far, huge v near.
Ch : Ngn ng C++ l "case sensitive" c ngha l phn bit ch hoa ch thng. Dovy bin RESULT khc vi result cng nh Result.
2.2. Cc kiu d liu
Khi lp trnh, chng ta lu tr cc bin trong b nh ca my tnh nhng my tnh phibit chng ta mun lu tr g trong chng v cc kiu d liu khc nhau s cn lng bnh khc nhau.
B nh ca my tnh chng ta c t chc thnh cc byte. Mt byte l lng b nhnh nht m chng ta c th qun l. Mt byte c th dng lu tr mt loi d liunh nh l kiu s nguyn t 0 n 255 hay mt k t. Nhng my tnh c th x l cckiu d liu phc tp hn bng cch gp nhiu byte li vi nhau, nh s nguyn di hay
s thp phn. Tip theo bn s c mt danh sch cc kiu d liu c bn trong C++ cngnh min gi tr m chng c th biu din
TnS
byteM t Min gi tr
char 1 K t hay kiu s nguyn 8-bitc du: -128 to 127khng du: 0 to 255
short 2 kiu s nguyn 16-bitc du: -32763 to 32762khng du: 0 to 65535
long 4 kiu s nguyn 32-bitc du:-2147483648 to2147483647khng du: 0 to 4294967295
int *S nguyn. di ca n ph thuc voh thng, nh trong MS-DOS n l 16-
bit, trn Windows 9x/2000/NT l 32 bit...Xem short, long
float 4 Dng du phy ng 3.4e + / - 38 (7 digits)
double 8Dng du phy ng vi chnh xcgp i
1.7e + / - 308 (15 digits)
longdouble
10 Dng du phy ng vi chnh xchn na
1.2e + / - 4932 (19 digits)
bool 1Gi tr logic. N mi c thm vochun ANSI-C++. Bi vy khng phitt c cc trnh dch u h tr n.
true hoc false
Ngoi cc kiu d liu c bn ni trn cn tn ti cc con tr v cc tham s khng kiu(void) m chng ta s xem xt sau.
2.3. Khai bo mt bin
6
8/14/2019 Baigiang C++
7/50
c th s dng mt bin trong C++, u tin chng ta phi khai bo n, ghi r n lkiu d liu no. Chng ta ch cn vit tn kiu (nh int, short, float...) tip theo sau l mt tn bin hp l. V d
int a;float mynumber;
Dng u tin khai bo mt bin kiu int vi tn l a. Dng th hai khai bo mt binkiu float vi tn mynumber. Sau khi c khai bo, cc bin trn c th c dngtrong phm vi ca chng trong chng trnh.
Nu bn mun khai bo mt vi bin c cng mt kiu v bn mun tit kim cng scvit bn c th khai bo chng trn mt dng, ngn cch cc tn bng du phy. V d
int a, b, c;
khai bo ba bin kiu int (a,b v c) v hon ton tng ng vi :
int a;int b;int c;
Cc kiu s nguyn (char, short, long and int) c th l s c du hay khng dutu theo min gi tr m chng ta cn biu din. V vy khi xc nh mt kiu s nguynchng ta t t kho signedhoc unsignedtrc tn kiu d liu. V d:
unsigned short NumberOfSons;signed int MyAccountBalance;
Nu ta khng ch r signedorunsignedn s c coi l c du, v vy trong khaibo th hai chng ta c th vit :
int MyAccountBalance
cng hon ton tng ng vi dng khai bo trn. Trong thc t, rt t khi ngi tadng n t kho signed. Ngoi l duy nht ca lut ny kiu char. Trong chun ANSI-
C++ n l kiu d liu khc vi signed char v unsigned char. c th thy r hn vic khai bo trong chng trnh, chng ta s xem xt mt onm C++ v d nh sau:
// operating with variables#include int main ()
{ // declaring variables:
4
7
8/14/2019 Baigiang C++
8/50
8/14/2019 Baigiang C++
9/50
8/14/2019 Baigiang C++
10/50
8/14/2019 Baigiang C++
11/50
8/14/2019 Baigiang C++
12/50
const int width = 100;const to char tab = '\t';const zip = 12440;
BI 3. CC TON T
Qua bi trc chng ta bit n s tn ti ca cc bin v cc hng. Trong C++, thao tc vi chng ta s dng cc ton t, l cc t kho v cc du khng c trong
bng ch ci nhng li c trn hu ht cc bn phm trn th gii. Hiu bit v chng lrt quan trng v y l mt trong nhng thnh phn c bn ca ngn ng C++.
3.1. Ton t gn (=).
Ton t gn dng gn mt gi tr no cho mt bin
a = 5;
gn gi tr nguyn 5 cho bin a. V tri bt buc phi l mt bin cn v phi cth l bt k hng, bin hay kt qu ca mt biu thc.
Cn phi nhn mnh rng ton t gn lun c thc hin t tri sang phiv khng bao gi o ngc
a = b;
gn gi tr ca bin a bng gi tr ang cha trong bin b. Ch rngchng ta ch gngi trca b cho a v s thay i ca b sau s khngnh hng n gi tr ca a.
Mt thuc tnh ca ton t gn trong C++ gp phn gip n vt ln ccngn ng lp trnh khc l vic cho php v phi c th cha cc php gnkhc. V d:
a = 2 + (b = 5);
tng ng vi
b = 5;a = 2 + b;
V vy biu thc sau cng hp l trong C++
a = b = c = 5;
gn gi tr 5 cho c ba bin a, b v c
3.2. Cc ton t s hc
Nm ton t s hc c h tr bi ngn ng l:
12
8/14/2019 Baigiang C++
13/50
+ cng- tr* nhn/ chia
% ly phn d (trong php chia)
Th t thc hin cc ton t ny cng ging nh chng c thc hin trongton hc. iu duy nht c v hi l i vi bn l php ly phn d, k hiu
bng du phn trm (%). y chnh l php ton ly phn d trong php chia hais nguyn vi nhau. V d, nu a = 11 % 3;, bin a s mang gi tr 2 v 11 =3*3 +2.
3.3. Cc ton t gn phc hp
Mt c tnh ca ngn ng C++ lm cho n ni ting l mt ngn ng sc tchchnh l cc ton t gn phc hp cho php chnh sa gi tr ca mt bin vimt trong nhng ton t c bn sau:
value += increase; tng ng vivalue = value +increase;a -= 5; tng ng vi a = a - 5;a /= b; tng ng vi a = a / b;
price *= units + 1; tng ng viprice = price
* (units + 1);
v tng t cho tt c cc ton t khc.Tng v gim.
Mt v d khc ca vic tit kim khi vit m lnh l ton t tng (++) v gim(--). Chng tng hoc gim gi tr cha trong mt bin i 1. Chng tng ngvi +=1 hoc -=1. V vy, cc dng sau l tng ng:
a++;a+=1;a=a+1;
Mt tnh cht ca ton t ny l n c th l tin thoc hu t, c ngha l cth vit trc tn bin (++a) hoc sau (a++) v mc d trong hai biu thc rtn gin n c cng ngha nhng trong cc thao tc khc khi m kt qu cavic tng hay gim c s dng trong mt biu thc th chng c th c mtkhc bit quan trng v ngha: Trong trng hp ton t c s dng nh lmt tin t (++a) gi tr c tng trc khi biu thc c tnh v gi tr tngc s dng trong biu thc; trong trng hp ngc li (a++) gi tr trong bin
a c tng sau khi tnh ton. Hy ch s khc bit :
V d 1 V d 2
13
8/14/2019 Baigiang C++
14/50
8/14/2019 Baigiang C++
15/50
!true tr v false.!false tr v true.
Ton t logic && v || c s dng khi tnh ton hai biu thc ly ra mtkt qu duy nht. Chng tng ng vi cc ton t logic AND v OR. Kt quca chng ph thuc vo mi quan h ca hai i s:
i s th nhta
i s th haib
Kt qua && b
Kt qua || b
true true true true
true false false true
false true false true
false false false falseV d:
( (5 == 5) && (3 > 6) ) tr v false( true && false ).( (5 == 5) || (3 > 6)) tr v true( true ||false ).
3.6. Ton t iu kin .
Ton t iu kin tnh ton mt biu thc v tr v mt gi tr khc tu thuc vobiu thc l ng hay sai. Cu trc ca n nh sau:
condition ? result1 : result2
Nu condition l true th gi tr tr v s l result1, nu khng gi tr trv l result2.
7==5 ? 4 : 3 tr v 3 v 7 khng bng 5.
7==5+2 ? 4 : 3 tr v 4 v 7 bng 5+2.
5>3 ? a : b tr v a, v 5 ln hn 3.a>b ? a : b tr v gi tr ln hn, a hocb.
Cc ton t chuyn i kiuCc ton t chuyn i kiu cho php bn chuyn i d liu t kiu ny sangkiu khc. C vi cch lm vic ny trong C++, cch c bn nht c tha kt ngn ng C l t trc biu thc cn chuyn i tn kiu d liu c bctrong cp ngoc n (), v d:
int i;float f = 3.14;i = (int) f;
on m trn chuyn s thp phn 3.14 sang mt s nguyn (3). y, ton tchuyn i kiu l (int). Mt cch khc lm iu ny trong C++ l s dng ccconstructors ( mt s sch thut ng ny c dch l cu tnhng ti thy n
15
8/14/2019 Baigiang C++
16/50
c v khng xui tai lm) thay v dng cc ton t : t trc biu thc cnchuyn i kiu tn kiu mi v bao bc biu thc gia mt cp ngoc n.
i = int ( f );
C hai cch chuyn i kiu u hp l trong C++. Thm vo ANSI-C++ cn
c nhng ton t chuyn i kiu mi c trng cho lp trnh hng i tng.
sizeof()Ton t ny c mt tham s, c th l mt kiu d liu hay l mt bin v trv kch c bng byte ca kiu hay i tng .
a = sizeof (char);
a s mang gi tr 1 v kiu char lun c kch c 1 byte trn mi h thng. Gi trtr v ca sizeof l mt hng s v vy n lun lun c tnh trc khi chng
trnh thc hin.
Cc ton t khcTrong C++ cn c mt s cc ton t khc, nh cc ton t lin quan n con trhay lp trnh hng i tng. Chng s c ni n c th trong cc phntng ng.
3.7. Th t u tin ca cc ton t
Khi vit cc biu thc phc tp vi nhiu ton hng cc bn c th t hi ton hng no
c tnh trc, ton hng no c tnh sau. V d nh trong biu thc sau:
a = 5 + 7 % 2
c th c hai cch hiu sau:
a = 5 + (7 % 2) vi kt qu l 6, hoca = (5 + 7) % 2 vi kt qu l 0
Cu tr li ng l biu thc u tin. V nguyn nhn ni trn, ngn ng C++ thit
lp mt th t u tin gia cc ton t, khng ch ring cc ton t s hc m tt c ccton t c th xut hin trong C++. Th t u tin ca chng c lit k trong bng sautheo th t t cao xung thp.
Tht
Ton t M t Associativity
1 :: scope Tri
2 () [ ] -> . sizeof Tri
16
8/14/2019 Baigiang C++
17/50
3
++ -- tng/gim
~ o ngc bit
! NOT
& * Ton t con tr
(type) Chuyn i kiu+ - Dng hoc m
Phi
4 * / % Ton t s hc Tri
5 + - Ton t s hc Tri
6 > Dch bit Tri
7 < >= Ton t quan h Tri
8 == != Ton t quan h Tri
9 & ^ |Ton t thao tc
bit
Tri
10 && || Ton t logic Tri
11 ?: Ton t iu kin Phi
12
= += -= *= /=%=>>=
8/14/2019 Baigiang C++
18/50
4.1. Xut d liu (cout)
Dng cout c s dng vi ton t qu ti
8/14/2019 Baigiang C++
19/50
s in ra mn hnh:
First sentence.Second sentence.
Tham s endl c mt tc dng c bit khi n c dng vi cc dng d liu s
dng b m: cc b m s cflushed( chuyn ton b thng tin t b m ra dngd liu). Tuy nhin, theo mc nh cout khng s dng b m.
4.2. Nhp d liu (cin).
Thao tc vo chun trong C++ c thc hin bng cch s dng ton t qu ti >>vi dng cin. Theo sau ton t ny l bin s lu tr d liu c c vo. V d:
int age;cin >> age;
khai bo bin age c kiu int v i nhp d liu t cin (bn phm) lu tr ntrong bin kiu nguyn ny.
cin ch bt u s l d liu nhp t bn phm sau khi phm Enter c g. V vy dbn ch nhp mt k t th cin vn s kin nhn ch cho n khi bn g phm Enter.
// i/o example#include int main (){
int i;cout > i;cout
8/14/2019 Baigiang C++
20/50
8/14/2019 Baigiang C++
21/50
Nu chng ta mun c hn mt lnh c thc hin trong trng hp condition ltrue chng ta c th ch nh mt khi lnhbng cch s dng mt cp ngoc nhn{ }:
if (x == 100){cout
8/14/2019 Baigiang C++
22/50
#include int main (){int n;
cout > n;while (n>0) {cout n;cout
8/14/2019 Baigiang C++
23/50
return 0;}
Vng lp do-while thng c dng khi iu kin kt thc vng lp nmtrong vng lp, nh trong v d trn, s m ngi dng nhp vo l iu kin
kim tra kt thc vng lp. Nu bn khng nhp s 0 trong v d trn th vnglp s khng bao gi chm dt.
Vng lpfor.Dng thc:
for (initialization; condition; increase)statement;
v chc nng chnh ca n l lp li statement chng no condition cnmang gi tr ng, nh trong vng lp while. Nhng thm vo , for cung cpch dnh cho lnh khi to v lnh tng. V vy vng lp ny c thit k c
bit lp li mt hnh ng vi mt s ln xc nh.
Cch thc hot ng ca n nh sau:
1, initialization c thc hin. Ni chung n t mt gi kh banu cho bin iu khin. Lnh ny c thc hin ch mt ln.2, condition c kim tra, nu n l ng vng lp tip tc cn nu
khng vng lp kt thc v statement c b qua.3, statement c thc hin. N c th l mt lnh n hoc l mtkhi lnh c bao trong mt cp ngoc nhn.4, Cui cng, increase c thc hin tng bin iu khin v vnglp quay tr li bc 2.
Sau y l mt v d m ngc s dng vngfor.// countdown using a forloop#include
int main (){
for (int n=10; n>0; n--){
cout
8/14/2019 Baigiang C++
24/50
Phn khi to v lnh tng khng bt buc phi c. Chng c th c b quanhng vn phi c du chm phy ngn cch gia cc phn. V vy, chng ta cth vit for (;n
8/14/2019 Baigiang C++
25/50
int main (){
for (int n=10; n>0; n--){
if (n==5) continue;cout
8/14/2019 Baigiang C++
26/50
break;...default:default block of instructions
}
N hot ng theo cch sau: switch tnh biu thc v kim tra xem n c bngconstant1 hay khng, nu ng th n thc hin block of instructions 1cho n khi tm thy t kho break, sau nhy n phn cui ca cu trc la chn
switch.Cn nu khng, switch s kim tra xem biu thc c bng constant2 hay khng. Nung n s thc hin block of instructions 2 cho n khi tm thy t khobreak.Cui cng, nu gi tr biu thc khng bng bt k hng no c ch nh trn (bnc th ch nh bao nhiu cu lnh case tu thch), chng trnh s thc hin cc lnhtrong phn default: nu n tn ti v phn ny khng bt buc phi c.
Hai on m sau l tng ng:
v d switch if-else tng ng
switch (x) {case 1:cout
8/14/2019 Baigiang C++
27/50
break;default:cout
8/14/2019 Baigiang C++
28/50
8/14/2019 Baigiang C++
29/50
y l mt v d khc v hm:
// function example#include int subtraction (int a, intb){
int r;r=a-b;return (r);
}int main (){
int x=5, y=3, z;z = subtraction (7,2);cout
8/14/2019 Baigiang C++
30/50
Tng t nh vy
cout
8/14/2019 Baigiang C++
31/50
void dummyfunction (void){
cout
8/14/2019 Baigiang C++
32/50
// passing parameters byreference#include void duplicate (int& a, int&b, int& c){
a*=2;b*=2;c*=2;
}int main (){
int x=1, y=3, z=7;duplicate (x, y, z);cout
8/14/2019 Baigiang C++
33/50
void prevnext (int x, int&prev, int& next){
prev = x-1;next = x+1;
}int main (){
int x=100, y, z;prevnext (x, y, z);cout
8/14/2019 Baigiang C++
34/50
chng ta ch dng mt tham s nhng hm divide cho php n hai. Bi vy hmdivide s t cho tham s th hai gi tr bng 2 v l gi tr mc nh ca n (ch
phn khai bo hm c kt thc bi int b=2). V vy kt qu s l 6 (12/2).
Trong lnh th hai:
divide (20,4)
c hai tham s, bi vy gi tr mc nh s c b qua. Kt qu ca hm s l 5(20/4).
7.3. Qu ti cc hm.
Hai hm c th c cng tn nu khai bo tham s ca chng khc nhau, iu ny cngha l bn c th t cng mt tn cho nhiu hm nu chng c s tham s khc nhauhay kiu d liu ca cc tham s khc nhau (hay thm ch l kiu d liu tr v khcnhau). V d:// overloaded function#include int divide (int a, int b){
return (a/b);}float divide (float a, floatb){
return (a/b);}int main (){
int x=5,y=2;float n=5.0,m=2.0;cout
8/14/2019 Baigiang C++
35/50
7.4. Cc hm inline.
Ch th inline c th c t trc khao bo ca mt hm ch r rng li gi hm sc thay th bng m lnh ca hm khi chng trnh c dch. Vic ny tng ngvi vic khai bo mt macro, li ch ca n ch th hin vi cc hm rt ngn, tc chy chng trnh s c ci thin v n khng phi gi mt th tc con.
Cu trc ca n nh sau:
inline type name ( arguments ... ) { instructions ... }li gi hm cng nh bt k mt hm no khc. Khng cn thit phi t t khoinline trong lnh gi, ch cn trong li khai bo hm l .
qui.
Cc hm c th gi chnh n. iu ny c th c ch vi mt s tc v nh l mt s
phng php sp xp hay tnh giai tha ca mt s. V d, tnh giai tha ca mt s(n), cng thc ton hc ca n nh sau:
n! = n * (n-1) * (n-2) * (n-3) ... * 1
v mt hm qui tnh ton s nh sau:// factorial calculator#include long factorial (long a)
{if (a > 1)return (a * factorial (a-
1));elsereturn (1);
}int main (){
long l;cout > l;cout
8/14/2019 Baigiang C++
36/50
8/14/2019 Baigiang C++
37/50
void odd (int a){
if ((a%2)!=0) cout
8/14/2019 Baigiang C++
38/50
trong mi mt trng biu din mt phn t ca mng, trong trng hp ny l ccgi tr nguyn kiu int. Chng c nh s t 0 n 4 v phn t u tin ca mnglun l 0 bt k di ca n l bao nhiu.
Nh bt k bin no khc, mt mng phi c khai bo trc khi c th s dng. Mtkhai bo in hnh cho mt mng trong C++ nh sau:
type name [elements];
trong type l mt kiu d liu hp l (int, float...), name l mt tn bin hp l vtrng elements ch nh mng s cha bao nhiu phn t
V vy, khai bo billy nh trnh by trn chng ta ch cn mt dng n gin nhsau:
int billy [5];
Ch : Trng elements bn trong cp ngoc [] phi l mt gi tr hng khi khai bo
mt mng, v mng l mt khi nh tnh c kch c xc nh v trnh bin dch phi ckh nng xc nh xem cn bao nhiu b nh cp pht cho mng trc khi cc lnh cth c thc hin.
8.2. Khi to mt mng.
Khi khai bo mt mng vi tm hot ng a phng (trong mt hm), theo mc nhn s khng c khi to, v vy ni dung ca n l khng xc nh cho n khi chngra lu cc gi tr ln .
Nu chng ta khai bo mt mng ton cc (bn ngoi tt c cc hm) n s c khito v tt c cc phn t c t bng 0. V vy nu chng ta khai bo mng ton cc:
int billy [5];
mi phn t ca billy s c khi to l 0:
38
8/14/2019 Baigiang C++
39/50
Nhng thm vo , khi chng ta khai bo mt mng, chng ta c th gn cc gi trkhi to cho tng phn t ca n. V d:
int billy [5] = { 16, 2, 77, 40, 12071 };
lnh trn s khai bo mt mng nh sau:
S phn t trong mng m chng ta khi to vi cp ngoc nhn { } phi bng s phnt ca mng c khai bo vi cp ngoc vung [ ]. Bi v iu ny c th ccoi l mt s lp li khng cn thit nn C++ cho php trng gia cp ngoc vung,kch thc ca mng c xc nh bng s gi tr gia cp ngoc nhn.
8.3. Truy xut n cc phn t ca mng.
bt k im no ca chng trnh trong tm hot ng ca mng, chng ta c th truyxut tng phn t ca mng c hay chnh sa nh l i vi mt bin bnh thng.Cu trc ca n nh sau:
name[index]
Nh trong v d trc ta c mng billy gm 5 phn t c kiu int, chng ta c thtruy xut n tng phn t ca mng nh sau:
V d, lu gi tr 75 vo phn t th ba ca billy ta vit nh sau:
billy[2] = 75;
v, v d, gn gi tr ca phn t th 3 ca billy cho bin a, chng ta vit:
a = billy[2];
V vy, xt v mi phng din, biu thcbilly[2] ging nh bt k mt bin kiuint.
Ch rng phn t th ba cabilly lbilly[2], v mng bt u t ch s 0. Vvy, phn t cui cng s lbilly[4]. V vy nu chng ta vitbilly[5], chng tas truy xut n phn t th 6 ca mng v vt qu gii hn ca mng.
39
8/14/2019 Baigiang C++
40/50
Trong C++, vic vt qu gii hn ch s ca mng l hon ton hp l, tuy nhin n cth gy ra nhng vn thc s kh pht hin bi v chng khng to ra nhng li trongqu trnh dch nhng chng c th to ra nhng kt qu khng mong mun trong qutrnh thc hin. Nguyn nhn ca vic ny s c ni n k hn khi chng ta bt us dng con tr.
Cn phi nhn mnh rng chng ta s dng cp ngoc vung cho hai tc v: u tin lt kch thc cho mng khi khai bo chng v th hai, ch nh ch s cho mt phnt c th ca mng khi xem xt n n.
int billy[5]; // khai bo mt mng mi.billy[2] = 75; // truy xut n mt phnt ca mng.
Mt vi thao tc hp l khc vi mng:
billy[0] = a;billy[a] = 75;b = billy [a+2];billy[billy[a]] = billy[2] + 5;
// v d v mng#include int billy [] = {16, 2, 77,40, 12071};
int n, result=0;int main (){
for ( n=0 ; n
8/14/2019 Baigiang C++
41/50
8/14/2019 Baigiang C++
42/50
jimmy[n][m]=(n+1)*(m+1);
}return 0;
}
{jimmy[n * WIDTH +
m]=(n+1)*(m+1);}
return 0;}
khng mt chng trnh no vit g ra mn hnh nhng c hai u gn gi tr vo khinh c tn jimmy theo cch sau:
Chng ta nh ngha hng (#define) n gin ha nhng chnh sa sau ny cachng trnh, v d, trong trng hp chng ta quyt nh tng kch thc ca mng vichiu cao l 4 thay v l 3, chng ta ch cn thay i dng:
#define HEIGHT 3
thnh
#define HEIGHT 4
v khng phi c thm s thay i no na i vi chng trnh.
8.5. Dng mng lm tham s.
Vo mt lc no c th chng ta cn phi truyn mt mng ti mt hm nh l mttham s. Trong C++, vic truyn theo tham s gi tr mt khi nh l khng hp l, ngayc khi n c t chc thnh mt mng. Tuy nhin chng ta li c php truyn a chca n, vic ny cng to ra kt qu thc t ging thao tc trn nhng li nhanh hnnhiu v hiu qu hn.
c th nhn mng l tham s th iu duy nht chng ta phi lm khi khai bo hm lch nh trong phn tham s kiu d liu c bn ca mng, tn mng v cp ngocvung trng. V d, hm sau:
void procedure (int arg[])
nhn vo mt tham s c kiu "mng ca char" v c tn arg. truyn tham s chohm ny mt mng c khai bo:
int myarray [40];
ch cn gi hm nh sau:
42
8/14/2019 Baigiang C++
43/50
procedure (myarray);
Di y l mt v d c th
// arrays as parameters#include void printarray (int arg[],int length) {
for (int n=0; n
8/14/2019 Baigiang C++
44/50
Trong tt c cc chng trnh chng ta thy cho n gi, chng ta ch s dng ccbin kiu s, ch dng biu din cc s. Nhng bn cnh cc bin kiu s cn c ccxu k t, chng cho php chng ta biu din cc chui k t nh l cc t, cu, onvn bn... Cho n gi chng ta mi ch dng chng di dng hng ch cha quan tmn cc bin c th cha chng.
Trong C++ khng c kiu d liu c bn lu cc xu k t. c th tha mn nhucu ny, ngi ta s dng mng c kiu char. Hy nh rng kiu d liu ny (char)ch c th lu tr mt k t n, bi vy n c dng to ra xu ca cc k t n.
V d, mng sau (hay l xu k t):
char jenny [20];
c th lu mt xu k t vi di cc i l 20 k t. Bn c th tng tng n nhsau:
Kch thc cc i ny khng cn phi lun lun dng n. V d, jenny c th luxu "Hello" hay "Merry christmas". V cc mng k t c th lu cc xu kt ngn hn di ca n, trong C++ c mt quy c kt thc mt ni dung camt xu k t bng mt k t null, c th c vit l '\0'.
Chng ta c th biu din jenny (mt mng c 20 phn t kiu char) khi lu tr xuk t "Hello" v "Merry Christmas" theo cch sau:
Ch rng sau ni dung ca xu, mt k t null ('\0') c dng bo hiu kt thcxu. Nhng mu xm biu din nhng gi tr khng xc nh.
9.1. Khi to cc xu k t.
V nhng xu k t l nhng mng bnh thng nn chng cng nh cc mng khc. Vd, nu chng ta mun khi to mt xu k t vi nhng gi tr xc nh chng ta c thlm iu tng t nh vi cc mng khc:
char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0'};
Tuy nhin, chng ta c th khi to gi tr cho mt xu k t bng cch khc: s dngcc hng xu k t.
44
8/14/2019 Baigiang C++
45/50
Trong cc biu thc chng ta s dng trong cc v d trong cc chng trc cchng xu k t xut hin vi ln. Chng c biu din trong cp ngoc kp ("), vd:
"the result is: "
l mt hng xu k t chng ta s dng mt s ch.
Khng ging nh du nhy n (') cho php biu din hng k t, cp ngoc kp (") lhng biu din mt chui k t lin tip, v cui chui mt k t null ('\0') lunc t ng thm vo.
V vy chng ta c th khi to xumystring theo mt trong hai cch sau y:
char mystring [] = { 'H', 'e', 'l', 'l', 'o','\0' };
char mystring [] = "Hello";
Trong c hai trng hp mng (hay xu k t)mystring c khai bo vi kch thc6 k t: 5 k t biu din Hello cng vi mt k t null.
Trc khi tip tc, ti cn phi nhc nh bn rng vic gn nhiu hng nh vic s dngdu ngoc kp (") ch hp l khi khi to mng, tc l lc khai bo mng. Cc biu thctrong chng trnh nh:
mystring = "Hello";mystring[] = "Hello";
l khng hp l, c cu lnh di y cng vy:
mystring = { 'H', 'e', 'l', 'l', 'o', '\0' };
Vy hy nh: Chng ta ch c th "gn" nhiu hng cho mt mng vo lc khi to n.Nguyn nhn l mt thao tc gn (=) khng th nhn v tri l c mt mng m ch cth nhn mt trong nhng phn t ca n. Vo thi im khi to mng l mt trnghp c bit, v n khng thc s l mt lnh gn mc d n s dng du bng (=).
9.2. Gn gi tr cho xu k t
V v tri ca mt lnh gn ch c th l mt phn t ca mng ch khng th l cmng, chng ta c th gn mt xu k t cho mt mng kiu char s dng mt phng
php nh sau:
mystring[0] = 'H';mystring[1] = 'e';mystring[2] = 'l';mystring[3] = 'l';mystring[4] = 'o';mystring[5] = '\0';
45
8/14/2019 Baigiang C++
46/50
Nhng r rng y khng phi l mt phng php thc t. gn gi tr cho mt xuk t, chng ta c th s dng lot hm kiu strcpy (string copy), hm ny c nhngha trong string.h v c th c gi nh sau:
strcpy (string1, string2);
Lnh ny copy ni dung ca string2 sang string1. string2 c th l mt mng,con tr hay mt hng xu k t, bi vy lnh sau y l mt cch ng gn xu hng"Hello" chomystring:
strcpy (mystring, "Hello");
V d:
// setting value to string#include #include
int main (){
char szMyName [20];strcpy (szMyName,"J.
Soulie");cout
8/14/2019 Baigiang C++
47/50
setstring (szMyName,"J.Soulie");
cout
8/14/2019 Baigiang C++
48/50
Nu bn cn nh phn ni v giao tip vi, bn s nh rng chng ta s dng ton t>> nhn d liu trc tip t u vo chun. Phng thc ny c th c dng vicc xu k t thay cho cin.getline. V d, trong chn trnh ca chng ta, khichng ta mun nhn d liu t ngi dng chng ta c th vit:
cin >> mybuffer;
lnh ny s lm vic nh n c nhng hn ch sau m cin.getline khng c:
N ch c th nhn nhng t n (khng nhn c c cu) v phng thc nys dng k t trng(bao gm c du cch, du tab v du xung dng) lm duhiu kt thc..
N khng cho php ch nh kch thc cho b m. Chng trnh ca bn c thchy khng n nh nu d liu vo ln hn kch c ca mng cha n.
V nhng nguyn nhn trn, khi mun nhp vo cc xu k t bn nn s dngcin.getline thay v cin >>.
9.3. Chuyn i xu k t sang cc kiu khc.
V mt xu k t c th biu din nhiu kiu d liu khc nh dng s nn vic chuyni ni dung nh vy sang dng s l rt hu ch. V d, mt xu c th mang gi tr"1977"nhng l mt chui gm 5 k t (k c k t null) v khng d g chuynthnh mt s nguyn. V vy th vin cstdlib (stdlib.h) cung cp 3macro/hm hu ch sau:
atoi: chuyn xu thnh kiu int. atol: chuyn xu thnh kiu long. atof: chuyn xu thnh kiu float.
Tt c cc hm ny nhn mt tham s v tr v gi tr s (int, long hoc float).Cc hm ny khi kt hp vi phng thc getline ca cin l mt cch ng tin cyhn phng thc cin>>c in khi yu cu ngi s dng nhp vo mt s:
// cin and ato* functions#include
#include
int main (){
char mybuffer [100];float price;int quantity;cout
8/14/2019 Baigiang C++
49/50
cout
8/14/2019 Baigiang C++
50/50
TI LIU THAM KHO
[1]. L ng Hng, T Tun Anh, Nguyn Hu c, Nguyn Thanh Thu,
Lp trnh hng i tng vi C++, NXB Khoa hc v K thut 1999.[2]. GS. Phm Vn t, Lp trnh hng i tng C++, NXB Khoa hc v
K thut 2000
[3]. TS Trn Vn T, 450 bi tp v lp trnh C++, NXB Thng k 2000.
Recommended