본문 바로가기
[ Program ]/c#스터디

17.조건문(분기문) , bool형식 , 논리연산자1 - if

by 관이119 2021. 9. 20.





프로그램은 조건문과 반복문만 알면 모든프로그램을 만들수 있다.

그외 다른것들은 좀더 코드를 짧게 쓰고 읽기 쉽고 사용하기 편하게 하기위한 추가옵션이다.

실제로 이제까지 배운것에 조건과 반복문만 할줄알면 프로그램 코드를 길게 쓰긴하겠지만 모든 원하는것들을 다만들수 있다.

 

 

조건문 형식은 다음과 같다.

if(조건)

{

     조건이 참일때 실행할내용

}

else

{

     조건인 거짓일때 실행할내용

}

 

 

 

{ 내용 } 과 같은 형식도 처음볼텐데 이미 앞에 쓰고 있던 내용이다.

버튼클릭하면 { } 사이에 우리는 내용을 쓰고 있었다.

의미는 한단락으로 묶어주는 형태인데 첫번째 쓰여져있는내용에 종속되는 세부내용이라고 생각해도 된다.

 

아래와 같은 느낌이라고 생각하면 가장 좋을것같다.

<예제>

단락에대한 개요

{

     상세한내용

}

 

이내용은 거의 대부분의 프로그램에서 사용하는 형식이므로 익숙해지도록하자.

 

 

 

다시 분기분으로 돌아가서  if ( 조건 ) 이라고 되있는데 조건에는 아래와 같이 여러 형태의 조건이 들어갈 수 있다.

<예제>

if ( a == 10 ) 

if ( a >= 10 ) 

if ( a%5 == 0 )

if ( a <= 10 && a > 1 ) 

if ( a )

if ( !a )

if ( a+b == 10 )

if ( a.ToString() != "A" )

 

 

위 예제들어떤것도 사용할수 있는데 이전에 연산자에서 뒤에 다시한다고 넘어간것들이 있어 여기서 살펴보겠다.

if ( a == 10 )  이경우는 a 가 10 과 같으면 { } 안에있는 내용을 실행한다.

 

그림1

 

비교할때 문자인지 숫자인지 잘확인해야 한다.

만약문자를 그림1처럼 비교하려면 에러가 나면서 빌드 할수 없다.

 

 

 

if ( a >= 10 )  이경우는 a 가 10보다 크거나 같을경우 { } 안에 있는 내용을 실행한다.

 

if ( a%5 == 0 ) 이예제의 경우는 5로 나눈 나머지가 0일때 { } 안에 있는 내용을 실행한다.

즉 5의 배수일경우에만 실행될것이다.

 

if ( a <= 10 && a > 1 )  이경우는  앞장에서 설명한 논리연산자인데 && 일경우는 교집합 || 일경우는 합집합이다.

참고로 | 는 엔터키위에 \ 표시되어 있는 키를 쉬프트누르고 누르면 된다.

그리고 ! 는 not 을 의미하는데 이연산자는 주로 bool 형식의 변수와 같이 쓰인다.

 

bool 형식 변수는 참,거짓 두가지만 표시할수 있는 변수인데 사용법은 아래 그림2와 같다.

 

그림2

 

위 그림2의 결과는 뭐가 나올까?

실행해보면 0 이나온다.

true false 가 숫자와 무슨상관이있을까 생각이 들수있다.

아래 글을 읽어보자.

 

ko.wikipedia.org/wiki/%EB%B6%88%EB%A6%AC%EC%96%B8_%EC%9E%90%EB%A3%8C%ED%98%95

 

불리언 자료형 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서 불리언(boolean) 자료형은 논리 자료형이라고도 하며, 참과 거짓을 나타내는 데 쓰인다. 주로 참은 1, 거짓은 0에 대응하나 언어마다 차이가 있다

ko.wikipedia.org

 

누가 언제부터 사용했는지는 알수 없다.

보통은 전기가 끊어지면 0 전기가 통하면 다른값으로 해서 0 이면 false 다른값이면 true 로 쓰지 않았나 유추한다.

참고로 c# 같은경우는 true 는 1 false 는 0 이다.

언어마다 차이가 있기때문에 내가프로그램을 만들때는 숫자로 표현하지말고 명확하게 표시해서 사용하도록 하되 다른사람이 만든 프로그램이나 다른언어와 인터페이스할경우 종종 저런형태로 받아야 할경우가 있다.

 

정리하자면 bool 형식을 사용할때 값은 true , false 와 같이 명시적인 값으로 비교할것.

단, false 는 0 이고 다른값은 true 일수 있다고 알아둘것.

위두가지이다.

 

if ( a <= 10 && a > 1 ) 다시 이예제로 돌아가서 살펴보자.

if ( a <= 10 && a > 1 ) 이조건에 숨어있는 내부 내용이 있다.

위쪽에도 써놨지만 전체 조건문 형식이 다음과 같은데

if(조건)

{

     조건이 참일때 실행할내용

}

else

{

     조건인 거짓일때 실행할내용

}

 

if 뒤의 조건이 참일때 if 의 { } 의 내용을 실행한다.

 if ( (a <= 10 && a > 1) == true ) 라는 조건이 숨어있는것이다.

if ( 조건 == true ) 라는 조건은 무조건 형식으로 정해져있는것이라서 직접작성해줄 필요는 없다.

그래서 보통 if ( a <= 10 && a > 1 ) 이런형태로 조건만 적어준다.

이조건은 설명하면 a 라는 변수가 1보다 크고 , 10보다 작거나 같을때 { } 안의 내용을 실행한다.

 

 

 

다음예제인 if ( a ) 를 보면 a 가 true 일때 { } 안의 내용을 실행한다.

바로위에서 설명한거처럼 (조건 == true) 가 숨겨져 있기때문에 a 가 true 면 실행되는것이다.

예제를 보자

 

bool a = true;

if ( a )

{  

    MessageBox.Show("Test1");

}

else

{  

    MessageBox.Show("Test2");

}

 

위 예제를 실행하면 "Test1" 이 출력된다.

만약 a 가 false 라면 "Test2" 가 출력될것이다.

 

 

그리고 다음예제는 if ( !a ) 인데 이경우는 not a 를 뜻하는 의미이므로 a가 true 일경우 false 로 인식된다.

 

그림3

 

그림3과 같이 테스트를 해보면 알수 있다.

만약 긴 코드를 짜다가 저부분이 헷갈리면 따로 프로젝트를 새로 생성해서 위와 같이 따로 해당 부분만 테스트하는걸 단위 테스트라고 하는데 이습관을 들여놓으면 문제가 생길때 해결하기 좋다.

 

bool a = true;

if ( !a )

{  

    MessageBox.Show("Test1");

}

else

{  

    MessageBox.Show("Test2");

}

어째뜬 위와 같은 코드는 Test2 가 출력된다.

 

그외

if ( a+b == 10 )

if ( a.ToString() != "A" )

위 코드들처럼 두값을 더한값이 10일때 실행되게 하거나 문자열비교같은 것도 조건식에 넣을 수 있다.

즉, 조건식에 들어가는 제약은 없다.

뭐든지 들어갈수 있지만 최종 조건의 결과값이 true 나 false 로 비교할수 있기만 하면된다.

 

 

내용이 길어져 다음장에서 추가로 내용을 확인해보기로 하자.

 

 

***숙제 : 오늘 공부한것들을 개별적으로 정리해서 공유하자.

댓글