글을 10번만 적는다면,
for (i=1; i<=10; i++) printf("글을 써라")
이런 식으로 표현 할 수 있다.
근데 만약 외울 때 까지 적는다면?
for (i=1; i<=?; i++) printf("글을 써라")
몇 번 반복해야 하는 지 알 수 없다.
이럴 때 while문을 사용하면 알 수 있다.
while문은 반복 조건이 참이면 반복하고,
거짓이면 다음 문장으로 넘어간다.
따라서, 반복 횟수는 알 수 없지만
특정 조건을 만족하는 한 계속 반복하는 것으로 해석할 수 있을 때 사용한다.
while문을 이용해보자.
1~n의 합이 처음으로 100을 넘게 하는 n 찾기
앞의 예시처럼 1부터 몇까지 더해야 100이 넘는 지 모르는 문제이다.
즉, sum이 100을 넘지 않으면 sum에 n을 계속 더한다.
#include <stdio.h> int main() { int n, sum; n = 0; sum = 0; while (sum <= 100) { n++; sum = sum + n; } printf("1~%d의 합 = %d", n, sum); return 0; }
이상 무!
나는 이 문제를 풀 때 n을 0으로 잡아주고,
n을 더한 후 sum을 계산해줬지만,
작성자에 따라서 sum을 먼저 잡아주고,
1을 초기값으로 설정할 수도 있다.
그럴 때는
#include <stdio.h> int main() { int n, sum; n = 1; sum = 0; while (sum <= 100) { sum = sum + n; n++; } printf("1~%d의 합 = %d", n-1, sum); return 0; }
이런 식으로 식을 바꿔 표현해줘야 오류가 생기지 않는 다는 것 기억하자!
사람들은 아플 때 병원에 가서 약을 처방 받는다.
약을 지으면서 얼마나 먹어야 하냐 물어보면,
일단 복용하면서 상태가 호전되는 지 지켜보라고 한다.
do-while문은 이렇게 일단 반복해야 할 내용을 먼저 실행하지만, 반복 횟수를 모를 때 사용한다.
즉, 저 '?'에 들어가는 값을 지금 지정할 수 없을 때 사용하는 것이다!
do-while문을 이용한 프로그램
온라인 쇼핑 하다보면,
이런 안내를 많이 볼 수 있다.
배송비가 포함되는 경우와 포함되지 않는 경우
모두 계산할 수 있는 프로그램을 작성해보자.
구매 개수를 입력받는 것이 목표이므로 무조건 한 번은 입력을 수행해야 한다.
따라서, 구매 개수가 0 이하라면 새로 입력받도록 반복해야 한다.
-> do-while?
#include <stdio.h> int main() { int cost, n, delivery, total_cost; n = 0; cost = 4500; delivery = 2500; printf("1개 가격: %d원 \n", cost); printf("10개 이상 구매 시 %d원 배송비 무료 \n\n", delivery); do { printf("구매 개수는?"); scanf("%d", &n); } while (n <= 0); total_cost = cost * n; if (n < 10) total_cost += delivery; printf("총 결제액은 %d원 입니다.", total_cost); return 0; }
상술에 넘어가지 말고 잘 따져보자.
나처럼 코딩 초보들은 반복문을 작성 하려면 어떻게 반복시켜야 할 지 감이 안 올 것이다.
어떻게 하면 좀 더 수월할까?
#include <stdio.h> int main() { int n; printf("구매 개수: "); scanf(%d, &n); return 0; }
만일 0 이하의 값이 입력되면 새로 입력 받아야한다.
그럼 일단 이 코드 부분을 do-while 본체로 포함시키고
반복 해야하는 while(조건)을 생각해본다.
do { printf("구매 개수: "); scanf("%d", &n); } while (n <= 0);
이렇게!
for...while...do-while.. 코린이는 어떤 반복문을 어떤 질문에 작성하는 것이 가장 적절한 지 헷갈린다..
for문은 예시처럼 1~10까지 10번 같이 반복횟수가 정해질 때 사용한다.
while문은 반복횟수는 모르지만,
어떤 조건을 만족하는 한 반복할 때 사용한다.
do-while문은 예시처럼 무조건 한 번은 반복하고,
이후로는 조건을 만족하는 한 반복할 때 사용한다.
끗.