목차
- while문
- for문
- do ~ while문
1. while문
일정 조건을 만족하는 동안 계속 돌아가는 것이 반복문이에요.
구조에 따라 세 가지로 쪼갤 수 있는데,
문장 바로 옆에 조건식이 위치하는 for문과 while문
문장의 맨 끝에 조건식이 위치하는 do ~ while문이죠.
for문은 while문으로, while문은 for문으로 치환할 수 있어요.
일단 while문의 기본 구조에 대해 알아보죠.
while (조건식)
{
실행문;
}
처럼 생겼어요.
바로 한번 써볼까요
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 1;
int sum = 0;
printf("종료하려면 0을 입력합니다.\n");
while (a != 0) //a가 0이 아닐 경우 시행
{
printf("합산할 숫자를 입력하세요 : ");
scanf("%d", &a);
sum += a; //받은 값 합산
}
printf("총합 : %d", sum); //while문 종료 후 실행
return 0;
}
좋아요. 실행해봅시다.
종료하려면 0을 입력합니다.
합산할 숫자를 입력하세요 : 4
합산할 숫자를 입력하세요 : 5
합산할 숫자를 입력하세요 : 10
합산할 숫자를 입력하세요 : 0
총합 : 19
짜잔. while문은 이렇게 쓸 수 있어요.
조건을 만족하는 동안 반복문을 반복하지만, 조건이 거짓이 되면 반복문을 탈출해요.
2. for문
for문은 실행문의 반복 횟수를 명확히 알 수 있을 때 사용해요.
가령 같은 문장을 30번 출력한다고 하면 for문을 사용하는게 좋아요.
for문의 기본 구조는 다음과 같아요
for(초기식; 조건식; 증감식)
{
실행문;
}
물론 저 식들에 콤마 연산자를 추가해서 식을 여러개로 늘릴 수 있는데, 그러면 가독성이 떨어지므로 while문 사용을..
어쨌든! 한번 사용해보죠. 같은 문장을 10번 출력해봅시다.
#include <stdio.h>
int main()
{
int a = 0; //for문의 반복 홋수를 세기 위한 변수
for (a = 0; a < 10; a++) //a를 0으로 초기화, a가 10보다 작은 동안, for문을 시행하고 a에 1을 더합니다.
{
printf("for문을 실습 중입니다, %d번째 시행입니다.\n",a+1); //a == 0부터 실행문 시행
}
printf("시행이 종료되었습니다.\n"); //for문을 빠져나오면 실행
return 0;
}
이렇게 만들 수 있어요.
for문을 사용할 때는 지키면 좋은 몇 가지 규칙이 있는데
초기식, 조건식, 증감식을 알아보기 쉽게 작성하고,
반복 횟수를 세는 변수를 for문 안에서 조작하지 않는 것이 좋아요.
당연하게도 for문을 while문으로 치환할 수 있어요.
for(초기식; 조건식; 증감식)
{
실행문;
}
초기식;
while(조건식)
{
실행문;
증감식;
}
와 같은 방식으로 바꿀 수 있답니다.
다만 for문은 반복 횟수를 한눈에 볼 수 있으므로, 저 3개 식이 직관적이라면 for문을 사용하는 것이 좋아요.
3. do ~ while문
이전에 봤던 for문과 while문은 조건식을 먼저 확인하고 내부 구문을 반복해요.
즉, 조건식이 거짓이라면 내부 구문은 한번도 작동되지 않아요.
하지만 do ~ while문은 조건식이 거짓이라도 내부 구문을 한 번은 작동시키는 문장이에요.
구조는 다음과 같아요.
do
{
실행문;
} while (조건식);
이놈은 특이하게 구문의 맨 끝에 세미콜론이 달려요.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 0;
do
{
printf(" 주문을 입력하세요\n"); //do ~ while문, 한번은 시행합니다.
printf("<1> 아메리카노\n");
printf("<2> 에스프레소\n");
printf("<3> 프라푸치노\n");
printf("<4> 카페모카\n");
scanf("%d", &a);
switch (a) //받은 a값에 따라서 출력 결정
{
case 1:
printf("아메리카노 주문하셧습니다.\n\n");
break;
case 2:
printf("에스프레소 주문하셧습니다.\n\n");
break;
case 3:
printf("프라푸치노 주문하셧습니다.\n\n");
break;
case 4:
printf("카페모카 주문하셧습니다.\n\n");
break;
default:
printf("주문 종료합니다.\n\n");
}
} while (a != 0); //a가 0이 아닐 경우 반복합니다, a가 0이면 탈출합니다.
}
좀 두꺼운데요!
사실 switch문 이후는 딱히 살펴보지 않아도 괜찮아요. 이 프로그램을 시행하면 저 구문 한번은 시행한답니다.
만약 저게 while문이라면, 위쪽에서 a에 대한 초기화를 받을 때 0으로 받아서 한번도 시행하지 않았지만,
do ~ while문이기 때문에 한번은 실행되고, 값이 변형되어서 계속 실행되게 된답니다.
while문과 for문은 서로 치환될 수 있어요.
do while문과도 치환될수 있어요. 하지만 do while문으로 치환할 경우에는 필요에 따라 코드를 앞쪽에 하나 더 넣는 과정이 필요해요. 왜냐고요? 그야 한 번은 실행되도록 만들어야 하니까요.
'프로그래밍 > C' 카테고리의 다른 글
상수와 데이터 출력 - 예제 모음 (0) | 2025.04.18 |
---|---|
중첩 반복문과 반복문 탈출 (0) | 2025.04.18 |
switch ~ case문 (0) | 2025.04.18 |
if문 (0) | 2025.04.18 |
그 외 연산자 (0) | 2025.04.16 |