제 책 41 페이지에서 설명한 논리 연산자 중에서 &(AND 연산)은 2개의 조건식을 모두 비교하여 그 결과를 참, 거짓으로 구분했으며 |(OR 연산) 역시 2개의 조건식을 모두 비교하여 그 결과를 참, 거짓으로 나타내었습니다.
A, B 2개의 조건식이 있을 때 이를 논리 연산자를 이용할 경우 다음과 같은 비교를 통해 참(True), 거짓(False)을 구분합니다.
A |
B |
AND(A & B) |
OR(A | B) |
거짓 |
거짓 |
거짓 |
거짓 |
거짓 |
참 |
거짓 |
참 |
참 |
거짓 |
거짓 |
참 |
참 |
참 |
참 |
참 |
위에서 보면 A, B 조건식에서 AND 연산은 A, B 모두 참(True) 경우에만 참입니다. 그렇다면 만일 A 조건식이 거짓일 경우에는 B 조건식을 검사할 필요가 있을까요? 없을까요? 검사할 필요가 없겠죠?
마찬가지로 OR 연산의 경우 A가 참이면 B 조건을 검사할 필요가 없을까요? 있을까요? 당연히 A가 참이므로 B는 거짓이든 참이든 상관없이 그 결과는 참이 됩니다.
이에서 알 수 있듯이 불필요한 논리 연산을 피하기 위해서 제공되는 연산자가 바로 조건부 AND(&&), 조건부 OR(||) 연산입니다.
책의 예제의 Main() 함수를 다음과 같이 변경합니다.
int year = 25;
int height = 175;
//AND 연산(&) --①
if ((year < 30) & (conditionalTest(height)))
Console.WriteLine("2개의 조건식에 대한 AND 연산의 결과입니다.”);
//조건부 AND 연산(&&) --①-1
if ((year < 30) && (conditionalTest(height)))
Console.WriteLine("2개의 조건식에 대한 조건부 AND 연산의 결과입니다.”);
//OR 연산(|) --②
if ((year < 30) | (conditionalTest(height)))
Console.WriteLine("2개 조건식에 대한 OR 연산의 결과입니다.");
//조건부 OR 연산(||) --②-1
if ((year < 30) || (conditionalTest(height)))
Console.WriteLine("2개 조건식에 대한 조건부 OR 연산의 결과입니다.”);
위와 같이 Main() 함수를 변경하고 이제 위에서 B 조건식에 해당하는 conditionalTest() 함수를 다음과 같이 작성합니다.
static bool conditionalTest(int indata)
{
if (indata < 180)
{
Console.WriteLine("180보다 작습니다.");
return true;
}
else
{
Console.WriteLine("180보다 큽니다.");
return false;
}
}
이와 같이 작성한 후 Main() 함수 내에 있는 year의 값을 int year = 25; 으로 한 후 실행해봅니다.
그러면 다음과 같이 조건식 A가 참이므로 조건식 B는 실행하지 않는 결과를 나타냅니다. 어떻게 알 수 있냐구요. “180보다~”이 1번만 찍혔잖아요. 즉 OR 연산을 통해 (conditionalTest(175))이 실행되었지만 조건부 OR 연산은 실행되지 않았다는 의미입니다.
마찬가지로 int year 값을 35로 해서 실행해보면 조건부 AND(&&)의 의미를 이해할 수 있을 것입니다. 이상으로 제 책에 대한 부연 설명을 마칩니다. 열심히 공부하세요.
'제가 쓴 책 > 초보자를 위한 C# and Database 완벽가이드' 카테고리의 다른 글
97-2003 엑셀 파일 불러올 때 숫자형 데이터 안보이는 문제 (0) | 2011.01.21 |
---|---|
Oracle SQL Developer를 이용한 칼럼 데이터 타입, 크기 검색 (0) | 2010.10.11 |
Loopback Adapter 설치 (0) | 2010.09.10 |