C# – Sửa Máy Nhanh https://suamaynhanh.vn/danh-muc-phan-mem/c/ Miễn phí hướng dẫn sửa chữa, tháo lắp các thiết bị và cài đặt phần mềm. Mon, 13 Apr 2020 09:28:10 +0000 vi hourly 1 https://wordpress.org/?v=6.1.6 https://www.suamaynhanh.vn/wp-content/uploads/2018/06/cropped-cropped-cropped-ifix-logo-horiz-32x32.png C# – Sửa Máy Nhanh https://suamaynhanh.vn/danh-muc-phan-mem/c/ 32 32 Lệnh break và continue trong C++ https://www.suamaynhanh.vn/phan-mem/lenh-break-va-continue-trong-c/ https://www.suamaynhanh.vn/phan-mem/lenh-break-va-continue-trong-c/#respond Mon, 13 Apr 2020 09:28:10 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15587 1. Câu lệnh break 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ì …

The post Lệnh break và continue trong C++ appeared first on Sửa Máy Nhanh.

]]>
1. Câu lệnh break

Trong c# break dùng để ngắt vòng lặp (forwhiledo-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.

Cú pháp
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.

Ví dụ
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:

Ví dụ
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:

2. Câu lệnh continue

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.

Cú pháp
1
continue;
Ví dụ
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.

Ví dụ
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:

3. So sánh câu lệnh break và continue

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

  • Cả hai câu lệnh 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 (forwhiledo-while). Câu lệnh continue chỉ xuất hiện ở vòng lặp (forwhiledo-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

4. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/lenh-break-va-continue-trong-c/feed/ 0
Hàm trong c# https://www.suamaynhanh.vn/phan-mem/ham-trong-c/ https://www.suamaynhanh.vn/phan-mem/ham-trong-c/#respond Mon, 13 Apr 2020 09:26:01 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15586 Khi mình muốn thực thi một đoạn code nào nó nhiều lần, thay vì phải copy đi copy lại đoạn code …

The post Hàm trong c# appeared first on Sửa Máy Nhanh.

]]>
Khi mình muốn thực thi một đoạn code nào nó nhiều lần, thay vì phải copy đi copy lại đoạn code đó nhiều lần, dẫn đến chương trình chúng ta bị trùng lặp code rất nhiều, trong c# có function cho phép chúng ta thực thi đoạn code nào đó nhiều lần mà không cần phải copy lại code, mà chỉ cần gọi tên hàm.

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.

1. Hàm trong c#

Hàm (function) trong C# dùng để thực thi một khối lệnh nào đó.

Cú pháp
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 đó:

  • Tên hàm: Nó là một tên duy nhất được sử dụng để gọi hàm. Ví dụ: getValue(), Add(int a, int b)…
  • Kiểu trả về: Nó được sử dụng để chỉ rõ kiểu dữ liệu của hàm được trả về.
  • Thân hàm: Nó là khối lệnh sẽ được thực thi khi hàm được gọi.
  • Quyền truy cập: Nó được sử dụng để xác định khả năng truy cập hàm trong ứng dụng.
  • Tham số: Nó là một danh sách các tham số mà chúng ta truyền vào khi gọi hàm
Lưu ý: Kiểu trả về, quyền truy cập và tham số là không bắt buộcphải có khi định nghĩa hàm

2. Ví dụ

Hàm không có tham số và kiểu trả về

Ví dụ
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:

Hàm có tham số nhưng không có kiểu trả về

Ví dụ
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:

Hàm có tham số và có kiểu trả về

Ví dụ
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ố.

3. 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.

Gọi bằng giá trị (call by value)

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:

Ví dụ
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:

Gọi bằng tham chiếu (call by Reference)

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..

Ví dụ
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

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.

Ví dụ
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

  • Giá trị phải được khởi tạo trước
  • Bên trong thân hàm có thể đọc vào thay đổi giá trị nó
out
  • Giá trị không được khởi tạo trước và bên trong thân hàm không đọc được nó cho đến khi nó được gán giá trị
  • Hàm phải gán giá trị cho biến out trước khi trả giá trị về

4. Lời kết

Như vậy là mình đã tìm hiểu xong hàm trong c#. Trong bài này chúng ta chỉ cần nhớ một điểm cốt lõi nhất là 3 cách truyền tham số vào hàm đó là truyền bằng giá trị (call by value), truyền bằng tham chiếu (call by reference) và dùng tham số out.
Chúc các bạn vận dụng tốt. Cảm ơn các bạn đã đọc bài viết.
Theo: freetuts.net

 

The post Hàm trong c# appeared first on Sửa Máy Nhanh.

]]>
https://www.suamaynhanh.vn/phan-mem/ham-trong-c/feed/ 0
Mảng trong C# https://www.suamaynhanh.vn/phan-mem/mang-trong-c/ https://www.suamaynhanh.vn/phan-mem/mang-trong-c/#respond Mon, 13 Apr 2020 09:23:15 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15585 1. Mảng (array) trong c# 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 …

The post Mảng trong C# appeared first on Sửa Máy Nhanh.

]]>
1. Mảng (array) trong c#

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…

2. Ưu điểm và nhược điểm của mảng

Ưu điểm

  • Tối ưu hóa mã code.
  • Truy cập phần tử ngẩu nhiêu
  • Dễ dàng duyệt qua các phần tử
  • Dễ dàng thao tác đến phần tử
  • Dễ dáng sắp xếp phần tử

Nhược điểm

  • Kích thước của mảng là cố định

3. Các loại mảng

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)

Mảng một chiều (Single Dimensional Array)

Để tạo mảng một chiều, chúng ta chỉ cần sử dụng dấu ngoặc vuông [] sau kiểu dữ liệu

Ví dụ
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.

Ví dụ
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:

Khai báo và khởi tạo cùng một lúc

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 (Multidimensional Array)

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
Ví dụ
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:

Khai báo và khởi tạo cùng một lúc

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 } };

Mảng của mảng (Jagged Array)

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.

Khai báo jagged array

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][];

Khởi tạo giá trị 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 };

Khởi tạo giá trị cho phần tử trong lúc khai báo

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 } 
        };
Ví dụ
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:

4. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/mang-trong-c/feed/ 0
Lớp và đối tượng trong C# https://www.suamaynhanh.vn/phan-mem/lop-va-doi-tuong-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/lop-va-doi-tuong-trong-c-2/#respond Mon, 13 Apr 2020 09:11:28 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15583 Bởi vì C# là ngôn ngữ hướng đối tượng, nên chương trình được thiết kế là sử dụng lớp (class) và …

The post Lớp và đối tượng trong C# appeared first on Sửa Máy Nhanh.

]]>
Bởi vì C# là ngôn ngữ hướng đối tượng, nên chương trình được thiết kế là sử dụng lớp (class) và đối tượng (object)

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é.

1. Đối tượng

Đố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).

2. Lớp

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() {};
 }

3. Ví dụ

Ví dụ
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:

  • People p3 = new People(); // Vì chương trình không có hàm xây dựng mặc nhiên
  • People p4 = new People(12, “Nguyen Van A”); //Vì chương trình không có hàm xây dựng có 2 tham số
  • People p6 = new People(“Nguyen Van A”, 12, 20); //Vì kiểu dữ liệu của tham số truyền vào không khớp với kiểu dữ liệu khai báo

4. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/lop-va-doi-tuong-trong-c-2/feed/ 0
Hàm xây dựng và hàm hủy trong c# https://www.suamaynhanh.vn/phan-mem/ham-xay-dung-va-ham-huy-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/ham-xay-dung-va-ham-huy-trong-c-2/#respond Mon, 13 Apr 2020 09:09:17 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15581 1. Hàm xây dựng 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 …

The post Hàm xây dựng và hàm hủy trong c# appeared first on Sửa Máy Nhanh.

]]>
1. Hàm xây dựng

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à

  • Hàm xây dựng mặc nhiên
  • Hàm xây dựng có đối số

Hàm xây dựng mặc nhiên

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’
Ví dụ
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.

Hàm xây dựng có tham số

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

Ví dụ
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.

2. Hàm hủy

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.

Ví dụ
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 ý:

  • Hàm hủy là duy nhất cho lớp của nó, tức là không thể có nhiều hơn một hàm hủy trong một lớp.
  • Hàm hủy không có kiểu trả về và có cùng tên với tên lớp
  • Hàm hủy được phân biệt với một hàm xây dựng vì ký hiệu ~trước tên của nó.
  • Hàm hủy không chấp nhận bất kỳ tham số nào và không được sửa đổi hàm hủy
  • Hàm hủy không thể được định nghĩa trong Cấu trúc. Hàm hủy chỉ được sử dụng với các lớp.
  • Hàm hủy không thể bị overloaded hoặc kế thừa. (overload là gì mình sẽ cùng tìm hiểu trong một bài khác)
  • Hàm hủy được gọi khi chương trình thoát.

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ì.. 🙂

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/ham-xay-dung-va-ham-huy-trong-c-2/feed/ 0
Tìm hiểu từ khóa this và static trong c# https://www.suamaynhanh.vn/phan-mem/tim-hieu-tu-khoa-this-va-static-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/tim-hieu-tu-khoa-this-va-static-trong-c-2/#respond Mon, 13 Apr 2020 09:07:16 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15580 Trong bài học này chúng ta cùng tìm hiểu về từ khóa this và static trong C#. Vậy ý nghĩa của …

The post Tìm hiểu từ khóa this và static trong c# appeared first on Sửa Máy Nhanh.

]]>
Trong bài học này chúng ta cùng tìm hiểu về từ khóa this và static trong C#. Vậy ý nghĩa của từng từ khóa như thế nào, chúng ta cùng xem tiếp nội dung tiếp theo nhé.

1. This

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.

Ví dụ
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:

Ví dụ
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.

2. Static

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).

VÍ dụ
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.

Static Field

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

Ví dụ
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

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 ý:

  • static class chỉ chứa thành viên là static
  • static class không có thể hiện
  • static class không chứa hàm xây dựng
  • chúng ta vẫn có thể gọi và sử dụng thành viên của static class
Ví dụ
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:

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/tim-hieu-tu-khoa-this-va-static-trong-c-2/feed/ 0
Tính thừa kế trong C# https://www.suamaynhanh.vn/phan-mem/tinh-thua-ke-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/tinh-thua-ke-trong-c-2/#respond Mon, 13 Apr 2020 09:04:30 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15579 Các bạn thân mến, như chúng ta đã biết c# là ngôn ngữ lập trình hướng đối tượng. Trong bài này và …

The post Tính thừa kế trong C# appeared first on Sửa Máy Nhanh.

]]>
Các bạn thân mến, như chúng ta đã biết c# là ngôn ngữ lập trình hướng đối tượng. Trong bài này và những bài tiếp theo chúng ta sẽ cùng tìm hiểu 4 tính chất hướng đối tượng quan trọng nhất đó là tính thừa kế (inheritance), đa hình (Polymorphism), đóng gói (encapsulation), trừu tượng (abstraction).

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

1. Tính thừa kế (inheritance)

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ở.

Cú pháp
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.

2. Ví dụ

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

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:

Ví dụ
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

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:

Ví dụ
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

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:

Ví dụ
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

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

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:

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/tinh-thua-ke-trong-c-2/feed/ 0
Tìm hiểu tính đa hình trong c# https://www.suamaynhanh.vn/phan-mem/tim-hieu-tinh-da-hinh-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/tim-hieu-tinh-da-hinh-trong-c-2/#respond Mon, 13 Apr 2020 09:01:37 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15578 1. Overloading 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 …

The post Tìm hiểu tính đa hình trong c# appeared first on Sửa Máy Nhanh.

]]>
1. Overloading

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

  • NhanVien(string name, int tuoi, string id)
  • NhanVien(string name, int tuoi)
  • NhanVien()

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.

Ví dụ
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:

2. Overriding

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).

Ví dụ
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ở.

Ví dụ
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:

3. Polymorphism

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.

4. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/tim-hieu-tinh-da-hinh-trong-c-2/feed/ 0
Cấu trúc điều khiển if – else trong C# https://www.suamaynhanh.vn/phan-mem/cau-truc-dieu-khien-if-else-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/cau-truc-dieu-khien-if-else-trong-c-2/#respond Sun, 12 Apr 2020 14:24:09 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15561 1. Câu lệnh if – else 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 …

The post Cấu trúc điều khiển if – else trong C# appeared first on Sửa Máy Nhanh.

]]>
1. Câu lệnh if – else

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

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:

 

Cú pháp
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.

 

Giải
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:

Câu lệnh if – else

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:

Cú pháp
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 { }:

 

 

Cú pháp
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é.

 

Giải
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:

2. Câu lệnh if – else lồng nhau

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:

  • Sinh viên phải đạt điểm trung bình môn xuất sắc (trên 9.0)
  • Sinh viên phải đạt điểm rèn luyện xuất sắc (trên 90đ)
  • Điểm môn học thấp nhất là 6.0

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.

 

Ví dụ
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.

3. Lời kế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.

]]>
https://www.suamaynhanh.vn/phan-mem/cau-truc-dieu-khien-if-else-trong-c-2/feed/ 0
Cấu trúc rẽ nhánh switch – case trong C# https://www.suamaynhanh.vn/phan-mem/cau-truc-re-nhanh-switch-case-trong-c/ https://www.suamaynhanh.vn/phan-mem/cau-truc-re-nhanh-switch-case-trong-c/#respond Sun, 12 Apr 2020 14:15:30 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15560 Trong bài ngày hôm nay, mình sẽ giới thiệu một dạng khác của cấu trúc điều khiển. Đặt vấn đề là …

The post Cấu trúc rẽ nhánh switch – case trong C# appeared first on Sửa Máy Nhanh.

]]>
Trong bài ngày hôm nay, mình sẽ giới thiệu một dạng khác của cấu trúc điều khiển. Đặt vấn đề là khi có quá nhiều điều kiện để chọn thực hiện thì nếu chúng ta dùng câu lệnh if sẽ rất rối rắm và dài dòng, Vì vậy các ngôn ngữ lập trình cấp cao đều cung cấp một dạng câu lệnh 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é.

1. Cú pháp rẽ nhánh switch – case

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.

2. Ví dụ đơn giản về switch – case

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.

 

Ví dụ
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à:

  • Khi chúng ta nhập vào “yellow” thì tương ứng với case “yellow” nên đoạn lệnh trong đó case được thực thi và xuất ra màn hình “ban thich mau vang”.
  • Khi chúng ta nhập vào blue thì ta thấy chả có cái case “blue” nào cả, nên khi đó nó sẽ tự động chạy xuống defaul và đoạn lệnh sau defaul đó được thực thi.

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.

 

Ví dụ:
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:

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/cau-truc-re-nhanh-switch-case-trong-c/feed/ 0
Vòng lặp for trong C# https://www.suamaynhanh.vn/phan-mem/vong-lap-for-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/vong-lap-for-trong-c-2/#respond Sun, 12 Apr 2020 14:11:05 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15558 Vòng lặp giúp chúng ta giảm thiểu công sức khi chúng ta viết code cho những vấn đề thường xuyên lặp …

The post Vòng lặp for trong C# appeared first on Sửa Máy Nhanh.

]]>
Vòng lặp giúp chúng ta giảm thiểu công sức khi chúng ta viết code cho những vấn đề thường xuyên lặp lại, ví dụ như muốn tính tổng từ 1 đến 10 chẳng hạn. Nếu không có vòng lặp thì chúng ta sẽ viết như nào nhỉ ? 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:

  • Cấu trúc vòng lặp for.
  • Cấu trúc vòng lặp while.
  • Cấu trúc vòng lặp do - while.
  • Cấu trúc vòng lặp foreach.
  • Và có một vòng lặp đặt biệt đó là đệ quy.
  • Ngoài ra chúng ta có thể tạo ra vòng lặp không chính quy bằng cách sử dụng lệnh goto.

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é !!!

1. Cấu trúc vòng lặp for

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 đó:

  • Phần khởi tạo là chứa đoạn mã khởi tạo giá trị, đoạn lệnh này sẽ được chạy đầu tiên và chỉ được gọi một lần duy nhất trong vòng đời của vòng lặp.
  • Biểu thức điều kiện là biểu thức logic trả về kết quả 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.
  • Bước lặp là bước nhảy của biến khởi tạo sau mỗi lần lặp.

Lưu ý: 

  • Trong vòng lặp for có thể thiếu sự góp mặt của các biểu thức, tuy nhiên dấu ; bắt buộc phải có.
  • Mỗi phần khởi tạo, biểu thức điều kiện hoặc bước nhảy có thể có nhiều hơn một biểu thức. Vậy các biểu thức phải đặt cách nhau bởi dấu và được thực hiện từ trái sang phải.

Vòng đời của một vòng lặp for được chạy như sau:

  • Bước 1: Đầu tiên phần khởi tạo được chạy trước tiên.
  • Bước 2: Sau đó đến biểu thức điều kiện. Nếu biểu thức điều kiện đúng thì thực hiện bước 3, nếu sai thì kết thúc vòng lặp.
  • Bước 3: Thực hiện các câu lệnh trong thân của vòng lặp.
  • Bước 4: Thực hiện các lệnh trong bước nhảy, và quay lại bước 2.

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:

  • khởi tạo biến i = 1, biến i <=5 nên thực hiện cộng tong = tong +i;
  • Tăng i lên 1 đơn vị và kiểm tra. lúc này i = 2 vài<=5nên vẫn thực hiện tong = tong + i;
  • Tương tự tăng i thêm 1 đơn vị giá trị của i lần lượt là 3,4,5 và thực hiện tong = tong +i;
  • Khi tăng i lên đến 6 thì ta thấy điều kiện không thỏa (i<=5) cho nên thoát khỏi vòng lặp
  • Hiển thị biến tong ra màng hình với câu lệnh Console.WriteLine();

2. Ví dụ

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é:

  • Bước 1: Vòng for bên ngoài khởi tạo biếni = 0 và i<=9 nên sẽ sang bước 2.
  • Bước 2: Vòng for thứ hai khởi tạo biếnj = 0 và in ra giá trị của biến j.
  • Bước 3: Tăng giá trị của biến j lên 2,3,4,5,6,7,8,9 và in giá trị của biến j ra màn hình.
  • Bước 4: Khi biến j tăng đến 10 thì thoát vòng for và thực hiện dòng lệnh xuống dòng.
  • Bước 5: Tăng giá trị của i lên 2 và tiếp tục thực hiện sang bước 2.
  • Đến khi biếni = 10 thì kết thúc và thoát khỏi cả hai vòng lặp.

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/vong-lap-for-trong-c-2/feed/ 0
Vòng lặp while trong C# https://www.suamaynhanh.vn/phan-mem/vong-lap-while-trong-c-2/ https://www.suamaynhanh.vn/phan-mem/vong-lap-while-trong-c-2/#respond Sun, 12 Apr 2020 14:08:08 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=15557 Bài trước mình đã giới thiệu sơ lượt về vòng lặp trong C# và chúng ta cũng đã tìm hiểu về …

The post Vòng lặp while trong C# appeared first on Sửa Máy Nhanh.

]]>
Bài trước mình đã giới thiệu sơ lượt về vòng lặp trong C# và chúng ta cũng đã tìm hiểu về vòng lặp for trong C#. Vậy có một vấn đề đặt ra đối với vòng lặp for đó là chúng ta không biết trước được số lần lặp của đoạn lệnh. Ví dụ nhập vào một số nguyên dương lớn hơn 10, nếu số đó không thỏa thì nhập lại. Rõ ràng chúng ta hoàn toàn không thể biết người dùng sẽ nhập bao nhiêu lần cả. Vì thế nên vòng lặp 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é !

1. Cấu trúc vòng lặp while

Như đã nói ở phần mở đầu thì đối với vòng lặp whilechú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 whilethì đ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 whilenhư sau:

 

Cấu trúc
1
2
while (biểu thức điều kiện)
<Câu lệnh thực hiện>

 

Trong đó:

  • Biểu thức điều kiện là điều kiện để các lệnh được thực hiện, biểu thức này bắt buộc phải trả về giá trị truehoặc false
  • Nếu trong 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à:

  • Ta thấy trước khi thực hiện lệnh trong thân của vòng lặp thì nó sẽ kiểm tra biểu thức điều kiện trước tiên. Vậy để vòng lặp hoạt động thì biểu thức ban đầu của chúng ta sẽ trả về giá trị true.
  • Sau mỗi lần lặp nó đều quay về và kiểm tra biểu thức điều kiện vậy để thoát khỏi tình trạng lặp vô hạn gây ra hiện tượng treo máy thì chúng ta cần có lệnh làm thay đổi giá trị của biểu thức để đảm bảo rằng sau một số lần lặp nhất định thì ta sẽ nhận được giá trị 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é 😀).

2. Ví dụ

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.

 

Ví dụ
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:

  • Xuất ra màn hình yêu cầu nhập.
  • Khi bạn nhập vào 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.
  • Tương tự bạn nhập 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.
  • Tương tự bạn nhập 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.
  • Tương tự bạn nhập 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.
  • Tương tự bạn nhập <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.
  • Cuối cùng bạn nhập vào 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.

3. Lời kết

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.

]]>
https://www.suamaynhanh.vn/phan-mem/vong-lap-while-trong-c-2/feed/ 0