====== Control Structures and Functions in Lua ======
===== 1. Conditional Statements =====
Conditional statements allow your program to make decisions based on certain conditions. In Lua, you use if, elseif, and else to implement conditional logic.
=== If Statement ===
The if statement evaluates a condition and executes a block of code if the condition is true.
**Code Example:**
local devLevel = 18
if devLevel >= 18 then
print("WOW! REALLY GREAT")
end
**Explanation:**
* if devLevel >= 18 then: This line checks if the variable age is greater than or equal to 18.
* print("WOW! REALLY GREAT"): If the condition (devLevel >= 18) is true, then this line will execute and print "WOW! REALLY GREAT"
=== Elseif and Else Statements ===
You can use elseif to check additional conditions and else to provide a default action if none of the conditions are true.
**Code Example:**
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
**Exercise:**
* Write an if statement to check if a variable number is positive.
* Extend the if statement with elseif and else to cover different ranges of values.
* Modify the variables and test different conditions to see the output.
**Example Exercise Code:**
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. Loops =====
Loops are used to repeat a block of code multiple times. Lua supports while, for, and repeat...until loops.
=== While Loop ===
The while loop repeats a block of code while a condition is true.
**Code Example:**
local i = 1
while i <= 5 do
print("i = " .. i)
i = i + 1
end
**Explanation:**
* **local i = 1**: Initializes a variable i with a value of 1.
* **while i <= 5 do**: This line sets up the condition to execute the loop as long as i is less than or equal to 5.
* **print("i = " .. i):** Prints the current value of i.
* **i = i + 1:** Increments i by 1 in each iteration to avoid an infinite loop.
=== For Loop ===
The for loop iterates over a range of values specified by the user.
**Code Example:**
for i = 1, 5 do
print("i = " .. i)
end
**Explanation:**
* **for i = 1, 5 do:** This line initializes i to 1 and iterates up to 5.
* **print("i = " .. i):** Prints the current value of i in each iteration.
=== Repeat...Until Loop ===
The repeat...until loop executes a block of code at least once and continues to repeat until a condition becomes true.
**Code Example:**
local i = 1
repeat
print("i = " .. i)
i = i + 1
until i > 5
**Explanation:**
* **repeat:** Starts the loop block.
* **print("i = " .. i):** Prints the current value of i.
* **i = i + 1:** Increments i by 1 in each iteration.
* **until i > 5:** Ends the loop when i becomes greater than 5.
**Exercise:**
* Write a while loop to count from 10 to 1 and print each number.
* Use a for loop to print even numbers from 1 to 10.
* Implement a repeat...until loop to prompt the user for input until they enter a valid number.
**Example Exercise Code:**
-- 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") -- Read a number from input
until userInput ~= nil
print("You entered: " .. userInput)
===== 3. Functions =====
Functions are blocks of code that perform a specific task and can be reused throughout your program. They help in organizing code and making it more readable.
=== Defining Functions ===
You define a function in Lua using the function keyword followed by the function name and parameters.
**Code Example:**
-- Function to calculate the square of a number
function square(num)
return num * num
end
-- Calling the function
local result = square(5)
print("Square: " .. result) -- prints: 25
**Explanation:**
* function square(num): Defines a function named square that takes a parameter num.
* return num * num: Computes the square of num and returns the result to the caller.
=== Parameters and Return Values ===
Functions can have parameters (input values) and return values (output values).
**Code Example:**
-- Function with parameters and return value
function greet(name)
return "Hello, " .. name .. "!"
end
-- Calling the function
local message = greet("Lua Learner")
print(message) -- prints: Hello, Lua Learner!
**Exercise:**
* Write a function that calculates the area of a rectangle given its length and width.
* Create a function that converts Celsius to Fahrenheit.
* Implement a function that checks if a number is prime and returns true or false.
**Example Exercise Code:**
-- Function to calculate the area of a rectangle
function calculateArea(length, width)
return length * width
end
-- Function to convert Celsius to Fahrenheit
function celsiusToFahrenheit(celsius)
return celsius * 9 / 5 + 32
end
-- Function to check if a number is prime
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
-- Example usage
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