Bài 2: Biến hằng số kiểu dữ liệu và nhập xuất dữ liệu C# .NET Core

Ngày đăng: 12/28/2022 1:05:29 PM

Biến và kiểu dữ liệu cơ bản C#

Tạo dự án mẫu CS02VariablesConstantsIO để thực hành

Trước tiên để thực hành gõ các lệnh tạo dự án mới đặt tên tên là CS002_VariablesConstantsIO rồi sau đó mở nó ra bằng VSC

 mkdir CS002_VariablesConstantsIO
 cd CS002_VariablesConstantsIO/
 dotnet new console
 code .
 

Khi mở thư mục dự án bằng Visual Studio Code (VSC) ( có thể dùng lệnh code lệnh này có là do thiết lập VSC), trong VSC chọn menu View > Command Pallet ... gõ vào .NET - từ menu đổ xuống chọn mục: NET: Generate Assets for Build and Debug - để VSC thêm vào dự án file cấu hình build và chạy ứng dụng (trong thư mục .vscode).

CSharp VS

Biến trong C#

Biến dùng để lưu các giá trị dữ liệu vào bộ nhớ, giá trị lưu trữ vào đó có thể đọc và thay đổi bởi chương trình C# khi nó chạy. Để dùng biến, trước tiên phải đặt một cái tên cho biến và chỉ ra biến đó sẽ lưu loại dữ liệu nào (số nguyên - int, số thực double, chuỗi - string ...), việc này gọi là khai báo biến

Khi đặt tên biến C# cần lưu ý: tên biến có thể chứa chữsố và ký tự _ nhưng ký tự đầu tiên của tên biến không được dùng số, tên biến trong C# có phân biệt chữ hoa chữ thường. Hãy đặt tên biến sao cho nó ngắn gọn nhưng gọi nhớ đến thông tin dữ liệu biến đó lưu trữ. Ví dụ như studentNamestudentAge ... sẽ hay hơn abcxyz ... Ngoài ra cũng không đặt tên biến trùng với những từ khóa dành riêng cho câu lệnh C#

Các từ khóa trong C#

 abstract    as	        base	    bool        break	byte	    case
 catch	    char        checked	    class       const	continue    decimal
 default	    delegate	do          double      else	enum	    event
 explicit    extern      false	    finally     fixed	float	    for
 foreach	    goto        if          implicit    in      int
 interface   internal	is          lock        long	namespace   new
 null	    object      operator    out	        out     override    params
 private	    protected	public	    readonly	ref     return	    sbyte
 sealed	    short       sizeof	    stackalloc	static	string	    struct
 switch	    this        throw	    true        try     typeof	    uint
 ulong	    unchecked	unsafe	    ushort      using	virtual	    void
 volatile    while
 
 add         alias	ascending   descending	dynamic	from	    get
 global      group	into	    join	let	orderby
 partial     remove	select	    set

Khai báo biến để khai báo biến bạn cần chỉ ra kiểu dữ liệu của biến (như int, float, string ... sẽ tìm hiểu ngay sau đây) và tên biến, ví dụ:

 //Khai báo biến có tên studentName, lưu loại dữ liệu chuỗi (string)
 string studentName;
 

Ở trên bạn đã khai báo một biến có tên là studentName với kiểu dữ liệu là string, dòng khai báo đó kết thúc bởi ký hiệu ; là ký hiệu kết thúc câu lệnh C#

Câu lệnh C# là một tác vụ nào đó được chương trình C#, mặc định mỗi câu lệnh C# kết thúc bởi ký hiệu ;

Gán giá trị cho biến: ở trên, biến studentName đã được khai báo, nhưng nó chưa gán giá trị nào cả (nó chứa giá trị mặc định - tùy kiểu dữ liệu, như string là null, int là 0 ...), trước khi sử dụng biến - bạn cần gán giá trị cho biến, bạn có thể gán giá trị ngay tại dòng khai báo biến hoặc sử dụng toán tử gán = trước khi biến được sử dụng.

Kiểu dữ liệu C# định nghĩa sẵn

Kiểu dữ liệu C# cơ bản, định nghĩa sẵn (buil-in) trong C# cơ bản có:

  • int kiểu số nguyên (có dấu, dùng 32 bit biểu diễn, từ -2,147,483,648 đến 2,147,483,647)
  • sbyte kiểu số nguyên (có dấu, dùng 8 bit biểu diễn, từ -128 đến 127)
  • byte kiểu số nguyên (không dấu, dùng 8 bit biểu diễn, từ 0 đến 255)
  • short kiểu số nguyên (có dấu, dùng 16 bit biểu diễn, từ -32,768 đến 32,767)
  • ushort kiểu số nguyên (không dấu, dùng 16 bit biểu diễn, từ 0 đến 65,535)
  • long kiểu số nguyên (có dấu, dùng 64 bit biểu diễn, từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807)
  • ulong kiểu số nguyên (không dấu, dùng 64 bit biểu diễn, từ 0 đến 18,446,744,073,709,551,615)
  • float số thực chấm động (dùng 32 bit biểu diễn phù hợp số có bảy chữ số, độ chính xác số dấu chấm động 1.5 × 10−45 đến 3.4 × 1038)
  • double số thực chấm động (dùng 64 bit biểu diễn)
  • decimal số thực chấm động (dùng 128 bit biểu diễn)
  • char một ký tự (dùng 16 bit biểu diễn ký tự Unicode)
  • bool kiểu logic (chỉ nhận giá trị false hoặc true)
  • string chuỗi (xâu) ký tự (tập hợp các ký tự theo thứ tự - một văn bản text)
  • object đối tượng, biểu diễn các đối tượng C#, nó là kiểu cơ sở - mọi đối tượng C# đều kế thừa từ kiểu này.

Ví dụ khai báo biến sử dụng vào kiểu dữ liệu trên.

 int seconds = 60;                    //khai báo biến số nguyên
 double so_pi = 3.14;                 //khai báo biến số thực
 bool deltaIsSezo = true;             //Khai báo biến logic
 char chooseAction = 'S' ;            //Khai báo biến kiểu ký tự
 string msgResult = "Kết quả giải:" ; // khai báo biến chuỗi

 

Xuất dữ liệu ra màn hình Console

Thư viện lớp C# cung cấp sẵn một lớp tên là Console (System.Console) trong đó có chữa một số phương thức tĩnh để nhập / xuất dữ liệu với màn hình dòng lệnh terminal. Một số phương thức bạn có thể sử dụng ngay trong việc in dữ liệu đó là:

  • Console.Write(value) - in value ra màn hình, nhưng không xuống dòng mới - value có thể là một số, chữ, chuỗi ...
  • Console.WriteLine(value) - in value ra màn hình, sau đó xuống dòng
  • Console.ForegroundColor - thuộc tính để gán màu chữ xuất ra, nó có thể gán các màu như ConsoleColor.RedConsoleColor.GreenConsoleColor.White ...
  • Console.ResetColor() - đưa Console về màu mặc định

Ví dụ:

 Console.WriteLine();                                                //Xuống dòng
 Console.WriteLine();                                                //Xuống dòng
 Console.ForegroundColor = ConsoleColor.DarkMagenta;                 //Đặt màu chữ
 Console.WriteLine("XIN CHÀO - CHƯƠNG TRÌNH NHẬP XUẤT DỮ LIỆU");     //In dòng chữ
 Console.ResetColor();                                               //Reset màu
 Console.Write("Giá trị biến so_pi là : ");                          //In dòng chữ
 Console.WriteLine(so_pi);                                           //In giá trị biến
 Console.WriteLine();                                                //Xuống dòng
 

Chạy thử (CTRL + F5)

CSharp VS

Bạn có thể dùng format string để tạo ra chuỗi in ra nhằm giảm thiểu dòng code.

 int a = 123;
 double b = 567.123;
 
 Console.WriteLine("Biến a = {0}, biến b = {1}", a, b);
 
 //Xuất ra: Biến a = 123, biến b = 567.123
 

Trong chuỗi định dạng trên chỗ nào có ký hiệu {0} thì sẽ được thay thế bởi tham số thứ nhất a, và ký hiệu {1} thì thay bởi tham số thứ 2.

Ngoài ra cũng định dạng để chèn cả một biểu thức vào vị trí ấn định trong chuỗi, nếu trước ký hiệu chuối điền ký tự $, thì trong chuỗi chỗ nào muốn thay bằng biểu thức thì viết biểu thực tại đó và bọc trong cặp {}

 int a = 123;
 double b = 567.123;
 
 Console.WriteLine($"Biến a = {a}, biến b = {b} - tích là {a * b}");
 
 //Xuất ra: Biến a = 123, biến b = 567.123 - tích là 69756.129
 

 

Nhập dữ liệu trong C#

Có hàm Console.ReadLine() cho phép nhập dữ liệu cho đến khi nhấn Enter, hàm này trả về chuỗi mà người dùng nhập vào. Tương tự hàm Console.ReadKey() trả về ngay thông tin phím bấm khi người dùng bấm, ở trường hợp này để lấy chữ mã người dùng bấm thì viết Console.ReadKey().KeyChar

 string userLogin;
 Console.Write("Nhập username : ");
 userLogin = Console.ReadLine();
 Console.WriteLine($"Tên nhập vào là: {userLogin}");

Chuyển kiểu dữ liệu

Mặc định hàm Console.ReadLine() trả về string nếu muốn chuỗi đó nhập xong chuyển thành các kiểu dữ liệu khác như intfloat ... thì cần các hàm chuyển kiểu, một số hàm đó là:

  • Convert.ToInt32(value) chuyển value thành kiểu int
  • Convert.ToDouble(value) chuyển value thành kiểu double
  • Convert.ToBoolean(value) chuyển value thành kiểu bool
 Console.Write("Nhập một số thức : ");
 // Nhập chuỗi - chuyển ngay chuỗi đó thành số thực
 double dinput = Convert.ToDouble(Console.ReadLine());
 Console.WriteLine($"Số đã nhập là: {dinput}");

CSharp VS

Khai báo biến kiểu ngầm định với var

Mặc định C# khi khai báo biến cần phải chỉ rõ một cách tường minh kiểu dữ liệu (int, float ...) của biến, ở ở các ví dụ trên. Để linh hoạt, C# còn có một cơ chế khai báo biến với từ khóa var, mà không cần chỉ rõ ngay kiểu dữ liệu của biến mà kiểu của biến được xác định theo kiểu biểu thức gán vào biến ngay sau đó. (cũng có nghĩa là phải khởi tạo ngay). Ví dụ:

 var bien1 = 3.14;                                           // biến sẽ có kiểu double
 var bien2 = 3;                                              // biến sẽ có kiểu int
 var bien3 = "Biến khai báo với var phải khởi tạo ngay";     // string
 var bien4 = (5 < 4);                                        // bool
 

Hãy thử tạo breakpoint tại biến 1, tiến hành nhấn F5 để Debug, sau đó Step Into F11 qua từng dòng để thấy thông tin thực sự các biến trên, bạn sẽ thấy kiểu dữ liệu của biến nó được xác định giống như biểu thức gán vào biến

CSharp VS

Nếu dùng var khai báo mà không khởi tạo sẽ lỗi; ví dụ var a; sẽ lỗi nhưng var a = 123; thì đúng chuẩn.

Sử dụng var có ích giúp code ngắn gọn ở rất nhiều trường hợp với các kiểu dữ liệu phức tạp sau này.

Hằng số trong C#

Hằng số lưu trữ các giá trị mà không thay đổi được nữa, dùng từ khóa const để khai báo hằng số (như khai báo, khởi tạo biến nhưng phía trước có từ khóa const)

 const string MON = "THỨ HAI";
 Console.WriteLine(MON);

Nguồn tin: XuanThuLab