Đọc tiếp "Lệnh break và continue trong C++"
The post Lệnh break và continue trong C++ appeared first on Sửa Máy Nhanh.
]]>Trong c# break
dùng để ngắt vòng lặp (for
, while
, do-while
) hoặc câu lệnh switch-case
. Trong trường hợp vòng lặp lồng nhau thì nó chỉ ngắt vòng lặp bên trong nhất.
1
|
break ; |
Chúng ta hãy xem một ví dụ đơn giản về câu lệnh break được sử dụng bên trong vòng lặp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { Console.WriteLine( "Vong lap khong co break" ); for ( int i = 1; i <= 5; i++) { Console.WriteLine( "Gia tri i = " + i); }; Console.WriteLine( "Vong lap co break" ); for ( int i = 1; i <= 5; i++) { if (i == 3) { break ; } Console.WriteLine( "Gia tri i = " + i); }; Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Chúng ta cùng xem tiếp câu lệnh break bên trong vòng lặp lồng nhau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { for ( int i = 1; i <= 5; i++) { Console.WriteLine( "Vong lap thu i = " + i); for ( int j = 1; j <= 5; j++) { if (j == 3) { break ; } Console.WriteLine( " Gia tri j = " + j); }; Console.WriteLine( "\n" ); }; Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Câu lệnh continue
trong c# được sử dụng để tiếp tục vòng lặp.Trong trường hợp vòng lặp lồng nhau, nó chỉ tiếp tục vòng lặp bên trong nhất.
1
|
continue ; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { for ( int i = 1; i <= 5; i++) { if (i == 3) { continue ; } Console.WriteLine( "Gia tri i = " + i); } Console.ReadKey(); } } } |
Ở ví dụ trên khi gặp câu lệnh continue
, nó sẽ không thực thi đoạn code phía sau bên trong vòng lặp và tiếp tục vòng lặp tiếp theo.
Kết quả sau khi thực thi đoạn code trên:
Chúng ta cùng xem tiếp ví dụ về continue
trong vòng lặp lồng nhau.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { for ( int i = 1; i <= 3; i++) { Console.WriteLine( "Vong lap thu i = " + i); for ( int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { continue ; } Console.WriteLine( " gia tri i = " + i + ", j = " + j); } Console.WriteLine( "\n" ); } Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Mình cùng so sánh điểm giống và khác nhau giữa 2 câu lệnh break
và continue
như sau:
Giống nhau
break
và continue
trong c# được cung cấp để thay đổi luồng chạy bình thường của chương trình.Khác nhau
break | continue |
Câu lệnh break có thể xuất hiện trong cả câu lệnh switch và vòng lặp (for , while , do-while ). |
Câu lệnh continue chỉ xuất hiện ở vòng lặp (for , while , do-while ) |
Câu lệnh break dùng để thoát khỏi vòng lặp |
Câu lệnh continue dùng để bỏ qua vòng lặp hiện tại và đi tiếp vòng lặp tiếp theo |
Câu lệnh break gây ra sự kết thúc sớm của vòng lặp |
Câu lệnh continue gây ra sự thực thi sớm của vòng lặp tiếp theo |
Như vậy là mình đã cùng tìm hiểu xong 2 câu lệnh thường hay sử dụng trong c# đó là break
và continue
. Chúng ta chỉ cần nhớ đơn giản là break
dùng để thoát khỏi vòng lặp, còn continue
dùng để bỏ qua vòng lặp hiện tại và đi đến vòng lặp tiếp theo.
Cám ơn các bạn đã đọc bài viết.
Theo: freetuts.net
The post Lệnh break và continue trong C++ appeared first on Sửa Máy Nhanh.
]]>The post Hàm trong c# appeared first on Sửa Máy Nhanh.
]]>Vậy cách sử dụng hàm (function) trong c# như thế nào? Có bao nhiêu cách để truyền tham số vào hàm? Chúng ta cùng tìm hiểu trong nội dung tiếp theo.
Hàm (function
) trong C# dùng để thực thi một khối lệnh nào đó.
1
2
3
4
5
|
<Quyền truy cập> <Kiểu trả về> Tên hàm (<Tham số>) { // Thân hàm // Giá trị trả về; } |
Trong đó:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System; namespace ConsoleApp2 { class Program { void print() { Console.WriteLine( "------muc dich ham chi in chu ra man hinh khong can tham so va kieu tra ve-----" ); } static void Main( string [] args) { Console.WriteLine( "Goi ham print:" ); Program p = new Program(); p.print(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code kết:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System; namespace ConsoleApp2 { class Program { void print( string name) { Console.WriteLine( "---------------Xin chao: " + name + "---------------------" ); } static void Main( string [] args) { Console.WriteLine( "Goi ham print:" ); Program p = new Program(); p.print( "Viet Tut" ); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System; namespace ConsoleApp2 { class Program { string print( string name) { return "-------------Xin chao: " + name + "--------------" ; } static void Main( string [] args) { Console.WriteLine( "Goi ham print:" ); Program p = new Program(); string name = p.print( "Viet Tut" ); Console.WriteLine(name); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy là chúng ta đã cùng tìm hiểu về hàm là gì, ví dụ một số loại hàm. Phần tiếp theo mình cùng tìm hiểu một phần quan trong đó là cách gọi hàm có tham số.
Trong c# có 3 cách gọi hàm đó là gọi bằng giá trị (call by value), gọi bằng tham chiếu (call by Reference) và dùng tham số out
.
Trong C#, gọi bằng giá trị tức là tham số truyền vào là bản sao của giá trị gốc, vì vậy dù cho bên trong thân hàm có thay đổi giá trị của tham số truyền vào thì sau khi kết thúc gọi hàm thì giá trị gốc vẫn không thay đổi.
Trong ví dụ sau, chúng ta truyền tham số giá trị khi gọi hàm:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System; namespace ConsoleApp2 { class Program { public void Print( int val) { val += val; Console.WriteLine( "Gia tri ben trong ham: " + val); } static void Main( string [] args) { int val = 100; Program p = new Program(); Console.WriteLine( "Gia tri truoc khi goi ham: " + val); p.Print(val); Console.WriteLine( "Gia tri sau khi goi ham: " + val); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
C # cung cấp một từ khóa ref
để truyền đối số dưới dạng tham chiếu. Tức là tham số truyền vào bằng địa chỉ ô nhớ của biến gốc vì vậy bên trong thân hàm thay đổi giá trị tham số truyền vào thì giá trị gốc cũng thay đổi theo..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System; namespace ConsoleApp2 { class Program { public void Print( ref int val) { val += val; Console.WriteLine( "Gia tri ben trong ham: " + val); } static void Main( string [] args) { int val = 100; Program p = new Program(); Console.WriteLine( "Gia tri truoc khi goi ham: " + val); p.Print( ref val); Console.WriteLine( "Gia tri sau khi goi ham: " + val); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Tham số out giống như kiểu tham chiếu, ngoại trừ việc nó không yêu cầu biến khởi tạo trước khi truyền.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System; namespace ConsoleApp2 { class Program { public void Print( out int val) { int val1 = 100; val = val1; Console.WriteLine( "Gia tri ben trong ham: " + val); } static void Main( string [] args) { int val = 20; ; Program p = new Program(); Console.WriteLine( "Gia tri truoc khi goi ham: " + val); p.Print( out val); Console.WriteLine( "Gia tri sau khi goi ham: " + val); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy mình chỉ cần phân biệt ref
và out
như sau:
ref
out
out
.
The post Hàm trong c# appeared first on Sửa Máy Nhanh.
]]>The post Mảng trong C# appeared first on Sửa Máy Nhanh.
]]>Mảng (array) trong c# là tập hợp các phần tử cùng kiểu được sắp xếp liền kề nhau trong bộ nhớ.
Từ hình trên ta có thể hình dung rõ hơn về mảng trong c#. Nó là tập các phần tử liền kề nhau trong bộ nhớ và được đánh theo chỉ số (index) từ 0 đến số phần tử mảng – 1.
Muốn truy xuất đến phần tử nào đó chỉ cần gọi tên hàm và truyền vào index. Ví dụ array[0] truy xuất đến phần tử đầu tiên, array[1] truy xuất đến phần tử thứ 2…
Trong c# có 3 loại mảng, đó là:
1
|
int [] arr = new int [10]; |
Chúng ta hãy xem một ví dụ đơn giản về mảng trong C#, ở đây chúng ta sẽ khai báo, khởi tạo giá trị và duyệt qua từng phần tử của mảng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { int [] arr = new int [5]; //tạo mảng arr[0] = 5; // khỏi tạo giá trị cho phần tử thứ nhất arr[2] = 10; arr[4] = 3; // Duyệt qua từng phần tử mảng for ( int i = 0; i < arr.Length; i++) { Console.WriteLine( "Gia tri phan tu thu " + (i + 1) + " = " + arr[i]); } Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Có 3 cách để khởi tạo mảng cùng lúc với khai báo
1
|
int [] arr = new int [5]{ 2, 3, 1, 4, 3}; |
Chúng ta có thể bỏ qua kích thước của mảng.
1
|
int [] arr = new int []{ 2, 3, 1, 4, 3}; |
Chúng ta cũng có thể bỏ qua toán tử new.
1
|
int [] arr = { 2, 3, 1, 4, 3}; |
Mảng đa chiều còn được gọi là mảng hình chữ nhật trong C#. Nó có thể là hai chiều hoặc ba chiều. Dữ liệu được lưu trữ dưới dạng bảng (cột * hàng) còn được gọi là ma trận.
Để tạo mảng đa chiều, chúng ta cần sử dụng dấu phẩy bên trong dấu ngoặc vuông. Ví dụ:
1
2
|
int [,] arr= new int [2,2]; //Khai bao mang 2 chieu int [,,] arr= new int [2,2,2]; //Khai bao mang 3 chieu |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
using System; namespace ConsoleApp2 { class Program { static void Main( string [] args) { int [,] arr = new int [3, 3]; //khai bao mang 2 chieu arr[0, 1] = 2; //khoi tao gia tri arr[1, 2] = 3; arr[2, 0] = 4; //Duyet qua tung phan tu mang for ( int i = 0; i < 3; i++) { for ( int j = 0; j < 3; j++) { Console.Write(arr[i, j] + " " ); } Console.WriteLine(); } Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Có 3 cách để khởi tạo mảng đa chiều cùng lúc với khai báo
1
|
int [,] arr = new int [3,3]= { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; |
Chúng ta có thể bỏ qua kích thước mảng
1
|
int [,] arr = new int [,]= { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; |
Chúng ta cũng có thể bỏ qua toán tử new
1
|
int [,] arr = { { 1, 1, 1 }, { 2, 2, 2 }, {3, 3, 3 } }; |
Trong C#, Jagged Array
còn được gọi là “mảng mảng” vì các phần tử của nó là mảng. Kích thước phần tử của Jagged Array
có thể khác nhau.
Chúng ta hãy xem một ví dụ để khai báo Jagged Array
có hai phần tử
1
|
int [][] arr = new int [2][]; |
jagged array
Chúng ta sẽ khởi tạo giá trị các phần tử của mảng trên như sau:
Cách 1:
1
2
|
arr[0] = new int [3]; arr[1] = new int [4]; |
Cách 2:
arr[0] = new int[3] { 2, 3, 5 }; arr[1] = new int[4] {23, 5, 7, 9 };
Cách 3:
1
2
|
arr[0] = new int [] { 2, 3, 5 }; arr[1] = new int [] { 23, 5, 7, 9 }; |
1
2
3
4
5
|
int [][] arr = new int [3][]{ new int [] { 3, 4, 6, 8, 10}, new int [] { 2, 4, 9, 7, 10, 5, 11 }, new int [] { 2 } }; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
using System; namespace ConsoleApp3 { class Program { static void Main( string [] args) { int [][] arr = new int [2][]; // Khai bao mang arr[0] = new int [] { 3, 4, 5, 1, 4 }; // khoi tao gia tri cho mang arr[1] = new int [] { 1, 2, 3, 5, 7, 9 }; for ( int i = 0; i < arr.Length; i++) { Console.WriteLine( "Gia tri phan tu thu " + (i + 1)); for ( int j = 0; j < arr[i].Length; j++) { System.Console.Write(arr[i][j] + " " ); } System.Console.WriteLine(); } Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy là chúng ta đã tìm hiểu xong về mảng trong c#. Trong c# có 3 loại mảng đó là mảng một chiều (Single Dimensional Array), mảng đa chiều (Multidimensional Array), mảng của mảng (Jagged Array). Trong đó mảng đa chiều (Multidimensional Array) và mảng của mảng (Jagged Array) ít khi sử dụng vì vậy chúng ta chỉ cần nắm rõ cấu trúc, cách khai báo và khởi tạo của mảng một chiều (Single Dimensional Array) là đủ rồi nhé.
Cám ơn các bạn đã đọc bài viết. Chúc các bạn vận dụng tốt.
Theo:freetuts.net
The post Mảng trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Lớp và đối tượng trong C#"
The post Lớp và đối tượng trong C# appeared first on Sửa Máy Nhanh.
]]>Chúng ta sẽ cùng tìm hiểu lớp (class) và đối tượng (object) trong C# như thế nào nhé.
Đối tượng (object) là một thực thể trong thế giới thực, ví dụ như cái bàn, cây viết, điện thoại, chiếc xe hơi ….
Đối tượng (object) là một thực thể có trạng thái và hành vi. Ở đây, trạng thái có nghĩa là dữ liệu và hành vi có nghĩa là phương thức.
Đối tượng (object) là một thực thể runtime, vì nó được tạo ra trong thời gian chương trình chạy. Đối tượng là một thể hiện của một lớp. Tất cả các thành viên của lớp có thể được truy cập thông qua đối tượng
Để tạo đối tượng chúng ta sử dụng từ khóa new
People p1 = new People();
Trong ví dụ trên, People là kiểu dữ liệu và p1 là biến tham chiếu đến thể hiện của lớp People. Từ khóa new được cấp phát bộ nhớ trong thời gian chạy (runtime).
Trong C#, lớp (class) là một nhóm các đối tượng tương tự nhau. Nó là một khuôn mẫu mà từ đó các đối tượng được tạo ra. Nó có thể có các trường, phương thức, hàm xây dựng, hàm hủy…
Ví dụ sau có lớp con người có trạng thái là tên, tuổi, CMND và có hành vi là nói, viết.
1
2
3
4
5
6
7
8
|
public class People { string name; int old; string Id; private void speak() {}; private void write() {}; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
using System; namespace ConsoleApp3 { public class People { public int id; public String name; public int old; public People( int id, String name, int old) { this .id = id; this .name = name; this .old = old; } public void Show() { Console.WriteLine( "Id = " + id + ", Name = " + name + ", old = " + old); } } class Test { public static void Main( string [] args) { People p1 = new People(12, "Nguyen Van A" , 20); People p2 = new People(18, "Nguyen Van B" , 21); p1.Show(); p2.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy ở ví dụ trên chỉ có 1 hàm xây dựng có tham số. Vì vậy chúng ta chỉ có 1 cách duy nhất để tạo đối tượng là truyền vào đủ 3 tham số theo thứ tự kiểu dữ liệu là int, string, int. Những cách tạo đối tượng sau đây là không được phép:
Như vậy qua bài học này chúng ta có cái nhìn tổng quát về đối tượng và lớp trong c# là gì rồi.Cám ơn các bạn đã đọc bài viết.
Theo:freetuts.net
The post Lớp và đối tượng trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Hàm xây dựng và hàm hủy trong c#"
The post Hàm xây dựng và hàm hủy trong c# appeared first on Sửa Máy Nhanh.
]]>Trong C#, constructor là một phương thức đặc biệt được gọi tự động tại thời điểm đối tượng được tạo ra.
Mục đích của hàm xây dựng dùng để khởi tạo dữ liệu cho dữ liệu thành viên.
Constructor phải trùng tên với tên lớp và không có kiểu trả về kể cả kiểu void.
Trong c# có 2 loại hàm xây dựng đó là
Một constructor không có đối số được gọi là constructor mặc định. Nó được gọi tại thời điểm tạo đối tượng.
Nếu bạn không cung cấp hàm tạo cho lớp của mình, C# sẽ tạo một hàm theo mặc định để khởi tạo đối tượng và đặt các biến thành viên thành các giá trị mặc định tùy thuộc vào kiểu dữ liệu của nó.
Mình sẽ liệt kê giá trị mặc định của một số kiểu dữ liệu hay sử dụng sau:
Kiểu dữ liệu | Giá trị mặc định |
bool | false |
float | 0.0F |
int | 0 |
byte | 0 |
decimal | 0M |
long | 0L |
char | ‘\0’ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; namespace ConsoleApp1 { class People { int old; string name; double height; public People() { Console.WriteLine( "Goi ham xay dung mac nhien" ); Console.WriteLine( "Name" + name); Console.WriteLine( "Old: " + old); Console.WriteLine( "height: " + height); } } class Program { static void Main( string [] args) { People p = new People(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Lưu ý: nếu chúng ta không tạo bất kỳ hàm xây dựng nào thì chương trình sẽ tự tạo cho chúng ta hàm xây dựng mặc nhiên. Chúng ta chỉ có 1 cách duy nhất để khởi tạo đối tượng.
Một constructor có tham số được gọi là hàm xây dựng có tham số.
Nó được sử dụng để cung cấp các giá trị khác nhau cho các đối tượng riêng biệt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
using System; namespace ConsoleApp1 { class People { int old; string name; double height; public People() { Console.WriteLine( "\n---Goi ham xay dung mac nhien---" ); } public People( int old, string name, double height) { Console.WriteLine( "\n---Goi ham xay dung co 3 tham so---" ); this .old = old; this .name = name; this .height = height; } public People( int old, string name) { Console.WriteLine( "\n---Goi ham xay dung co 2 tham so---" ); this .old = old; this .name = name; } public void Show() { Console.WriteLine( "Old: " + old + ",\nName: " + name + ",\nHeight: " + height); } } class Program { static void Main( string [] args) { People p = new People(); p.Show(); People p1 = new People(20, "Nguyen Van A" , 180); p1.Show(); People p2 = new People(18, "Nguyen Van A" ); p2.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy nếu chúng ta định nghĩa bao nhiêu hàm xây dựng, thì chúng ta chỉ có bao nhiêu cách khởi tạo đối tượng. Ở ví dụ trên, chúng ta chỉ định nghĩa 3 hàm xây dựng, vậy nên chúng ta chỉ có 3 cách khởi tạo đối tượng.
Một hàm hủy hoạt động ngược lại với hàm tạo, Nó phá hủy các đối tượng của các lớp. Nó chỉ có thể được định nghĩa một lần trong một lớp. Giống như các hàm xây dựng, hàm hủy được gọi tự động.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System; namespace ConsoleApp1 { class People { public People() { Console.WriteLine( "\n---Goi ham xay dung mac nhien---" ); } ~People() { Console.WriteLine( "\n---Goi ham huy---" ); } } class Program { static void Main( string [] args) { People p = new People(); Console.ReadKey(); } } } |
Điểm lưu ý:
Destructor được gọi là ngầm định bởi trình thu thập Rác .NET framework và do đó, chúng ta không cần quan tâm đến hàm hủy này làm gì..
Như vậy là chúng ta đã cùng tìm hiểu xong về hàm xây dựng và hàm hủy trong c# là gì rồi.
Chúc các bạn hiểu và vận dụng tốt.
Theo:freetuts.net
The post Hàm xây dựng và hàm hủy trong c# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Tìm hiểu từ khóa this và static trong c#"
The post Tìm hiểu từ khóa this và static trong c# appeared first on Sửa Máy Nhanh.
]]>Trước khi tìm hiểu về từ khóa this
là gì, chúng ta xem ví dụ sau đây, giả sử chúng ta cho tham số của hàm xây dựng cùng tên với dữ liệu thành viên của lớp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
using System; namespace ConsoleApp1 { class People { int old; string name; double height; public People( int old, string name, double height) { Console.WriteLine( "\n---Goi ham xay dung co 3 tham so---" ); old = old; name = name; height = height; } public void Show() { Console.WriteLine( "Old: " + old + ",\nName: " + name + ",\nHeight: " + height); } } class Program { static void Main( string [] args) { People p1 = new People(20, "Nguyen Van A" , 180); p1.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Từ kết quả trên chúng ta thấy kết quả không như chúng ta mong đợi (đáng lẻ kết quả phải là old = 20, name = Nguyen Van A, height = 180).
Như vậy khi tên tham số trùng với tên của dữ liệu thành viên của lớp, thì chương trình không hiểu nó là dữ liệu thành viên mà nó hiểu đây là tham số truyền vào.
Trong c# có từ khóa this
giúp chúng ta giải quyết khó khăn trên
Chúng ta sẽ thay đổi đoạn code trên như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
using System; namespace ConsoleApp1 { class People { int old; string name; double height; public People( int old, string name, double height) { Console.WriteLine( "\n---Goi ham xay dung co 3 tham so---" ); this .old = old; this .name = name; this .height = height; } public void Show() { Console.WriteLine( "Old: " + old + ",\nName: " + name + ",\nHeight: " + height); } } class Program { static void Main( string [] args) { People p1 = new People(20, "Nguyen Van A" , 180); p1.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy chúng ta hiểu từ khóa this
trong c# một cách đơn giản như sạu:
Từ khóa this
trong c# được sử dụng để tham chiếu đến thể hiện (instance) hiện tại của lớp. Nó cũng được sử dụng để phân biệt giữa các tham số phương thức và các dữ liệu thành viên của lớp nếu cả hai đều có cùng tên.
Trước khi tìm hiểu về từ khóa static
trong c# là gì, chúng ta cùng xem ví dụ sau đây, giả sử chúng ta có lớp People (People đang đề cập ở đây là người Việt Nam) có thuộc tính quốc tịch (nationality).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
using System; namespace ConsoleApp1 { class People { int id; string name; string nationality; public People( int id, string name, string nationality) { this .id = id; this .name = name; this .nationality = nationality; } public void Show() { Console.WriteLine( "Id: " + id + ",\nName: " + name + ",\nationality: " + nationality); } } class Program { static void Main( string [] args) { People p1 = new People(1, "Nguyen Van A" , "Viet Nam" ); People p2 = new People(2, "Nguyen Van B" , "Viet Nam" ); People p3 = new People(3, "Nguyen Van C" , "Viet Nam" ); Console.ReadKey(); } } } |
Như vậy, mỗi lần tạo đối tượng sẽ cấp 3 vùng nhớ cho mỗi đối tượng đó là id, name, nationality. Lớp chúng ta đang xét là lớp người Việt Nam, thì tất cả đối tượng được tạo ra cùng chung giá trị là Việt Nam. Nếu có 100 đối tượng hoặc 10000 đối tượng được khởi tạo thì tốn 100 hoặc 10000 biến nationality được tạo ra.
Từ khóa static
trong C# giúp giải quyết vấn đề lãng phí bộ nhớ nói trên
Static ở đây là thuộc về lớp, không thuộc về thể hiện của lớp nữa. Vì vậy khi khởi tạo đối tượng thì biến static
không được khởi tạo theo đối tượng.
Trong C#, static
có thể là field, method, constructor, class, properties, operator và event. Trong nội dung bài này chúng ta chỉ cùng tìm hiểu về 2 loại static đó là static field
và static class
.
Một trường được khai báo có từ khóa static trước tên trường, được gọi là trường tĩnh (static field). Không giống như trường bình thường của đối tượng là nhận bộ nhớ mỗi lần bạn tạo đối tượng, chỉ có một bản sao của trường tĩnh được tạo trong bộ nhớ. Nó được chia sẻ cho tất cả các đối tượng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System; namespace ConsoleApp1 { class People { int id; string name; static string nationality = "Viet Nam" ; public People( int id, string name) { this .id = id; this .name = name; } public void Show() { Console.WriteLine( "Id: " + id + ",\nName: " + name + ",\nationality: " + nationality + "\n\n" ); } } class Program { static void Main( string [] args) { People p1 = new People(1, "Nguyen Van A" ); p1.Show(); People p2 = new People(2, "Nguyen Van B" ); p2.Show(); People p3 = new People(3, "Nguyen Van C" ); p3.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Do trường tĩnh là thuộc về lớp, nên muốn truy xuất hay thay đổi giá trị của trường tĩnh chúng ta không cần phải khởi tạo đối tượng. Chỉ cần lấy tên lớp chấm tên trường static.
Ví dụ sau đây, chúng ta thay đổi giá trị của biến static
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
using System; namespace ConsoleApp1 { class People { int id; string name; public static string nationality = "Viet Nam" ; public People( int id, string name) { this .id = id; this .name = name; } public void Show() { Console.WriteLine( "Id: " + id + ",\nName: " + name + ",\nationality: " + nationality + "\n" ); } } class Program { static void Main( string [] args) { People p1 = new People(1, "Nguyen Van A" ); p1.Show(); People p2 = new People(2, "Nguyen Van B" ); p2.Show(); People p3 = new People(3, "Nguyen Van C" ); Console.WriteLine( "\n-------------Thay doi quoc tich----------------------\n" ); People.nationality = "thay doi quoc tich" ; p3.Show(); People p4 = new People(4, "Nguyen Van D" ); p4.Show(); People p5 = new People(5, "Nguyen Van E" ); p5.Show(); Console.WriteLine( "\n-------------hien thi gia tri cua 2 doi tuong p1 va p2----------------------\n" ); p1.Show(); p2.Show(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
static class
cũng giống như lớp khác, tuy nhiên nó không có thể hiện. Nghĩa là chúng ta không tạo được đối tượng từ static class.
Một số điểm cần lưu ý:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
using System; namespace ConsoleApp1 { public static class MyMath { public static float PI = 3.14f; public static int squared( int n) { return n * n; } } class Program { static void Main( string [] args) { int squared; float pi = MyMath.PI; squared = MyMath.squared(10); Console.WriteLine( "squared: " + squared); Console.WriteLine( "\nPI: " + pi); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Như vậy chúng ta đã cùng tìm hiểu về 2 từ khóa khá quan trọng trong c# đó là this và static.
Chúc các bạn vận dụng tốt.
Theo:freetuts.net
The post Tìm hiểu từ khóa this và static trong c# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Tính thừa kế trong C#"
The post Tính thừa kế trong C# appeared first on Sửa Máy Nhanh.
]]>Trong bài học hôm nay chúng ta sẽ cùng tìm hiểu về tính thừa kế (inheritance) trong C# là gì? Và sẽ có những ví dụ để làm rõ tính thừa kế trong C# cho các bạn dễ hiểu
Trong C#, thừa kế là một quá trình trong đó một đối tượng có được tất cả các thuộc tính và hành vi của đối tượng cha của nó một cách tự động. Theo cách đó, chúng ta có thể sử dụng lại, mở rộng hoặc sửa đổi các thuộc tính và hành vi đã được định nghĩa trong một lớp khác.
Trong C#, lớp kế thừa các thành viên của lớp khác được gọi là lớp dẫn xuất (derived) và lớp có các thành viên được kế thừa được gọi là lớp cơ sở (base). Lớp dẫn xuất là lớp chuyên biệt cho lớp cơ sở.
1
2
3
|
derived_class : base_class { } |
Ưu điểm của thừa kế là có thể sử dụng lại các thành viên của lớp cha mà không cần phải định nghĩa lại thành viên lần nữa. Vì vậy, chương trình chúng ta sẽ ít code hơn.
Trong c# có nhiều loại thừa kế được hỗ trợ như thừa kế đơn (Single Inheritance), thừa kế đa cấp độ (Single Inheritance), thừa kế phân cấp (Hierarchical Inheritance). Chúng ta cùng tìm hiểu từng loại thừa kế một nhé.
Single Inheritance
nghĩa là một lớp chỉ kế thừa từ một lớp cha. Như hình dưới đây:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; namespace ConsoleApp1 { public class NhanVien { public long luong = 2000000000; } public class KeToan: NhanVien { public long tienThuong = 5000000; } class Program { public static void Main( string [] args) { KeToan kt = new KeToan(); Console.WriteLine( "Luong: " + kt.luong); Console.WriteLine( "Tien Thuong: " + kt.tienThuong); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Multilevel Inheritance
nghĩa là một lớp kế thừa từ một lớp cha, mà lớp cha đó lại kế thừa từ một lớp khác. Như hình dưới đây:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
using System; namespace ConsoleApp1 { public class DongVat { public string mauSac; public string tiengKeu; } public class Cho : DongVat { public void TiengKeu() { tiengKeu = "gau gau" ; Console.WriteLine( "Con cho keu: " + tiengKeu); } } public class ChoCon : Cho { public void TiengKeuChoCon() { TiengKeu(); tiengKeu = "e e" ; Console.WriteLine( "Con cho con keu: " + tiengKeu); } } class Program { public static void Main( string [] args) { ChoCon cc = new ChoCon(); cc.TiengKeuChoCon(); Console.ReadKey(); } } } |
Như vậy lớp con không chỉ có tất cả thuộc tính và hành vi của lớp cha trực tiếp của nó mà nó còn thừa kế tất cả thuộc tính và hành vi của lớp cha của lớp cha ở trên nữa. Giống như con không những thừa kế tài sản từ cha mà còn từ ông nội, ông cố, ông sơ…
Hierarchical Inheritance
nghĩa là một lớp có nhiều lớp con hay nói cách khác là có nhiều lớp cùng thừa kế từ một lớp cha. Như hình dưới đây:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
using System; namespace ConsoleApp1 { public class NhanVien { public long luong = 20000000000; } public class KeToan : NhanVien { public long hoaHong = 200000; } public class LapTrinhVien : NhanVien { public long hoaHong = 500000; } public class QuanTriVien : NhanVien { public long hoaHong = 800000; } class Program { public static void Main( string [] args) { KeToan kt = new KeToan(); Console.WriteLine( "Luong ke toan: " + kt.luong); Console.WriteLine( "Hoa hong ke toan: " + kt.hoaHong); LapTrinhVien ltv = new LapTrinhVien(); Console.WriteLine( "\nLuong lap trinh vien: " + ltv.luong); Console.WriteLine( "Hoa hong lap trinh vien: " + ltv.hoaHong); QuanTriVien qtv = new QuanTriVien(); Console.WriteLine( "\nLuong quan tri Vien: " + qtv.luong); Console.WriteLine( "Hoa hong quan tri vien: " + qtv.hoaHong); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Ngoài ra còn có loại thừa kế như đa thừa kế (Multiple Inheritance) và thừa kế hổn hợp (Hybrid Inheritance) không được hỗ trợ trong ngôn ngữ lập trình c# (đối với lớp)
Mặc dù không được hỗ trợ trong c# chúng ta cũng nên tìm hiểu sơ nó là gì nhé
Multiple Inheritance
nghĩa là một lớp thừa kế nhiều hơn một lớp cha. C# không hỗ trợ đa kế thừa với các lớp. Trong C#, chúng ta chỉ có thể đạt được đa kế thừa thông qua giao diện (interface). Interface
là gì và làm sao để thực hiện đa thừa kế thông qua interface
chúng ta sẽ tìm hiểu trong một bài khác.
Chúng ta xem hình dưới đây:
Hybrid Inheritance
là hỗn hợp từ nhiều loại thừa kế kể trên. Vì C# không hỗ trợ đa kế thừa với các lớp, nên Hybrid Inheritance
cũng không thể thực hiện được với các lớp. Trong C#, chúng ta chỉ có thể đạt được Hybrid Inheritance
thông qua giao diện (interface)
Như hình dưới đây:
Như vậy là chúng ta đã tìm hiểu xong về tính kế thừa trong c#
Chúc các bạn hiểu và vận dụng tốt.
Theo:freetuts.net
The post Tính thừa kế trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Tìm hiểu tính đa hình trong c#"
The post Tìm hiểu tính đa hình trong c# appeared first on Sửa Máy Nhanh.
]]>Nếu chúng ta tạo hai hoặc nhiều thành viên có cùng tên nhưng khác nhau về số lượng tham số hoặc kiểu của các tham số, thì được gọi là member overloading
.
In C#, Chúng ta có thể overload: phương thức (methods), hàm xây dựng (constructors), và chỉ số của thuộc tính (indexed properties)
Ví dụ chúng ta overload hàm xây dựng
Trong bài học hôm nay chúng ta chỉ tìm hiểu về overload phương thức.
Overload phương thức nghĩa là hai hay nhiều phương thức cùng tên nhưng khác nhau về số lượng tham số hoặc kiểu dữ liệu của từng tham số.
Mục đích của việc overload phương thức là tăng cái tính dễ đọc cho chương trình vì chúng ta không cần đặt nhiều cái tên khác nhau cho cùng một hành động giống nhau. Ví dụ mục đich của hàm cộng nhưng cộng 2 số, cộng 3 số, cộng 4 số. Chúng ta không cần viết 3 phương thức với tên khác nhau mặc dù nó chỉ có một hành động là cộng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
using System; namespace ConsoleApp1 { class PhepTinh { public int Cong( int a, int b) { Console.WriteLine( "Cong(" + a + ", " + b + ") --Goi phuong thuc Cong(int a, int b)" ); return a + b; } public int Cong( int a, int b, int c) { Console.WriteLine( "Cong(" + a + ", " + b + ", " + c + ") --Goi phuong thuc Cong(int a, int b, int c)" ); return a + b + c; } public float Cong( float a, float b) { Console.WriteLine( "Cong(" + a + ", " + b + ") --Goi phuong thuc Cong(float a, float b)" ); return a + b; } public float Cong( int a, float b) { Console.WriteLine( "Cong(" + a + ", " + b + ") --Goi phuong thuc Cong(int a, float b)" ); return a + b; } } class Program { public static void Main( string [] args) { PhepTinh p = new PhepTinh(); p.Cong(1, 2); p.Cong(1, 2, 3); p.Cong(1.2f, 1.2f); p.Cong(2, 1.2f); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Nếu lớp dẫn xuất (hay còn gọi là lớp con) định nghĩa cùng một phương thức như được định nghĩa trong lớp cơ sở (hay còn gọi là lớp cha) của nó, thì nó được gọi là phương thức ghi đè (method overriding) trong C#
Để thực hiện ghi đè phương thức trong C#, chúng ta cần sử dụng từ khóa virtual với phương thức ở lớp cơ sở (lớp cha) và từ khóa override với phương thức ở lớp dẫn xuất (lớp con).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System; namespace ConsoleApp1 { class DongVat { public virtual void keu() { Console.WriteLine( "dong vat keu" ); } } class Cho : DongVat { public override void keu() { base .keu(); Console.WriteLine( "cho keu gau gau" ); } } class Program { public static void Main( string [] args) { Cho c = new Cho(); c.keu(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Ở ví dụ trên chúng ta thấy có từ khóa base. Vậy từ khóa base để làm gì?
Trong C#, từ khóa base được sử dụng để truy cập các trường, hàm xây dựng và phương thức của lớp cơ sở.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using System; namespace ConsoleApp1 { class DongVat { public string mauLong = "mau trang" ; } class Cho : DongVat { public string mauLong = "mau vang" ; public void HienThiMauLong() { Console.WriteLine( "Long dong vat: " + base .mauLong); Console.WriteLine( "Long cho: " + mauLong); } } class Program { public static void Main( string [] args) { Cho c = new Cho(); c.HienThiMauLong(); Console.ReadKey(); } } } |
Và kết quả sau khi thực thi đoạn code trên:
Từ đa hình (Polymorphism) mình hiểu đơn giản là có nhiều dạng. Ví dụ như Cộng nhưng cộng 2 tham số, 3 tham số, 4 tham số…
Có hai loại đa hình trong C# đó là: đa hình thời gian biên dịch (compile time) và đa hình thời gian chạy (runtime). Đa hình thời gian biên dịch (compile time) thực hiện bằng cách nạp chồng phương thức (method overloading) và nạp chồng toán tử (operator overloading) trong C#. Đa hình thời gian chạy (runtime) thực hiện bằng ghi đè phương thức (method overriding)
Đa hình thời gian biên dịch còn có cách gọi khác là đa hình tĩnh (static polymorphism), đa đình thời gian chạy còn có cách gọi khác là đa hình động (dynamic polymorphism)
Ví dụ cho overloading và overriding mình đã lấy ví dụ ở trên rồi nhé. Các bạn có thể kéo lên xem lại cho hiểu rõ hơn.
Như vậy là chúng ta đã tìm hiểu xong về tính đa hình trong c#.
Cảm ơn các bạn đã đọc bài viết này.
Theo:freetuts.net
The post Tìm hiểu tính đa hình trong c# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Cấu trúc điều khiển if – else trong C#"
The post Cấu trúc điều khiển if – else trong C# appeared first on Sửa Máy Nhanh.
]]>Câu lệnh phân nhánh if - else
dựa trên một điều kiện. Điều kiện là một biểu thức sẽ được kiểm tra giá trị ngay khi bắt đầu gặp câu lệnh đó. Nếu điều kiện được kiểm tra là đúng, thì câu lệnh hay một khối các câu lệnh bên trong thân của câu lệnh if được thực hiện
Câu lệnh if cho phép ta thực hiện một lệnh hoặc khối lệnh nếu điều kiện đó đúng:
1
2
3
4
|
if (biểu thức điều kiện) { <khối lệnh sẽ thực được thực thi khi điều kiện đúng> } |
Trong đó biểu thức điều kiện là một biểu thức logic trả về kết quả true hoặc fale.
Lưu đồ hoạt động:
Lưu đồ trên hoạt động như sau: Kiểm tra biểu thức điều kiện trong if
trả về giá trị true
hay false
. Nếu true thì khối lệnh trong if
sẽ được thực thi, nếu kết quả trong biểu thức điều kiện là false
thì trình biên dịch sẽ không đi vào khối lệnh trong if
và một số câu lệnh tiếp theo sẽ được thi hành.
ví dụ: Tìm số lớn hơn trong hai số nhập từ bàn phím.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { int num1, num2, max; Console.Write( "Nhap vao so thu nhat: " ); num1 = Convert.ToInt32(Console.ReadLine()); Console.Write( "Nhap vao so thu hai: " ); num2 = Convert.ToInt32(Console.ReadLine()); max = num1; if (num1 < num2) { max = num2; Console.WriteLine( "so lon nhat trong hai so la {0}" , max); } Console.WriteLine( "\nfreetuts.net chuc ban hoc tot" ); Console.ReadKey(); } } } |
Kết quả sau khi biên dịch đoạn code trên:
Trong câu điều kiện if - else
thì else
là phần tùy chọn. Các câu lệnh bên trong thân của else
chỉ được thực hiện khi điều kiện của if
là sai. Do vậy khi câu lệnh đầy đủ if - else
được dùng thì chỉ có một trong hai if
hoặc else
được thực hiện. Ta có cú pháp câu điều kiện if - else
sau:
1
2
3
4
|
if (biểu thức điều kiện) <Khối lệnh thực hiện khi điều kiện đúng> [ else <Khối lệnh thực hiện khi điều kiện sai>] |
Nếu các câu lệnh trong thân của if
hay else
mà lớn hơn một lệnh thì các lệnh này phải được bao trong một khối lệnh, tức là phải nằm trong dấu khối { }
:
1
2
3
4
5
6
7
8
9
10
11
12
|
if (biểu thức điều kiện) { <lệnh 1> <lệnh 2> .... } [ else { <lệnh 1> <lệnh 2> ... }] |
Lưu đồ hoạt động:
Lưu đồ trên hoạt động như sau: Ở lưu đồ này tùy theo kết quả kiểm tra biểu thức điều kiện trong if
trả về mà chương trình sẽ rẽ nhán. Nếu kết quả trả về là true
thì khối lệnh trong if
sẽ được thực thi, nếu kết quả trong biểu thức điều kiện là false
thì trình biên dịch sẽ thực thi các khối lệnh trong else
.
Ta sẽ quay lại ví dụ trên nhưng sẽ không khai báo biến max
nhé.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { int num1, num2; Console.Write( "Nhap vao so thu nhat: " ); num1 = Convert.ToInt32(Console.ReadLine()); Console.Write( "Nhap vao so thu hai: " ); num2 = Convert.ToInt32(Console.ReadLine()); if (num1 < num2) Console.WriteLine( "so lon nhat trong hai so la: {0}" ,num2); else Console.WriteLine( "so lon nhat trong hai so la: {0}" ,num1); Console.WriteLine( "\nfreetuts.net chuc ban hoc tot" ); Console.ReadKey(); } } } |
và kết quả cũng sẽ không thay đổi:
Các lệnh điều kiện if có thể lồng nhau để phục vụ cho việc xử lý các câu điều kiện phức tạp. Việc này cũng thường xuyên gặp khi lập trình. Giả sử chúng ta cần viết một chương trình có yêu cầu kiểm tra xem một sinh viên có phải là sinh viên xuất sắc không dựa trên một số thông tin như sau:
Dựa trên các yêu cầu trên ta có thể dùng các lệnh if lồng nhau để thực hiện. Ví dụ sau sẽ minh họa cho việc thực hiện các yêu cầu trên.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { float dhoctap,dmin; int drenluyen; Console.Write( "\nNhap vao diem hoc tap: " ); dhoctap = Convert.ToSingle(Console.ReadLine()); Console.Write( "\nNhap vao diem thap nhat: " ); dmin = Convert.ToSingle(Console.ReadLine()); Console.Write( "\nNhap vao diem ren luyen: " ); drenluyen = Convert.ToInt32(Console.ReadLine()); if (dhoctap > 9.0) { if (drenluyen > 90) { if (dmin > 6.0) Console.WriteLine( "\nchuc mung ban da duoc sinh vien xuat sac !" ); else Console.WriteLine( "\nDiem thap nhat cua ban phai tren 6.0" ); } else Console.WriteLine( "\nDiem ren luyen cua ban phai tren 90" ); } else Console.WriteLine( "\nDiem hoc tap cua ban phai tren 9.0" ); Console.WriteLine( "\nfreetuts.net chuc ban hoc tot" ); Console.ReadKey(); } } } |
Biên dịch chương trình và cho kết quả như sau:
Theo trình tự kiểm tra thì câu lệnh if đầu tiên được thực hiện, biểu thức điều kiện đúng do điểm học tập trên 9.0. Khi đó khối lệnh trong if sẽ được tiếp tục thực thi. Ở khối này lại xuất hiện một lệnh if khác để kiểm tra xem điểm rèn luyện của bạn có trên 90 điểm không. Và điều này thỏa khiến khối lệnh trong if lại được tiếp tục thực thi. Kết quả trả lại là “chuc mung ban da duoc sinh vien xuat sac !” vì câu lệnh if thứ ba cũng thỏa nốt.
Vậy là chúng ta đã tìm hiểu được lệnh if-else là gì và các dạng của nó như thế nào.Chúc các bạn học tốt.
Theo:freetuts.net
The post Cấu trúc điều khiển if – else trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Cấu trúc rẽ nhánh switch – case trong C#"
The post Cấu trúc rẽ nhánh switch – case trong C# appeared first on Sửa Máy Nhanh.
]]>switch - case
liệt kê các giá trị và chỉ thực hiện các giá trị thích hợp. Và để hiểu hơn lệnh switch - case
là gì hãy cùng mình đi đến cuối bài học hôm nay nhé.
Cấu trúc rẽ nhánh switch - case
thường sử dụng để thay thế cấu trúc if - else
khi mà có quá nhiều phương án có thể xảy ra, ví dụ như nhập vào điểm của một học sinh và cho biết học lực của học sinh đó. Giả sử chúng ta có 5 loại học lực đó là: yếu, trung bình, khá, giỏi, xuất sắc. Vậy điều này có nghĩa là chúng ta sẽ có 5 câu lệnh if đơn giản hoặc là nhiều câu lệnh if - else
lồng vào nhau. Điều này gây nên độ phức tạp, rối ren và dài dòng của một chương trình. Vậy ở đây chúng ta có thể dùng câu lệnh switch - case
để khắc phục tình trạng này.
Cú pháp của một lệnh switch - case
như sau:
1
2
3
4
5
6
7
8
|
switch (biểu thức điều kiện) { case <giá trị>: <câu lệnh thực hiện> <lệnh nhảy> [ default : <các câu lệnh được thực hiện mặc định> ] } |
Vậy lệnh switch - case
hoạt động như thế nào ? Các bạn hãy quan sát sơ đồ sau:
Dạng 1 là cấu trúc switch - case
có sử dụng từ khóa default
, còn dạng 2 thì không.
Khi gặp lệnh thoát break
thì chương trình thoát khỏi switch - case
và thực hiện lệnh tiếp sau khối switch - case
đó.
Nếu không có trường hợp nào thích hợp và trong câu lệnh switch - case
có dùng câu lệnh defalut
thì các câu lệnh của trường hợp default
sẽ được thực hiện. Ta có thể dùng default
để cảnh báo một lỗi hay xử lý một trường hợp ngoài tất cả các trường hợp case
trong switch
.
Khi sử dụng switch - case
có khả năng trả về một giá trị cho nhiều trường hợp.
Ví dụ sau sẽ minh họa về việc sử dụng câu lệnh switch - case
:
Hãy nhập một trong ba màu: red, yellow, pink từ bàn phím sau đó xuất ra màng hình màu sắc yêu thích của bạn, nếu không có một trong ba màu trên thì xuất ra màn hình màu bạn thích không phải là đỏ, vàng và hồng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { Console.WriteLine( "\nnhap vao mau sac yeu thich cua ban !!!" ); string color = Console.ReadLine(); switch (color) { case "red" : Console.WriteLine( "ban thich mau do" ); break ; case "yellow" : Console.WriteLine( "ban thich mau vang" ); break ; case "pink" : Console.WriteLine( "ban thic mau hong" ); break ; default : Console.WriteLine( "mau ban thich khong phai la mau do, mau vang va mau hong" ); break ; } Console.WriteLine( "\nfreetuts chuc ban hoc tot !!!" ); Console.ReadKey(); } } } |
Khi biên dịch sẽ cho kết quả:
Khi bạn nhập vào blue thì kết quả sẽ là:
Ví dụ về một giá trị trả về cho nhiều trường hợp trong switch - case
:
Nhập vào tháng xuất ra màn hình nó là mùa xuân, hạ, thu hoặc đông. Tháng phải bé hơn 12.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { Console.WriteLine( "nhap vao thang can kiem tra" ); int x = Convert.ToInt32(Console.ReadLine()); switch (x) { case 1: case 2: case 3: Console.WriteLine( "thang {0} la mua xuan" , x); break ; case 4: case 5: case 6: Console.WriteLine( "thang {0} la mua ha" , x); break ; case 7: case 8: case 9: Console.WriteLine( "thang {0} la mua thu" , x); break ; case 10: case 11: case 12: Console.WriteLine( "thang {0} la mua dong" , x); break ; default : Console.WriteLine( "thang ban nhap khong hop le" ); break ; } Console.WriteLine( "\nfreetuts chuc ban hoc tot !!!" ); Console.ReadKey(); } } } |
Ví dụ khi ta nhập vào tháng 5:
Ví dụ nhập vào số tháng lớn hơn 12:
Vậy các bạn đã hiểu hơn về cấu trúc rẽ nhánh switch – case chưa ? Mình xin dừng bài học tại đây. Chúc các bạn học tốt.
Theo:freetuts.net
The post Cấu trúc rẽ nhánh switch – case trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Vòng lặp for trong C#"
The post Vòng lặp for trong C# appeared first on Sửa Máy Nhanh.
]]>Tong = 1+2+3+4+5+...+10
. Vậy nếu ta muốn tính tổng từ 1 đến 20.000 thì sao ? Rõ ràng là ta không thể ngồi bấm từ 1 đến 20.000 được. Vì thế vòng lặp ra đời để giải quyết những vấn đề tương tự.
Trong C# có nhiều cấu trúc lặp:
for
.while
.do - while
.foreach
.Hôm nay chúng ta sẽ cùng tìm hiểu cấu trúc vòng lặp for
và những bài tập cơ bản áp dụng vòng lặp này nhé !!!
Sử dụng vòng lặp for
cho chúng ta biết trước số lần lặp của lệnh hoặc khối lệnh. Ta hoàn toàn xác định được số lần lặp lại của lệnh hay đoạn lệnh trong phần thân của vòng lặp. Vì thế đây là một vòng lặp được sử dụng khá linh hoạt và thường xuyên trong các ngôn ngữ lập trình nói chung và C# nói riêng.
Cú pháp sử dụng vòng lặp for
như sau:
1
2
3
4
|
for ([ phần khởi tạo] ; [biểu thức điều kiện]; [bước lặp]) { <Câu lệnh thực hiện> } |
Trong đó:
true
hoặc fasle
, nếu chúng ta bỏ trống thì kết quả của biểu thức điều kiện được hiểu là true
.Lưu ý:
Vòng đời của một vòng lặp for được chạy như sau:
Một ví dụ nhỏ dùng vòng lặp for
:
Hãy tính tổng từ 1 đến 5 bằng cách dùng vòng lặp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { int tong = 0; for ( int i = 1 ;i<=5;i++ ) tong += i; Console.WriteLine( "\n\ntong cac so tu 1 den 5 la {0}" , tong); Console.ReadKey(); } } } |
Biên dịch và chạy chương trình sẽ cho kết quả:
Giải thích:
i = 1
, biến i <=5
nên thực hiện cộng tong = tong +i;
i = 2
vài<=5
nên vẫn thực hiện tong = tong + i;
tong = tong +i;
tong
ra màng hình với câu lệnh Console.WriteLine();
Cho bài toán: in dãy số từ 0 đến 50 ra màn hình console.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { for ( int i = 0; i <= 50; i++) Console.Write(i+ " " ); Console.ReadKey(); } } } |
Biên dịch chương trình sẽ cho kết quả:
Vì nó hoạt động khá đơn giản nên mình sẽ không giải thích nhé.
Ở ví dụ sau đây mình sẽ cho các bạn sử dụng hai vòng lặp for lồng với nhau. Hãy xem có gì thú vị nhé:
In ra màn hình ma trận gồm 9 dòng và mỗi dòng bắt đầu từ 0 đến 9:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { for ( int i = 0; i <= 9; i++) { for ( int j = 0; j <= 9; j++) Console.Write(j+ " " ); Console.WriteLine( "\n" ); } Console.ReadKey(); } } } |
Biên dịch chương trình ta được:
mình xin giải thích nhé:
i = 0
và i<=9
nên sẽ sang bước 2.j = 0
và in ra giá trị của biến j.i = 10
thì kết thúc và thoát khỏi cả hai vòng lặp.Vòng lặp for rất quan trọng trong lập trình nói chung và C# nói riêng. Các bạn cố gắng luyện tập và nắm vững cấu trúc cũng như cách sử dụng nhé. Mình xin đưa ra một số bài tập cơ bản để các bạn có thể luyện tập. Chúc các bạn học tốt.
Theo:freetuts.net
The post Vòng lặp for trong C# appeared first on Sửa Máy Nhanh.
]]>Đọc tiếp "Vòng lặp while trong C#"
The post Vòng lặp while trong C# appeared first on Sửa Máy Nhanh.
]]>while
sẽ giúp chúng ta giải quyết vấn đề này.
Vậy vòng lặp while là gì ? Nó có cấu trúc như thế nào ? Sử dụng nó ra làm sao ? Chúng ta hãy cùng tìm hiểu nhé !
Như đã nói ở phần mở đầu thì đối với vòng lặp while
chúng ta không xác định trước được số lần lặp của lệnh hoặc khối lệnh trong thân vòng lặp. Khi sử dụng vòng lặp while
thì điều kiện lặp sẽ được kiểm tra trước khi chúng ta thực thi các lệnh trong thân vòng lặp.
Cú pháp sử dụng vòng lặp while
như sau:
1
2
|
while (biểu thức điều kiện) <Câu lệnh thực hiện> |
Trong đó:
true
hoặc false
while
có nhiều câu lệnh được thực hiện thì phải để nó trong khối lệnh { }
.Cách thức hoạt động:
Đầu tiên mời các bạn xem sơ đồ sau rồi mình sẽ giải thích.
Trước tiên, vòng lặp while
sẽ thực hiện xác định giá trị của biểu thức điều kiện. Nếu biểu thức điều kiện trả về giá trị true
thì các lệnh, khối lệnh trong thân vòng lặp sẽ được thực hiện. Sau đó nó lại quay về kiểm tra điều kiện lặp có đúng hay không. Nếu điều kiện lặp trả về giá trị false
thì các lệnh sẽ không được thực hiện và bỏ qua vòng lặp để đi đến lệnh tiếp theo trong chương trình.
Có một số lưu ý nhỏ khi bạn sử dụng vòng lặp while
đó là:
true
.false
từ biểu thức điều kiện và kết thúc vòng lặp. Nếu trong thân vòng lặp không có lệnh làm thay đổi giá trị biểu thức thì ta cần có từ khóa break
để thoát khỏi vòng lặp. (Mình sẽ nói sau về từ khóa này nhé Ta sẽ quay trở lại vấn đề đã đặt ra ở phần mở đầu nhé. Đó là nhập vào một số nguyên dương lớn hơn 10, nếu sai thì thông báo và nhập lại, nếu đúng thì xuất số ấy ra màn hình.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace freetuts.net { class freetuts { static void Main( string [] args) { Console.WriteLine( "\nnhap vao so tu nhien lon hon 10 " ); int x = Convert.ToInt16(Console.ReadLine()); while (x<10) { Console.WriteLine( "\nxin loi {0} < 10 ban oi!!! nhap lai giup minh nhe ahihi" , x ); x = Convert.ToInt16(Console.ReadLine()); } Console.WriteLine( "\nso ban vua nhap la: " + x); Console.WriteLine( "\nfreetuts chuc ban hoc tot !!!" ); Console.ReadKey(); } } } |
Khi biên dịch và nhập một số thử nghiệm ta có kết quả như sau:
Quá trình nó chạy như sau:
x = 1
thì ta thấy x < 10
nên lệnh trong vòng lặp thực hiện và yêu cầu bạn nhập lại.x = 2
ta thấy đều thỏa x < 10
nên lệnh trong vòng lặp lại tiếp tục được thực thi.x = 3
ta thấy đều thỏa x < 10
nên lệnh trong vòng lặp lại tiếp tục được thực thi.x = 4
ta thấy đều thỏa x < 10
nên lệnh trong vòng lặp lại tiếp tục được thực thi.<strong>x = 5</strong>
ta thấy đều thỏa x < 10
nên lệnh trong vòng lặp lại tiếp tục được thực thi.x = 20
thì ta thấy không thỏa điều kiện lặp vì x > 10
sau sẽ thoát khỏi vòng lặp và xuất giá trị x ra màn hình.Vậy mình đã cùng các bạn tìm hiểu thêm về một cấu trúc lặp, các bạn đã hiểu hơn về vòng lặp while trong C#
chưa nhỉ ? Các bạn hãy luyện tập tập nhiều nhé. Cảm ơn các bạn đã theo dõi bài viết này.
Theo:freetuts.net
The post Vòng lặp while trong C# appeared first on Sửa Máy Nhanh.
]]>