CHƯƠNG 2
Những cơ sở của ngôn ngữ C#
Nội dung chính
Các kiểu
Câu lệnh
Toán tử
1. Các kiểu
Loại dữ liệu định sẵn
Kiểu
Kích thước
(byte)
Kiểu .Net
Mô tả - giá trị
byte
1
Byte Không dấu (0 255)
char
1
Char Mã ký thự Unicode
bool
1
Boolean true hay false
sbyte
1
Sbyte
Có dấu (-128 127)
short
2
Int16
Có dấu (-32768 32767)
ushort
2
Uint16 Không dấu (0 65535)
int
4
Int32
Có dấu (-2147483647 2147483647)
uint
4
Uint32 Không dấu (0 4294967295)
float
4
Single Số thực (≈ ±1.5*10-45 ≈ ±3.4*1038)
double
8
Double Số thực (≈ ±5.0*10-324 ≈ ±1.7*10308)
decimal
8
Decimal
số có dấu chấm tĩnh với 28 ký số và dấu chấm
long
8
Int64
Số nguyên có dấu (- 9223372036854775808 9223372036854775807)
ulong
8
Uint64 Số nguyên không dấu (0 0xffffffffffffffff.)
Các ký tự đặc biệt thông dụng
Ký tự Nghĩa
\’ Dấu nháy đơn
\” dấu nháy đôi
\\
dấu chéo ngược “\”
\0 Null
\a Alert
\b
lùi về sau
\f Form feed
\n xuống dòng
\r về đầu dòng
\t Tab ngang
\v Tab dọc
Chuyển đổi kiểu định sẵn
short x = 5;
int y ;
y = x; // chuyển kiểu ngầm định - tự động
x = y; // lỗi, không biên dịch được
x = (short) y; // OK
Biến và hằng
Biến
Phải khai báo biến trước khi sử dụng
Có thể khai báo biến ở mọi nơi trong chương trình
Tên biến
Phân biệt chữ hoa, chữ thường
Sử dụng các ký tự từ a-z, 0-9 và dấu “_”
Ví dụ:
int var1;
int var2=10;
Biến và hằng
Hằng
Hằng là một biến nhưng giá trị không thay đổi
theo thời gian. Khi cần thao tác trên một giá trị
xác định ta dùng hằng. Khai báo hằng tương tự
khai báo biến và có thêm từ khóa const ở trước.
Hằng một khi khởi động xong không thể thay đổi
được nữa.
const int HANG_SO = 100;
Biến và hằng
Định danh
Định danh là tên mà người lập trình chọn đại diện một kiểu, phương
thức, biến, hằng, đối tượng… của họ. Định danh phải bắt đầu bằng một ký
tự hay dấu “_”. Định danh không được trùng với từ khoá C# và phân biệt
hoa thường.
Biểu thức
ví dụ: x = 32; hay y = x = 32;
Khoảng trắng
Trong C#, khoảng trống, dấu tab, dấu xuống dòng đều được xem là
khoảng trắng (
whitespace
). Do đó, dấu cách dù lớn hay nhỏ đều như
nhau nên ta có:
x = 32;
cũng như
x = 32;
Ngoại trừ khoảng trắng trong chuỗi ký tự thì có ý nghĩa riêng của nó.
3. Câu lệnh
Câu lệnh kết thúc bằng dấu “;”.
Ví dụ:
int x; // là một câu lệnh
x = 23; // một câu lệnh khác
Các câu lệnh
Rẽ nhánh
Các lệnh rẽ nhánh không điều kiện
Lệnh rẽ nhánh có điều kiện
Lệnh If else …
Lệnh switch
Vòng lặp
Lệnh goto
Vòng lặp while
Vòng lặp do … while
Vòng lặp for
Rẽ nhánh không điều kiện
Ví dụ 3 3 Gọi một phương thức‑
using System;
class Functions
{
static void Main( )
{
Console.WriteLine("In Main! Calling SomeMethod( ) ");
SomeMethod( );
Console.WriteLine("Back in Main( ).");
}
static void SomeMethod( )
{
Console.WriteLine("Greetings from SomeMethod!");
}
}
Kết quả:
In Main! Calling SomeMethod( )
Greetings from SomeMethod!
Back in Main( ).
Lệnh rẽ nhánh có điều kiện
If … Else
Phụ thuộc vào điều kiện kiểm
tra là true hay false để quyết
định nhánh thực hiện
Ví dụ:
using System;
class vidu
{
static void Main()
{
Console.WriteLine("Nhap mot so:\n");
int n = Convert.ToInt16(Console.ReadLine());
if (n > 100)
Console.WriteLine("lon hơn 100");
else
Console.WriteLine("nho hon hoac bang 100");
Console.ReadLine();
}
}
If … Else
test expression
if ( n > 100)
{
…
}
else
{
…
}
body of if
test
expression
exit
true
false
body of else
Lệnh switch
•
Lệnh switch được sử dụng khi có nhiều nhánh rẽ
phụ thuộc vào giá trị của cùng một biến.
Cú pháp:
switch ( biểu_thức_lựa_chọn )
{
case biểu_thức_hằng :
khối lệnh;
lệnh nhảy;
[ default :
khối lệnh;
lệnh nhảy; ]
}
Lệnh switch
using System;
class vidu
{
static void Main()
{
char c;
Console.Write("Enter your choice (a/b/c) : ");
c=char.Parse(Console.ReadLine());
switch (c)
{
case 'a':
Console.WriteLine("You picked a!");
break;
case 'b':
Console.WriteLine("You picked b!");
break;
case 'c':
Console.WriteLine("You picked c!");
break;
default:
Console.WriteLine("You picked d!");
break;
}
Console.ReadLine();
} }
Lệnh switch
variable
equals
const 1
exit
true
false
first case body
variable
equals
const 2
true
false
second case body
default body
Vòng lặp while
•
Vòng lặp while được sử dụng khi không biết trước số lần lặp.
•
Lặp cho đến khi biểu thức kiểm tra vẫn có giá trị True.
•
Ví dụ:
using System;
class vidu
{
static void Main()
{
char c='n';
while ( c != 'y')
{
Console.Write("Do you want to continue: (y/n)'");
c = char.Parse(Console.ReadLine());
}
}
}
Vòng lặp while
test expressionwhile ( c != ’y’ )
{
…
}
body of loop
test
expression
exit
true
false
Vòng lặp do
•
Trong vòng lặp do, biểu thức kiểm tra được đánh
giá ở cuối vòng lặp.
•
Thân vòng lặp được thực hiện ít nhất một lần.
•
Ví dụ:
char c='n';
do
{
Console.Write("Do you want to continue: (y/n)”);
c = char.Parse(Console.ReadLine());
}
while (c != 'y');
Vòng lặp do
body of loop
test expression
do
{ … }
while ( c != ’y’ );
test
expression exit
true
false
Vòng lặp for
using System;
class vidu
{
static void Main()
{
int i; Console.Write("Vong lap 1 lenh");
for (i=1; i<=15; i++) // thân vòng lặp for có 1 lệnh
Console.WriteLine("{0}*{1}={2}",i,i,i*i);
Console.ReadLine(); Console.WriteLine("Vong lap nhieu lenh");
int tong; tong=0;
for (i=1; i<=15; i++) // thân vòng lặp for có nhiều lệnh
{
Console.Write("Tong hien hanh là:{0}+{1}", tong,i);
tong=tong+i;
Console.WriteLine("={0}", tong);
}
Console.ReadLine();
} }
Vòng lặp for
Biểu thức tăngBiểu thức kiểm traBiểu thức khởi tạo
for ( i=0; i<15; i++ )
initialization
expression
body of loop
increment
expression
test
expression exit
true
false
Toán tử trong C#
Nhóm toán tử Toán tử
Ý nghĩa
Toán học
+ - * / %
cộng , trừ, nhân chia, lấy phần dư
Logic
& | ^ ! ~ && ||
true false
phép toán logic và thao tác trên bit
Ghép chuỗi
+
ghép nối 2 chuỗi
Tăng, giảm
++,
tăng / giảm toán hạng lên / xuống 1.
Đứng trước hoặc sau toán hạng.
Dịch bit
<< >>
dịch trái, dịch phải
Quan hệ
== != < > <= >=
bằng, khác, nhỏ/lớn hơn, nhỏ/lớn hơn
hoặc bằng
Gán
= += -= *= /= %= &=
|= ^= <<= >>=
phép gán
Chỉ số
[]
cách truy xuất phần tử của mảng
Ép kiểu
()
Indirection và
Address
* -> [] &
dùng cho con trỏ