[2025.03.08] (예습) 반복실행을 명령하는 반복문

2025. 3. 8. 20:20·C/예습

[while문에 의한 문장의 반복]

★ 반복문이란?

  • 문자열 "Hello world!"를 출력하는 printf 함수 호출문을 총 10번 실행해줘.
  • 이런 형태의 명령을 내릴때 반복문 사용
  • C언어의 반복문 종류
    • while문
    • do~while문
    • for문

 

 

 

★ while문은 반복을 명령하는 문장이다.

  • while문은 특정 조건을 주고, 그것을 만족하는 동안, 특정 영역을 계속해서 반복하는 구조
  • 이 예제는 num이 5보다 작을때까지 계속해서 "Hello Polibo"를 출력해주는 반복 구조임.
  • 구조를 보면 python이랑 거의 비슷하게 느껴짐.
  • while문 영역을 중괄호{}로 구분함.
  • 예외로 반복의 대상이 하나의 문장이면 중괄호 생략 가능!!
#include <stdio.h>

int main() {
    int num = 0; // 변수 num 선언 및 초기화

    while(num < 5) // num 이 5보다 작을때까지 계속 반복
    {
        printf("Hello Polibo %d\n", num); // 출력
        num++; // num이 1씩 커짐
    }
    return 0;
}

 

 

 

★ while문의 구성과 실행흐름의 세세한 관찰

  • 먼저 dan, num 변수를 선언 및 초기화해줌.
  • 몇 단의 구구단을 출력할건지 입력
  • num이 10보다 작을 때까지 계속 반복해서 dan x num = dan*num 을 출력해줌.
  • 반복때마다 num에 1을 더해줌.
#include <stdio.h>

int main() {
    int dan = 0, num = 1;
    printf("몇 단? ");
    scanf("%d", &dan);

    while(num < 10)
    {
        printf("%d x %d = %d\n", dan, num, dan*num);
        num++;
    }
    return 0;
}

 

 


 

 

[do ~ while문에 의한 문장의 반복]

  • while문과 do~while문의 차이점 : 반복의 조건을 검사하는 시점!

★ do~whlie문의 기본구성

  • do~while문은 while문과 다르게 '반복조건'을 뒷부분에서 검사함!!! 
  • 즉, 반복조건에 해당하는지 뒤에서 검사하기 때문에, 반복영역을 최소한 한번은 실행함.
  • (while문은 처음부터 반복조건에 해당하지 않으면 한번도 실행을 안함.)
  • 바로 아래 예제를 보면, 그냥 while문에서는 반복조건에 해당하지 않아 실행되지 않아야 하는데, do~while문은 최소 한번은 실행되기 때문에, 출력된 이후 반복조건에 해당하지 않아 프로그램이 종료된 것을 볼 수 있음!!!! 
  • 요거 좀 신기한듯????
// do~while문
#include <stdio.h>

int main() {

    int num = 5;

    do
    {
        printf("Hello, Polibo!!\n");
        num++;
    } while (num<3);
    
    return 0;
}

 

 

 

★ do~whlie문이 자연스러운 상황

  • 문득 이런 생각이 들었음. while문이 있는데, 왜 굳이 do~while문이 있는거지???? 어떤 상황일때 사용하지???? 몹시 궁금함.
  • 비슷한 역할을 하는데 굳이굳이 존재하는 이유가 몹시 궁금쓰,,,,,
  • 책에는 아래 처럼 나와있는데,,,,,, 아직 이해안가윱,,,,
"그럼 언제 while문을 쓰고, 언제 do~while문을 쓰나요?"

"반복영역이 무조건 한 번 이상 실행되어야 합니다! 라는 상황에 쓰입니다!"

 

  • 아래 예제를 보면 이게 이해가 된다고 하니까,,, 일단 작성해서 이해해보겠음!ㅎ
  • 아래 예제는 0이 입력되기 전까지 정수를 게속 더해나가는 것임. 
  • while문을 쓰면 0이 입력되면 바로 종료 되지만, do~while문을 쓰면 최소한 한번은 실행되기 때문에 일단 0을 입력받고, 그 이후에 num != 0 조건에 해당하지 않기때문에, 프로그램이 종료되게 됨. 
  • 이런 경우에는 while문 보다 do~while문을 쓰는 것이 더 자연스러운것 같긴함.
// do~while문이 사용되는 경우
#include <stdio.h>

int main() {

    int total = 0, num = 0;

    do
    {
        printf("정수 입력(0 to quit): ");
        scanf("%d", &num);
        total += num;
    } while (num != 0);

    printf("합계: %d\n", total);
    return 0;    
}

 

 

 

[for문에 의한 문장의 반복]

★ for문의 구조와 이해

  • 반복문을 위한 필수요소
    • 1. 초기식 : 반복을 위한 변수 선언 및 초기화에 사용
    • 2. 조건식 : 반복의 조건을 검사하는 목적으로 선언
    • 3. 증감식 : 반복의 조건을 '거짓'으로 만드는 증가 및 감소연산
  • for문을 사용하면 3요소를 한번에 나타낼 수 있음.
  • 3개의 식이 모두 채워져있을 필요는 없음.
  • 만약 조건식이 비워져 있으면, 무조건 '참'으로 인식됨 => 무한루프
for(초기식 ; 조건식 ; 증감식)
{
    // 반복의 대상이 되는 문장들
}
  • while문과 마찬가지로 반복 대상 문장이 1개이면, 중괄호 생략 가능

 

★ for문 기반의 다양한 예제

  • 0이상, 사용자가 입력한 정수 이하의 값의 합을 출력하는 예제
#include <stdio.h>

int main() 
{
    int total = 0;
    int i, num;

    printf("0부터 num까지의 덧셈, num은?? ");
    scanf("%d", &num);

    for(i = 0 ; i <= num ; i++)
    {
        total += i;
    }
    printf("total = %d\n", total);
    return 0;
}

 

 

  • 사용자가 입력한 실수의 평균값을 출력하는 예제
  • 실수의 입력은 0보다 작은 음의 실수 값이 입력될 때까지 계속되며, 입력을 마무리하기 위해서 마지막으로 입력된 음의 실수는 평균값 계산에서 제외
// RealMean.c
#include <stdio.h>

int main()
{
    double total = 0.0;
    double input = 0.0;
    int num;

    for(num = 0 ; input >= 0.0 ; num++) // 음의 실수가 아닌 경우 계속 반복됨.
    {
        total += input;
        printf("실수를 입력하세요(minus to quit) : ");
        scanf("%lf", &input);
    }
    printf("평균 : %f\n", total/(num-1)); // 음의 실수를 입력하면 for문이 끝나기 때문에 num-1을 해줌.

    return 0;
}

 

 

 

★ for문의 중첩

  • while 중첩과 다르지 않음~~~ 바로 예제로 넘어가보자구 ~!~!~!~!~!
  • 구구단 전체를 출력하는 예제
// TwoToNineForVer.c (구구단 전체 출력 예제)
#include <stdio.h>

int main()
{
    int dan, is;

    for(dan = 2 ; dan < 10 ; dan++)
    {
        for(is = 1 ; is < 10 ; is++)
        {
            printf("%d x %d = %d ", dan, is, dan*is);
        }
        printf("\n");
    }
    return 0;
}

'C > 예습' 카테고리의 다른 글

[2025.03.09] (예습) 조건에 따른 흐름의 분기  (1) 2025.03.09
[2025.03.09] (예습) for문_연습문제  (2) 2025.03.09
[2025.03.08] (예습) while문_연습문제  (2) 2025.03.08
[2025.03.08] (예습) scanf 연습문제 풀이  (0) 2025.03.08
[2025.03.08] (예습) 변수와 연산자  (0) 2025.03.08
'C/예습' 카테고리의 다른 글
  • [2025.03.09] (예습) for문_연습문제
  • [2025.03.08] (예습) while문_연습문제
  • [2025.03.08] (예습) scanf 연습문제 풀이
  • [2025.03.08] (예습) 변수와 연산자
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    파이썬
    c언어 scanf
    반복문
    c우선순위
    else if
    순서도
    문자열
    파이썬반복문
    파이썬 숫자야구
    if문
    조건문
    코딩
    파이썬게임
    파이썬예제
    while문
    for문
    파이썬조건문
    c언어
    C
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.08] (예습) 반복실행을 명령하는 반복문
상단으로

티스토리툴바