======🎮 Cấu trúc điều khiển và hàm trong Lua======
====🧠 1. Câu lệnh điều kiện====
Câu lệnh điều kiện cho phép chương trình của bạn đưa ra quyết định dựa trên một số điều kiện nhất định. Trong Lua, bạn sử dụng **if**, **elseif**, và **else** để triển khai logic điều kiện.\\
===✅ Câu lệnh If===
Câu lệnh if kiểm tra một điều kiện và thực thi một khối mã nếu điều kiện đó đúng.\\
**📜 Ví dụ mã:**\\
local devLevel = 18
if devLevel >= 18 then
print("WOW! REALLY GREAT")
end
**📌 Giải thích:**\\
* **if devLevel >= 18 then**: Dòng này kiểm tra xem biến **age** có lớn hơn hoặc bằng 18 không.
* **print("WOW! REALLY GREAT")**: Nếu điều kiện **(devLevel >= 18)** là đúng, dòng này sẽ được thực thi và in ra “WOW! REALLY GREAT”.
===🔄 Câu lệnh Elseif và Else===
Bạn có thể sử dụng **elseif** để kiểm tra các điều kiện bổ sung và **else** để thực hiện hành động mặc định nếu không có điều kiện nào đúng.\\
**📜 Ví dụ mã:**\\
local temperature = 25
if temperature > 30 then
print("It's hot outside!")
elseif temperature > 20 then
print("It's warm outside.")
else
print("It's cool outside.")
end
===📝 Bài tập:===
* Viết một câu lệnh **if** để kiểm tra xem một biến **number** có phải là số dương không.
* Mở rộng câu lệnh **if** với **elseif** và **else** để bao phủ các giá trị khác nhau.
* Thay đổi giá trị biến và kiểm tra các điều kiện khác nhau để xem kết quả.
**📜 Ví dụ mã bài tập:**\\
local number = 10
if number > 0 then
print("The number is positive.")
elseif number < 0 then
print("The number is negative.")
else
print("The number is zero.")
end
----
====🔁 2. Vòng lặp====
Vòng lặp được sử dụng để lặp lại một khối mã nhiều lần. Lua hỗ trợ các vòng lặp **while**, **for**, và **repeat…until**.\\
===🔄 Vòng lặp While===
Vòng lặp **while** lặp lại một khối mã trong khi điều kiện là đúng.\\
**📜 Ví dụ mã:**\\
local i = 1
while i <= 5 do
print("i = " .. i)
i = i + 1
end
==📌 Giải thích:==
* **local i = 1**: Khởi tạo biến **i** với giá trị là 1.
* **while i <= 5 do**: Thiết lập điều kiện để vòng lặp chạy khi **i** nhỏ hơn hoặc bằng 5.
* **print("i = " .. i)**: In ra giá trị hiện tại của **i**.
* **i = i + 1**: Tăng **i** thêm 1 mỗi vòng lặp để tránh lặp vô hạn.
===🔂 Vòng lặp For===
Vòng lặp **for** lặp qua một dãy giá trị do người dùng chỉ định.\\
**📜 Ví dụ mã:**\\
for i = 1, 5 do
print("i = " .. i)
end
==📌 Giải thích:==
* **for i = 1, 5 do**: Khởi tạo **i** là 1 và lặp đến 5.
* **print("i = " .. i)**: In ra giá trị hiện tại của **i** trong mỗi lần lặp.
===🔁 Vòng lặp Repeat...Until===
Vòng lặp **repeat…until** sẽ thực thi ít nhất một lần và tiếp tục lặp lại cho đến khi điều kiện trở thành đúng.\\
**📜 Ví dụ mã:**\\
local i = 1
repeat
print("i = " .. i)
i = i + 1
until i > 5
==📌 Giải thích:==
* **repeat**: Bắt đầu khối vòng lặp.
* **print("i = " .. i)**: In ra giá trị hiện tại của **i**.
* **i = i + 1**: Tăng **i** lên 1 mỗi lần lặp.
* **until i > 5**: Kết thúc vòng lặp khi **i** lớn hơn 5.
===📝 Bài tập:===
* Viết một vòng lặp **while** để đếm ngược từ 10 đến 1 và in ra từng số.
* Sử dụng vòng lặp **for** để in ra các số chẵn từ 1 đến 10.
* Triển khai vòng lặp **repeat…until** để yêu cầu người dùng nhập cho đến khi nhập một số hợp lệ.
**📜 Ví dụ mã bài tập:**\\
-- while loop
local countdown = 10
while countdown >= 1 do
print(countdown)
countdown = countdown - 1
end
-- for loop
for i = 2, 10, 2 do
print(i)
end
-- repeat...until loop
local userInput
repeat
print("Enter a number: ")
userInput = io.read("*n") -- Đọc một số từ đầu vào
until userInput ~= nil
print("You entered: " .. userInput)
----
====🧩 3. Hàm====
Hàm là các khối mã thực hiện một tác vụ cụ thể và có thể được sử dụng lại trong toàn bộ chương trình. Chúng giúp tổ chức mã và làm cho chương trình dễ đọc hơn.\\
====✏️ Định nghĩa hàm====
Bạn định nghĩa một hàm trong Lua bằng từ khóa **function** theo sau là tên hàm và các tham số.\\
**📜 Ví dụ mã:**\\
-- Hàm tính bình phương của một số
function square(num)
return num * num
end
-- Gọi hàm
local result = square(5)
print("Square: " .. result) -- in ra: 25
==📌 Giải thích:==
* **function square(num)**: Định nghĩa hàm tên là **square** nhận một tham số **num**.
* **return num * num**: Tính bình phương của **num** và trả về kết quả cho nơi gọi.
====🎯 Tham số và giá trị trả về====
Hàm có thể có tham số (giá trị đầu vào) và giá trị trả về (giá trị đầu ra).\\
**📜 Ví dụ mã:**\\
-- Hàm với tham số và giá trị trả về
function greet(name)
return "Hello, " .. name .. "!"
end
-- Gọi hàm
local message = greet("Lua Learner")
print(message) -- in ra: Hello, Lua Learner!
===📝 Bài tập:===
* Viết một hàm tính diện tích hình chữ nhật khi biết chiều dài và chiều rộng.
* Tạo một hàm chuyển đổi từ độ C sang độ F.
* Triển khai một hàm kiểm tra xem một số có phải là số nguyên tố không và trả về **true** hoặc **false**.
**📜 Ví dụ mã bài tập:**\\
-- Hàm tính diện tích hình chữ nhật
function calculateArea(length, width)
return length * width
end
-- Hàm chuyển độ C sang độ F
function celsiusToFahrenheit(celsius)
return celsius * 9 / 5 + 32
end
-- Hàm kiểm tra số nguyên tố
function isPrime(number)
if number <= 1 then
return false
elseif number == 2 then
return true
else
for i = 2, math.sqrt(number) do
if number % i == 0 then
return false
end
end
return true
end
end
-- Ví dụ sử dụng
local area = calculateArea(5, 10)
print("Area of rectangle: " .. area)
local fahrenheitTemp = celsiusToFahrenheit(25)
print("Temperature in Fahrenheit: " .. fahrenheitTemp)
local num = 17
if isPrime(num) then
print(num .. " is a prime number.")
else
print(num .. " is not a prime number.")
end
----