[Game Maker Adventure] Chương 003: Variables (biến) là gì?

Hiểu về biến (variable).

Tóm tắt chương trước

Lạc vào dị giới, thứ duy nhất giúp đỡ bạn lúc này là cuốn Cổ Thư Ma Thuật. Chỉ có nó mới giúp bạn học được tất cả những loại ma thuật đã bị thất truyền từ xa xưa.

Ngay khi vừa học được cách nói chuyện thì một con Goblin xuất hiện.

Bạn ngay lập tức hét to để chứng tỏ sức mạnh của mình.

Kiến thức chương này

  • Biến (Variables) hiểu đơn giản là những cái tên được đặt cho dữ liệu.
  • Có 3 bước để sử dụng biến: Khai Báo > Khởi Tạo > Truy Xuất. Không khai báo thì không thể khởi tạo, không khởi tạo không thể truy xuất.
  • Khai Báo (declare) để giúp máy tính thiết lập vùng nhớđặt tên cho vùng nhớ đó.
  • Khởi Tạo (initializing) là hành động gán giá trị cho biến lần đầu tiên. Khởi Tạo sẽ tạo ra dữ liệu cho vùng nhớ thiết lập ở bước Khai Báo.
  • Truy Xuất (retrieve) là sử dụng tên của vùng nhớ để sử dụng dữ liệu được gán cho nó.
  • Khi đặt tên biến phải: ngắn gọn, dễ đọc, dễ liên tưởng và không gây lỗi. Đặt tên là một trong những kĩ năng quan trọng nhất khi viết code.

Cốt truyện

Con Goblin giật mình hoảng sợ vì tiếng động lớn bất ngờ, nó vội quay đầu bỏ chạy! Bạn đã đuổi được nó.

Thế giới này quả thật có quái vật và ma thuật để đánh bại chúng là những dòng Code.

Bạn phải nhanh chóng học một ma thuật mới trước khi có nhiều thứ không hay xảy ra.

Lật sang chương kế tiếp, bạn thấy…

Variables (biến) là gì?

Ở trong cuộc sống, ta có thể nhìn vào từng đồ vật và gọi ra ngay tên của chúng: cuốn sách, cây bút, bàn phím, lọ thuốc, cái điều khiển… và khi cần mua cái gì thì ta chỉ cần tìm kiếm tên của chúng trên mạng là ra.

Thí dụ khi muốn mua một cuốn sách về thiết kế game, không ai tìm kiếm nó như thế này cả (hoặc không): “tôi cần một loạt các tờ giấy được đóng chắc với nhau, viết về chủ đề làm game…”

Vừa dài dòng, vừa khó hiểu.

Chưa kể mô tả đó chưa chắc đã đúng theo thời gian. Một cuốn sách từ ngày xưa sẽ được mô tả khác với một cuốn sách hiện đại.

Variable (biến) cũng như vậy, ta có thể đặt tên cho dữ liệu bằng một cái tên nào đó để khi cần có thể lấy ra sử dụng, rất tiện lợi.

Một số nơi thường ví Variable như những chiếc hộp để chứa dữ liệu nhưng về bản chất thì nó không thực sự chính xác cho lắm.

Tốt hơn, hãy hiểu Variable như việc chúng ta đặt tên cho dữ liệu. Mình sẽ bàn lại vấn đề này ở Series phụ chương nhé.

Việc có một định nghĩa tương đối chính xác với bản chất của Variable sẽ giúp các bạn dễ hiểu hơn về sau này.

Nếu so Variable với những chiếc hộp thì chúng không thể lí giải được các trường hợp kiểu như: “nhìn rõ ràng giống nhau mà so sánh lại không giống là sao!?”, “ủa, vì sao mình thay đổi cái này thì cái này thay đổi luôn vậy!?”, “tại sao lại cứ phải thêm cái từ new này quài”, v..v…

Phức tạp một chút đoạn đầu nhưng về sau sẽ dễ hiểu hơn nhiều!

Variables để làm gì?

Trở lại thí dụ về cuốn sách. Tên gọi “Cuốn sách” – vẫn được giữ nguyên từ hàng trăm năm nhưng định nghĩa của nó đã thay đổi rất nhiều.

  • Cuốn sách (ngày xưa): làm từ giấy.
  • Cuốn sách (ngày nay): làm từ giấy HOẶC dữ liệu digital.

Tương tự như vậy, Variable được sử dụng để đặt tên dữ liệu, nên dù dữ liệu có thay đổi thì tên của variable cũng không thay đổi.

Ta xét một thí dụ sau:

string message = "Gamesnhalam la lam game o nha ha?";

Console.WriteLine(message);

Kết quả in ra màn hình:

Gamesnhalam la lam game o nha ha?

Tiếp tục thay đổi một chút đoạn code:

string message = "Gamesnhalam la lam game o nha ha?";
Console.WriteLine(message);

message = "Uh, la lam game o nha nhung chat luong okela";
Console.WriteLine(message);

Kết quả in ra màn hình:

Gamesnhalam la lam game o nha ha?
Uh, la lam game o nha nhung chat luong okela

Bằng cách sử dụng Variable tên là message (do mình tự đặt tên). Mình không cần thay đổi nội dung in ra màn hình nữa, chỉ cần dùng WriteLine(message) là đủ.

Nội dung của message được xử lý ở một chỗ khác, tiện hơn và đỡ nhầm lẫn hơn nhiều.

Cách sử dụng Variable?

Để sử dụng Variable, ta cần tuân thủ các bước sau:

  1. Khai báo (declare): khi khai báo, máy tính sẽ dành ra một phần bộ nhớ để chứa dữ liệu. Phần bộ nhớ này chiếm nhiều hay ít tuỳ thuộc vào loại dữ liệu (data type) của variable.
  2. Sau bước khai báo, ta phải gán dữ liệu cho variable. Có thể gán luôn lúc khai báo hoặc để sau cũng được. Lần đầu tiên gán dữ liệu cho variable được gọi là khởi tạo (initializing).
  3. Cuối cùng là truy xuất: ta có thể sử dụng tên biến (variable name) để thay cho dữ liệu. Dữ liệu có thể thay đổi trong chương trình nhưng tên biến sẽ không thay đổi. Lưu ý rằng, nếu chưa gán giá trị cho variable mà đã truy xuất có thể gây lỗi, thông thường lỗi này sẽ được IDE báo trước khi bạn chạy chương trình.

Hãy phân tích lại thí dụ bên trên:

string message = "Gamesnhalam la lam game o nha ha?";
Console.WriteLine(message);

message = "Uh, la lam game o nha nhung chat luong okela";
Console.WriteLine(message);

Đầu tiên là bước khai báo. Công thức <khai báo bộ nhớ> <khai báo tên biến>

  • <khai báo bộ nhớ>: Máy tính sẽ dành ra một phần bộ nhớ để nhớ variable, và tất nhiên, ta phải khai báo khối lượng của chúng. Do mình sử dụng văn bản nên sẽ phải dùng từ string.

Chi tiết về khối lượng bộ nhớ và cách dùng hãy xem ở ngay các chương sau nhé. Ở chương này chỉ cần nhớ keyword là được.

  • <khai báo tên biến>: phần này là do chúng ta đặt. Đặt tên là một “nghi thức” rất-rất quan trọng trong code.

Dưới đây là ba qui tắc chính mà mình rất muốn bạn nhớ lúc này (chúng ta sẽ bàn về việc đặt tên ở Chương ???: Quy chuẩn đặt tên), bạn có thể làm khác đi, nhưng mình không khuyến khích cho lắm:

  1. Đặt tên phải ngắn gọn và dễ đọc. Để ngắn gọn, bạn có thể dùng ngoại ngữ, bất kì ngôn ngữ nào cũng được (VD: thay vì đặt tên là cuonSach, bạn có thể dùng book). Để dễ đọc, người dùng C# thường sử dụng qui tắc đặt tên kiểu Camel Case – trừ chữ đầu, các chữ cái đầu tiên ở mỗi từ sau đó sẽ viết hoa (VD: conChoNhaHangXom, scoreBoard, kamejokoFire…).
  2. Nếu tên biến bị lỗi, hãy thử sửa và thêm bớt một vài chữ cái. Các trường hợp gây lỗi có khá nhiều. VD: tên biến có chứa dấu cách (space), tên biến bị trùng, tên biến có kí tự không hợp lệ…
  3. Đặt tên phải dễ liên tưởng. Bạn không thể đặt “cuốn sách” cho một chiếc bàn phím, không thể đặt “xwwzz” cho một cuốn sách, cũng không được đặt tên “****” cho một đứa trẻ. Nói chung hãy đặt sao cho ai nhìn vào cũng hiểu (VD: jumpSpeed, currentHitPoint, heroSkillQ…)

Đặt tên là một trong những thứ khó nhất khi viết code (không đùa).

Đặc biệt khi bạn mới code, mình khuyên chân thành là đừng bao giờ đặt tên láu như: x, a, b, c… nhé. Hãy thực sự dành thời gian để nghĩ ra một cái tên, trông nhỏ nhặt vậy thôi nhưng sẽ giúp ích cho bạn rất nhiều sau này đó.

Tiếp theo là bước gán dữ liệu cho variable

  • Để gán dữ liệu, ta phải sử dụng dấu gán = hay còn gọi là assignment operator. Dấu gán sẽ copy dữ liệu từ bên phải vào bên trái. VD: message = “Gamesnhalam”; nghĩa là từ “Gamesnhalam” sẽ được copy vào dữ liệu của biến message.

Dấu “=” trong code không được hiểu như trong toán mà hiểu là “sao chép”. Khi đọc, hãy đọc: “gán X cho biến Y” không phải “X bằng biến Y”.

Ta có thể gán ngay lúc khai báo (declare). Hoặc gán sau cũng được. Hai trường hợp bên dưới sẽ cùng ra một kết quả:

string message = "Gamesnhalam";
Console.WriteLine(message);

TH1: gán ngay lúc khai báo

string message;
message = "Gamesnhalam";
Console.WriteLine(message);

TH2: gán sau khi khai báo

Hành động gán giá trị lần đầu tiên cho biến được gọi là khởi tạo (initializing), một số nơi gọi tắt là init.

Ta có thể gán nhiều giá trị cho variable nhưng variable sẽ chỉ nhận giá trị được gán gần nhất.

string message = "Gamesnhalam";
message = "nhalamgames";
message = "lamnhagames";
message = "Hehehehe";
Console.WriteLine(message);

//print Hehehehe 

Cuối cùng là truy xuất dữ liệu của variable

Máy tính sẽ truy ngược ra dữ liệu của variable để có thể sử dụng. Đó là lí do tại sao ta in Console.WriteLine(message); lại ra dòng chữ khác.

Tất nhiên, nếu ta chưa khởi tạo message thì khi in Console.WriteLine(message); sẽ được báo lỗi (phần gạch chân màu đỏ).

Phần báo lỗi này được Visual Studio làm rất trực quan nên không cần lo lắng quá nhiều nha.

Quest: Đúng hay Sai?

Vậy là bạn đã đọc xong chương về variable.

Ngay khi định lật tiếp sang chương mới, cuốn sách bỗng nhiên loé sáng, đưa bạn vào một chiều không gian khác.

Ở nơi này có rất nhiều các kí tự trôi nổi.

Một vài dòng chữ hiện lên trước mắt bạn.

Dù có hơi hốt hoảng, nhưng bạn vẫn đủ bình tĩnh để nắm được chuyện gì đang diễn ra.

Bạn phải trả lời câu hỏi thì mới có thể thoát khỏi không gian này!

Quest ✦✧✧✧✧

Sau khi ấn bắt đầu, hãy chọn đúng hoặc sai cho các câu hỏi được đưa ra.

/4
You must log in to pass this quiz.

Chương Trước | Tổng quan | Chương Kế

Kurrwo

Công nhân👷gõ 💬 văn bản ⌨️ trò chơi 🎮 điện tử 📱 👏👏👏

Post navigation

Subscribe
Notify of
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
A Wandering Bard

Dấu “=” trong code không được hiểu như trong toán mà nó sẽ giống dấu “<=” hơn.

Khi đọc, hãy đọc: “gán X cho biến Y” không phải “X bằng biến Y”.

Mình không hiểu đoạn này