You are on page 1of 14

- Cú pháp trong C# : Căn lề code ctrl + K +D, Comment ctrl + K + C

 In ra màn hình Console.WriteLine("Hello world from C#");


 Tạo Biến : var i =10, int i = 10, thì kiểu này là var thì nó sẽ ktra xem
I gán bằng cái gì thì nó kiểu dạng lưu động
 Tạo hằng : const int a =1000;
 Số nguyên int
 Số thực float
 Boolean bool
 Ký tự Char
 Ký tự đặc biệt :
\’: dấu nháy đơn

\”: dấu nháy kép

\\: dấu backslash (dùng trong đường dẫn)

\0: Null

\a: cảnh báo (alert)

\b: xóa lùi (backspace)

\n: dòng mới

\r: quay về đầu dòng

\t: dấu tab ngang

\v: dấu tab dọc

 Đổi từ một int sang string : var a = 123123;  var strA =


a.ToString();
 Biểu thức int z = (x > y) ? x : y; như sau: so sánh x và y; nếu x lớn hơn y thì biểu
thức có giá trị bằng x; ngược lại, biểu thức sẽ có giá trị bằng y.
 C# sử dụng phép toán is để kiểm tra kiểu của một giá trị (object). Hãy thực hiện
một vài ví dụ trên C# interactive:
 > object o1 = "Hello world";
 > o1 is string
 true
 > o1 is int
 False

 Cách để lấy kiểu dữ liệu của 1 biến :


var stringType = "Helllo C# hihi".GetType();
Console.WriteLine(stringType);

 Nhập vào, thu dữ liệu input = Console.ReadLine();


 Ép kiểu string input = Console.ReadLine()
 Ép kiểu bằng Parse :
Console.Write("Enter an integer: ");

string input = Console.ReadLine(); // đọc vào một chuỗi chữ số

int i = int.Parse(input); // biến đổi input thành int

Console.Write("Enter true or false: ");

input = Console.ReadLine(); // đọc chuỗi "true" hoặc "false"

bool b = bool.Parse(input); // biến đổi chuỗi thành bool

Console.Write("Enter a double: ");

input = Console.ReadLine(); // đọc vào một chuỗi chữ số

double d = double.Parse(input); // biến đổi input thành int

 In ra chuỗi vs Place holder(giống python)

int x1 = 123, x2 = 456;

Console.WriteLine("Nghiệm thứ nhất: {0}, Nghiệm thứ hai: {1}", x1, x2);

 In ra chuối vs  string interpolation(bắt đầu bằng ký tự $)

int x1 = 123, x2 = 456;

Console.WriteLine($"Nghiệm thứ nhất: {x1}, Nghiệm thứ hai: {x2}");


 Điều chỉnh số thập phân theo Precision specifier

 > Console.WriteLine($"The value: {value:c3}");

 The value: $500.000

 > Console.WriteLine($"The value: {value:c4}");

 The value: $500.0000

 Lớp System.Console:

 Write(), WriteLine(): in thông tin ra console

 Read(), ReadLine(), ReadKey(): đọc thông tin từ console

 Beep(): phát tiếng bíp ra loa

 BackgroundColor: đặt màu nền cho văn bản

 ForegroundColor: đặt màu văn bản

 Title: Đặt tiêu đề cho cửa sổ console

 Clear(): xóa nội dung của console

 BufferWidth/BufferHeight: đặt kích thước buffer cho console

 WindowWidth/WindowHeight: đặt kích thước của console

 WindowTop/WindowLeft: đặt vị trí của console

 Các cấu trúc điều khiển trong C#:


 Cấu trúc điều kiện (rẽ nhánh) trong C#: if-
else, switch-case:
if(temperature < 5)

Console.WriteLine("Lạnh quá!");

else if(temperature <= 15)

Console.WriteLine("Mát mẻ, dễ chịu!");

else if(temperature <= 15)

Console.WriteLine("Ấm áp!");

else

Console.WriteLine("Nóng quá!");

 Cấu trúc rẽ nhiều nhánh switch-case:


 switch(expression)
 {
 case <value1>
 // code block
 break;
 case <value2>
 // code block
 break;
 case <valueN>
 // code block
 break;
 default
 // code block
 break;
 }

 Cấu trúc lặp trong C#:

- Cấu trúc while : Chừng nào biểu thức logic còn nhận giá trị true
thì danh sách lệnh sẽ được thực hiện. Cấu trúc này sẽ luôn kiểm
tra biểu thức logic trước, sau đó mới thực hiện danh sách lệnh.

 var i = 0;
 while(i < 10)
 {
 Console.Write($"{i}\t");
 i++;
 }

- Cấu trúc do_while: Thực hiện danh sách lệnh rồi mới kiểm tra
giá trị của biểu thức logic. Nếu biểu thức logic vẫn nhận giá trị
true, danh sách lệnh sẽ lại được thực hiện. Cấu trúc do-while khác
biệt với while ở chỗ, danh sách lệnh sẽ được thực hiện trước, sau
đó mới kiểm tra giá trị của biểu thức logic. Do đó, khi sử dụng cấu
trúc do-while, danh sách lệnh luôn luôn thực hiện ít nhất một lần.
 i = 0;
 do
 {
 Console.Write($"{i}\t");
 i++;
 } while (i < 10);

- Cấu trúc for: Cấu trúc này sẽ thực hiện danh sách lệnh một số lần
xác định (trong khi hai cấu trúc trên không xác định được số lần
thực hiện).

 for (i = 0; i < 10; i++)

 {

 Console.Write($"{i}\t");

 }

1. Điều khiển vòng lặp: Lệnh break: phá vỡ vòng lặp. Khi gặp lệnh
break, tất cả các lệnh đứng sau break sẽ không thực hiện nữa, vòng
lặp kết thúc.
2. Lệnh continue: phá vỡ chu kỳ hiện tại của vòng lặp. Khi gặp lệnh
continue, tất cả lệnh đứng sau continue không thực hiện nữa, vòng lặp
sẽ chuyển sang chu kỳ tiếp theo.

 Mảng :

 Khởi tạo C1
- // khởi tạo mảng string với 10 phần tử

- string[] names = new string[10];

 C2
- Cách thứ hai là cung cấp sẵn danh sách phần tử cho biến mảng.
o int[] numbers = new int[] {1, 2, 3, 4, 5};
 C3
- Cách thứ ba là một cấu trúc tắt có tên gọi là array initializer. Trong
cấu trúc này bạn không sử dụng được từ khóa var mà bắt buộc phải chỉ
định rõ kiểu mảng.
- int[] numbers = { 1, 2, 3, 4 };

 Truy xuất phần tử của mảng:

- // gán giá trị cho phần tử dùng phép toán indexing

- biến_mảng[chỉ_số] = giá_trị;

- // hoặc dùng phương thức SetValue theo kiểu hướng đối tượng

- biến_mảng.SetValue(giá_trị, chỉ_số);

- // đọc giá trị bằng phép toán indexing

- biến = biến_mảng[chỉ_số];

- // hoặc dùng phương thức GetValue

- biến = biến_mảng.GetValue(chỉ_số);

//ví dụ

names[0] = "Donald Trump";

names.SetValue("Donald Trump", 0);

var current_us_president = names[0];

var next_us_president = names.GetValue(0);

 Đọc metadata của mảng


Metadata  là những thông tin về bản thân mảng, như số lượng phần tử, kiểu cơ
sở, v.v.. Do mảng đều là các object thuộc kiểu System.Data, chúng ta có thể sử
dụng các thuộc tính (và phương thức) của lớp này để đọc metadata của mảng.

 Thuộc tính Length/LongLength (read-only): số phần tử của mảng


 Phương thức GetLength/GetLongLength: đọc số phần tử của mảng
 Thuộc tính Rank (read-only): số chiều của mảng. Chúng ta sẽ làm
quen với mảng nhiều chiều ngay sau đây.
 Phương thức GetType: lấy thông tin về kiểu của mảng.

Ví Dụ tổng hợp using System;

using System.Globalization;

namespace P01_SingleDimension

class Program

static void Main(string[] args)

Console.Title = "Basic Array";

// khai báo và khởi tạo mảng chứa tên 12 tháng trong tiếng Anh

string[] months = new string[12];

// duyệt qua các phần tử và gán giá trị

for (int month = 1; month <= 12; month++)


{

DateTime firstDay = new DateTime(DateTime.Now.Year, month,


1);

string name = firstDay.ToString("MMMM",


CultureInfo.CreateSpecificCulture("en"));

months[month - 1] = name;

// duyệt qua các phần tử và in giá trị ra console

foreach (string month in months)

Console.WriteLine($"-> {month}");

Console.ReadLine();

 Duyệt mảng trong C# với cấu trúc foreach:

+ , Cú pháp chung của vòng lặp foreach như sau:

foreach(data_type var_name in collection_variable)

{
// statements to be executed

}
+, Ví dụ:

> int[] integers = new int[] { 2, 4, 6, 8, 10 };

. foreach(var i in integers)

. {

. Console.Write($"{i}\t");

. }

2 4 6 8 10

>

 Mảng nhiều chiều:


o Mảng 2 chiều:

-// khai báo và khởi tạo một mảng hai chiều (3x4) của các số nguyên

int[,] numbers = new int[3, 4]

{11, 12, 13, 14 },

{21, 22, 23, 24 },

{31, 32, 33, 34 }

};
Trong ví dụ trên int[,] là kiểu mảng hai chiều trong đó các phần tử
thuộc kiểu int, numbers là biến mảng, kích thước là 3 hàng x 4 cột. Có
thể dễ dàng nhận ra cú pháp khai báo mảng đa chiều: với mỗi một
chiều bổ sung, chúng ta thêm một dấu phẩy vào giữa cặp dấu [].
numbers[0, 0] = 11; // truy xuất phần tử đầu tiên (hàng thứ nhất - chỉ số
0, cột thứ nhất - chỉ số 0)

var number34 = numbers[2, 3] = 34; // truy xuất phần tử hàng thứ 3 (chỉ số
2) và cột thứ 4 (chỉ số 3)

o Mảng 3 chiều:
Tương tự, mảng ba chiều phải dùng hai dấu phẩy để có thể ghi 3 kích
thước.

 int[,,] numbers2 = new int[2, 3, 4]

 {

 {

 {111, 112, 113, 114 },

 {121, 122, 123, 124 },

 {131, 132, 133, 134 }

 },

 {

 {211, 212, 213, 214 },

 {221, 222, 223, 224 },

 {231, 232, 233, 234 }

 },

 };
 numbers2[0, 0, 0] = 111; // truy xuất phần tử đầu tiên

 var number234 = numbers2[1, 2, 3]; // truy xuất phần tử cuối cùng


(giá trị 234)

Tổng quan mảng đa chiều trong C#


- Khai báo :
 Kiểu 1: int[] tên_biến = new int[Số_lượng_pt_trong mảng]
 Kiểu 2: string friens = new string[] {“Lan”, “hùng”,”linh”};
- int[][] numbers = new int[5][];
- numbers[0] = new int[] { 1, 2, 3 };
- numbers[2] = new int[] { 1, 2, 3, 4, 5 };
- numbers[4] = new int[] { 1, 2 };
- thì mảng trên được gọi là mảng đa chiều, số 5 đó là chỉ thị có 5
ptu trong mảng còn[] để không phía sau gọi là số phần tử con có
trong mỗi 1 ptu thì để tự do
- var value1 = numbers[0][0]; // truy xuất giá trị đầu tiên của mảng
thành viên đầu tiên
- var value2 = numbers[2][4]; // truy xuất giá trị cuối cùng của mảng
thành viên số 2

- Cách truy xuất phần tử trong mảng trên

- Mảng 2 chiều chứa mảng 2 chiều thì biểu thị ntn


- int[][,] numbers = new int[10][,];
- numbers[0] = new int[2, 3];
- numbers[1] = new int[3, 4];
- numbers[2] = new int[,] { { 1, 3, 5 }, { 2, 4, 6 } };
- Ở đây chúng ta lại khai báo mảng numbers là một mảng của các mảng
hai chiều. Nghĩa là, mỗi phần tử của nó là một mảng hai chiều mà chúng
ta phải tự khởi tạo trước khi dùng.
- Việc truy xuất phần tử của mảng này cũng theo quy tắc ở trên: chọn chỉ
số của mảng thành viên, chọn chỉ số của phần tử cụ thể trong mảng
thành viên.
- var value = numbers[2][2,2]; // truy xuất phần tử ở vị trí 2,2 của
mảng thành viên số 2
 Khi in ra thì Console.WriteLine(friens[-1]);

Chuỗi

>//Khởi tạo string từ mảng ký tự

> char[] letters = { 'H', 'e', 'l', 'l', 'o' };

. string greetings = new string(letters);

> greetings

"Hello"

>//Khởi tạo string từ một phần của mảng ký tự

> char[] letters = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l',
'd'};

> letters

char[11] { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd' }

> string greeting = new string(letters, 0, 5);

> greeting

"Hello"

>//Khởi tạo string bằng cách lặp ký tự

> string aaa = new string('a', 10);

> aaa

"aaaaaaaaaa"
>//Khởi tạo chuỗi rỗng

> string empty = string.Empty;

> empty

""

Xin nhắc lại một số vấn đề về chuỗi ký tự trong C#.

Trong chuỗi không được có mặt ký tự \ (backslash). Lý do là ký tự này được sử


dụng trong escape sequence. Ví dụ, dưới đây là một chuỗi sai (bị báo lỗi cú
pháp):

string path = "C:\Programs\Visual Studio"; // chuỗi này bị lỗi vì


chứa ký tự \.
Nếu muốn viết ký tự \ vào chuỗi, bạn phải viết nó hai lần:

string path = "C:\\Program\\Visual Studio"; // chuỗi này OK


hoặc thêm ký tự @ vào đầu chuỗi. Ký tự @ sẽ tắt chế độ diễn giải escape
sequence.

string path = @"C:\Program\Visual Studio"; // chuỗi này OK vì ký tự


@ sẽ tắt chế độ nhận diện escape sequence

You might also like