블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday

'Lua'에 해당되는 글 5건

  1. 2012.03.05 Lua 04. 문자열 1
  2. 2012.03.05 Lua 03. math 3
  3. 2012.03.05 Lua 02. 함수 1
  4. 2012.03.05 Lua 01. 문법
  5. 2012.02.16 루아 에디트플러스에서 실행 1

Lua 04. 문자열

LUA / 2012. 3. 5. 10:34

1. 문자를 숫자로,  숫자를 문자로

 - 우린 c 에서  atoi 등의 함수를 사용함에 있어 문자와 숫자를 자유로이 변환할 수 있었다..

 - 루아 역시 이러한 기능이 제공된다.

 

문자에서 숫자 :  tonumber()

숫자에서 문자 :  tostring()

 

 

2. string.char 함수,  linefeed (줄넘김, 개행)

 - string.char(n1, n2, ... )

 - if ( str == 0x0a )

 - 사실 우리는 이러한 16진수 코드를 간간히 사용하며 이러한 방식에 익숙하다..

 - 루아에서는  문자열 변수.char() 함수 를 통해 파일쓰기에서 유용하게 사용 될 수 있을것이다.

 

  8  -  백스페이스

  9  -  탭

10  -  줄넘김

 

 

sample code

 

myFile:write( string.char (10)  ) 

 

 

 

3. string.len 함수, 문자열 길이 얻기

 - string.len( myString )

 - 별 말이 필요 없다

 

sample code

 

str = "12345"

string.len( str )

 

 

4. string.sub 함수

 - string.sub ( myString, start, end )

 - 이 함수는 memcpy 함수를 떠올리게 된다.  원하는 문자열 변수와  시작지점, 끝 지점을 대입하면

    원하는 시작위치부터 원하는 길이만큼을 돌려준다.

 

 

 

 

 

 

월/일/년  시/분/초  를 얻는법

 

sample code

 

string.format( "%s", os.date() ) )

 

'LUA' 카테고리의 다른 글

루아(LUA) 강좌 자료  (5) 2012.03.05
Lua 03. math  (3) 2012.03.05
Lua 02. 함수  (1) 2012.03.05
Lua 01. 문법  (0) 2012.03.05
Luci Reference: Templates  (3) 2012.02.17
Posted by GUCCI
, |

Lua 03. math

LUA / 2012. 3. 5. 10:33

수학 함수들은 math 테이블에 들어있다.

 

 

math.abs     math.acos   math.asin       math.atan       math.atan2
math.ceil     math.cos      math.deg       math.exp        math.floor
math.log      math.log10   math.max       math.min        math.mod
math.pow    math.rad      math.sin         math.sqrt        math.tan
math.frexp   math.ldexp   math.random  math.randomseed

 

math.pi

 

 

실수를 정수로...

 

floor 함수를 활용한다.

 

반올림이 필요할 경우 0.5 를 더한 뒤 floor 함수를 사용하면 될 것이다.

'LUA' 카테고리의 다른 글

루아(LUA) 강좌 자료  (5) 2012.03.05
Lua 04. 문자열  (1) 2012.03.05
Lua 02. 함수  (1) 2012.03.05
Lua 01. 문법  (0) 2012.03.05
Luci Reference: Templates  (3) 2012.02.17
Posted by GUCCI
, |

Lua 02. 함수

LUA / 2012. 3. 5. 10:32

1. 함수가 왔다

 - 루아에서는 함수는 c 와 유사하면서도 다른 독특한 성격을 지녔다.

 - 무슨 말이 필요하랴.. 예제를 보자.

 

sample code1

 

function Swap()

    -- ...............

end

 

 

함수의 시작은 function  이며   은   end 이다.

 

 

 - 루아에서 함수는 단일 및 다중 파라메터를 지원한다.

 

function Swap( a )

function Swap( a, b, c, d )

 

 

 

 - 놀라운 사실이다!   가변인자를 지원한다..

 

sample code2

 

function Swap( ... )

     for  indx = 1, arg.n

     do

              arg[1]  -- .........................

     end

end

 

 

 

요점만 말하겠다..   arg.n  을 통하여 개수를 파악할 수 있다.

 

사용법은 배열처럼 (   arg[1]  )  사용하면 된다.

 

사용 예 )

    function Swap( a,  b,  ... )

 

 

 

 

 - Return  ★★★★☆

 

  루아의 함수도 반환값(return value)을 돌릴 수 있다.  그것도 여러개도 된다!!  이건 정말 멋진 기능이다~ 샘플부터 보자.

 

sample code3

 

function GetTime()

     TimeStr  = " 몹시 흥분 "

     return TimeStr

end

 

 

 

sample code4   -- made sample.lua

 

function WhereAreYouFrom()
       str1 = "허리도"
       str2 = "가늘군"
       str3 = "만지면"
       str4 = "부러지리"
   
       strTotal = string.format("%s %s %s %s", str1, str2, str3, str4 )
    
       return str1, str2, str3, str4, strTotal
end

 

print( WhereAreYouFrom() )

 

 

sample code5   -- made sample.lua

 

function WhereAreYouFrom()
   str1 = "허리도"
   str2 = "가늘군"
   str3 = "만지면"
   str4 = "부러지리"
   
   strTotal = string.format("%s %s %s %s", str1, str2, str3, str4 )
   
   return str1, str2, str3, str4, strTotal
end

 

a,b,c,d,e = WhereAreYouFrom()

print(a,b,c,d,e)

 

 

 

 

두 샘플 모두 결과는 같다.

 

루아의 return 은 c,c++ 에서 클래스 및 구조체 형태의 덩어리를 정의하고 그것을 리턴하는 방식 등의 번거로움을 한방에 깬다.

 

 

 

 

 아직 return 에 대하여 끝난것이 아니다... 샘플부터 보자 ..

 

sample code6   --  made by sample.lua

 

function Home()


      print("집입니다.. 아 오늘 하루 쉬고 싶당... 그래도 출근해야지..")
      return Company()


end

 

function Company()


     local NightDuty = 1
     print("회삽니다..  아 오늘도 욜라 정신없이 코딩중이다.. \n집에가서 와우하고싶당.. ㅠ_ㅠ")
 
     if NightDuty == 1 then
              return FullTimeMode()

     else 
               print("와~~~ 퇴근이다~~ 집에가서 와우하자~")
               return Home()
     end
 
    return print("섹시미녀와의 데이트")

end

 

function FullTimeMode()


 print("오늘도 야근모드입니다... 집에가서 와우하긴 다 틀렸습니다 ㅠ_ㅠ")


end

 

 

  c, c++ 에서 겪은 순차적인 프로그래밍과는 거리가 먼 방식임을 알 수 있다..

  이러한 구조는 c 에서 사용하던 goto 문과 매우 흡사하며 필자는 플래시의 스크립트에서도 겪어봤다...

 

  솔직히 전 이론이 부실합니다... 호출스택이 어쩌고 저쩌고... 말 할 능력이 안됨을 용서하십시오 ㅠ_ㅠ

 

  - 서적에 설명된 내용을 대신 합니다..

 

  함수 호출들이 꼬리에 꼬리를 물고 있는 상황이라도 루아의 스택이 넘치는 일을 방지할 수 있다는 점에서 유용하다

  함수 호출 시 루아는 호출에 관련된 값들과 변수들을 '스택'에 쌓는다.

  그 값들은 호출이 끝나면 다시 스택에서 뽑혀지다.

  그런데 함수 안에서 또 다른 함수를 호출하는 '호출 연쇄'가 길게 이어지면,

  크기가 제한된 스택이 꽉 차서 루아 인터프리터가 죽는 일이 발생하다.

  그러나 앞서 언급한 특징을 이용하면 그런 일을 피할 수 있다. 

'LUA' 카테고리의 다른 글

Lua 04. 문자열  (1) 2012.03.05
Lua 03. math  (3) 2012.03.05
Lua 01. 문법  (0) 2012.03.05
Luci Reference: Templates  (3) 2012.02.17
LUA IDE 환경  (4) 2012.02.16
Posted by GUCCI
, |

Lua 01. 문법

LUA / 2012. 3. 5. 10:30

Lua 기초 문법 중 식별자 (Identifier) 에 대해 알아보겠습니다.
Identifier 한글로 식별자라고 번역하기도 하는 그것은 프로그래밍 언어에서 사용하는

단어들을 의미합니다.
< i, like, playing, video, games > 뭐 이런 거를 말하는데요.

변수/함수/클래스/모듈/키워드 등등의 이름으로
사용할 수 있는 단어들입니다. 물론 사용자는 키워드나 예약된 단어는 사용할 수 없습니다만

모조리 식별자 입니다.


1. 기초 규칙
다른 프로그래밍 언어와 비슷한 규칙으로 되어 있습니다.
1) 문자, 숫자, _ (Underscore) 로 구성
2) 첫 문자는 숫자가 될 수 없음
3) keyword를 포함한 예약된 단어와 중복 불능
4) 대소문자 구별함
5) 내부 전역 변수명 사용 금지


2. 조건 1 - 문자
Lua 에서 식별자로 사용 가능한 문자는 현재 시스템의 locale에서 표현할 수 있는 문자입니다.
locale에 대해 간단히 설명하자면
현재 한글 Windows 를 사용한다면 당연히 Korean 이 기본 locale로 설정되며,
Linux 에서 $LANG 을 en_US 등으로 설명했다면 English 가 되는 것입니다.
그래서 Lua 를 한글 Windows 에서 실행한다면 한글로 변수나 함수 이름을 사용할 수 있습니다.
단, Lua는 플랫폼 독립적이며 다른 언어와의 통신이 되야하고 세계 어디에서도 사용할 수 있는 프로그램을 작성하는데 사용할 것이므로 되도록 locale 의 영향을 받는 한글/일어/중문 등은 사용하지 않는 것이 좋습니다.
강좌에서 모든 예제는 a ~ z, A ~ Z 의 52 개 알파벳 만을 사용합니다.

 

Lua는 대소문자를 구별합니다.
C/C++ 과 마찬가지로 대문자와 소문자는 다른 문자로 인식합니다. 이 또한 locale 에 따릅니다.
locale에 따라 대소문자 규칙이 달라집니다. 따라서 이러한 이유 때문에도 알파벳만을 사용하는 것을 권장합니다.
아래 단어는 모두 다른 식별자 입니다.
where
Where
WHERE


3. 조건 2 - 숫자
숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 를 말합니다.
숫자를 문자의 일부로 해석하지 않는 것은 일반 문자와 숫자 사이에 차이점 때문입니다.
첫 문자는 숫자가 될 수 없음

바로 이 조건 때문인데요.
32Bit 와 같은 단어는 식별자가 될 수 없다 이죠.
이는 C/C++ 을 포함한 대부분의 언어가 지정하는 규약입니다.


4. 조건 3 - _ (Underscore)
밑줄이라고 합니다.
_ 는 문자의 하나로 특별한 제약은 없습니다.
식별자 앞,뒤,중간 어디에도 사용할 수 있습니다.
심지어 _ 하나로도 식별자를 만들 수 있습니다. 이는 추후 강좌에서 예제와 함께 설명하겠습니다.
단, _VERSION 과 같이 Lua 내부에서 사용하는 전역 식별자들이 _로 시작하여 모두 대문자로 이루어져있어 이러한 식별자들과 구분하는 것이 좋습니다.


5. 조건 4 - Keyword
모든 프로그래밍 언어가 그렇듯이 Lua 또한 keyword는 식별자로 사용할 수 없습니다.
and  break  do  else  elseif  end
false  for  function if  in  local
nil  not  or  repeat return then
true  until  while
추가로 모든 식별자에는 연산자와 같은 문자를 사용할 수 없습니다.
+ - * / % ^ #
== ~= <= >= < > =
( ) { } [ ] ;
: , . .. ...
C/C++ 에서 일반적으로 사용하는 identifier 규칙 그대로인 듯 합니다.
단지 _UPPERCASE 와 같은 _로 시작하고 대문자로 이루어진 많은 전역변수가 존재하여
이를 소스코드에서 사용할 때에 문법 오류 처리가 안된다는 것이 조금은 다르군요.
C/C++ 에서는 __FILE__ 과 같은 단어는 실행까지 못 가고 컴파일 타임에 오류를 검출할 수 있는데
Lua 는 이러한 부분도 모두 전역 변수이므로 자칫 잘못하면 원래 전역 변수 값을 덮어쓰는
무서운 결과를 초래합니다. 이는 실행 시간에도 정상 작동 하는 것 처럼 보이다 종국에
문제를 일으킬 가능성이 높아 아주 위험합니다.
_ 로 시작하는 단어만 주의한다면 별다른 어려움은 없겠습니다.

 

Ex.

1. 상수는 대문자와 밑줄만 사용한다   MY_CONSTANT

2. 변수는 소문자로 시작한다.            myVariable

3. 전연 변수는 소문자 g로 시작한다.  gMyGlobal

4. 함수는 대문자로 시작한다.            MyFunction()

5. 지역변수는 local 키워드 사용        local myValue

   < Tip - 지역변수 설정시 초기값을 주지 않으면  nil값을 가지게 된다. >


이것으로 이번 강좌를 마칩니다.

'LUA' 카테고리의 다른 글

Lua 03. math  (3) 2012.03.05
Lua 02. 함수  (1) 2012.03.05
Luci Reference: Templates  (3) 2012.02.17
LUA IDE 환경  (4) 2012.02.16
루아 에디트플러스에서 실행  (1) 2012.02.16
Posted by GUCCI
, |

<루아 구문 파일 등록>

1. 도구 -> 기본설정
 

2.  lua51.stx 구문파일 추가. 

 

<루아 인터프리터>


1. 도구 -> 사용자도구

 

2. 루아의 인터프리터가 위치한 파일을 등록시킨다.

 

ctrl + 1 를 누르면 인터프리터를 실행시킬 수 있다.

'LUA' 카테고리의 다른 글

Lua 03. math  (3) 2012.03.05
Lua 02. 함수  (1) 2012.03.05
Lua 01. 문법  (0) 2012.03.05
Luci Reference: Templates  (3) 2012.02.17
LUA IDE 환경  (4) 2012.02.16
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함