응 아니야



이전까지의 1~7장을 모두 기억에 담으로 애쓰지 않아도 좋습니다. 학습은 뭐니뭐니해도 반복이 중요한거니까. 하다보면 익숙해지고 익숙하면 자기도 모르게 만들고 있게 됩니다.



위와 같이 설치합니다. 결과값은 어디에, 몇으로 표시될까요?



정답은 폼 이름에, 12로 표시됩니다. 분명, 폼캡션에 1과 2를 더한 3을 표시하라고 한것.. 같은데?


아닙니다. 폼1캡션에 텍스트1의 문자, 텍스트2의 문자를 더한 값을 대입한겁니다. 1과 2를 숫자가 아닌 문자로 취급하기 때문에 일어나는 일입니다.

[1]과 [2]가 아니라 [안녕]과 [하세요]였다면, [안녕하세요]라고 나오게 됩니다.


해결방법은? 간단합니다. 값에 value라는 예약어를 붙여주면 되죠. 형식은 이렇습니다.


Private Sub Form_Load()
Form1.Caption = val(Text1.Text) + val(Text2.Text)
End Sub


간단하죠? 이제 3으로 잘 나옵니다. 종류를 알아보겠습니다.


산술연산자와 비교연산자


a = 10

b = 2


번호

수식

설명

1

a + b

  더하기(숫자) 12

2

a & b

  더하기(문자열) 102

3

a - b

  빼기 8

4

a * b

  곱하기 20

5

a / b

  나누기(소수점 포함한 몫) 5

6

a \ b

  나누기(소수점 없는 몫) 5

7

a ^ b

  제곱 100

8

a mod b

  나머지 0

9

a < b

  작음 False

10

a <= b

  작거나 같음 False

11

a > b

 True

12

a >= b

  크거나 같음 True

13

a <> b

  다름 True

14

a = b

  같음 False

15

a is b

  같음 False



논리연산자

논리연산자에서는 2진 개념을 알아야 합니다. 컴퓨터는 0과 1로만 이루어져있습니다. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 까지 10개의 숫자를 10진수, 조합해 숫자를 만드는방법을 10진법이라고 합니다. 그럼 2진수와 2진법은 뭘까요. 그렇습니다. 숫자 2개 즉 0과 1만으로 숫자나 문자를 표현하는것을 2진법이라고 합니다.


그럼 10진법으로 만들어진 숫자를 2진법으로 바꿔 읽어보도록 하겠습니다.


10진수 7은 2진수 0111입니다.

7을 2로 계속 나누면 몫이 3.5가 되어버리는데, 이렇게 마치지 않고 몫을 다시 나누다보면 몫이 0이되는데, 여기서 사용된 나머지를 역순으로 읽으면 2진수가 됩니다.



그리고 논리연산자의 종류를 알아보겠습니다.


번호

수식

설명 (1 = True / 0 = False)

1

a and b 

 앞뒤의 비교값이 모두 1인 경우 1을 반환합니다.

2

a or b 

 비교값 가운데 어느 하나라도 1이면 1을 반환합니다.

3

not a

 값을 반대로 반환합니다.

4

a xor b

 비교값의 자리가 같으면 0 다르면 1을 반환합니다.

5

a eqv b 

 비교값의 두 식 값이 같으면 1을 반환합니다.

6

a imp b 

 비교값의 앞의 식이 1이고 뒤의 식이 0인 경우 0를 반환합니다.


1. AND 연산자 (비교값인 a와  b가 1인 경우 1을 반환합니다.)


                     


a = 1 1 0 1 0

b = 0 1 1 0 1

-----------

c = a and b

c = 1 1 1 1 1


2. OR 연산자 (비교값 가운데 어느 하나라도 1이면 1을 반환합니다.)


a = 1 1 0 1 0

b = 0 1 1 0 1

-----------

c = a or b

c = 1 1 1 1 1


3. not 연산자 (값을 부정하는 값을 반환합니다.)


a = True

--------

not a

a = False


4. xor 연산자(비교값의 값이 같으면 0 다르면 1을 반환합니다.)


a = 1 1 0 1 0

b = 0 1 1 0 1

-----------

c = a xor b

c = 1 0 1 1 1


5. eqv 연산자(비교값 a와 b의 값이 같으면 1을 반환합니다.)


a = 4 = 4 (값이 같으므로 True)

b = 4 > 2 (4가 크므로 True)

---------

c = a eqv b (True, True이므로 True)

c = True


6. imp (비교값의 앞의 식이 1이고 뒤의 식이 0인 경우 0를 반환합니다.)


a = 4 = 4 (값이 같으므로 True)

b = 4 < 2 (2가 크지않고 4가 크므로 False)

---------

c = a  imp b (True, False이므로 False)

c = False


비교연산자2

번호

수식

설명

1

a like b

a에서 b를 찾아냅니다.


번호

수식

설명


1

*

모두 포함합니다.


2

?

하나의 문자를 포함합니다.


3

#

하나의 숫자를 포함합니다.


4

!

아닙니다.


5

-

에서 까지


6

[]

문자를 포함합니다.



1. * (모두 포함합니다.)


a = "연산자"

b = "연산*"

-----------

c = a like b

c = True


쉽게 말해서 [*부분을 뭐든 좋으니 채워라] 정도가 되겠습니다. a의 값이 연산군이어도 True를 반환하죠.


a = "동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세"

b = "동해*만세"

-----------

c = a like b

c = True


*은 문자열의 길이나 위치를 따지지 않습니다.


a = "연산자"

b = "연"

-----------

c = a like b

c = False


a = "연산자"

b = "연산자"

-----------

c = a like b

c = True


다만 비교값 b의 값은 a와 같지 않을 경우 수식 없이 단독으로 사용할 수 없습니다.


a = "동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세"

b = "동*물"

-----------

c = a like b

c = False


또한 수식을 넣더라도 b로 a의 모든 문자열을 찾아야만 합니다.


2. ? (하나의 문자열만 찾습니다.)


a = "티스토리"

b = "티스?리"

-----------

c = a like b

c = True


a = "티스토리"

b = "티?리"

-----------

c = a like b

c = False


*과 다르게 ?은 문자열의 길이를 따져서 단 한글자만 찾습니다.


a = "티스토리"

b = "티??리"

-----------

c = a like b

c = True


True를 반환하려면 이렇게하면 됩니다. 응용을 얼마나 잘하느냐에 따라서 프로그램의 질이 확실히 달라질것입니다.


3. # (하나의 숫자만 찾습니다.)


a = 4321

b = 4#21

-----------

c = a like b

c = True


4021 4121 4221 4321 4421 4521 4621 4721 4821 4921 모두 True를 반환합니다.


4. ! (아닙니다.)


a = "피카추"

b = "피카[!츄초쵸츠]"

-----------

c = a like b

c = True


6번 []와 함께 사용합니다. 꺽쇠괄호안에 있는 문자열을 포함하지 않을경우 True를 반환합니다. 특정 합성어를 피하고 싶을때 사용하면 좋겠습니다. 피카소라고 하면 True를 반환해버리기 때문이죠.


5. - (에서 까지)


a = "S"

b = "[A-Z]"

-----------

c = a like b

c = True


a "S"에서 b의 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"를 찾습니다.


a = "S"

b = "[a-z]"

-----------

c = a like b

c = False

대소문자를 구별하기 때문에 유의하셔야 합니다.


a = "S"

b = "[A-z]"

-----------

c = a like b

c = True

그럼 이렇게 넣어주면 되죠. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghkjklmnopqrstuvwxyz"를 찾습니다.


a = "c"

b = "[A-b]"

-----------

c = a like b

c = False

이러면 "ABCDEFGHIJKLMNOPQRSTUVWXYZab"까지만 찾기 때문에 0을 반환합니다.


6. [] (문자를 포함합니다.)


4번과 5번에서 이미 사용했습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band