브래의 슬기로운 코딩 생활
제어문 본문
제어문
- 위부터 아래로 순차적으로 실행되는 프로그램의 실행 순서를 바꾸기 위해서 사용하는 제어문은 C/C++ 언어 뿐 아니라 다른 언어에서도 가장 중요한 문법
- 제어문의 문법은 간단하지만 잘 활용할 수 있느냐에 따라 프로그래밍을 할 수 있는지 없는지 판가름
- for문과 if문의 사용 빈도가 가장 높음
조건문 : if
- if문 다음 괄호 안의 조건식이 참이면 문장1을 실행하고 거짓이면 문장1은 실행하지 않고 건너뜀
if(조건식){
문장 1;
}
조건문 : if~else문
- 양자택일의 상황에서 사용
- if문 다음의 괄호 안의 조건식이 참이면 문장1을 실행하고 다음 문장으로 가며, 조건식이 거짓이면 문장2와 다음 문장을 실행
if(조건식){
문장 1;
}else{
문장 2;
}
다중 if~else문
- 더 많은 조건에 따라 분기해야 하는 프로그램은 다중 if~else문을 사용
- else문에 다시 if~else문을 사용하는 것이고 마지막은 else로 끝남
if(조건식1){
문장 1;
}else if(조건식2){
문장 2;
}else if(조건식3){
:
else{
문장 n
}
조건문 : switch∼case문
- switch~case문은 다중 if~else문처럼 경우(case)의 수가 많을 경우 자주 사용하는 조건문
- 결과가 정수형(int, char, enum)인 경우만 선택할 수 있으므로 범위 검사 문제에는 적당하지 않음
switch(조건식){ //조건식은 결과가 정수형(int, char, enum)인 수식만 가능
case 상수1 : //조건식의 결과가 상수1이면, if(조건식==상수1)
문장1;
break; //switch~case문 루프를 벗어남
case 상수2 : //조건식의 결과가 상수2이면, else if(조건식==상수2)
문장2;
break;
⋮
case 상수n:
문장n;
break;
default : //만족하는 경우가 없을 때, 다중 if~else의 마지막 else에 해당
문장;
break; //없어도 되지만 통일감을 위해 쓰는 것이 좋음
}//switch~case문 루프 끝
- case 다음에 쓰는 상수1, 상수2 등을 레이블(label)이라 함
- case문의 레이블 다음에는 구두점 콜론(:)을 씀
- break문은 자신을 포함하고 있는 블록(루프)을 벗어나는데 사용
- 조건식은 각 case문에서 차례대로 비교되고 조건식의 결과와 상수 레이블이 일치하면 그 아래 문장을 실행하고 break문을 만나면 switch~case문을 탈출
- 보통은 각 case별로 실행할 내용이 다르므로 case문마다 마지막에 break문을 모두 사용하지만, break문을 반드시 써야 하는 것은 아님
반복문 : for
- 특정한 부분을 반복
- C 프로그래밍에서 가장 많이 등장하는 중요한 문법
- 반복 횟수를 알고 있는 경우 많이 사용
- for문은 제어 변수 초기식, 조건식, 증감식(증가나 감소식을 줄여서)의 세 부분으로 구성
- 각각은 구두점 세미콜론(;)으로 분리
- 제어 변수는 반복문을 제어하는 변수로 제어 변수 초기식은 루프가 시작될 때 한 번만 수행.
- j=0과 같이 제어 변수에 초기값을 할당
- 조건식은 반복문이 언제까지 실행될 것인지를 지정하며 조건식이 참이면 반복문의 루프는 돌고, 거짓이면 루프를 빠져나옴
- 증감식은 반복 실행될 문장이 모두 실행된 후 실행되며 보통 제어 변수를 증가나 감소시킴
반복문 : while 문
- while문은 미리 반복 횟수를 알 수 없고 조건에 따라서 반복하는 경우에 사용
while(조건식){
반복 실행될 문장;
}
- 조건식이 참이면 루프 안에 반복 실행될 문장을 실행하고 거짓이면 루프를 벗어남
while문을 이용한 무한 루프
- 조건식에 참인 값을 씀
- 0 이외의 어떠한 값도 가능하지만 보통 1을 씀
while(1){
반복 실행될 문장;
}
반복문 : do~while문
- do~while문은 while문처럼 미리 반복 횟수를 알 수 없고, 최소한 한번은 반복 문장을 실행할 경우에 많이 사용
do{
반복 실행될 문장;
}while(조건식);
- 일단 반복 실행될 문장을 한번 실행하고 while의 조건식을 검사한다. 조건이 참이면 루프 안에 반복 실행될 문장을 계속 실행하고 거짓이면 루프를 벗어남
- while(조건식) 다음에 세미콜론 (;)을 붙여야 하는 것을 조심
do~while문을 이용한 무한 루프
- 조건식에 참인 값을 씀
- 0 이외의 어떠한 값도 가능하지만 보통 1을 씀
do{
반복 실행될 문장;
}while(1);
무한루프
분기문 : break 문
- 반복문(for, while, do~while)이나 switch~case문에서 안쪽 루프를 하나 벗어나는데 사용
- 무한 루프에는 특별한 조건에서 루프를 탈출 하도록 반드시 break문을 작성
for( ; ; ){ //무한 루프
printf("끝내려면 0+0을 입력하세요\n");
printf("계산하려는 수식(예:10+20)을 입력하세요:");
scanf("%d%c%d",&num1,&op,&num2);
if(num1==0 && num2==0) break;
:
} //for문 끝
분기문 : continue문
- for, while, do~while문에서 루프의 조건식을 검사하는 부분으로 다시 되돌아감
- break문처럼 루프를 빠져나가는 것이 아니라 돌던 루프의 continue 아래 부분을 실행하지 않고 다시 조건을 검사하는 부분으로 감
분기문 : goto문
- goto문은 무조건 해당 레이블로 분기
goto SS;
⋮
SS:
- goto문은 프로그램 어느 곳이라도 레이블을 만들어 바로 이동할 수 있는 편리함이 있지만 프로그램을 이해하기 어렵게 하므로 사용하지 않는 것이 좋음
- 루프가 다중으로 중첩되어 있는 경우 break문을 사용하더라도 루프 밖으로 완전히 빠져 나올 수 없는데 goto문을 사용하면 한 번에 다중 루프를 빠져 나올 수 있음
요약 - 제어문
'Class > C, C++' 카테고리의 다른 글
함수 (2) | 2022.12.31 |
---|---|
C 언어 문법 정리 - 식별자, 리터럴(상수), 자료형, 변수, 전처리기, 연산자 (2) | 2022.12.26 |
C++ 언어 소개 (2) | 2022.12.25 |
C / C++ 자료 출처 (0) | 2022.12.25 |