You are on page 1of 65

Bài 1:

Làm quen với C#


Mục tiêu bài học
Giới thiệu về .NET và Visual Studio
Giới thiệu về các kiến thức lập trình cơ bản trên ngôn ngữ C#
Kiểu dữ liệu
Toán tử
Thao tác với chuỗi
Cấu trúc điều khiển
Phương thức
Xử lý ngoại lệ

Làm quen với C# 2


Ứng dụng Windows Forms
Windows Forms là ứng dụng có giao diện đồ họa chạy trên hệ
điều hành Windows

Windows Forms là ứng dụng chạy trên máy tính của người
dùng
Khác với Web Forms là ứng dụng chạy trên Web Forms. Khi ứng
dụng chạy thì hiển thị kết quả lên trình duyệt
Windows Forms là một phần của kiến trúc .NET

Làm quen với C# 3


Kiến trúc .NET

.NET Appliations

Visual Basic Visual C# Visual C++ Visual F#

.NET Framework
.NET Framework Class Library

Các lớp Windows Forms Các lớp ASP.NET Các lớp


khác Common Language Runtime

Ứng dụng được quản lý Hệ thống kiểu thông dụng Ngôn ngữ trung
gian

Hệ điều hành và phần cứng

Windows XP Windows Vista Windows 7 Các hệ điều hành khác

Làm quen với C# 4


.NET Framework
Ứng dụng Windows Forms không truy cập hệ điều hành hay phần
cứng máy tính trực tiếp mà thông qua các dịch vụ của .NET
Framework
.NET Framework gồm hai thành phần chính:
.NET Framework Class Library
Common Language Runtime

Làm quen với C# 5


.NET Framework Class Library
.NET Framework Class Library bao gồm thư viện các đoạn mã được
viết sẵn cung cấp các chức năng cần thiết khi lập trình.
Các lớp Windows Forms được sử dụng để phát triển ứng dụng
Windows Forms
Các lớp ASP.NET được sử dụng để phát triển các ứng dụng Web
Forms.
Những lớp khác hỗ trợ lập trình với CSDL, quản lý bảo mật, truy
xuất file
Các lớp của .NET Framework Class Library được tổ chức thành cấu
trúc phân nhóm
Các lớp liên quan đến nhau được gom thành một nhóm gọi là
namespace
Mỗi namespace bao gồm các lớp được sử dụng cho một chức năng cụ
thể
namespace System.Windows.Forms chứa các lớp sử dụng để tạo form
namespace System.Data chứa các lớp sử dụng để truy cập dữ liệu
Làm quen với C# 6
Common Language Runtime (CLR)

Mã nguồn Mã được quản lý Mã máy

bộ biên dịch C#
Visual C#
bộ biên dịch VB
Visual Basic CLR MÃ MÁY
CIL code
bộ biên dịch C++
Visual C++

bộ biên dịch F#
Visual F#

Giai đoạn biên dịch Giai đoạn chạy

Nguồn: Wikipedia 1

Làm quen với C# 7


Common Language Runtime (CLR)
CLR (Môi trường quản lý việc thi hành mã) cung cấp các dịch vụ cần
thiết để chạy ứng dụng được viết bằng ngôn ngữ .NET
Tất cả các ngôn ngữ .NET đều được biên dịch thành ngôn ngữ
trung gian (common intermediate language – CIL) hay còn được gọi
là mã được quản lý
Tất cả các ứng dụng .NET đều được thực thi dưới sự dám sát của
CLR (quản lý bộ nhớ, thực thi code, bảo mật ….), nên còn được gọi
là ứng dụng được quản lý
CRL cung cấp Hệ thống kiểu chung (Common Type System) định
nghĩa kiểu mà sẽ được sử dụng bởi tất cả các ngôn ngữ .NET
Các chương trình viết bằng các ngôn ngữ .NET khác nhau có thể
tương tác được với nhau

Làm quen với C# 8


Biên dịch và chạy một ứng dụng

Visual Studio .NET Framework Hệ


5 điều
hành
IDE Bộ biên dịch CLR

1 2 3 4
Solution Assembly
Project IL
Ứng dụng
File nguồn được triển
Tham chiếu khai
đến các lớp

Làm quen với C# 9


Biên dịch và chạy một ứng dụng
Quá trình biên dịch
Sử dụng Visual Studio để tạo project (ứng dụng). Project gồm các
file mã nguồn, ngoài ra còn có file nhạc, ảnh, văn bản…
Biên dịch mã nguồn C# bằng bộ biên dịch mã. Kết quả sau khi biên
dịch là assembly
Assembly gồm
Ngôn ngữ trung gian (IL) được biên dịch từ file nguồn
Các tham chiếu đến các file thư viện mà ứng dụng gọi đến
Assembly có thể chạy trên PC được cài đặt CLR. Khi assembly được
chạy, CLR chuyển mã IL sang mã máy là mã có thể được chạy bằng
hệ điều hành

Làm quen với C# 10


So sánh C# với các
ngôn ngữ lập trình .NET khác
So sánh C# với các ngôn ngữ lập trình .NET khác
Giống
Cùng sử dụng chung các lớp .NET Framework
Tạo và làm việc với form, điều khiển, sử dụng csdl và làm việc trên
cùng một IDE Visual Studio
Khác:
Cú pháp

So sánh C# với Java


Giống:
Có cú pháp gần giống nhau
Khác
Framework
IDE

Làm quen với C# 11


Sự phát triển .NET FrameWork
.NET ngày càng hoàn thiện và cung cấp nhiều tính năng cho người
dùng hơn
Visual Studio 2010 tích hợp .NET 4.0

Làm quen với C# 12


Visual Studio 2010

Làm quen với C# 13


Visual Studio 2010
Visual Studio là một bộ sản phẩm gồm IDE và .NET Framework
IDE để phát triển ứng dụng
.NET Framework cung cấp môi trường thực thi ứng dụng

Visual Studio 2010

Môi trường phát triển tích hợp


(IDE – Integrated Development Environment)

.NET FRAMEWORK

Làm quen với C# 14


Visual Studio 2010

Các phiên bản của Visual Studio 2010


Phiên bản Mô tả
Express Miễn phí, chỉ hỗ trợ một trong các ngôn ngữ .NET. Phù hợp cho sinh
viên.
Professional Phù hợp cho lập trình viên muốn phát triển các ứng dụng Window,
web hay mobile.
Premium Phù hợp với lập trình viên hay nhóm lập trình viên muốn phát triển
các ứng dụng có khả năng mở rộng. Phiên bản này bao gồm các công
cụ hữu ích cho việc lập trình như công cụ kiểm thử, công cụ triển
khai CSDL, công cụ quản lý thay đổi và công cụ quản lý vòng đời dự
án. Tuy nhiên các công cụ này chỉ được hỗ trợ ở mức cơ bản.
Ultimate Thiết kế cho nhóm lập trình viên, hỗ trợ phiên bản đầy đủ của các
công cụ lập trình như công cụ kiểm thử, công cụ mô hình hóa, công
cụ CSDL và công cụ quản lý vòng đời dự án.

Làm quen với C# 15


Ngôn ngữ và nền tảng
Những ngôn ngữ lập trình chính được hỗ trợ bởi Visual Studio 2010
Ngôn ngữ Mô tả
Visual Basic Được thiết kế để phát triển ứng dụng nhanh chóng.
Visual C# Kết hợp các đặc tính của java và C++ và phù hợp với phát triển ứng
dụng nhanh chóng.
Visual C++ Phiên bản nâng cấp của C++.
Visual F# Kết hợp lập trình chức năng, thủ tục và hướng đối tượng.

Nền tảng có thể chạy Visual Studio 2010


Windows XP, Windows Vista, Windows 7 hoặc là những phiên bản mới hơn

Nền tảng có thể chạy ứng dụng được tạo bởi Visual Studio 2010
Windows 2000 hoặc mới hơn, phụ thuộc vào thành phần .NET nào mà ứng dụng sử
dụng

Làm quen với C# 16


Visual Studio 2010
IDE có thể sử dụng để phát triển ứng dụng viết bằng bất cứ ngôn
ngữ nào trong 4 ngôn ngữ trên
.NET Framework cung cấp thư viện hỗ trợ cho cả 4 ngôn ngữ lập
trình
Khi cài đặt VisualStudio sẽ tự động cài SQL Server 2008 Express là
phiên bản thu gọn của Microsoft SQL Server 2008

Làm quen với C# 17


KIỂU DỮ LIỆU

Làm quen với C# 18


Kiểu dữ liệu
Cũng giống như VB, C# có hai kiểu dữ liệu
Dữ liệu kiểu giá trị
Tương ứng với kiểu Integer, Double… của Visual Basic
Dữ liệu kiểu tham chiếu
Tương ứng với kiểu String và Object … của Visual Basic

Kiểu giá trị Kiểu tham chiếu

Làm quen với C# 19


Dữ liệu kiểu giá trị
C# keyword VB Bytes .NET type Mô tả
(structure) (Kiểu dữ liệu được hỗ trợ bởi .NET 4)
byte Byte 1 Byte Số nguyên dương từ 0 đến 255
sbyte SByte 1 Sbyte Số nguyên có dấu từ -128 đến 127
short Short 2 Int16 Số nguyên từ -32.768 đến 32.767
ushort UShort 2 UInt16 Số nguyên dương từ 0 đến 65.535
int Integer 4 Int32 Số nguyên từ -2.147.483.648 đến +2.147.483.647
uint UInteger 4 UInt32 Số nguyên dương từ 0 đến 4.294.967.295
long Long 8 Int64 Số nguyên từ -9.223.327.036.854.775.808 đến
9.223.327.036.854.775.807
ulong ULong 8 UInt64 Số nguyên dương từ 0 đến 18.446.744.073.709.551.615
float Single 4 Single Số thập phân có 7 chữ số sau dấu phẩy
double Double 8 Double Số thập phân có 14 chữ số sau dấu phẩy
decimal Decimal 16 Decimal Số nguyên dương với 28 chữ số (gồm phần nguyên và
thập phân)
char Char 2 Char Ký tự Unicode
Làm
boolquen với C# Boolean 1 Boolean Giá trị đúng (true) hay sai (false) 20
Dữ liệu kiểu giá trị
Dữ liệu kiểu giá trị bao gồm
Các kiểu dữ liệu lưu số
Lưu số nguyên: sbyte (1 byte), short (2 byte), int (4 byte), long
(8 byte)
Lưu số nguyên dương: byte (1), ushort (2), uint (4), ulong (8)
Lưu số thập phân: float (4), double (8), decimal (16)
Các kiểu dữ liệu lưu ký tự
char
Các kiểu dữ liệu lưu giá trị đúng sai
bool
Lưu ý rằng mỗi kiểu dữ liệu lưu một giải giá trị khác nhau nên tùy
vào trường hợp sử dụng để sử dụng kiểu dữ liệu phù hợp

Làm quen với C# 21


Dữ liệu kiểu tham chiếu

C# keyword VB keyword .NET type (Class) Mô tả


string String String Tham chiếu đến đối tượng String
object Object Object Tham chiếu đến bất kỳ kiểu đối
tượng nào

Kiểu string là kiểu object được định nghĩa trước

Làm quen với C# 22


Kiểu dữ liệu
.NET định nghĩa các kiểu dữ liệu bởi Common Type System thuộc
CLR
Mỗi ngôn ngữ .NET sẽ có kiểu dữ liệu tương ứng với kiểu được định
nghĩa trong CTS
Sau khi biên dịch các kiểu này sẽ được chuyển về kiểu CTS tương
ứng
Mã nguồn Mã trung gian (CIL) Mã máy

bộ biên dịch C#
int
Integer
CLR MÃ MÁY
(CTS)
bộ biên dịch VB
Integer

Giai đoạn biên dịch Giai đoạn chạy


Làm quen với C# 23
Khai báo và khởi tạo biến kiểu giá trị

Visual Basic Visual C#


Khai báo và gán giá trị Khai báo và gán giá trị
Dim tenBien As kieuBien kieuBien tenBien;
tenBien = giaTri tenBien = giaTri;
Sau mỗi câu lệnh đều
Dim x As Integer int x; có dấu chấm phẩy
x=1 x = 1;
Khai báo và gán giá trị trên cùng dòng Khai báo và gán giá trị trên cùng dòng
Dim tenBien As kieuBien = giaTri kieuBien tenBien = giaTri;

Dim x As Integer = 1 int x = 1;

Khai báo và khởi tạo hằng Khai báo và khởi tạo hằng
const tenHang As kieuBien = giaTri const kieuBien tenHang = giaTri;

const x As Integer = 5 const int x = 5;

Chú ý: Tên biến đặt theo ký pháp lạc đà

Làm quen với C# 24


Ép kiểu
C# hỗ trợ hai kiểu ép kiểu: Ép kiểu mở rộng và ép kiểu thu hẹp
Ép kiểu mở rộng
Chuyển từ kiểu có độ chính xác bé sang kiểu có độ chính xác lớn hơn
Cũng như Visual Basic, C# tự động ép kiểu mở rộng
double a = 2 ; // Chuyển từ int sang double
int b = 3, c = 4;
double z = (a+b+c)/3; // Chuyển b, c từ int sang double
C# tự động chuyển từ kiểu bên trái sang bên phải
byte  short  int  long  decimal
byte  short  int  double float  decimal
byte  short  float  double
Ép kiểu thu hẹp
Chuyển từ kiểu có độ chính xác cao sang kiểu có độ chính xác thấp hơn
Phải ép kiểu tường minh cho các phép ép kiểu thu hẹp
int a = (int)2.5 ; // (a = 2) Chuyển từ double sang int
int b = 3, c = 4;
double z = ((int)a+b+c)/3; // (z = 3)
//Chuyển a sang kiểu int sau đó mới thực hiện tính toán
Làm quen với C# 25
Sử dụng phương thức để ép kiểu
Sử dụng phương thức ToString có sẵn trong mỗi cấu trúc
decimal soTien = 20.00m;
string chuoiSoTien = soTien.ToString();

Sử dụng phương thức Parse có sẵn trong mỗi cấu trúc


decimal soTien2 = Decimal.Parse(chuoiSoTien);
Sử dụng lớp Convert
Dùng phương thức này để chuyển kiểu cho tất cả các kiểu được xây
dựng sẵn
decimal soTien3 = Convert.ToDecimal(chuoiSoTien);
string soTienStr = Convert .ToString(soTien3);

Làm quen với C# 26


TOÁN TỬ

Làm quen với C# 27


Toán tử số học
C# cung cấp các toán tử và cách sử dụng các toán tử này giống
như Visual Basic

Toán tử Tên phép toán Mô tả


+ Phép cộng Cộng hai toán hạng
- Phép trừ Trừ toán hạng bên trái cho toán hạng bên phải

* Phép nhân Nhân toán hạng bên trái với toán hạng bên phải
Toán
tử hai / Phép chia Chia toán hạng bên trái cho toán hạng bên phải
ngôi
% Phép chia lấy dư Chia lấy dư toán hạng bên trái cho toán hạng bên
phải
+ Dấu dương Trả về giá trị của toán hạng
Toán
tử - Dấu âm Chuyển giá trị dương thành giá trị âm và giá trị âm
một thành giá trị dương
ngôi
++ Phép tăng Tăng toán hạng lên 1
-- Phép giảm Trừ toán hạng đi 1
Làm quen với C# 28
Demo sử dụng toán tử
Sử dụng các toán tử trong C# cũng tương tự như sử dụng các toán
tử trong Visual Basic
//Tính toán với số nguyên //Tính toán với số thập phân
int x = 14; decimal a = 8.5m;
int y = 8; decimal b = 3.4m;

int z1 = x + y; //z1 = 22 decimal c1 = a + b; //c1 = 11.9


int z2 = x - y; //z2 = 6 decimal c2 = a - b; //c2 = 5.1
int z3 = x * y; //z3 = 112 decimal c3 = a * b; //c3 = 28.90
int z4 = x / y; //z4 = 1 decimal c4 = a / b; //c4 = 2.5
int z5 = x % y; //z5 = 6 decimal c5 = a % b; //c5 = 1.7
int z6 = -x + y; //z6 = 6 decimal c6 = -a + b; //c6 = -8.5
int z7 = --y; //z7 = 7, y = 7 decimal c7 = --a; //c7 = 7.5, a = 7.5
int z8 = ++y; //z8 = 15, x = 15 decimal z8 = ++b; //c8 = 4.4, b = 4.4

//Tính toán với kiểu ký tự


char letter1 = ‘C’; //letter1 = ‘C’
char letter2 = ++letter1; //letter2 = ‘D’

Làm quen với C# 29


Thứ tự ưu tiên
Thứ tự ưu tiên giống như trong Visual Basic
1. Toán tử tăng (++) và toán tử giảm (--)
2. Toán tử dương (+) và toán tử âm (-)
3. Toán tử nhân (*), chia (/) và chia lấy dư (%)
4. Toán tử cộng (+) và trừ (-)
Dùng dấu ngoặc để thay đổi thứ tự ưu tiên
decimal phanTramChietKhau = 0.2 m;
decimal gia = 100m;
gia = gia * (1 - phanTramChieuKhau);

Làm quen với C# 30


Toán tử gán
C# cung cấp các phép gán tương tự như Visual Basic

Toán tử Mô tả
= Gán giá trị mới cho biến
+= Cộng giá trị của biến với toán hạng bên phải rồi gán kết quả cho biến
-= Lấy giá trị của biến trừ đi toán hạng bên phải rồi gán kết quả cho biến
*= Nhân biến với toán hạng bên phải rồi gán kết quả cho biến
/= Lấy giá trị của biến chia cho toán hạng bên phải rồi gán kết quả cho biến
%= Lấy giá trị của biến chia lấy dư cho toán hạng bên phải rồi gán kết quả
cho biến

Làm quen với C# 31


Sử dụng toán tử gán
Sử dụng phép gán cũng tương tự như trong Visual Basic
Cú pháp
tenBien = bieuThuc

Ví dụ

//Phép gán thông thường


x = 7; //bieuThuc là một giá trị
y = x ; //bieuThuc là một biến
z = x * y + 3; //bieuThuc là một biểu thức số học

//Sử dụng cùng một biến trên hai phía của phép gán
x = x + 10; //x = 17

//Sử dụng toán tử gán rút gọn


x +=10; //x = 27c

Làm quen với C# 32


Toán tử logic
C# cung cấp các toán tử logic tương tự như Visual Basic
Tuy kí hiệu toán tử C# khác với Visual Basic nhưng việc sử dụng
chúng giống hệt nhau.
Toán tử VB Toán tử C# Tên
AndAlso && Và tối ưu
OrElse || Hoặc tối ưu
And & Và
Or I Hoặc
Not ! Not

(x < 20) && (x >10) //Tương tự như (x<20) AndAlso (x>10) trong Vb

Làm quen với C# 33


Toán tử quan hệ
C# cung cấp các toán tử tương tự như Visual Basic
Việc sử dụng các toán tử này cũng giống như trong Visual Basic
Lưu ý ký hiệu toán tử bằng và toán tử không bằng của hai ngôn
ngữ khác nhau
Toán tử VB Toán tử C# Tên
= == Bằng
<> != Không bằng
> > Lớn hơn
< < Bé hơn
>= >= Lớn hơn hoặc bằng
<= <= Bé hơn hoặc bằng

int x = 50;
x >= 50 ; //Trả về true vì x = 50

Làm quen với C# 34


Lớp Math
Cũng giống như Visual Basic, lớp Math cung cấp các phương thức
thao tác với dữ liệu kiểu số

Phương thức Giải thích


Math.Round (soThapPhan [,doChinhXac) Làm tròn chẵn.
Math.Pow(so, mu) Tính lũy thừa
Math.Sqrt(so) Tính căn
Math.{Min|Max}(soThu1, soThu2) Tìm giá trị nhỏ nhất (lớn nhất) của hai số

Làm quen với C# 35


THAO TÁC
VỚI CHUỖI

Làm quen với C# 36


Thao tác với chuỗi
Khái niệm chuỗi (String) trong C# cũng giống như khái niệm chuỗi
trong Visual Basic
Khai báo và khởi tạo chuỗi
string a = “Xin chao” ; // Gán một chuỗi hằng cho string
string b = “”; // Gán chuỗi rỗng cho string
string c = null; // Gán giá trị null cho string
Nối chuỗi
string c1 = “Nguyen Van ” + “ An”; // c1 = “Nguyen Van An”
string a = “Nguyen Van” ;
string b = “ An”;
string c2 = a + b; // c2 = “Nguyen Van An”
string c3 = a + “ An”; // c3 = “Nguyen Van An”
string c4 = “Nguyen Van” + 2; // c4 = “Nguyen Van2”
string a += “An”; // a = “Nguyen VanAn”

Làm quen với C# 37


Thao tác với chuỗi
Để thêm các ký tự đặc biệt vào chuỗi như ký tự tab, xuống dòng…
có hai cách
Sử dụng chuỗi thoát: \n, \t, \r, \\, \”…
string convat = “voi\tho\rga\tvit”;

chuoi convat sẽ có định dạng như sau:


voi ho
ga vit
Sử dụng chuỗi nguyên mẫu: Sử dụng @ trước chuỗi
string convat = @”voi ho
ga vit”;

chuoi convat sẽ có định dạng như


sau:
voi ho
ga vit
Chú ý: Đối với chuỗi nguyên mẫu, sử dụng dấu “” khi muốn thêm dấu “
(vd: @”Nhan “”x”” de thoat” sẽ hiển thị Nhan “x” de thoat)
Làm quen với C# 38
Định dạng hiển thị
Giống như VB, C# cung cấp các định dạng hiển thị
Code Định dạng Giải thích
C hoặc c Currency Hiển thị tiền tệ
P hoặc p Percent Hiện thị phần trăm
N hoặc n Number Hiển thị số có ký tự phân tách (123,345.34)
F hoặc f Float Hiển thị số thập phân
D hoặc d Digits Hiển thị số nguyên (123345.34)
E hoặc e Exponential Hiển thị số theo ký pháp khoa học (E)
G hoặ g General Hiển thị số thập phân theo cách thông thường hoặc ký pháp khoa học

Sử dụng phương thức ToString


decimal sotien = 123.12;
string sotienFormat = sotien.ToString(“c”); //$123.12

Sử dụng phương thức Format của lớp String


string sotienFormat2 = String.Format(“{0:c}”, sotien) ; //$123.12
Làm quen với C# 39
CẤU TRÚC
ĐIỀU KHIỂN

Làm quen với C# 40


Cấu trúc điều khiển
C# cung cấp các cấu trúc điều khiển giống như Visual Basic
Cấu trúc tuần tự
Cấu trúc lựa chọn
Cấu trúc lựa chọn đơn
Cấu trúc lựa chọn kép
Cấu trúc đa lựa chọn
Cấu trúc lặp
Cấu trúc lặp biết số vòng lặp
Cấu trúc lặp không biết số vòng lặp
Việc sử dụng các cấu trúc này giống như Visual Basic chỉ khác nhau
về cú pháp

Làm quen với C# 41


Lệnh lựa chọn đơn

Visual Basic C#
Cú pháp Cú pháp
If (bieuthucdieukien) Then if (bieuthucdieukien){
//Thân lệnh //Thân lệnh
End If }

Ví dụ Ví dụ
If diem>6 Then if (diem>6)
Display.Text = “Đỗ” {
End If Display.Text = “Đỗ”;
}

Làm quen với C# 42


Lệnh lựa chọn kép

Visual Basic C#
Cú pháp Cú pháp
If (bieuthucdieukien) Then If (bieuthucdieukien){
//Thân lệnh //Thân lệnh
Else }
//Thân lệnh else{
End If //Thân lệnh
}
Ví dụ Ví dụ
If diem>4 Then If diem>6 {
Display.Text = “Đỗ” Display.Text = “Đỗ”
Else }else{
Display.Text = “Trượt Display.Text = “Đỗ”
End If }

Làm quen với C# 43


Lệnh đa lựa chọn

Visual Basic C#
Cú pháp Cú pháp
Select Case (bieuthucdieukien) switch(bieuthucdieukien)
Case giatri {
//Thân mệnh đề case giatri:
… //Thân mệnh đề
Case giatri break;
//Thân mệnh đề …
Case Else case giatri:
//Thân mệnh đề //Thân mệnh đề
End Select break;
default:
//Thân mệnh đề
break;
}

Làm quen với C# 44


Lệnh đa lựa chọn

Visual Basic C#
Ví dụ Ví dụ
Select Case diem switch(diem)
Case "A", "B" {
displayLabel.Text = "Rất tốt!" case “A”:
Case "C", "D" case “B”:
displayLabel.Text = "Tốt!" displayLabel.Text = “Rất tốt!”;
Case "F" break;
displayLabel.Text = "Trượt." case “C”:
Case Else case “D”:
displayLabel.Text = “Điểm không hợp lệ." displayLabel.Text = “Tốt!”;
End Select break;
case “F”:
displayLabel.Text = “Trượt.”;
break;
default:
displayLabel.Text = “Diem khonghop le.”
break;
}

Làm quen với C# 45


Lệnh lặp while

Visual Basic C#
Cú pháp Cú pháp
Do While (bieuthucdieukien) while (bieuthucdieukien){
//Thân lệnh //Thân lệnh
Loop }

Ví dụ Ví dụ
Dim sum As Integer = 0 int sum = 0;
Dim i As Integer = 1 int i = 1;
Do While i <= 5 while (i <= 5){
sum = sum + i sum = sum + i;
i = i + 1 i++;
Loop }
Lưu ý: Lệnh while kiểm tra biểu thức điều kiện rồi mới thực hiện lệnh trong
vòng lặp

Làm quen với C# 46


Lệnh lặp do while

Visual Basic C#
Cú pháp Cú pháp
Do do {
//Thân lệnh //Thân lệnh
Loop While (bieuthucdieukien) } while (bieuthucdieukien)

Ví dụ Ví dụ
Dim sum As Integer = 0 int sum = 0;
Dim i As Integer = 1 int i = 1;
Do do{
sum = sum + i sum = sum + i;
i = i + 1 i++;
Loop While i <= 5 } while (i <= 5)
Lưu ý: Lệnh do while thực hiện lệnh trong vòng lặp rồi mới kiểm tra biểu
thức điều kiện

Làm quen với C# 47


Lệnh for
Cú pháp Visual Basic
For tenbiendieukhien As Integer = giatrikhoitao To giatricuoi Step buoctang
//Thân lệnh
Next

Cú pháp C#
for (giatrikhoitao ; bieuthuclogic ; bieuthuctang){
//Thân lệnh
}
Dim sum As Integer = 0 int sum = 0;
For i As Integer = 1 To 5 Step 1 for (int i = 1; i<=5; i++)
{ {
sum += i sum += i;
} }

Làm quen với C# 48


Lệnh break và continue trong vòng lặp

break: Khi gặp lệnh này sẽ thoát ra khỏi vòng lặp

continue: Khi gặp lệnh này sẽ bỏ qua các câu lệnh sau nó và thực
hiện vòng lặp tiếp theo

Làm quen với C# 49


PHƯƠNG THỨC

Làm quen với C# 50


Phương thức
Visual Basic cung cấp hai kiểu cú pháp cho thủ tục (phương thức)
Phương thức Sub (không trả về giá trị)
(Private|Public) Sub tenthutuc (ByVal thamso1 As kieuthamso)
//Thân thủ tục
End Sub
Phương thức Function (trả về giá trị)
(Private|Public) Function tenthutuc (ByVal thamso1 As kieuthamso) As kieutrave
//Thân thủ tục
End Sub

C# chỉ cung cấp một cú pháp duy nhất cho phương thức
(private|public) kieutrave tenphuongthuc (kieubienthamso thamso1) {
//Thân thủ tục
}
Đối với hàm không trả về giá trị: kiểu trả về là void

Làm quen với C# 51


Phương thức trong C#
Cú pháp
(private|public) kieutrave tenphuongthuc (kieubienthamso thamso1) {
//Thân thủ tục
}
Phương thức không trả về giá trị
private void hienThi(string user, string pass)
{
txtUser.Text = user;
txtPass.Text = pass;
}
Phương thức trả về giá trị và có tham số

private int binhPhuong(int x)


{
return x * x;
}

Làm quen với C# 52


Gọi phương thức
Cú pháp gọi đến phương thức cũng tương tự như Visual Basic
Visual Basic
[Me.] tenphuongthuc ([danhsachthamso])
C#
[this.] tenphuongthuc ([danhsachthamso])
Ví dụ
Định nghĩa phương thức
private int binhPhuong(int x)
{
return x * x;
}

Gọi phương thức

int ketQua = this.binhPhuong(10);

Làm quen với C# 53


Truyền tham số
theo tham chiếu và tham trị
Theo mặc định, đối số được truyền theo giá trị
Để truyền đối số theo tham chiếu, sử dụng từ khóa ref
private void Form1_Load(object sender, EventArgs e)
{
int x = 10;
int y = 5;
doiGiaTri(ref x, ref y);
MessageBox.Show("x = " + x + "\ny= " + y);
}
private void doiGiaTri(ref int x, ref int y)
{
int z = x;
x = y;
y = z;
}

Làm quen với C# 54


Tham số tùy chọn
Tương tự Visual Basic, C# cũng cung cấp tham số tùy chọn cho
phương thức
Tham số tùy chọn trên Visual Basic

Private Function tinhLapPhuong( Optional ByVal x As Integer = 1, _


Optional ByVal y As Integer = 1, _
Optional ByVal z As Integer = 1 ) As Integer
Return x * y * z
End Function

Tham số tùy chọn trên C#

private tinhLapPhuong(decimal x = 1, decimal y =1, decimal z =1){


return x * y * z;
}

Làm quen với C# 55


XỬ LÝ
NGOẠI LỆ

Làm quen với C# 56


Xử lý lỗi
Chương trình nào cũng có khả năng gặp phải các tình huống không
mong muốn
Người dùng nhập dữ liệu không hợp lệ
File cần mở bị khóa
Lỗi chia cho 0
Khi gặp lỗi này máy tính sẽ dừng đột ngột
Điều gì sẽ xẩy ra nếu
Thao tác chuyển tiền của ngân hàng gặp lỗi và dừng đột ngột
Chương trình điều khiển máy bay gặp lỗi và dừng đột ngột
Cần phải có cơ chế xử lý lỗi này
 .NET đưa ra khái niệm xử lý ngoại lệ để xử lý những lỗi này

Làm quen với C# 57


Ngoại lệ
Khi gặp lỗi không xử lý được, ứng dụng ném ra một ngoại lệ

Ứng dụng ném ra ngoại lệ FormatException vì


xẩy ra lỗi không ép kiểu thành công

Làm quen với C# 58


Cây phân cấp ngoại lệ

Exception

FormatException ArithmeticException

OverflowException

Tất cả các ngoại lệ đều là lớp con


của Exception
DivideByZeroException

Làm quen với C# 59


Ngoại lệ
Một số phương thức có thể ném ra ngoại lệ
Lớp Phương thức Ngoại lệ
Convert ToDecimal(string) FormatException
Convert ToInt32(string) FormatException
Decimal Parse(string) FormatException
DateTime Parse(string) FormatException

Các thuộc tính/phương thức của đối tượng Exception

Thuộc tính/Phương thức Mô tả


Message Thông báo mô tả ngắn gọn về
ngoại lệ
GetType() Lấy kiểu của ngoại lệ hiện tại

Làm quen với C# 60


Xử lý ngoại lệ
Sử dụng try catch để xử lý ngoại lệ
try
{
//Viết mã có khả năng có ngoại lệ ở đây
}
catch (Exception ex)
{
//Viết mã xử lý lỗi ở đây
}
Xử lý ngoại lệ
Máy tính sẽ chạy từng lệnh trong khối try
Nếu lệnh nào ném ra ngoại lệ, máy tính sẽ chuyển đến thực hiện
lệnh trong khối catch
Thực hiện xong lệnh trong khối catch, máy tính sẽ thực hiện lệnh
tiếp theo sau khối try-catch

Làm quen với C# 61


Demo xử lý ngoại lệ
try
{
decimal monthlyInvestment =
Convert.ToDecimal(txtMonthlyInvestment.Text);
decimal yearlyInterestRate =
Convert.ToDecimal(txtInterestRate.Text);
int years = Convert.ToInt32(txtYears.Text);
}
catch (FormatException)
{
MessageBox.Show(
"Invalid numeric format. Please check all entries.","Entry Error");
}
catch (OverflowException)
{
MessageBox.Show(
"Overflow error. Please enter smaller values.","Entry Error");
}
catch (Exception ex)
{
MessageBox.Show(
ex.Message + "\n\n" +
ex.GetType().ToString() + "\n" +
ex.StackTrace, "Exception");
}
Làm quen với C# 62
Tổng kết bài học
Visual Studio gồm hai thành phần chính là IDE và .NET FrameWork.
Trong đó IDE để phát triển ứng dụng còn .NET FrameWork định
nghĩa môi trường thực thi
Ứng dụng Windows Form không chạy trực tiếp trên hệ điều hành
của máy tính mà thông qua .NET FrameWork
.NET Framework gồm hai thành phần chính là .NET Framework Class
Library và Common Language Runtime (CLR).
.NET Framwork Class Library bao gồm thư viện các đoạn mã được
viết sẵn cung cấp các chức năng cần thiết khi lập trình
CLR cung cấp các dịch vụ cần thiết để chạy ứng dụng được viết
bằng ngôn ngữ .NET
Tất cả các ứng dụng viết bằng ngôn ngữ .NET đều được biên dịch
thành mã trung gian. Mã này được CLR chuyển thành mã máy để có
thể chạy trên hệ điều hành.
Ngôn ngữ C# chỉ khác Visual Basic về mặt cú pháp, còn về mặt hỗ
trợ lập trình thì giống nhau vì cùng dựa trên một FrameWork
Làm quen với C# 63
Tổng kết bài học
Giống như VB, kiểu dữ liệu trong C# cũng được chia thành hai loại
là kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu. String là kiểu dữ
liệu tham chiếu được xây dựng sẵn
C# cũng cung cấp các toán tử số học, toán tử gán, toán tử logic, và
toán tử quan hệ
C# cũng hỗ trợ 3 kiểu cấu trúc điều khiển là tuần tự, lựa chọn và
lặp
Không giống như VB có hai phương thức là phương thức Sub và
phương thức Function. C# chỉ cung cấp một kiểu cú pháp cho
phương thức, nếu giá trị trả về là void thì phương thức đó không trả
về giá trị
.NET hỗ trợ xử lý ngoại lệ để xử lý những đoạn mã có khả năng xẩy
ra lỗi
Đoạn mã có khả năng xẩy ra lỗi được đặt trong khối try, khối catch
chứa mã xử lý lỗi.

Làm quen với C# 64


Danh sách tham khảo
1. http://en.wikipedia.org/wiki/Common_Language_Runtime

Làm quen với C# 65

You might also like