Coding/C C언어 공부 0004 - 728x90 반응형 기존에 운영중이던 깃허브 페이지의 자료를 이전하였습니다. C Study 0004 alstn59v.github.io 조건문 프로그램을 수행하면서 사용자가 조건을 제시하고, 이를 만족하거나 그렇지 못할 때 수행할 내용을 기술함으로써, 프로그램에 일종의 가지치기를 할 수 있는 기능이다. 아주 간단한 일상 예를 들어보면, 비가 오면 우산을 써야해. 일기예보에서 내일은 비가 온대.라는 문장에서, 내일은 비가 올 것이고, 비가 오면 우산을 써야한다고 한다. 따라서 비가 온다는 조건을 만족했으므로, 우산을 써야하는 것이다. 조건이란 국어 문장의 만약 ~라면, ~할 것이다에서 만약 ~라면부분을 조건이라 할 수 있다. ~할 것이다부분은 조건이 만족될 때, 행해야 할 동작을 나타낸 부분이다. 따라서 지정한 조건이 만족하냐 못하냐를 이용해, 경우에 따른 동작을 달리하여 프로그램에 일종의 분기점을 줄 수 있다. if문 가장 기본적인 조건문의 형태로, 조건이 만족될 때 수행할 내용을 적는 구문이다. 형태 if(조건식) { 수행할 내용 } if-else문 if문에서 발전한 형태로, if문의 조건이 만족되지 않았을 때의 경우에 수행할 내용을 추가한 구문이다. 형태 if(조건식) { 수행할 내용 1 } else { 수행할 내용 2 } 위 예시에서 조건식이 만족되면 수행할 내용 1이, 그렇지 않으면 수행할 내용 2가 실행된다. if-else if-else문 if-else문에서 발전한 형태로, if문의 조건을 만족하지 않을 때, 추가적인 조건을 제시하여 해당 조건을 만족할 경우에 수행할 내용을 추가한 구문이다. else if는 여러 번 쓸 수 있다. 형태 if(조건식 1) { 수행할 내용 1 } else if(조건식 2) { 수행할 내용 2 } . . . else if(조건식 N-1) { 수행할 내용 N-1 } else { 수행할 내용 N } 위 예시에서 조건식 1이 만족되면 수행할 내용 1이, 조건식 1을 만족하지 못한 상태로 조건식 2를 만족하면 수행할 내용 2, 조건식 N-2을 만족하지 못한 상태로 조건식 N-1를 만족하면 수행할 내용 2, 그렇지 않으면 수행할 내용 N이 실행된다. Nested if statement 조건문은 중첩하여 사용할 수 있다. 예 if(조건식 1) { 수행할 내용 1 if(조건식 2) { 수행할 내용 2 } 수행할 내용 3 } 위 예시에서 조건식 1을 만족하면 수행할 내용 1이 실행되며, 그 상태에서 조건식 2를 만족하면 수행할 내용 2를 실행한 다음 수행할 내용 3이 실행되고, 조건식 2를 만족하지 않으면 수행할 내용 3이 수행할 내용 1을 이어서 실행된다. 위 예시에서는 if문 안에 if문이 들어갔지만, else if문이나 else문 안에도 조건문이 들어갈 수 있다. switch문 switch문은 if문에서 조건의 결과가 여러 값으로 나올 때, 편하게 사용하기 위한 if문이라고 생각하면 편하다. 형태 switch(조건식) { case 값1: 수행할 내용 1 break; case 값2: 수행할 내용 2 break; case 값N-1: 수행할 내용 N-1 break; case default: 수행할 내용 N break; } if-else if-else 구문과 거의 비슷한 모습을 볼 수 있다. if는 첫 번째 case, else if는 k번째 case, else는 default에 대응한다. 수행할 내용 밑 줄에는 break;가 있는데, 이를 작성하지 않으면 break;를 만날 때까지 있는 모든 case의 수행할 내용이 수행되게 된다. 의도적으로 이를 이용하여 필요한 곳에 쓸 수도 있다. goto문 goto문은 코드에 특정 분기를 기록하여, goto 분기명;을 만나면 해당 분기점으로 이동하여 코드를 실행하는 구문이다. 따라서 사용을 하게되면 프로그램의 흐름을 따라잡는데 어려움이 발생한다. goto를 이용하여 loop를 만들 수 도 있지만, 권장하지 않는다. 예 goto A; printf("HELLO\n"); A: printf("BYE\n"); 위의 예에서 HELLO는 출력되지 않고 BYE가 출력된다. 최종 예제 이 글에서 다룬 내용들을 모두 담은 예제 소스를 작성해보았다. 개연성이 전혀 없는 코드이지만, 프로그래밍을 처음 배운다면 코드의 흐름을 파악하는 것에 좋은 연습이 될 수 있을거라 믿는다. #include <stdio.h> int main() { int a = 3; int b = 4; int c, d = 0; if(a + b > 10) { c = a * 2; printf("Case 1 -- "); } else if(a + b > 8) { c = b * 2; printf("Case 2 -- "); } else { if(a + b >= 6) { c = a + b + a * b; printf("Case 3 -- "); } else { c = a * ++b; printf("Case 4 -- "); } } cond: if(d == 4) { printf("// GOTO IS BAD..."); goto end; } switch(c) { case 6: d = 1; break; case 8: d = 2; case 15: d = 3; break; case 19: d = 4; break; default: d = 0; break; } goto cond; end: printf("d = %d ", d); return 0; } 이 예제의 출력값은 Case 3 -- d = 4 // GOTO IS BAD...이다. Reference https://web.yonsei.ac.kr/hgjung/Lectures/GEN131 728x90 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Minsu Jo's Development Log 저작자표시 비영리 동일조건 Contents 조건문 조건이란 if문 if-else문 if-elseif-else문 Nestedifstatement switch문 goto문 최종예제 Reference 당신이 좋아할만한 콘텐츠 C언어 공부 0006 2023.02.16 C언어 공부 0005 2023.02.16 C언어 공부 0003 2023.02.16 C언어 공부 0002 2023.02.16 댓글 0 + 이전 댓글 더보기