Khái niệm
Biến là tên đại diện cho một vùng nhớ lưu trữ một giá trị có thể thay đổi trong quá trình chương trình chạy. Biến giúp chương trình lưu trữ dữ liệu trung gian, cập nhật trạng thái và truyền giá trị giữa các phép tính.
Có thể hình dung biến như một hộp có nhãn: nhãn là tên biến, bên trong là giá trị hiện tại.
Khai báo và gán giá trị
name = "Lan"
age = 18
print(name)
print(age)
program VariableDemo;
var
name: String;
age: Integer;
begin
name := 'Lan';
age := 18;
Writeln(name);
Writeln(age);
end.
#include <stdio.h>
int main(void) {
char name[] = "Lan";
int age = 18;
printf("%s\n", name);
printf("%d\n", age);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Lan";
int age = 18;
cout << name << endl;
cout << age << endl;
return 0;
}
string name = "Lan";
int age = 18;
Console.WriteLine(name);
Console.WriteLine(age);
const name = "Lan";
const age = 18;
console.log(name);
console.log(age);
const name: string = "Lan";
const age: number = 18;
console.log(name);
console.log(age);
package main
import "fmt"
func main() {
name := "Lan"
age := 18
fmt.Println(name)
fmt.Println(age)
}
fn main() {
let name = "Lan";
let age = 18;
println!("{}", name);
println!("{}", age);
}
Hằng số (Constants)
Hằng số là giá trị được đặt tên nhưng không thể thay đổi sau khi khai báo. Dùng hằng số thay vì ghi trực tiếp con số vào mã giúp chương trình dễ hiểu và dễ sửa hơn: chỉ cần thay đổi ở một chỗ thay vì tìm và sửa nhiều nơi.
# Python không có từ khóa const; quy ước dùng UPPER_CASE
MAX_SCORE = 100
PI = 3.14159
print(MAX_SCORE)
print(PI)
program ConstantDemo;
const
MaxScore = 100;
Pi = 3.14159;
begin
Writeln(MaxScore);
Writeln(Pi:0:5);
end.
#include <stdio.h>
#define MAX_SCORE 100
#define PI 3.14159
int main(void) {
printf("%d\n", MAX_SCORE);
printf("%.5f\n", PI);
return 0;
}
#include <iostream>
using namespace std;
const int MAX_SCORE = 100;
const double PI = 3.14159;
int main() {
cout << MAX_SCORE << endl;
cout << PI << endl;
return 0;
}
const int MaxScore = 100;
const double Pi = 3.14159;
Console.WriteLine(MaxScore);
Console.WriteLine(Pi);
const MAX_SCORE = 100;
const PI = 3.14159;
console.log(MAX_SCORE);
console.log(PI);
const MAX_SCORE: number = 100;
const PI: number = 3.14159;
console.log(MAX_SCORE);
console.log(PI);
package main
import "fmt"
const MaxScore = 100
const Pi = 3.14159
func main() {
fmt.Println(MaxScore)
fmt.Println(Pi)
}
const MAX_SCORE: i32 = 100;
const PI: f64 = 3.14159;
fn main() {
println!("{}", MAX_SCORE);
println!("{}", PI);
}
Cập nhật giá trị
counter = 0
counter = counter + 1
print(counter)
program CounterDemo;
var
counter: Integer;
begin
counter := 0;
counter := counter + 1;
Writeln(counter);
end.
#include <stdio.h>
int main(void) {
int counter = 0;
counter = counter + 1;
printf("%d\n", counter);
return 0;
}
#include <iostream>
using namespace std;
int main() {
int counter = 0;
counter = counter + 1;
cout << counter << endl;
return 0;
}
int counter = 0;
counter = counter + 1;
Console.WriteLine(counter);
let counter = 0;
counter = counter + 1;
console.log(counter);
let counter: number = 0;
counter = counter + 1;
console.log(counter);
package main
import "fmt"
func main() {
counter := 0
counter = counter + 1
fmt.Println(counter)
}
fn main() {
let mut counter = 0;
counter = counter + 1;
println!("{}", counter);
}
Nguyên tắc đặt tên
- Dùng tên phản ánh đúng vai trò của dữ liệu:
studentAgerõ hơna. - Tránh tên quá ngắn nếu chương trình không phải ví dụ rất nhỏ.
- Giữ một quy ước thống nhất trong toàn bài hoặc toàn dự án.
- Hằng số thường viết UPPER_CASE để phân biệt với biến thông thường.
Ghi chú theo ngôn ngữ
Python gán kiểu dữ liệu theo giá trị hiện tại của biến. Người viết không cần khai báo kiểu trước. Python không có từ khóa const; quy ước dùng UPPER_CASE là tín hiệu cho người đọc biết biến đó không nên thay đổi.
Pascal khai báo biến trong khối var và hằng trong khối const trước phần thực thi. Mỗi biến phải có kiểu rõ ràng từ đầu. Hằng số Pascal được đặt tên theo PascalCase.
C không có const dành cho giá trị thực sự bất biến ở mức preprocessor; thay vào đó thường dùng #define. const trong C là từ khóa bảo vệ biến khỏi bị ghi nhưng không giống hằng số biên dịch hoàn toàn.
C++ có const và constexpr. constexpr mạnh hơn vì giá trị được tính tại thời điểm biên dịch, thích hợp cho các hằng số dùng trong expression template.
C# có const (giá trị cố định tại biên dịch) và readonly (giá trị chỉ được gán một lần lúc khởi tạo). Dùng const cho các giá trị như MaxScore, readonly cho giá trị phụ thuộc runtime.
JavaScript dùng const cho biến không được gán lại (nhưng nếu là object/array, nội dung bên trong vẫn có thể thay đổi). Dùng let cho biến thường. Tránh var trong code mới.
TypeScript kế thừa const/let từ JavaScript và bổ sung kiểu tường minh. readonly trong TypeScript ngăn gán lại thuộc tính của đối tượng.
Go dùng const cho hằng số. Hằng số Go có thể khai báo thành nhóm. Go còn có iota để tạo dãy số nguyên tự động trong khối const, rất tiện cho enum-like.
Trong Rust, mọi biến mặc định là bất biến (immutable). Muốn thay đổi phải dùng let mut. Hằng số khai báo bằng const phải có kiểu tường minh và giá trị tính được tại biên dịch.
Kết nối bài tiếp theo
Sau khi nắm được biến và hằng số, bước kế tiếp là học Toán tử để biết cách kết hợp và biến đổi các giá trị này.
Bình luận