cac khai niem co ban lap trinh c#

Upload: pham-tung-giang

Post on 17-Jul-2015

232 views

Category:

Documents


5 download

TRANSCRIPT

CC KHI NIM C BN TRONG LP TRNH C# 1. Cc ki u d li u trong C# C# chia thnh hai tp hp kiu d liu chnh: Kiu xy dng sn (built- in) m ngn ng cung cp cho ngi lp trnh v kiu c ngi dng nh ngha(user-defined) do ngi lp trnh to ra. C# phn tp hp kiu d liu ny thnh hai loi: Kiu d liu gi tr (value) v kiu d liu tham chiu (reference). Bn c th chuyn i t kiu d liu ny sang kiu d liu khc qua vic boxing v unboxing Bng cc kiu d liu xy dng sn C# Data Type object string int byte float bool char M t kiu d liu c bn ca tt c cc kiu khc c s dng lu tr nhng gi tr kiu ch cho bin S dng lu tr gi tr kiu s nguyn s dng lu tr gi byte S dng lu tr gi tr s thc Cho php mt bin lu tr gi tr ng hoc sai Cho php mt bin lu tr mt k t

Ghi ch : Tt c cc kiu d liu xy dng sn l kiu d liu gi tr ngoi tr cc i tng v chui. Vtt c cc kiu do ngi dng nh ngha ngoi tr kiu struct u l kiu d liu tham chiu. trong bi hc ny chng ta s tm hiu cc kiu xy dng sn. 2. Bi n v H ng a. Bi n

Mt bin l mt vng lu tr vi mt kiu d liu. to mt bin chng ta phi khai bo kiu ca bin v gn cho bin mt tn duy nht. Bin c th c khi to gi tr ngay khi c khai bo, hay n cng c th c gn mt gi tr mi vo bt c lc no trong chng trnh. Cc bin trong C# c khai bo theo cng thc nh sau:

AccessModifier DataType VariableName;Trong :

AccessModifier: xc nh u tin truy xut ti bin Datatype: nh ngha kiu lu tr d liu ca bin VariableName: l tn bin

Cp truy xut ti bin c m t nh bng di y Access Modifier public protected private Truy cp ti bt k ni u Cho php truy xut bn trong mt lp ni bin ny c nh ngha, hoc t cc lp con ca lp . Ch truy xut bn trong lp ni m bin c nh ngha. M t

V d bn khai bo mt bin kiu int int bien1; Bn c th khi gn ngay cho bin trong lc khai bo int bien1 = 9; hoc c th gn gi tr sau khi khai bo nh sau: int bien1; bien1 = 9; Cch khai bo bin tng ng vi cc kiu d liu: C# Data Type object string int byte float bool object obj = null; string str = "Welcome"; int ival = 12; byte val = 12; float val = 1.23F; bool val1 = false; bool val2 = true; char char cval = 'a'; V d

V d sau s minh ha cch s dng bin: using System; using System.Collections.Generic; using System.Text; namespace SuDungBien { class MinhHoa { static void Main() { int bien1 = 9; // khai bo v khi to gi tr cho mt bin System.Console.WriteLine("Sau khi khoi tao: bien1 ={0}", bien1); bien1 = 15; // gn gi tr cho bin

System.Console.WriteLine("Sau khi gan: bien1 ={0}", bien1); Console.ReadLine(); } } } Cc bn hy ch n mu sc ca on code trn. Cc ch c mu xanh dng l t kha, phn vn bn mu xanh lc sau du s cho // l cc ch thch, phn text nm trong du c mu l cc k t. Lnh Write v WriteLine c phn bit vic in ra mn hnh bin v k t. Sau y ti s ln lt gii thch cc khi nim trn. T kha Trong cuc sng, mi ngn ng u cha nhng t kha v nhng t ny hiu c bi ngi ni ra n. iu cng ng vi C#. T kha trong C# l nhng t c bit v mang ngha c bit ch dnh ring cho ngn ng ny. Trong VS.net nhng t kha ca C# s c mu xanh ra tri. trong v d trn cc t kha l using, namespace, int Tn v quy t c t tn trong C# Mi s vt hin tng trong cuc sng u c tn gi phn bit vi nhau v iu cng ng i vi mt chng trnh my tnh. Mi i tng ca chng trnh C# u c tn. Bn c th t tn cho bin, cho hm, cho lp v cho cc namespace. Ch rng C# l ngn ng phn bit ch hoa ch thng. V d bn khai bo 2 bin kiu int int bien1; v int Bien1; Th 2 bin ny l 2 i tng khc nhau. Khi bn t tn cn ch n cc nguyn tc sau:

-

K t u tin phi l mt ch ci (c th l ch hoa hoc thng) hoc l du gch di (_) K t tip theo c th ly bt k. Tn khng c trng vi t kha.

Cch vi t ch thch Ch thch trong chng trnh C# l nhng phn text lm r hn cho phn code ca lp trnh vin. Ch thch khng c c bi trnh bin dch, n khng lin quan g n chng trnh ca bn C 2 cch vit ch thch trong C#: Nu ch thch trn mt dng bn t phn ch thch sau 2 du s cho // ch thch

Nu ch thch trn nhiu dng bn t p hn ch thch trong cp /* */ c th /* ch thch*/ Cch in ra mn hnh Khi in cc k t ra mn hnh bn phi t chng trong cp du . Vy in ra bin th sao? Bn s lm theo mu sau V d bn c 3 bin :bien1, bien2, bien3 v bn mun in chng ra mn hnh. Bn s dng cu lnh: Console.WriteLine("{0} {1} {2}",bien1, bien2, bien3); b. H ng

Hng cng l mt bin nhng gi tr ca hng khng thay i. Bin l cng c rt mnh, tuy nhin khi lm vic vi mt gi tr c nh ngha l khng thay i, ta phi m bo gi tr ca n khng c thay i trong sut chng trnh. V d, khi lp mt chng trnh th nghim ha hc lin quan n nhit si, hay nhit ng ca nc, chng trnh cn khai bo hai bin l DoSoi v DoDong, nhng khng cho php gi tr ca hai bin ny b thay i hay b gn. ngn nga vic gn gi tr khc, ta phi s dng bin kiu hng. Hng c phn thnh ba loi: gi tr hng (literal), biu tng hng (symbolic constants), kiu liu k (enumerations). Chng ta s tm hiu v kiu lit k bi hc sau. Gi tr h ng Ta c mt cu lnh gn nh sau: x = 100; Gi tr 100 l gi tr hng. Gi tr ca 100 lun l 100. Ta khng th gn gi tr khc cho 100 c. Bi u t ng h ng gn mt tn cho mt gi tr hng, to mt biu tng hng dng t kha const v c php sau: = ; Mt biu tng hng phi c khi to khi khai bo, v ch khi to duy nht mt ln trong sut chng trnh v khng c thay i. V d: const int DoSoi = 100; Trong khai bo trn, 32 l mt hng s v DoSoi l mt biu tng hng c kiu nguyn. V d sau s minh ha cch s dng biu tng hng class MinhHoaC3 { static void Main() { const int DoSoi = 100; // C const int DoDong = 0; // C System.Console.WriteLine( Do dong cua nuoc {0}, DoDong ); System.Console.WriteLine( Do soi cua nuoc {0}, DoSoi );

} } Kt qu: Do dong cua nuoc 0 Do soi cua nuoc 100 Cc bn hiu c s khc nhau gia bin v hng- cch s dng chng trong C# . Ngoi ra bn cn bit th no l t kha, quy tc t tn trong C#, cch vit ch thch v cch ghi ra mn hnh k t, bin

3. nh ngha ton t Ton t c k hiu bng mt biu tng dng thc hin mt hnh ng. Cc kiu liu c bn ca C# nh kiu nguyn h tr rt nhiu cc ton t nh ton t gn, ton t ton hc, logic... 4. Cc lo i ton t

a.

Ton t gn

n lc ny ton t gn kh quen thuc vi chng ta, hu ht cc chng trnh minh ha t u u s dng php gn. Ton t gn hay php gn lm cho ton hng bn tri thay i gi tr bng vi gi tr ca ton hng bn phi. Ton t gn l ton t hai ngi. y l ton t n gin nht thng dng nht v cng d s dng nht. v d a = b

b.

Ton t ton h c Ngn ng C# cung cp nm ton t ton hc, bao gm bn ton t u cc php ton c bn. Ton t

cui cng l ton t chia nguyn ly phn d. Cc php ton s hc c bn (+,-,*,/) Cc php ton ny khng th thiu trong bt c ngn ng lp trnh no, C# cng khng ngoi l, cc php ton s hc n gin nhng rt cn thit bao gm: php cng (+), php tr (-), php nhn (*), php chia (/) nguyn v khng nguyn %. Khi chia hai s nguyn, th C# s b phn phn s, hay b phn d, tc l nu ta chia 8/3 th s c kt qu l 2 v s b phn d l 2. Tuy nhin, khi chia cho s thc c kiu nh float, double, hay decimal th kt qu chia c tr v l mt s thc. Php ton chia l y d tm phn d ca php chia nguyn, chng ta s dng ton t chia ly d (%). V d, cu lnh sau 8%3 th kt qu tr v l 2 (y l phn d cn li ca php chia nguyn). Tht s php ton chia ly d rt hu dng cho ngi lp trnh . Khi chng ta thc hin mt php chia d n cho mt s khc, nu s ny l bi s ca n th kt qu ca php chia d l 0. V d 20 % 5 = 0 v 20 l mt bi s ca 5. iu ny cho php chng ta ng dng trong vng lp, khi

mun thc hin mt cng vic no cch khong n ln, ta ch cn kim tra php chia d n, nu kt qu bng 0 th thc hin cng vic. Cch s dng ny p dng trong v d minh ha s dng vng lp for bn trn. V d: Php chia v php chia ly d. using System; class Tester { public static void Main() { int i1, i2; float f1, f2; double d1, d2; decimal dec1, dec2; i1 = 17; i2 = 4; f1 = 17f; f2 = 4f; d1 = 17; d2 = 4; dec1 = 17; dec2 = 4; Console.WriteLine("Integer: \t{0}", i1/i2); Console.WriteLine("Float: \t{0}", f1/f2); Console.WriteLine("Double: \t{0}", d1/d2); Console.WriteLine("Decimal: \t{0}", dec1/dec2); Console.WriteLine("\nModulus: : \t{0}", i1%i2); Console.ReadLine(); } } Kt qu: Integer: 4 float: 4.25 double: 4.25 decimal: 4.25 Modulus: 1

c.

Ton t tng v gi m

Khi s dng cc bin s ta thng c thao tc l cng mt gi tr vo bin, tr i mt gi tr t bin , hay thc hin cc tnh ton thay i gi tr ca bin sau gn gi tr mi va tnh ton cho chnh bin . d. Tnh ton v gn tr l i

Gi s chng ta c mt bin tn Luong lu gi tr lng ca mt

ngi, bin Luong ny c gi tr hin

thi l 1.500.000, sau tng thm 200.000 ta c th vit nh sau: Luong= Luong +200.000; Trong cu lnh trn php cng c thc hin trc, khi kt qu ca v phi l 1.700.000 v kt qu ny s c gn li cho bin Luong, cui cng Luong c gi tr l 1.700.000. Chng ta c th thc hin vic thay i gi tr ri gn li cho bin vi bt k php ton s hc no: Luong = Luong * 2; Luong = Luong 100.000; Do vic tng hay gim gi tr ca mt bin rt thng xy ra trong khi tnh ton nn C# cung cp cc php ton t gn (self- assignment). Bng sau lit k cc php ton t gn. Ton t += -= *= /= %= ngha Cng thm gi tr ton hng bn phi vo gi tr ton hng bn tri Ton hng bn tri c tr bt i mt lng bng gi tr ca ton hng bn phi Ton hng bn tri c nhn vi mt lng bng gi tr ca ton hng bn phi. Ton hng bn tri c chia vi mt lng bng gi tr ca ton hng bn phi. Ton hng bn tri c chia ly d vi mt lng bng gi tr ca ton hng bn phi.

Bng m t cc php ton t gn.Da trn cc php ton t gn trong bng ta c th thay th cc lnh tng gim lng nh sau: Luong += 200.000; Luong *= 2; Luong -= 100.000; Kt qu ca lnh th nht l gi tr ca Luong s tng thm 200.000, lnh th hai s lm cho gi tr Luong nhn i tc l tng gp 2 ln, v lnh cui cng s tr bt 100.000 ca Luong. Do vic tng hay gim 1 rt ph bin trong lp trnh nn C# cung cp hai ton t c bit l tng mt (++) hay gim mt (--). Khi mun tng i mt gi tr ca bin m trong vng lp ta c th vit nh sau: bienDem++; e. Ton t tng gi m ti n t v tng gi m h u t

Gi s mun kt hp cc php ton nh gia tng gi tr ca mt bin v gn gi tr ca bin cho bin th hai, ta vit nh sau: var1 = var2++; Cu hi c t ra l gn gi tr trc khi cng hay gn gi tr sau khi cng. Hay ni cch khc gi tr ban u ca bin var2 l 10, sau khi thc hin ta mun gi tr ca var1 l 10, var2 l 11, hay var1 l 11, var2 cng 11? gii quyt yu cu trn C# cung cp th t thc hin php ton tng/gim vi php ton gn, th t ny c gi l tin t (prefix) hay hu t (postfix). Do ta c th v it: var1 = var2++; // Hu t Khi lnh ny c thc hin th php gn s c thc hin trc tin, sau mi n php ton tng. Kt qu l var1 = 10 v var2 = 11. Cn i vi trng hp tin t: var1 = ++var2; Khi php tng s c thc hin trc tc l gi tr ca bin var2 s l 11 v cui cng php gn c thc hin. Kt qu c hai bin var1 v var2 iu c gi tr l 11. Minh ho s dng ton t tng trc v tng sau khi gn. using System; class Tester { static int Main() { int valueOne = 10; int valueTwo; valueTwo = valueOne++; Console.WriteLine("Thuc hien tang sau: {0}, {1}", valueOne, valueTwo); valueOne = 20; valueTwo = ++valueOne; Console.WriteLine("Thuc hien tang truoc: {0}, {1}", valueOne, valueTwo); Console.ReadLine(); return 0; } } Kt qu: Thuc hien tang sau: 11, 10 Thuc hien tang truoc: 21, 21 f. Ton t quan h

Nhng ton t quan h c dng so snh gia hai gi tr, v sau tr v kt qu l mt gi tr logic kiu bool (true hay false). V d ton t so snh ln hn (>) tr v gi tr l true nu gi tr bn tri ca ton t ln hn gi tr bn phi ca ton t. Do vy 5 > 2 tr v mt gi tr l true, trong khi 2 > 5 tr v gi tr false. Cc ton t quan h trong ngn ng C# c trnh by bng 3.4 bn di. Cc ton t trong bng c minh ha vi hai bin l value1 v value2, trong value1 c gi tr l 100 v value2 c gi tr l 50. Tn ton t So snh bng K hi u == Bi u th c so snh Value1==100 Value1==50 Khng bng != Value2 !=100 Value2 !=50 Ln hn > Value1> value2 Value2> value1 Ln hn hoc bng Nh hn >= < Value2 >= 50 Value1 Value2 Nh hn hoc bng 0) { Console.WriteLine("S 20 khng chia ht cho 4"); } else { Console.WriteLine("S 20 chia ht cho s 4"); }

C u trc switch case Cu trc switch case c cu trc nh sau: // switch ... case switch (Bin iu kin) { case gi tr 1: // Cu lnh thc break; case gi tr 2: // Cu lnh thc break; case gi tr 3: // Cu lnh thc break; default: // Cu lnh thc break; }

thi thi thi thi

V d: int x = 20 % 4; switch (x) { case 1: Console.WriteLine("20 chia cho 4 c s d l 1"); break; case 0:

Console.WriteLine("20 chia ht cho 4"); break; default: Console.WriteLine("Khng thuc tt c cc trng hp trn"); break; }

2. C u trc vng l p trong l p trnh C# C# cung cp cc cu trc vng lp chng trnh

While Do while For ForeachSau y l cch thc s dng Vng l p While Cu trc vng lp while while (biu thc iu kin) { // cu lnh }

Thc thi cu lnh hoc mt lot nhng cu lnh n khi iu kin khng c tha mn. V d: using System; class WhileTest { public static void Main() { int n = 1; while (n < 10) { Console.WriteLine("Current value of n is {0}", n); n++; } } }

Vng l p do Cu trc vng lp do while do { // cu lnh } while (biu thc iu kin)

Thc thi cu lnh t nht mt ln n khi iu kin khng c tha mn. V d: using System; public class TestDoWhile {

public static void Main () { int x; int y = 0; do { x = y++; Console.WriteLine(x); } while(y < 10) } }

Vng l p for Cu trc vng lp for for ([ phn khi to] ; [biu thc iu kin]; [bc lp]) { // thc thi cu lnh } V d: using System; public class ForLoopTest { public static void Main() { for (int i = 1; i 3) { if (m_str_rank == "Senior Lecture") return 6; return 5; } if (m_str_rank == "Senior Lecture") return 5; return 4; } }

V D NH V A LUNG - MULTITHREADING C#1. S qua v lu ng (Thread) Bi vit ny mnh s hng dn cho cc bn mi tm hiu v a lung v ng dng ca n v c m t trn ngn ng C# cho d hiu. Trc tm hiu n cng vt v v n kh hiu gi mun gip cht xu g cho cc bn (Bn s cm thy v cng n gin nu lm vic nhiu vi n, ch l do k nng ca mnh yu ln cm thy phc tp) Mt lung l mt chui lin tip nhng s thc thi (m lnh hay cu lnh) trong chng trnh (ng dng). Trong mt chng trnh C#, d thy vic thc thi c bt u bng phng thc main() v tip tc cho n khi kt thc hm main(). Cu trc ny rt hay cho nhng chng trnh c mt chui xc nh nhng nhim v lin tip, nhng thng th trong mt chng trnh ng c nhiu hn mt cng vic vo cng mt lc. Mt v d rt hay v kh thc t m mnh thy trn din n tin hc ca "can_qua", cc bn cng tham kho

Vn quan trng l bn phi tm ra mt cch no chia mt cng vic ln thnh nhng cng vic nh m trong c nhng vic c th thc hin mt cch ng thi. V d, m giao vic cho con l "lm vic xong mi c i coi xi-n". "Cng vic ln" ny c th gm 3 vic nh "qut nh", "ra chn", v i coi "xin". Trong ch c "coi xi-n" sau khi lm xong hai vic kia. R rng l bn mun lm xong vic nh cng sm cng tt vi vt, nn bn ku thng em bn qut nh, bn th ra chn, c hai ngi cng lm ng thi. Ra chn xong trc, bn phi i thng em bn thng bo l qut nh cng xong th bn mi v i coi xi-n c. Nh vy multithread cho "ra chn" v "qut nh" lm tng hiu sut thc hin cng vic ca bn (so vi vic bn lm tun t ra chn, qut nh, coi xi-n).2. V d nh v a lu ng

V d ny mnh s m t 2 lung (cho n gin) c thc thi cng mt lc. y th bn c tng tng ra rng c hai thng tn l A v B thi m t 0 cho n 100, thng no m xong trc th bo co v c v ch. Tng ng mnh s to ra 2 phng thc A() v B() (mi lung s x l mt thng). void A() { for(int i=0; i