BLOG ARTICLE 이클립스 | 30 ARTICLE FOUND

  1. 2009.03.09 for 문
  2. 2009.03.09 switch 문 1
  3. 2009.03.05 if 문
  4. 2009.03.04 설명문
  5. 2009.03.03 연산자

for 문

프로그래밍/JSP 2009. 3. 9. 11:38
프로그램의 제어문에서 조건이 참인 동안 특정 구간을 반복 실행하는 제어문을 반복문이라 한다. for 문은 대표적인 반복문으로 형식과 순서도는 다음과 같다.

for 구조

형식

for ( 초기식; 조건식; 증감식 ) {
    실행코드
}


사용자 삽입 이미지

for - flowchart


위 형식에서 초기식은 for 문에서 가장 먼저 실행되는 부분으로 단 한번 수행한다. 조건식은 반복구간(위 형식에서 실행코드 부분)을 수행할 것인지 말 것인지를 판단하기 위한 식으로 결과가 참이면 반복구간을 수행하고 거짓인 경우 반복구간을 수행하지 않고 빠져 나온다. 마지막 증감식은 반복구간을 수행한 후 조건식을 비교하기 전 수행하는 식으로 일반적으로 조건식을 변화시키는 코드가 온다.

다음 프로그램 "for.jsp"는 for 문을 이용 1에서 100까지 자연수의 합을 구하는 프로그램이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

for(i = 1; i <= 100; i ++) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for.jsp 실행결과


위 프로그램에서 변수 i의 값은 1에서 100까지 1씩 증가하며 반복구간의 코드

sum = sum + i ;

를 실행 변수 sum에 누적된 합을 저장하는데 결과적으로 sum에는 5050이 저장되고

out.println(sum) ;

에 의해 5050이 출력된다.

다음 프로그램을 살펴보자. 다음 프로그램 "for-err-inc2.jsp"는 0에서 100까지의 정수 중 짝수의 합을 구하기 위한 프로그램이다. 그러나 이 프로그램을 실행하면 다음과 같이 오류메세지를 출력한다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

for(i = 0; i <= 100; i + 2) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>

사용자 삽입 이미지

for-err-inc2.jsp 실행결과

오류의 원인은 증감식 때문이다. "for-err-inc2.jsp"에서 변수 i의 값은 초기식에 의해 0이 된다. 그리고 조건식이 "0 <= 100"으로 참이 되므로 반복구간

sum = sum + i ;

가 실행된다. 이 때 sum의 값은 0이므로 "sum = 0 + 0"에 의해 sum에는 다시 0이 저장된다. 그 후에 증감식

i + 2

가 실행되는는 이 때 i 의 값은 0이므로 "0 + 2"이 실행되고 다시 조건식을 비교하게 된다. 그런데 이 때 i의 값은 변화되지 않고 여전히 0이므로 조건식 역시 여전히 "0 <= 100"로 참이된다. 즉 아무리 수행해도 변수 i 값은 변하지 않고 반복구간을 무한히 수행하는 무한루프에 빠지게 되기 때문에 오류 메세지를 출력하는 것이다. 그러므로 증감식 부분을 다음과 같이

i = i + 2 또는 i += 2

로 고침으로써 원하는 결과를 얻을 수 있다. 아래 프로그램 "for-inc2.jsp"는 "for-err-inc2.jsp" 프로그램을 올바르게 수정한 후 실행한 결과이다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0 ;

for(i = 0; i <= 100; i = i + 2) {
    sum = sum + i ;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for-inc2.jsp 실행결과


다음 프로그램 "multiply.jsp"를 살펴보자. 이 프로그램을 살펴보면 for문 내부에 다른 for문이 중첩된 경우이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, j;

for(i = 1; i <= 9; i ++) {
    for(j = 1; j <= 9; j ++) {
        out.println(i * j);
        out.println(" ");
    }
    out.println("<br>");
}%>
</body>
</html>

사용자 삽입 이미지

multiply.jsp 순서도


사용자 삽입 이미지

multiply.jsp 실행결과


프로그램과 순서도를 살펴보면 이 경우 바깥쪽 for 문은 아홉번 실행되는데 바깥쪽 for 문이 한 번 실행될 때마다 안쪽 for 문의

out.println(i * j);
out.println(" ");

부분은 아홉 번 실행되므로 결과적으로 이 부분은 총 81(9 x 9) 회 실행된다.

'프로그래밍 > JSP' 카테고리의 다른 글

continue, break 문  (1) 2009.03.09
while, do 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
AND

switch 문

프로그래밍/JSP 2009. 3. 9. 11:26
switch 문은 주어진 수식의 값을 case 문의 값과 비교하여 일치하는 case 문 이하의 실행코드들을 수행하는 구조로 돼 있으며 형식과 순서도는 다음과 같다.

switch 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
    case  값2 : 실행코드 2 ;
    case  값3 : 실행코드 3 ;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

switch - flowchart


다음 프로그램 "switch.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
    case 2 : out.println("모니터");
    case 3 : out.println("프린터");
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

switch.jsp 실행결과


위 프로그램 "switch.jsp"에서 순위를 위한 변수 "ranking"에 초기값으로 2가 저장되어있다. 따라서 switch 문의 수식(이 프로그램에서는 변수)의 결과가 2 이므로 case 문의 값과 일치하는 부분, 즉

case 2 : out.println("모니터");

이하의 코드를 실행하게 되므로

out.println("모니터");
out.println("프린터");

두 개의 실행코드를 실행하고 switch 문을 빠져 나온다. 따라서 결과 역시

"2등 상품은 모니터 프린터 입니다."

를 출력한다. 위 프로그램에서 보면 switch 문 형식에서 보이는 "default : " 부분이 안보이는데 이 부분은 switch 문 수식의 결과와 일치하는 case 부분이 없을 때 실행할 코드는 기술해 주는 부분으로 실행할 코드가 없으면 생략 가능하다. 위 프로그램의 결과로써 1등 상품은 "컴퓨터 모니터 프린터"가 될 것이고, 2등 상품은 "모니터 프린터"가 , 3등 상품은 "프린터"가 될 것이다.

만약 1등 상품으로는 "컴퓨터"를, 2등 상품으로는 "모니터"를, 3등 상품으로는 "프린터"를 각 등수에 따라 하나의 상품만을 받도록 하려면 어느 부분을 고쳐야 할까? 이것은 switch 문 내부에 "break" 문을 삽입함으로써 가능해 진다. break 문은 switch 문 내부의 실행을 종료하고 그 밖으로 빠져 나가도록 프로그램을 제어한다.

다음은 switch 문에서 break를 사용한 경우의 형식과 순서도이다.


break 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
                     break;
    case  값2 : 실행코드 2 ;
                     break;
    case  값3 : 실행코드 3 ;
                     break;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

break - flowchart


다음 프로그램 "break.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
             break;
    case 2 : out.println("모니터");
             break;
    case 3 : out.println("프린터");
             break;
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

break.jsp 실행결과


위 프로그램에서는 int ranking = 2에 의해

case 2 : out.println("모니터");

부분부터 실행하게 되는데 다음 실행할 코드가

break;

이므로 switch 문을 빠져나간다. 따라서 출력 결과는

"2등 상품은 모니터 입니다."

가 된다.

'프로그래밍 > JSP' 카테고리의 다른 글

while, do 문  (0) 2009.03.09
for 문  (0) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
AND

if 문

프로그래밍/JSP 2009. 3. 5. 17:08
if 문은 주어진 조건식의 참, 거짓 여부에 따라 실행되는 코드가 달라질 경우에 사용하는 제어문이다. if 문은 크게 세 가지 구조로 분류할 수 있다.

if 구조

if 구조는 조건식의 결과가 참인 경우에만 실행할 코드가 있을 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}

사용자 삽입 이미지

if - flowchart

다음 프로그램 "if.jsp"과 결과를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int age = 17;

if ( age < 20 ) {
    out.println("미성년은 10%할인 혜택이 있습니다.");
}
%>
</body>
</html>

사용자 삽입 이미지

if.jsp 실행결과


위 프로그램은 int 형 변수 age에 초기값으로 17이 저장돼 있으므로 if 문의 조건식 "age < 20"의 결과는 "17 < 20"으로 참이 되므로 중괄호({ ~ }) 사이의 코드인

out.println("미성년은 10%할인 혜택이 있습니다.");

를 실행한다. 여기서 "out.println"은 java의 출력문으로 JSP에서 출력을 위해 "<%= ~ %>"과 함께 자주 사용되는 출력문 중에 하나다. 만약 변수 age에 20이상의 값이 저장됐다면 조건식이 거짓이 되어 실행결과는 아무 것도 출력되지 않는다.

if ~ else 구조

if ~ else 구조는 조건식의 결과가 참, 거짓에 따라 실행할 코드가 다른 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}
else {
    실행코드 2
}

사용자 삽입 이미지

if~else - flowchart


다음 프로그램 "else.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int age = 20;

if ( age < 20 ) {
    out.println("당신은 미성년 입니다.");
}
else {
    out.println("당신은 성인 입니다.");
}

%>
</body>
</html>

사용자 삽입 이미지

else.jsp 실행결과



위 프로그램에서 변수 age에 초기값 20이 저장되어 있고 이로인해 조건식 "age < 20"은 "20 < 20"으로 거짓이므로 esle 부분의 중괄호에 위치한 코드

out.println("당신은 성인 입니다.");

를 실행한다. 따라서 "당신은 성인 입니다"라는 메세지를 출력한다. 만약 age의 값이 18과 같은, 20보다 작은
수가 저장됐다면 조건식 "age < 20"가 "18 < 20"으로 참이 되므로

out.println("당신은 미성년 입니다.");

부분을 실행하여 "당신은 미성년 입니다."라는 메세지를 출력하게 된다.


if ~ else if ~ else 구조

if ~ else if ~ else 구조는 조건이 여러개인 경우 사용되며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 1 ) {
    실행코드 1
}
else if ( 조건식 2 ) {
    실행코드 2
}
else if ( 조건식 3 ) {
    실행코드 3
}
else {
    실행코드 4
}

사용자 삽입 이미지

if~elseif~else - flowchart


else if 문을 이용 "수", "우", "미", "양", "가"를 출력하는 프로그램 "elseif.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int score = 87;

if ( score >= 90 ) {
    out.println("수");
}
else if ( score >= 80 ) {
    out.println("우");
}

else if ( score >= 70 ) {
    out.println("미");
}
else if ( score >= 60 ) {
    out.println("양");
}
else {
    out.println("가");
}
%>
</body>
</html>

사용자 삽입 이미지

elseif.jsp 실행결과


위 프로그램에서 변수 "score"에 초기값으로 87(점)이 저장되어 있는데, 첫 번째 조건식 "score >= 90"은 "87 >= 90"이 되어 거짓이 되므로 다음 조건식 "score >= 80"을 비교하게 된다. 이 조건식은 "87 >= 80"이 되어 참이 되므로

out.println("우");

을 실행 "우"를 출력한 후 프로그램을 종료한다. 만약 변수 "score"에 50(점)이 저장되어 있다면 모든 위 프로그램의 모든 조건식이 거짓이 되어 마지막 else 부분의 코드를 실행 "가"를 출력할 것이다.

'프로그래밍 > JSP' 카테고리의 다른 글

for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
변수, 상수, 자료형  (0) 2009.03.03
AND

설명문

프로그래밍/JSP 2009. 3. 4. 17:45

모든 프로그래밍 언어는 이해를 돕기위해 프로그램의 수행과는 관계없는 설명문을 달 수 있다. JSP역시 JSP 태그 "<% ~ %>" 내부에서는 java의 설명문을 위한 표시인 "//", "/* ~ */" 을 따른다. 그러나 JSP 태그 외부에서는 "<%-- ~ --%>"를 이용한 JSP 만의 고유 설명문과 "<!-- ~ -->"를 이용한 HTML 설명문이 사용된다. JSP 고유 설명문과 HTML 설명문의 차이점은 JSP 프로그램 실행후 소스보기로 확인했을 때 JSP 고유 설명문의 경우 소스보기로 확인할 수 없으며, HTML 설명문의 경우 소스보기로 확인 가능하다는 점이다.


JSP 태그 내부에서 사용되는 설명문


java 설명문

// 뒤에 1줄 짜리 설명문이 위치하며 줄이 바뀌면 설명문이 끝난다.

/* 사이에 설명문이 위치하며 1줄 이상의 설명문에 사용된다. */


JSP 태그 외부에서 사용되는 설명문

JSP 설명문

<%-- 이 부분은 1 줄 이상 가능한 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>

HTML 설명문

<!-- 이 부분은 1 줄 이상 가능한 HTML 설명문으로 소스보기로 볼 수 있습니다. -->


다음 "comment1.jsp" 프로그램은 JSP에서 사용한 설명문의 예를 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<!-- 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. -->
<body>
<%-- 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)

/*******************************
  국어, 영어, 수학 점수를 합산하여
  3으로 나눈 후 평균을 구한다.
 *******************************/

avg = (kor+eng+mat)/3;
%>
평균 : <%= avg /* 평균점수를 출력한다. */ %> 점
</body>
</html>

사용자 삽입 이미지

comment1.jsp 실행결과


사용자 삽입 이미지

comment1.jsp 실행 후 소스보기 결과



위 프로그램에서는 "<!-- ~ -->"부분의 HTML 설명문과 "<%-- ~ --%>"부분의 JSP 고유 설명문 그리고 Java 설명문에서 비롯된 "//"를 사용한 설명문 2개와 "/* ~ */"를 사용한 설명문 2개 총 6개의 설명문이 사용되었다.

"<!-- 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. -->"

"<%-- 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>"

"// 국어, 영어, 수학 (1줄 설명문)"

"// 평균 (1줄 설명문)"

"/*******************************
  국어, 영어, 수학 점수를 합산하여
  3으로 나눈 후 평균을 구한다.
 *******************************/"

"/* 평균점수를 출력한다. */"

위 프로그램에서 HTML 설명문의 경우 소스보기에서 볼 수 있으나, JSP 고유 설명문의 경우 소스보기에서 볼 수 없다. 그리고 JSP 태그 내부에서 한 줄 설명문 사용 시 주의해야 할 점이 있다. 마지막 설명문을 보면 "/* 평균점수를 출력한다. */"의 경우 한 줄 설명문 이지만 여러 줄 설명문을 위한 "/* ~ */"를 사용하고 있는데, 이 경우 한 줄 설명문을 위한 "//"를 사용하면 안된다는 점이다. 우선 다음 프로그램 "comment2.jsp"의 결과를 보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<!-- 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. -->
<body>
<%-- 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)

/*******************************
  국어, 영어, 수학 점수를 합산하여
  3으로 나눈 후 평균을 구한다.
 *******************************/

avg = (kor+eng+mat)/3;
%>
평균 : <%= avg // 평균점수를 출력한다. %> 점
</body>
</html>

사용자 삽입 이미지

comment2.jsp 실행결과


실행 결과 기대와는 달리 오류메세지만 출력하고 있다. 그 이유는 한 줄 설명을 위한 "//" 처리는 줄의 마지막까지를 설명문으로 간주하기 때문이다. 따라서 위 프로그램의 경우

"평균 : <%= avg // 평균점수를 출력한다. %> 점"

부분에서 설명문은 "// 평균점수를 출력한다." 부분이 아닌 "// 평균점수를 출력한다. %> 점"까지가 설명문으로 취급된다. 따라서 "<%=" 태그에 의해 열린 부분이 있으면 "%>"로 마무리 되야 하는데 "// 평균점수를 출력한다. %> 점" 부분의 "%>" 역시 프로그램의 수행과는 전혀 상관없는 즉 닫힌 JSP 태그로 인식되는 것이 아니라 단지 설명문의 한 부분르로 처리되어 "comment2.jsp"의 마지막 까지 닫힌 JSP 태그인 "%>"를 찾을 수 없기 때문에 오류를 발생시키는 것이다. 따라서 "comment2.jsp"가 올바르게 실행되기 위해서는 "comment3.jsp"와 같이 수정돼야 한다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<!-- 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. -->
<body>
<%-- 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)

/*******************************
  국어, 영어, 수학 점수를 합산하여
  3으로 나눈 후 평균을 구한다.
 *******************************/

avg = (kor+eng+mat)/3;
%>
평균 : <%= avg // 평균점수를 출력한다.
%> 점
</body>
</html>

사용자 삽입 이미지

comment3.jsp 실행결과



'프로그래밍 > JSP' 카테고리의 다른 글

switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
연산자  (0) 2009.03.03
변수, 상수, 자료형  (0) 2009.03.03
JSP 처리과정  (0) 2009.01.06
AND

연산자

프로그래밍/JSP 2009. 3. 3. 16:08
연산자는 수학적 또는 논리적 연산을 수행하는데 사용되는 기호를 의미한다. 다음과 같은 변수의 선언

int a = 10 ;

에서 "="는 int 형 변수 a메 초기값 10을 저장하라는 의미를 가지는 대입연산자 입니다. 이와 같은 연산자 중 자주 사용되는 연산자로는 크게 산술연산자, 대입연산자, 증감연산자, 비교연산자, 논리연산자 등이 있다.

산술연산자

산술연산자는 일반적인 수학계산을 위해 사용되는 연산자로 연산을 위해 두 개의 값이 필요한 이항연산자이다.

+ 더하기 10 + 2  10
- 빼기 10 - 2  8
* 곱하기 10 * 2  20
/ 나누기 10 / 2  5
% 나머지 10 % 2  0

다음은 사칙연사자를 사용한 "arithmetic_op.jsp" 프로그램의 예와 그 결과를 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int a = 10, b = 2, c;
c = a + b;
%>
초기값 : a = 10, b = 2<br>
a + b = 10 + 2 =<%= c %><br>
<% c = a - b; %>
a - b = 10 - 2 = <%= c %><br>
<% c = a * b; %>
a * b = 10 * 2 = <%= c %><br>
<% c = a / b; %>
a / b = 10 / 2 = <%= c %><br>
<% c = a % b; %>
a % b = 10 % 2 = <%= c %><br>
</body>
</html>


사용자 삽입 이미지

arithmetic_op.jsp 실행결과



대입연산자

대입 연산자는 연산자를 기준으로 우변의 결과를 좌변의 변수에 저장하라는 의미를 가지며 지정연산자라고도 불린다. 대입연산자는 우변의 결과를 저장해야 하므로 좌변은 반드시 변수 또는 배열이 와야 한다. 지정연산자 역시 좌변과 우변이 필요한 이항연산자이다.

=   a = b + c   b + c 를 더한 결과를 a 에 저장
+=  a += b   a = a + b 
-=  a -= b   a = a - b
*=  a *= b   a = a * b
/=  a /= b   a = a / b
%=  a %= b  a = a % b

다음 프로그램 "assign_op.jsp"는 다양한 대입연산자를 사용한 예를 보여주고 있다. 이 예에서 대입산자의 우변이 또 다른 수식일 경우 우변을 먼저 계산한 후 그 결과를 가지고 좌변의 변수에 저장된 값과 대입연산자와 연관된 계산을 수행해야 한다. 결과에 그 과정도 함께 나타내고 있다. 이 프로그램에서 대입연산자에 의해 변수 c의 값이 계속 변한다는 점을 유의하자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int a = 3, b = 2, c = 0;
%>
초기값 : a = 10, b = 2<br>
c+=a+b => c=c+(a+b) => c=<%=c%>+(<%=a%>+<%=b%>) => c =
<% c += a + b; %><%= c %><br>
c-=a-b => c=c-(a-b) => c=<%=c%>-(<%=a%>-<%=b%>) => c =
<% c-= a - b; %><%= c %><br>
c*=a+b => c=c*(a+b) => c=<%=c%>*(<%=a%>+<%=b%>) => c =
<% c *= a + b; %><%= c %><br>
c/=a+b => c=c/(a+b) => c=<%=c%>/(<%=a%>+<%=b%>) => c =
<% c /= a + b; %><%= c %><br>
c%=a+b => c=c%(a+b) => c=<%=c%>%(<%=a%>+<%=b%>) => c =
<% c %= a + b; %><%= c %><br>
</body>
</html>


사용자 삽입 이미지

assign_op.jsp 실행결과



증감연산자

증감연산자는 주어진 변수의 값을 1 증가 또는 1 감소 시키는 연산자이다. 증감연산자는 연산자를 중심으로 좌변 또는 우변 중 하나의 변에만 변수가 올 수 있는 단항연산자이다.

++   ++a 또는 a++  변수 a의 값을 1 증가
--   --a 또는 a--  변수 a의 값을 1 감소

위 예에서와 같이 연산자가 앞에 또는 뒤에 올 수 있는데 다른 식과 함께 쓰일 경우 그 결과가 달라질 수 있음에 주의하자.

다음 프로그램 "incdec_op.jsp"는 증감연산자가 변수 앞에 사용될 때와 변수 뒤에 사용될 때의 차이점을 보여주고 있다. 증감연산자가 변수 앞에 사용되면 변수의 값을 먼저 증가 또는 감소 시킨후 나머지 작업을 처리하고, 뒤에 사용되면 다른 작업을 처리한 후 변수의 값을 후에 증가 또는 감소 시킨다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% int a = 10; %>
a : <%= a %><br>
a++ : 출력 후 1 증가 : <%= a++ %><br>
a : <%= a %><br>
++a : 1 증가 후 출력 : <%= ++a %><br>
a : <%= a %><br>
a-- : 출력 후 1 감소 : <%= a-- %><br>
a : <%= a %><br>
--a : 1 감소 후 출력 : <%= --a %><br>
a : <%= a %><br>
</body>
</html>


사용자 삽입 이미지

incdec_op.jsp 실행결과



비교연산자

비교연산자는 양 변의 값의 크기를 비교하는데 사용되는 연산자로 이항연산자이다. 이 연산자를 이용한 연산결과는 true(참), false(거짓)의 불린형으로 반환된다.

==  양 변 값의 크기가 같으면 true(참)
<   우변 값의 크기가 좌변 값의 크기보다 크면 true(참)
<=  우변 값의 크기가 좌변 값의 크기와 같거나 큰면 true(참)
>    우변 값의 크기가 좌변 값의 크기보다 작으면 true(참)
>=   우변 값의 크기가 좌변 값의 크기와 같거나 작으면 true(참)
!= 양 변 값의 크기가 다르면 true(참)'

다음 프로그램 "compare_op.jsp"는 비교연산자의 예를 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
3 == 3L : <%= 3 == 3L %><br>
3 < 3L : <%= 3 < 3L %><br>
3 <= 3L : <%= 3 <= 3L %><br>
3 > 3.0 : <%= 3 > 3.0 %><br>
3 >= 3.0 : <%= 3 >= 3.0 %><br>
3.0 != 3.0F : <%= 3.0 != 3.0F %><br>
</body>
</html>


사용자 삽입 이미지

compare_op.jsp 실행결과



논리연산자

논리연산자는 놀리곱(and), 논리합(or), 부정(not)과 같은 논리연산을 위한 연산자로, 결과값으로 true(참), false(거짓)를 반환한다.

&&  논리곱   양변 모두가 true(참)인 경우에만 true(참)
||   논리합   양변 중 하나면 true(참)이면 true(참)
!  부정  true(참)은 false(거짓), false(거짓)는 true(참)

다음 프로그램 "logical_op.jsp"는 논리연산자의 사용 예를 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
! true : <%= ! true %><br>
! false : <%= ! false %><br>
<br>
true && true : <%= true && true %><br>
true && false : <%= true && false %><br>
false && true : <%= false && true %><br>
false && false : <%= false && false %><br>
<br>
true || true : <%= true || true %><br>
true || false : <%= true || false %><br>
false || true : <%= false || true %><br>
false || false : <%= false || false %><br>
</body>
</html>


사용자 삽입 이미지

 

'프로그래밍 > JSP' 카테고리의 다른 글

if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
변수, 상수, 자료형  (0) 2009.03.03
JSP 처리과정  (0) 2009.01.06
JSP 기본구조  (0) 2008.12.03
AND