N gôn ngữ C #
T rần V ăn T èo
01/06/2006
N g ôn n g ữ C #
1
C hư ơ ng 2: C ăn bản N gôn ngữ C #
n
n
n
n
n
n
n
n
K iểu dữ liệu (T y p e).
B iến (V ariable) và H ằng (C onstant).
B iểu thứ c (E xpression)
Whitespace
C ác câu lệnh (S tatem ents).
C ác toán tử (O p erato rs).
Namespace
C ác chỉ thị tiền xử lý (P reprocessor D irectiv es)
01/06/2006
N g ôn n g ữ C #
2
K iểu dữ liệu (T ype).
n
n
n
n
C # là m ột ngôn ngữ kiểm soát chặt chẽ về
m ặt k iểu d ữ liệu.
H ai n hóm k iểu dữ liệu : b ẩm sin h (build -in),
tự tạo (u serser-defined).
H ai lo ại k iểu d ữ liệu : k iểu trị (v aluealue -type),
kiểu qui chiếu (reference type).
D ữ liệu đư ợ c lư u trên stack h oặc heap tùy
vào đặc thù của kiểu dữ liệu.
01/06/2006
N g ôn n g ữ C #
3
K iểu dữ liệu (T ype).
Type
Size
(bytes)
.NET type
Description
byte
1
Byte
U n sign ed (trị 0-255).
char
2
Char
U n icod e k ý tự .
bool
1
Boolean
True or false.
sbyte
1
Sbyte
S ign ed (trị -128 to 127).
short
2
Int16
S ign ed (sh ort) (trị -32,768 to 32,767).
ushort
2
UInt16
U n sign ed (sh ort) (trị 0 to 65,535).
int
4
Int32
S ố n gu yên có d ấu (sign ed ). T rị từ -2,147,483,648
đ ến 2,147,483,647.
uint
4
UInt32
S ố n gu yên k h ôn g d ấu (U n sign ed ). T rị từ 0 đ ến
4,294,967,295.
float
4
Single
3.4 x 1038 vớ i 7 số có ý n gh ĩa.
double
8
Double
1.8 x 10308 vớ i 15-16 số có ý n gh ĩa.
01/06/2006
N g ôn n g ữ C #
4
K iểu dữ liệu (T ype).
decimal
16
Decimal
L ên đ ến 28 số và vị trí d ấu ch ấm th ập p h ân . T h ư ờ n g d ù n g
tron g tín h toán tài ch ín h . Y êu cầu có h ậu tố (su ffix) là
" m " h oặc " M ." .
long
8
Int64
S ố n gu yên có d ấu , trị từ -9,223,372,036,854,775,808 đ ến
9,223,372,036,854,775,807.
ulong
8
UInt64
S ố n gu yên k h ôn g d ấu , trị từ 0 đ ến 0xffffffffffffffff.
Object
K iểu d ữ liệu ob ject d ự a trên S ystem .O b ject củ a .N E T
F ram ew ork . B ạn có th ể gán trị th u ộc b ất cứ k iểu d ữ liệu
n ào lên b iến k iểu ob ject. T h u ộc k iểu q u i ch iếu .
String
K iểu strin g tư ợ n g trư n g ch o m ột ch u ổi k ý tự U n icod e. strin g
là m ột alias đ ối vớ i S ystem .S trin g trên .N E T
F ram ew ork . T h u ộc k iểu q u i ch iếu .
object
string
01/06/2006
N g ôn n g ữ C #
5
C huyển đổi kiểu dữ liệu.
H ai cách chuyển đổi: ngầm (im plicit), tư ờ ng m inh (explicit).
C huyển đổi ngầm (im plicit):
n
n
•
C h u yển đổ i ngầm sẽ tự đ ộng đ ư ợ c th ự c h iện v à b ảo đ ảm k hô ng m ất
thông tin.
V í dụ : short x = 5;
int y = x;
C huyển đổi tư ờ ng m inh (explicit).
n
•
•
01/06/2006
C ó nh ữ ng ch uyển đổ i ng ầm k hôn g th ể th ự c h iện đ ư ợ c v à đ ể ch u yển
đ ổi th ì ph ải ép k iểu (cast).
V í dụ : short x; int y = 500;
x = (short)y;
K h i ép k iểu có th ể sẽ g ây ra nếu k hôn g kiểm so át đ ư ợ c g iá trị củ a
chúng.
V í dụ : int y = 35.000; short x = (short) y;
N g ôn n g ữ C #
6
B iến (V ariable)
C ú p h áp khai báo m ộ t b iến:
[modifier] datatype identifier;
n
modifier là m ột trong nhữ ng từ khóa: p ublic,
p rivate, protected , … .
n
datatype là kiểu dữ liệu (int, long,… )
n
identifier là tên biến.
n
C ó thể khai báo v à kh ở i g án n hiều b iến cùn g m ộ t
lú c, vớ i điều kiện các biến thuộc cùng m ộ t d ataty pe
v à cùng m ột m odifier.
n
V í dụ: public static int x = 10, y = 20 //đú n g
public int x = 10, private byte y = 20;//sai
01/06/2006
N g ôn n g ữ C #
7
H ằng (C onstant)
L à m ột biến như ng trị không thay đổi trong
suố t thờ i g ian th i hành ch ư ơ n g trình.
Khai báo: const datatype identifier = value
Đ ặc đ iểm :
n
n
n
•
•
•
•
01/06/2006
P hải có từ khóa const.
P hải đư ợ c gán lú c k hai b áo .
K hông thể gán hằng từ m ột trị của m ộ t b iến .
L uôn là static như ng không dùng từ k h ó a static
khi khai báo.
N g ôn n g ữ C #
8
H ằng (C onstant)
Ư u điểm :
n
•
D ễ đọc ch ư ơ ng trình, bằng cách thay th ế các co n
số m ang bở i nhữ ng tên đầy ý nghĩa.
D ễ sử a ch ư ơ ng trình, bằng cách chỉ m ộ t lần th ay
đổi giá trị của hằng.
T ránh lỗi dễ d àn g hơ n . N ếu g án lại g iá trị ch o
hằng thì chư ơ ng trình sẽ báo lỗi ngay .
•
•
n
C ác loại h ằn g : literals, sy m b o lic constant,
enumeration.
01/06/2006
N g ôn n g ữ C #
9
E num eration (L iệt kê)
L à m ộ t tập h ợ p nh ữ ng hằng đư ợ c đặt tên.
n
L à m ộ t k iểu d ữ liệu số n gu yên tự tạo .
n
Cú pháp:
[atrributes][modifiers] enum identifier [:base[:base-type] {enumerator{enumerator-list};
•
base--type là b ất kỳ kiểu dữ liệu nào là số (ngoại trừ char).
base
•
anumerator--list là d anh sách các h ằn g, m ỗ i hằn g có m ộ t trị số , cách
anumerator
n h au b ằn g d ấu p h ẩy. N ếu p h ần p h ần tử kh ông có trị số th ì hằn g đ ầu
tiên có g iá trị là 0 , h ằng đ i sau sẽ tăn g lên 1 so v ớ i trị củ a hằn g trư ớ c
•
V í dụ : enum SomeValues{
First,
Second,
Third = 20,
Fourth
};
n
01/06/2006
N g ôn n g ữ C #
10
P hạm vi hoạt động của biến
01/06/2006
N g ôn n g ữ C #
11
B iểu thứ c và khoảng trắng
B iểu thứ c (exp ression ):
n
•
•
C ác câu lệnh cho ra m ột trị đư ợ c gọi là biểu thứ c.
V í dụ:
myVariable = 57;
mySecondVariable = myVariable = 57;
K h oảng trắng (w hitespace):
n
•
•
01/06/2006
C ác ký tự trắng (space), khoảng trắng canh cột (tab),
dòng m ớ i (new line) đều đư ợ c gọi là khoảng trắng
(whitespace).
C # làm lơ đi các khoảng trắng trong các câu lệnh.
N g ôn n g ữ C #
12
C ác câu lệnh (statem ent)
n
n
n
C ác câu lệnh rẽ n h ánh
• if… else.
• switch.
C ác câu lệnh lặp
• while
• do… w hile
• for
C ác câu lệnh n hảy: continue, break, retu rn , g o to .
01/06/2006
N g ôn n g ữ C #
13
C âu lệnh if… else
n
Cú pháp:
if (x > y)
W riteL ine(“x > y”);
if (condition-expression)
statement1
[else
statement2]
if (x > y)
W riteL ine(“x > y”);
else
W riteL ine(“x < = y”);
01/06/2006
N g ôn n g ữ C #
14
C âu lệnh sw itch
n
Cú pháp:
switch(expresstion)
{
case constant-expression:
statement
jump-statement
[default:statement]
}
01/06/2006
N g ôn n g ữ C #
const int one = 1;
int nSelect = 2;
switch(nSelect)
{
case one:
Console.WriteLine("1");
break;
case 2:
Console.WriteLine("2");
break;
case 3:
C o n so le .W rite L in e (“3 ");
goto case 2;
default:
C o n so le .W rite L in e (“4 ");
break;
}
15
V òng lặp w hile
n
T hự c hiện statem en t k h i ex p ressio n trả v ề k ết q u ả tru e
while (expresstion)
statement
int i = 0;
while (i < 10) {
Console.WriteLine(i);
i++;
}
01/06/2006
0123456789
N g ôn n g ữ C #
16
V òng lặp do… w hile
n
T ư ơ ng tự w hile, như ng thự c hiện ít nhất m ột lần.
do statement
while (expresstion);
int i = 0;
do{
Console.WriteLine(i);
i++;
}while (i < 10)
01/06/2006
0123456789
N g ôn n g ữ C #
17
V òng lặp for
for([initializers];[condition];[iterators])
statement
for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
}
0123456789
n
B iến trong khối for chỉ có ý nghĩa trong phạm vi của khối này.
for (int i = 0; i < 10; i++)
Console.WriteLine(i);
Console.WriteLine(i);//Error
01/06/2006
N g ôn n g ữ C #
18
L ệnh goto
n
C ho phép nhảy trự c tiếp đến m ột câu lệnh đư ợ c đánh dấu bở i
m ột nhản (L abel).
if (number % 2 == 0) goto Even;
Console.WriteLine("odd");
goto End;
Even:
Console.WriteLine("even");
End:;
n
n
K hông thể nhảy vào m ột khối đoạn m ã chẳng hạn vòng lặp for.
K hông thể nhảy ra khỏi m ột lớ p hoặc m ột khối fianlly
01/06/2006
N g ôn n g ữ C #
19
L ệnh break và continue
n
n
break: nh ảy ra k h ỏ i v ò n g lặp .
break:
continue:: nhảy đến lần lặp tiếp theo.
continue
int i = 0;
while (true) {
Console.WriteLine(i);
i++;
if (i < 10)
continue;
else
break;
}
01/06/2006
N g ôn n g ữ C #
20
Q&A
01/06/2006
N g ôn n g ữ C #
21