IMCAT.DEV
로그인 가입
Lua 입문 기초

Lua 입출력 함수

Lua 입출력 함수 — 초급

Lua 입출력 함수

1. 도입 (왜 배워야 하는가)

프로그램에서 사용자와 상호작용하는 것은 매우 중요합니다. 이때, 입력과 출력을 처리하는 입출력 함수가 필수적입니다. 예를 들어, 사용자로부터 정보를 입력받아 처리한 후 결과를 보여주는 전자상거래 사이트의 장바구니 시스템을 생각해 보세요. 이 과정에서 입력받은 데이터가 없으면 시스템이 제대로 작동하지 않으며, 출력이 없다면 사용자는 결과를 확인할 수 없게 됩니다. 따라서 입출력 함수의 이해는 프로그램의 기본적인 작동 원리를 이해하는 데 필수적입니다.

2. 핵심 개념 설명

입출력(Input/Output, I/O) 함수는 프로그램이 사용자와 데이터를 주고받을 수 있게 해줍니다. 다음은 Lua에서 자주 사용되는 입출력 함수입니다:

  • io.read(): 사용자로부터 입력을 받는 함수입니다.
  • io.write(): 데이터를 출력하는 함수입니다.
  • 비유하자면, io.read()는 친구에게 질문을 하는 것과 같고, io.write()는 친구에게 답변을 주는 것과 같습니다. 프로그램은 이 두 가지 기능을 통해 사용자와 소통하게 됩니다.

    함수명설명
    io.read()사용자 입력을 받는 함수
    io.write()출력하는 함수

    3. 기본 코드 예제

    다음 코드 예제는 사용자로부터 이름을 입력받고, 인사말을 출력하는 간단한 프로그램입니다.

    -- 사용자에게 이름을 입력받기
    io.write("이름을 입력하세요: ")  -- 출력: 이름을 입력하세요:
    local name = io.read()             -- 사용자 입력을 받음
    -- 인사말 출력
    print("안녕하세요, " .. name .. "!")  -- 출력: 안녕하세요, [입력한 이름]!

    실행 결과:

    이름을 입력하세요: 홍길동
    안녕하세요, 홍길동!

    코드 한 줄씩 동작 설명:

    1. io.write("이름을 입력하세요: "): 사용자에게 이름을 입력하라는 메시지를 출력합니다.
    2. local name = io.read(): 사용자가 입력한 이름을 name 변수에 저장합니다.
    3. print("안녕하세요, " .. name .. "!"): name 변수의 값을 이용하여 인사말을 출력합니다.
    4. 4. 실전 활용 예제

      예제 1: 계산기

      쇼핑몰에서 장바구니의 총액을 계산하기 위해 두 개의 숫자를 입력받아 더하는 간단한 계산기 프로그램을 작성할 수 있습니다.

      io.write("첫 번째 숫자를 입력하세요: ")
      local num1 = tonumber(io.read())
      io.write("두 번째 숫자를 입력하세요: ")
      local num2 = tonumber(io.read())
      local sum = num1 + num2
      print("두 숫자의 합은: " .. sum)

      예제 2: 사용자 정보 입력

      사용자로부터 여러 정보를 입력받아 출력하는 프로그램입니다.

      io.write("이름을 입력하세요: ")
      local name = io.read()
      io.write("나이를 입력하세요: ")
      local age = io.read()
      print("이름: " .. name .. ", 나이: " .. age)

      5. 흔한 실수와 주의사항

      1. 입력값의 타입

      잘못된 코드:

      io.write("숫자를 입력하세요: ")
      local number = io.read()  -- 문자열로 입력됨
      print("숫자는 " .. number * 2)  -- 에러 발생

      올바른 코드:

      io.write("숫자를 입력하세요: ")
      local number = tonumber(io.read())  -- 숫자로 변환
      print("숫자는 " .. number * 2)  -- 정상 작동

      입력값을 숫자로 변환하지 않으면 연산 시 에러가 발생합니다.

      2. 변수 스코프

      변수를 제대로 선언하지 않으면 사용할 수 없습니다. 잘못된 코드:

      function greet()
        print("안녕하세요, " .. name) -- 에러 발생
      end
      greet()

      올바른 코드:

      local name = "홍길동" -- 전역 변수로 선언
      function greet()
        print("안녕하세요, " .. name)
      end
      greet()

      변수의 스코프를 잘 이해하고 사용해야 합니다.

      6. 정리

    5. 입출력 함수는 사용자와의 상호작용을 담당합니다.
    6. io.read()와 io.write()를 사용하여 데이터를 주고받습니다.
    7. 사용자 입력값의 타입 변환에 주의해야 합니다.
    8. 변수를 선언할 때 스코프를 고려해야 합니다.

다음에 학습하면 좋은 주제는 "Lua 테이블"입니다. 테이블은 Lua의 기본 데이터 구조로, 복잡한 데이터를 다루는 데 유용합니다.