C# - C Sharp: Biến global và biến local


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Các biến được sử dụng trong một class có thể có những phạm vi hoạt động khác nhau, tùy thuộc vào từng loại. Ta có hai loại biến cơ bản như sau:

1. Biến global (biến lớp)

+ Được khai báo ở ngoài tất cả các hàm, kể cả hàm Main().

+ Ở mọi vị trí của lớp thì biến này đều có thể được sử dụng.

+ Tất cả các hàm của lớp đều có quyền sử dụng biến global này.

+ Cần sử dụng từ khóa static cho biến global để các hàm có thể sử dụng trực tiếp.

+ Ví dụ: Viết chương trình giải phương trình bậc nhất ax + b = 0.

  --> Khai báo 2 biến a, b (là 2 hệ số của phương trình) là 2 biến tổng thể.

  --> Viết 2 hàm, một hàm dùng để nhập hai hệ số a và b, hàm kia dùng để hiển thị kết quả nghiệm của phương trình ứng với 2 giá trị a và b.

--> Chương trình được viết như sau:

namespace Demo1
{
  internal class demo1
  {
    static float a, b;  //Khai báo 2 biến global a và b

    //Sau khi hàm này được gọi xong thì a và b sẽ nhận các giá trị nhập vào từ bàn phím
    static void NhapLieu()
    {
      Console.Write("Nhap he so a: ");
      a = float.Parse(Console.ReadLine());
      Console.Write("Nhap he so b: ");
      b = float.Parse(Console.ReadLine());
    }

    static void XacDinhNghiem()
    {
      if (a == 0)
      {
        if (b == 0)
        {
          Console.WriteLine("Phuong trinh co vo so nghiem!");
        }
        else
        {
          Console.WriteLine("Phuong trinh vo nghiem!");
        }
      }
      else
      {
        Console.WriteLine($"Phuong trinh co nghiem x = {-b / a}");
      }
    }

    static void Main(string[] args)
    {
      NhapLieu();

      XacDinhNghiem();
    }
  }
}

Kết quả output khi chạy một số tình huống:

Nhap he so a: 0
Nhap he so b: 0
Phuong trinh co vo so nghiem!

------------------------------------------------

Nhap he so a: 0
Nhap he so b: 1
Phuong trinh vo nghiem!

------------------------------------------------

Nhap he so a: 2
Nhap he so b: 3
Phuong trinh co nghiem x = -1.5

2. Biến local

+ Được khai báo bên trong các hàm.

+ Tên biến local và tên tham số của hàm không được trùng nhau.

+ Có phạm vi hoạt động chỉ trong hàm khai báo.

+ Các hàm khác không có khả năng sử dụng chúng (kể cả hàm Main()) nếu không sử dụng out hoặc ref.

+ Sau khi hàm chứa các biến local được thực hiện xong, thì các biến local sẽ bị hủy đi.

Ví dụ 1:

Tính giai thừa : S = n! (=1*2*3*4*…*n). Chương trình được viết như sau:

namespace Demo1
{
  internal class demo1
  {
    static float GiaiThua(int n)
    {  //n: tham số để tiếp nhận dữ liệu cho hàm GiaiThua
      float KQ = 1.0F; //KQ là biến cục bộ của GiaiThua
      for (int i = 1; i <= n; i++)
        KQ *= i;

      return KQ;
    }

    static void Main(string[] args)
    {
      int n;  //n là biến cục bộ của hàm Main()
      Console.Write("Nhap n: ");
      n = int.Parse(Console.ReadLine());
      Console.WriteLine($"Giai thua cua {n} bang {GiaiThua(n)}");
    }
  }
}

Một output của ví dụ:

Nhap n: 5
Giai thua cua 5 bang 120

Ví dụ 2:

Viết lại chương trình giải phương trình bậc nhất ở trên, trong đó các hệ số a, b của phương trình phải là các biến cục bộ trong hàm (nghĩa là không được khai báo a, b là các biến global).

Sau đây là đoạn code demo chương trình:

namespace Demo1
{
  internal class demo1
  {
    //Sau khi hàm này được gọi xong thì a và b ở hàm Main()
    //sẽ nhận các giá trị nhập vào từ bàn phím
    static void NhapLieu(out float a, out float b)
    {
      Console.Write("Nhap he so a: ");
      a = float.Parse(Console.ReadLine());
      Console.Write("Nhap he so b: ");
      b = float.Parse(Console.ReadLine());
    }

    static void XacDinhNghiem(float a, float b)
    {
      if (a == 0)
      {
        if (b == 0)
        {
          Console.WriteLine("Phuong trinh co vo so nghiem!");
        }
        else
        {
          Console.WriteLine("Phuong trinh vo nghiem!");
        }
      }
      else
      {
        Console.WriteLine($"Phuong trinh co nghiem x = {-b / a}");
      }
    }

    static void Main(string[] args)
    {
      float a, b; //Khai báo 2 hệ số a, b là các biến cục bộ của hàm Main()

      NhapLieu(out a, out b);

      XacDinhNghiem(a, b);
    }
  }
}
» Tiếp: Common Language Runtime
« Trước: out và ref
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!