- 조건문과 반복문
1. IF 문
If문은 프로그래밍하면서 가장 많이 쓰이는 제어문 중에 하나로 주어진 조건에서의 값이 참이냐 거짓이냐에 따라 실행할 문자이 결정된다.
조건문이 참(True) 또는 거짓(False) 인지를 평가하고 그 결과에 따라 하나 이상의 명령문을 실행한다.
여기에서 사용한 명령문이란 의미는 실행 스크립트를 가리킨다. 실제 명령문을 사용할 수도 있으며 변수에 값을 저장하는 스크립트를 사용할
수도 있다.
참고 : 명령어 형식에서 사용한 중괄호[]는 생략이 가능하며 생략하였을 경우 디폴트 값이 사용된다.
* 형식 1 - 주어진 조건을 만족하면 Then 이하의 문장을 수행하고 그렇지 않으면 If문을 빠져 나온다.
If 조건문(수식이나 문자식) Then
조건이 참일 경우 실행할 명령문
End If
참고 :
Then 이하에서 여러 명령문을 한 줄에 사용할 경우 콜론(:) 을 기준으로 명령문을 나눌 수 있다. 조건문의 값이 NULL 값이면 거짓으로
취급하며, 대개 조건문은 비교 연산자를 사용하여 값이나 변수를 비교하는 식이다.
Then 이하에 여러 명령문을 한 줄에 사용한 경우의 예를 들면 다음과 같다.
If A > 10 Then A = A +1 : B = B + A :C= C+ B
if.asp
<%@Language="VBScript" CODEPAGE="65001" %> <% Response.CharSet="utf-8" Session.codepage="65001" Response.codepage="65001" Response.ContentType="text/html;charset=utf-8" %> <html> <head> <head> <title>IF.asp</title> <meta http-equiv="content-type" content="text/html"; charset="utf-8" /> </head> </head> <body> <form action="ifresponsd.asp" method="get"> 이름 <input name="name" maxlength="20" /><p> 급료 <input name="salary" maxlength="7" />(단위:만원) <p> <input type="submit" /> <input type="reset" /> </p> </form> </body> </html>
ifresponsd.asp
<%@Language="VBScript" CODEPAGE="65001" %> <% Response.CharSet="utf-8" Session.codepage="65001" Response.codepage="65001" Response.ContentType="text/html;charset=utf-8" %> <html> <head> <head> <title>IF.asp</title> <meta http-equiv="content-type" content="text/html"; charset="utf-8" /> </head> </head> <body> <% name=request.QueryString("name") salary=request.QueryString("salary") response.write " " & name & " 님 만나서 반갑습니다. <p>" if salary >= 400 then salarygrade =4 end if if salary <= 300 then salarygrade =3 end if if salary <=200 then salarygrade=2 end if if salary <= 100 then salarygrade=1 end if if salary <= 100 then salarygrade=1 end if response.write("당신의 급료는 " & salary & "만원이고") response.write(", 당신의 급료 수준은 " & salarygrade & " 수준입니다. <p>") %> </body> </html>
test 님 만나서 반갑습니다.
당신의 급료는 400만원이고, 당신의 급료 수준은 4 수준입니다.
형식 2
- 주어진 조건을 만족하면(참이면) Then 이하 문장을 수행하고, 그렇지 않으면 (거짓이면) Else 이하 문장을 수행한다.
If ... Then ... Else 문도 필요한 만큼 중첩할 수 있다.
If 조건문 Then 조건이 참일 경우 실행할 명령문 Else 조건이 거짓일 경우 실행할 명령문 End If
형식 3
If 조건 1 조건 1이 참일 경우 실행할 명령문 ElseIf 조건2 then 조건2가 참일 경우 실행할 명령문 Else 조건1과 2가 모두 참이 아닐 경우 실행할 명령문 End If
Else 및 ElseIf 절은 모두 선택적인 절이다. If 블록문 안에서 원하는 만큼 ElseIf 문을 사용할 수 있지만, Else 절 뒤는 비어 있어야 한다.
[2] Select Case 문
Select case 수식 또는 문자식 Case 식으로 구분된 목록1(수식 또는 문자식의 값) 첫 번째 명령문 Case 식으로 구분된 목록2 두 번째 명령문 . . . Case Else n번째 명령문 End Select
Case Else 다음에 사용하는 명령문은 어떤 Case 절과도 일치하지 않을 경우 실행할 명령문이다. Select Case 문은 중첩될 수 있으며
중첩되는 각 Select Case 문에는 그와 짝을 이루는 End Select 문이 있어야 한다.
- 예제
선택 버튼 입력 폼에서 선택한 값을 입력받아 해당하는 조건에 맞는 문자열을 출력한다.
- 이 예제에서 Select Case 문을 사용한 UCase 함수는 인수로 받은 문자열의 소문자를 대문자로 바꾸어 주는 함수이다.
<% song =request.form("choice") Select Case ucase(song) case "AA" respond.write "직장인" case "BB" respond.write "학생" case "CC" respond.write "서비스업" case "DD" respond.write "무직" End Select %>
[3] For ... Next 문
- 형식1 - 일반적으로 반복하고자 하는 횟수만큼 실행시킨다. 스텝 값은 생략이 가능하다. 생략하면 디폴트값으로 1씩 증가한다.
For 시작값 to 종료값 step 증가값(스텝값) 명령 문 Next
<%@Language="VBScript" CODEPAGE="65001" %> <% Response.CharSet="utf-8" Session.codepage="65001" Response.codepage="65001" Response.ContentType="text/html;charset=utf-8" %> <html> <head> <head> <title>IF.asp</title> <meta http-equiv="content-type" content="text/html"; charset="utf-8" /> </head> </head> <body> 예1 <br />스텝값이 없는 경우<br /> <% for counter =1 to 2 response.write "1에서 2까지 반복" & "<br />" next %> <hr /> 예2 <br /> 스텝값을 바꾼 경우 1<br /> <% for counter =1 to 3 response.write "1 에서 3까지 반복" & counter & "<br />" next %> <hr /> 예3 <br />스텝값을 바꾼 경우 1<br /> <% for counter=0 to 25 step 5 response.write "0에서 25까지 5씩 반복" & counter & "<br />" next %> <hr /> 예4 <br />스텝값을 바꾼 경우2 <br /> <% for counter =25 to 50 step 5 response.write "초기값이 꼭 1일 필요는 없다." & counter & "<br />" next %> <hr /> 에5 <br /> 스텝값을 바꾼 경우3 <br /> <% for counter=50 to 25 step -5 response.write "스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. " & counter & "<br />" next %> <hr /> </body> </html>
결과 :
예1
스텝값이 없는 경우
1에서 2까지 반복
1에서 2까지 반복
예2
스텝값을 바꾼 경우 1
1 에서 3까지 반복1
1 에서 3까지 반복2
1 에서 3까지 반복3
예3
스텝값을 바꾼 경우 1
0에서 25까지 5씩 반복0
0에서 25까지 5씩 반복5
0에서 25까지 5씩 반복10
0에서 25까지 5씩 반복15
0에서 25까지 5씩 반복20
0에서 25까지 5씩 반복25
예4
스텝값을 바꾼 경우2
초기값이 꼭 1일 필요는 없다.25
초기값이 꼭 1일 필요는 없다.30
초기값이 꼭 1일 필요는 없다.35
초기값이 꼭 1일 필요는 없다.40
초기값이 꼭 1일 필요는 없다.45
초기값이 꼭 1일 필요는 없다.50
에5
스텝값을 바꾼 경우3
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 50
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 45
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 40
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 35
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 30
스텝값이 음수일 경우 처음 시작값이 끝값보다 커야 한다. 25
형식 2 - Exit For 문을 사용하면 카운터 변수가 종료 값에 도달하기 전에 For ... Next 문을 빠져나갈 수 있으며,
Exit For 문은 IF ... Then ...Else 문의 True 블록문에서 사용해야 한다.
물론 조건문이 False 인 동안에는 루프를 변함없이 실행한다.
For 카운터 = 시작값 to 종료값 step 증가값(스텝값) 명령문 if 조건문 then Exit for 명령문 Next
[4] For Each ... Next 문
For Each 문은 컬렉션의 각 항목이나 배열의 각 요소에 따라서 명령문을 반복하여 실행한다. 따라서 컬렉션의 요소 개수를 알 수 없는 경우,
어떤 데이터의 키 값을 모르거나 객체에 몇 개의 데이터 쌍이 있는지 모르는 경우 유용하다.
콜렉션은 키 값을 이용하여 값을 가져오지만 For Each ....Next 문에서 키 값을 알지 못해도 루핑을 처리할 수 있도록 하고 있다.
- 형식
For Each 멤버(요소 변수 ) In 콜렉션(그룹) 명령문 [Exit For] Next [명령문]
<% daysworked=0 for each whatever in request.Form thisvalue=request.form(whatever) If thisvalue ="on" then daysworked=daysworked+1 end if next response.write "당신은 " & daysworked & "일동안 근무하셨군요. 감사합니다. <b>" %>
[5] Do While 문
반복문에서 몇 번을 반복해야 수행해야 하는지 미리 알기 힘들 때가 있다. 이런 경우 사용 가능한 반복문이 while 문이나 Do 문이다.
while 문은 조건 값이 참인 경우 계속 반복문을 수행하고 거짓인 순간 루프를 빠져 나온다. 보통 레코드 셋을 출력하고자 할 때
많이 사용된다.
형식 1 (조건을 앞에 사용한 경우)
Do While 조건문 명령문 [Exit Do] Loop
형식 2 (조건을 뒤에 사용한 경우)
<% Do 명령문 [Exit Do] Loop While 조건문 %>
형식 3 (Do while 문과 동일)
while 조건문 명령문 WEnd
형식 1과 형식 2의 차이는 While 이하 조건의 위치를 실행문의 앞에 두는가 혹은 뒤에 두는가에 따라 달라진다. 조건을 실행문 앞에 둘 경우
조건을 먼저 검사하기 때문에 실행문이 한 번도 수행되지 않을 수도 있다. 반면, 조건을 뒤에 두는 형식 2의 경우는 먼저 실행문을 수행하기
때문에 무조건 한 번 이상 명령문을 수행하게 된다. 이 위치 문제는 Do Until 문에서 마찬가지로 적용된다. 이에 따른 예는 Do Until 문을
참고하기 바란다.
[6] Do Until 문
Do while 문은 주어진 조건이 만족하는 동안 실행문을 반복하는 반면, Do Until 문은 주어진 조건이 만족할 때까지 반복한다.
특히 여기에서는 조건이 만족되지 않으면 조건이 만족할 때까지 반복하여 무한 루프에 빠지는 오류가 발생할 수 있으므로 주의해야 한다.
- 형식 1
Do Until 조건 명령문 [Exit Do] Loop
- 형식 2
Do 명령문 [Exit Do] Loop Until 조건
- 예제
형식 1과 같이 조건이 앞에 있는 경우로 실행문이 Count 값이 1 이 될 때까지 수행된다.
<%@Language="VBScript" CODEPAGE="65001" %> <% Response.CharSet="utf-8" Session.codepage="65001" Response.codepage="65001" Response.ContentType="text/html;charset=utf-8" %> <html> <head> <head> <title>IF.asp</title> <meta http-equiv="content-type" content="text/html"; charset="utf-8" /> </head> <body> <p Do Until 형식 1 예 <br /> <% count=10 Do Until count=1 count =count-1 Response.Write CStr(count) & "" Loop %> </body> </html>
출력 =>
987654321
댓글 ( 4)
댓글 남기기