[Programming in C#] Bài 2: Các biến và các kiểu dữ liệu trong C#

1. Biến (variable)
- Định nghĩa: biến là một vùng nhớ được đặt tên, biến được sử dụng để lưu trữ dữ liệu trong chương trình.
- Các đặc trưng của biến:

  • Kiểu dữ liệu của biến (trong đó kiểu dữ liệu phản ánh loại thông tin mà biến lưu trữ) (data type).
  • Tên biến (name).
  • Giá trị của biến (value).
  • Địa chỉ của biến (address).

2. Sử dụng biến trong C#
- Để khai báo biến trong C# chúng ta sử dụng cú pháp:
[kiểu dữ liệu biến] [tên biến];
VD: để khai báo một biến lưu trữ một số nguyên
int count;
- Để gán giá trị cho biến chúng sử dụng cú pháp:
[tên biến] = [biểu thức];
VD1: để giá trị -5 cho biến count ở trên.
count = 5;
VD2: để gán giá trị của biểu thức count*5 + 1 cho biến count.
count = count*5+1;
- Để sử dụng giá trị của biến thì chúng ta sử dụng thông qua tên biến.
Để in giá trị của biến count lên màn hình, sử dụng lệnh:
Console.WriteLine(count);
Hoặc
Console.WriteLine(“Count = {0}”,count);
Hoặc
Console.WriteLine(“Count = “ + count);

- Khởi tạo giá trị cho biến: int count = -5;
- Khai báo các biến có cùng kiểu dữ liệu:
Cú pháp:
[kiểu dữ liệu] [tên biến 1], [tên biến 2], [tên biến 3], …. , [tên biến n];
VD: khai báo 3 biến để lưu trữ các hằng số a,b,c trong PT bậc 2: ax^2 + bx + c = 0.
float a, b, c;
- Gán cùng một giá trị cho nhiều biến (đa gán):
Để gán một giá trị cho nhiều biến chúng ta sử dụng cú pháp:
[tên biến 1] = [tên biến 2] = … = [tên biến n] = [giá trị];
VD: gán giá trị 1 cho 3 biến a,b,c.
a = b = c = 1;

3. Các bước tạo một ứng dụng với Visual Studio .NET 2005
- Mở Visual Studio .NET 2005.
- Vào menu File -> New -> Project hoặc nhấn Ctrl + Shift + N để mở cửa sổ New Project.
- Chọn ngôn ngữ lập trình Visual C# ở mục Project Types.
- Chọn Console Application trong mục Templates.
- Đặt tên Project (thường là tên của ứng dụng) trong mục Name.
- Chỉ ra vị trí lưu trữ Project trong mục Location.
- Chỉ ra tên của giải pháp trong mục Solution Name. Một Solution là một giải pháp cho toàn bộ một tổ chức. Một Solution có thể bao gồm nhiều dự án. VD: chúng ta được yêu cầu xây dựng một hệ thống quản lý cho doanh nghiệp A nào đó. Để thực hiện giải pháp này thì chúng ta sẽ xây dựng các phần mềm: Quản lý nhân sự, quản lý khách hàng, quản lý sản phẩm, quản lý kho…. Mỗi phần mềm này là một Project. Như vậy một Solution bao gồm 1 hoặc nhiều Project.

4. Các kiểu dữ liệu trong C#
- Kiểu dữ liệu là một cách để phân loại các thông tin, dữ liệu được sử dụng trong ứng dụng.
- C# chia các kiểu dữ liệu ra làm 2 loại chính:
o Value Types (các kiểu dữ liệu giá trị): là các kiểu dữ liệu mà lưu trữ các giá trị thông tin thực tế. VD: giá trị -1, giá trị 0.45, giá trị ‘C’, giá trị “Hello World”….
Một số kiểu dữ liệu giá trị cơ bản:

Kiểu dữ liệu liệt kê (enum).
Kiểu dữ liệu cấu trúc (struct).
- Reference Types (các kiểu dữ liệu tham chiếu): là các kiểu dữ liệu mà lưu trữ địa chỉ nhớ của các biến khác.
Các kiểu dữ liệu tham chiếu:

  • object: kiểu dữ liệu này là kiểu dữ liệu cơ sở của tất cả các kiểu dữ liệu trong C#.
  • string: kiểu dữ liệu chuỗi kí tự.
  • class: kiểu dữ liệu class.
  • delegate: kiểu dữ liệu chuyển giao.
  • interface: kiểu dữ liệu giao tiếp.
  • array: kiểu dữ liệu mảng.

5. Các quy ước, quy tắc đặt tên biến trong C#
- Tên biến trong C# phân biệt chữ hoa, chữ thường (case sentitive).
- Tên biến chỉ có thể bắt đầu với kí tự hoặc dấu _ (underline) chứ ko thể bắt đầu bởi chữ số. VD: tên biến 1abc là sai.
- Tên biến ko được phép chứa các kí tự đặc biệt như: #, %, ^, &, *…
- Tên biến trong C# ko được phép trùng với các từ khóa. VD: tên biến static là sai.
Nếu muốn tên biến trùng với từ khóa thì chúng ta phải thêm dấu @ ở đằng trước.
VD: tên biến @static là được.
int @static;
- CHÚ Ý riêng:

  • Thường tên biến nên tuân theo quy ước Camel Case. Nghĩa là: từ đầu tiên trong tên biến thì viết chữ thường hoàn toàn, chữ cái đầu tiên của các từ tiếp theo trong tên biến nên viết hoa.
    • VD: khai biến để lưu dữ tổng số tiền chiết khấu. decimal totalDiscount;
  • Tên biến nên phản ánh ý nghĩa mà nó được sử dụng.


6. Chú thích trong C#
- Định nghĩa: chú thích là những dòng văn bản được sử dụng để bổ xung thêm ý nghĩa cho các đoạn code để làm cho các đoạn code dễ đọc, dễ hiểu hơn. Các dòng chú thích sẽ được bỏ qua bởi trình biên dịch (Compiler).
- Có 3 loại chú thích trong C#:

  • Chú thích trên một dòng:
Chú thích trên một dòng sử dụng cú pháp:
// nội dung chú thích.
VD:
int a, b, c;
// Tính delta
float delta = b*b-4*a*c;
  • Chú thích trên nhiều dòng:
Sử dụng cặp kí tự:
/*
Nội dung chú thích
*/
VD:
/*
Đây là hàm chính của chương trình
Hàm này được thực hiện đầu tiên khi chương trình chạy.
*/
static void Main(string[] args)
{
int count = -5;

float a, b, c;

decimal @static = 9;

Console.WriteLine("@Static = {0}", @static);

Console.ReadLine();
}
  • Chú thích XML: chú thích XML được sử dụng để làm tài liệu cho các đoạn code trong chương trình. Chú thích XML bắt đầu bởi 3 dấu /.
VD:
/// <summary>
/// Hàm xác định một số có phải là số nguyên tố hay ko.
/// </summary>
/// <param name="n">Số nguyên cần kiểm tra</param>
/// <returns>Giá trị trả về cho biết số có là số nguyên tố ko. True nếu có và false nếu ko</returns>
public static bool IsPrime (int n)
{
for (int i = 2; i <= Math.Sqrt(n); i++)
if (n % i == 0)
return false;
return true;
}

7. Các hằng số (constant) và các hằng chữ (Literals)
- Định nghĩa: hằng số là những giá trị ko thay đổi trong chương trình.
- Để khai báo hằng số trong C# chúng ta sử dụng từ khóa const
VD: khai báo một hằng số PI với giá trị của PI là 3.14.
const float PI = 3.14f;
- Hằng chữ (Literal): hằng chữ sử dụng để chỉ ra giá trị cụ thể của các kiểu dữ liệu tương ứng.
VD: một số hằng chữ sau
-5 (hằng chữ chỉ ra giá trị nguyên âm 5).
8.3f (hằng chữ chỉ ra giá trị số thực float).
8.7m (hằng chữ chỉ ra giá trị số thực decimal).
19.3d (hằng chữ chỉ ra số thực double).
‘C’ (hằng chữ chỉ ra giá trị kí tự).
true (hằng chữ chỉ ra giá trị logic bool).
“Hello” (hằng chữ chỉ ra giá trị chuỗi kí tự).

[Programming in C#] Bài 1: Giới thiệu tổng quan về C#

1. Những hạn chế của các ngôn ngữ lập trình C/C++
- Khó khăn cho những người bắt đầu học lập trình.
- Không thể kiểm tra hoạt động của code cho đến tận lúc code đã được biên dịch.
- Khó khăn trong việc gỡ lỗi bởi có rất ít các công cụ gỡ lỗi và đa số là đắt.
- Thời gian phát triển ứng dụng với các ngôn ngữ này là lâu.
- Kết nối với CSDL phức tạp.
- Các khó khăn trong việc chỉnh sửa dữ liệu.
- Khó khăn trong việc thực hiện.
- Không có bất kì một framework.

2. Cơ bản về .NET Framework
- NET Framework là một thành phần cơ bản của Windows cho việc xây dựng và chạy các ứng dụng viết bởi các ngôn ngữ lập trình mới (ứng dụng thế hệ kế tiếp).
- NET Framework được thiết kế để:

  • Cung cấp một môi trường nhất quán cho lập trình hướng đối tượng.
  • Tối ưu hóa việc phát triển phần mềm và sự xung đột phiên bản bằng việc cung cấp một môi trường thực hiện code.
  • Cung cấp môi trường thực thi code an toàn hơn.
  • Cung cấp trải nghiệm (experience) nhất quán cho những người phát triển trong việc tạo ra các kiểu ứng dụng khác nhau từ các ứng dụng trên nền tảng Windows, các ứng dụng trên nền tảng Web cho đến các ứng dụng trên nền tảng thiết bị di động, các ứng dụng nhúng…


3. Các thành phần của .NET Framework

NET Framework bao gồm 2 thành phần chính:
- CLR (Common Language Runtime – Môi trường quản lý ngôn ngữ chung): đây là thành phần cốt lỗi (xương sống – backbone) của NET Framework thực hiện các chức năng sau:

  • Quản lý bộ nhớ.
  • Thực hiện code.
  • Xử lý lỗi.
  • Xác nhận sự an toàn của code.
  • Thu gom rác.

- Framework Class Library (FCL): là một tập hợp các kiểu dữ liệu có khả năng sử dụng lại (tập hợp các lớp) và hướng đối tượng hoàn toàn, được sử dụng để phát triển các ứng dụng từ những ứng dụng dòng lệnh truyền thống cho đến những ứng dụng với giao diện đồ họa.

4. Các tính năng cơ bản của ngôn ngữ lập trình C#

- C# là một ngôn ngữ lập trình hướng đối tượng thuần túy (pure object oriented programming).
- Kiểm tra an toàn kiểu.
- Thu gom rác tự động: giảm bớt gánh nặng cho người lập trình viên trong việc phải viết các đoạn code thực hiện cấp phát và giải phóng bộ nhớ.
- Hỗ trợ các chuẩn hóa được ra bởi tổ chức ECMA (European Computer Manufactures Association).
- Hỗ trợ các phương thức và các kiểu phổ quát (chung).

5. Các ứng dụng của C#
C# có thể sử dụng để viết các kiểu ứng dụng khác nhau:
- Các ứng game.
- Các ứng dụng cho doanh nghiệp.
- Các ứng dụng cho thiết bị di động: PC Pocket, PDA , cell phone.
- Các ứng dụng quản lý đơn giản: ứng dụng quản lý thư viện, quản lý thông tin cá nhân…
- Các ứng dụng phân tán phức tạp trải rộng qua nhiều thành phố, đất nước.

6. Các lợi ích của C#
- Cross Language Support: hỗ trợ khả năng chuyển đổi dễ dàng giữa các ngôn ngữ.
- Hỗ trợ các giao thức Internet chung.
- Triển khai đơn giản.
- Hỗ trợ tài liệu XML: các chú thích XML có thể được thêm vào các đoạn code và sau đó có thể được chiết xuất để làm tài liệu cho các đoạn code để cho phép các lập trình viên khi sử dụng biết được ý nghĩa của các đoạn code đã viết.

6. Môi trường phát triển tích hợp Visual Studio .NET 2005
- VS 2005 là một tập hợp các công cụ phát triển cho việc xây dựng các ứng dụng desktop với hiệu năng cao, các ứng dụng cho thiết bị di động, các dịch vụ Web, các ứng dụng Web. Ngoài ra VS 2005 cũng được sử dụng để làm đơn giản hóa quá trình phát triển nhóm, triển khai cài đặt các ứng dụng enterprise.
- VS 2005 cung cấp các lợi ích mở rộng cho việc phát triển các ứng dụng:

  • Nâng cao tính sản phẩm.
  • Phát triển các ứng dụng cho NET Framework 2.0.
  • Phát triển các ứng dụng cho các thiết bị cầm tay với .NET Framework Compact 2.0.

7. Các phiên bản của VS 2005
- Phiên bản Express: đây là phiên bản miễn phí và phù hợp với các cá nhân, tổ chức sử dụng với mục đích nghiên cứu.
- Phiên bản Standard: phiên bản này có nhiều tính năng hơn so với phiên bản Express và với giá thành thấp, phù hợp với các tổ chức nhỏ.
- Phiên bản Professional: phiên bản này có đầy đủ tất cả các tính năng tuy nhiên hỗ trợ số lượng người dùng hạn chế phù hợp với các tổ chức vừa.
- Phiên bản Team System: đây là phiên bản có đầy đủ tính năng nhất và hỗ trợ tối đa cho việc phát triển ứng dụng nhóm, có giá thành cao nhất.

Tách Emails từ một chuối

public string[] ExtractEmails(string str)
{
    string RegexPattern = @"\b[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}\b";

    // Find matches
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, RegexPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string[] MatchList = new string[matches.Count];

    // add each match
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.ToString();
        c++;
    }

    return MatchList;
}

 

 

Tách URLs từ một chuỗi

public string[] ExtractURLs(string str)
{
    // match.Groups["name"].Value - URL Name
    // match.Groups["url"].Value - URI
    string RegexPattern = @"<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>"

    // Find matches.
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, RegexPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string[] MatchList = new string[matches.Count];

    // Report on each match.
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.Groups["url"].Value;
        c++;
    }

    return MatchList;
}

Remove HTML Tags

 

public string StripHTML(string str)
{
    return System.Text.RegularExpressions.Regex.Replace(str, @"<(.|\n)*?>", string.Empty);
}