제 15강) 반복문2 - while문 |
반복문의 두번째 시간입니다.
바로 "while문"에 대해서 배울겁니다.
(이번 시간에는 while문 뿐만 아니라 do~while문도 다룹니다.)
1) while |
while문을 배우기 전에 당연히 미리 알고있어야 하는 개념이 몇가지 있습니다.
while문을 배우기 전 미리 알고있어야 하는 개념 |
1. 반복문의 개념 (14강) 2. break (13강) 3. continue (14강) |
이미 다 알고 계신다는 전제하에 진행을 하도록 하겠습니다.
지난 시간에 보았던 for문을 다시 한번 봅시다.
for (i = 0; i < 5; i++)
for (조건에_사용할_변수 ; 반복에_쓰일_조건 ; 반복문의_종료를_위한_문구)
for문은 위와 같이 된다고 하였습니다.
while문은 상당히 단순하게 되어있습니다.
while(반복_조건)
{
// 반복 내용
}
요렇게 되어 있습니다.
이렇게만 보면 while문을 이해하기는 힘듭니다.
고로 지난시간에 보았던 for문 예제를 while문 예제로 변형하여 알아보겠습니다.
#include <stdio.h>
int main(void)
{
int i;
printf("for문 시작\n");
for (i = 0; i < 5; i++)
{
printf("i = %d \n", i);
}
printf("for문 종료\n");
return 0;
}
먼저 지난시간에 보았던 for문 예제입니다.
이것이 어떻게 실행되는지는 지금은 잘 아시겠죠?
이 예제를 while문으로 똑같이 작성하여 보겠습니다.
#include <stdio.h>
int main(void)
{
int i = 0;
printf("while문 시작 \n");
while (i < 5)
{
printf("i = %d \n", i++);
}
printf("while문 종료 \n");
return 0;
}
5번 줄에서 int형 변수 i를 0으로 초기화 시켜서 생성하였습니다.
그리고 7번 while문이 실행하기 전에 조건검사를 합니다.
이때 조건이 참이면 "1", 거짓이면 "0"이 됩니다.
(즉 i < 5가 참이면 while(1)이 되는 것입니다.)
i가 5보다 큰지 안큰지 검사를 하고 크지 않다면 9번줄이 실행이 되는 것이죠.
9번줄에서 i를 출력한 다음 "후위증가"를 하게됩니다.
이 9번줄에서 행해지는 "후위증가"가 for문에서는 "반복문의 종료를 위한 문구"에 해당하게 됩니다.
그런데 위의 while문을 또 다르게 변경시킬 수 있습니다.
#include <stdio.h>
int main(void)
{
int i = 0;
printf("while문 시작 \n");
while (1)
{
printf("i = %d \n", i++);
if (i >= 5)
break;
}
printf("while문 종료 \n");
return 0;
}
바로 "if문에 조건을 걸어서 break"하는 방법을 사용해서 변경하면 됩니다.
(이때는 이 if문이 "반복문의 종료를 위한 문구"가 됩니다.)
그럼 while문에 조건을 걸어주지 않고 1로만 하게 된다면 어떻게 될까요?
#include
int main(void)
{
int i = 0;
printf("while문 시작 \n");
while (1)
{
printf("i = %d \n", i++);
}
printf("while문 종료 \n");
return 0;
}
이렇게만 한다면 무한 반복이 되어버립니다.
(무한 반복이 걸리면 Ctrl + C를 눌러서 탈출합니다.)
번외) for문과 while문의 선택 |
그럼 for문과 while문은 정확이 어떻게 다를까요?
사실은 둘다 기능은 같습니다만 지향하는 바가 아주 살짝 다릅니다.
// 10번만 아이템 강화를 함
for (int i = 0; i < 10; i++)
{
ReinforceItem();
}
// 강화가 성공 할때까지 강화를
while (1)
{
ReinforceItem();
if (isSuccess())
break;
}
2) do ~ while문 |
do ~ while문은 while문과 비슷합니다.
do
{
// 반복 내용
} while(반복_조건);
#include <stdio.h>
int main(void)
{
int index = 5;
printf("while문 \n");
while (index > 10)
{
printf("i = %d \n", index++);
if (index > 15)
break;
}
printf("while문 끝 \n\n");
printf("do while문 \n");
do
{
printf("i = %d \n", index++);
if (index > 15)
break;
} while (index > 10);
printf("do while문 끝 \n\n");
return 0;
}
while문은 처음에 조건이 있기 때문에 처음에 조건검사를 진행합니다만 (빨간색 네모 박스)
연습문제) 3x3 구구단 출력하기 |
if문도 배웠고, for문, while문도 배웠으니 문제를 하나 풀어봅시다.
바로 아주 단골문제인 "3x3 구구단 출력하기" 입니다.
이렇게 출력되는 구구단을 보고 "3x3 구구단"이라고 합니다.
if문, for문, while문 등을 사용하여 위와같이 출력하도록 해보세요.
만드는 법은 다양합니다.
저는 아래와 같이 만들었습니다.
#include <stdio.h>
int main(void)
{
printf("구구단 3x3 출력 \n");
// x * y
for (int i = 0; i < 3; i++)
{
for (int y = 1; y < 10; y++)
{
for (int x = 3 * i + 1; x <= 3 * i + 3; x++)
printf("%-2dx%2d =%3d ", x, y, x * y);
printf("\n");
}
printf("\n");
}
return 0;
}
다음 시간에는 |
이번시간에는 while문에 대해서 알아보았습니다.
다음 시간에는 함수에 대해서 알아보도록 하겠습니다.
'Study > C언어' 카테고리의 다른 글
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 17 [포인터] (0) | 2018.10.17 |
---|---|
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 16 [함수] (0) | 2018.10.17 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 07 [입력문과 출력문(printf, scanf, scanf_s)] (0) | 2018.10.17 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 08 [변수에 대한 추가적인 이야기] (0) | 2018.10.17 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 10 [연산자 이야기] (0) | 2018.10.17 |