You are on page 1of 24

Lp trnh ng dng trong k thut Chng 2

B mn C in t Trang 1


TM TT CHNG 2 : C++/CLI CN BN.

1) To v bin dch mt chng trnh C++/CLI :
a) Dng phn mm Visual Studio :
M chng trnh VS 2008. Trong mn hnh khi ng, chn File - > New -> Project


Trong ca s New Project : Chn kiu project l CLR, trong ca s Templates chn
CLR Console Application.
Nhp tn ca project vo Name v chn th mc cha project trong Location.
Nhp OK.


Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 2

Xut hin ca s Project, chng ta c th bt u vit chng trnh trong vng son tho.


Sau khi hon tt chng trnh, nhn vo biu tng Debug chy chng trnh (hoc
nhn F5).
Khi Debug, nu chng trnh co li v mt c php, VS s thng bo cc li ny trong ca
s Error, nhp kp chut vo dng thng bo li bit v tr li.


Nu khng thy ca s Error, trn thanh cng c chn View -> Other Windows -> Error
List. (Hoc nhn Ctrl+F5).

b) Dng Notepad :
M Notepad v bt u vit chng trnh trong ca s son tho ca Notepad.
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 3


Sau khi hon tt, lu li vi ui .cpp. (V d mun lu li vi tn l Vidu th trong File
name nhp Vidu.cpp, trong Save as type chn All Files.


bin dch chng trnh, m VS Command Prompt.



Trong mn hnh Command Prompt, chuyn n th mc ang cha tp tin mun bin dch
bng lnh cd. V d nu tp tin Vidu.cpp c lu trong th mc CLI trong E th nhp cd
E:\CLI.

Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 4



Sau khi chuyn n th mc, tin hnh bin dch bng lnh : cl name /clr:safe . Trong
, name l tn tp tin mun bin dch bao gm c ui m rng (V d : Vidu.cpp).

Sau khi bin dch thnh cng, hai tp tin Vidu.exe v Vidu.obj s c to ra.

Ta c th chy chng trnh bng cch nhp kp vo Vidu.exe trong th mc cha tp tin
lp trnh hoc chy trc tip trn Command Prompt bng cch nhp vo tn ca tp tin ti du
nhc (khng bao gm ui m rng).

Lu : Nu chng trnh c li v mt c php, qu trnh bin dch s tht bi.

2) Class CONSOLE :
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 5

Class qun l vic tng tc vi mn hnh Console. Cc phng thc (hm) c bn ca lp:

Write(a) : Hm mt i s. Xut ra mn hnh Console gi tr ca a (a c th l bin hoc
hng s).
VD : Console::Write (10); -> 10
Console::Write(Hello); -> Hello

WriteLine(a) : Hm mt i s. Tng t nh Write() nhng sau khi xut gi tr ra mn
hnh s xung dng.
VD : Console::WriteLine(10); -> 10
Console::WriteLine(Hello); -> Hello

Read() : Hm khng c i s. Kiu d liu tr v l interger. Nhn mt k t c nhp t
bn phm.
VD : int a = Console::Read ();
5 : a = 5
A : a = 65 (s thp phn tng ng m ASCII ca k t A )
AB : a = 65 (khi nhp vo mt chui k t th ch nhn k t u tin).

ReadLine() : Hm khng c i s. Kiu d liu tr v l String. Nhn mt chui k t
c nhp t bn phm.
VD : String^ b = Console::ReadLine ();
Hello : b = Hello.

ReadKey() : Hm khng c i s. Kiu d liu tr v l ConsoleKeyInfo. Nhn phm
c nhn t bn phm (tr cc phm c bit Ctrl, Shift, Alt).
VD : ConsoleKeyInfo b = Console::ReadKey ();
Console::Write(b.Key);
(Nhn phm) Esc -> Escape

Kim tra xem c phi phm x c nhn : b.Key == ConsoleKey::x ;
VD : if (b.Key ==ConsoleKey::Escape) Console::Write(L Phm ESC);
else Console::Write(L Khng phi phm ESC);

Clear() : Hm khng c i s.Xa ton b mn hnh Console.
VD : Console::Clear ();

Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 6

3) Bin v Con tr :
a) Bin:
Cc bin chng ta bit v s dng trc y u l bin c kch thc v kiu d liu
xc nh. Ngi ta gi cc bin kiu ny l bin tnh. Khi chng ta khai bo bin, phn mm lp
trnh s t ng tm mt vng nh cn trng trong b nh lu tr gi tr ca bin, kch thc
ca vng nh ty thuc vo kiu d liu ca bin. Bt c mt bin no cng c mt a ch trong
b nh ca my tnh (a ch ny c lu tr trong cc thanh ghi (register) c bit ca CPU).
Khi khai bo bin tnh, mt lng nh cho cc bin ny s c cp pht m khng cn
bit trong qu trnh thc thi chng trnh c s dng ht lng nh ny hay khng. Mt khc,
cc bin tnh dng ny s tn ti trong sut thi gian thc thi chng trnh d c nhng bin m
chng trnh ch s dng 1 ln ri b.
Cc kiu bin tnh : cc bin kiu gi tr nh interger, float, decimal, boolean v character.
Mt s hn ch c th gp phi khi s dng cc bin tnh:
Cp pht nh d, gy ra lng ph nh.
Cp pht nh thiu, chng trnh thc thi b li.
trnh nhng hn ch trn, ngn ng C++ cung cp cho ta mt loi bin c bit gi l
bin ng vi cc c im sau:
Ch pht sinh trong qu trnh thc hin chng trnh ch khng pht sinh lc bt
u chng trnh.
Khi chy chng trnh, kch thc ca bin, vng nh v a ch vng nh c cp
pht cho bin c th thay i.
Sau khi s dng xong c th gii phng tit kim ch trong b nh.
Cc kiu bin ng : String, Object, array, interface, delegate
Tuy nhin cc bin ng khng c a ch nht nh nn ta khng th truy cp n chng
c. V th, ngn ng C li cung cp cho ta mt loi bin c bit na khc phc tnh trng
ny, l bin con tr (pointer) vi cc c im:
Bin con tr khng cha d liu m ch cha a ch ca d liu hay cha a ch ca nh
cha d liu.
Kch thc ca bin con tr khng ph thuc vo kiu d liu, lun c kch thc c nh
l 2 byte.
Tt c cc bin ng u phi khai bo thng qua con tr.
b) Pointer : (*)
Mun truy xut gi tr ca mt bin, th c th gi tn bin trong chng trnh hoc truy
xut trc tip n vng nh thng qua a ch ca bin.
truy xut trc tip n vng nh ca bin, ta dng bin con tr (pointer). Ni n gin,
con tr l mt bin cha a ch ca bin khc. Kch thc ca bin con tr khng ph thuc vo
kiu d liu, lun c kch thc c nh l 2 byte.
C php khai bo : type* name;
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 7

Trong type l kiu d liu ca bin m con tr cha a ch v name l tn ca
bin con tr.
VD : int* a; //Khai bo bin con tr a cha a ch ca mt bin c kiu
int.

Khi mi khai bo, bin con tr s c gi tr ngu nhin. Ngha l n ang ch ti mt v tr
bt k no trong b nh. gn a ch ca mt bin cho con tr, ta dng ton t a ch &
VD : int k = 10;
int* a = &k; //Con tr a ang cha a ch ca bin k.

truy cp ni dung ca nh m con tr ang ch ti, ta s dng ton t gin tip *.
VD : int y =*a; //Bin y s c gn gi tr ca nh m con tr a ang ch
ti.

Ta c th cng (+), tr (-) 1 con tr vi 1 s nguyn N no ; kt qu tr v l 1 con tr.
Con tr ny ch n vng nh cch vng nh ca con tr hin ti N phn t (vng nh) . Kch
thc ca vng nh ph thuc vo kiu d liu ca bin m con tr ch ti (mi nh c kch
thc 1 byte).
VD : int k = 10;
int* a = &k;
int* b = a + 3; // Nu a ang ch ti nh 1000 th b s ch ti nh c a
ch 1012 (kiu int c kch thc 32-bit (4 byte), do mi vng nh ca bin kiu int l
4 nh; a ch ca con tr b cch con tr a 4 phn t tng ng vi 12 nh ).

Ta khng th cng hai bin con tr vi nhau nhng c th tr hai bin con tr (kt qu l
mt s nguyn cho bit khong cch gia hai nh m hai con tr ang tr ti).
VD : int k1=10, k2=20;
int *a =&k1, *b =&k2;
int y = a b; // Nu a ang ch ti nh 1000 v b ch ti nh 1012 th y =
12.

Do con tr cng l mt bin nn cng c lu tr trong b nh, nn ta c th dng mt
con tr khc ch ti a ch ny.
VD: int*a = &k1;
int**b = &a;

c) Handle : (^)
Handle cng c chc nng tng t nh pointer. Ch khc l n khng phn nh c a
ch tht ca i tng nm u trn b nh m n phn nh c 1 gi tr 32 bit do CLR qun
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 8

l. Do handle cn c th c xem l mt con tr o cho php tng tc vi b nh thng qua
CLR.
Do khng phn nh a ch tht ca i tng trn b nh nn ta khng th thc hin cc
php ton cng tr vi s nguyn nh pointer.
C ch qun l b nh ca mt s ngn ng :

4) String (Kiu chui k t) :
String l kiu d liu cho php lu tr gi tr di dng mt dy cc k t. d hnh
dung, ta c xem String nh l mt vect gm nhiu phn t lin tip nhau, mi phn t l mt k
t.
C php khai bo : String^ name; //name l tn bin.
gn gi tr cho bin kiu String, ta t chui k t trong cp du .
VD : String^ a = Xinchao;

Do kch thc ca kiu String l khng xc nh (v khng bit chnh xc chiu di ca
chui k t). Nn String thuc kiu d liu tham chiu (reference type) v khi khai bo cn c ^
(handle).
Ta c th truy xut n bt k mt phn t no trong chui nu bit v tr ca phn t .
VD : String^ a = Xinchao;
Char b = a [3]; // b = c (a[3] c ngha l phn t th 4,
phn t u tin l a[0]).

Trong C++/CLI, c ring mt Class qun l kiu chui l Class String. Cc bin (variable)
v phng thc (method) c bn ca Class String :
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 9

Length : bin c kiu interger. Tr v chiu di ca chui (s lng cc k t ca chui).
VD : String^ a = Xinchao ;
int x = a->Length; // x s c gi tr = 7.

Concat() : Hm nhiu i s. Kiu d liu tr v l String. Thc hin chc nng ni cc
chui li vi nhau.
VD : String ^ a = Welcome, ^b = To , ^c = Viet Nam;
String ^ d = String::Concat(a,b,c); // d = Welcome to Viet Nam

Substring(int n) : Hm mt i s. Kiu d liu tr v l String. To mt chui mi t
chui ban u bng cch loi i n phn t u tin .
VD : String^ a = Hello;
String^ b = a->Substring(2); // b = llo

ToUpper() : Hm khng i s. Kiu d liu tr v l String. Thc hin chc nng chuyn
tt c cc k t ca chui thnh ch HOA
VD : String ^ a = Welcome;
String ^ b = a->ToUpper(); // b= WELCOME

ToLower() : Hm khng i s. Kiu d liu tr v l String. Thc hin chc nng chuyn
tt c cc k t ca chui thnh ch thng.
VD : String ^ a = Welcome;
String ^ b = a->ToLower(); // b= welcome

Remove(int n, int m) : Hm hai i s. Kiu d liu tr v l String. To mt chui mi t
chui ban u bng cch loi i m cc phn t t v tr n .
VD : String^ a = Hello Viet Nam;
String^ b = a->Remove(2,5); // b = Heiet Nam

Replace(String^ n, String^ m) : Hm hai i s. Kiu d liu tr v l String. To mt
chui mi t chui ban u bng cch thay th chui n bng chui m.
VD : String^ a = Hello Hell;
String^ b = a->Replace(ell, i); // b = Hio Hi

Insert(int n, String^ m) : Hm hai i s. Kiu d liu tr v l String. To mt chui mi
t chui ban u bng cch chn thm vo chui m ti v tr th n .
VD : String^ a = Hello;
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 10

String^ b = a->Insert(2, hi); // b = Hehillo

Trim() : Hm khng i s. Kiu d liu tr v l String. Loi b cc k t khong trng
(spacebar) u v cui chui.
VD : String^ a = Hello VN ;
String^ b = a->Trim() ; // b = Hello VN

5) Array (Kiu mng) :
array l kiu d liu dng tp hp (collection) cho php lu tr gi tr di dng mt
mng cc phn t c cng kiu d liu. d hnh dung, ta c xem array nh l mt ma trn
nhiu chiu gm nhiu phn t, kiu d liu ca mi phn t l bt k.
Vi phin bn VS 2005 (.Net Framework 1.1), mun s dng kiu mng cn khai bo
namespace stdcli::language. Tuy nhin t phin bn VS 2008 (.Net Framework 2.0) th khng
cn khai bo.

C php khai bo :
Mng 1 chiu : array <type>^ name; //name l tn bin, type l kiu d liu ca
bin.
Mng n chiu : array <type, n>^ name; //n l s chiu ca mng.
VD : array <int>^ a; //mng 1 chiu, phn t c kiu interger.
array <String^, 2>^ b; //mng 2 chiu, kiu d liu l String.
array <array<int,2>^,2>^ b; //mng 2 chiu, mi phn t li l 1 array 2
chiu.

S chiu ti a ca mng l 32.
Trc khi s dng mng, ta phi thc hin vic cp pht b nh cho mng. Vic cp pht
b nh c thc hin bng lnh gcnew().
C php : name = gcnew array<type,n>(k1,k2,,kn); // k1,k2,,kn l s phn t
ng vi chiu th 1,2,,n ca mng.
VD : array<int,2>^ M;
M = gcnew array<int,2>(5,3); //mng 2 chiu 5x3 (5 hng, 3 ct).

Mun gn gi tr cho mng, ta phi gn gi tr cho tng phn t mt. truy xut n tng
phn t ca mng, ta dng c php :
name[i1,i2,,in] //name l tn mng, i1,i2,,in l v tr ca phn t trong mng

VD : array<int,2>^ M = gcnew array<int,2>(5,3);
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 11

M[3,2] = 10; //gn gi tr 10 cho phn t hng th 4, ct 3 (phn t
hng 1 ct 1 l M[0,0]).

Ngoi ra, nu gi tr tt c cc phn t ca mng bit. Ta c dng cch gn trc tip nh
sau :
VD : array<int,2>^ M = { {1,2,3},{2,3,0},{1,2,3} }; //mng 3x3

Lu : khi dng cch gn gi tr trc tip, ta phi gn ngay khi khai bo v khng cn
dng lnh gcnew() (phn mm s t ng cp pht b nh).
VD : array<int,2>^ M;
M = { {1,2,3},{2,3,0},{1,2,3} }; // bo li.

Trong C++/CLI, c ring mt Class qun l kiu mng l Class Array. Cc bin (variable)
v phng thc (method) c bn ca Class Array :
Rank : bin c kiu interger. Tr v s chiu ca mng.
VD : array<int,2>^ M = gcnew array<int,3>(5,3,2);
int x = M->Rank; // x s c gi tr = 3.

GetLength (int i) : hm 1 i s. Kiu d liu tr v l interger. Tr v s phn t (kch
thc) chiu th i ca mng.
VD : array<int,2>^ M = gcnew array<int,2>(5,3);
int x = M->GetLength(0); // x = 5.
int y = M->GetLength(1); // y = 3.

Reverse(array^ x) : Hm mt i s. Khng tr v d liu. Thc hin chc nng o ngc
th t ca mng 1 chiu.
VD : array<int>^ M = { 1,2,3,4,5 };
Array::Reverse(M); // M = {5,4,3,2,1}.

Sort(array^ x) : Hm mt i s. Khng tr v d liu. Thc hin chc nng sp xp th
t ca mng 1 chiu.
VD : array<int>^ M = { 5,1,3,3,2 };
Array::Sort(M); // M = {1,2,3,3,5}.

Sort(array^ x, array^ y) : Hm hai i s. Khng tr v d liu. Thc hin chc nng sp
xp th t ca 2 mng 1 chiu da vo mng th nht.
VD : array<int>^ M = { 5,1,3,3,2 };
array<Char>^ C = {A, D, K, E, F};
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 12

Array::Sort(M,C); // M = {1,2,3,3,5} C = {D, F, K, E, A}

6) Ton t (Operator) :
a) Ton t s hc :
Thc hin cc tnh ton s hc trn s nguyn, s thc v s thp phn. Bao gm cc
ton t sau :
- : Php tr hay php ly phn m.
+ : Php cng.
* : Php nhn.
/ : Php chia.
% : Php chia ly d.
++ : Tng n v.
-- : Gim n v.

Lu :
Php chia ly d (%) ch thc hin trn s nguyn (interger).
++/-- t trc ton hng : thc hin tng gim trn ton hng ri sau mi thc hin
php tnh.
++/-- t sau ton hng : thc hin php tnh trc ri sau mi thc hin tng gim trn
ton hng.
VD : int x = 5, y = 3;
int z = x%y; // z = 2 (5 chia 3 d 2).
int k = x++%y; // k = 2 , x = 6 ( thc hin x% y trc ri mi tng x).
int t = ++z%y; // t = 0 , z = 3 (tng z ri mi thc hin z%y)

b) Ton t so snh v logic :
Ton t so snh thc hin so snh hai biu thc v tr v mt gi tr bool da vo kt qu
ca vic so snh. Bao gm cc ton t sau :

> : So snh ln hn.
< : So snh nh hn.
>= : So snh ln hn hoc bng.
<= : So snh nh hn hoc bng.
== : So snh bng.
!= : So snh khng bng.

Ton t logic thc hin cc php ton trn s bool. Bao gm 3 ton t :

Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 13

! : Php NOT.
&& : Php AND.
|| : Php OR.

VD : int x = 5, y = 3;
int z = x%y; // z = 2 (5 chia 3 d 2).
int k = x++%y; // k = 2 , x = 6 ( thc hin x% y trc ri mi tng x).
int t = ++z%y; // t = 0 , z = 3 (tng z ri mi thc hin z%y)

c) Ton t thao tc bit (bitwise) :
Thc hin cc php tnh trn tng bit ca mt s nguyn (chuyn s nguyn sang s nh
phn ri thc hin php ton, kt qu sau c chuyn ngc li s nguyn).

& : Php AND.
| : Php OR.
^ : Php XOR.
~ : Php b -1.
>> : Php dch phi.
<< : Php dch tri.

VD : Byte x = 5, y = 3; // Gi tr nh phn x = 0000 0101 y = 0000 0011
Byte z = x&y; // z = 0000 0101 & 0000 0011 = 0000 0001 = 1
Byte k = x>>2; // k = 0000 0001 = 1.
Byte t = y<<3; // t = 0000 1100 = 12

d) Ton t iu kin :
Ton t iu kin l ton t ba ngi duy nht trong C++/CLI.
C php : condition ? result 1 : result 2;
Trong condition l iu kin : nu iu kin l ng (true) th biu thc s tr v
result1 , nu iu kin l sai (false) th biu thc s tr v result2.

VD : int x = 5, y = 3;
int z = (x > y) ? (x+y) : (x-y); // z = 8 : x > y ng nn z = x + y
int k = (x < y) ? (x+y) : (x-y); // z = 2 : x < y sai nn z = x - y

e) Ton t gn :
Thc hin vic gn gi tr cho cc bin. Bao gm 11 ton t gn.
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 14


= : Gn trc tip.
+= : Thc hin cng ri mi gn ( x += a x = x + a).
-= : Thc hin tr ri mi gn ( x -= a x = x - a).
*= : Thc hin nhn ri mi gn ( x *= a x = x * a).
/= : Thc hin chia ri mi gn ( x /= a x = x / a).
%= : Thc hin chia ly d ri mi gn ( x %= a x = x % a).
&= : Thc hin AND ri mi gn ( x &= a x = x & a).
^= : Thc hin XOR ri mi gn ( x ^= a x = x ^ a).
|= : Thc hin OR ri mi gn ( x |= a x = x|a).
>>=: Thc hin dch phi ri mi gn ( x >>= a x = x >> a).
<<=: Thc hin dch tri ri mi gn ( x <<= a x = x << a).

f) Ton t ngoc n (comma) :
Gm nhiu biu thc lin tip c thc hin lin tip, kt qu l kt qu ca biu thc
cui cng.

VD : int x = 5, y = 3;
int z = (y++, x = y++ * x++, x%y); // z = 4.

g) Ton t a ch, tham chiu v gin tip :
Ton t a ch (&) : tr v a ch (trong b nh) ca mt bin.
VD : int x = 5, *y ;
y = &x; // t a ch ca bin x vo bin con tr y.

Ton t gin tip (*) : ton t mt ngi trn bin con tr, tr v gi tr ang lu tr trong
nh m bin con tr ang ch ti.
VD : int x ;
int *y = &x; // y ch ti a ch lu tr gi tr bin x
x = 10;
int z = *y; // z = gi tr ang lu tr trong a ch vng nh m y
ang ch ti.

Ton t tham chiu (%) : thc hin tham chiu n mt bin cng kiu d liu.
VD : int x = 5;
int % y = x; // y tham chiu n bin x.
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 15

x = 10; // x = 10, y =10 : v y tham chiu n x nn khi x thay
i gi tr th y cng thay i gi tri.
int z = y; // z = 10.
y = 20; // x = 20, y =20 : khi y thay i gi tr th x cng thay
i gi tr.

h) Th t u tin ca cc ton t : (Tham kho trong ti liu).

7) Cu trc iu khin (Control Construct) :
a) Cu trc iu kin (Condition Construct) :
Cc cu trc iu kin l mt on m lnh, chng trnh ch thc hin on m lnh nu
iu kin ca cu trc l ng (true). C++/CLI cung cp 2 loi cu trc iu kin : if v switch
Cu trc if :
C php :

if (conditon) //Nu iu kin ng th thc hin on m lnh.
{
Statement;
}

Hoc :

if (conditon) //Nu iu kin ng th thc hin on m lnh 1.
{
Statement 1;
}
else // Nu iu kin sai th thc hin on m lnh 2.
{
Statement 2;
}

Nu c nhiu vng if lng nhau (nhiu iu kin) th c th dng cu trc sau :

if (conditon 1) //Nu iu kin 1 ng th thc hin on m lnh 1.
{
Statement 1;
}
else if (condition 2) // Nu iu kin 2 ng th thc hin on m lnh 2.
{
Statement 2;
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 16

}
else // Nu tt c u sai th thc hin on m lnh 3.
{
Statement 3;
}

VD : int x = 5, y = 10;
if (x>y)
{
Console::WriteLine(x); //iu kin sai khng thc hin.
}
else
{
Console::WriteLine(y); //Xut ra mn hnh console gi tr bin y.
}

Cu trc switch :
Cu trc switch l cu trc iu kin nhiu la chn.
C php :
switch (expression) // expression l mt biu thc.
{
case constant1: // Nu kt qu biu thc = constant1 th thc hin
Statement1; on m lnh Statement1.
break; // Sau khi kt thc Statement1 th thot khi.

case constant2: // Nu kt qu biu thc = constant2 th thc hin
Statement2; on m lnh Statement2.
break; // Sau khi kt thc Statement2 th thot khi.

default: // on lnh mc nh
Statement3;
}

VD : int x = 4,y;
switch (x%3)
{
case 0:
Console::WriteLine(x chia het cho 3);
break;
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 17

case 1:
Console::WriteLine(x la so chan);
break;
default :
Console::WriteLine(x la so le);
}

Kt qu xut ra mn hnh ca on m trn : x la so chan.

Lu :
Lnh break c tc dng thot khi iu kin. Nu khng c lnh break sau mi
on lnh case, chng trnh s thc thi n on lnh case tip theo (nu tha iu
kin).
Cu trc switch-case c th c thay th bi cu trc if , trong , condition trong
cu trc if s l (expression == constant).

if (expression == constant 1)
{
Statement 1;
}
else if (expression == constant 2)
{
Statement 2;
}
else
{
Statement 3;
}
b) Cu trc lp (Looping Construct) :
Cc cu trc lp l mt on m lnh c lp li nhiu. C++/CLI cung cp 2 loi cu trc
lp : lp c gii hn (bao gm cu trc for v for each) v lp khng gii hn (bao gm cu trc
while v do-while).
Cu trc while :
Cu trc while thc hin lp li mt on m lnh nu nh iu kin lp vn cn tha
mn.
C php :
while (condition)
{
Statements; // Thc hin li on lnh khi condition vn cn ng.
}
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 18

VD : int x = 0;
while (x < 3)
{
Console::Write({0}/t,x++);
}

Kt qu in ra mn hnh : 0 1 2

Cu trc do-while :
Cu trc do-while cng tng t nh cu trc while; khc bit duy nht l cu tr do-while
s thc hin on lnh trc ri mi kim tra iu kin trong khi cu trc while th kim tra iu
kin trc ri mi thc hin on lnh.
C php :
do
{
Statements; // Thc hin li on lnh khi condition vn cn ng.
} while (condition);

VD : int x = 0;
do
{
Console::Write({0}/t,x++);
} while (x < 3);

Kt qu in ra mn hnh : 0 1 2 3
Lu :
Cu trc while v do-while l cc cu trc lp v hn, do trong on m lnh
phi c on lnh thot khi vng lp.

Cu trc for :
Cu trc for thc hin lp li c gii hn mt on m lnh .
C php :
for (initialization ; condition ; increment)
{
Statements; // Thc hin li on lnh khi condition vn cn ng.
}

Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 19

initialization : Pht biu khi to, c th c nhiu pht biu, cc pht biu cch nhu bng
du , .
condition : iu kin, ch c duy nht mt iu kin.
increment : tng hoc gim dn gi tr bin khi to. C th c nhiu.

VD : for (int i = 0 ; i < 3 ; i++)
{
Console::Write({0}/t, i);
}

Kt qu in ra mn hnh : 0 1 2

Trng hp c nhiu pht biu khi to :

VD : for (int i= 0, j = 0, z = 0 ; (i+j+z) < 10 ; i++, j++, z++)
{
Console::WriteLine({0}/t, (i+j));
}

Kt qu in ra mn hnh : 0 2 4 6

Cu trc for each :
Cu trc for each c chc nng tng t nh cu trc for v thng c dng vi
cc bin kiu tp hp (collection). Ti mi vng lp, bin s c gi tr bng gi tr mt phn t ca
tp hp.
C php :
for each (type name in collection) //name l tn bin, collection l tp hp.
{
Statements; // Thc hin li on lnh.
}

VD : array <Char>^ M = {A , B , C, D};
for each(Char x in M)
{
Console::Write({0}/t, x);
}

Kt qu in ra mn hnh : A B C D
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 20

8) Hm (Function) :
Hm c xem nh l trung tm ca cc chng trnh C++/CLI. V c bn, hm l mt
khi lnh v c th c thc thi khi c gi ra t bt c v tr no trong chng trnh. C hai
kiu hm c bn : hm tr v kiu d liu v hm khng tr v kiu d liu.
a) Hm tr v kiu d liu :
Hm tr v kiu d liu l hm sau khi kt thc s tr v mt gi tr, ta c gi ly gi tr
ny bng cch gn cho mt bin.
C php :
type function-name (argument 1, argument 2, )
{
Statements; // on m lnh ca hm.
return x; // Gi tr mun tr v.
}
Trong , type l kiu d liu ca gi tr hm tr v, function-name l tn ca hm,
argument l tham s ca hm (bao gm kiu d liu v tn ca tham s). S lng tham s ca
hm l khng gii hn. Khi kt thc on m lnh ca hm phi c lnh return, gi tr c dng
vi lnh return chnh l gi tr tr v ca hm.
Hm c khai bo bn ngoi hm main().Trong hm main(), khi mun s dng hm, ta
c th gi hm thng qua tn ca hm v cc tham s c truyn vo. Sau y l mt v d v
hm gii phng trnh bc 1.

VD : using namespace Sytem;
int Solve (int a, int b) // Hm gii pt bc 1 ax + b = 0.
{
int x = -b/a;
return x; // Tr v gi tr nghim x.
}
void main()
{
int x = 5, y =10;
int z = Solve (x,y); // Gi hm v truyn tham s cho hm .
Console::WriteLine(z); // z = -2.
}
Lu :
Tt c cc bin c khai bo bn trong hm u l bin tm, cc bin ny s b xa
sau khi hm kt thc. Do , cc bin bn trong hm v bin trong chng trnh
chnh c th trng tn nhau.
Hm c th c gi nhiu ln trong chng trnh chnh.
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 21

b) Hm khng tr v d liu :
Hm tr v d liu l hm sau khi kt thc s khng tr v bt c mt gi tr no, do ta
ch c th gi trc tip hm m khng th gn cho mt bin khc.
C php :
void function-name (argument 1, argument 2, )
{
Statements; // on m lnh ca hm.
}

Hm khng tr v d liu khng c lnh return cui on m.

VD : using namespace Sytem;
void Solve (int a, int b) // Hm gii pt bc 1 ax + b = 0.
{
int x = -b/a;
Console::WriteLine (x);
}
void main()
{
int x = 5, y =10;
Solve (x,y); // Gi hm v truyn tham s cho hm .
}

c) Truyn tham s cho hm :
C hai cch truyn tham s cho hm : tham tr (by value) v tham chiu (by reference).
im khc bit duy nht v c php gia hai cch truyn ny l nu truyn theo tham chiu th
trc tham s c thm ton t tham chiu (%) hoc a ch (&) hoc khai bo tham s theo kiu
con tr.
VD : void Solve (int a, int b) // Truyn tham tr.
void Solve (int %a, int %b) // Truyn tham chiu.
void Solve (int &a, int &b) // Truyn tham chiu theo a ch.
void Solve (int ^a, int ^b) // Truyn tham s kiu con tr.

V mt bn cht, khi truyn tham s theo kiu gi tr cho hm, tc l ta ch truyn gi tr
ca bin cho hm ch khng phi bn thn ca bin. Do , hm ny khng th thay i c gi
tr ban u ca tham s.
VD : void Binh_phuong (int a) // Hm tnh bnh phng ca mt s.
{
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 22

a = a*a;
}
void main()
{
int x = 5;
Binh_phuong (x); // Gi hm v truyn tham s cho hm .
Console::WriteLine(x);
}
Kt qu in ra mn hnh : 5
Trong v d trn, khi gi hm Binh_phuong(x) v truyn tham s x cho hm cng tng
ng vi vic truyn s 5 cho hm Binh_phuong(5) v hm ch quan tm n gi tr ca tham s.
Do , nu mun s dng hm thay i gi tr ca tham s, ta phi khai bo tham s theo kiu
truyn tham chiu.
VD : void Binh_phuong (int %a) // Hm tnh bnh phng ca mt s.
{
a = a*a;
}
void main()
{
int x = 5;
Binh_phuong (x); // Gi hm v truyn tham s cho hm .
Console::WriteLine(x);
}
Kt qu in ra mn hnh : 25
VD : void Binh_phuong (int ^a) // Hm tnh bnh phng ca mt s.
{
*a = (*a)*(*a); // *a l ton t gin tip.
}
void main()
{
int ^x = 5;
Binh_phuong (x); // Gi hm v truyn tham s cho hm .
Console::WriteLine(x);
}
Kt qu in ra mn hnh : 25
VD : void Binh_phuong (int &a) // Hm tnh bnh phng ca mt s.
{
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 23

a = a*a;
}
void main()
{
int x = 5;
Binh_phuong (x); // Gi hm v truyn tham s cho hm .
Console::WriteLine(x);
}
Kt qu in ra mn hnh : 25
Nh vy, ta c th thy khi truyn tham s theo kiu tham chiu, c ngha l ta truyn
bn thn ca bin cho hm (can thip trc tip ln nh lu tr gi tr tham s).
d) Hm qui v chng chp hm :
Hm qui l hm gi li chnh bn thn hm trong on m lnh ca hm.
VD : int Factorial (int a) // Hm tnh giai tha.
{
if (a > 1) return (a*Factorial(a-1));
else return 1;
}
Qu ti hm (Overload function) : l cc hm c cng tn nhng khc nhau v s lng
tham s hay kiu d liu ca tham s. Chng hn, hm WriteLine() ca Class Console l mt qu
ti hm, tham s ca hm c th l kiu interger, float, decimal, boolean, character hay String.
to ra qu ti hm, ta thc hin khai bo nhiu hm cng tn vi cc kiu d liu khc
nhau hay s lng tham s khc nhau.

VD : void Binh_phng (int %a) // Tham s kiu int.
{
a = a*a;
}
void Binh_phng (float %a) // Tham s kiu float.
{
a = a*a;
}

void Binh_phng (double %a) // Tham s kiu double.
{
a = a*a;
}
Lp trnh ng dng trong k thut Chng 2
B mn C in t Trang 24

c thm :
Class System::Math
Class Math l Class qun l cc hm thc hin cc php tnh s hc v cc hng s ton
hc.
- Hng s :
PI : hng s pi (3,14159) ( PI c kiu double).
E : hng s e ( e c kiu double).

VD : double x = Math::PI;
double y = Math::E;
- Cc hm lng gic v lng gic ngc :
Cos (double x) : hm cos.
Sin (double x) : hm sin.
Tan (double x) : hm tan.
Acos (double x) : hm arccos.
Asin (double x) : hm arcsin.
Atan (double x) : hm arctan.

- Cc hm i s :
Abs (x) : hm ly gi tr tuyt i.
Sign (x) : hm tr v du ca x (-1,0,1).
Round (x, y) : hm lm trn x n y s..
Log (x) : hm lnx.
Log (x,y) : log
y
x.
Log10 (x) : log
10
x.
Min (x,y) : ly gi tr nh nht ca x v y.
Max (x,y) : ly gi tr ln nht ca x v y.
Sqrt (x) : cn bc 2 ca x.
Exp (x) : hm e
x
.
Pow (x,y) : hm x
y
.
Floor (x) : hm lm trn xung.
Ceiling (x) : hm lm trn ln.

You might also like