Lua에 오신 것을 환영합니다: 프로그래밍의 첫 걸음

안녕하세요, 미래의 프로그래머 여러분! Lua의 세계로 가는 흥미로운 여정을 안내해 드리게 되어 기쁩니다. 컴퓨터 과학 교사로서 오랜 경험을 가진 저는 여러분과 같은 많은 학생들이 코딩의 첫 걸음을 내딛는 것을 목격했습니다. 믿으세요, 항상 모험입니다!

Lua - Home

Lua는 무엇인가요?

Lua는 포르투갈어로 "달"을 의미하며, 가벼운 무게와 쉽게 배울 수 있는 프로그래밍 언어입니다. Lua는 프로그래밍을 즐겁고 접근하기 쉽게 만들기 위해 달에서 온 친절한 외星人 같은 존재입니다!

왜 Lua인가요?

  1. 간단한 문법
  2. 초보자에게 친화적
  3. 다양한 용도로 사용됨 (게임, 웹 애플리케이션 등)
  4. 빠른 실행

Lua 환경 설정

코딩을 시작하기 전에 우리의 작업 공간을 설정해야 합니다. 요리하기 전에 주방을 준비하는 것과 같은 이치입니다!

  1. 공식 Lua 웹사이트(www.lua.org)를 방문하세요
  2. 사용 중인 운영 체제에 맞는 최신 버전을 다운로드하세요
  3. 제공된 지침에 따라 Lua를 설치하세요

Lua가 올바르게 설치되었는지 확인하려면 터미널이나 명령 프롬프트를 엽니다:

lua -v

Lua 버전 번호가 표시되면 모든 준비가 끝났습니다!

첫 번째 Lua 프로그램: Hello, World!

'Hello, World!' 프로그램으로 시작해 보겠습니다. 이는 프로그래머 사이에서 비밀 손 인사처럼 전통적인 프로그램입니다!

hello.lua라는 새로운 파일을 생성하고 다음과 같이 입력하세요:

print("Hello, World!")

파일을 저장하고 터미널에서 실행합니다:

lua hello.lua

화면에 "Hello, World!"가 표시되어야 합니다. 축하합니다! 여러분은 첫 번째 Lua 프로그램을 작성하고 실행했습니다!

무엇이 일어나고 있나요?

  • print()는 텍스트를 화면에 출력하는 Lua 함수입니다
  • 괄호와 따옴표 사이의 텍스트는 문자열(string)이라고 합니다
  • Lua는 코드를 행별로 순차적으로 실행합니다

변수와 데이터 타입

변수는 다양한 타입의 데이터를 담는 컨테이너라고 생각해 보세요. Lua에서 일반적으로 사용되는 데이터 타입을 탐색해 보겠습니다:

-- 숫자
age = 25
pi = 3.14159

-- 문자열
name = "Alice"
greeting = 'Hello, Lua!'

-- 부울值
is_sunny = true
is_raining = false

-- nil (값이 없음을 나타냅니다)
empty_variable = nil

-- 변수 출력
print(name)
print(age)
print(is_sunny)
print(empty_variable)

이 코드를 실행하고 어떤 일이 일어나는지 확인해 보세요!

설명:

  • 우리는 =를 사용하여 변수에 값을 할당합니다
  • Lua는 동적으로 타입이 지정되므로 변수의 타입을 선언할 필요가 없습니다
  • 문자열은 단일 따옴표나 이중 따옴표를 사용할 수 있습니다
  • 주석은 --로 시작합니다
  • nil은 "값이 없음" 또는 "존재하지 않음"을 나타냅니다

기본 연산

일부 수학 연산과 문자열 조작을 해 보겠습니다:

-- 산술 연산
a = 10
b = 3

print(a + b)  -- 덧셈
print(a - b)  -- 뺄셈
print(a * b)  -- 곱셈
print(a / b)  -- 나눗셈
print(a % b)  -- 나머지
print(a ^ b)  -- 거듭제곱

-- 문자열 결합
first_name = "John"
last_name = "Doe"
full_name = first_name .. " " .. last_name
print(full_name)

-- 문자열 길이
print(#full_name)

설명:

  • Lua는 모든 기본 산술 연산을 지원합니다
  • 문자열 결합은 .. 연산자를 사용합니다
  • # 연산자는 문자열이나 테이블의 길이를 반환합니다

제어 구조

조건문

제어 구조는 코드에서 결정을 내리는 데 도움이 됩니다. if 문으로 시작해 보겠습니다:

age = 18

if age >= 18 then
print("You are an adult")
elseif age >= 13 then
print("You are a teenager")
else
print("You are a child")
end

age 값을 변경하여 출력이 어떻게 달라지는지 확인해 보세요!

반복문

반복문을 사용하면 동일한 작업을 반복할 수 있습니다. for 반복문의 예제입니다:

for i = 1, 5 do
print("Iteration " .. i)
end

그리고 while 반복문의 예제입니다:

count = 1
while count <= 5 do
print("Count is: " .. count)
count = count + 1
end

함수

함수는 재사용 가능한 코드 블록입니다. 함수는 요리법처럼 반복적으로 사용할 수 있습니다:

function greet(name)
return "Hello, " .. name .. "!"
end

message = greet("Alice")
print(message)

-- 여러 개의 반환值을 가진 함수
function calculate(a, b)
return a + b, a - b, a * b, a / b
end

sum, difference, product, quotient = calculate(10, 5)
print("Sum:", sum)
print("Difference:", difference)
print("Product:", product)
print("Quotient:", quotient)

설명:

  • 함수는 function 키워드를 사용하여 정의됩니다
  • 함수는 매개변수를 받을 수 있으며 반환값을 가질 수 있습니다
  • Lua 함수는 여러 개의 반환값을 반환할 수 있습니다

테이블

테이블은 Lua의 유일한 데이터 구조이지만 매우 다재다능합니다. 데이터의瑞士軍刀라고 할 수 있습니다:

-- 간단한 테이블 생성
fruits = {"apple", "banana", "orange"}

-- 요소 접근
print(fruits[1])  -- Lua의 배열 인덱스는 1부터 시작합니다!
print(fruits[2])

-- 요소 추가
fruits[4] = "grape"

-- 테이블 반복
for i, fruit in ipairs(fruits) do
print(i, fruit)
end

-- 테이블을 사전처럼 사용
person = {
name = "Bob",
age = 30,
city = "New York"
}

print(person.name)
print(person["age"])

-- 중첩된 테이블
family = {
{name = "Alice", age = 35},
{name = "Bob", age = 37},
{name = "Charlie", age = 8}
}

for _, member in ipairs(family) do
print(member.name .. " is " .. member.age .. " years old")
end

설명:

  • 테이블은 배열, 사전, 또는 그 조합으로 사용할 수 있습니다
  • 배열 인덱스는 Lua에서는 1부터 시작합니다
  • 테이블 요소는 괄호나 점을 사용하여 접근할 수 있습니다
  • ipairs() 함수는 배열 형식의 테이블을 반복합니다

Lua 표준 라이브러리

Lua는 유용한 함수를 제공하는 여러 가지 내장 라이브러리를 제공합니다. 다음은 일반적으로 사용되는 라이브러리와 함수의 표입니다:

라이브러리 함수 설명
string string.upper(s) s를 대문자로 변환합니다
string.lower(s) s를 소문자로 변환합니다
string.len(s) s의 길이를 반환합니다
math math.max(x, ...) 인자 중 최대 값을 반환합니다
math.min(x, ...) 인자 중 최소 값을 반환합니다
math.random([m [, n]]) m과 n 사이의 난수를 생성합니다
table table.insert(t, [pos,] value) t에 value를 pos 위치에 삽입합니다
table.remove(t [, pos]) t에서 pos 위치의 요소를 제거합니다
table.sort(t [, comp]) t를 주어진 순서로 정렬합니다

다음은 이러한 함수를 사용하는 예제입니다:

-- 문자열 조작
text = "Hello, Lua!"
print(string.upper(text))
print(string.lower(text))
print(string.len(text))

-- 수학 연산
numbers = {5, 2, 8, 1, 9}
print(math.max(table.unpack(numbers)))
print(math.min(table.unpack(numbers)))
print(math.random(1, 10))

-- 테이블 연산
fruits = {"apple", "banana", "orange"}
table.insert(fruits, "grape")
table.sort(fruits)
for _, fruit in ipairs(fruits) do
print(fruit)
end

이제 Lua 프로그래밍의 세계로의 첫 큰 걸음을 내딛었습니다! 프로그래밍을 배우는 것은 새로운 언어나 악기 배우는 것과 같아요 - 연습과 인내가 필요합니다. 두려워 말고 실험하고 실수하고, 가장 중요한 것은 즐겁게 하세요!

이 Lua 소개를 마치면서, 유명한 컴퓨터 과학자 Grace Hopper의 말을 떠올립니다: "우리가 항상 그렇게 했기 때문에"는 언어에서 가장 해로운 문구입니다. 열려 있는 마음으로 남아 있고, 호기심을 유지하며, 결코 학습을 멈추지 마세요. 행복하게 코딩하세요!

Credits: Image by storyset