RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'2006/09'에 해당되는 글 206
2006/09/08  진수 변환  
2006/09/08  "alert" 레이어로 띄우기  
2006/09/08  JavaScript Reference  
2006/09/08  정규표현식이란  
2006/09/08  ascii code 아스키 코드표  
2006/09/08  SUBQUERY – NOT EXISTS  
2006/09/08  연산자  
출처 카페 > Sharon Stone / nasonark
원본 http://cafe.naver.com/sharonstone/23

JavaScript의 문법에는 연산자, 제어문, 전역함수가 있다.


연산자는 JavaScript의 가장 기초가 되는 구문으로 C 언어와 같은 동작을 한다. 

제어문은 연산자와 함께 JavaScript의 가장 기초가 되는 구문으로, C언어와 거의 유사하다.

전역함수는 브라우저에 내장되어 있는 함수로 별도의 객체를 지정하지 않고도 사용할 수 있
는 함수이다.

이들은 JavaScript를 사용하기 위해 최소한 알아두어야 할 문법으로 웹페이지에 JavaScript
를 사용한다면 반드시 익혀둘 필요가 있다.


연산자

  연산자는 JavaScript의 가장 기초가 되는 구문으로 C 언어와 같은 동작을 한다. C언어를
안다면 이 페이지는 건너 뛰어도 상관없지만 C언어를 모른다고 이 페이지가 어려운 것은
아니다. 간단한 산수에 불과할 뿐이다. JavaScript를 사용할 때 가장 기초가 되는 것들이다.


◈ 지정(Assignment) 연산자 

변수에 값을 지정하는 연산자이다. 

x = y

변수 x에게 값 y를 지정한다. 왼쪽에 있는 것이 변수이고 오른쪽에 있는 것이 지정할 값으
로 수학의 같다(equal)라는 개념이 아니고 값을 지정하는 것이다. 항상 변수는 왼쪽에 있고
지정할 값은 오른쪽에 위치한다. 

x = 5

로 지정하면 변수 x에게 정수 5를 저장해서 alert(x) 로 하면 5가 나온다. 

var x = 5
x = x + 5
alert(x)

로 하면 x는 10이 된다. 처음 5에서 5를 더해주고 x 에 더한 값을 지정해서 10으로 된다. 


◈ 산술(Arithmetic) 연산자

-는 빼기, +는 더하기, *는 곱하기, /는 나누기, ++ 는 증가 연산자, -- 는 감소연산자, 
-변수는 부정연산자 이다. 

var x = 4 / 2

로 하면 x는 2가 된다.  4나누기 2를 수행한 값이다. 

x = 5 % 2

위의 값은 1이 된다. %는 앞 값을 뒤의 값으로 나누었을 때의 나머지 값을 반환한다. 

var x = 5
x++

x는 6이다. x++ 는 x = x + 1 과 같은 작동을 한다. 즉, 1을 더해주고 1이 증가한 값을 지
정해 준다. 짧게 쓸 수 있어서 많이 사용한다. ++x도 비슷하지만 차이점이 있다. 

var x = 5; var y = 5
var w = 0; var z = 0
w = x++
z = ++y

로 하면 변수 w는 5가 되고 z는 6으로 된다. 뒤에 있는 ++은 지정식을 수행한 후에 증가연
산을 하고 앞에 있는 ++은 증가연산을 먼저 하고 지정식을 수행해서 w, z가 1이 차이가 나
게 된다. 

var x = 5
x--

x는 4가 된다. x = x - 1 과 같고 나머지 사항도 위의 ++과 같다. 

var x = 5
x = -x

x는 -5 이다. 변수에 "-" 빼기 기호를 붙이면 값의 부호를 바꾸는 부정 연산자로 양수는 음
수로 음수는 양수로 바꾼다. 

x + = y, x = x + y
x - = y, x = x - y
x * = y, x = x * y
x / = y, x = x / y
x % = y, x = x % y
x << = y, x = x << y
x >> = y, x = x >> y
x >>> = y, x = x >>> y
x & = y, x = x & y
x * = y, x = x * Y
x | = y, x = x | y

위의 지정식에서 왼쪽의 지정은 오른쪽의 지정과 같은 식으로 작동한다. 각 부호의 사용법
은 -는 빼기, +는 더하기, *는 곱하기, /는 나누기, %는 나누고 남은 나머지, <<, >>, >>>
는 비트연산, &, ^, |는 조건 비트연산이다.

◈ 비교(Comparison) 연산자 

두개의 값에서 크기를 비교하여 참, 거짓을 반환해 주는 것으로 보통 if, for, while 같은 조
건문에서 사용한다.

연산자 의미
== 같다
|= 같지 않다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

if( 3 < 5 ) alert("참입니다")

로 3이 5보다 작으므로 "참입니다" 가 나온다. 

var x = 12
var y = 20
if( x >= y ) alert("참입니다")

로 하면 12가 20보다 같거나 크지 않으므로 거짓을 반환한다. 그래서 if문은 수행되지 않아
서 "참입니다"는 나오지 않는다. if () 조건문은 비교식이 참이면 자신의 문장을 실행하고 거
짓이면 실행하지 않는다. 자세한 설명은 아래의 조건문 페이지에서 설명하겠다. 


◈ 논리(Logical) 연산자

두개의 비교식을 검사하여 참, 거짓을 말해준다. 

연산자 의미
&& 두개의 비교식이 둘 다 참이면 참(true)을, 하나나 둘 다 거짓이면 거짓(false)을 반환한
다.
||= 두개의 비교식 중에서 하나 이상이 참이면 참을, 둘 다 거짓이면 거짓을 반환한다.
! 한 개의 변수가 참이면 거짓, 거짓이면 참을 반환한다.

if( 3 < 5 && 10 < 20 ) alert("참입니다")
if( 100 < 50 || 200 > 150 ) alert("참입니다")

위는 둘 다 "참입니다" 가 나온다. 

var x = 0
if( !x ) alert("참입니다")

로 하면 "참입니다" 가 나온다. 정수 0은 if문에서 거짓인데 반대로 하는 연산자 ! 를 지정
하여서 참으로 된다. 

◈ 특수 연산자 

new 는 브라우저 내장 객체인 Array, Boolean, Date, Function, Math, Number, String 객체
를 변수에 지정할 수 있게 한다. xx = new Function(인자)로 xx를 Function 객체의 생성자
로 만든다.

typeof 는 값이 어떤 종류인지 확인한다. 종류는 string, boolean, number, object, func,
undefined 이다. 비교한 값이 맞으면 true 값을 반환한다. 

var XX = "123A" 
if ( typeof XX == "string" ) 
  alert("XX는 string입니다.") 
else 
  alert("XX는 string이 아닙니다.") 

다른 값도 마찬가지로 확인할 수 있다 

void 는 링크의 'href'에서 JavaScript 구문을 지정하는 것으로 void()로 사용한
다. 괄호 안에 값을 넣어주면 그 값을 실행하는데 0이나 null은 아무런 실행을 하지 않는다.
주로 사용하는 곳은 링크에게 javaScript 구문을 지정시 문서를 이동하지 않게 하는데 사용
한다. 

< a href="void(0)">링크 < / a >
-->주의 : < a ..... < / a > 공간이 있는데 없이 붙여 써야함. 아래는 붙여쓸경우
예)<a href="void(0)">링크</a>

() ? : 는 괄호 속에 있는 값이 참이면 물음표 다음의 구문을, 거짓이면 colon(:) 다음의 구
문을 지정한다. 조건문 if else 문과 비슷한 작동을 하는 것이다. 

var xx = (true) ? 100 : 200

으로 하면 xx는 100으로 지정되고 (false)라면 xx는 200으로 지정된다. 

this 는 객체 자신을 말한다. 브라우저에 있는 내장 객체나 new 연산자로 만든 객체일 수
있는데 자기 자신을 가리킨다. 

function xx() {
   this.zz = "Hellow"
}
myThis = new xx()

로 하면 "myThis"는 함수 객체 xx의 생성자가 되어서 alert(myThis.zz)로 하면 "Hellow"가
나온다. 


◈ Bitwise 연산자

&, |, ^, >>, <<, >>>, >>> 는 0과 1로 이루어져 있는 bit 단위로 사용되는 연산자로 컴퓨
터에서 사용하는 모든 값은 0과 1로 구성되어 있는 이진수로 이루어져 있는데 이 0과 1을
조작하는 연산자이다. 

10 & 7

&는 Bitwise AND연산자이다. 1이나 0중에서 서로 같은 값을 가지고 있는 값을 지정하는데
위의 식은 1010 & 111 으로 컴퓨터 안에서 작동해서 이진수 10으로 되고 십진수로는 2이
다. 그래서 alert(10&7)은 2로 나온다. 

10 | 7

|는 Bitwise OR 연산자이다. 바(|)를 두개의 값 사이에 지정하여 사용한다. 1이나 0중에서
하나라도 1이면 1을 둘 다 0이면 0을 지정한다. 10 | 7은 1010 | 111 으로 작동하고 1111로
되어 십진수15가 된다. 

10 ^ 7

^는 Bitwise XOR 연산자이다. 1이나 0이 서로 다른 값을 가지는 값을 1로 같은 값을 가지
면 0으로 지정한다. 10 ^ 7은 1010 ^ 111 로 계산되고 1101로 되어 13이 된다. 

>>, <<, >>> 는 Bitwise Shift 연산자이다. >>는 오른쪽으로 비트를 이동시키고 <<는 왼
쪽으로 이동시킨다. 이동시킨 곳의 빈곳은 0으로 채운다. 음수를 이동시켜도 부호값은 보존
한다. 

10 << 2

<<는 왼쪽의 값을 오른쪽의 값만큼 왼쪽으로 bit 이동시킨다. 위의 지정은 1010에서 101000
으로 되어서 십진수 40으로 나온다. 10 >> 2 는 이진수 10이 되어 2로 나온다. 

>>> 는 음수 값을 오른쪽 bit 이동 시킬 때, 부호값을 보존하지 않는 연산자로 양수에서는
>>, >>>가 같은 동작을 한다. 


◈ 연산자 우선 순위

여러 연산자를 두개 이상 사용할 때에는 연산자 사이에 먼저 실행되는 우선순위가 있다. 아
래의 여러 연산자에서 가장 높은 우선순위는 함수와 배열이고 아래로 내려갈수록 순위가 낮
아진다. 

함수 배열
! ~ - ++ -- typeof void 
* / % 
+ - 
<< >> >>> 
< <= > >= 
== !=
&
^
|
&&
||
?: 
= += -= *= /= %= <<= >>= >>>= &= ^= |=  (이 줄은 오른쪽으로 우선순위가 높다)

이들 연산자를 여러 개 사용하여 우선순위를 구분하기가 복잡할 때, 가장 쉬운 방법은 가장
먼저 실행할 연산자를 괄호로 감싸주면 가장 높은 우선순위가 된다. 

var x = 5 * (4 + 2)

x는 30이다. 곱셈(*)이 덧셈(+)보다 우선순위가 높지만 괄호로 지정해 주어서 곱셈보다 먼저
실행하기 때문이다. 

2006/09/08 22:18 2006/09/08 22:18
이 글에는 트랙백을 보낼 수 없습니다
대수학  2006/09/08 22:17
어떤 진수 이건...일단 문제가 나오면 10진수로 바꿔 보세요...
그리고 원하는 진수로 나누는 겁니다...
일단 모두 10진수로 바꿉니다. 바꾸는 방법은..
만약 수가 n진수라고 치면..
맨 오른쪽 자리가 n의 0승, 즉 1입니다.(십진법에서도 일의자리라고 하는..)
그 왼쪽이 n의 1승, 즉 10진법에서 말하는 10입니다. 5진법이라면 5의자리죠.
그 왼쪽이 n의 2승, .. 이런식이죠.
* a^b는 a의 b승을 말합니다.


★★★★★★★1101(2)를 10진수로 고치면
                                   ▲
                                     ||===2진수

1X2^3 + 1X2^2 + 0X2^1 + 1X2^0 (여기서 '2'가 들어가는 자리에 원래 숫자의 진수를 넣으면 됩니다.)
= 8+4+0+1 = 13 입니다.

★★★★★★★68(10)을 8진수로 고치려면 8로 계속 나누고 나머지를 기록하는 겁니다.
8 |68
 ----
8 | 8 ... 4  위에 있는 68을 왼쪽의 8로 나눴을 때 몫이 8, 나머지 4
 ----
  1 ... 0  위에 있는 8을 역시 8로 나눴을 때 몫이 1, 나머지 0
이제 1부터 위로 읽으면 됩니다. 8진수로 '104'가 되죠.
이런 식으로 수들을 10진수로 고친 다음 원하는 수로 변환시킬 수 있습니다.

%%%%%%%%%%%%★★★★★★★TIP★★★★★★★%%%%%%%%%%%

★★★★★★★1101₂를 10진수로 변환
2진법이므로
일의 자리 = 1, 십의자리 = 2, 백의 자리 = 4, 천의 자리 = 8이신건 아시죠??
2진법이라서 자리가 한칸 올라갈수록 2배씩 커지는 겁니다.
만약 삼진법이라면 십의자리 = 3이 되겠지요, 백의자리는 9가 될테고
주어진 수가 1101이므로
십의자리를 제외한 나머지숫자가 다 1이네요
식으로 정리하면
1*1 + 2*0 + 4*1 + 8*1 입니다
따라서 답은 13이 되네요

★★★★★★★(68)10을 8진수로 변환

10진법이므로, 우리가 그냥 알고있는 68로 생각합시다
진법을 바꾸는 문제의 유형은
n진법 -> 10진법 or
10진법 -> n진법 이 대부분입니다
여기서, 10진법 -> n진법으로 바꿀때에는
주어진 수를 n으로 일단 나눠보시면 됩니다
68을 예로들면, n진법에서의 n이 8이니까(8진법으로 바꾸라 했으므로)
8 | 68
8 | 8 ......4
8 | 1.......0
0.......1
이렇게, 나머지는 버리고, 몫만을 꼐속 나눠줍니다
그러면 오른쪽에 나머지를 보세요.. 4,0,1이죠??
이걸 거꾸로 읽습니다..
답은 104(8) 입니다
2006/09/08 22:17 2006/09/08 22:17
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 장미왕국
원본 http://blog.naver.com/rosekingdom/60005112976
<script>
function check_form(theform) {
       if (!theform.title.value) {
               errorMsg("글의 제목을 입력하세요",theform.name,theform.title.name,'no','no','alert');
               return false;
       }
}

function errorMsg(error_str,obj1,obj2,del,sel,ertype) {
       var winX = parseInt(document.body.clientWidth,10);
       var winY = parseInt(document.body.clientHeight,10);
       var scTop = parseInt(document.body.scrollTop,10);
       var elayer = eval(document.all.errorMessage);
       var Inhtml;
       Inhtml = "<table width=\"250\" height=\"100\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" style=\"border: 1px solid Gray;\">";
       Inhtml += "<tr>";
       Inhtml += "        <td width=\"250\" height=\"100\" bgcolor=\"#FFFFFF\">";
       Inhtml += "        <table width=\"100%\" height=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" bgcolor=\"#DCDCDC\" style=\"border: 1px solid Gray;\">";
       Inhtml += "        <tr>";
       Inhtml += "                <td align=\"center\">";
       Inhtml += "                <table width=\"100%\" height=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
       Inhtml += "                <tr>";
       Inhtml += "                    <td width=\"12\" height=\"32\"> </td>";
       Inhtml += "                    <td width=\"32\" height=\"32\">";
       Inhtml += "                        <img src=\"/img/warning.gif\" border=\"0\" align=\"absmiddle\">";
       Inhtml += "                        </td>";
       Inhtml += "                    <td width=\"14\" height=\"32\"> </td>";
       Inhtml += "                    <td  style=\"color:#696969;font-size: 9pt; line-height: 150%; padding : 4px 4px 4px 4px;\">";
       Inhtml +=                         error_str;
       Inhtml += "                        </td>";
       Inhtml += "                </tr>";
       Inhtml += "                </table>";
       Inhtml += "                </td>";
       Inhtml += "        </tr>";
       Inhtml += "        <tr>";
       Inhtml += "                <td height=\"35\" align=\"center\">";
       if (ertype=="alert") {
               Inhtml += "                        <img src=\"/img/icon_ok.gif\" onclick=\"document.all.errorMessage.style.display='none';errorFocus('"+obj1+"','"+obj2+"','"+del+"','"+sel+"');\" style=\"cursor:hand\">";
       }
       else if (ertype=="confirm") {
               Inhtml += "                        <img src=\"/img/icon_ok.gif\" onclick=\"document.all.errorMessage.style.display='none';document."+obj1+".submit();\" style=\"cursor:hand\">";
               Inhtml += "                        <img src=\"/img/icon_cancel.gif\" onclick=\"document.all.errorMessage.style.display='none';errorFocus('"+obj1+"','"+obj2+"','"+del+"','"+sel+"');\" style=\"cursor:hand\">";
       }
       Inhtml += "                        </td>";
       Inhtml += "                </tr>";
       Inhtml += "        </table>";
       Inhtml += "        </td>";
       Inhtml += "</tr>";
       Inhtml += "</table>";
       elayer.innerHTML = Inhtml;
       elayer.style.posLeft = (winX-250)/2;
       elayer.style.posTop = scTop + ((winY-100)/2);
       elayer.style.display = "block";
}

function errorFocus(obj1,obj2,del,sel){
       var temp = eval("document."+obj1+"."+obj2);
       if (del=="yes") {
               temp.value="";
       }
       if (sel=="yes") {
               temp.select();
       }
       temp.focus();
}
function IsNumber(str) {
       if (str.search(/[^0-9]/g)==-1) return true;
       else return false;
}
<script>

----------------------------------------------------
<div id="errorMessage" style="display:none;position:absolute;"></div> <--에러메세지 띄우는 레이어
<form method=post action="ok.php" name=boardin enctype='multipart/form-data' onsubmit="return check_form(document.boardin)">
<input type="text" name="title" size="40">
<input type="submit" value="입력">
</form>
2006/09/08 22:16 2006/09/08 22:16
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > What you see is what you get
원본 http://blog.naver.com/etwas0227/60019740139
[css] background-image 를 이용한 배경 설정





▶ <head>...</head>에서 background-image 를 이용한 배경 설정

<head>

<style>
body { background-image:url(http://blogfiles15.naver.net/data11/2005/11/22/78/sweet_spy.jpg);
background-attachment: fixed;}
table { background-color: transparent; }
td { background-color: transparent; }
</style>

</head>







▶ Table 에서 background-image 를 이용한 배경 설정

<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD style="FONT-SIZE: 9pt; FONT-FAMILY: '돋움; 굴림'; TEXT-ALIGN: justify; background-image: url(http://blogfiles15.naver.net/data11/2005/11/22/78/sweet_spy.jpg);">
<pre>블로그에 배경화면 넣기입니다.
background-image: url 에 자신이 원하는
배경화면을 넣어보세요
^^)/
</pre></TD></TR></TABLE>



<예시>

<html>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD style="FONT-SIZE: 9pt; FONT-FAMILY: '돋움; 굴림'; TEXT-ALIGN: justify; background-image: url(http://blogfiles15.naver.net/data11/2005/11/22/78/sweet_spy.jpg);">
<pre><nobr>블로그에 배경화면 넣기입니다.
background-image: url 에 자신이 원하는
배경화면을 넣어보세요
^^)/ </nobr>
</pre>
</TD></TR></TABLE>
</body>
</html>




<결과>

블로그에 배경화면 넣기입니다. background-image: url 에 자신이 원하는 배경화면을 넣어보세요 ^^)/


2006/09/08 22:15 2006/09/08 22:15
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > /JAVA/Servlet/JSP
원본 http://blog.naver.com/nova750/70003479208

JavaScript Reference
      
1.자바스크립트 기본문법
  [1] 기본형식
   1)
<script language="javascript">
스크립트내용
</script> 의 형식으로 스크립트를 기술한다
   2) 스크립트 블록은 주로 head태그나 body태그내에 기술한다
   3) 한문장이 끝날때마다 문장끝에 ;를 붙인다
   4) 변수는 대소문자를 구별하며 숫자로 시작해서는 안된다
변수 선언은 var 변수명=초기값; 형식으로 한다
예) var a=3;
   5) document.write구문 --> 문서내에 내용을 출력하는 구문
document.write구문내에서 문자는 ""로 감싸고 변수와 문자를 결합시는
기호를 사용한다
예)
var a=3;
var b=2;
var c=a*b;
document.write("a*b=" c);
=> 출력결과 a*b=3 즉 ""안에 쌓이 값은 문자로서그냥 출력된다
   6) 산술연산자
더하기, -빼기, *곱하기, /나누기, %정수나머지
   7) 관계연산자
> 크다, >=크거나 같다, < 작다, <=작거나 같다, == 같다, != 같지않다
   8) 논리 연산자
!(부정) ,&&(그리고:둘다 참일때만 참),||(또는:둘중하나만 참이어도참)
   9) 함수선언과 호출
함수선언은 function 함수명(인자들){ 함수내용;} 의 형식으로한다
함수호출은 이벤트 핸들러에 의해 이벤트핸들러="함수명(인자들)" 의
형식으로 한다
예)
function myFun(a,b){
var c=a b;
window.alert(c);
}


이런씩으로 코딩되었다면 body태그의 onload이벤트 핸들러(문서가 로드될때호출됨)에 의해 myFun() 함수가 호출되는데 그인자값으로 3과4
를 넘긴다 . a에는 3 b에는 4가 각각 입력된다
그리고 경고창으로 두개를 더한값(c) 7을 띄운다

      
  [2] 제어문
   1) for문 - 동일한 작업의 반복수행
     구조는
for(변수명=초기값;반복종료기준;증감값){
반복수행 내용;
}
의 형식으로 한다
예)
for(i=0;i<3;i ){
document.write("앗사
");
}
i 은 i=i 1 과 같은 의미임.
i--는 i=i-1 과 같은 의미임.
이구문은 i=0에서 시작해서 3보다 작은동안(즉i=0,1,2)총 3번 반복 i를 1식증가하여 앗사와 줄바꿈을 반복 출력한다
반복문에도 몇가지 더있지만 for만으로도 충분합니다...
      
   2) if else구문 - 조건에 따른 제어
     구조는
if(조건식){
조건식이 참일때 수행될문장;
}else{
조건식이 거짓일때 수행될 문장;
}

여기서 조건식이 거짓일때 수행할 문장이 없다면 else부분은 생략할수있다
예)
var a=3;
if(a>5){
alert("a는 5보다 큰값이다");
}else{
alert("a는 5보다 작은값이다");
}
여기서 a는 5보다 작으므로 조건식이 거짓이다 따라서 else이후의 문장이
수행되어 경고창으로 a는 5보다 작은값이다라는 메세지가뜨게 된다
if,else구문대용으로 삼항연산자 ? 기호 가있으나 처음부터 넘 많이 알려고하면 머리 아플것이므로 일부러 설명하지 않겠습니다...
꼭필요한 구문만 설명합니다

   3) switch case 구문 - 조건에 따른 제어
     구조는

switch(변수){
case(변수의 값1):
실행문1;
break;
case(변수의 값2):
실행문2;
break;
..... 계속 case더 있을수 있슴
default:
위조건중 하나도 일치하는것이 없을때 실행할 문장;
break;
}

예)
var a=5;
switch(a){
case(1):
alert("1이다");
break;
case(2):
alert("2다");
break;
case(3):
alert("3이다");
break;
default:
alert("a는 1,2,3은 아니다");
break;
} => 수행결과 a는 1,2,3은 아니다 라는 경고메세지가 뜨게 된다
      
  [3] 내장함수
   1) eval 
     문자열을 숫자로 변환하여 계산결과를 반환한다
     그외에도 루프를 사용해야 하는 부분에서 다양하게 쓰인다
      
   2) parseInt
     문자열로 표시된 정수값을 숫자로 변환한다
     예)
var a="3";
var b="4"; //a,b는 따옴표로 둘러싸여있으므로 현재 문자로 취급됨
var c1=a b; --> c1="34";가 입력된다
var c2=parseInt(a) parseInt(b); --> parseInt에 의해
a,b는 숫자로 변환되며 기호는 덧셈으로 인식되어 c2에는 7이 입력된다
      
   3) parseFloat
     문자열로 표시된 부동소수를 숫자로 변환한다
      
  [4] 문자열 관련 함수
   1) length - 문자열의 길이
     예)
var str="abcdeabc";
var sLen=str.length; sLen에는 8이 입력된다
   2) charAt - 특정위치의 문자
     예)
var str="abcdeabc";
var myChar=str.charAt(2); => myChar에는 "c"가 입력된다
인덱스가 0부터시작하므로 0,1,2 즉 세번째 문자 c가 입력된다
   3) indexOf - 특정문자가 첫번째로 나타나는 위치
     예)
var str="abcdeabc";
var myIdx=str.indexOf("b"); => myIdx 에는 b가 처음으로 나타나는위치 1 이 입력된다
   4) lastIndexOf - 특정문자가 마지막으로 나타나는 위치
     예)
var str="abcdeabc";
var myIdx=str.lastIndexOf("b"); => myIdx에는 b가 마지막으로 나타나는 위치 6이 입력된다
   5) charCodeAt - 특정위치의 문자의 문자코드
     예)
var str="abcdeabc";
var myChar=str.charCodeAt(2); => 세번째 위치의 문자 "c" 의 문자코드인 99가 입력된다
   6) split - 문자를 특정문자를 기준으로 분리한다
     예)
var str="abc-dea-bc";
var partStr=str.split("-");
partStr에는 abc,dea,bc 가 입력된다
partStr[0]에는 abc가 partStr[1]에는 dea가 partStr[2]에는 bc가 입력된다
      
  [5] alert,prompt,confirm
   1) alert - 단순한 경고창을 띄운다.
     alert("메세지 내용");
      
   2) prompt - 사용자로부터 데이타를 입력받는 창을 띄운다
     구조 var 변수명=prompt("메세지내용","기본입력값");
예)
var n=prompt("숫자를 입력하세요","3"); => 숫자를 입력하세요라는 메세지와 기본적으로 입력값 3이 입력된 prompt창이 뜨고 사용자가 여기
숫자를 넣고 확인을 누르면 n에 그값이 입력된다
      
   3) confirm - 사용자에게 다음작업처리의 방향을 물어본다
     주로 if등의 조건제어문과 같이 쓰인다.
확인을 누르면 true반환하고 취소를 누르면 false를 반환한다
구조
if(confirm("확인받을 메세지")){
확인을 눌렀을때 실행할문장;
}else{
취소를 눌렀을때 실행할문장;
}
예)
if(confirm("당신머리는 큽니까?")){
alert("좋으시겠습니다 --;;");
}else{
alert("다행입니다");

      
      


 
2.Event Handler
    
  [1] 이벤트란?
   쉽게 설명해서 어떤웹페이지에서 일어나는 사건.일등을 말합니다.
예를들어 마우스를 클릭한다든가 더블클릭한다든가 브라우저를 닫는다든가 특정객체에 포커스를 가져간다든가 하는 모든것을 이벤트라 할수있습니다.
      
  [2] 이벤트 핸들러란?
   어떤 이벤트가 일어났을때 어떤처리를 해줄것인지를 정의하는 데 사용합니다
      
  [3] 이벤트 핸들러의 종류와 의미
   모든 이벤트 핸들러를 설명하지는 않습니다. 모든걸 한번에 다할려면 골깨집니다.
웹페이지를 만드는데 기본적으로 알아야 할것들만 설명하겠습니다.
      
   onLoad 문서가 로드될때
   onUnLoad 문서를 닫을때 다른 페이지로 이동하려 할때
   onFocus 문서에서 특정객체가 활성화 되었을때,특정입력박스에 포커스가 이동되었을때
   onBlur 문서에서특정객체가 비활성화 되었을때,
특정입력박스에서 포커스가 다른곳으로 떠날때
   onClick 버튼이나 이미지를 클릭했을때
   onDblClick 버튼이나 이미지를 더블클릭 했을때
   onChange 셀렉트박스나 파일 입력상자의 내용이 변경되었을때
   onMouseOver 특정객체위에 마우스를 올렸을때
   onMouseDown 마우스를 눌렀을때
   onMouseOut 특정객체위에 있던마우스가 영역밖으로 나갈때
   onMouseUp 마우스를 눌렀다가 놓았을때
   onKeyDown 키보드를 눌렀을때
   onKeyUp 키보드를 눌렀다 놓을때
   onReset 폼내용이 리셋버튼으로 초기화 될때
   onSubmit 폼내용이 전송되려고 할때
      
      

3.Object
  
  -객체(object)란?
   자바스크립트에서 객체란 브라우저창,이미지,입력양식등...웹문서속의 각각의 모든
항목들을 말한다고 보면 되겠습니다
  -속성이란?
   각 객체가 지닌 특성을 말합니다.
사용법 : 객체명.속성="속성값";
예) window.status="반가워여"; --> 브라우저 상태바에 반가워여라는 글자를 보입니다.
  -메서드란?
   각 객체에게 어떤 동작을하도록하는 명령어라고보면 됩니다.
예를들어 window객체의 close라는 메서드는 브라우저창에게 창을닫도록 명령합니다.
사용법 : 객체명.메서드(인자값);
예) window.alert("경고한다.밥무라"); --> 경고한다.밥무라라는 메세지로경고창을띄웁니다
    
  * 자바스크립트와 DHTML
   객체의 메서드나 속성중에서 근래에는 잘쓰여지지 않는 것들도 있습니다, style을
이용한 다이나믹html이 대체되어 쓰이는경우가 많이 있습니다.
예로 문서의 배경색깔을 동적으로 변경시키고자 할때 예전에는
document.bgColor="#ff00ff";이렇게 썼으나
요즘은 document.body.style.background="#ff00ff";로 쓰는경우도 많이 볼수있습니다.
    
    
  [1] window 객체
   속성 closed 브라우저 창이 닫혔는지를 체크
     opener 현재창이 새창일경우 현재창을열개한 브라우저창
     status 브라우저의 상태표시줄의 정보
     screenLeft 윈도우화면 좌측상단모서리에서 브라우저 상단까지의
x축 거리
     screenTop 윈도우화면 좌측상단모서리에서 브라우저 상단까지의
y축 거리
        
   메서드 alert 경고창을 띄운다
     blur 현재창을 최소화한다.포커스를 잃게 한다
     focus 현재창에 포커스를 준다,활성화 시킨다.
     moveTo(x,y) x,y좌표로 브라우저를 이동시킨다
     moveBy(dx,dy) 현재위치에서 dx,dy만큼 창을 이동
     resizeTo(w,h) 브라우저창 크기를 w(폭),h(높이)로 변경한다
     resizeBy(dx,dy) 브라우저창 크기를 dx,dy만큼 변경한다
     open 새창을 연다
     close 브라우저를 닫는다
     print 문서를 인쇄한다
     setTimeout 특정시간후에 특정작업을 호출합니다
     clearTimeout setTimeout으로 설정한 Timer를 해제합니다
        
       예제보기
  [2] document 객체
   속성 title 문서의 제목
     lastModified 마지막으로 수정된 날짜
     bgColor 문서의 배경색
     fgColor 문서의 글자색
     linkColor 링크의 색상
     alinkColor 링크 클릭시의 색상
     vlinkColor 방문했던 링크의 색상
        
   콜렉션 -문서에 존재하는 여러개의 이미지들이나 링크들 폼들에대한 정보를 배열형식
으로 저장하고있는 속성을 말합니다.
     forms 문서에 여러개의 폼이 있을경우 각폼들은 폼이름대신
document.forms[index]으로 접근할수있습니다
index는 0부터시작합니다.
     links 문서에서의 a href태그들의 정보를 가진 콜렉션
     images 문서에서의 모든 img태그들의 정보를 가짐
     applets 문서에서 여러개의 자바애플릿을 사용했을경우 모든애플릿들의 콜렉션
     embeds 문서에서 embed태그의 콜렉션
        
   메서드 write 문서에 내용쓰기
     writeln 문서에 줄바꿈을 포함한 내용쓰기
        
       예제보기
        
  [3] screen 객체
   속성 width 시스템 스크린의 폭(픽셀)
     height 시스템 스크린의 높이(픽셀)
     availWidth 시스템 스크린중 브라우저의 문서영역 폭
     availHeight 시스템 스크린중 브라우저의 문서영역 높이
        
       예제보기
        
  [4] navigator 객체
   속성 userAgent 브라우저 전체정보
ex) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
     appCodeName 브라우저 CodeName
ex) Mozilla
     appVersion 브라우저 Version
ex) 4.0 (compatible; MSIE 6.0; Windows NT 5.0)
     appName 브라우저 이름
ex)Microsoft Internet Explorer
     cookieEnabled 브라우저 쿠키이용 가능여부
반환값 : true/false
   메서드 javaEnabled 브라우저의 자바이용가능여부
반환값 : true/false 
        
       예제보기
        
  [5] history 객체
   속성 length history목록(방문한사이트목록)의 갯수
        
   메서드 go(숫자) 지정숫자만큼 사이트이동
ex) go(2) 앞으로 2번째로 이동
     back 현재사이트 기준에서 이전사이트로 이동
     forward 현재사이트 기준에서 다음사이트로 이동
        
       예제보기
        
  [6] Event 객체
   속성 keyCode 이벤트를 일으킨 키보드의 키코드값
     altKey altKey를 눌렀는지의 여부
     ctrlKey ctrlKey를 눌렀는지의 여부
     shiftKey shiftKey를 눌렀는지의 여부
     button 마우스 오른쪽버튼을 눌렀는지
왼쪽버튼을 눌렀는지의 여부
     clientX 마우스 클릭시 브라우저기준의 x축거리
     clientY 마우스 클릭시 브라우저기준의 y축거리
   * srcElement 이벤트가 일어난 엘리먼트
        
       예제보기
        
  [7] Form 관련객체
   input type="text" 각값은 document.form이름.엘리먼트이름.value 로
접근할수 있다
   input type="password"
   input type="checkbox" 어떤 값이 선택되었는지는 루프를 돌며 checked속성이 true인지 false인지로 체크할수있다
   input type="radio"
   input type="file" 파일업로드를 위한 객체로서 파일값이 변할때
onChange이벤트 핸들러를 사용한다
   input type="button" submit이나 reset버튼의 제한된 기능에 다른여러기능을 추가적으로 스크립트로 제어할때는
input type="button"을 쓰고 onClick이벤트
핸들러를 사용한다
   input type="submit" 폼을 전송한다
   input type="reset" 폼을 초기상태로 reset한다
   select 선택값은 document.forms이름.엘리먼트이름.value로접근할수있습니다
      
       예제보기
       
        
   속성 disabled 버튼이나 셀렉트박스등을 클릭 선택하지 못하게 합니다
     readonly 텍스트 박스의 내용을 읽기 전용으로 합니다
        
       예제보기
        
        
    
        
  [8] Date 객체
   특징 다른 객체와 달리 new연산자와 생성자 함수 Date()를 사용해서 객체인스턴스를
생성한후 그메서드들을 이용할수있다
사실 생성자함수에는 몇가지유형 인자를 가지는 유형이 있으나 인자없는 단순한 Date(); 함수만으로도 충분하다 ..다른 인자를 가지는 생성자들까지 공부할려면
이야기주제는 자바스크립트라기보다 자바에 가까와 질듯하다...
        
   메서드 getTime 1970년 1월1일 오전0시0분0초로 부터 현재까지의 시간을 m초로 반환한다
     getYear 현재의 년도를 반환한다
     getMonth 현재의 월을 반환한다 (1월:0 2월:1...)
     getDate 날짜(1~31)를 반환한다
     getHours 현재의 시간을 반환한다 (5시 --> 17)
     getMinutes 현재의 분을 반환한다
     getSeconds  현재의 초를 반환한다
     getDay 요일(0:일요일 1:월요일)에 대한 숫자를 반환한다
        
   사용예 초를 이용한 랜덤 숫자 생성방법
var myDate=new Date();
var sec=myDate.getSeconds(); //이렇게 하면 sec에는 일단 0~59라는 숫자가 들어있다
var rndNum=sec%7; // %나머지를 구하는 연산자
따라서 rndNum에는 0~6중의 한숫자가 입력된다...
이해가 안되는것은 아닐것으로 보지만 그래도 설명하자면 어떤 수를 7로나누면
나머지는 반드시 0~6중에 하나이다... 아시겠져???
시간은 계속변하므로 웹페이지상에서 랜덤으로 이미지를 보여주고자 할때 사용하면 된다..
사실랜덤숫자 생성법은 다른 방법도 있겠지만 다른방법은 한번 생성된 숫자가
나중에 다시 생성될 가능성이 많아 랜덤의 의미가 떨어지는것 같다..
        
       예제보기
        
   지금까지 자바스크립트에서 사용되는 객체에 대해 개략적으로 알아 보았습니다... 이해가 안되신다면 한번더 읽어보시기 바라면 예제의 소스보기를 눈여겨 보시면 차차 이해가 될것입니다. 이해를 돕기위해 코드에 불필요한 부분은 모두 배제시켰습니다 모든 객체에 대해 알필요까지는 없습니다. 위 객체들에 대해 이해한후 자꾸 자바스크립트에 익숙해지다 보면 필요할때마다 정보를 보면서 자바스크립트를 이용하기만 하면 됩니다 --;;
        
4.CSS(stylesheet)
  stylesheet ?
걍 일반적인 태그의 한계(이미지나 테이블등의 정확한 위치나 테이블내의 셀과 글자
사이의 간격,줄간의 간격,링크의 색깔등)를 극복하고 나아가 동적인 웹페이지를 만들기위한것(?) 뭐 정의가 그렇게 중요한건 아니고 어디서먹느냐 어떻게 사용하느냐가 우선적인 문제일것입니다...
이 사이트가 추구하는바 속성으로 웹페이지 기본을 마스터 하자 이기때문에 모든것을
설명하지는 않습니다.기본적이고 꼭필요한것 만 설명합니다. 나머지는 그때그때 문서
찾아가며 적용해도 됩니다...
      
  [1] css
   1.태그와 태그사이에


2.스타일 정의 파일을 외부에따로 두고 불러오기


3.각태그내에서 정의하기
<태그 style="속성:값">
      
  [2] 선택자
   1) Type선택자
     문서내의 태그엘리먼트에 대한 스타일을 지정한다
예제)
=> 문서내의 input태그들은 모두 글자색을
붉은색으로 정한다는 의미임
      
   2) Class선택자
     문서내의 각요소들에 class속성을 부여할수 있는데 동일한 클래스가 부여된 태그들에 대해서는 동일한 스타일을 지정한다
예제)


본문부분


abc


abc

아래의 div태그의 클래스 속성이 redDiv로써 위에 정의된 클래스명과 같다.따라서 이div 의 배경색은 붉은색이 된다

      
   3) ID선택자
     문서내에 각요소에 대해 오직 하나의 id(다른것과 같아서는 안됨)를 지정할수 있는데 각 아이디가 부여된 태그에대해서 스타일을 지정한다


본문부분

굵은글씨
=> 이 div태그의 아이디가 special이므로 이태그내의 텍스트는 굵은 글자로 나타난다
      
     *head태그내에서 스타일정의할때 여러태그들을 중복해서 정의할수있다

      
  [3] 자주쓰이는 스타일 
   1) 색상
글자색 -> color:색상명 또는 rgb값
배경색 -> background:색상명 또는 rgb값
*** background-color로 써도 됨
      
   2) 배경그림
background:url(배경그림경로)
*** background-image로 써도 됨
-배경그림을 특정위치에 고정시키고 반복하지 않기
=>body{background:url(파일경로명) x위치 y위치 no-repeat fixed}
여기서 x위치 y위치는 %값이나 px값 사용
      
   3) 커서 모양변경
     원래 링크태그(a)에만 마우스를 올렸을경우 손모양으로 바뀌나 코딩하다보면 span태그나 div태그 또는 td태그내에 바로
onclick="location.href='이동파일명'" 이런씩으로 사용할경우
커서가 손모양으로바뀌지 않는다 이때 다음 스타일을 사용한다
 
      
   4) font속성
     물론 기본속성을 그대로 쓰려면 아래 스타일을 지정할 필요없다
font종류-> font-family:font명
font체 -> font-style:italic(기울임)
font굵기 -> font-weight:bold,bolder(굵게,더굵게)
font크기 -> font-size:폰트크기 px이나 pt
      
   5) border테두리
     주로 테이블의 셀이나 레이어태그(div,span)등의 테두리 설정에쓰이나
거의 모든 태그에 사용가능하다
     border:색상 크기 형태; 로사용하거나
테두리중 특정부분 예로 위쪽테두리만 주고싶을경우는
border-top:색상 크키 형태;

예)
=> 테이블의 현재셀의 위쪽테두리는 1픽셀의 회색실선으로 하고 아래쪽 테두리는 1픽셀의 검은색 점선으로 한다는 의미임
      
   6) text-decoration
     글자에 줄을 긋거나 링크에서 줄을 없앨때 사용된다
속성값으로 underline -> 밑줄긋기
overline -> 윗줄긋기
line-through -> 글자를 가로질러 긋기
none -> 링크에밑줄 없애기
      
   7) 위치,크기관련 속성
     위치 : position:absolute;left:수평위치;top:수직위치;z-index:쌓이는 순서;
크기 : width:폭;height:높이;
overflow -> 내용이 컨테이너(내용을 포함하는 레이어)보다 클경우
속성값으로 hidden 넘치는 부분은 숨긴다
auto 필요한 방향으로만 스크롤바를 생성한다
scroll 상하,좌우스크롤바를 모두 생성한다
      
   8) 여백 관련
     -> padding : 컨테이너와 내용사이의 거리
예)  => 이셀내의 글자는 이셀의 좌측에서 10px떨어져서 부터 시작한다
-> margin : 컨테이너와 컨테이너 사이의 거리
예) 이테이블은 브라우저 좌측에서 20px부분에서 시작된다         
   9) text-align 글자 정렬
     특정 컨테이너(레이어나 테이블의셀등에서의 글자의 정렬위치)
속성값 : left , right , center

    
5.DHTML
  이 내용도 마찬가지로 DHTML의 모든것을 설명하지는 않습니다.
가장기본적이고도 꼭 필요한 내용만 설명합니다.
아래 내용만 이해하신다면 다른 것들은 모두 여러분이 응용하실수 있을것입니다
    
  [1] 레이어 보이기 감추기
   -스타일의 visibility 속성을 이용합니다
... 스크립트 방법...................................
=레이어를 감출려면 -> 레이어ID.style.visibility="hidden";
=레이어를 보일려면 -> 레이어ID.style.visibility="visible";
   예제보기
    
  [2] 레이어 크기 변경하기
   -스타일의 pixelWidth,pixelHeight 속성을 이용합니다
... 스크립트 방법 ...................................
=레이어 폭 변경 -> 레이어ID.style.pixelWidth=폭(숫자);
=레이어 높이 변경 -> 레이어ID.style.pixelHeight=높이(숫자);
   예제보기
    
  [3] 레이어 위치 변경하기
   -스타일의 pixelLeft,pixelTop 속성을 이용합니다.
... 스크립트 방법 .................................
=레이어 좌우위치 변경 -> 레이어ID.style.pixelLeft=x축방향위치(숫자);
=레이어 상하위치 변경 -> 레이어ID.style.pixelTop=y축방향위치(숫자);
   예제보기
    
  [4] 레이어 시간적 이동
   -스타일의 pixelLeft,pixelTop 속성과 함께 window객체의 setTimeout
메서드를 이용합니다. setTimeout 메서드를 함수내에 선언하여 반복호출합니다
예)
function goLeft(){
if(myLayer.style.pixelLeft < 200){
//만약 myLayer의 x방향위치가 200px보다 작다면
myLayer.style.pixelLeft=myLayer.style.pixelLeft 10;
//현재 myLayer의 x방향위치를 현재위치에 10을 더하라는 말
setTimeout("goLeft();",100);
//0.1초 뒤에 다시goLeft함수가 호출되어 myLayer위치가 200에 도달할때
//까지 계속이동하고 200에 도달하면 멈추게 됩니다
}

   예제보기
    
  [5] 그외의 속성변경
   예로 마우스를 특정 레이어 위에 올렸을경우 내렸을경우 배경색변경은

onmouseout="this.style.background='gold'" >
이렇게 코딩하면 이레이에 마우스를 올리면 배경색은 green으로 이레이어에서
마우스를 내리면 배경색은 gold로 바뀌게 됩니다

또다른예로 마우스를 특정레이어위에 올렸을경우 내렸을경우 글자크기변경은

onmouseout="this.style.fontSize='10px'">
이렇게 하면 이레이어에 마우스를 올리면 글자크기는 20픽셀로 되고 이레이어에서마우스를 내리면 글자크기는 10픽셀로 됩니다

*이때 주의 할것은 fontSize할때 "S"는 대문자입니다..
*다른경우도 마찬가지로 z-index같은 경우도 -로연결된 스타일은
자바스크립트로 접근시 -다음의 문자를 대문자로 해야 합니다
예-> background-image => 스크립트에서는
레이어ID.style.backgroundImage ...
또한 z-index => 스크립트에서는 레이어ID.style.zIndex 처럼
스타일에서의 "-"문자 뒤의 알파벳은 항상 대문자로 해주어야 합니다...

2006/09/08 22:13 2006/09/08 22:13
이 글에는 트랙백을 보낼 수 없습니다
Linux/SHELL  2006/09/08 22:12

아마 MS-DOS를 접해본 분이라면 와일드카드(wildcard, 유닉스에서는 glob pattern이라고 부른다)이라고 부르는 *?와 같은 기호에 익숙할 겁니다. a로 시작하는 모든 GIF 파일을 a*.gif와 같이 비슷한 파일명을 일일이 명시하지 않고 지정할 수 있습니다. 정규표현식(regular express, 줄여서 regexp, regex, re)도 MS-DOS의 *?와 같이 패턴을 기술하는 방식입니다. 그러나 정규표현식은 MS-DOS의 와일드카드와는 달리 파일명 뿐만이 아니라 파일 내용을 포함한 일반적인 용도로 사용이 가능하며, 그 기능도 더 강력합니다.

유닉스는 기본적으로 그래픽보다는 문자 기반 인터페이스를 제공하기 때문에, 문자들을 찾거나 다른 문자로 대체하는 도구인 정규표현식은 매우 중요합니다. 사실, 정규표현식을 모르고 유닉스를 사용하는 것이 가능할까란 의문이 들 정도로 정규표현식은 유닉스 사용과 관리의 많은 부분에 적용이 가능합니다. 우리가 자주 사용하는 편집기인 vi와 emacs, 자주 사용하는 도구인 grep과 sed와 awk, portable shell로 불리는 Perl, 자동으로 메일을 정리하는 procmail 등, 정규표현식은 유닉스의 거의 모든 도구와 관련이 있습니다. 개인적으로 뼈아픈 경험뒤에 "멍청하면 손발이 고생한다"는 격언(?)의 적절한 예로 정규표현식을 꼽습니다.

불행히도 도구마다 정규표현식을 지원하는 정도가 조금 차이가 나지만 몇번 시도해보면 이 차이를 알 수 있습니다. 그러면 기본적이고 광범위하게 쓰이는 정규표현식부터 하나씩 알아봅시다.


2. 정규표현식 기초

기본적으로 정규표현식은 다음 세가지로 구별할 수 있습니다.

  • 문자에 해당되는 부분
  • 앞의 해당되는 부분을 반복하는 부분
  • 문자에 해당되지않고 위치나 결합을 나타내는 부분

이제 MS-DOS의 *와 같이 특수한 의미를 가지는 문자들을 만나게 됩니다. 우리가 정규표현식을 배운다는 것은 이런 특수 문자들과 그들의 의미를 아는 것입니다.

2.1. 문자에 해당되는 부분

우선 보통 알파벳과 숫자 등은 그 문자 그대로를 나타냅니다. 물론 대소문자는 서로 구별됩니다.

$ egrep 'GNU' COPYING GNU GENERAL PUBLIC LICENSE freedom to share and change it. By contrast, the GNU General Public the GNU Library General Public License instead.) You can apply it to ...(생략)... $

위에서 egrep은 파일들에서 원하는 문자들을 찾는 도구입니다. (흔히들 사용하는 grep의 변종으로 grep보다 다양한 정규표현식을 사용할 수 있습니다.) 첫번째 아규먼트로 원하는 문자를 나타내는 정규표현식을 사용합니다. 여기서 GNU는 정규표현식으로 뒤에 나오는 파일들에서 G, N, U 세 문자가 연이어 나오는 경우를 찾습니다. 여기서 사용한 파일인 COPYING은 자유 소프트웨어 소스코드에서 쉽게 찾을 수 있는 GPL 조항입니다. 결과를 명확하게 하기 위해서 찾은 단어를 굵게 표시했습니다.

그런데 왜 GNU 주위에 따옴표를 했을까요? 여기서 따옴표는 정규표현식에서 쓰이는 *, ?, | 등의 문자들이 쉘에서도 특별한 기능을 하기때문에 이들 문자가 쉘에서 처리되지 않게하려고 필요합니다. 또, egrep 'modified work' COPYING와 같이 찾으려는 패턴에 공백이 포함된 경우에도 따옴표는 이들을 한개의 아규먼트로 처리합니다. 사실 위의 GNU에 따옴표는 필요없지만, 항상 규칙처럼 따옴표를 같이 사용하는 것을 권합니다.

어떤 특정한 문자가 아니라 가능한 여러 문자들을 지정할 수도 있습니다.

$ egrep '[Tt]he' COPYING The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public software--to make sure the software is free for all its users. This ...(생략)... $

위에서 [Tt]는 그 자리에 Tt가 나올 수 있음을 의미합니다. 이렇게 []안에 가능한 문자들을 적어줄 수 있습니다.

[a-z]와 같이 [] 안에 -를 사용하여 그 범위 안의 문자들도 지정할 수 있습니다. 예를 들어, [a-zA-Z0-9]는 영문 알파벳 대소문자와 숫자들을 모두 포함합니다. 또, [^a-z]와 같이 [] 처음에 ^를 사용하여 뒤에서 지정된 문자 이외의 문자를 지시할 수도 있습니다. 즉, 이는 영문 알파벳 소문자를 제외한 문자들을 의미합니다.

([a-z]에서 범위는 ASCII 코드값으로 a (97)에서 z (122)까지를 뜻합니다. 만약 [z-a]와 같이 큰 값을 앞에 쓰면 안됩니다. ASCII 코드값은 man ascii로 볼 수 있습니다.)

마지막으로 (보통 행바꿈 문자를 제외한) 어떤 문자에도 대응되는 .이 있습니다. (MS-DOS의 ?와 같습니다.)

$ egrep 'th..' COPYING of this license document, but changing it is not allowed. freedom to share and change it. By contrast, the GNU General Public software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to ...(생략)... $

이는 th 뒤에 두 문자가 나오는 경우를 찾습니다. 세번째 줄 끝에 This는 대소문자를 구별하기 때문에 패턴에 해당되지않고, the 에서 공백도 한 문자로 취급한 것을 주의하길 바랍니다. 위에서 program will individually obtain patent licenses, in effect making the와 같은 줄을 출력하지 않은 이유는 마지막 the에서 th와 그 뒤의 한 문자는 찾았지만 그 뒤에 문자가 줄바꿈 문자이기 때문에 조건이 만족되지않기 때문입니다.

2.2. 앞의 해당되는 부분을 반복하는 부분

여기서는 *, ?, +을 다룹니다.

*는 바로 앞의 문자를 0번 이상 반복해도 됨을 나타냅니다. 예를 들어, abc*

  • abccccccccc
  • abc
  • ab

를 모두 만족합니다. 여기서 주의해서 볼 것은 "0번 이상"이기 때문에 마지막 경우와 같이 앞의 문자가 안나와도 된다는 것입니다. (그래서 MS-DOS의 *은 정규표현식으로 .*입니다.)

*와 비슷하게, ?는 앞의 문자가 없거나 하나 있는 경우를 나타내고, +는 앞의 문자가 1번 이상 반복하는 경우를 나타냅니다. 그래서 a+aa*와 같습니다.

이제 abc 모두를 반복하고 싶다면 어떻게 해야 되는지 의문이 듭니다. 이 경우 (, ) 괄호를 사용하여 문자들을 묶어주면 됩니다. 그래서 (abc)*

  • abcabcabcabc
  • abc

를 모두 만족합니다. 마지막 예는 0번 반복한 경우로 어떤 문자도 없는 빈 경우입니다. 이제 앞에서 말한 "앞의 문자"라는 말을 정정해야 겠습니다. *, ?, +는 "앞의 문자"에 적용되는 것이 아니라 "앞의 단위"에 적용됩니다. 기본적으로 한 문자는 그 자체로 한 단위입니다. 그래서 abc*에서 *는 바로 앞 문자이자 단위인 c에 적용된 것입니다. 그러나 괄호로 문자들을 묶어서 단위를 만들 수 있고, (abc)*의 경우에 *는 앞의 단위인 abc에 적용된 것입니다.

주의
위에서 (abc)*가 0번 반복해서 어떤 문자도 없는 것을 나타낼 수 있음을 주의해야 합니다. 정규표현식에서 이런 경우 대상과 관계없이 패턴이 만족한 것으로 판단하기 때문에 egrep '(abc)*' COPYING와 같은 명령어는 COPYINGabc라는 부분이 없음에도 불구하고 모든 줄을 출력합니다. 즉, egrep '(abc)*' COPYING | wc -lwc -l COPYING은 같습니다.

또, 주의할 점은 정규표현식은 패턴을 만족시키는 가장 긴 부분을 찾는다는 점입니다. 즉, abababab에 대한 정규표현식 (ab)+ababab에 대응되지 않고 abababab 모두에 대응됩니다. 이런 행동은 어떻게보면 당연한 것이지만 주의를 하지않으면 문제가 생길 수도 있습니다. 예를 들어, compiler and interpreter<\B>에 대한 정규표현식 .*<\B>는 (의도했을) compiler을 찾지않고 compiler and interpreter<\B> 전체를 찾게 됩니다. 이를 해결하기 위해 [^<]*<\B>을 사용합니다. . 대신에 [^<]를 사용한 것처럼 찾는 대상을 제한하기 위해서 [^...] 형식을 자주 사용합니다.

2.3. 문자에 해당되지않고 위치나 결합을 나타내는 부분

여기서 다루는 ^, $, |는 앞에서와는 달리 특정 문자에 대응하지는 않지만, 위치나 결합의 중요한 기능을 합니다.

우선 ^는 줄의 처음을 뜻합니다.

$ egrep '^[Tt]he ' COPYING the GNU Library General Public License instead.) You can apply it to the term "modification".) Each licensee is addressed as "you". the scope of this License. The source code for a work means the preferred form of the work for ...(생략)... $

정규표현식의 마지막 문자가 공백임을 주의하길 바랍니다. 만약 이 공백이 없다면 Thesethemselves,로 시작하는 줄들도 찾게됩니다. 이렇듯 정규표현식을 적을 때는 자신이 찾길 원하는 부분을 빼먹거나, 자신이 원하는 부분 이외의 것을 포함하지 않도록 주의해야 합니다. 지금처럼 정규표현식을 입력하고 그 결과를 하나씩 살펴볼때는 문제가 없지만, 많은 경우 정규표현식은 스크립트로 많은 문서를 한꺼번에 처리할때 사용하기때문에 주의해야 합니다. 잘못 쓴 정규표현식때문에 원하는 결과를 얻지 못하는 것은 물론이고 원본까지 망치게 되는 경우가 있습니다.

^는 이렇게 [Tt]와 같이 특정 문자에 대응되지는 않지만 원하는 문자가 선택될 수 있게 도와줍니다. 반대로, $는 줄의 끝을 나타냅니다. 그래서 ^$과 같은 정규표현식은 빈 줄을 찾습니다.

|은 기호 앞뒤의 것 중 하나를 선택한다는 뜻입니다. 즉, 문서에서 this(This)나 that(That)을 찾는다면,

  • this|This|that|That
  • [tT]his|[tT]hat
  • [tT]his|hat - 틀림! 이 정규표현식은 [tT]hishat을 찾음.
  • [tT](his|hat)
  • [tT]h(is|at)

모두 가능합니다. 세번째와 네번째 경우에서 괄호의 기능을 알 수 있습니다.

2.4. 일반문자와 특수문자

아마도 지금쯤 ^이 두가지 의미로 쓰인다는 것이 이상해 보일 수도 있을 겁니다. 정규표현식에서 쓰이는 문자는 크게 일반문자와 특수문자로 나눠볼 수 있습니다. 여기서 특수문자란 앞에서 다룬 (순서대로) [, ], -, ^, ., *, ?, +, (, ), $, |과 같이 정규표현식에서 문자그대로의 의미로 해석되지 않는 문자들입니다. 반대로 특수문자가 아닌 문자는 일반문자로 G, N, U와 같이 문자그대로의 의미를 가집니다.

여기서 특수문자는 쓰이는 곳에 따라 다릅니다. 자세히 말하면, []안이냐 밖이냐에 따라 특수문자가 달라집니다.

우선 [] 밖에서는 -를 제외한, ^, ., *, ?, +, (, ), $, |이 특수문자입니다. 여기서 ^는 줄의 시작을 의미합니다.

그러나 [] 안에서는 -^만이 특수문자이고, 다른 문자들은 일반문자가 됩니다. 즉, [*?+]는 반복이 아니라 문자그대로 *?+ 중 하나를 뜻합니다. [] 안에서 (제일 앞에 나오는) ^는 뒤에나오는 조건을 만족하지 않는 문자를 찾는다는 의미가 됩니다.

2.5. 특수문자에 해당하는 문자 사용하기

그렇다면 찾으려는 부분에 특수문자가 포함되있다면 어떻게 할까요? 예를 들어 what?이라는 물음표로 끝나는 문자를 찾고 싶다고, egrep 'what?' ...이라고 하면 ?이 특수문자이므로 wha를 포함한 whale도 찾게 됩니다. 또, 3.14로 찾을때는 3+14 등도 찾게 됩니다.

특수문자가 [] 안과 밖에서 다르다는 점을 생각하여 각각의 경우를 살펴봅시다. 우선 [] 밖의 경우는,

  • \을 특수문자 앞에 붙이기. 예, what\?, 3\.14
  • []을 사용하기. 예, what[?], 3[.]14

첫번째 방법은 보통 escape라고 부르며, 특수문자 앞에 \을 붙여서 특수문자의 특수한 기능을 제거합니다. 두번째 방법은 [] 밖의 많은 특수문자들이 [] 안에서는 일반문자가 되는 점을 이용한 것입니다. 보통 첫번째 방법을 많이 사용합니다.

주의할 점은 첫번째 방법에서 사용하는 \가 뒤에 나오는 특수문자를 일반문자로 만드는 특수문자이기 때문에, 문자 그대로의 \을 나타내려면 \\을 사용해야 합니다. 물론 [\]도 가능합니다.

[] 안의 특수문자는 위치를 바꿔서 처리합니다. 먼저, ^[^abc]와 같이 처음에 나와야만 의미가 있으므로 [abc^]와 같이 다른 위치에 사용하면 됩니다. -[a-z]와 같이 두 문자 사이에서만 의미가 있으므로 [-abc][abc-]와 같이 제일 처음이나 마지막에 사용합니다.

(grep과 같이 도구에 따라 역으로 일반 문자앞에 \를 붙여서 특수문자를 만드는 경우가 있습니다. 아래 각 도구에 대한 설명 참고.)


3. 정규표현식 고급

고급이라고 제목을 붙였지만 여기서는 도구마다 차이가 나거나 없을 수도 있는 내용을 다룹니다.

3.1. 자세한 반복

반복하는 횟수를 자세히 조정할 수 있습니다.

  • {n} - 정확히 n번 반복. a{3}aaa와 같음.
  • {n,} - n번 이상 반복. a{3,}aaaa*와 같음.
  • {n,m} - n번 이상 m번 이하 반복. a{2,4}aaa?a?와 같음.

물론 (abc){2,4}같이 괄호로 반복할 단위를 지정할 수 있습니다. 여기서 {, }*, ?, +와 같이 특수문자임을 주의하길 바랍니다. (엄밀한 의미에서 }은 특수문자가 아닙니다.)

3.2. 기억하기

앞에서 여러 문자를 묶어서 단위로 만드는 괄호는 정규표현식으로 찾은 부분을 기억하여 다른 곳에서 사용할때도 사용합니다. 예를 들어, HTML 제목 테그는 (egrep에서) <[Hh]([1-6])>.*와 같이 찾을 수 있습니다. 여기서 ([1-6])(, )는 사이에 대응된 부분을 기억하여 (첫번째 기억된 내용을) \1에서 사용합니다. 즉, 2>Conclusion2>에서 외에

등은 만족하지 않습니다.

(...)은 여러번 사용할 수 있고 (심지어 겹쳐서도), \n은 기억된 n번째 부분을 지칭합니다. 순서는 기억이 시작되는 (의 순서입니다.

여기에서는 ()이 특수문자이고, 그냥 \(\)는 일반문자이지만, 도구에 따라 반대인 경우도 있습니다.

이 기능은 또 치환에서 자주 사용됩니다. 아래 vi와 sed 부분을 참고하길 바랍니다.

3.3. 단어 찾기

앞에서 the를 찾으면 the 외에 them 등도 같이 찾는 것을 보았습니다. 그러면 정관사 the만 찾으려면 어떻게 할까요?

간단히 정규표현식 앞뒤에 공백을 추가한 the 를 생각해 볼 수 있습니다. 그러나 이 정규표현식에는 두가지 문제가 있습니다. 첫번째는 탭(tab) 등 다른 공백문자가 있기 때문입니다. 두번째는 이 정규표현식으로 the가 줄 제일 앞이나 제일 뒤에 나오는 경우는 찾지 못하기 때문입니다. 물론 [], ^, $|를 복잡하게 결합하여 이들 경우를 모두 처리할 수 있는 정규표현식을 쓸 수 있지만, 자주 사용하는 표현이기 때문에 간단히 할 수 있는 방법이 마련되있습니다.

그것은 \<\>로, \<은 공백에서 공백이 아닌 문자 사이, \>는 공백이 아닌 문자에서 공백 사이의 위치를 나타냅니다. 즉, ^$와 같이 문자에 해당되지않고 위치만을 나타냅니다. 이제 해답은 \입니다.

3.4. 단축 표현들

정규표현식에는 이외에도 자주 사용되는 표현에 대한 단축된 형식을 제공합니다. 예를 들어, vim에서 \i는 (C 언어 인식자 이름에서 사용하는 문자인) [_a-zA-Z0-9]와 같습니다. 그러나 이런 단축된 형식은 도구에 따라 많은 차이가 나기때문에 관련 문서를 참고하길 바랍니다.

POSIX.2에서 정의한 단축 표현은 다음과 같습니다. (C 언어에서 에 선언된 is*() 함수와 비슷한 것을 알 수 있습니다.) 단축된 형식이 나타내는 정확한 값은 locale에 따라 변합니다. 여기서는 영어권에서 사용하는 값을 보입니다. 독일어의 움라우트(a)와 같이 다른 언어권에서는 다른 값을 가질 수 있습니다.

  • [:alnum:] - 알파벳과 숫자. [a-zA-Z0-9]
  • [:alpha:] - 알파벳. [a-zA-Z]
  • [:cntrl:] - 제어문자. ASCII 값으로 0x00-0x1F와 0x7F
  • [:digit:] - 숫자. [0-9]
  • [:graph:] - 제어문자와 공백을 제외한 문자. ASCII 값으로 0x21-0x7E
  • [:lower:] - 소문자. [a-z]
  • [:print:] - 제어문자를 제외한 문자. ASCII 값으로 0x20-0x7E
  • [:punct:] - [:graph:] 중에 [:alnum:]에 속하지 않은 문자. !, @, #, :, ,
  • [:space:] - space, tab, carriage return, new line, vertical tab, formfeed. ASCII 값으로 0x09-0x0D와 0x20
  • [:upper:] - 대문자. [A-Z]
  • [:xdigit:] - 16진수에 사용하는 문자. [0-9a-fA-F]

3.5. 눈으로 보는 정규표현식

정규표현식이 패턴을 찾는 과정을 시각적으로 보여주는 프로그램들이 있습니다.

4. 정규표현식 사용

이제 이런 정규표현식을 실제로 어떻게 사용하는지 알아봅시다. 평소에 많이 사용하는 vi, grep/egrep/fgrep, sed/awk의 예를 들어보겠습니다.

4.1. vi에서

vi에서 정규표현식은 ':'상태에서 사용합니다. (실제로 이 상태에서 실행하는 명령어는 ed나 ex라는 프로그램이 처리하게 됩니다. 그래서 보통 이 상태를 "ed-모드"라고 합니다.) 문서에서 원하는 패턴을 찾으려면, (커서 다음에서 찾을때) /패턴이나 (커서 전에서 찾을때) ?패턴을 사용합니다.

정규표현식은 문자치환과 결합하여 강력한 기능을 합니다. 문자치환 명령은 다음과 같습니다.

:범위s/변경전/변경후/수정자

"범위"는 명령이 실행될 범위를 나타내며, 보통은 현재 편집하고 있는 문서 전체를 지시하는 (첫번째 줄에서 마지막 줄까지를 뜻하는) 1,$나 줄여서 %를 사용합니다.

뒤에 "s"는 치환(substitute) 명령어입니다.

"변경전"과 "변경후"에 치환할 내용을 입력합니다. "변경전"에 정규표현식을 적습니다. 정규표현식으로 ., *, ^, $, [], \(...\), \<...\>, POSIX.2 단축 표현을 사용할 수 있습니다. 여기서 여러 문자를 묶여서 단위를 만들고 찾은 내용을 기억하는 특수문자가 \(, \)임을 주의해야 합니다. 반대로 (, )가 일반문자입니다. vim(VI iMproved)에서는 vi에 추가로 |, +, (?와 같은) =, {n,m}을 사용할 수 있지만, 앞에 \를 붙여야 합니다. 또, vim에는 \i, \k, \p, \s 등의 단축 표현들이 있습니다.

"변경후"에 \n&를 사용할 수 있습니다. \n는 "변경전"에서 n번째 \(...\)에 대응하는 부분이고, &는 "변경전"에 만족한 전체를 나타냅니다. 예를 들어, :%s/\([0-9][0-9]*\) \([Cc]hapter\)/\2 \1/는 문서에서 12 Chapter같은 부분을 Chapter 12와 같이 치환하고, :%s/F[1-9][12]*/&/g는 HTML 문서에서 "F1" ~ "F12"란 단어 모두를 굵은 체로 바꿉니다. (주의! &는 정규표현식의 특수문자는 아니지만 vi의 특수문자이므로, 문자그대로의 &를 사용하려면 대신 \&를 사용해야 한다.) 이외에도 (뒤를 모두 대문자로) \u나 (뒤를 모두 소문자로) \l같은 기능이 있습니다.

"수정자"는 치환 명령의 세부사항을 결정합니다. 필요한 것만 뒤에 적어주면 됩니다.

  • g (global) - 한 줄에서 정규표현식을 만족하는 부분을 여러개 찾았을 때 모두다 치환한다. 이 수정자를 사용하지 않으면 처음 것만 치환한다.
  • c (confirm) - 만족하는 정규표현식을 찾았을때 치환하기 전에 확인한다.
  • i (ignore-case) - 대소문자를 무시하고 찾는다. 즉, :%s/[aA][bB][cC]/XXX/ 대신에 :%s/abc/XXX/i를 사용할 수 있다.

마지막으로 주의할 점은 치환명령어가 / 문자로 각 부분을 구분하기때문에 "변경전"이나 "변경후"에 / 문자를 사용하려면 \/ 같이 써야합니다. 필요하다면 / 대신 다른 문자를 사용해도 됩니다. 예를 들어, :%s/\/usr\/local\/bin\//\/usr\/bin\//g 대신 :%s#/usr/local/bin/#/usr/bin/#g가 알아보기 더 쉽습니다.

4.2. grep/egrep/fgrep에서

grep은 Global Regular Expression Print(ed 명령어로 :g/re/p)의 준말로 입력에서 원하는 정규표현식을 찾는 명령어입니다. grep에는 egrep과 fgrep이라는 변종이 있습니다. 전통적으로 egrep은 grep 보다 더 다양한 정규표현식을 지원하고, fgrep은 정규표현식을 지원하지 않고 빨리 검색하기 위한 명령어입니다. GNU grep에서 egrep은 grep -E, fgrep은 grep -F와 같습니다.

grep과 egrep 모두 ., *, ?, +, {n,m}, ^, $, |, [], (...), \n, \<...\>, POSIX.2 단축 표현을 지원합니다. 단, grep은 ?, +, {, |, (, )를 일반문자로 보기때문에 특수문자로 사용하려면 앞에 \를 붙여야 합니다.

2006/09/08 22:12 2006/09/08 22:12
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 돈포겟미
원본 http://blog.naver.com/jjazungna/23879946
ascii code 아스키 코드표

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Ctrl-@

NUL

00

000

0

Space

20

040

32

@

40

100

64

`

60

140

96

Ctrl-A SOH

01

001

1

!

21

041

33

A

41

101

65

a

61

141

97

Ctrl-B STX

02

002

2

"

22

042

34

B

42

102

66

b

62

142

98

Ctrl-C ETX

03

003

3

#

23

043

35

C

43

103

67

c

63

143

99

Ctrl-D EOT

04

004

4

$

24

044

36

D

44

104

68

d

64

144

100

Ctrl-E ENQ

05

005

5

%

25

045

37

E

45

105

69

e

65

145

101

Ctrl-F ACK

06

006

6

&

26

046

38

F

46

106

70

f

66

146

102

Ctrl-G BEL

07

007

7

'

27

047

39

G

47

107

71

g

67

147

103

Ctrl-H BS

08

010

8

(

28

050

40

H

48

110

72

h

68

150

104

Ctrl-I HT

09

011

9

)

29

051

41

I

49

111

73

i

69

151

105

Ctrl-J LF

0A

012

10

*

2A

052

42

J

4A

112

74

j

6A

152

106

Ctrl-K VT

0B

013

11

+

2B

053

43

K

4B

113

75

k

6B

153

107

Ctrl-L FF

0C

014

12

,

2C

054

44

L

4C

114

76

l

6C

154

108

Ctrl-M CR

0D

015

13

-

2D

055

45

M

4D

115

77

m

6D

155

109

Ctrl-N SO

0E

016

14

.

2E

056

46

N

4E

116

78

n

6E

156

110

Ctrl-O SI

0F

017

15

/

2F

057

47

O

4F

117

79

o

6F

157

111

Ctrl-P DLE

10

020

16

0

30

060

48

P

50

120

80

p

70

160

112

Ctrl-Q DCI

11

021

17

1

31

061

49

Q

51

121

81

q

71

161

113

Ctrl-R DC2

12

022

18

2

32

062

50

R

52

122

82

r

72

162

114

Ctrl-S DC3

13

023

19

3

33

063

51

S

53

123

83

s

73

163

115

Ctrl-T DC4

14

024

20

4

34

064

52

T

54

124

84

t

74

164

116

Ctrl-U NAK

15

025

21

5

35

065

53

U

55

125

85

u

75

165

117

Ctrl-V SYN

16

026

22

6

36

066

54

V

56

126

86

v

76

166

118

Ctrl-W ETB

17

027

23

7

37

067

55

W

57

127

87

w

77

167

119

Ctrl-X CAN

18

030

24

8

38

070

56

X

58

130

88

x

78

170

120

Ctrl-Y EM

19

031

25

9

39

071

57

Y

59

131

89

y

79

171

121

Ctrl-Z SUB

1A

032

26

:

3A

072

58

Z

5A

132

90

z

7A

172

122

Ctrl-[ ESC

1B

033

27

;

3B

073

59

[

5B

133

91

{

7B

173

123

Ctrl- FS

1C

034

28

<

3C

074

60

5C

134

92

|

7C

174

124

Ctrl-] GS

1D

035

29

=

3D

075

61

]

5D

135

93

}

7D

175

125

Ctrl-^ RS

1E

036

30

>

3E

076

62

^

5E

136

94

~

7E

176

126

Ctrl_ US

1F

037

31

?

3F

077

63

_

5F

137

95

DEL

7F

177

127


2006/09/08 22:02 2006/09/08 22:02
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > ▶ IT 강국 코리아
원본 http://blog.naver.com/leeyb74/130002720990

where    a.code NOT IN (select     deptno from tab2 where gcode = b.code)

위와 같이 NOT IN 의 연산자가 올 경우, SUB QUERY의 조건을 사용하여 NOT IN 대신 NOT EXISTS를 사용하여 개선할 수 있습니다.

where   a.code IS NOT NULL

and       a.code NOT IN ( select    /*+ MERGE_AJ */

                                                    deptno from tab2 where gcode = b.code

                                       and       deptno IS NOT NULL)

위와 같이 NOT IN 을 사용하는 경우 힌트를 사용하여 성능을 더욱 개선할 수 있습니다. 다음과 같이  /*+ MERGE_AJ*/ 나 혹은 /*+ HASH_AJ */ 와 같은 해당 조인시에서 양쪽 집합만을 추출하는 것에 대해 최적인 실행 계획을 수립, 실행하라는 힌트를 쓸 수 있습니다. 이 때 양쪽 집합의 조건에 NOT NULL을 주는 것은 필수 조건으로 오라클의 버그를 피하기 위한 방법입니다.

2006/09/08 19:54 2006/09/08 19:54
이 글에는 트랙백을 보낼 수 없습니다
대수학  2006/09/08 19:52

관계형 연산자

관계형 연산자는 ..보다 크다, ..보다 작다, ..와 같다, ..와 같지 않다 등등.. 어떤 데이터들을 비교할 때 쓰이는 연산자입니다.

주로 제어 구조, 특히 if문에서 쓰이지만 꼭 그런 것은 아닙니다. 우선 관계형 연산자에는 어떤 것이 있는지 알아보죠.

관계형 연산자에는

==  ..와 같다

>   ..보다 크다

<   ..보다 작다

>=  ..보다 크거나 같다.

<=  ..보다 작거나 같다.

!=  ..와 다르다.


다음과 같은 것들이 있습니다.

그럼 각 연산자들의 이해를 돕기 위해 다음 표를 보시기 바랍니다.

a == b  a와 b가 같다

a > b   a가 b보다 크다

a < b   a가 b보다 작다

a >= b  a가 b보다 크거나 같다.

a <= b  a가 b보다 작거나 같다.

a != b  a와 b가 다르다.


이걸 보시면 이해가 되실 겁니다. 그런데 대부분의 연산자들은 어떤 값을 돌려주죠.

예를 들어 +연산자는 두개의 값을 더해 돌려 주죠. 그러면 이 관계형 연산자는 무엇을 돌려 줄까요? 돌려주는 값은 0과 1중 한가지 입니다.

관계형 연산자가 쓰인 수식을 보면 어떤 조건을 나타내고 있음을 알게 되실 겁니다. 그 수식이 참이면 1을 돌려주고, 거짓이면 0을 돌려주죠.

예를 들어

a=1==2;

이런 문장이 있다고 합시다. 그럼 a에는 어떤 값이 들어갈까요?

'1과 2는 같다' <- 이건 거짓이므로 a에는 0이 들어가겠죠?

논리 연산자

논리 연산자는 아까 관계 연산자의 수식 두 가지를 논리적으로 연관시키는 연산자입니다.

쉽게 말하지면 관계형 연산자로 조건이 만들어 지는데 이런 조건 두개가 동시에 만족해야 할 경우가 있다고 합시다. 그럴 경우 이 논리 연산자를 쓰면 됩니다.

논리 연산자에는 다음과 같은 것들이 있습니다.

&&  AND

||  OR

!   NOT


각각의 의미는 위에 쓰여진 그대로인데 이걸 보세요

그런데 여기서 a와 b는 관계형 연산자로 만든 조건이라고 합시다.

a && b  a와 b모두 참일 때

a || b  a또는 b가 참일 때

!a      a의 반대


a && b의 경우 a라는 조건과 b라는 조건이 모두 참일 때 1을 돌려주고, 하나라도 거짓이면 0을 돌려 주죠. a || b의 경우는 둘 중 하나만 참이면 1을 모두 거짓일 때만 0을 돌려주죠. !a의 경우 반대로 되는데, 즉 참이면 0을 거짓이면 1을 돌려 줍니다.

만약 다음과 같은 문장이 있다고 합시다

a=(2>1)&&(3>1);

이럴 경우 a에는 어떤 값이 들어갈까요? 당연히 1이 들어가죠

하지만

a=(1>5)&&(3>1);

이럴 땐 0이 들어가겠죠??

비트별 연산자

비트별 연산자는 비트단위 연산을 할 때 쓰이는 연산자입니다.

먼저 비트별 연산자의 종류를 알아보죠. 비트별 연산자에는 다음과 같은 것들이 있습니다.

&      AND (비트별 논리곱)

|      OR  (비트별 논리합)

^      XOR (비트별 배타 논리합)

~      1의 보수

<<     왼쪽으로 시프트

>>     오른쪽으로 시프트

다음과 같은 것들이 있는데 하나씩 자세히 알아보죠.

(1) 비트별 논리곱

&는 비트 단위로 AND연산을 하는 건데, 연산하려는 두 개의 비트가 모두 1일때만 결과가 1이 되고 하나라도 0이면 결과는 0이 됩니다.

정리하면

1 & 1

1

1 & 0

0

0 & 1

0

0 & 0

0

이렇게 되죠.

한가지 문제를 드리죠

0x0F & 0xFF = ?

알아 맞춰 보세요.

답은 0x0F죠.

0x0F는 이진수로 00001111입니다. 0xFF는 11111111이죠. 그런데 &연산자는 모두 1일때만 1을 돌려 줍니다. 00001111과 11111111에서 모두 1인 부분은 뒤쪽 4개의 비트죠.

그러므로 결과는 00001111

이걸 16진수로 고치면 0x0F가 되죠.

다시 정리하면

0x0F = 00001111

0xFF = 11111111

(& 연산)

      00001111 = 0x0F


이해가 되시죠?

(2) 비트별 논리합

다음으로 |연산자에 대해 자세히 알아보죠.

|는 OR연산을 하는 것으로 &와는 달리 두개의 비트 중 1개라도 1이면 1을 돌려주는 연산자입니다.

1 | 1

1

1 | 0

1

0 | 1

1

0 | 0

0


이런 연산을 하는 연산자입니다. 그럼 이것두 문제를 드릴까요?

아까처럼 0x0F와 0xFF를 쓰도록 하죠. 그런데 이 두개를 OR연산 하면 어떤 결과가 나올까요?

당연히 0xFF죠.

이유는 하나라도 1이면 1을 돌려 주므로.

0x0F = 00001111

0xFF = 11111111

(| 연산)

      11111111 = 0xFF


이렇게 되기 때문이죠.

(3) 비트별 배타 논리합

다음으로 ^연산자에 대해 알아보죠.

^는 비트단위 배타 OR연산 즉 비트단위 XOR연산을 하는 연산자입니다. 이 연산자는 OR과 비슷하지만, 다른 점은 두개의 비트가 모두 1일때는 0을 돌려준다는 것이죠. OR에서는 1을 돌려주지만

즉..

1 ^ 1

0

1 ^ 0

1

0 ^ 1

1

0 ^ 0

0


다음과 같은 연산을 하게 됩니다. 그럼 이번엔 0x0F와 0xFF를 XOR연산하면 어떤 결과가 나올까요?

이건

0x0F = 00001111

0xFF = 11111111

(| 연산)

      11110000 = 0xF0


이렇게 해서 0xF0이 나오게 됩니다.

(4) 1의 보수

다음으로 ^연산자에 대해 알아보죠.

^는 1의 보수를 구하는 연산자로 그냥 쉽게 비트들을 반대로 즉 0이면 1로 1이면 0으로 바꿔버린다고 알고 계시면 됩니다.

~ 0

1

~ 1

0


이런 연산을 하는 것이죠.

1의 보수 연산을 잘 쓰면 좋은 점이 많이 있습니다. 만약 여러분이 unsigned long가 가질 수 있는 가장 큰 값을 써야 할 경우 어떻게 할까요?

unsigned long는 4294967296까지 넣을 수 있는데 이걸 직접 써야 할까요? 그렇게 해도 되고 좀더 쉬운 방법으로 0xFFFFFFFF라고 써도 되겠지만

더 쉬운 방법은 ~0이라고 쓰는 것입니다. 0은 모든 비트가 0인데 이걸 1의 보수 연산자로 ~0이라고 쓰면 모든 비트가 1이 되므로 가장 큰 값이 되는 것이죠.

(5) 시프트

다음으로 시프트 연산자인 <<와 >>에 대해 알아보죠

<<, >>는 지정된 방향으로 지정된 수 만큼 비트를 이동시키는 것입니다. 예를 들어

?? = 0xF0 >> 4;

이렇게 하면 0xF0 즉 11110000을 >>방향으로 4만큼 이동시키는 것이죠. 그래서 결과는 00001111 즉 0x0F가 됩니다. 만약 1이 오른쪽 끝까지 갔다면 그냥 없어집니다. 그리고 왼쪽은 0으로 계속 채워지구요.

<<도 이것과 똑같으나 방향만 다를 뿐입니다.

이것으로 비트별 연산자는 마치도록 하죠.

기타 연산자

다음으로 기타 연산자들을 배워 보기로 하겠습니다.

여기서 배울 것에는 조건 연산자, 증감 연산자, 그리고 sizeof연산자와, 혼합 연산자가 있습니다.

(1) 조건 연산자

조건 연산자는 주어진 조건에 따라 어떤 수식을 실행하고 그 결과를 돌려주는 연산자입니다.

사용법은

조건 ? 수식1 : 수식2

이런 식으로 사용하죠.

여기서 조건은 관계형 연산자로 만든 조건입니다. 여기서 만약 조건이 참이면 수식1을 실행한 후 그 결과를 돌려주고, 거짓이면 수식2를 실행하는 것입니다.

예를 들어 보죠.

a = 1>3 ? 1+3 : 2+6;

여기서 a에 들어가는 값은?

1>3이란 조건은 거짓이므로 두번째 수식인 2+6이 실행되고 결과로 8을 돌려주므로 a는 8이 되겠죠.

이 문장은

1>3 ? a=1+3 : a=2+6;

이렇게 써도 상관 없습니다. =이 들어가도 수식이므로

(2) 증감 연산자

이번엔 증감 연산자에 대해 알아보죠.

증감 연산자는 어떤 변수에 1을 더하거나 빼 주는 연산자이죠.

연산자에는

++  1만큼 증가시킴

--  1만큼 감소시킴

이렇게 두 가지가 있습니다.

이 두 연산자는 변수 앞이나 뒤에 붙여 사용하면 되는데 앞에 붙일 때와 뒤에 붙일 때의 차이점은 일단 나중으로 넘기고...

예를 들어보죠. 만약,

a++;

이렇게 하면 a는 1이 증가하게 됩니다.

즉 a=a+1;가 되는 것이죠.

그리고

a--;

이렇게 하면 a=a-1;이 되는 것 이고요. 그럼 앞에 붙이느냐 뒤에 붙이느냐에 차이를 알아보죠.

이 차이가 나는 곳은 바로 이 연산자가 하나로만 쓰이지 않고 여러 개의 연산자와 같이 쓰였을 때 차이가 납니다.

이 연산자를 앞에 붙이면 이 연산이 가장 먼저 수행되고 다른 연산이 수행됩니다. 하지만 이 연산자를 뒤에 붙이면 다른 모든 연산을 수행하고 이 연산을 수행하게 되죠.

예를 들어

int a, b=1;

a = 6 - ++b;


이렇게 했을 때는 앞에 붙었으므로 우선 b를 1 증가시켜 2로 만든 후 6에서 빼 a에는 4가 들어가지만

int a,b=1;

a = 6 - b++;


이럴 경우 우선 다른 연산부터 해서 a에는 5가 들어가고

마지막으로 b가 1이 증가되어 2가 되게 됩니다.

(3) sizeof연산자

이번엔 sizeof연산자에 대해 알아보죠.

sizeof는 어떤 데이터 타입이나 변수, 또는 상수의 크기를 바이트 단위로 알아내는 연산자입니다.

사용법은

sizeof(데이터타입) 또는

sizeof(데이터)


예를 들어

a=sizeof(char)

이렇게 할 경우 char형태는 1바이트 이므로 a는 1이 됩니다.

그리고

char c;

a=sizeof(c);


이렇게 해도 1이 되죠

a=sizeof(long);

이렇게 하면 4를 돌려 주겠죠? 그리고 만약 배열이라면 배열 크기를 바이트 수로 돌려줍니다.

예를 들어

int array[10];

a=sizeof(array);


이렇게 할 경우 int는 2바이트 이고 10개의 배열이므로 2*10=20이므로 20을 돌려줍니다.

(4) 혼합 연산자

혼합 연산자는 말 그대로 두개의 연산자를 혼합한 것입니다.

프로그램을 만들다 보면

a=a+3;

a=a-2;

a=a*3;

a=a/2;

a=a|0x0F;

a=a&0x0A;

a=a>>4;


이런 수식처럼 한 개의 데이터 여기 선 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

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

이런 기능을 합니다.

이렇게 혼합 연산자를 잘 쓰면 수식을 더 간단히 쓸 수 있죠.<!--"<-->

2006/09/08 19:52 2006/09/08 19:52
이 글에는 트랙백을 보낼 수 없습니다

접미사 [, suffix]
///
요약
접사()의 하나로 낱말의 끝에 붙어 의미를 첨가하여 다른 낱말을 이루는 말.
본문

단독으로는 사용할 수 없고, 항상 다른 단어의 어근 뒤에 결합되어, 여러 가지 의미를 첨가해 주는 역할을 한다. 접미사가 결합된 어형을 파생어라 하며 품사가 달라지는 경우가 많다.

체언에 붙는 접미사로는 존칭을 나타내는 ‘-님’이나 동작주()를 나타내는 ‘-수’ ‘-자’ 등과, 복수를 표시하는 ‘-들’, 그 밖에 ‘-화’ ‘-식’ ‘-적’ 등이 있다. 용언에 붙는 접미사로는 사동 ·피동을 나타내는 ‘이 ·히 ·리 ·기 ·우’ 등을 들 수 있다. 또 접미사 가운데는 원래의 품사는 그대로 둔 채, 새로운 의미만을 첨가하는 것, 원래의 자립어와는 문법적 기능을 달리하는 것이 있으며, 형용사에서 명사를 파생시키는 경우, 또는 명사에서 동사를 파생시키는 경우 등도 있다. 그리고 접미사와 어미의 구별이 모호한 경우도 많다.

외국어의 경우는 독립된 단어의 어기() 뒤에 붙어서 그 단어의 의미나 기능을 변화시키는 부속형식을 접미사라고 한다. 단독으로는 나타날 수 없고 강세를 받는 일도 거의 없다(예:man-manly, kind-kindness, beauty-beautiful 등). 문법적 기능을 변화시키는 수단으로 사용된 예로는 car-cars, easy-easier, enter-entered 등을 들 수 있다. 이들 복수어미나 비교급어미는 넓은 의미의 접미사에 속하지만 좁은 의미로는 어미에 속한다. 아이누어나 에스키모어 같은 포합어()에서는 하나의 어기에 접두사나 접미사가 여러 개 잇달아 붙어 여러 가지 문법적 기능을 맡을 때도 있다.

< 조사의 종류 > 

구 분

종 류

내     용

격조사

주격조사

앞의 말을 문장의 주어가 되게 해 주는 조사

이/가, 께서, 에서

서술격조사

앞의 말을  문장의 서술어가 되게 해 주는 조사

이다

목적격조사

앞의 말을 목적어가 되게 해 주는 조사

을/를

보격조사

앞의 말을 보어가 되게 해 주는 조사

이/가

관형격조사

앞의 말을 관형어가 되게 해 주는 조사

부사격조사

앞의 말을 부사어가 되게 해 주는 조사

에서, 으로……

호격조사

부르는 말에 붙어서 독립어로 만들어 주는 조사

아/야, 여, 이여

접속조사

두 단어를 같은 자격으로 이어 주는 조사 

와 /과, 하고

보조사

다른 조사와는 달리 일정한 한 자리(격)에만 쓰이지 않고, 여러

성분에 두루 붙어서 거기에 특별한 의미를 더해 주는 조사

은/는,  도,  만,

뿐,  마다,  조차,

(야)말로


<품사의 종류〉

품사-단어의 성질이 공통된 것끼리 모아 분류한 단어의 갈래

형태

기능

            특징

의미

                 특징

불변어

체언

․문장에서 주로 주어 역할을 함

․형태가 고정되어 있어 변하지 않음    

․조사가 붙어 모든 문장 성분으로 쓰    일 수 있음

․실질적인 의미를 지님

명사

․구체적인 대상의 이름이나 추상적인 대상의 이름을    나타내는 단어.     

  예) 충무공, 색종이

대명사

․사람, 사물, 장소의 이름을 대신하여 가리키는 단어. 

․관형사의 수식을 받지 않음

  예) 나, 이것, 여기, 우리

수사

․수량이나 순서를 가리키는 단어.

  예) 하나, 둘 ,첫째, 둘째

특별한 경우를 제외하고는 관형사의 수식을 받지

  예) 다른 하나

  않음

뒤에 조사가 붙으면 수사이고, 그렇지 않고 체언을          꾸며 주는 말은 관형사

가변어

용언

․문장에서 주로 서술어로 쓰이나

  여러 가지 문장 성분으로 쓰일 수     있음 

․문장에서 쓰임에 따라 형태가 변함

  (활용 할 수 있음)        

동사

․사람이나 사물의 상태나 성질을 나타내는 단어         예) 흐른다, 먹다

형용사

․사람이나 사물의 상태나 성질을 나타내는 단어.       예) 아름답다, 곱다

명령형 어미와 청유형 어미는 사용되지 않음 

  예) 예뻐라(×), 예쁘자(×)

불변어

수식언

․형태가 변하지 않음

․다른 성분을 꾸며주는 역할을 함    

관형사

․체언 앞에 놓여서 그 말을 자세하게 꾸며 주는 단어    예) 새, 한, 모든. 이

조사를 취할 수 없음

․문장 속에서 관형어로만 쓰임

이, 그, 저 등은 조사 없이 체언을 꾸미면 관형사,

   조사가 붙어 쓰이면 대명사

부사        

․주로 용언을 꾸며 주지만, 때로 체언, 수식언, 문장    전체 등을 꾸미기도 함

  예) 아주, 일찍, 그러나

․보조사는 연결되지만 격조사는 연결 안됨

․부사어로만 쓰임

불변어

(서술격

조사-‘이다’만 가변어)

관계언

․주로 체언 뒤에 붙으며 용언의 명사    형이나 부사에도 결합하여 쓰이며     단어로 인정함

․서술격 조사‘-이다’를 제외하고는

  활용 할 수 없음

조사

․체언 뒤에 붙어서 다른 말과의 문법적인 관계를 나    타내 주는 조사

  예) 이/가, 을/를, 이다

조사

․특별한 뜻을 더해 주는 역할을 하는 조사

  예) 도, 만, 부터

불변어

독립언

․문장에서 독립적으로 쓰임

․문장 어느 곳에나 놓일 수 있음

․형태 변하지 않으며 조사가 붙지

  않음   

감탄사

․감정을 넣어 말하는 이의 놀람, 느낌, 부름이나, 대    답을 나타내는 단어

  예) 앗, 어머, 야, 네

※ ‘지은아, 풀 좀 빌려줘’

문장성분은 독립어지만 품사는 명사+조사로  되어 있음

                                                                  

2. 문장 성분의 종류

• 문장성분 : 문장 안에서 문장을 구성하면서 일정한 문법적인 기능을 하는 각 부분

• 문장성분의 종류 - 주성분, 부속성분, 독립성분

㈀ 주성분 : 문장을 이루는 데 골격이 되는 부분 (주어, 목적어, 보어, 서술어)

㈁ 부속성분 : 주로 주성분의 내용을 수식하는 성분 (관형어, 부사어)

㈂ 독립성분 : 문장에서 다른 성분과 직접적인 관련이 없는 성분 (독립어)


(1) 서술어와 주어

• 서술어

개념 : 주어의 동작이나 작용, 상태, 성질 등을 풀이하는 기능을 하는 문장 성분

실현 : 동사나 형용사로 이루어지는 것이 보통이나 체언에 서술격 조사 ‘이다’가 결합되어

이루어진 경우도 있다.

• 국어 문장의 유형 : 서술어의 종류에 따라 ‘무엇이 어떠하다’, ‘무엇이 어찌하다’, ‘무엇이 무엇이다’로 나뉨. 여기에서 ‘어떠하다’, ‘어찌하다’, ‘무엇이다’에 해당하는 것이 서술어이다.

• 서술어의 자릿수 : 서술어는 그 성격에 따라서 필요로 하는 문장 성분의 개수가 다른데, 이를 서술어의 자릿수라고 한다.

그녀는 예뻤다. -  한 자리 서술어

  그는 연극을 보았다.   우정은 보석과 같다.   물이 어음이 되었다. - 두 자리 서술어 (목적어, 부사어, 보어를 필수적으로 요구)

할아버지께서 우리들에게 세뱃돈을 주셨다. - 세 자리 서술어 (주어와 목적어 부사      어 세 가지를 필수적으로 요구)

• 주어

개념 : 문장에서 동작이나 작용, 상태, 성질의 주체를 나타낸다. 문장을 서술어의 종류에 따라 나눌 때 ‘무엇이’에 해당한다.

실현 : 주어는 체언이나 체언구실을 하는 구나 절에 ‘이/가’, ‘께서’가 붙어 나타나는 데 주격 조사가 생략될 수도 있고 보조사가 붙을 수도 있다.

철수가 집에 간다.   어디 가니?    영희도 집에 간다.

그 소년이 무지개를 바라보았다.   그림 그리기가 나의 취미다.

할아버지께서만 그 일을 할 수 있으셔.


(2) 목적어와 보어

• 목적어

개념 : 서술어의 동작 대상이 되는 문장 성분, 타동사가 서술어로 쓰일 때는 목적어가 필요하다.

실현 : 체언에 목적격 조사 ‘을/를’이 붙는 것이 일반적이나, 때로 ‘을/를’이 생략될 수도 있다. 또 ‘을/를’이 생략되는 대신에 특정한 의미를 더하여 주는 보조사가 붙기도 한다.

나는 과일 좋아해.      난 과일 좋아해.       나는 과일 좋아해.

• 목적격 조사의 보조사적 용법 : 학교 문법에서는 목적격 조사를 취하고 있으면 무조건 목적어로 보고 있다. 하지만 목적격 조사를 취하고 있지만 기능이나 의미상 목적어로 보기 힘든 것을 목적격 조사의 보조사적 용법 정도로 간주하고 있다.(다른 문법적 의견으로는 강조의 보조사 ‘을/를’을 따로 설정)

나는 학교에 갔다.    나는 학교를 갔다.

지애는 선물을 기연이에게  주었다.    지애는 선물을 기연이를 주었다.

• 보어

개념 : ‘되다, 아니다’와 같은 서술어를 필요로 하는 문장 성분만을 보어로 인정한다.

실현 : 체언에 보격조사 ‘이/가’가 붙어서 실현된다.

물이 얼음이 되었다.    물이 얼음으로 되었다. (필수적 부사어)                       


(3) 관형어, 부사어, 독립어

• 관형어

개념 : 체언을 수식

실현 : 관형사가 그대로 관형어가 되는 것이 기본이나, 체언에 관형격 조사 ‘의’가 결합되어 관형어로 쓰이거나(관형격 조사 ‘의’가 없이 ‘체언+체언’의 구성으로 나타나기도 한다.), 용언의 관형사형 (용언의 어간에 관형사형 어미 ‘-(으)ㄴ, -는, -(으)ㄹ, -던’이 결합)으로 나타난다.

아기가 옷을 입었다.

소녀는 시골의 풍경을 좋아한다.

소녀는 시골 풍경을 좋아한다.

• 부사어

㈀ 성분 부사어

개념 : 용언, 관형어, 다른 부사어를 수식

실현 : 부사어가 그대로 부사어가 되는 것이 기본이나, 체언에 부사격 조사‘에,에서, 에게, (으)로’가 결합되어 나타나거나, 용언의 부사형 ‘이, 게, -(아)서, -도록’으로 나타난다. 또 보조사가 결합되어 실현되기도 한다.

가을 하늘이 높아 보인다.  (부사에 의한 실현)

우리들은 오후에 여행에서 돌아왔다.   (체언에 부사격 조사가 결합되어 실현)

무척이나 맑아 보인다.  (부사에 보조사가 결합하여 실현)

㈁ 문장 부사어

개념 : 문장 전체를 수식 (문장이나 단어를 이어주는 접속 부사어와 ‘과연, 설마, 모름지기, 확실히, 만일, 설령, 제발, 부디’같이 말하는 사람의 심리적 태도를 나타내는 부사들, 이러한 부사들을 특별한 말들과 호응 관계를 이루는 경우가 많다.)

그러나 희망이 아주 사라진 것은 아니다.

정치, 결제 문화가 발달하여야 선진국이다.

과연 그 아이는 똑똑하구나.

확실히 오늘 경기는 신나는 한 판이었어.

만일 네가 계속 이런 식으로 나온다면 더 이상은 참을 수 없어.

모름지기 젊은이는 커다란 포부를 가져야 한다.

• 필수적 부사어와 수의적 부사어

개념 : 문장에서 꼭 필요로 하는 부사어를 필수적 부사어, 그렇지 않은 부사어를 수의적 부사어라 한다. (부사어는 문장에서 꼭 필요한 성분은 아니다.)

실현

㈀ 수의적 부사어 : 파생 부사나(많이, 일찍이) 순수 부사로(꼭) 이루어짐

㈁ 필수적 부사어 : 부사격 조사 ‘와, 로’ 등이 결합되어 이루어짐 (‘다르다, 생기다, 같다, 비슷하다, 닮다, 다르다’같은 두 자리서술어나, ‘주다, 삼다, 넣다, 두다’같은 세 자리 서술어는 필수적으로 부사어를 요구한다.)

㈀ 나는 나, 너와는 많이 다르다.   영현이는 아빠와 닮았다. 

  아버지는 일찍이 그 아이를 수양딸로 삼으셨다

㈁ 나는 나, 너와는 다르다.        영현이는 아빠와 닮았다.

  아버지는 그 아이를 수양딸로 삼으셨다.

• 체언 수식 부사

개념 : ‘바로, 다만, 단지, 특히, 오직, 겨우, 아주’ 등은 부사이지만 관형어처럼 사용되기도 하다.(학교 문법에서는 품사의 통용을 설정하고 있으므로 관형사로 통용하는 처리도 가능하다는 점에서 체언 수식 부사로 처리하는 것에 문제점이 있다.)

바로 오너라.    그건 바로 너의 책임이다.

•독립어

개념 : 문장의 어느 성분과도 직접적인 관련이 없는 문장 성분

실현 : 일반적으로 감탄사가 독립어가 되나, 체언에 호격 조사 ‘아, 이여’가 결합된 형태로도 나타난다.


누가 / 무엇이

무엇을, 무엇이

무엇이다

어떠하다

어찌하다

나는

탐험가가

되겠다.

고양이는

장난꾸러기이다.

동남이는

음료수를

좋아한다.

기능

● 한 문장에서 동작,   성질, 관계 등의 주체   가 되는 부분이다. 문   장 속에서 ‘누가/무엇   이’에 해당하며, 구어체   에는 흔히 생략되기도   한다.

● 행위의 대상이 되는   말을 가리키는 문장 성   분이다(목적어).

● 문장 속에서 ‘되다/   아니다’ 앞에 필수적으   로 요구되는 문장 성분   으로, 이들 말을 보충   해 주는 기능을 한다    (보어). 

● 문장의 가장 중심이   되는 성분으로서, 문장   주체의 동작, 성질, 상   태 따위를 설명하는 말   이다. 성격에 따라 목   적이 되는 말이나 보충   하는 말을 필요로 한    다.

명칭

주어

목적어, 보어

서술어

                                                                              


2006/09/08 16:25 2006/09/08 16:25
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2006/09   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)