ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C programming 기초 3강
    과외 수업 자료/C 2022. 10. 20. 18:00

    이번 포스팅에서는 반복문과 조건문에 대해서 알아볼 것이다.


    1. 반복문


    어떤 행동을 반복적으로 수행하는 문장을 컴퓨팅 세계에서는 반복문이라고 한다.

    C언어의 반복문의 종류에는 3가지가 있다.

    • while 문
    • for문
    • do ~ while 문

    물건을 살때의 흐름도,

    위 그림과 같이 우리가 물건을 구매할 때 돈이 부족하면 돈을 모으기 위한 행위를 반복하게 되는데 이를 반복문으로 표현한다.


    1.1 while

    while 문의 flow

    while 문은 일반벅으로 프로그래밍을 할 때 자주 사용하는 것 중 하나이며 while Loop라고도 부른다.

    while의 사전적 의미는 '~하는 동안'이다. 이와 비슷하게 C언어에서의 while은 '조건'이 '참' 인 동안에 '반복해라'는 의미다.

    while 문의 샘플 코드와 실행 결과

    위 그림의 코드에서 while 문의 조건문은 num < 5 이다. num이 5보다 작을 동안 while 문 안에 있는 내용을 반복하여 수행하라는 것이다.

    결과를 보면 num이 0~4일때 까지만 반복하고 5가 되었을 때 while 문을 빠져나오는 것을 확인할 수 있다.

    위 코드의 자세한 반복 순서

    위 그림은 위에서 보았던 코드에 반복문의 실행 순서를 자세하게 나타낸 것이다.

    우선 while 문에 있는 내용을 수행하기 전에 조건문을 먼저 확인하고 조건이 참일 경우에 반복한다는 것을 확인할 수 있다.

    while문 예제코드와 실행 결과

    다음 예제 코드에서 while 문은 i가 10보다 같거나 작을 경우에 while 문에 있는 내용을 수행하게 된다.

    sum에 i를 더 해주고 출력 후 마지막으로 i를 증감 연산자를 통해 1만큼 증가시켜 준다.

    최종적으로 sum은 0~10 까지의 수를 모두 더하고 반복문은 i가 11이 될 때 종료하게 된다.


    1.2 while 무한 루프

    무한 루프 (무한 반복문)란 종료되지 않고 무한히 실행되는 반복문을 의미한다.

    break; 를 추가하여 무한 루프를 탈출할 수 있다.

    무한 루프 예제 코드

    위 코드에서 while 문의 반복 조건으로 1이 들어가 있음을 확인할 수 있다.

    C언어에서 0은 false, 1은 true를 의마한다.

    그러므로 위의 while 문의 조건문은 1이므로 참으로 고정이 되어있는 것이다.

    항상 조건문이 참이므로 while은 멈추지 않고 무한 반복을 하게 된다.

     

    무한 루프의 경우 유용하게 사용될 수 있지만 잘못 사용하면 pc가 멈추게 되니 유의해서 사용해야 한다.


    1.3 중첩 while 문

    중첩 while문은 while문 내부에 또 다른 while 문이 있는 것을 말한다.

    중첩 while문의 예제 코드 및 실행 결과

    위 코드를 보면 while문안에 또 다른 while문이 있음을 확인할 수 있다.

    첫 번째 while문은 i <= 9 일 경우에 반복을 하게 되며 내부에 있는 while문은 j<=9일 경우에 반복하게 된다.

    코드의 진행순서로는 우선 첫번째 while 문의 조건이 참인지 확인한다.

    그 후 첫 번째 while문 안에 있는 두 번째 while 문의 조건이 참인지 확인하고 두 번째 while 문의 반복이 끝나면 빠져나와 i를 1만큼 증가시키고 j를 다시 1 만들어주고 첫 번째 while문을 반복한다.

    즉, i = 1 일 때 j 가 1~9일 때까지 반복, i = 2 일때 j 가 1~9일 때까지 반복, ... , i = 9 일때 j 가 1~9일 때까지 반복한다.


    1.4 for문

    for의 사전적 의미도 while과 마찬가지로 "~하는 동안"의 의미를 가지고 있다.

    그래서 for문도 조건이 참일 동안 계속해서 반복하라는 의미이다.

    for문의 예제 코드와 실행 결과

    for문과 while문 중에 뭐가 더 좋냐고 묻는다면 어느 것이 더 좋다고 할 수는 없다.

    상황에 따라 알맞게 쓰는 것이 중요하다.

    왼쪽 while문, 오른쪽 for문

    while문은 논리적으로 모두 for문으로 바꿀 수 있다.

    위 그림은 while문의 표현을 for문으로 바꾼 것이다. 형식은 다르지만 같은 실행결과를 얻을 수 있다.

    for문의 구성과 실행 순서

    위 그림은 for문의 구성과 실행 순서를 나타낸다.

    for(int i = 0; i <5; i++)와 같이 for문을 만들었을 경우 초기에 i = 0이며 i가 5보다 작을 때까지 반복하며 한번 반복이 끝나면 i를 1만큼 증가시키겠다는 의미이다. 그러므로 총 5번 반복하게 된다.

    for 문 예제 코드 및 실행 결과

    위 코드에서의 for 문은 i의 초깃값은 1이며 i가 i <=9 일 때까지 i를 1씩 증가시키며 반복하게 된다.

    result에 num * i (1~9)를 계산하여 넣고 출력하는 것을 반복하게 된다.


    1.5 for 무한 루프

    for문의 무한 루프

    for문의 무한 루프 또한 break; 를 통해 빠져나올 수 있다.

    for(;;) 이런 식으로 무한 루프를 표현하는 방법도 있다.


    1.6 중첩 for 문

    for문도 역시 while 문과 동일하게 중첩하여 사용할 수 있다.

    중첩 for문 실습 예제 및 실행 결과

    중첩 for문도 while문과 마찬가지로 첫 번째 for문의 조건을 확인 후, 두 번째 for문의 반복문을 전부 수행하고 for문의 i가 증가한다.


    1.7 do ~ while 문

    C언어에서 대부분의 반복문을 만들 때 while문과 for문을 사용하기 때문에 do~while 문은 사용 빈도가 적다.

    do~while 문은 while 문과 유사하기 때문에 따로 사용하지 않는다.

    do while문과 while 문의 차이를 볼 수 있다.

    기존의 while문과는 다르게 반복할 내용을 우선 무조건 한번 실행하고 while문의 조건식을 확인하게 된다.

    do~while 문 실습 예제 코드 및 실행 결과

    위 코드를 보면 while 문의 조건은 num < 10 일 때 반복이며 현재 num이 10이지만 우선 do 안에 있는 내용을 한번 실행한 뒤에 while의 조건문을 확인하므로 10이 출력되는 것을 확인할 수 있다.


    2. 조건문


    일상 생활에서의 조건문

    다음 흐름도와 같이 우리가 물건을 산다고 가정을 하였을 때 물건의 가격이 가지고 있는 돈으로 구매가 가능한 경우에만 물건을 살 수 있다.

    이때 흐름도의 마름모는 물건을 구매할 때의 분기를 나누는 조건을 표현하고 있다.

    컴퓨팅 세계에서는 마름모 부분을 조건문으로 표현할 수 있는데, 조건문은 어떤 조건이 참 또는 거짓일 때 조건에 해당되는 일이 선택되어 처리되는 문장을 말한다.

     

    즉, 조건문을 사용하면 상황에 따라 프로그램의 흐름을 제어할 수 있는 코드를 작성할 수 있다.

    자판기 조건문

    다음 그림은 자판기 사용자가 마실 음료수를 선택할 때 하는 행동을 도식화하고 있다.

    사용자가 원하는 음료 버튼을 누르고, 이에 따라서 해당 음료수를 받게 된다

    이를 조건문으로 표현해 본다면 세 가지 조건들로 정리할 수 있다.

    • 조건문 1 : 사이다 버튼이 참이라면 사이다 선택
    • 조건문 2 : 콜라 버튼이 참이라면 콜라 선택
    • 조건문 3 : 주스 버튼이 참이라면 주스 선택

    이와 같이 우리는 조건문을 표현할 수 있다.

     

    C언어에서 조건문은 크게 if문과 switch~case문으로 나뉜다.


    2.1 if 문

    영어에서 if를 사용하는 문장이 어떤 조건을 제시하듯이 C언어에서도 if 문으로 프로그램의 실행 흐름을 분기하는 조건을 제시한다.

    if문을 흐름도로 나타낸 것

    위 그림과 같이 if문을 흐름도로 표현할 수 있다.

    if라는 키워드 옆에 있는 괄호 안에 조건을 입력하고 해당 조건이 맞으면 내용을 수행하게 된다.

    if문 실습 예제 코드 및 실행 결과

    위 코드를 보면 두 개의 if문 사용한 것을 확인할 수 있다.

    만약 num >= 0 이면 '양수'를 출력하고, 만약 num < 0이라면 '음수'를 출력하게 된다.

    if문 실습 예제 코드 및 실행 결과

    위 코드에서는 for문과 if문이 함께 사용되었다.

    num의 초깃값을 1로 정하고 num <=100 일 때까지 for문 안에 내용을 반복하며 반복 내용이 한번 끝날 때마다 num은 1만큼 증가한다.

    이때 for 문안에 있는 if 문의 조건문은 num % 5 == 0이다. 즉, num을 5로 나누어 나머지가 0일 때 if문 안에 내용을 실행한다는 것이다.

    코드 실행 결과를 보면 0~100까지의 5의 배수가 출력되었음을 확인할 수 있다.


    마치며..

    이번 시간에는 반복문과 조건문 if에 대해서 알아보았다.

    반복문과 조건문은 매우 중요한 개념이므로 기억하고 알맞은 상황에서 잘 사용하는 것이 중요하다.

    그리고 여담으로 반복문을 많이 중첩하게 되면 프로그램의 처리 속도가 느려지므로 최대한 중첩하지 않고 따로 사용하도록 프로그램을 설계하는 것이 중요하다.

     

    다음에는 더 다양한 조건문과 배열에 대해서 알아볼 것이다.


    < 참고 자료 >

    책 : 열혈강의 C언어 본색 / 박정민

    '과외 수업 자료 > C' 카테고리의 다른 글

    C programming 기초 6강  (0) 2022.11.17
    C programming 기초 5강  (0) 2022.11.07
    C programming 기초 4강  (0) 2022.11.03
    C programming 기초 2강  (0) 2022.10.11
    C programming 기초 1강  (1) 2022.10.11
Designed by Tistory.