2014. 2. 10. 13:12

1. DIM (Dimension) 변수 선언 할 때 사용


Dim name;


2. Set 개체의 인스턴스를 생성할 때 사용


개체는 Object 를 의미



- 사용법


Handphone 개체의 사용 방법
1.Dim myPhone
2.Set myPhone = Server.CreateObject("Telephone.Handphone")
3.myPhone.color = "white"
4.myPhone.number = "011-9971-88XX"
5.myPhone.call("02-584-88XX")
6.myPhone.hangup()
7.Set myPhone = Nothing


1번째 줄에서는 먼저 앞으로 사용될 myPhone 이라는 변수를 선언해 놓았습니다.
그리고 2번째 줄에서는 Server.CreateObject 라는 특별한 메소드를 사용하여
'Handphone 개체의 인스턴스'를 만들어서 myPhone 이라는 변수에 저장하였습니다.
(그러므로 이제 myPhone 이라는 녀석을 Handphone 으로 사용할 수 있게 된 것입니다.)

개체(Object)는 추상적인 의미라는 말씀을 윗 부분에서 드렸습니다.
그렇기 때문에, Handphone 개체를 우리 프로그램에서 직접 가져다 사용할 수는 없고
'인스턴스(Instance)' 를 만들어서 그것을 변수에 저장하여 사용하는 것입니다.
이처럼 '개체의 인스턴스' 를 만들어서 변수에 저장할 때에 사용하는 구문이 바로 Set 구문이 되겠습니다. 

3번과 4번 줄은 속성(Property) 에 값을 할당하는 구문이 되겠습니다.
속성은 사용될 때에 이름과 값, 한 쌍으로 표현이 된다는 말씀을 위에서 드렸었는데,
그 내용이 바로 이 부분의 내용이 되는 것입니다.
보시는 것처럼 myPhone 의 color 속성에는 "white" 라는 값을 넣었으며,
myPhone 의 number 속성에는 "011-9971-88XX" 라는 값을 넣은 것입니다.
(이 구문을 통해 제 핸드폰의 색깔은 하얀 색, 그리고 번호는 "011-9971-88XX" 가 됩니다.)

그리고 5, 6번 줄은 메소드(Method) 를 실행하는 구문이 됩니다.
5번 줄은 call 이라는 메소드를 사용하여 전화를 거는 작업을 수행합니다.
전화를 걸때에는 '전화번호' 가 있어야 하므로, 인자로 "02-584-88XX" 번을 입력했으며,
이 구문을 통해 제 핸드폰은 02-584-88XX 번으로 전화를 걸기 시작합니다.
6번 줄은 전화를 끊는(hangup) 구문이 되겠습니다.
끊을 때에는 특별한 인자가 필요하지 않으므로 인자를 넘겨주지 않았습니다.

그리고 모든 작업을 완료한 다음에는 더이상 핸드폰이 필요하지 않으므로,
7번의 Set myPhone = Nothing 이라는 구문을 사용하여 개체의 인스턴스인 'myPhone' 을 메모리에서 해제합니다. 'myPhone' 을 더 이상 쓰지 않는다고 알려주는 것이지요.



3. IF ~ THEN
- IF ~ THEN 구문은 지난 강좌에서 설명드렸던 구문입니다. 반가우시죠? ^^
오늘은 단지 참과 거짓만이 아닌, 조금 더 많은 경우를 생각해 보려고 합니다.
한가지 예를 들어볼까요? intNumber 라는 변수에 어떤 숫자가 들어있다고 가정하고요.
이중에서 1,2,3 에 대한 경우의 처리가 달라야 한다면 어떻게 할까요?
네. 아마도 다음과 같이 하면 될 것 같습니다.

IF intNumber = 1 THEN
    Response.Write "intNumber 에 들어있는 수는 1입니다!"
ELSEIF intNumber = 2 THEN
    Response.Write "intNumber 에 들어있는 수는 2입니다!"
ELSEIF intNumber = 3 THEN
    Response.Write "intNumber 에 들어있는 수는 3입니다!"
ELSE
    Response.Write "intNumber 에 들어있는 수는 1,2,3 이 아닌 다른 숫자입니다!"
END IF

갑자기 Response.Write 라는 녀석이 나와서 깜짝 놀라셨을 것 같은데요.
이것은 현재 화면에 문자열을 보여주라는(출력하라는) 함수가 되겠습니다.
(지금은 우선 이 정도로만 알아두시고, 다음 기회에 조금 더 자세히 알아보도록 하겠습니다.)

위의 조건절이 이해가 가시나요?
intNumber 에 들어있는 숫자가 1이라면 가장 위의 조건을 만족하게 되고, 화면에는 두번째 라인에 있는 "intNumber 에 들어있는 수는 1입니다!" 라는 문자열이 출력되게 됩니다.
만약 2라면? 그렇다면 세번째 라인에 있는 조건을 만족하게 되고 화면에는 "intNumber 에 들어있는 수는 2입니다!" 라는 문자열이 출력되게 됩니다.
마찬가지로 3이면 다섯번째 라인에 있는 조건을 만족하게 되고 "intNumber 에 들어있는 수는 3입니다!" 라는 문자열이 화면에 출력되게 됩니다.
그런데.. 1, 2, 3 이 아닌 그 외의 수라면 어떨까요?
그때에는 어느 경우에도 해당되지 않으므로 7번째 라인에 있는 ELSE 조건에 걸리게 되고,
화면에는 "intNumber 에 들어있는 수는 1,2,3 이 아닌 다른 숫자입니다!" 가 보여집니다.

이처럼 몇가지의 조건이 있을 때, 각각의 조건에 따라 다른 과정을 거치게 하고 싶을 때 사용하는 구문이 바로 IF ~ THEN 구문이 되겠습니다.

4. SELECT CASE
- 'SELECT CASE' 문 역시 IF ~ THEN 구문과 마찬가지로 '조건 구문' 이 되겠습니다.
하지만 SELECT CASE 는 '조건이 많을 때' 주로 사용합니다. 예를 들어 볼까요?
위에서는 intNumber 라는 변수에 1,2,3 의 숫자가 들어가는 경우에만 다른 처리를 했습니다.
그런데 이번엔 3까지가 아닌 10까지 다른 처리를 하고 싶어 졌습니다. 그러면 어떻게 할까요?

물론 IF ~ THEN 으로도 가능합니다.
하지만 이렇게 조건이 많은 경우에는 보통 SELECT CASE 문을 사용합니다.
다음의 내용처럼 말이지요.

SELECT CASE intNumber
CASE 1
    Response.Write "intNumber 에 들어있는 수는 1입니다!"
CASE 2
    Response.Write "intNumber 에 들어있는 수는 2입니다!"
CASE 3
    Response.Write "intNumber 에 들어있는 수는 3입니다!"
CASE 4
    Response.Write "intNumber 에 들어있는 수는 4입니다!"
CASE 5
    Response.Write "intNumber 에 들어있는 수는 5입니다!"
CASE 6
    Response.Write "intNumber 에 들어있는 수는 6입니다!"
CASE 7,8,9
    Response.Write "intNumber 에 들어있는 수는 7,8,9 중 하나입니다!"
CASE 10
    Response.Write "intNumber 에 들어있는 수는 10입니다!"
CASE ELSE
    Response.Write "intNumber 에 들어있는 수는 1부터 10 사이의 정수가 아닙니다."
END SELECT

SELECT CASE 문의 사용법은 위와 같습니다.
SELECT CASE 다음에 조건을 검사할 변수를 위치시키고,
CASE 1, CASE 2, CASE 3... 와 같은 방법으로 조건을 확인하는 것입니다.
보시다시피 IF 문보다 훨씬 간결하고 사용이 편리합니다. (별로 어렵지 않지요?)
중간에 나오는 CASE 7,8,9 처럼 콤마(,) 를 사용하여 조건을 중복할 수도 있습니다.

IF ~ THEN 과 SELECT CASE 는 자주 사용되는 구문이므로, 잘 알아두시면 좋습니다.
(써놓고 나니까 무슨 전문 입시 학원의 강사같은 발언이군요. ^^)

5. FOR ~ NEXT
- FOR ~ NEXT 구문은 동일한 형식의 작업을 반복하려 할 때 주로 사용하는 구문입니다.
예를 들어 1부터 100까지의 숫자를 화면에 보여지게 하라는 명령이 떨어졌을 때,
'좋아, 뭐.. 그정도라면' 이라고 생각하며 빠른 타자로 1부터 100까지 입력할 수 있겠습니다.
그런데 만약 1부터 10000까지의 숫자를 화면에 보여지게 하라는 명령이 떨어졌다면...
이제부터는 더이상 농담이 아닌 상황이 발생하는 것입니다.
(계산해보니 1초에 숫자 하나씩 입력한다고 해도 얼추 3시간 정도 걸리는 군요.)

이럴 때 유용하게 사용되는 것이 바로 FOR ~ NEXT 구문입니다.

만약에 1부터 10000까지의 숫자를 화면에 출력하라는 명령이 떨어졌을 때,
FOR ~ NEXT 구문을 이용하면 다음과 같이 쓸 수 있습니다.

DIM intLoop
FOR intLoop = 1 TO 10000 STEP 1
    Response.write intLoop & "<BR>"
NEXT

이렇게 작성한 후 ASP 페이지를 실행시키면 - 직접 테스트 해보는 것도 재미있습니다 -
1부터 10000까지의 (1씩 증가하는) 숫자들의 나열을 보실 수가 있습니다.
숫자의 뒤에 <BR> 태그를 추가한 것은 '다음 줄로 바꾸기' 위해서입니다.
만약 <BR> 태그가 없다면 한줄로 주욱~ 나열된 - 보기가 꽤 어려운 - 형태가 출력됩니다.

FOR ~ NEXT 구문의 형식은 다음과 같습니다.

FOR 시작 TO  STEP 증가
    반복되어 실행될 구문
NEXT

일반적으로 많이 쓰이는 방식은..
시작 부분에 작은 수, 끝 부분에 큰 수를 넣은 다음 1씩 증가하면서 실행하는 방식입니다.
(여기서 STEP 부분은 생략할 수 있고, 생략하게 되면 기본적으로 1씩 증가하게 됩니다.)

그렇게 되면 이 조건(끝 부분)이 만족될 때까지 실행 구문이 반복적으로 실행되는 것이지요.
이처럼 FOR ~ NEXT 구문은 반복 실행해야 하는 횟수를 알고 있을 때 사용하면 편리합니다.

5. DO WHILE
- DO WHILE 문도 FOR ~ NEXT 문과 마찬가지로 동일한 형식의 반복 작업시에 사용합니다.
하지만 FOR ~ NEXT 문이 반복 실행 횟수를 정확하게 알고 있을 때 주로 사용한다면,
DO WHILE 문은 실행 횟수를 정확하게 모르고 있을 때, 또는 순환할 때마다 조건을 검사해서 계속 순환할 지 여부를 체크해야 할 때 사용하는 것이 유리합니다.

위에서 FOR ~ NEXT 문에서 사용한 예제를 DO WHILE 로 변경해 볼까요?
(참고로 아래의 내용은 FOR ~ NEXT 예제의 결과와 완전히 일치합니다.)

DIM intLoop
intLoop = 1
DO WHILE intLoop <= 10000
    Response.write intLoop & "<BR>"
    intLoop = intLoop + 1
LOOP

FOR ~ NEXT 문보다는 약간 복잡해 보이나요? 간단하게 설명을 드리도록 하겠습니다.
두번째 줄에서, 우선 DO WHILE 문을 시작하기 전에 intLoop 변수에 초기값 1을 대입합니다.
세번째 줄이 가장 중요한 부분이 되겠는데요.
DO WHILE intLoop <= 10000 이라는 부분의 의미는
'intLoop 변수에 담긴 숫자가 10000보다 같거나 작은 동안에는 계속 실행해라'
는 뜻이 됩니다. (이 내용은 순환할 때마다 매번 검사합니다.)

그리고 5번째 줄에 intLoop = intLoop + 1 이라는 구문이 있는데,
이 부분은 프로그램을 처음 공부하시는 분들께서 가장 혼동하기 쉬운 부분 중에 하나입니다.

이것은 'intLoop 와 intLoop + 1 이 같다' 는 'equal' 의 의미가 아닙니다. (말이 안되죠?)
이 구문의 의미를 해석하면, '왼쪽에 있는 intLoop 라는 변수에다가, 오른쪽에 있는 intLoop 변수의 현재 값에 1을 더한 결과 값을 대입해라' 라는 뜻이 됩니다.
('=' 은 '오른쪽에서 계산된 값'을 '왼쪽의 변수에 대입' 하라는 의미를 가지고 있습니다.
이때 사용되는 '=' 를 '대입 연산자' 라고 부릅니다. 상식으로 알아두시면 좋겠지요?)

두번째 줄에 나온 intLoop = 1 도 마찬가지입니다.
왼쪽에 있는 intLoop 라는 변수에 오른쪽에 있는 숫자 1을 대입하라는 뜻이지요.
그리하여 6번째 줄에 있는 LOOP 를 만나게 되면 다시 3번째 줄로 돌아간 다음,
조건을 다시 검사하고, 조건과 일치하면 구문을 반복하게 되는 것입니다.

순환문을 사용하실 때, 여러분들께서 주의하셔야 할 점이 있습니다.

만약 위의 DO WHILE 문에서.. 5번째 줄을 깜빡 잊고 입력하지 않았다면 어떻게 될까요?
intLoop 변수는 증가하지 않으므로 항상 1이 될 것이고..
때문에 DO WHILE intLoop <= 10000 구문은 항상 참이 되어서 계속 실행될 것입니다.
즉, 이 순환문은 절대로 종료되지 않는 것이지요.

이것을 '무한 루프' 라고 합니다. '무한하게 계속되는 순환문' 이라는 뜻이지요.
무한 루프에 빠지게 되면 컴퓨터를 강제 종료해야 하는 등, 심각한 사태가 발생할 수 있습니다.
(권장하고 싶지는 않지만, 궁금하신 분들께서는 위의 DO WHILE 문에서 5번째 줄을 생략하고 실행해 보시기 바랍니다. 아마 컴퓨터 CPU 사용률이 급격히 증가하여 컴퓨터가 느려지고, 심지어 심한 경우에는 먹통이 되어버리는 경우를 목격하실 수도 있습니다.)



출저:  태요 asp

Posted by hoonihoon