1.2.3. Chú thích
Chú thích là hình thức cho phép chèn thêm dòng chỉ dẫn, tài liệu vào
trong đoạn mã lệnh. Khi biên dịch, trình biên dịch sẽ bỏ qua các dòng được chú
thích. C# cho phép 3 kiểu chú thích sau:
Chú thích một dòng:
Sử dụng cặp “//” để chú thích một dòng. Chú thích có hiệu lực từ khi gặp
cắp dấu này cho đến hết dòng (gặp dấu kết thúc dòng).
Chú thích nhiều dòng:
Sử dụng hai cặp dấu “/*” và “*/” để chú thích nhiều dòng liên tiếp. Chú
thích có hiệu lực từ khi gặp cặp dấu “/*” cho đến khi gặp dấu “*/”.
Ví dụ dưới đây minh họa về chú thích một dòng và chú thích nhiều dòng:
// Day la chu thich mot dong
/* Day la chu thich nhieu dong lien tiep.
So dong co the rat nhieu.
So dong la 1 cung duoc.*/ Cau nay khong duoc chu thich.
Chú ý:
Ta có thể dùng nhiều chú thích một dòng để chú thích cho nhiều dòng và
dùng chú thích nhiều dòng để chú thích cho một dòng. Tuy nhiên, người ta
thường dùng:
- Chú thích một dòng cho mã lệnh tạm thời chưa dùng hoặc có thể sai.
Điều này làm cho giúp cho việc soạn thảo mã lệnh được nhanh chóng.
- Chú thích nhiều dòng cho tài liệu.
Chú thích tài liệu XML:
Sử dụng bộ dấu “///” để chèn tài liệu XML vào mã lệnh. Chú thích chỉ có
hiệu lực như chú thích một dòng. Tuy nhiên, C# có thể hiểu được các chú thích
này trên nhiều dòng được chú thích liên tiếp. Khi biên dịch, khi trình biên dịch
gặp chú thích này, trình biên dịch sẽ biên dịch vào Assembly.
Ví dụ dưới đây minh họa về chú thích tài liệu XML:
/// documentation here
Với dòng chú thích trên, chúng ta có thể hiểu đó là một thẻ XML. Cụ thể
ở đây là thẻ có tên là “summary” và có nội dung là “documentation here”.
Chú thích loại này thường được dùng để chú thích cho các lớp, phương
thức, Tuy nhiên, chú thích này phải được đặt ngay trước mã lệnh tương ứng
với đối tượng cần chú thích
61 trang |
Chia sẻ: thanhle95 | Lượt xem: 525 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình C# (Phần I), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN VĂN TOÁN
BÀI GIẢNG
LẬP TRÌNH C#
Quảng Ngãi, 2018
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN VĂN TOÁN
BÀI GIẢNG
LẬP TRÌNH C#
(DÙNG CHO SINH VIÊN BẬC ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN VÀ SƯ PHẠM TIN HỌC)
LƯU HÀNH NỘI BỘ
i
LỜI NÓI ĐẦU
Lập trình C# là môn học tìm hiểu các kiến thức cơ
bản về lập trình xây dựng ứng dụng bằng ngôn ngữ lập
trình C#. Nội dung cơ bản của môn học này giới thiệu các
kiến thức cơ bản của C#, hướng đối tượng trong C#, các
điều khiển hỗ trợ thiết kế giao diện và các điều khiển hỗ trợ
truy cập CSDL, in kết quả.
Bài giảng được biên soạn và giảng dạy cho sinh viên
ngành Công nghệ thông tin với sinh viên đã có kiến thức cơ
bản về lập trình, lập trình hướng đối tượng, hệ quản trị cơ
sở dữ liệu Microsoft SQL Server. Vì thế, những nội dung liên
quan đến các phần kiến thức này trong bài giảng chủ yếu là
tóm tắt, nhắc lại.
Ngôn ngữ C# hiện đang được cập nhật thường
xuyên. Qua mỗi phiên bản, mẫu lập trình được thay đổi
theo hướng tiện lợi hơn và các công nghệ mới, hiện đại
được bổ sung vào. Hiện nay, phạm vi kiến thức của ngôn
ngữ C# rất rộng. Nội dung kiến thức được trình bày trong
bài giảng này chỉ mới đề cập ngang phiên bản .NET
Framework 2.0. Mong rằng, qua bài giảng này, sinh viên có
thể nắm bắt được những vấn đề cốt lõi của ngôn ngữ lập
trình C# để làm cơ sở cho việc nghiên cứu sâu hơn về ngôn
ngữ lập trình này.
Bài giảng không sao tránh khỏi những thiếu sót.
Mong các thầy cô và các bạn sinh viên đóng góp ý kiến để
hoàn thiện hơn trong những lần chỉnh sửa sau.
Xin chân thành cảm ơn.
Quảng Ngãi, tháng 11 năm 2018
Nguyễn Văn Toán
ii
MỤC LỤC
Chương 1: Giới thiệu Microsoft .NET, cơ sở của ngôn ngữ C# .................... 1
1.1. Tổng quan Microsoft .NET ................................................................. 1
1.1.1. Kiến trúc .NET framework ..................................................... 1
1.1.2. Biên dịch và ngôn ngữ trung gian .......................................... 3
1.2. Giới thiệu ngôn ngữ C# ...................................................................... 4
1.2.1. Chương trình đầu tiên ............................................................. 4
1.2.2. Kiểu dữ liệu, biểu thức, câu lệnh ............................................ 6
1.2.3. Chú thích ............................................................................... 12
1.2.4. Các cấu trúc dữ liệu .............................................................. 13
1.3. Câu hỏi và bài tập ............................................................................. 16
1.4. Bài mẫu ............................................................................................. 17
Chương 2: Hướng đối tượng trong C# ........................................................... 20
2.1. Lớp, đối tượng................................................................................... 20
2.1.1. Các thành phần của lớp ......................................................... 21
2.1.2. Phạm vi truy cập của lớp ...................................................... 21
2.1.3. Ví dụ về lớp .......................................................................... 22
2.2. Không gian tên, lệnh using ............................................................... 24
2.2.1. Không gian tên ...................................................................... 24
2.2.2. Lệnh using ............................................................................ 25
2.2.3. Bí danh của không gian tên .................................................. 25
2.3. Quản lý ngoại lệ ................................................................................ 26
2.3.1. Cấu trúc của một ngoại lệ ..................................................... 26
2.3.2. Ném ngoại lệ ......................................................................... 27
2.3.3. Bắt ngoại lệ ........................................................................... 27
2.4. Một số lớp thông dụng ...................................................................... 29
2.4.1. List ........................................................................................ 29
2.4.2. String ..................................................................................... 30
2.4.3. StreamReader, StreamWriter ................................................ 31
2.5. Câu hỏi và bài tập ............................................................................. 33
2.6. Bài mẫu ............................................................................................. 34
iii
Chương 3: Ứng dụng Windows trong C# ...................................................... 39
3.1. Giao diện ứng dụng và các điều khiển thông dụng .......................... 39
3.1.1. Giao diện ứng dụng .............................................................. 39
3.1.2. Các điều khiển thông dụng trên Form .................................. 43
3.2. Một số hộp thoại thông dụng ............................................................ 46
3.2.1. MessageBox .......................................................................... 46
3.2.2. OpenDialog ........................................................................... 47
3.3. Menu, ToolStrip ................................................................................ 47
3.3.1. Menu ..................................................................................... 47
3.3.2. ToolStrip ............................................................................... 47
3.4. Câu hỏi và bài tập ............................................................................. 48
3.5. Bài mẫu ............................................................................................. 49
Chương 4: Quản lý dữ liệu với Microsoft SQL Server ................................ 56
4.1. Các khái niệm về cơ sở dữ liệu trong MS SQL Server .................... 56
4.1.1. Các khái niệm về cơ sở dữ liệu ............................................. 56
4.1.2. Khái niệm về cơ sở dữ liệu trong MS SQL Server .............. 57
4.2. Ngôn ngữ SQL .................................................................................. 57
4.2.1. Các câu lệnh SQL ................................................................. 58
4.2.2. Kiểu dữ liệu .......................................................................... 58
4.2.3. Toán tử .................................................................................. 60
4.2.4. Một số hàm thường dùng ...................................................... 61
4.2.5. Các câu lệnh SQL thường dùng ............................................ 62
4.3. Câu hỏi và bài tập ............................................................................. 65
4.4. Bài mẫu ............................................................................................. 65
Chương 5: Truy cập cơ sở dữ liệu với ADO.NET ......................................... 67
5.1. Mô hình kết nối và truy cập dữ liệu với ADO.NET ......................... 67
5.1.1. Mô hình kết nối và truy cập dữ liệu tổng quát ..................... 67
5.1.2. Connection ............................................................................ 68
5.1.3. Kết nối đến cơ sở dữ liệu ...................................................... 69
5.1.4. Transaction ........................................................................... 70
5.2. Mô hình truy cập dữ liệu với Command ........................................... 71
5.2.1. Command .............................................................................. 71
iv
5.2.2. DataReader ........................................................................... 72
5.3. Mô hình truy cập dữ liệu nâng cao với cơ sở dữ liệu ảo .................. 73
5.3.1. DataSet .................................................................................. 73
5.3.2. DataAdapter .......................................................................... 74
5.4. Buộc dữ liệu ...................................................................................... 75
5.4.1. Mô hình truy cập và hiển thị dữ liệu .................................... 75
5.4.2. Buộc dữ liệu .......................................................................... 76
5.5. Câu hỏi và bài tập ............................................................................. 77
5.6. Bài mẫu ............................................................................................. 78
Chương 6: Report và đóng gói ứng dụng ....................................................... 90
6.1. Report ................................................................................................ 90
6.1.1. Tổng quan về Report ............................................................ 90
6.1.2. Tiến trình xây dựng Report .................................................. 91
6.1.3. Các công cụ hỗ trợ tạo Report .............................................. 91
6.2. Đóng gói ứng dụng ........................................................................... 96
6.2.1. Lợi ích ................................................................................... 96
6.2.2. Các thành phần đưa vào gói ứng dụng ................................. 96
6.2.3. Setup Project ......................................................................... 97
6.3. Câu hỏi và bài tập ............................................................................. 97
6.4. Bài mẫu ............................................................................................. 98
TÀI LIỆU THAM KHẢO .............................................................................. 103
Trang 1
Chương 1:
Giới thiệu Microsoft .NET, cơ sở của ngôn ngữ C#
Thời lượng: 8 tiết
Mục tiêu:
- Biết được tổng quan về Microsoft .NET, kiến trúc .NET Framework,
- Hiểu được các thành phần cơ bản của C#,
- Viết được các chương trình đơn giản bằng C#.
1.1. Tổng quan Microsoft .NET
Nền tảng Microsoft .NET (.NET) cung cấp tất cả các công cụ và kỹ thuật
cần thiết để người dùng có thể xây dựng một ứng dụng trên môi trường internet.
Trong chương trình học, nền tảng .NET được mô tả đơn giản như Hình 1-1.
Trung tâm của .NET là .NET framework và môi trường phát triển (IDE -
Integrated Development Environment). Framework cung cấp những gì cần thiết,
căn bản (hạ tầng cơ sở) theo một quy ước nhất định để giúp cho việc phát triển
ứng dụng. IDE là môi trường giúp việc phát triển ứng dụng trở nên dễ dàng và
nhanh chóng. Nếu không có IDE, chúng ta cũng có thể phát triển được ứng dụng
trên .NET. Tuy nhiên, việc này rất mất thời gian. Chúng ta nên sử dụng một IDE
nào đó để phát triển ứng dụng.
Hình 1-1 Mô tả đơn giản nền tảng .NET
1.1.1. Kiến trúc .NET framework
.NET framework gồm 2 thành phần chính: khối thực thi ngôn ngữ nền
.NET Framework
Common Language Specification
Visual
Basic
C++ C# J# V
isu
a
l S
tu
d
io
.N
E
T
(ID
E
)
Trang 2
tảng (CLR - Common Language Runtime) và thư viện lớp (FCL - Framework
Class Library). CLR là nền tảng của .NET framework. CLR quản lý sự thực thi
mã lệnh và các quản lý liên quan: biên dịch, quản lý bộ nhớ, quản lý thực hiện
tiểu trình, bảo mật, Mã lệnh được thực thi trong CLR là mã lệnh được quản lý
(managed code), khác với mã lệnh không được quản lý như COM, các thành
phần dựa trên Windows API. FCL là thư viện kiểu dữ liệu (gồm các class, struct,
enum,) dành cho ứng dụng thực thi trong .NET. Tất cả các ngôn ngữ hỗ trợ
.NET framework đều sử dụng thư viện lớp dùng chung này.
Các thành phần trong CLR:
Thành phần Mô tả
Class Loader Quản lý siêu dữ liệu, khởi tạo và trình bày các lớp
MSIL to Native Compilers Chuyển từ MSIL sang mã nhị phân
Code Manager Quản lý việc thực thi
Garbage Collector Dọn rác tự động
Security Engine Bảo mật
Debug Engine Phát hiện lỗi
Type Checker Kiểm tra kiểu
Exception Manager Quản lý ngoại lệ
Thread Support Hỗ trợ các lớp, giao diện cho lập trình đa luồng
COM Marshaler Chuyển đổi thành phần COM
Base Class Library Support Hỗ trợ thư viện các lớp cơ sở
Thư viện các lớp cơ sở trong CFL:
Không gian tên Mô tả
S
y
st
em
.
Collections Danh sách (mảng) động
Configuration Cấu hình
IO Vào/ra dữ liệu
Net Kết nối mạng
Trang 3
Reflection Phản chiếu (dịch ngược)
Resources Tài nguyên (file, chuỗi, hình ảnh)
Security Bảo mật
Text Chuỗi
Threading Đa luồng
Runtime Thực thi thời gian thực
1.1.2. Biên dịch và ngôn ngữ trung gian
a) Các bước thực hiện của chương trình truyền thống:
Các ngôn ngữ trước đây (Pascal, C, C++, Visual Basic) có chương trình
dịch và và môi trường thực thi của riêng nó và một chương trình chỉ cần dịch
một lần để thực thi.
Các bước thực hiện của một chương trình truyền thống như Hình 1-2:
- Bước 1: biên dịch mã nguồn thành mã có thể thực thi.
- Bước 2: Thực thi thời gian thực mã có thể thực thi.
Hình 1-2 Các bước thực thi một chương trình truyền thống
b) Các bước thực hiện của chương trình .NET:
.NET có chương trình dịch và môi trường thực thi cho mọi máy tính đã
cài đặt .NET Framework. Một chương trình trong .NET phải được dịch hai lần
trước khi được thực thi.
Quá trình biên dịch trong .NET được thực hiện qua 2 giai giai đoạn như
Hình 1-3:
Giai đoạn 1: biên dịch mã nguồn
Bước 1: biên dịch mã nguồn thành mã MSIL (Microsoft Intermediate
Language) và siêu dữ liệu.
Giai đoạn 2: biên dịch mã MSIL
Mã
nguồn
Mã có thể
thực thi
Mã nhị
phân
Thực thi Biên dịch
Trang 4
Bước 2: từ siêu dữ liệu, CLR biên dịch mã MSIL thành mã có thể thực thi
được và thực thi thời gian thực.
Hình 1-3 Quá trình biên dịch một chương trình .NET
Các chương trình .NET được biên dịch 2 lần. Kết quả biên dịch của lần
thứ nhất chỉ ở dạng mã MSIL. Kết quả biên dịch lần thứ hai sẽ là mã máy.
Khi thực thi một chương trình .NET thì thường lần đầu chậm và lần thứ 2
sẽ tương đối nhanh. Khi thực thi lần đầu, chương trình phải được dịch sang mã
nhị phân và khi thực hiện phải lưu vào bộ nhớ cache. Điều này làm cho quá trình
thực hiện bị chậm. Khi thực hiện lần thứ hai, chương trình không cần phải dịch
lại và dữ liệu đã có trong bộ nhớ cache nên việc thực hiện tương đối nhanh.
1.2. Giới thiệu ngôn ngữ C#
Có nhiều ngôn ngữ có thể sử dụng để xây dựng ứng dụng trên môi trường
.NET. Tuy nhiên, C# là một ngôn ngữ lập trình đặc biệt, được thiết kế để xây
dựng ứng dụng trên môi trường này.
C# là một ngôn ngữ lập trình đơn giản, hiện đại, an toàn và hướng đối
tượng. Nó là ngôn ngữ mạnh nhất trong .NET, thay thế cho C++ và việc sử dụng
con trỏ dễ dàng hơn C++.
Trong C#, một bài toán là một vấn đề cần được giải quyết (Problem) và
tập hợp những gì ta làm bằng C# để giải quyết vấn đề nào đó là một giải pháp
(Solution). Để có được một giải pháp thì cần nhiều dự án (Project) cho nên giải
pháp trong C# thường có một hoặc nhiều dự án. Dự án trong C# có thể là một
chương trình đơn giản hoặc một thư viện hoặc một bộ cài đặt
1.2.1. Chương trình đầu tiên
a) Không sử dụng IDE:
- Sử dụng Notepad tạo và lưu lại với tên file là ChaoMung.CS trong ổ đĩa
D:\ với nội dung sau:
Mã
nguồn
MSIL
+
Siêu dữ liệu
Mã nhị
phân
Sử dụng CLR
Thực thi
Biên dịch
Biên dịch lần 1
Biên dịch lần 2
Trang 5
class ChaoMung
{
static void Main()
{
System.Console.Write(“Hello, World”);
System.Console.ReadKey();
}
}
- Khởi động Visual Studio Command Prompt: Start > Programs >
Microsfoft Visual Studio > Visual Studio Tools > Visual Studio Command
Prompt.
- Gõ lệnh sau để biên dịch file ChaoMung.CS.
D:\> csc /t:exe /out:chaomung.exe ChaoMung.CS
- Sau khi biên dịch thành công, thực thi file chaomung.exe ta được kết
quả:
D:\> chaomung.exe
Hello, World
Hình 1-4 Giao diện khởi động Microsoft Visual Studio 2008
Trang 6
b) Sử dụng IDE:
- Khởi động Microsoft Visual Studio:
Lưu ý: nếu là trường hợp khởi động IDE lần tiên sau khi cài thì chương
trình yêu cầu lựa chọn môi trường lập trình mặc định. Trong trường hợp này ta
nên chọn C#. Khi khởi động, chương trình có giao diện như Hình 1-4:
- Tạo mới dự án:
Chọn File > New > Project để tạo một project mới. Giao diện tạo mới
một dự án như Hình 1-5:
Hình 1-5 Giao diện tạo dự án mới trên Microsoft Visual Studio 2008
- Thêm nội dung sau vào hàm Main:
Console.WriteLine("Hello, World");
Console.ReadKey();
- Nhấn phím F6 để biên dịch.
- Nhấn phím F5 để thực thi.
- Kết quả thực thi: Dòng chữ “Hello, World” được in ra màn hình.
1.2.2. Kiểu dữ liệu, biểu thức, câu lệnh
a) Kiểu dữ liệu:
C# có 2 loại kiểu dữ liệu: kiểu giá trị và kiểu tham chiếu. Các kiểu dữ liệu
của C# được mô tả ở bảng sau:
Trang 7
Kiểu dữ liệu Mô tả
K
iể
u
g
iá
t
rị
Kiểu đơn giản
Số nguyên có dấu: sbyte, short, int, long
Số nguyên không dấu: byte, ushort, uint,
ulong
Ký tự Unicode: char
Số thực: float, double
Kiểu decimal: decimal
Kiểu logic: bool
Kiểu enum enum E {...}
Kiểu struct struct S {...}
K
iể
u
t
h
am
c
h
iế
u
Kiểu class
Kiểu cơ sở của các kiểu khác: object
Unicode: string
class C {...}
Kiểu interface interface I {...}
Kiểu mảng int[] and int[,]
Kiểu delegate delegate T D(...)
Kiểu dữ liệu số của C# được mô tả ở bảng sau:
Danh mục kiểu Số bit Kiểu Phạm vi
Có dấu 8 sbyte –128...127
16 short –32,768...32,767
32 int –2,147,483,648 ... 2,147,483,647
64 long –9,223,372,036,854,775,808 ...
9,223,372,036,854,775,807
Không dấu 8 byte 0...255
16 ushort 0...65,535
32 uint 0...4,294,967,295
64 ulong 0...18,446,744,073,709,551,615
Số thực 32 float 1.5 × 10−45 to 3.4 × 1038, 7-chữ số lẻ
64 double 5.0 × 10−324 to 1.7 × 10308, 15-chữ số lẻ
Decimal 128 decimal 1.0 × 10−28 to 7.9 × 1028, 28-chữ số lẻ
Trang 8
b) Biểu thức:
Danh mục Biểu thức Mô tả
Dành riêng x.m Truy xuất thành viên
x(...) Phương thức hoặc delegate
x[...] Truy cập mảng hoặc chỉ mục
new T(...) Tạo mới 1 đối tượng hoặc delegate
new T[...] Tạo mới mảng
typeof(T) Lấy kiểu dữ liệu
Phép một ngôi +x Phép cộng
-x Phép trừ
!x Phép phủ định
~x Phép đảo bit
++x, x++ Phép tăng 1
--x, x-- Phép giảm 1
(T)x Ép (chuyển) kiểu
Phép nhân x * y Phép nhân
x / y Phép chia
x % y Phép chia lấy dư
Phép thêm x + y Phép cộng, nối chuỗi, thêm delegate
x – y Phép trừ, loại bỏ delegate
Dịch bit x << y Dịch trái
x >> y Dịch phải
Phép so sánh x < y Bé hơn
x > y Lớn hơn
x <= y Bé hơn bằng
x >= y Bé hơn bằng
x is T trả về true nếu x là kiểu T, false
trong trường hợp ngược lại
x as T Trả về x là kiểu T, hoặc null nếu x
không có kiểu là T
So sánh bằng x == y Bằng
Trang 9
x != y Không bằng
Phép AND bit x & y AND 2 số nguyên hoặc 2 giá trị logic
Phép XOR bit x ^ y XOR 2 số nguyên hoặc 2 giá trị logic
Phép OR bit x | y OR 2 số nguyên hoặc 2 giá trị logic
Phép AND x && y Điều kiện AND
Phép OR x || y Điều kiện OR
Phép điều kiện x ? y : z Phép toán 3 ngôi
Phép gán x = y Phép gán
x op= y Nối phép toán với phép gán. op có thể là:
*= /= %= += -= >= &=
^= |=
c) Câu lệnh:
Các câu lệnh trong C#:
Câu lệnh Ví dụ
Khai báo biến
địa phương
static void Main() {
int a;
int b = 2, c = 3;
a = 1;
Console.WriteLine(a + b + c);
// In ra man hinh
}
Khai báo
hằng địa
phương
static void Main() {
const float pi = 3.1415927f;
const int r = 25;
Console.WriteLine(pi * r * r);
}
Các câu lệnh,
biểu thức
static void Main() {
int i;
i = 123;
Console.WriteLine(i);
i++;
Console.WriteLine(i);
}
Lệnh if static void Main(string[] args) {
if (args.Length == 0) {
Console.WriteLine("Không đối số");
}
else {
Console.WriteLine("1 hoặc n đối s