BIẾN – HẰNG

1.     Biến

Mt biến là mt vùng lưu tr vi mt kiu d liu. Trong ví d trưc c x, và y điu là biến. Biến có th đưc gán giá tr và cũng có th thay đi giá tr khi thc hin các lnh trong chương trình.

Đ to mt biến chúng ta phi khai báo kiu ca biến và gán cho biến mt tên duy nht. Biến có th đưc khi to giá tr ngay khi đưc khai báo, hay nó cũng có th đưc gán mt giá tr mi vào bt c lúc nào trong chương trình. Ví d sau minh ha s dng biến.

 

Ví d: Khi to và gán giá tr đến mt biến.

 

------------------------------------------------------------------

           int bien1 = 9;

           //Sau khi khoi tao: bien1 = 9

bien1 = 15;

//Sau khi gan: bien1 = 15

------------------------------------------------------------------

Ngay khi khai báo biến ta đã gán giá tr là 9 cho biến, khi xut biến này thì biến có giá tr là 9.

Thc hin phép gán biến cho giá tr mi là 15 thì biến s có giá tr là 15 và xut kết qu là 15.

2.     Hằng

Hng cũng là mt biến nhưng giá tr ca hng không thay đi. Biến là công c rt mnh, tuy nhiên khi làm vic vi mt giá tr đưc đnh nghĩa là không thay đi, ta phi đm bo giá tr ca nó không đưc thay đi trong sut chương trình. Ví d, khi lp mt chương trình thí nghim hóa hc liên quan đến nhit đ sôi, hay nhit đ đông ca nưc, chương trình cn khai báo hai biến là DoSoi và DoDong, nhưng không cho phép giá tr ca hai biến này b thay đi hay b gán. Đ ngăn nga vic gán giá tr khác, ta phi s dng biến kiu hng.

Hng đưc phân thành ba loi: giá tr hng (literal), biu tưng hng (symbolic constants), kiu liu kê (enumerations).

Giá tr hng: ta có mt câu lnh gán như sau:

    x = 100;

 

Giá tr 100 là giá tr hng. Giá tr ca 100 luôn là 100. Ta không th gán giá tr khác cho 100 đưc.

Biu tưng hng: gán mt tên cho mt giá tr hng, đ to mt biu tưng hng dùng t khóa const và cú pháp sau:

    <const> <type> <tên hằng> = <giá trị>;

 

Mt biu tưng hng phi đưc khi to khi khai báo, và ch khi to duy nht mt ln trong sut chương trình và không đưc thay đi. Ví d:

    const int DoSoi = 100;

 

Trong khai báo trên, 100 là mt hng s và DoSoi là mt biu tưng hng có kiu nguyên. Ví d minh ha vic s dng nhng biu tưng hng:

 

 

           const int DoSoi = 100;     // Độ C

           const int DoDong = 0; // Độ C

Ví d trên to ra hai biu tưng hng cha giá tr nguyên: DoSoi và DoDong, theo qui tc đt tên hng thì tên hng thưng đưc đt theo cú pháp Pascal nhưng điu này không đòi hi bi ngôn ng nên ta có th đt tùy ý.

Vic dùng biu thc hng này s làm cho chương trình đưc viết tăng thêm phn ý nghĩa cùng vi s d hiu. Tht s chúng ta có th dùng hng s là 0 và 100 thay thế cho hai biu tưng hng trên, nhưng khi đó chương trình không đưc d hiu và không đưc t nhiên lm. Trình biên dch không bao gi chp nhn mt lnh gán giá tr mi cho mt biu tưng hng.

Kiểu liệt kê

Kiu lit kê đơn gin là tp hp các tên hng có giá tr không thay đi (thưng đưc gi là danh sách lit kê).

Trong ví d trên, có hai biu tưng hng có quan h vi nhau:

 

    const int DoDong = 0;

    const int DoSoi = 100;

 

Do mc đích m rng ta mong mun thêm mt s hng s khác vào danh sách trên, như các hng sau:

const int DoNong = 60;

const int DoAm = 40;

const int DoNguoi = 20;

 

Các biu tưng hng trên điu có ý nghĩa quan h vi nhau, cùng nói v nhit đ ca nưc, khi khai báo tng hng trên có v cng knh và không đưc liên kết cht ch cho lm. Thay vào đó C# cung cp kiu lit kê đ gii quyết vn đ trên:

 

enum NhietDoNuoc

{

DoDong = 0,

DoNguoi = 20,

DoAm = 40,

DoNong = 60,

DoSoi = 100,

}

 

Mi kiu lit kê có mt kiu d liu cơ s, kiu d liu có th là bt c kiu d liu nguyên nào như int, short, long... tuy nhiên kiu d lêu ca lit kê không chp nhn kiu ký t. Đ khai báo mt kiu lit kê ta thc hin theo cú pháp sau:

[thuc tính] [b sung] enum <tên lit kê> [:kiu cơ s] {danh sách các thành phn lit kê};

 

Thành phn thuc tính và b sung là t chn s đưc trình bày trong phn sau ca sách. Trong phn này chúng ta s tp trung vào phn còn li ca khai báo. Mt kiu lit kê bt đu vi t khóa enum, tiếp sau là mt đnh danh cho kiu lit kê:

enum NhietDoNuoc

 

Thành phn kiu cơ s chính là kiu khai báo cho các mc trong kiu lit kê. Nếu b qua thành phn này thì trình biên dch s gán giá tr mc đnh là kiu nguyên int, tuy nhiên chúng ta có th s dng bt c kiu nguyên nào như ushort hay long,.. ngoi tr kiu ký t. Đon ví d sau khai báo mt kiu lit kê s dng kiu cơ s là s nguyên không du uint:

 

enum KichThuoc :uint

{

Nho = 1,

Vua = 2,

Lon = 3,

}

 

Lưu ý là khai báo mt kiu lit kê phi kết thúc bng mt danh sách lit kê, danh sách lit kê này phi có các hng đưc gán, và mi thành phn phi phân cách nhau du phy.

 

Mi thành phn trong kiu lit kê tương ng vi mt giá tr s, trong trưng hp này là mt s nguyên. Nếu chúng ta không khi to cho các thành phn này thì chúng s nhn các giá tr tiếp theo vi thành phn đu tiên là 0.

Ta xem th khai báo sau:

enum ThuTu

{

ThuNhat,

ThuHai,

ThuBa = 10,

ThuTu

}

 

Khi đó giá tr ca ThuNhat là 0, giá tr ca ThuHai là 1, giá tr ca ThuBa là 10 và giá tr ca ThuTu là 11.

Kiu lit kê là mt kiu hình thc do đó bt buc phi thc hin phép chuyn đi tưng minh vi các kiêu giá tr nguyên:

    int x = (int) ThuTu.ThuNhat;

 

Kiểu chuỗi ký tự

Kiu d liu chui khá thân thin vi ngưi lp trình trong bt c ngôn ng lp trình nào, kiu d liu chui lưu gi mt mng nhng ký t.

Đ khai báo mt chui chúng ta s dng t khoá string tương t như cách to mt th hin ca bt c đi tưng nào:

    string chuoi;

 

Mt hng chui đưc to bng cách đt các chui trong du nháy đôi:

    “Xin chao”

 

Đây là cách chung đ khi to mt chui ký t vi giá tr hng:

    string chuoi = “Xin chao”

 

Định danh

Đnh danh là tên mà ngưi lp trình ch đnh cho các kiu d liu, các phương thc, biến, hng, hay đi tưng.... Mt đnh danh phi bt đu vi mt ký t ch cái hay du gch dưi, các ký t còn li phi là ký t ch cái, ch s, du gch dưi.

 

Theo qui ưc đt tên ca Microsoft thì đ ngh s dng cú pháp lc đà (camel notation) bt đu bng ký t thưng đ đt tên cho các biến là cú pháp Pascal (Pascal notation) vi ký t đu tiên hoa cho cách đt tên hàm và hu hết các đnh danh còn li. Hu như Microsoft không còn dùng cú pháp Hungary như iSoNguyen hay du gch dưi Bien_Nguyen đ đt các đnh danh.

Các đnh danh không đưc trùng vi các t khoá mà C# đưa ra, do đó chúng ta không th to các biến có tên như class hay int đưc. Ngoài ra, C# cũng phân bit các ký t thưng và ký t hoa vì vy C# xem hai biến bienNguyen và biennguyen là hoàn toàn khác nhau.