c언어 while문 알아보기
네 안녕하세요, 이번 포스팅에서는 c언어 while문에 대하여 알아보는 시간을 가져보려 합니다.
보통 우리가 프로그램 소스를 짤 때 반복문을 필연적으로 씁니다.
그 이유는 웹 또는 앱을 사용하는 고객이 원하는 것은 그냥 그 프로그램이 가진 기능이 계속 오류 없이 실행이 되는 것이기 때문입니다.
그렇기 때문에 고객이 버튼이나 커멘드 등을 조작하면 웹 또는 앱은 반복적인 작동을 해야 하기 때문입니다.
그래서 반복문의 존재는 프로그래밍 소스 중에서도 가장 중요한 부분 중 하나라고 할 수 있습니다.
그리고 while문은 c언어에서 사용하는 반복문의 한 종류입니다.
그래서 이번 시간에는 이 while문을 어떻게 사용을 하며, 그 기능은 무엇인지 알아보겠습니다.
그럼 지금부터 함께 보시죠.
1. while문의 구조와 기능
while문은 이러한 구조를 가지고 있습니다.
예를 한 가지 들어보도록 하겠습니다.
우리가 'hi'라는 글자를 5번을 출력한다고 가정을 해봅시다.
그럴 경우에는 그냥 printf()로 5번을 찍을 수도 있겠지만,
그건 너무 비효율적이죠?
그래서 우리는 이럴 때 반복문을 쓸 수 있고,
for문 또는 while문을 써서 나타낼 수 있습니다.
for문은 제가 나중에 다룰 건데, 일단 while문을 다루고 있으니,
while문을 이용한 소스를 한 번 작성을 해보도록 하겠습니다.
이렇게 쓸 수 있습니다.
#include <stdio.h>
int main()
{
int i = 0;
while(i < 5)
{
printf("hi\n");
i++;
}
return 0;
}
이러한 형태를 가집니다.
이 코드에 대하여 설명을 드리자면,
우리가 쓸 변수 i의 초기값을 0으로 설정을 했고,
이 i가 0에서 시작하여 5 미만의 범위를 가지며,
i가 계속해서 누적되어 증가를 할 때마다 'hi'라는 글자를 찍어내도록 하는 것입니다.
그러면 결과는 이렇게 나옵니다.
hi
hi
hi
hi
hi
요런 식으로 결과가 잘 나옴을 볼 수 있습니다.
while문은 계속 써봐야 늘어나기 때문에 제가 계속해서 예제를 몇 가지 써서 보여드리도록 하겠습니다.
2. if문과 while문의 차이점
사실 if문과 while문의 차이는 조건문과 반복문의 차이점이라고 보시면 좋을 것 같습니다.
우리가 if문을 쓰게 되면 조건에 맞는 문장이 한 번만 실행이 됩니다.
하지만 while문을 쓰게되면 반복문이기 때문에 같은 조건에 성립이 된다면 여러 번이 실행이 됩니다.
그래서 이러한 반복문을 실행을 시키는 것을 보며 우리는 '루프를 돌린다'라고 표현을 합니다.
3. while문 작성 시 주의할 점
while문을 쓸 때 몇 가지 주의사항이 있습니다.
이를 어기게 되면 실행이 되지 않습니다.
그럼 한 번 이야기를 해보도록 하겠습니다.
- while문이 실행되는 중괄호 안에 누적 증감 연산자가 존재해야 한다.
- 같다(==), 아니다(!=) 대신 크거나 같다(<=), 작거나 같다(>=), 초과(>), 미만(<)를 쓰는 것이 바람직하다
3 - 1. while문이 실행되는 중괄호 안에 누적 증감 연산자가 존재해야 한다.
이 이야기는 무엇이냐, 우리가 선언한 변수가 1씩 증가가 되거나 감소가 될 때마다 반복문은 실행이 됩니다.
그리고 그러한 장치는 무조건 반복문의 몸인 중괄호 안에 존재를 해야만 실행이 됩니다.
그렇지 않다면 반복문은 에러가 납니다.
제가 올바른 예시와 그렇지 않은 예시를 들어보겠습니다.
// 올바른 예시
int i = 0;
while(i < 3)
{
printf("hi\n");
i++;
}
// 잘못된 예시
int i = 0;
while(i < 3)
printf("hi\n");
i++;
위의 경우처럼 중괄호에 묶여있어야만 제대로 실행이 되고,
중괄호가 존재하지 않는다면 코드는 실행이 되지 않습니다.
그리고 중괄호는 c언어에서 몸을 담당하기 때문에 정말 중요합니다.
3 - 2. 같다(==), 아니다(!=) 대신 크거나 같다(<=), 작거나 같다(>=), 초과(>), 미만(<)를 쓰는 것이 바람직하다.
이 얘기는 무슨 뜻이 나면 같다와 아니다를 쓸 경우는 잘못하면 무한루프에 빠질 수 있습니다.
물론 인위적으로 무한루프를 돌리기도 하지만,
보통 그런 경우에는 무한루프를 빠져나오는 장치를 걸어둡니다.
그래서 그러지 않는다면 실수로 무한루프에 빠지게 되는 것입니다.
그리고 그런 경우가 보통 같다, 아니다를 사용하다가 이루어질 때가 많습니다.
그래서 조건을 쓸 때는 되도록이면 범위를 제한할 수 있는 비교 연산자를 써야 합니다.
그러는 방향이 확률적으로 무한루프에 빠지는 경우가 적습니다.
4. while문에서의 참과 거짓
while문의 조건식에서는 0이 아닌 모든 값들은 전부 참으로 간주가 됩니다.
반대로 0은 거짓으로 간주가 됩니다.
예를 든다면 이렇습니다.
#include <stdio.h>
int main()
{
int i = 3;
while(i)
{
printf("%d는 참입니다.\n", i);
i--;
}
printf("%d는 거짓입니다.\n");
return 0;
}
이렇게 쓰게 되면 i의 초기값 3에서부터 1씩 누적적으로 감소를 하게 되고,
최종적으로 0으로 가게 되면 거짓이 나옵니다.
그럼 결과가 그렇게 나오는지 한 번 보도록 하겠습니다.
3은 참입니다.
2는 참입니다.
1은 참입니다.
0은 거짓입니다.
이렇게 잘 나오는 것을 볼 수가 있습니다.
5. while문 무한루프
while문은 보통 무한루프를 돌릴 때 제일 많이 사용을 합니다.
우리가 의도적으로 무한루프를 돌릴 때는 while문의 조건식에 1을 넣습니다.
그렇게 되면 컴퓨팅 언어에서 1은 참을 뜻하므로 모든 값이 참이 된다는 뜻이기 때문에 무한루프를 돌리게 됩니다.
그래서 그럴 경우에는 무한루프를 빠져나오게 하는 방법도 있어야 하기 때문에 그렇게 걸어두면 됩니다.
보통 두 가지 방법을 사용합니다.
- if문 사용하여 빠져나오기
- printf()를 이용하여 while문을 들어가기 전에 무한루프를 빠져나오는 장치 선언하기
이 둘을 상황에 따라서 쓰는데, 프로그램을 만들 때는 매우 층이 체계적이기도 하고, 오랜 시간 돌려야 하는 경우도 많기 때문에 if문을 좀 더 자주 사용하므로, if문을 이용하여 예시를 들어보도록 하겠습니다.
#include <stdio.h>
int main()
{
int i = 0;
while (1)
{
i++;
printf("%d\n", i);
if (num1 == 100)
{
break;
}
}
return 0;
}
이렇게 쓸 수 있습니다.
if문을 걸어서 빠져나올 수 있는 조건을 걸어두는 것이죠.
그래서 실행을 하면 이렇게 나옵니다.
1
2
3
...
98
99
100
이렇게 100이 되면 루프를 빠져나옵니다.
이런 경우는 우리가 보통 주식 자동매매 등을 할 때 많이 씁니다.
개장 시간부터 프로그램을 돌리고,
조건문에 폐장시간이 되기 몇 분 전에 프로그램을 종료하는 로직을 짜두는 것이죠.
또, printf()를 사용하면 while문 들어가기 바로 전에 이런 식으로 선언을 하면 됩니다.
printf("음수를 입력하면 종료됩니다.\n");
간단한 프로그램 조작을 할 때는 이게 더 편합니다.
정말 간단하죠.
그리고 이제 여러분들은 while문의 기본적인 사용법과 특징을 알게 되었습니다.
여기까지 while문에 대하여 알아보았습니다.
다음 시간에는 while문을 쓰는 방법에 대하여 알아보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~
'c언어' 카테고리의 다른 글
c언어 반복문 루프에서 보초 값 사용하기(while문, 성적의 평균 구하기) (0) | 2022.12.04 |
---|---|
c언어 while문 직접 사용해보면서 간단한 예제 풀어보기(구구단 출력하기, 제곱 값 출력하기, 1부터 n까지의 정수의 합 구하기, 입력한 수 까지 중 짝수의 합 구하기, 입력한 값들의 합 구하기) (0) | 2022.12.04 |
c언어 반복문의 역할 간략히 알고 넘어가기 (0) | 2022.12.04 |
c언어 조건문(if문, 중첩된 if문, switch문) 이용하여 문제 해결하기(계산기 만들기(if문 이용), 이차방정식 풀기, 계산기 만들기(switch문 이용), 삼각형 형성 조건 구별하기) (2) | 2022.12.04 |
c언어 goto문 사용해보기 (0) | 2022.12.04 |
댓글