Professional Documents
Culture Documents
lý thuyết c&c++ hay
lý thuyết c&c++ hay
Trang 1
Updatesofts.com Ebooks Team
#include <iostream.h>
int main ()
{
cout << "Hello World!";
return 0;
}
#include <iostream.h>
Cc cu bt u bng du (#) c dng cho preprocessor (ai dch h ti t ny vi).
Chng khng phi l nhng dng m thc hin nhng c dng bo hiu cho trnh
dch. y cu lnh #include <iostream.h> bo cho trnh dch bit cn phi
"include" th vin iostream. y l mt th vin vo ra c bn trong C++ v n phi
c "include" v n s c dng trong chng trnh. y l cch c in s dng
th vin iostream
int main ()
Dng ny tng ng vi phn bt u khai bo hm main. Hm main l im m tt c
cc chng trnh C++ bt u thc hin. N khng ph thuc vo v tr ca hm ny (
u, cui hay gia ca m ngun) m ni dung ca n lun c thc hin u tin khi
chng trnh bt u. Thm vo , do nguyn nhn ni trn, mi chng trnh C++ u
phi tn ti mt hm main.
Trang 2
Updatesofts.com Ebooks Team
(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
return 0;
Lnh return kt thc hm main v tr v m i sau n, trong trng hp ny l 0. y l
mt kt thc bnh thng ca mt chng trnh khng c mt li no trong qu trnh thc
hin. Nh bn s thy trong cc v d tip theo, y l mt cch ph bin nht kt thc
mt chng trnh C++.
int main ()
{
cout << " Hello World ";
return 0;
}
ta c th vit
Trong C++, cc dng lnh c phn cch bng du chm phy ( ;). Vic chia chng
trnh thnh cc dng ch nhm cho n d c hn m thi.
Cc ch thch.
Cc ch thch c cc lp trnh vin s dng ghi ch hay m t trong cc phn ca
chng trnh. Trong C++ c hai cch ch thch
Ch thch theo dng bt u t cp du x (//) cho n cui dng. Ch thch theo khi
bt u bng /* v kt thc bng */ v c th bao gm nhiu dng. Chng ta s thm
cc ch thch cho chng trnh :
/* my second program in C++ Hello World! I'm a C++ program
Trang 3
Updatesofts.com Ebooks Team
#include <iostream.h>
int main ()
{
cout << "Hello World! ";
// says Hello World!
cout << "I'm a C++
program"; // says I'm a C++
program
return 0;
}
Nu bn vit cc ch thch trong chng trnh m khng s dng cc du //, /* hay */,
trnh dch s coi chng nh l cc lnh C++ v s hin th cc li.
Trang 4
Updatesofts.com Ebooks Team
Cc kiu d liu
Khi lp trnh, chng ta lu tr cc bin trong b nh ca my tnh nhng my tnh phi
bit chng ta mun lu tr g trong chng v cc kiu d liu khc nhau s cn lng b
nh khc nhau.
Trang 5
Updatesofts.com Ebooks Team
S
Tn M t Min gi tr
byte
c du: -128 to 127
char 1 K t hay kiu s nguyn 8-bit
khng du: 0 to 255
c du: -32763 to 32762
short 2 kiu s nguyn 16-bit
khng du: 0 to 65535
c du:-2147483648 to
long 4 kiu s nguyn 32-bit 2147483647
khng du: 0 to 4294967295
S nguyn. di ca n ph thuc vo h
int * thng, nh trong MS-DOS n l 16-bit, trn Xem short, long
Windows 9x/2000/NT l 32 bit...
float 4 Dng du phy ng 3.4e + / - 38 (7 digits)
Dng du phy ng vi chnh xc gp
double 8 1.7e + / - 308 (15 digits)
i
long Dng du phy ng vi chnh xc hn
10 1.2e + / - 4932 (19 digits)
double na
Gi tr logic. N mi c thm vo chun
bool 1 ANSI-C++. Bi vy khng phi tt c cc true hoc false
trnh dch u h tr n.
Khai bo mt bin
c th s dng mt bin trong C++, u tin chng ta phi khai bo n, ghi r n l
kiu 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 bin
kiu float vi tn mynumber. Sau khi c khai bo, cc bin trn c th c dng
trong phm vi ca chng trong chng trnh.
Trang 6
Updatesofts.com Ebooks Team
int a, b, c;
int a;
int b;
int c;
int MyAccountBalance
cng hon ton tng ng vi dng khai bo trn. Trong thc t, rt t khi ngi ta
dng 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.
#include <iostream.h>
int main ()
{
// declaring variables:
int a, b;
int result;
// process:
a = 5;
b = 2;
a = a + 1;
result = a - b;
Trang 7
Updatesofts.com Ebooks Team
return 0;
}
Khi to cc bin
Khi khai bo mt bin, gi tr ca n mc nhin l khng xc nh. Nhng c th bn s
mun n mang mt gi tr xc nh khi c khai bo. lm iu , bn ch cn vit
du bng v gi tr bn mun bin s mang:
V d, nu chng ta mun khai bo mt bin int l a cha gi tr 0 ngay t khi khi to,
chng ta s vit :
int a = 0;
B xung vo cch khi to kiu C ny, C++ cn c thm mt cch mi khi to bin
bng cch bc mt cp ngoc n sau gi tr khi to. V d :
int a (0);
Trang 8
Updatesofts.com Ebooks Team
Cc hng s
Mt hng s l bt k mt biu thc no mang mt gi tr c nh, nh:
Cc s nguyn
1776
707
-273
chng l cc hng mang gi tr s. Ch rng khi biu din mt hng kiu s chng ta
khng cn vit du ngoc kp hay bt k du hiu no khc.
75 // C s 10
0113 // c s 8
0x4b // c s 16
3.14159 // 3.14159
6.02e23 // 6.02 x 1023
1.6e-19 // 1.6 x 10-19
3.0 // 3.0
K t v xu k t
Trong C++ cn tn ti cc hng khng phi kiu s nh:
'z'
'p'
"Hello world"
"How do you do?"
Trang 9
Updatesofts.com Ebooks Team
x
'x'
\n xung dng
\r li v u dng
\t k t tab
\v cn thng theo chiu dc
\b backspace
\f sang trang
\a Ku bp
\' du nhy n
\" du nhy kp
\ du hi
\\ k t x ngc
V d:
'\n'
'\t'
"Left \t Right"
"one\ntwo\nthree"
Trang 10
Updatesofts.com Ebooks Team
"string expressed in \
two lines"
V d:
#define PI 3.14159265
#define NEWLINE '\n'
#define WIDTH 100
circle = 2 * PI * r;
cout << NEWLINE;
Trong thc t vic duy nht m trnh dch lm khi n tm thy mt ch th #define l
thay th cc tn hng ti bt k ch no chng xut hin (nh trong v d trc, PI,
NEWLINE hay WIDTH) bng gi tr m chng c nh ngha. V vy cc hng s #define
c coi l cc hng s macro
Trang 11
Updatesofts.com Ebooks Team
Trong trng hp kiu khng c ch r (nh trong v d cui) trnh dch s coi n l
kiu int
Trang 12
Updatesofts.com Ebooks Team
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 l
rt quan trng v y l mt trong nhng thnh phn c bn ca ngn ng C++.
Ton t gn (=).
Ton t gn dng gn mt gi tr no cho mt bin
a = 5;
Cn phi nhn mnh rng ton t gn lun c thc hin t tri sang phi
v khng bao gi o ngc
a = b;
a = 2 + (b = 5);
tng ng vi
b = 5;
a = 2 + b;
a = b = c = 5;
gn gi tr 5 cho c ba bin a, b v c
Cc ton t s hc ( +, -, *, /, % )
Nm ton t s hc c h tr bi ngn ng l:
+ cng
- tr
* nhn
/ chia
Trang 13
Updatesofts.com Ebooks Team
Th t thc hin cc ton t ny cng ging nh chng c thc hin trong ton
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 hai s nguyn
vi nhau. V d, nu a = 11 % 3;, bin a s mang gi tr 2 v 11 = 3*3 +2.
Cc ton t gn phc hp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
Mt c tnh ca ngn ng C++ lm cho n ni ting l mt ngn ng sc
tch chnh l cc ton t gn phc hp cho php chnh sa gi tr ca mt
bin vi mt trong nhng ton t c bn sau:
a++;
a+=1;
a=a+1;
V d 1 V d 2
B=3; B=3;
A=++B; A=B++;
// A is 4, B is 4 // A is 3, B is 4
Trang 14
Updatesofts.com Ebooks Team
V d:
(7 == 5) s tr gi tr false
(6 >= 6) s tr gi tr true
tt nhin thay v s dng cc s, chng ta c th s dng bt c biu
thc no. Cho a=2, b=3 v c=6
(a*b >= c) s tr gi tr true.
(b+4 < a*c) s tr gi tr false
Trong nhiu trnh dch c trc chun ANSI-C++ cng nh trong ngn ng C,
cc ton t quan h khng tr v gi tr logic true hoc false m tr v gi tr
int vi 0 tng ng vi false cn gi tr khc 0 (thng l 1) th tng ng vi
true.
Cc ton t logic ( !, &&, || ).
Ton t ! tng ng vi ton t logic NOT, n ch c mt i s pha bn
phi v vic duy nht m n lm l i ngc gi tr ca i s t true sang
false hoc ngc li. V d:
!(5 == 5) tr v false v biu thc bn phi (5 == 5) c gi trtrue.
!(6 <= 4) tr v true v (6 <= 4)c gi tr false.
!true tr v false.
!false tr v true.
Ton t logic && v || c s dng khi tnh ton hai biu thc ly ra mt
kt qu duy nht. Chng tng ng vi cc ton t logic AND v OR. Kt qu
ca chng ph thuc vo mi quan h ca hai i s:
i s th nht i s th hai Kt qu Kt qu
a b a && b a || b
true true true true
true false false true
false true false true
false false false false
V d:
Trang 15
Updatesofts.com Ebooks Team
Ton t iu kin ( ? ).
Ton t iu kin tnh ton mt biu thc v tr v mt gi tr khc tu thuc
vo biu thc l ng hay sai. Cu trc ca n nh sau:
int i;
float f = 3.14;
i = (int) f;
i = int ( f );
Trang 16
Updatesofts.com Ebooks Team
sizeof()
Ton t ny c mt tham s, c th l mt kiu d liu hay l mt bin v
tr v kch c bng byte ca kiu hay i tng .
a = sizeof (char);
Cc ton t khc
Trong C++ cn c mt s cc ton t khc, nh cc ton t lin quan n con
tr hay lp trnh hng i tng. Chng s c ni n c th trong cc
phn tng ng.
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
a = 5 + (7 % 2) vi kt qu l 6, hoc
a = (5 + 7) % 2 vi kt qu l 0
Th
Ton t M t Associativity
t
1 :: scope Tri
2 () [ ] -> . sizeof Tri
++ -- tng/gim
~ o ngc bit
! NOT
3 Phi
&* Ton t con tr
(type) Chuyn i kiu
+- Dng hoc m
4 */% Ton t s hc Tri
Trang 17
Updatesofts.com Ebooks Team
5 +- Ton t s hc Tri
6 << >> Dch bit Tri
7 < <= > >= Ton t quan h Tri
8 == != Ton t quan h Tri
Ton t thao tc
9 &^| Tri
bit
10 && || Ton t logic Tri
11 ?: Ton t iu kin Phi
= += -= *= /= %=
12 >>= <<= &= ^= |= Ton t gn Phi
13 , Du phy Tri
Trang 18
Updatesofts.com Ebooks Team
Bi vy khi mun xung dng chng ta phi s dng k t xung dng, trong C++ l \n:
Trang 19
Updatesofts.com Ebooks Team
First sentence.
Second sentence.
Third sentence.
s in ra mn hnh:
First sentence.
Second sentence.
int age;
cin >> age;
khai bo bin age c kiu int v i nhp d liu t cin (bn phm) lu tr n trong
bin kiu nguyn ny.
Trang 20
Updatesofts.com Ebooks Team
tng ng vi
cin >> a;
cin >> b;
Trong c hai trng hp ngi s dng phi cung cp hai d liu, mt cho bin a v mt
cho bin b v c ngn cch bi mt du trng hp l: mt du cch, du tab hay k t
xung dng.
Trong trng hp kiu khng c ch r (nh trong v d cui) trnh dch s coi n l
kiu int.
Trang 21
Updatesofts.com Ebooks Team
Cc cu trc iu khin.
Mt chng trnh thng khng ch bao gm cc lnh tun t ni tip nhau. Trong qu
trnh chy n c th r nhnh hay lp li mt on m no . lm iu ny chng ta
s dng cc cu trc iu khin.
Cng vi vic gii thiu cc cu trc iu khin chng ta cng s phi bit ti mt khi
nim mi: khi lnh, l mt nhm cc lnh c ngn cch bi du chm phy (;)
nhng c gp trong mt khi gii hn bi mt cp ngoc nhn: { v }.
if (condition) statement
if (x == 100)
cout << "x is 100";
if (x == 100)
{
cout << "x is ";
cout << x;
}
V d:
Trang 22
Updatesofts.com Ebooks Team
if (x == 100)
cout << "x is 100";
else
cout << "x is not 100";
if (x > 0)
cout << "x is positive";
else if (x < 0)
cout << "x is negative";
else
cout << "x is 0";
Cc cu trc lp
Mc ch ca cc vng lp l lp li mt thao tc vi mt s ln nht nh hoc trong khi
mt iu kin no cn tho mn.
Vng lp while .
Dng ca n nh sau:
Trang 23
Updatesofts.com Ebooks Team
Vng lp for .
Dng thc:
Trang 24
Updatesofts.com Ebooks Team
Trang 25
Updatesofts.com Ebooks Team
khng xc nh hay buc n phi kt thc gia chng thay v kt thc mt cch
bnh thng. V d, chng ta s dng vic m ngc trc khi n kt thc:
// break loop example 10, 9, 8, 7, 6, 5, 4, countdown
#include <iostream.h> aborted!
int main ()
{
int n;
for (n=10; n>0; n--) {
cout << n << ", ";
if (n==3)
{
cout << "countdown
aborted!";
break;
}
}
return 0;
}
Lnh continue.
Lnh continue lm cho chng trnh b qua phn cn li ca vng lp v nhy
sang ln lp tip theo. V d chng ta s b qua s 5 trong phn m ngc:
// break loop example 10, 9, 8, 7, 6, 4, 3, 2, 1,
#include <iostream.h> FIRE!
int main ()
{
for (int n=10; n>0; n--) {
if (n==5) continue;
cout << n << ", ";
}
cout << "FIRE!";
return 0;
}
Lnh goto.
Lnh ny cho php nhy v iu kin ti bt k im no trong chng trnh. Ni
chung bn nn trnh dng n trong chng trnh C++. Tuy nhin chng ta vn c
mt v d dng lnh goto m ngc:
// goto loop example 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
#include <iostream.h> FIRE!
int main ()
{
int n=10;
loop: ;
cout << n << ", ";
n--;
if (n>0) goto loop;
cout << "FIRE!";
return 0;
}
Hm exit.
Trang 26
Updatesofts.com Ebooks Team
switch (expression) {
case constant1:
block of instructions 1
break;
case constant2:
block of instructions 2
break;
.
.
.
default:
default block of instructions
}
N hot ng theo cch sau: switch tnh biu thc v kim tra xem n c bng
constant1 hay khng, nu ng th n thc hin block of instructions 1 cho 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. Nu
ng n s thc hin block of instructions 2 cho n khi tm thy t kho break.
Cui cng, nu gi tr biu thc khng bng bt k hng no c ch nh trn (bn c
th ch nh bao nhiu cu lnh case tu thch), chng trnh s thc hin cc lnh trong
phn default: nu n tn ti v phn ny khng bt buc phi c.
Trang 27
Updatesofts.com Ebooks Team
switch (x) {
case 1:
case 2:
case 3:
cout << "x is 1, 2 or 3";
break;
default:
cout << "x is not 1, 2 nor 3";
}
Ch rng lnh switch ch c th c dng so snh mt biu thc vi cc hng. V
vy chng ta khng th t cc bin (case (n*2):) hay cc khong (case (1..3):) v
chng khng phi l cc hng hp l.
Trang 28
Updatesofts.com Ebooks Team
Hm (I)
Hm l mt khi lnh c thc hin khi n c gi t mt im khc ca chng
trnh. Dng thc ca n nh sau:
trong :
type l kiu d liu c tr v ca hm
name l tn gi ca hm.
arguments l cc tham s (c nhiu bao nhiu cng c tu theo nhu cu). Mt tham s
bao gm tn kiu d liu sau l tn ca tham s ging nh khi khai bo bin (v d
int x) v ng vai tr bn trong hm nh bt k bin no khc. Chng dng truyn
tham s cho hm khi n c gi. Cc tham s khc nhau c ngn cch bi cc du
phy.
statement l thn ca hm. N c th l mt lnh n hay mt khi lnh.
Di y l v d u tin v hm:
int main ()
{
int z;
z = addition (5,3);
cout << "The result is " << z;
return 0;
}
Chng ta c th thy hm main bt u bng vic khai bo bin z kiu int. Ngay sau
l mt li gi ti hm addition. Nu chng ta s thy s tng t gia cu trc ca
li gi hm vi khai bo ca hm:
Trang 29
Updatesofts.com Ebooks Team
return (r);
y l mt v d khc v hm:
Trang 30
Updatesofts.com Ebooks Team
int main ()
{
int x=5, y=3, z;
z = subtraction (7,2);
cout << "The first result is " <<
z << '\n';
cout << "The second result is "
<< subtraction (7,2) << '\n';
cout << "The third result is " <<
subtraction (x,y) << '\n';
z= 4 + subtraction (x,y);
cout << "The fourth result is "
<< z << '\n';
return 0;
}
z = subtraction (7,2);
cout << "The first result is " << z;
z = 5;
cout << "The first result is " << z;
Tng t nh vy
cng cho kt qu ging nh hai dng lnh trn nhng trong trng hp ny chng ta gi
hm subtraction trc tip nh l mt tham s ca cout. Chng ta cng c th vit:
Trang 31
Updatesofts.com Ebooks Team
v 5 l kt qu ca subtraction (7,2).
Cn vi lnh
z = 4 + subtraction (x,y);
chng ta c th vit:
z = subtraction (x,y) + 4;
cng hon ton cho kt qu tng ng. Ch rng du chm phy c t cui
biu thc ch khng cn thit phi t ngay sau li gi hm.
int main ()
{
dummyfunction ();
return 0;
}
Trang 32
Updatesofts.com Ebooks Team
T kho void trong phn danh sch tham s c ngha l hm ny khng nhn mt tham
s no. Tuy nhin trong C++ khng cn thit phi s dng void lm iu ny. Bn ch
n gin s dng cp ngoc n ( ) l xong.
dummyfunction ();
Trang 33
Updatesofts.com Ebooks Team
Hm (II).
int main ()
{
int x=1, y=3, z=7;
duplicate (x, y, z);
cout << "x=" << x << ", y=" << y
<< ", z=" << z;
return 0;
}
Trang 34
Updatesofts.com Ebooks Team
Khi truyn tham s di dng tham s bin chng ta ang truyn bn thn bin v bt
k s thay i no m chng ta thc hin vi tham s bn trong hm s nh hng trc
tip n bin .
Kiu khai bo tham s theo dng tham s bin s dng du v (&) ch c trong C++.
Trong ngn ng C chng ta phi s dng con tr lm vic tng t nh th.
int main ()
{
int x=100, y, z;
prevnext (x, y, z);
cout << "Previous=" << y << ",
Next=" << z;
return 0;
}
Gi tr mc nh ca tham s.
Khi nh ngha mt hm chng ta c th ch nh nhng gi tr mc nh s c truyn
cho cc i s trong trng hp chng b b qua khi hm c gi. lm vic ny n
gin ch cn gn mt gi tr cho i s khi khai bo hm. Nu gi tr ca tham s vn
c ch nh khi gi hm th gi tr mc nh s b b qua. V d:
Trang 35
Updatesofts.com Ebooks Team
int main ()
{
cout << divide (12);
cout << endl;
cout << divide (20,4);
return 0;
}
Nhng chng ta thy trong thn chng trnh, c hai li gi hm divide. Trong lnh u
tin:
divide (12)
divide (20,4)
Qu ti cc hm.
Hai hm c th c cng tn nu khai bo tham s ca chng khc nhau, iu ny c ngha
l bn c th t cng mt tn cho nhiu hm nu chng c s tham s khc nhau hay
kiu d liu ca cc tham s khc nhau (hay thm ch l kiu d liu tr v khc nhau).
V d:
// overloaded function 2
#include <iostream.h> 2.5
Trang 36
Updatesofts.com Ebooks Team
return (a/b);
}
int main ()
{
int x=5,y=2;
float n=5.0,m=2.0;
cout << divide (x,y);
cout << "\n";
cout << divide (n,m);
return 0;
}
Cc hm inline.
Ch th inline c th c t trc khao bo ca mt hm ch r rng li gi hm s
c thay th bng m lnh ca hm khi chng trnh c dch. Vic ny tng ng
vi 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:
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:
Trang 37
Updatesofts.com Ebooks Team
{
if (a > 1)
return (a * factorial (a-1));
else
return (1);
}
int main ()
{
long l;
cout << "Type a number: ";
cin >> l;
cout << "!" << l << " = " <<
factorial (l);
return 0;
}
Nhng c mt cch khc trnh phi vit tt c m chng trnh trc khi chng c th
c dng trong main hay bt k mt hm no khc. chnh l khai bo mu cho hm.
Cch ny bao gm vic khai bo hm mt cch ngn gn nhng cho trnh dch c
th bit cc tham s v kiu d liu tr v ca hm.
Dng ca n nh sau:
Trang 38
Updatesofts.com Ebooks Team
V d:
// prototyping Type a number (0 to exit): 9
#include <iostream.h> Number is odd.
Type a number (0 to exit): 6
void odd (int a); Number is even.
void even (int a); Type a number (0 to exit): 1030
Number is even.
int main () Type a number (0 to exit): 0
{ Number is even.
int i;
do {
cout << "Type a number: (0 to
exit)";
cin >> i;
odd (i);
} while (i!=0);
return 0;
}
cho php hai hm ny c th c s dng trc khi chng c nh ngha hon chnh.
Tuy nhin l do c bit gii thch ti sao chng trnh ny li cn t nht mt hm phi
c khi bo mu l trong odd c mt li gi n even v trong even c mt li gi n
odd. V vy nu khng c hm no c khai bo trc th li chc chn s xy ra.
Trang 39
Updatesofts.com Ebooks Team
Trang 40
Updatesofts.com Ebooks Team
Mng
Mng l mt dy cc phn t c cng kiu c t lin tip trong b nh v c th truy
xut n tng phn t bng cch thm mt ch s vo sau tn ca mng.
Khi to mt mng.
Khi khai bo mt mng vi tm hot ng a phng (trong mt hm), theo mc nh n
s khng c khi to, v vy ni dung ca n l khng xc nh cho n khi chng ra
lu cc gi tr ln .
Trang 41
Updatesofts.com Ebooks Team
S phn t trong mng m chng ta khi to vi cp ngoc nhn { } phi bng s phn
t ca mng c khai bo vi cp ngoc vung [ ]. Bi v iu ny c th c coi
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.
name[index]
Trang 42
Updatesofts.com Ebooks Team
billy[2] = 75;
a = billy[2];
V vy, xt v mi phng din, biu thc billy[2] ging nh bt k mt bin kiu int.
Cn phi nhn mnh rng chng ta s dng cp ngoc vung cho hai tc v: u tin l
t kch thc cho mng khi khai bo chng v th hai, ch nh ch s cho mt phn
t c th ca mng khi xem xt n n.
billy[0] = a;
billy[a] = 75;
b = billy [a+2];
billy[billy[a]] = billy[2] + 5;
// v d v mng 12206
#include <iostream.h>
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
}
Trang 43
Updatesofts.com Ebooks Team
jimmy biu din mt mng hai chiu kch thc 3x5 c kiu int. Cch khai bo mng
ny nh sau:
v, v d, cch truy xut n phn t th hai theo chiu dc v th t theo chiu ngang
trong mt biu thc nh sau:
jimmy[1][3]
Mng nhiu chiu khng b gii hn bi hai ch s (hai chiu), Chng c th cha bao
nhiu ch s ty thch mc d t kh cn phi dng n mng ln hn 3 chiu. Hy th
xem xt lng b nh m mt mng c nhiu ch s cn n. V d:
Trang 44
Updatesofts.com Ebooks Team
#define HEIGHT 3
thnh
#define HEIGHT 4
Trang 45
Updatesofts.com Ebooks Team
ch cn gi hm nh sau:
procedure (myarray);
Di y l mt v d c th
// arrays as parameters 5 10 15
#include <iostream.h> 2 4 6 8 10
int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8,
10};
printarray (firstarray,3);
printarray (secondarray,5);
return 0;
}
Trong phn khai bo hm chng ta cng c th dng tham s l cc mng nhiu chiu.
Cu trc ca mng 3 chiu nh sau:
base_type[][depth][depth]
Trang 46
Updatesofts.com Ebooks Team
Trang 47
Updatesofts.com Ebooks Team
Xu k t
Trong tt c cc chng trnh chng ta thy cho n gi, chng ta ch s dng cc bin
kiu s, ch dng biu din cc s. Nhng bn cnh cc bin kiu s cn c cc xu k
t, chng cho php chng ta biu din cc chui k t nh l cc t, cu, on vn bn...
Cho n gi chng ta mi ch dng chng di dng hng ch cha quan tm n cc
bin c th cha chng.
c th lu mt xu k t vi di cc i l 20 k t. Bn c th tng tng n nh
sau:
Chng ta c th biu din jenny (mt mng c 20 phn t kiu char) khi lu tr xu k
t "Hello" v "Merry Christmas" theo cch sau:
Khi to cc xu k t.
V nhng xu k t l nhng mng bnh thng nn chng cng nh cc mng khc. V
d, nu chng ta mun khi to mt xu k t vi nhng gi tr xc nh chng ta c th
lm iu tng t nh vi cc mng khc:
Trang 48
Updatesofts.com Ebooks Team
Trong cc biu thc chng ta s dng trong cc v d trong cc chng trc cc hng
xu k t xut hin vi ln. Chng c biu din trong cp ngoc kp ("), v d:
Khng ging nh du nhy n (') cho php biu din hng k t, cp ngoc kp (") l
hng biu din mt chui k t lin tip, v cui chui mt k t null ('\0') lun c
t ng thm vo.
Trc khi tip tc, ti cn phi nhc nh bn rng vic gn nhiu hng nh vic s dng
du ngoc kp (") ch hp l khi khi to mng, tc l lc khai bo mng. Cc biu thc
trong chng trnh nh:
mystring = "Hello";
mystring[] = "Hello";
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 c mng,
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';
Trang 49
Updatesofts.com Ebooks Team
mystring[2] = 'l';
mystring[3] = 'l';
mystring[4] = 'o';
mystring[5] = '\0';
V d:
int main ()
{
char szMyName [20];
strcpy (szMyName,"J. Soulie");
cout << szMyName;
return 0;
}
int main ()
Trang 50
Updatesofts.com Ebooks Team
{
char szMyName [20];
setstring (szMyName,"J. Soulie");
cout << szMyName;
return 0;
}
Mt phng thc thng dng khc gn gi tr cho mt mng l s dng trc tip
dng nhp d liu (cin). Trong trng hp ny gi tr ca xu k t c gn bi ngi
dng trong qu trnh chng trnh thc hin.
Trang 51
Updatesofts.com Ebooks Team
xu k t thay cho cin.getline. V d, trong chn trnh ca chng ta, khi chng ta
mun nhn d liu t ngi dng chng ta c th vit:
int main ()
{
char mybuffer [100];
float price;
int quantity;
cout << "Enter price: ";
cin.getline (mybuffer,100);
price = atof (mybuffer);
cout << "Enter quantity: ";
cin.getline (mybuffer,100);
quantity = atoi (mybuffer);
cout << "Total price: " <<
price*quantity;
Trang 52
Updatesofts.com Ebooks Team
return 0;
}
Trang 53
Updatesofts.com Ebooks Team
Con tr
Ton t ly a ch (&).
Vo thi im m chng ta khai bo mt bin th n phi c lu tr trong mt v tr c
th trong b nh. Ni chung chng ta khng quyt nh ni no bin c t - tht
may mn rng iu c lm t ng bi trnh bin dch v h iu hnh, nhng
mt khi h iu hnh gn mt a ch cho bin th chng ta c th mun bit bin
c lu tr u.
ted = &andy;
s gn cho bin ted a ch ca bin andy, v khi t trc tn bin andy du v (&)
chng ta khng cn ni n ni dung ca bin m ch ni n a ch ca n trong b
nh.
andy = 25;
fred = andy;
ted = &andy;
kt qu s ging nh trong s di y:
Trang 54
Updatesofts.com Ebooks Team
beth = *ted;
Bn phi phn bit c rng ted c gi tr 1776, nhng *ted (vi mt du sao ng
trc) tr ti gi tr c lu tr trong a ch 1776, l 25. Hy ch s khc bit gia
vic c hay khng c du sao tham chiu.
beth = ted; // beth bng ted ( 1776 )
beth = *ted; // beth bng gi tr c tr bi( 25 )
Ton t ly a ch (&)
Trang 55
Updatesofts.com Ebooks Team
andy = 25;
ted = &andy;
type * pointer_name;
trong type l kiu d liu c tr ti, khng phi l kiu ca bn thn con tr. V d:
int * number;
char * character;
float * greatnumber;
Ti phi nhn mnh li rng du sao (*) m chng ta t khi khai bo mt con tr ch c
ngha rng: l mt con tr v hon ton khng lin quan n ton t tham chiu m
chng ta xem xt trc . n gin ch l hai tc v khc nhau c biu din bi
cng mt du.
Trang 56
Updatesofts.com Ebooks Team
int main ()
{
int value1 = 5, value2 = 15;
int * mypointer;
mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 <<
"/ value2==" << value2;
return 0;
}
y l mt v d phc tp hn mt cht:
int main ()
{
int value1 = 5, value2 = 15;
int *p1, *p2;
p1 = &value1; // p1 = a ch
ca value1
p2 = &value2; // p2 = a ch
ca value2
*p1 = 10; // gi tr tr
bi p1 = 10
*p2 = *p1; // gi tr tr
bi p2 = gi tr tr bi p1
p1 = p2; // p1 = p2
(php gn con tr)
*p1 = 20; // gi tr tr
bi p1 = 20
Mt dng c th gy s ch ca bn l:
Trang 57
Updatesofts.com Ebooks Team
dng ny khai bo hai con tr bng cch t du sao (*) trc mi con tr. Nguyn nhn
l kiu d liu khai bo cho c dng l int v v theo th t t phi sang tri, du sao
c tnh trc tn kiu. Chng ta ni n iu ny trong bi 1.3: Cc ton t.
Con tr v mng.
Trong thc t, tn ca mt mng tng ng vi a ch phn t u tin ca n, ging
nh mt con tr tng ng vi a ch ca phn t u tin m n tr ti, v vy thc
t chng hon ton nh nhau. V d, cho hai khai bo sau:
lnh sau s hp l:
p = numbers;
y p v numbers l tng ng v chng c cng thuc tnh, s khc bit duy nht
l chng ta c th gn mt gi tr khc cho con tr p trong khi numbers lun tr n phn
t u tin trong s 20 phn t kiu int m n c nh ngha vi. V vy, khng ging
nh p - l mt bin con tr bnh thng, numbers l mt con tr hng. Lnh gn sau
y l khng hp l:
numbers = p;
int main ()
{
int numbers[5];
int * p;
p = numbers; *p = 10;
p++; *p = 20;
p = &numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
return 0;
Trang 58
Updatesofts.com Ebooks Team
a[5] = 0; // a [offset of 5] = 0
*(a+5) = 0; // pointed by (a+5) = 0
l hon ton tng ng v hp l bt k a l mng hay l mt con tr.
Khi to con tr
Khi khai bo con tr c th chng ta s mun ch nh r rng chng s tr ti bin no,
int number;
int *tommy = &number;
l tng ng vi:
int number;
int *tommy;
tommy = &number;
int number;
int *tommy;
*tommy = &number;
Trang 59
Updatesofts.com Ebooks Team
cn phi nhc li rng terry mang gi tr 1702 ch khng phi l 'h' hay "hello".
terry[4] = '!';
*(terry+4) = '!';
hy nh rng vit terry[4] l hon ton ging vi vit *(terry+4) mc d biu thc
thng dng nht l ci u tin. Vi mt trong hai lnh trn xu do terry tr n s c
gi tr nh sau:
Chng ta thy c nhiu kiu d liu khc nhau tn ti v chng c th chim ch nhiu
hn hoc t hn cc kiu d liu khc. V d, trong cc kiu s nguyn, char chim 1
byte, short chim 2 byte v long chim 4 byte.
char *mychar;
short *myshort;
long *mylong;
Trang 60
Updatesofts.com Ebooks Team
Nu chng ta vit
mychar++;
myshort++;
mylong++;
iu ny ng vi c hai php ton cng v tr i vi con tr. Chng ta cng hon ton
thu c kt qu nh trn nu vit:
mychar = mychar + 1;
myshort = myshort + 1;
mylong = mylong + 1;
Cn phi cnh bo bn rng c hai ton t tng (++) v gim (--) u c quyn u tin
ln hn ton t tham chiu (*), v vy biu thc sau y c th dn ti kt qu sai:
*p++;
*p++ = *q++;
Lnh th hai, c hai ton t tng (++) u c thc hin sau khi gi tr ca *q c gn
cho *p v sau c q v p u tng ln 1. Lnh ny tng ng vi:
*p = *q;
p++;
q++;
Trang 61
Updatesofts.com Ebooks Team
Con tr tr ti con tr
C++ cho php s dng cc con tr tr ti cc con tr khc ging nh l tr ti d liu.
lm vic chng ta ch cn thm mt du sao (*) cho mi mc tham chiu.
char a;
char * b;
char ** c;
a = 'z';
b = &a;
c = &b;
Trang 62
Updatesofts.com Ebooks Team
type)
{
switch (type)
{
case sizeof(char) :
(*((char*)data))++; break;
case sizeof(short):
(*((short*)data))++; break;
case sizeof(long) :
(*((long*)data))++; break;
}
}
int main ()
{
char a = 5;
short b = 9;
long c = 12;
increase (&a,sizeof(a));
increase (&b,sizeof(b));
increase (&c,sizeof(c));
cout << (int) a << ", " << b <<
", " << c;
return 0;
}
Con tr hm
C++ cho php thao tc vi cc con tr hm. Tin ch tuyt vi ny cho php truyn mt
hm nh l mt tham s n mt hm khc. c th khai bo mt con tr tr ti mt
hm chng ta phi khai bo n nh l khai bo mu ca mt hm nhng phi bao trong
mt cp ngoc n () tn ca hm v chn du sao (*) ng trc.
// pointer to functions 8
#include <iostream.h>
int (*minus)(int,int) =
subtraction;
Trang 63
Updatesofts.com Ebooks Team
g = (*functocall)(x,y);
return (g);
}
int main ()
{
int m,n;
m = operation (7, 5, &addition);
n = operation (20, m, minus);
cout <<n;
return 0;
}
Trang 64
Updatesofts.com Ebooks Team
B nh ng
Cho n nay, trong cc chng trnh ca chng ta, tt c nhng phn b nh chng ta c
th s dng l cc bin cc mng v cc i tng khc m chng ta khai bo. Kch c
ca chng l c nh v khng th thay i trong thi gian chng trnh chy. Nhng nu
chng ta cn mt lng b nh m kch c ca n ch c th c xc nh khi chng
trnh chy, v d nh trong trng hp chng ta nhn thng tin t ngi dng xc nh
lng b nh cn thit.
Gii php y chnh l b nh ng, C++ tch hp hai ton t new v delete thc
hin vic ny
hoc
pointer = new type [elements]
Biu thc u tien c dng cp pht b nh cha mt phn t c kiu type. Lnh
th hai c dng cp pht mt khi nh (mt mng) gm cc phn t kiu type.
V d:
int * bobby;
bobby = new int [5];
trong trng hp ny, h iu hnh dnh ch cho 5 phn t kiu int trong b nh v tr
v mt con tr tr n u ca khi nh. V vy lc ny bobby tr n mt khi nh hp
l gm 5 phn t int.
Trang 65
Updatesofts.com Ebooks Team
mng phi l mt hng, iu ny gii hn kch thc ca mng n kch thc m chng
ta chn khi thit k chng trnh trong khi cp pht b nh ng cho php cp pht b
nh trong qu trnh chy vi kch thc bt k.
int * bobby;
bobby = new int [5];
if (bobby == NULL) {
// error assigning memory. Take measures.
};
Ton t delete.
V b nh ng ch cn thit trong mt khong thi gian nht nh, khi n khng cn
dng n na th n s c gii phng c th cp pht cho cc nhu cu khc trong
tng lai. thc hin vic ny ta dng ton t delete, dng thc ca n nh sau:
delete pointer;
hoc
delete [] pointer;
Biu thc u tin nn c dng gii phng b nh c cp pht cho mt phn t
v lnh th hai dng gii phng mt khi nh gm nhiu phn t (mng). Trong hu
ht cc trnh dch c hai biu thc l tng ng mc d chng l r rng l hai ton t
khc nhau.
// rememb-o-matic How many numbers do you want to
#include <iostream.h> type in? 5
#include <stdlib.h> Enter number : 75
Enter number : 436
int main () Enter number : 1067
{ Enter number : 8
char input [100]; Enter number : 32
int i,n; You have entered: 75, 436, 1067, 8,
long * l, total = 0; 32,
cout << "How many numbers do you
want to type in? ";
cin.getline (input,100); i=atoi
(input);
l= new long[i];
if (l == NULL) exit (1);
for (n=0; n<i; n++)
{
cout << "Enter number: ";
cin.getline (input,100);
l[n]=atol (input);
}
Trang 66
Updatesofts.com Ebooks Team
NULL l mt hng s c nh ngha trong th vin C++ dng biu th con tr null.
Trong trng hp hng s ny cha nh ngha bn c th t nh ngha n:
#define NULL 0
Dng 0 hay NULL khi kim tra con tr l nh nhau nhng vic dng NULL vi con tr
c s dng rt rng ri v iu ny c khuyn khch gip cho chng trnh d
c hn.
B nh ng trong ANSI-C
Ton t new v delete l c quyn C++ v chng khng c trong ngn ng C. Trong
ngn ng C, c th s dng b nh ng chng ta phi s dng th vin stdlib.h.
Chng ta s xem xt cch ny v n cng hp l trong C++ v n vn cn c s dng
trong mt s chng trnh.
Hm malloc
y l mt hm tng qut cp pht b nh ng cho con tr. Cu trc ca n nh sau:
char * ronny;
ronny = (char *) malloc (10);
int * bobby;
bobby = (int *) malloc (5 * sizeof(int));
Trang 67
Updatesofts.com Ebooks Team
Hm calloc.
calloc hot ng rt ging vi malloc, s khc nhau ch yu l khai bo mu ca n:
n s dng hai tham s thay v mt. Hai tham s ny c nhn vi nhau c c kch
thc tng cng ca khi nh cn cp pht. Thng thng tham s u tin (nelements)
l s phn t v tham s thc hai (size) l kch thc ca mi phn t. V d, chng ta
c th nh ngha bobby vi calloc nh sau:
int * bobby;
bobby = (int *) calloc (5, sizeof(int));
Hm realloc.
N thay i kch thc ca khi nh c cp pht cho mt con tr.
Hm free.
Hm ny gii phng mt khi nh ng c cp pht bi malloc, calloc hoc
realloc.
Trang 68
Updatesofts.com Ebooks Team
Cc cu trc
Cc cu trc d liu.
Mt cu trc d liu l mt tp hp ca nhng kiu d liu khc nhau c gp li vi
mt ci tn duy nht. Dng thc ca n nh sau:
struct model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;
trong model_name l tn ca mu kiu d liu v tham s ty chn object_name mt
tn hp l cho i tng. Bn trong cp ngoc nhn l tn cc phn t ca cu trc v
kiu ca chng.
struct products {
char name [30];
float price;
} ;
products apple;
products orange, melon;
Chng ta nh ngha cu trc products vi hai trng: name v price, mi trng c
mt kiu khc nhau. Chng ta cng s dng tn ca kiu cu trc (products) khai
bo ba i tng c kiu : apple, orange v melon.
struct products {
char name [30];
float price;
} apple, orange, melon;
Hn na, trong trng hp ny tham s model_name tr thnh tu chn. Mc d nu
model_name khng c s dng th chng ta s khng th khai bo thm cc i tng
c kiu mu ny.
Trang 69
Updatesofts.com Ebooks Team
apple.name
apple.price
orange.name
orange.price
melon.name
melon.price
int main ()
{
char buffer [50];
Trang 70
Updatesofts.com Ebooks Team
return 0;
}
Trang 71
Updatesofts.com Ebooks Team
Con tr tr n cu trc
Nh bt k cc kiu d liu no khc, cc cu trc c th c tr n bi con tr. Quy
tc hon ton ging nh i vi bt k kiu d liu c bn no:
struct movies_t {
char title [50];
int year;
};
movies_t amovie;
movies_t * pmovie;
y amovie l mt i tng c kiu movies_t v pmovie l mt con tr tr ti i
tng movies_t. OK, by gi chng ta s n vi mt v d khc, n s gii thiu mt
ton t mi:
// pointers to structures Enter title: Matrix
#include <iostream.h> Enter year: 1999
#include <stdlib.h>
You have entered:
struct movies_t { Matrix (1999)
char title [50];
int year;
};
int main ()
{
char buffer[50];
movies_t amovie;
movies_t * pmovie;
pmovie = & amovie;
Trang 72
Updatesofts.com Ebooks Team
return 0;
}
on m trn gii thiu mt iu quan trng: ton t ->. y l mt ton t tham chiu
ch dng tr ti cc cu trc v cc lp (class). N cho php chng ta khng phi dng
ngoc mi khi tham chiu n mt phn t ca cu trc. Trong v d ny chng ta s
dng:
movies->title
n c th c dch thnh:
(*movies).title
*movies.title
n tng ng vi
*(movies.title)
Trang 73
Updatesofts.com Ebooks Team
int year;
}
struct friends_t {
char name [50];
char email [50];
movies_t favourite_movie;
} charlie, maria;
charlie.name
maria.favourite_movie.title
charlie.favourite_movie.year
pfriends->favourite_movie.year
Trang 74
Updatesofts.com Ebooks Team
typedef char C;
typedef unsigned int WORD;
typedef char * string_t;
typedef char field [50];
Union
Union cho php mt phn b nh c th c truy xut di dng nhiu kiu d liu
khc nhau mc d tt c chng u nm cng mt v tr trong b nh. Phn khai bo v
s dng n tng t vi cu trc nhng chc nng th khc hon ton:
union model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;
Trang 75
Updatesofts.com Ebooks Team
mytypes.c
mytypes.i
mytypes.f
union mix_t{
long l;
struct {
short hi;
short lo;
} s;
char c[4];
} mix;
nh ngha ba phn t cho php chng ta truy xut n cng mt nhm 4 byte: mix.l,
mix.s v mix.c m chng ta c th s dng tu theo vic chng ta mun truy xut n
nhm 4 byte ny nh th no. Ti dng nhiu kiu d liu khc nhau, mng v cu trc
trong union bn c th thy cc cch khc nhau m chng ta c th truy xut d liu.
Cc unions v danh
Trong C++ chng ta c th s dng cc unions v danh. Nu chng ta t mt union
trong mt cu trc m khng tn (phn i sau cp ngoc nhn { }) union s tr thnh
v danh v chng ta c th truy xut trc tip n cc phn t ca n m khng cn n
tn ca union (c cn cng khng c). V d, hy xem xt s khc bit gia hai phn
khai bo sau y:
union union v danh
Trang 76
Updatesofts.com Ebooks Team
struct { struct {
char title[50]; char title[50];
char author[50]; char author[50];
union { union {
float dollars; float dollars;
int yens; int yens;
} price; };
} book; } book;
book.price.dollars
book.price.yens
book.dollars
book.yens
enum colors_t {black, blue, green, cyan, red, purple, yellow, white};
mycolor = blue;
if (mycolor == green) mycolor = red;
Trang 77
Updatesofts.com Ebooks Team
Trang 78