Nếu bạn đã biết những ngôn ngữ như C/C++ hay Java, thì phần này sẽ rất dễ dàng đối với bạn. Thậm
chí, bạn có thể bỏ qua phần này. Sau tất cả, những điều cơ bản của phần lớn các ngôn ngữ lập trình
đều khá giống ngôn ngữ họ C. Thật không may, m ặc dù cú pháp của tất cả ngôn ngử gần như giống
nhau, cách lập trình chúng lại khác nhau. C# có một số điểm khác biệt so với các ngôn ngữ khác, vì
vậy tốt nhất hãy tiếp tục đọc phần này.
11 trang |
Chia sẻ: lylyngoc | Lượt xem: 1819 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Lập trình C# - Phần 2: Cơ bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 1
Lập trình C#
Dịch từ cuốn sách Beginning C Sharp Game Programming
Phần 2: Cơ bản
Vì sao bạn nên đọc phần này
Nếu bạn đã biết những ngôn ngữ như C/C++ hay Java, thì phần này sẽ rất dễ dàng đối với bạn. Thậm
chí, bạn có thể bỏ qua phần này. Sau tất cả, những điều cơ bản của phần lớn các ngôn ngữ lập trình
đều khá giống ngôn ngữ họ C. Thật không may, mặc dù cú pháp của tất cả ngôn ngử gần như giống
nhau, cách lập trình chúng lại khác nhau. C# có một số điểm khác biệt so với các ngôn ngữ khác, vì
vậy tốt nhất hãy tiếp tục đọc phần này.
Chương trình C# đầu tiên của bạn
Bạn nên dùng Microsoft Visual Studio để có một giao diện lập trình tốt hơn, ở đây chỉ nhắc đến cú
pháp.
Truyền thống xa xưa trong ngành lập trình máy vi tính nói rằng chương trình đầu tiên của bạn nên là
chương trình “Hello World”, một chương trình đơn giản in ra một thông điệp chào mừng trên máy vi
tính.
Cú pháp của chương trình đơn giản như sau:
class HelloCSharp
{
static void Main( string[] args )
{
System.Console.WriteLine( “Hello, C#!!” );
}
}
Lớp (Class)
C# là một ngôn ngữ lập trình hướng đối tượng, điều này chẳng có nghĩa gì đối với bạn tại thời điềm
này. Tôi sẽ nói về khái niệm này chi tiết hơn trong phần 3, “Giới thiệu về Lớp”, nhưng bây giờ, tất cả
những gì cần biết là C# biểu diễn chương trình của nó như những đối tượng (object).
Ý tưởng là chia chương trình của bạn thành danh từ và động từ, mà mỗi danh từ biển hiện cho một đối
tượng. Ví dụ, nếu bạn làm một game mà có các tàu vũ trụ bay lượn xung quanh, thì tàu vũ trụ đó là
đối tượng.
Một lớp trong chương trình C# mô tả một danh từ; nó nói với máy vi tính đối tượng của bạn có những
kiểu dữ liệu nào và những hành động nào có thể thực hiện bởi chúng. Một lớp tàu vũ trụ có thể nói
với máy vi tính có bao nhiêu người ở trong nó, còn bao nhiêu nhiên liệu, và đi với tốc độ bao nhiêu.
Trong C#, toàn bộ chương trình của bạn thật sự là một lớp. Trong chương trình trên, bạn có lớp
HelloCSharp, đó là tên của chương trình.
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 2
Điểm xuất phát
Tất cả chương trình đều có một điểm xuất phát, một nơi trong mã mà máy vi tính bắt đầu thực thi.
Trong những ngôn ngữ cũ hơn như C hay C++, điểm xuất phát thường là một hàm toàn cục gọi là
main, nhưng trong C# thì hơi khác một chút. C# không cho phép bạn có hàm toàn cục (global
function), thay vào đó nó buộc bạn cho các hàm đó và các lớp, vì vậy chắc chắn là bạn không thể sử
dụng chung phương pháp cho điểm xuất phát ở C#. C# giống Java trong điểm này; điểm xuất phát cho
tất cả chương trình C# là một hàm tĩnh (static function) được gọi là Main trong một lớp, giống như
bạn thấy ở trong chương trình trên. Tôi sẽ đề cập chi tiết hơn tới hàm và hàm tĩnh trong phần 3, vì vậy
hiện nay hãy chấp nhận điều này.
Mọi chương trình C# phải có một lớp có hàm tĩnh Main, nếu không có, thì máy vi tính sẽ không biết
nơi nào bắt đầu chương trình. Hơn nữa, bạn chỉ có thể có một hàm Main được định nghĩa trong một
chương trình; nếu có hơn một, thì máy vi tính sẽ không biết bắt đầu từ cái nào.
Hello, C#!
Phần của chương trình thực hiện việc in ra màn hình là dòng này:
System.Console.WriteLine( “Hello, C#!!” );
Dòng này lấy System.Console – một lớp xây dựng sẵn trong .NET framework – và nói với nó là
in ra màn hình “Hello, C#!!” bằng cách sử dụng hàm WriteLine của nó.
Biên dịch và Chạy
Phần này sẽ được đề cập tới trong tài liệu Lập trình C# trên Microsoft Visual Studio 2010.
Cơ bản
Gần như mọi ngôn ngữ lập trình đều có những thuộc tính chung. Điều thứ nhất, ngôn ngữ lập trình nói
chung biết cách lưu trữ dữ liệu. Chúng còn có thể xử lý dữ liệu bằng cách di chuyển nó lòng vòng và
thực hiện phép tính.
Các kiểu dữ liệu cơ bản
Như nhiều ngôn ngữ lập trình, C# có một số lượng lớn kiểu dữ liệu xây dựng sẵn, đa số biễu diễn số
và nhiều định dạng khác. Những kiểu này được mô tả ở bảng 2.1.
Ghi chú
C# là một ngôn ngữ có thể mở rộng, có nghĩa là bạn có thể tạo những kiểu dữ liệu cho riêng
bạn nếu bạn muốn. Tôi sẽ đề cập chi tiết hơn trong chương 3.
Bảng 2.1 Kiểu dữ liệu xây dựng sẵn trong C#
Kiểu Kích cỡ (byte) Giá trị
bool 1 true (đúng) hay false (sai)
byte 1 0 đến 255
sbyte 1 -128 đến 127
char 2 Ký tự chữ và số (trong Unicode)
short 2 -32 768 đến 32 767
ushort 2 0 đến 65 535
int 4 -2 147 483 648 đến 2 147 483 647
uint 4 0 đến 4 294 967 295
*float 4 -3.402823x1038 to 3.402823x1038
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 3
long 8 -9 223 372 036 854 775 808 đến 9 223 372 036 854 775 807
ulong 8 0 đến 18 446 744 073 709 551 615
*double 8 -1.79769313486232x10308 đến 1.79769313486232x10308
**decimal 16 -79 228 162 514 264 337 593 543 950 335 đến
79 228 162 514 264 337 593 543 950 335
* - Đây là những định dạng dấu phẩy động, nó biểu thị cho số thập phân không chính xác
** - Đây là định dạng dấu phẩy tĩnh, nó biểu thị chính xác số thập phân tới 28 chữ số
Kiểu dữ liệu số nguyên (byte, short, int, long, …) chỉ có thể lưu trữ số nguyên như 0, 1, 2, …;
chúng không thể lưu số thập phân như 1.5 hay 3.14159.
Nếu muốn lưu số thập phân, bạn cần phải chuyển qua dùng những định dạng dấu phẩy động hay dấu
phẩy tĩnh. Việc làm thế nào những loại số này có thể được lưu nằm ngoài cuốn sách này.
Ghi chú
Về cơ bản, số phẩy động không thể lưu trữ số một cách chính xác; chúng chỉ có thể lưu giá
trị xấy xỉ với một sai số nào đó. Ví dụ, khi sử dụng float, bạn có thể biểu thị những số 1.0 và
1.00000012, nhưng bạn không thể biểu thị bất kì số nào giữa chúng. Vì vậy, nếu bạn đặt một
float bằng 1.00000007, thì máy vi tính sẽ tự động làm tròn nó thành 1.00000012. Double
cũng tương tự, nhưng chính xác hơn (tới 15 chữ số). Decimal được mã hóa theo một cách
khác, kể cả khi tài liệu .NET nói nó là số phẩy tĩnh, về mặt kỹ thuật nó vẫn là số phẩy động,
với độ chính xác lên tới 28 chữ số.
Toán tử
Toán tử là những ký hiệu xuất hiện trong ngôn ngữ máy tính; chúng nói cho máy vi tính thực hiện một
số phép tính trên dữ liệu. Toán tử thường được sử dụng trong các phương trình toán, vì vậy tôi chắc
chắn rằng phần này rất quen thuộc đối với bạn.
Toán tử toán học
C# có năm toán tử toán học cơ bản xây dựng sẵn trong ngôn ngữ, được mô tả ở bảng 2.2.
Bảng 2.2 Toán tử toán học cơ bản trong C#
Toán tử Ký hiệu Ví dụ Kết quả
Cộng + 5 + 6 11
Trừ - 6 - 5 1
Nhân * 6 * 7 42
Chia / 8 / 4 2
Đồng dư % 9 % 3 0
Tăng thêm ++ 10++ 11
Giảm bớt -- 10-- 9
Bốn toán tử đầu tiên thì không cần phải đề cập đến. Toán tử thứ năm có thể mới với bạn nếu bạn chưa
học lập trình trước đây. Phép đồng dư (Modulus) đôi khi được biết đến “phép lấy dư”. Về cơ bản, kết
quả từ một phép đồng dư là số dư nếu bạn lấy số thứ nhất chia cho số thứ hai. Trong bảng 2.2, 9 chia
hết cho 3, vì vậy số dư là 0. Nếu bạn lấy 10 % 3, kết quả sẽ là 1, và số dư của 10/3 là 1.
Ghi chú
Toán tử tăng và giảm thực ra có hai phiên bản khác nhau: phiên bản trước và sau. Ví dụ ++x
là phiên bản tăng trước, và x++ là phiên bản tăng sau. Sự khác nhau là khi nào toán tử được
thực hiện. Ví dụ, nếu x là 10 và bạn viết y = x++, thì máy vi tính sẽ cho giá trị x vào y đầu
tiên, sau đó mới tăng x, để cho y có giá trị 10 và x là 11. Mặt khác, y = ++x sẽ thực hiện
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 4
phép tăng trước và thực hiện việc gán sau, cho x và y đều có giá trị 11. Đó là một sự thừa
hưởng từ C, có thể gây khó khăn khi đọc mã, vì vậy tôi khuyên rằng đừng sử dụng quá nhiều
toán tử này.
Bạn nên ghi chú là tất cả các toán tử toán học đều có phiên bản rút gọn cho phép bạn hiệu chỉnh trực
tiếp trên một biến (coi thêm về các biến trong mục sau của phần này). Ví dụ, nếu bạn muốn cộng 10
vào x, bạn có thể làm thế này:
x = x + 10;
Nhưng một số thứ rườm rà và dư thừa có thể bỏ đi. Bạn có thể viết như sau
x += 10;
Tất cả các toán tử khác đều có phiên bản tương tự:
x *= 10; // Nhân cho 10
x /= 10; // Chia cho 10
x -= 10; // Trừ 10
x %= 10; // Đồng dư cho 10
x >>= 2; // Dịch xuống cho 2
x <<= 2; // Dịch lên cho 2
Toán tử trên bit
Bên cạnh những toán tử toán học, còn có những toán tử trên bit, nó thực hiện những phép tính nhị
phân trên các số. Toán tử trên bit trong C# được liệt kê trong bảng 2.3.
Bảng 2.3 Toán tử trên bit cơ bản trong C#
Toán tử Ký hiệu Ví dụ Kết quả
And Nhị phân & 6 & 10 2
Or Nhị phân | 6 | 10 14
Xor Nhị phân ^ 6 ^ 10 12
Not Nhị phân ~ ~7 248
Toán tử trên bit cũng có dạng rút gọn:
x &= 10; // And cho 10
x |= 10; // Or cho 10
x ^= 10; // Xor cho 10
Toán tử dịch
Có hai toán tử dịch, >. Những toán tử này dịch các bit trong một số lên hay xuống, kết quả
dựa trên phương trình sau:
x << y tương tự với x * 2y
x >> y tương tự với x / 2y
Vì vậy 5 > 3 tương đương với 40 / 8, hay 5.
Ghi chú
Dịch bit nhanh hơn rất nhiều so với nhân hoặc chia trực tiếp, nhưng hiếm dùng ngày nay.
Tốc độ tiết kiệm không quan trọng lắm, và nó làm cho chương trình của bạn khó đọc hơn.
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 5
Toán tử Logic
Có một số điểm giống nhau giữa các toán tử logic là chúng thực hiện phép so sánh và trả lại giá trị
Boolean true (đúng) hay false (sai). Bảng 2.4 liệt kê những toán tử logic.
Bảng 2.4 Toán tử Logic trong C#
Toán tử Ký hiệu Ví dụ Kết quả
Bằng == 1 == 2 false
Không bằng != 1 != 2 true
Nhỏ hơn < 1 < 2 true
Lớn hơn > 1 > 2 false
Nhỏ hơn hoặc bằng <= 1 <= 2 true
Lớn hơn hoặc bằng >= 1 >= 2 false
Logic And && true && false false
Logic Or || true || false true
Logic Not ! !true false
Biến
Trong C#, như trong gần như bất kỳ ngôn ngữ khác, bạn có thể tạo các trường cho các kiểu cơ bản,
gọi là biến, và thực hiện phép toán lên chúng.
Khai báo một mảnh dữ liệu của chương trình là một điều đơn giản. Tất cả các điều bạn cần làm là gọi
tên của kiểu dữ liệu, sau đó là tên biến bạn muốn tạo và sau đó (nếu cần) khởi tạo dữ liệu đó với một
giá trị. Đây là một ví dụ:
int x = 10;
float y = 3.14159;
decimal z;
Cảnh báo
Ghi chú rằng nếu bạn mún sử dụng một biến trước khi khởi tạo cho nó (nếu bạn muốn sử
dụng z trong đoạn mã ví dụ trước), thì bạn sẽ nhận được một lỗi biên dịch trong C#. Trong
ngôn nhữ trước đó, như C và C++, sẽ cho phép bạn sử dụng biến mà không cần cho nó giá
trị, điều đó có thể dẫn đến rất nhiều lỗi vì bạn không bao giờ biết được cái gì trong biến của
bạn nếu bạn không đặt giá trị cho nó.
Đây là một ví dụ sử dụng biến trong các biểu thức toán học:
int x = 10 + 5; // 15
int y = 20 * x; // 300
int z = x / 8; // 1
float a = (float)x / 8.0; // 1.875
x = (int)a; // 1
Chú ý vào hai dòng cuối. Những dòng này chỉ cho bạn cách sử dụng ép kiểu trong chương trình của
bạn. Một lời giải thích cho ép kiểu sẽ đến trong các mục sau.
Hằng
Bạn có thể khai báo các hằng, một biến ảo nhưng không thể thay đổi, trong mã của bạn. Đây là một
cách an toàn xuất hiện trong ngôn ngữ máy tính trong những năm gần đây. Ví dụ:
const float pi = 3.14159;
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 6
Bây giờ bạn có thể sử dụng pi trong những tính toán của bạn, nhưng bạn không thể thay đổi giá trị
của nó (bởi vì thay đổi giá trị của pi thành 3.0 làm cho nó trở nên hoàn toàn vô nghĩa!). Điều này sẽ
gây ra một lỗi biên dịch:
pi = 3.0; // ERROR!
Ép kiểu
Hãy xem đoạn mã này:
float a = 1.875;
int x = (int)a; // 1
Hãy nhìn vào dòng cuối: giá trị của a là 1.875, một số hữu tỉ, và dòng cuối cố gắng cho giá trị của nó
và x, một số nguyên. Rõ ràng là bạn không thể chuyển dữ liệu từ a sang x, vì vậy bạn cần mất đi một
số độ chính xác. Các ngôn ngữ cũ hơn, như C/C++, điều này thực hiện một cách tự động, và cắt 1.875
xuống còn 1 để vừa với số nguyên. Tuy nhiên, nếu bạn cố gắng gõ dòng này vào C#, nó sẽ gây ra một
lỗi biên dịch:
x = a; // Lỗi, không thể chuyển đổi ngầm từ ‘float’ sang ‘int’
Đương nhiên, mã này hoạt động tốt trong những ngôn ngữ cũ hơn, vì vậy rất nhiều người sẽ tự động
bỏ qua C# bởi vì “khó sử dụng”. Bạn có thể nghe họ nói: “Mi không thể tự động chuyển float sang int
à, trình biên dịch ngu ngốc kia?”.
Trình biên dịch không thật sự ngu ngốc; nó đang cố gắng tiết kiệm thời gian của bạn để gỡ lỗi. Bạn có
thể không nhận ra điều đó, nhưng mà một nguồn lỗi chung của các chương trình là việc cắt xén không
có chủ ý. Bạn có thể quên một kiểu là số nguyên và một số dữ liệu quan trọng có thể đánh mất trong
khi cắt xén ở đâu đó. Vì vậy C# yêu cầu bạn nói một cách rõ ràng khi nào bạn muốn cắt xén dữ liệu.
Bảng 2.5 liệt kê những chuyển đổi nào là ngầm (I – Implicit) và rõ ràng (E – Explicit).
Bảng 2.5 Chuyển đổi ngầm/rõ ràng
Từ byte sbyte short ushort int uint long ulong float double decimal
byte I E I I I I I I I I I
sbyte E I I E I E I E I I I
short E E I E I E I E I I I
ushort E E E I I I I I I I I
int E E E E I E I E I I I
uint E E E E E I I I I I I
long E E E E E E I E I I I
ulong E E E E E E E I I I I
float E E E E E E E E I I I
double E E E E E E E E E I E
decimal E E E E E E E E E E I
Biểu đồ có vẻ bối rối một chút, nhưng thực ra nó rất đơn giản. Ví dụ, nếu bạn muốn chuyển thì int
sang double, nhìn vào bảng 2.5, tìm “int” ở bên trái và “double” ở trên. Vị trí đó là chữ I, tức là bạn có
thể thực hiện một chuyển đổi ngầm:
int a = 10;
double b = a; // ok
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 7
Bây giờ bạn muốn chuyển đổi từ double sang int. Nhìn bảng 2.5, tìm “double” phía trái và “int” ở
trên. Ở đó là chữ E, nghĩa là bạn cần thực hiện một chuyển đổi rõ ràng:
double a = 10.0;
// int b = a <—- ERROR
int b = (int)a; // ok
Sự phân nhánh
Nếu bạn đã thực sự học một ngôn ngữ lập trình, thì bạn biết rằng có ba đặc điểm khác nhau mà một
ngôn ngữ cần có để có thể xem như một ngôn ngữ lập trình. Đó là
Sự tuần tự
Sự phân nhánh
Sự lặp lại
Bạn đã biết về đặc điểm đầu tiên, sự tuần tự, trong ví dụ đầu đầu tiên. Sự tuần tự nghĩa là ngôn ngữ
phải cho phép thực thi các lệnh theo một trình tự cho sẵn.
Bây giờ, tôi muốn đề cập tới câu lệnh điều kiện, việc sử dụng nó được gọi là sự phân nhánh. Phân
nhánh cho phép một chương trình máy tính xem xét đến các biến cho sẵn và quyết định xem nó nên
tiếp tục thực thi hay nên rẽ nhánh sang phần khác của chương trình.
C# có một số câu lệnh điều kiện xây dựng sẵn; tất cả chúng đều thừa kế từ C, vì vậy, bạn có thể quen
thuộc với chúng.
Câu lệnh If
Khá phổ biến trong một chương trình, khi bạn muốn thử xem nếu một điều kiện có đúng hay không,
và sau đó hành động theo kết quả. Ví dụ, nếu bạn muốn thực hiện một hành động nếu một điều kiện là
đúng, thì bạn có thể viết như sau:
if( x == 10 )
{
// Làm gì đó
}
Đoạn mã kiểm tra xem nếu biến nào đó có tên là x có giá trị là 10 hay không, và sau đó thực thi đoạn
mã bên trong dấu ngoặc nhọn nếu, và chỉ nếu, x là 10. Cái này được gọi là câu lệnh if.
Bạn cũng có thể thêm và một mệnh đề else ở cuối, trong trường hợp bạn muốn thực thi đoạn mã nào
đó nếu x không là 10:
if( x == 10 )
{
// Làm gì đó
}
else
{
// Làm gì đó
}
Máy vi tính sẽ thực thi tất cả những gì trong khối đầu tiên khi x là 10, và thực thi những gì trong khối
thứ hai khi x là bất cứ cái gì không phải là 10.
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 8
Hơn nữa, bạn có thể nối chuỗi câu lệnh else if ở cuối, để thực hiện nhiều yêu cầu:
if( x < 10 )
{
// Làm gì đó nếu x < 10
}
else if( x < 20 )
{
// Làm gì đó nếu 10 <= x < 20
}
else if( x < 30 )
{
// Làm gì đó nếu 20 <= x < 30
}
Ghi chú
Nếu bạn đã sử dụng một ngôn ngữ như C++, thì bạn có thể sử dụng số bên trong một điều
kiện để tạo ra dòng mã như: if( x ), với x là một số nguyên. Trong những ngôn ngữ cũ,
máy tính cho số 0 là false, và bất kỳ thứ gì khác là true, nghĩa là nếu x là 0, thì khối if sẽ
không thực thi, nhưng nó sẽ thực thi cho bất kỳ số nào khác. C# không giống vậy, nó yêu cầu
bạn phải sử dụng một Boolean bên trong một biểu thức điều kiện. Vì vậy, đoạn mã trên sẽ
gây ra một lỗi biên dịch. Khi bạn nghĩ về nó, cách cũ không thực sự an toàn nữa, bởi vì nó
không giải thích được bạn đang kiểm tra cái gì. C# làm chương trình của bạn an toàn và dễ
đọc hơn.
Câu lệnh Switch
Sử dụng câu lệnh switch là một cách nhanh để so sánh nhiều kết quả của một biến duy nhất. V1i
dụ, nếu bạn có một biến, x, biến có có thể giữa các giá trị 1, 2, 3 và 4, và chương trình của bạn sẽ thực
hiện các hành động khác nhau cho mỗi giá trị. Bạn có thể dùng một câu lệnh switch để làm điều
này:
switch( x )
{
case 1:
// Làm gì đó nếu là 1
case 2:
// Làm gì đó nếu là 2
case 3:
// Làm gì đó nếu là 3
case 4:
// Làm gì đó nếu là 4
default:
// Làm gì đó nếu là một số khác
}
Vậy nếu x là 2, thì mã sẽ nhảy tới khối case 2, và vâng vâng.
Tuy nhiên, trong đoạn mã trên, nếu x là 2, thì mã sẽ nảy ngay tới khối 2, nhưng nó sẽ tiếp tục và thực
thi đoạn mã ở các khối ở dưới chúng. Có nghĩa là đoạn mã sẽ thực thi mã trong khối 3, 4 và mặc định.
Đôi khi bạn muốn điều này xảy ra, nhưng phần lớn là không, vì vậy bạn cần sử dụng từ khóa break
ở thoát khỏi switch sau mỗi khối:
switch( x )
{
case 1:
// Làm gì đó
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 9
break; // Nhảy khỏi switch
case 2:
// Làm gì đó
break; // Nhảy khỏi switch
default:
// Làm gì đó
break; // Ở đây tùy chọn
}
Vòng lặp
Đặc điểm thứ ba của một ngôn ngữ máy tính là sự lặp lại, hay vòng lặp. Vòng lặp cho phép bạn thực
hiện một công việc cụ thể một lần và nhiều lần nữa. C# có bốn cơ cấu xây dựng sẵn; ba cái sẽ được đề
cập trong phần này là cơ cấu thừa kế từ ngôn ngữ C. Tôi sẽ không đề cập đến cái thứ tư cho đến Phần
4, “C# Nâng cao”.
Vòng lặp while
Cấu trúc vòng lặp đầu tiên và đơn giản nhất là vòng lặp while. Đây là ví dụ:
while( x < 10 )
{
// Làm gì đó
}
Bất cứ cái gì trong dấu ngoặc nhọn sẽ được thực thi lặp đi lặp lại khi giá trị x nhỏ hơn 10. Nếu x
không bao giờ lớn hơn hoặc bằng 10, thì vòng lặp sẽ lặp vô hạn.
Vòng lặp for
Một vòng lặp phổ biến khác là vòng lặp for, là một cách khác để thực hiện một vòng lặp while. Cú
pháp cơ bản cho vòng lặp for là:
for( khởi tạo; điều kiện; hành động )
Phần khởi tạo là phần mã chỉ được thực thi một lần, khi bắt đầu vòng lặp for. Phần này cho phép bạn
khởi tạo bất kỳ biến nào bạn cần sử dụng trong vòng lặp.
Phần điều kiện được kiểm tra trước mỗi lần lặpl nếu nó trả về false, thì vòng lặp kết thúc.
Phần hành động được thực thi ở cuối mỗi lần lặp.
Nói chung, bạn sử dụng vòng lặp for để tạo một vòng lặp có số lần xác định (nhưng nó vẫn có thể bị
lặp vô hạn). Ví dụ, nếu bạn muốn thực hiện 10 phép tính trên x, với x từ 0 đến 9, bạn có thể tạo vòng
lặp như thế này:
for( int x = 0; x < 10; x++ )
{
// Làm gì đó
}
Trong lần thực thi đầu tiên của vòng lặp, x là 0, và lần sau là 1, và tiếp tục, cho đến khi nào nó đạt đến
9 (bằng 10 thì sẽ thoát khỏi vòng lặp).
Bạn cũng có thể thực hiện nhiều việc trong khác for, như khởi tạo nhiều biến hay thực hiện nhiều
hành động:
Câu lạc bộ Khoa học - THPT Chuyên Lê Hồng Phong TPHCM LHPSC
Lập trình C# - Phần 2: Cơ bản Trang 10
for( int x = 0, int y = 0; x < 10; x++, y += 2 )
Vòng lặp này tạo ra hai biến, x và y, với x lặp từ 0 đến 9, và y lặp từ 0 đến 18 vì bỏ qua các số lẻ.
Vòng lặp do-while
Đôi khi trong lập trình, một tình huống xuất hiện mà bạn muốn vòng lặp thực thi ít nhất một