본문 바로가기
프로그래밍/C언어

[C언어] #5. while 반복문과 do ~ while 반복문

by Crush on Study 2022. 1. 19.
반응형

printf("Welcome, Let's C Language.");  // 초등학생도 쉽게 이해시켜주는 C언어 글을 포스팅합니다.

 

안녕하세요. 비전공자 출신 SW Test 엔지니어 Crush on Study입니다. 

이번 글에서는 조건에 따라 다른 화면을 출력시킬 수 있도록 해주는 '조건문'에 대해 배워보겠습니다.

 

Q. 먼저 이전 시간에 배운 내용을 잠깐 복습해봅시다.

A. 1) for문에 대해 배웠습니다.

- 프로그램이 어떤 특정 트리거에 의해서만 수행되는걸 원할 때 우리는 조건문을 통해 구현하기로 했습니다. if와 else if는 선언할 때, 옆에 조건식을 함께 적어준 다음  조건이 맞을 때, 수행할 구문을 아래 적어놔주었습니다. else는 '이 밖의 모든 것' 이라는 의미로 if와 else if에서 지정한 조건 이외의 모든 경우에 해당할 때  수행할 구문을 적어줍니다.

따라서, else는 조건식을 따로 적지 않는다고 배웠습니다.

 

2) 증감 연산자에 대해 배웠습니다.

- 조건문을 구현하고자 할 때, 항상 따라붙는 연산자들입니다. == 는 동치를 !=는 불일치를 &&는 AND를 ||는 OR을 의미합니다. 추가로 산술 연산자 중에서도 조금 생소한 개념인 %에 대해 배웠습니다. %는 나눗셈을 할 때, 몫이 아닌 나머지 값만을 출력하고자 할 때 사용합니다. 보통 %은 홀수,짝수를 구분하고자 할 때 자주 사용합니다.

 

딱 보고 기억 나는게 없다. 하면 바로 이 전글을 참고하세요.

https://crush-on-study.tistory.com/210?category=1002287 

 

[C언어] #4. 반복문 for문과 이중 for문

printf("Welcome, Let's C Language."); // 초등학생도 쉽게 이해시켜주는 C언어 글을 포스팅합니다. 안녕하세요. 비전공자 출신 SW Test 엔지니어 Crush on Study입니다. 이번 글에서는 조건에 따라 다른 화면을..

crush-on-study.tistory.com

while문 강의 소스코드

// #5. while문 강의
#include <stdio.h>

int main()
{
    int i=1;

    while(i<=10)
    {
        printf("[%d] Hello, friend? can you give me money?\n",i);
        i++;    

        if (i>10)
        {
            break;
        }
    }


    return 0;
}

여러분. 10번 찍어 안넘어 가는 나무가 되는 사람이 되십쇼. 

아무튼, 이번 while문 역시 for문과 똑같은 기능을 하는 반복문입니다.  기능은 같으나 구조가 조금 차이가 있어요.

 

for문 같은 경우는  for 옆에 셋팅을 한번에 넣는다면  while은 다릅니다.

1) 일단 초기값은 while문 위에다 먼저 선언을 해줍니다.

2) 조건식만 while문 옆에다 적어줍니다.

3) 증감식을 while문 안에다 적어줍니다.

 

이 구조만 지키시면 while문 뚝딱입니다.

 

자, 근데 처음보는 명령어가 하나 보이네요. 바로 break문입니다.

사실 여기 소스코드에서는 조건식 범위 안에서만 반복수행되기 때문에 이를 다 마치면 자동으로 종료가 됩니다. 그래서 break문을 사용할 필요는 없는데, 설명을 위해 첨가했습니다.

1. break
이름 그대로 브레이크를 걸다. 멈추다. 그런 의미입니다. 만약 i=1로 하고 조건을 i<=10으로 했다해도, 여러분들이 마음이 바뀌어서 5까지만 출력하면 프로그램을 종료하게 만들고 싶다. 하시면 break문을 쓰면 됩니다.

break문

바로 이런 식으로 걸어주면 while 조건식에서는 10까지 반복수행해라! 했어도 i==5를 마주할 때 종료해버립니다.

 

자, 근데 do~while문을 설명하기에 앞서 while문의 실행구조를 마지막으로 살펴보고자 합니다.

while문의 실행 구조를 알아보자

이런 식으로 조건을 수정했어요. 그러면 상식 상 printf에 들어있는 문구는 실행이 되지 않을 것입니다. 그리고 역시 예상대로 결과값에는 아무것도 출력되지 않은 채 끝났습니다.

왜냐하면 while문은 먼저 조건부터 확인을 한다음에 실행을 하기 때문인데요. do~while문은 이것의 반대입니다. 먼저 실행을 한 다음 조건을 확인합니다.

2. do ~ while문
좀 더 자세히 말하자면 do~while문은 '기미상궁' 같은 문법이다! 라고 보시면 됩니다. 조건을 확인하기 전에 일단 한번은 임의로 수행을 합니다. 그 후, 조건을 확인한 뒤 조건에 맞는다면 다시 수행을 반복합니다. 하지만 한번 임의로 수행한 뒤에 '어? 맛이 별론데?' 하면 이제 뒤에는 수행이 안됩니다.

Visual Studio Code가 좋은게 이렇게 do를 적고 중괄호 { 를 타이핑하면 저렇게 구조를 한번에 보여줍니다. 

보시는 바와 같이 do { }에다가는 실행할 코드를 적구요.  while의 소괄호 ( )에다가는 조건식만 적어주면 됩니다.

아, 바로 위에 코드 사진에 stdio.h 헤더파일을 선언 안했었네요. ㅈㅅㅈㅅ 아무튼 이런식으로 코드를 작성해본 뒤에 돌려보면?

결과값

짜잔. 일단 수행 한번은 무조건 합니다. 이게 do~while문과 while문의 차이입니다.

 

퀴즈

Q1. while문을 이용하여 1에서부터 100까지 자연수들의 합을 구하는 프로그램을 작성해주세요.

반응형