Ngôn ngữ lập trình ngơn ngữ C# - Pdf 75

Ngôn ngữ lập trình ngơn ngữ C#
I. Giới thiệu về ngơn ngữ C#
1. Một số đặc điểm của C#
Thực ra, môi trường .NET cho phép bạn viết bằng nhiều ngôn ngữ khác nhau. Các
chương trình được viết bằng các ngôn ngữ khác nhau cuối cùng đều dịch ra được cùng
một dạng là m CLR. Bạn có thể lập trình trên .NET bằng nhiều ngôn ngữ như VB
.NET, VC++ .NET hoặc cả Delphi. Tuy nhiên, trong phạm vi giáo trình này, chúng tôi
xin giới thiệu ngôn ngữ .NET do ngôn ngữ này có các đặc điểm như đơn giản, trong
sáng và gọn gàng. Sau đây là một số đặc điểm cụ thể của C#:
a. c# là ngôn ngữ đơn giản
Loại bỏ các thành phần ngôn ngữ phức tạp (như MACRO của C++), template, đa kế
thừa của Java và C++.
C# dựa trên nền tảng của ngôn ngữ C và C++ (các cú pháp và từ khóa hầu hết được kế
thừa từ C, C++). Nhưng loại bỏ đi các tốn tử v từ khĩa phức tạp.
b. c# là ngôn ngữ hiện đại
c# bao gồm đầy đủ các đặc tính của một ngôn ngữ lập trình hiện đại: Hướng đối
tượng, xử lý ngoại lệ, thu gom bộ nhớ tự động, kiểu dữ liệu mở rộng, bảo mật m nguồn.
c. c# là ngôn hướng đối tượng
c# gồm đầy đủ các đặc điểm của một ngôn ngữ hướng đối tượng, bao gồm: sự đóng
gói, sự kế thừa, tính đa hình. Các đặc điểm này giúp cho việc phát triển các ứng dụng
bằng ngôn ngữ C# trở nên bền vững hơn. Người phát triển có thể xây dựng ứng dụng
theo nhiều lớp, tạo nên một hệ thống hoàn chỉnh và khó đổ vỡ trong khoảng thời gian ít
hơn.
d. c#là ngôn ngữ ít từ khĩa
Sự phức tạp của C++ được tạo nên bởi số lượng đồ sộ các từ khóa và toán tử. Chính
điều này đa gây ra nhiều khó khăn không cần thiết cho người lập trình. C# tránh được
nhược điểm này bằng tiêu chí: Càng ít từ khóa càng tốt. Theo thống kê, C# chỉ gồm
hơn 100 từ khóa nhưng thực hiện được mọi yêu cầu từ đơn giản đến phức tạp
2. Các khi niệm trong C#
Lớp (class), đối tượng (object)
 Trong sinh học cĩ khi niệm lồi (lồi người, loài mèo...) và mỗi cá thể cụ thể trong loài (ông

tìm v l những lỗi nghim trọng cĩ thể gy đổ vỡ hoàn toàn hệ thống.
4. Kiểu gi trị(value type),kiểu tham chiếu(reference type)
Việc sử dụng vùng nhớ stack và heap của C++ rắc rối, phức tạp và dễ gây lỗi cho chương trình.
C# đưa ra những cải tiến sau:
 Chia cc kiểu biến thnh 2 kiểu: Kiểu gi trị (value type) v kiểu tham chiếu (reference type)
 Kiểu gi trị (value type) gồm
12. Kiểu cấu trc
1. Cc kiểu số nguyn (byte, int, long)
2. Các kiểu số thực dấu phẩy động (float, double)
3. Cc kiểu số thực thập phn (decimal)
4. Kiểu bool
5. Các struct do người dùng định nghĩa (nên hạn chế dùng kiểu này)
13. Kiểu liệt k (enum)
 Kiểu tham chiếu (reference type) gồm
14. Lớp (class)
15. Giao diện (interface)
16. Ủy thc (delegate)
 Kiểu gi trị l kiểu m khi thực hiện php gn, toàn bộ giá trị của vế phải được sao chép và gán
vào biến bên vế trái. Do đặc tính này, giá trị của biến value type thường nằm trong stack (khi
các biến này được khai báo trong hàm).
 Kiểu tham chiếu là kiểu mà các biến lưu dữ liệu trên heap. Các biến là tham chiếu
(reference – gần giống khái niệm con trỏ trong C & C++) đến dữ liệu trên heap. Một dữ liệu có
thể có nhiều biến tham chiếu đến. Khi thực hiện lệnh gán, phần dữ liệu trên heap không được
sao chép mà chỉ có tham chiếu đến dữ liệu này được chép sang vế trái. Khi đó, sẽ có thêm 1
biến nữa tham chiếu đến dữ liệu trên heap.
Để hiểu r hơn về kiểu giá trị và kiểu tham chiếu, hy quan st ví dụ sau:
5. Biến & Kiểu
C php khai bo biến của C# giống với c php khai bo của C++. Ch ý:
 Biến có thể được khai báo tại:
1. Trong một lớp, khi đó các biến được gọi là biến thành viên của lớp

byte Số nguyn 8 bit 0..255
short Số nguyn ngắn 16 bit -32768.. 32767
int Số nguyn 32 bit -2147483648.. 2147483647
long Số nguyn di 64 bit
float Số thực độ chính xác đơn 32 bit
double Số thực độ chính xác kép 64 bit
ushort Số nguyn ngắn khơng dấu 16 bit
uint Số nguyn khơng dấu 32 bit
ulong Số nguyn di khơng dấu 64 bit
Biến kiểu xu ký tự
Mỗi ký tự trong my tính tương ứng với một số hiệu. Một chuỗi các ký tự ghép với nhau tạo
ra một xâu ký tự (String). Nếu bạn đ quen thuộc với m ASCII của, đặt tương ứng 256 giá
trị với 256 ký tự thì xu ký tự của C# cĩ một cht khc biệt: Xu ký tự trong C# l xu ký tự
Unicode, mỗi ký tự trong xu ny cĩ thể l 1 trong hơn 60000 ký tự của tất cả các ngôn ngữ.
Do đó, vấn đề bảng m, ngơn ngữ trong C# được giải quyết triệt để từ gốc.u
String trong C# được ký hiệu trong cặp ngoặc kp, ví dụ:
string FirstWord;
string SecondWord;
FirstWord = "Hello";
SecondWord = "World";
string Greeting = FirstWord + SecondWord; // Greeting by giờ l "HelloWorld"
Greeting = FirstWord + " " + SecondWord;
Biến kiểu bool
Kiểu bool là kiểu biến cơ bản, có mặt trong hầu hết các ngôn ngữ. Biến logic (bool) chỉ
mang hai giá trị là true (đúng) và false (sai).
Biến kiểu bool thường được sử dụng với các toán tử logic (&&, ||, ^, !). Cc biểu thức so
snh trả về gi trị kiểu bool.
Biến kiểu mảng
Mảng l kiểu dữ liệu phức gồm nhiều gi trị cng kiểu sắp xếp lin tiếp nhau. Các phần tử
này được truy xuất qua chỉ số. Chú ý, chỉ số của mảng C# giống như mảng trong C và C+

// Xin 100 phần tử cho mảng A
int[] A = new int[100];
// ran: Đối tượng sinh ngẫu nhin
Random ran = new Random();
// gn gi trị ngẫu nhin cho cc phần tử của mảng A
for (i = 0; i < A.Length; i++) A[i] = ran.Next(500);
for (i = 0; i < A.Length; i++) Console.Write("{0} ", A[i]);
Console.ReadLine();
Array.Sort(A);
for (i = 0; i < A.Length; i++) Console.Write("{0} ", A[i]);
Console.ReadLine();
Để khai báo mảng nhiều chiều, ta sử dụng cú pháp tương tự. Bạn có thể quan sát ví dụ sử
dụng mảng 2 chiều dưới đây.
using System;
using System.Collections.Generic;
using System.Text;
namespace testHello {
class Program {
static void Main(string[] args) {
// M được khởi tạo l mảng 2 chiều, mỗi chiều 10 phần tử
int[,] M = new int[10, 10];
// Dng 2 vịng lặp để gn cc phần tử hng i, cột j
// Gi trị được gn l tích của i, j (gần giống bảng cửu chương)
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++) M[i, j] = i * j;
// Ghi gi trị của mảng 2 chiều ra mn hình
// Trong 2 vịng lặp lồng nhau ny, ta sử dụng cc hm
// - GetLowerBound(level) để xác định cận dưới của mảng
// - GetUpperBound(level) để xác định cận trn của mảng
// - level l lớp chỉ số, ví dụ M[i, j]

thức này không nên sử dụng khi ta đ biết số thứ tự của pt trong danh sách (khi đó nên dùng
RemoveAt).
 RemoveAt(i) : Xóa khỏi danh sách phần tử có chỉ số i (danh sách cũng giống mảng, chỉ số
bắt đầu từ 0). Phương thức này sẽ nhanh hơn Remove() vì đ biết vị trí của phần tử trong
danh sch (khơng phải duyệt cả danh sch).
 Clear() : Xóa toàn bộ các phần tử để trở thành danh sách trống (giống khi mới khởi tạo)
 Insert(i, pt) : Chèn phần tử pt vào trong danh sách tại vị trí i (các phần tử từ vị trí i trở đi sẽ
được đẩy ra lấy chỗ cho phần tử mới)
 ToArray() : Chuyển danh sch thnh dạng mảng. Nếu bạn muốn chương trình chạy thật
nhanh thì nn chuyển danh sch ra mảng (vì mảng hoạt động nhanh hơn). Danh sách tuy
chậm hơn nhưng lại có ưu điểm là dễ sử dụng, nhiều tiện ích. Do đó bạn nên có sự lựa
chọn thích hợp giữa các lựa chọn sau:
1. Sử dụng mảng để có tốc độ cao (khi xử lý tính toán)
2. Sử dụng List<> để có sự mềm dẻo
Kiểu Dictionary<>
Tốn tử
Cc tốn tử của C# giống với cc tốn tử của C v C++, bao gồm cc tốn tử một ngơi v tốn tử 2
ngơi. Trong khuơn khổ của gio trình ny, chng tơi chỉ trình by cc tốn tử đơn giản và phổ
biến nhất.
Cc tốn tử 2 ngơi
Tốn tử Giải thích Ví dụ Kết quả
* Nhn 2 * 3 6
/ Chia 6 / 2 3
+ Cộng 2 + 3 5
- Trừ 6 – 3 3
% phần dư 11 % 3 2
Cc tốn tử 1 ngơi
Tốn tử Giải thích Ví dụ Kết quả
++ Tăng 1 đơn vị a++
-- Giảm 1 đơn vị a--

Các điều kiện logic có thể được kết hợp với nhau bằng các toán tử logic
Tốn tử Mơ tả Ví dụ Kết quả
&& Cả hai toán hạng cùng đúng 2 < 3 && 4 < 5 true
|| Ít nhất một trong hai tốn hạng đúng 2 > 3 || 6 < 7 True
^ Một toán hạng đúng, 1 toán hạng sai 2 < 3 ^ 7 > 4 False
! Đảo !(3 == 3) False
Các cấu trúc điều khiển
Chương trình muốn hoạt động theo sự điều khiển không chỉ có các lệnh gán mà cịn phải
gồm các lệnh điều khiển (rẽ nhánh, lặp...). Các lệnh này cho phép chương trình hoạt động
theo một kịch bản xác định.
Cấu trc if rt gọn
if (<Điều kiện>) <Lệnh>;
Kiểm tra điều kiện (biểu thức logic)
 Điều kiện phải được đặt trong cặp ngoặc
 Điều kiện là 1 biểu thức logic
 Nếu điều kiện là đúng (true) thì thực hiện <Lệnh>
 Nếu điều kiện sai (false) thì bỏ qua, khơng thực hiện cc lệnh
 Nếu muốn thực hiện nhiều lệnh, đưa các lệnh này vào trong cùng 1 khối lệnh bắt đầu bằng
{ và kết thúc bằng }
Cấu trúc if đầy đủ
if (<Điều kiện>)
<Lệnh nếu điều kiện đúng>;
else
<Lệnh nếu điều kiện sai>;
Kiểm tra điều kiện
 Nếu điều kiện đúng, thực hiện nhánh đúng.
 Nếu điều kiện sai, thực hiện nhánh sai.
 Ch ý:
17. Nếu là lệnh đơn, kết thúc nhánh đúng phải bằng dấu chấm phẩy
18. Nếu nhánh đúng hoặc nhánh sai là nhiều lệnh, đưa chúng vào trong 1 khối chương

while (<Điều kiện>);
Khc với vịng lặp while, vịng lặp do ... while thực hiện <Lệnh lặp> trước rồi mới kiểm tra
điều kiện. Từ đặc điểm này, có thể khẳng định <Lệnh lặp> sẽ được thực hiện tối thiểu 1 lần
(kể cả trong trường hợp <Điều kiện> là sai).
Ch ý với những người quen sử dụng Pascal, vịng lặp do ... while sẽ lặp lại trong trường
hợp <Điều kiện> là đúng (phân biệt với repeat ... until của Pascal, lặp lại nếu điều kiện sai)
Vịng lặp for
for ([Lệnh khởi tạo] ; [Điều kiện kiểm tra] ; [Lệnh thay đổi])
<Lệnh lặp>;
Vịng lặp for sẽ thực hiện cc cơng việc sau đây:
 Khởi đầu vịng lặp bằng cch gọi [Lệnh khởi tạo] (thường là lệnh khởi tạo biến đếm)
 Lặp đi lặp lại các bước sau
19. Kiểm tra [Điều kiện kiểm tra], nếu sai thì thốt khỏi vịng lặp, nếu đúng thì thực hiện
tiếp cc bước tiếp sau
20. Thực hiện <Lệnh lặp>
21. Thực hiện [Lệnh thay đổi] (thường là các lệnh tăng hoặc giảm biến đếm)
Cấu trc vịng lặp for của C# giống với cấu trc for của C, khi qut hơn nhiều so với cấu trúc
for của Pascal.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status