반응형

루아에서의 테이블은 매우 중요한 내용이다.

테이블은 매우 독특하며 그 사용면에서 광범위하다.

루아의 객체지향성을 위하여 사용되기도 한다.

 

table 생성

table명 = {}

 

예)

t = {}

테이블은 위와 같이 {} 에 의하여 초기화 된다. 그냥 table 변수를 생성한다고 보면 된다. 단 {} 로 하면 테이블로 선언 되지만 그 내용은 비어 있다고 보면 된다.

 

 

배열로서의 테이블

 

테이블을 이용하여 배열을 표현할 수 있다. 테이블을 생성할 때 배열의 각 요소들을 콤마(,) 로 구분하여 정의 할 수 있다.

또한 배열의 각 요소들은 대괄호 [ index ] 에 의하여 인덱싱되어 접근할 수 있다.

 

t = { 1,1,2,2,3,4,5,5 }

print( t[1] )

 

결과

1

 

테이블의 인덱싱은 1부터 시작한다. c/c++ 에서 배열의 첫번째 값은 인덱스 0 에 있지만 루아에서는 1에 있다.

 

t = { 1,1,2,3,5,8,13 }

은 다음과 같은 문장과 동일하다.

t[1]=1 t[2]=1 t[3]=2 t[4]=3 t[5]=5 t[6]=8 t[7]=13

테이블의 크기 알아내기

테이블의 크기는 # 연산자를 이용하여 알아낼 수 있다.

 

t = { 1,1,2,3,5,8,13 }
print(#t)

 

결과

7

참고적으로 위의 # 연산자는 다음과 같은 table 함수로 대치할 수 있다.

t = { 1,1,2,3,5,8,13 }
print(table.getn(t))

테이블에 값 추가하기

 

테이블에 다음과 같은 테이블 함수를 이용하여 값을 추가할 수 있다.

table.insert(t,21)

 

table.insert 함수는 인수가 2개 또는 3개를 사용한다.

table.insert(table,value)              -- 테이블의 끝에 추가
table.insert(table,position,value)  -- 테이블의 특정 위치에 추가

 

테이블에서 특정 위치의 값 지우기

table.remove(table,position)


반응형

보통 C 의 경우 main() 함수를 둡니다.

즉 실행파일이 만들어지고 이를 실행하면 어딘가 진입 코드부분이 있어야 겠죠.

이곳이 바로 C언어 에서의 main 함수 입니다.

 

루아는 이러한 진입 함수가 있지 않습니다.

 

그러나 이러한 단점을 보안하기 위하여 LuaWin 은 main 이라는 함수를 자동으로 호출하도록 만들었습니다.

 

function main()

 

end

 

라는 함수고 lua code에 있으면 이를 자동으로 호출해 준다고 생각하면 됩니다.

단 이는 LuaWin 에서만 적용되는 사항입니다.

또한 main 함수에 인수는 적용하지 않습니다.

 


main 함수가 있으면 특별히 호출하지 않아도 자동으로 호출 된다.

 

반응형

루아의 특징하나를 살펴봅시다.

 

루아에서는 함수도 하나의 변수 입니다.

 

다음의 예를 살펴보죠.

 

function myfunc()

print("테스트 문자열")

end

 

a = myfunc

 

a()

 

위와 같이 하면 어떻게 될까요??

a() 라는 함수 호출에 결국 myfunc() 가 호출 됩니다.

그러므로 consol 에는

 

 테스트 문자열

 

이라고 나오겠죠..

 


[루아스크립트]


반응형

프로그래밍 언어이기 때문에 변수를 사용할 수 있습니다.

 

루아에서의 변수는 선언이 필요 없습니다.

그냥 사용하면 됩니다.

 

일반적으로 C/C++ 에서는 변수를 사용하려면 변수의 형(type) 을 선언해주고 사용해야 합니다.

그러한 관점에서 루아에서는 이러한 변수의 형 선언이 필요하지 않다고 생각하시면 됩니다.

 

또한 루아에서는 변수의 형이 정해지지 않습니다. 변수에 어떠한 값을 대입하는 순간 해당 변수의

형이 변경이 됩니다.

 

다음의 예를 가지고 설명 드리겠습니다.

 

a = 10   -- a 라는 변수는 10이라는 정수를 가집니다.

a = 10.2  -- a 라는 변수는 다시 10.2 라는 실수 값을 가집니다.

a = "abcd"  -- a라는 변수는 다시 "abcd"라는 문자열을 가지는 string 변수가 됩니다.

 

참고) 루아에서는 정수,실수 구분이 없고 그냥 number 입니다. 그러므로 위의 내용은 정수라고 봐도 되고 실수라고 봐도 됩니다.

 

이렇게 a라는 하나의 변수가 그때그때 사용할때 대입되는 값에 따라서 바뀌게 됩니다.

 

C/C++ 와는 확연하게 다른 부분 입니다.

 

 

 

전역변수와 지역변수
C/C++ 프로그래밍을 하다보면 변수가 전역변수(global variable) 가 있고 지역변수(local variable) 가 있습니다.

루아에서도 이러한 개념이 준비되어 있습니다. 단 그 규칙은 다릅니다.

 

루아에서는 모든 변수가 전역 변수 입니다. 단 local 이라는 예약어에 의하여 준비된 변수는 해당 구간에서만 사용되는

지역변수로 처리 됩니다.

 

function test()

 

   a = 10 -- test 라는 함수 안에 있어소 전역 변수가 됩니다.

   local b = 20  -- b 는 지역변수로 test() 라는 함수에서만 사용됩니다.

 

end

위와 같이 지역 변수로 사용하고 싶으면 local 이라는 예약어를 변수 앞에 적어 주어야 합니다.

 

 

function testout()

print(a)

end

 

function testinit()

a = 10

end

 

testinit()

testout()

 

위와 같이 코드를 작성할 경우 출력은 10 이 나옵니다.


[루아스크립트]

반응형

어느 컴퓨터 언어 에서든 주석(comment) 문에 대한 규정이 있습니다.

루아 역시 주석문에 대한 규정이 있고 역시 다른 언어와 마찬가지로 2가지가 있습니다.

 

1. 한줄 주석

한줄 주석 (엄밀히 말하면 한줄 주석이라기 보다는 특정 위치부터 해당 라인의 끝까지만) 은

-- 를 사용 합니다. - 기호를 2개 넣으면 됩니다.

 

예)

-- 안녕하세요, 이라인은 주석으로 처리 됩니다.

 

위와 같이 -- 가 나타나면 이 이후 해당 라인의 끝까지 모두 주석으로 처리 됩니다.

 

i = 10 -- i 변수에 10 지정

 

위와 같이 수행문의 뒤에 주석으로 해당 수행문의 설명을 넣을 수도 있겠죠....

 

2. 구간 (block) 주석

프로그래밍을 하다보면 구간(block) 주석이 필요합니다.

즉 한줄로 설명하기 힘들 경우, 여러줄을 넣어 주어야 할 경우가 있거나, 또는 특정한 수행 구간을 임시로

막아, 처리하지 않도록 하는 역할로도 사용할 수 있겠죠.

 

루아의 다줄 주석은

--[[    주석 구간의 시작 으로 사용

여기는 모두 주석....

....

]] 주석 구간의 끝으로  사용

루아코드를 작성하는 경험이 있으신분들은 흔히 구간 주석을 다음과 같이 사용합니다.

 

--[[

 

--]]

 

위와 같이 할 경우 해당 주석 구간을 쉽게 풀어 버릴거나 다시 넣거나를 할 수 있기 때문입니다.

 

---[[

 

--]]

 

위와같이 주석 구간의 시작부분에 - 를 하나 더 넣으면 결국 -- 이후의 것은 한줄 주석으로 처리되어 구간주석

시작 기능을 잃어 버립니다.

또한 기존에 구간 주석의 끝으로 사용한 --]] 은 결국 구간의 시작이 없기 때문에 -- 가 한줄 주석으로 처리 되어서

주석으로 처리할 구간을 풀어주게 되는 것 입니다.

 

반대로 시작부분의 --- 에서 - 를 하나 빼면 다시 구간이 주석으로 처리 되겠죠..

 

이러한 이유에서 많은 루아 코드작성자들이

--[[

--]]

 

를 구간 주석으로 사용하는 것 입니다.

 

예: 이건 제스크립트입니다.(Cheat Engine의 lua스크립트입니다.)


local form = createForm(true);

checkBoxes = createCheckBox(form);

control_setCaption(checkBoxes,"TEST");

control_setPosition(checkBoxes,10,20)

reinitializeSymbolhandler()

autoAssemble(xxx)

debugProcess(3)

--

xxx=[[

registersymbol(r2)

registersymbol(r2value)

alloc(r2,128)

alloc(r2value,4)


r2:

fild dword ptr [r2value]

jmp 004EDE19

r2value:

dd #255

]]


--

function TEST()

if checkbox_getState(checkBoxes)== 1 then

debug_setBreakpoint("Freestyle.exe+EDE16")

print("디버그 걸림")

else

debug_removeBreakpoint("Freestyle.exe+EDE16")

print("디버그 풀림")

end

end

--

function debugger_onBreakpoint()

  EIP=getAddress("r2")

  debug_continueFromBreakpoint(co_run)

return 1

end

--

--Lua강좌

checkbox_onChange(checkBoxes,TEST)


위에 보시는거와 동일하게 --는 지금 주석문이지만 줄을 나누기위해서 일부로 넣은것입니다.



반응형

루아스크립트에서는 자신의 함수를 만들어 사용할 수 있습니다.

이러한 함수는 호출되어야 실행이 됩니다.

 

루아에서는 함수도 하나의 변수 입니다.

함수를 지정하는 형식은 function 이라는 예약어에 의하여 다음과 같습니다.

 

function 함수명([인수1,인수2,...])

-- 함수 코드

end

 

위와같이 함수는 function 이라는 루아 예약어에 의하여 선언 됩니다. 함수명은 일반적인 언어와 같이 영문자로 시작하여

영문자/숫자/_(underbar) 등에 의하여 명명될 수 있습니다.

인수는 없어도 되고 그 갯수에는 관계가 없습니다.

 

이렇게 만들어진 함수는 호출이 되어야만 실행 됩니다.

 

다음과 같은 예를 살펴보죠.

 

-- lua source code

print("Hello LuaWin !!!")

 

만약 위와 같이 lua 코드를 작성하여 LuaWin에서 실행하면 위의 코드는 실행 메뉴입력에 의하여 바로 실행 됩니다.

그러므로 consol 에 Hello LuaWin !!! 이라고 출력을 하겠지요.

 

 

그러나 만약

function test()

print("Hello LuaWin !!!")

end

 

이라고 작성 하였다면, LuaWin에서 메뉴의 실행을 선택해도 해당 함수는 실행되지 않습니다.

 

앞서 말했듯이 함수는 호출이 되야 실행되고, 함수의 밖에 있는 실행문들은 스크립트 코드를 루아 가상머신이

읽어들여 바로 실행 됩니다. 이러한 함수 밖의 실행문들은 실행 순서가 위에서 부터 아래로 실행됩니다.

 

그러면 test() 라는 함수를 어떻게 호출할까요?

 

다음과 같이 하면 됩니다.

 

function test()

print("Hello LuaWin !!!")

end

 

test()

 

이렇게 test() 라는 함수호출을 추가하면 됩니다. 그러면 test()라는 함수 호출은 함수 밖에 있기 때문에

루아 가상머신이 위의 코드를 읽어 들여 test() 라는 함수 호출 부분을 실행하면서 결국 function test() 라는

함수를 호출하게 되는 것이죠.

 


실행하여도 Consol에는 아무 변화가 없다.

 


이렇게 실행하면 test() 라는 함수가 호출되어 Consol 에 정상적으로 출력이 나옵니다.

 

이상으로 루아 코드의 자동 실행과 함수 호출에 대하여 살펴 보았습니다.

 

감사 합니다. 


[루아스크립트]

반응형

1. 설치 

LuaWin 은 설치가 필요없다.

그냥 프로그램을 다운받아 아무 폴더(예: D:\LuaWin) 에 압축을 풀어서 LuaWin.exe 를 실행하면 된다.

 

2. 설치 제거

설치가 필요 없으니 제거 역시 간단하다. 즉 해당 폴더만 지우면 된다.

 

3. LuaWin은 무엇을 지원하나?

지금 버전의 LuaWin은 lua 표준 기능을 지원한다.

 

LuaWin.exe를 실행하면 다음과 같은 창이 뜬다.

 


화면은 크게 두 영역으로 나뉜다.

위(Lua Source) 에는 Lua Code를 작성 하는 부분이고 아랫쪽(Consol)은 Lua code를 실행할 경우 print 함수나 기타 오류등

메시지가 출력되는 영역이다. Consol은 LuaWin 의 콘솔 출력이라 생각하면 된다.

 

Lua Source 영역에 자신이 작성하는 루아 코드를 입력(저장/읽기 등등 메뉴를 통해 가능)한 후 Run 메뉴를 선택하면

실행하게 된다.

 

예) Hello LuaWin !!!

 

다음과 같이 작성하여 실행해 보자. Consol 에 결과가 출력될 것이다.

 


[루아스크립트]

반응형

조건문과 true/false [루아스크립트]

 

조건문은 문장의 결과로서 참/거짓중 하나의 값만을 의미하는 문장을 의미합니다. 여기에는 몇가지 연산자가 비교수단으로 사용됩니다.

  • == : 동일비교.
  • ~= : 다름비교. (위와 반대)
  • >=, <=, >, < : 크기비교.
  • not : 부정. true는 false로, false는 true로.
  • and : "그리고"의 의미. 두개의 조건문이 모두 true여야 true로 처리.
  • or : "또는"의 의미. 두개의 조건문이 모두 false여야 false로 처리.
  • true : 항상 참.
  • false : 항상 거짓.

 

if 문

 

기본 if문은 다음과 같다.

if i ~= 0 then
  print("0이 아니자나!")
end

물론, 아닐 경우도 첨부할 수 있다. 이때에는 else를 사용한다. (else위에 end를 쓰지 않는 것에 주의한다. end는 맨 마지막에 한번만 적으면 된다. )

 

 

if i == 0 then   -- i가 0과 같으면
  print("0이군.")
else
  print("0아님.")
end

 

 

아닐경우 한번더 검사를 하고 싶으면 elseif를 사용한다. 역시 가장 마지막에만 end를 쓴다는 것에 주의.

 

if i == 1 then   -- i가 1과 같으면
  print("1이군.")
elseif i == 0 then  -- 그렇지 않고 i가 0과 같으면
  print("0이네~")
else
  print("0도 1도 아니네~")
end

 


 

while 문

 

기본 문법은 다음과 같다. 이 명령의 의미는 "지정한 조건이 true값을 반환할 동안 반복적으로 실행한다"는 뜻이다.

while 조건문 do....end

 

 

예를 들면, 다음의 문장은 "!"를 100회 출력한다.

i = 0while i ~= 100 do -- i가 100이 아닐동안 반복한다 print("!") i = i + 1end

 

 

repeat 문

 

기본 문법은 다음과 같다. 이 명령의 의미는 "지정한 조건이 true가 될때까지 반복적으로 실행한다"는 뜻이다. (즉, 위 while문과는 반대의 의미이다!)

repeat....until 조건문

 

 

예를 들면, 다음의 문장은 "redpixel"을 50회 출력한다.

i = 50repeat print("redpixel") i = i - 1until i == 0 -- i가 0이 될때까지 반복한다

 

for 문

다른 언어와의 마찬가지로 지정된 범위를 지정함으로서 반복명령을 수행하는 것이 for명령이다.

기본 문법은 다음과 같다

(작성중)


반응형
웹 프로그래밍의 이해

1)웹 프로그래밍의 의미

 우리가 거의 매일 사용하는 웹은 문자 그림 소리 동영상 등의 다양한 정보를 활용하여 전자 우편이나 자료검색
채팅등을 할 수 있는 인터넷 서비스이다.

 웹프로그램은 웹상에서 다양한 서비스를 하기 위해 만들어진 프로그램으로 웹 프로그래밍 언어를 사용하여 만든다.
웹 프로그래밍 언어를 사용하면 정적인 형태의 간단한 자기소개 웹 문서에서부터 게시판, 쇼핑몰, 영화관과같은 화려하고 동적인 형태의 웹 프로그램까지
다양하게 제작할 수 있다.

2)서버와 클라이언트
웹 프로그래밍을 하려면 먼저 서버와 클라이언트를 이해해야 한다. 서버와 클라이언트의 관계는 고객과 판매자의 관계와 유사한데, 가령 고객이 물건을 사기 위해
상점에 들어가면 고객은 판매자에게 필요한 물건을 요청하고 판매자는 고객의 요청에 따라 물건을 판매하는 것처럼 인터넷을 이용하는 경우에도 똑같은 원리가 적용
된다. 즉 고객에 해당되는 컴퓨터인 클라이언트가 판매자에 해당하는 서버에게 서비스를요청하면 서버는 고객이 요청한 서비스를 처리해 결과를 돌려주는 역할을
담당한다. 이때 서버는 서버가 제공하는 서비스의 종류에따라 웹서버, FTP서버,메일서버 등으로 구분한다.

*FTP서버 : 인터넷에서 컴퓨터 간의 파일을 주고받을 수 있는 서비스를 제공하는 서버

*메일서버 : 인터넷상의 메일을 주고받을 수 있도록 서비스를 제공하는 서버

3)웹 프로그램의 동작 과정

클라이언트와 서버 사이에서 웹 프로그램이 동작하는 과정을 살펴보면 다음과 같다.
1.클라이언트가 서버에게 필요한 서비스를 요청한다.
2.클라이언트의 서비스 요청 내용이 서버에 전달된다.
3.서버는 클라이언트가 요청한 서비스를 처리하여 결과를 클라이언트로 보낸다.
4.클라이언트는 서버가 보낸 서비스 처리 결과를 다운받아 웹 브라우저라는 소프트웨어를 이용해 확인한다.


웹브라우저 : 클라이언트 컴퓨터의 창이라고 할 수 있으며, 웹서버가 보내준 결과를 해석하여 클라이언트에게 보여준다.

웹 서버 : 웹 브라우저의 요청을 받아드리고, 요청된 웹 문서의 처리, 결과를 다시 웹 브라우저에게 알려 준다.

Ⅱ.웹 프로그래밍 언어

웹 프로그래밍 언어는 단순히 보여 주기만 할 수 있는 문서 작성용 HTML에서부터 동적인 기능과 상호 작용을 가능하게 하는 여러 가지 언어로 발전해왔다.
이러한 웹프로그래밍 언어에는 클라이언트 측에서 실행되는 프로그램을 만드는 언어와 서버 측에서 실행되는 프로그램을 만드는 언어로 분류한다.

클라이언트 측 언어란 사용자의 웹 브라우저에서 실행되는 웹프로그램을 만드는 언어로, HTML,자바스크립트,VB 스크립트 등이 있다.이러한 클라이언트 측 언어로
작성된 웹프로그램은 사용자가 요청한 서비스가 클라이언트로 모두 다운로드된후 클라이언트에서 실행되기 때문에 서버에 부담을 주지 않는다.

서버측 언어란 클라이언트의 요구에 의하여 서버에서 실행되는 웹 프로그램을 만드는 언어로, 로그인 처리, 게시판사용,예매 확인 등 양방향 으로 동작하는 프로그램
을 만드는데 사용되며, JSP,ASP,PHP등의 언어가 있다.

보통 웹 프로그래밍 언어라고하면 서버 측 언어를 의미한다.

HTML : 웹문서를 만드는데 사용되는 가장 기본적인 언어로,마크업언어(인터넷용 언어처럼 생각되는 경우도많지만, 논문 등의 문서구조를 나타내기위해서 만들어진 언어)
의 기본적인 기능에 하이퍼텍스트(사용자가 비순차적인 검색을 할 수 있도록 제공되는 텍스트,문서속의 특정 자료가 다른 자료나 데이터베이스와 연결되어있어
쉽게 원하는정보를 얻을수 있는것) 기능을 추가하였다. HTML은 정적인 문서를 만드는데 주로 사용한다.

자바스크립트 : 정적인 HTML에 동적인 기능을 추가하기 위해 개발한언어로,동적인 웹 문서 작업에 필요한 다양한 기능을 제공한다. 특정 운영체제에 대하여 제한은
받지 않지만, 채팅 사이트나 게임 등의 고급프로그래밍 작성은 불가능하다.

VB스크립트 : 인터넷 익스플로러의 기본 스크립트 언어로, 비주얼 베이직의 일부 기능을 웹 환경에서 사용할 수 있또록 하여 배우기가 쉬어 빠른시간안에 프로그램을
작성할 수 있다. 그러나 인터넷 익스플로러 이외의 웹브라우저에서는 거의 지원되지않는다는 문제점이있다.

JSP : 자바언어를 기본 문법으로 한 웹 프로그래밍 언어로, 특정 하드웨어나 운영체제상관없이 실행이가능하며 클라이언트에게 결과를 보여주는 부분을 분리하여 작성
할수 있어서 효율적인 작업이 가능하다.

ASP : 윈도 운영 체제에서 실행되는 언어로, 비주얼 베이직 언어를 기본 문법으로 사용한다.

PHP : c언어, 자바와 비슷한 문법 구조를 가지고 있으며, 적은 명령어로 웹프로그래밍이 가능하기 때문에 편리하다. 또 다양한 운영체제에서 사용이 가능하며,
데이터베이스를 활용할 수 있는 기능을 갖추고 있다.

Ⅲ.웹 사이트 개발 과정의 이해
웹사이트는 HTML, 자바스크립트, JSP, ASP등의 웹 프로그래밍 언어와 데이터베이스 프로그램, 기타 멀티미디어 자료등을 이용하여 만들어진다. 웹사이트의
기본적인 계획을 세운 후에 그 계획에 따라 체계적으로 제작되어야 한다. 
웹사이트 개발 과정은 보통 7 단계를 거치게 되는데, 단계별 작업 내용은 다음과 동일하다.

계획수립 → 분석 → 콘텐츠구성 → 정보설계 → 디자인 → 개발,제작 → 테스트,업로드


+ Recent posts