• 프로그래밍 언어 활용 part 1 - 반복문

    2021. 7. 26.

    by. 고구마달랭이

    반복문

    [학습내용] [학습목표]
     for
     while
     for문의 기본 문법을 알고 사용할 수 있다.
     whlie문의 기본 문법을 알고 사용할 수 있다.

    for문

     

    1. 기본 문법

    기본 문법

    ▪ 같거나 유사한 코드를 반복적으로 수행할 수 있도록 하는 제어문

    ▪ 코드를 반복해서 수행해야 할 때 코드를 복사해서 작성하는 대신 반복문을 사용

    ▪ for, whlie문을 사용

    printf(“Press any key to continue”);	// printf(“1”);
    ..
    printf(“Press any key to continue”);	// printf(“2”);
    ..
    printf(“Press any key to continue”);	// printf(“3”);
    ..
    printf(“Press any key to continue”);	// printf(“4”);
    ..
    printf(“Press any key to continue”);	// printf(“5”);
    ..

     

    for문 기본 문법

     

     

    //“*”30개 출력

    printf(“*”); printf(“**********************************”);
    
    for( i=0 ; i<30 ; i++ )
    {
      printf(“*”);
    }

     

     

    ▪ for문을 구성하는 초기식, 조건식, 증감식, 반복할 문장은 모두 생략할수 있음

     

     

    예제

    ▪ 1부터 10까지의 합을 출력하시오.

    #include <stdio.h>
    int main()
    {
    	int i, sum = 0;
        
    	for (i=1 ; i<=10 ; i++)
    	   sum += I;
    	printf(“1 ~ 10까지 합의 결과는 %d 입니다.", sum);
    	return 0;
    }

     

     

    ▪ 9부터 1까지 순서대로 출력하는 프로그램을 작성하시오.

    #include <stdio.h>
    int main()
    {
    	int i;
        
    	for (i=9 ; i>0 ; i--)
    	   printf(“ %d ", i);
    	return 0;
    }

     

     

    ▪ 1부터 50까지 홀수와 짝수를 구분하여 출력하는 프로그램을 작성하시오.

    #include <stdio.h>
    int main()
    {
    	int i,j;
        
    	 printf(“ 홀수 짝수 ”);
    	for (i=1, j=2 ; i<50 ; i+=2, j+=2)
    	 printf(“ %d %d ”, i, j);
    	return 0;
    }

     

     

    ▪ 구구단을 출력하는 프로그램을 작성하시오.

    #include <stdio.h>
    int main()
    {
    	int i, j;
        
    	for (i=2 ; i<10 ; i++)
    	{
    	  printf(“\n\n %d 단\n”);
    	  	for (j=1 ; j<10 ; j++)
    	 	 printf(“%d x %d = %d\n", i, j, i*j);
    	}
    	return 0;
    }

     

    while문

     

    1. while문

    기본 문법

     

    while문 기본 문법

     

     

    forwhile

    forwhile로 변경할 때는 while문 앞에 초기식을 쓰고 while 블록 안쪽의 맨 끝에 증감식을 씀

    for whlie
    for ( 초기식 ; 조건식 ; 증감식 )
    {
    문장 ;
    }


    초기식 ;
    while ( 조건식 ; )
    {
    문장 ;
    증감식 ;
    }

     

     

    //“*”30개 출력

    for( i=0 ; i<30 ; i++ )
    {
    	printf(“*”);
    }
    
    i=0;
    
    while(i<30)
    {
    	printf(“*”);
    	i++;
    }

     

     

    예제

    ▪ 1부터 10까지의 합을 출력하시오.

    #include <stdio.h>
    int main()
    {
    	int i,sum=0;
        
    	i = 1;
        
    	while (i <= 10)
    	{
    	  sum += i;
    	  i++;
    	}
      printf(“1~10까지 합의 결과는 %d입니다.”, sum);
      return 0;
    }

     

     

    ▪ 1부터 입력한 정수(n)까지의 홀수의 합과 짝수의 합을 출력하시오.

    #include <stdio.h>
    int main()
    {
    	int i, n, sum_odd=0, sum_even=0;
        
    	scanf(“%d”, &n);
        
    	i = 1;
        
    	while (i <= n)
    	{
    		if(i%2)
    		sum_even += i;
    		else
    		sum_odd += i;
    		i++;
    	}
        printf(“1~%d까지의홀수합: %d 짝수합 : %d 입니다.", n, sum_odd, sum_even);
        return 0;
    }

     


     

    2. do ~ whlie문

    기본 문법

     

    do ~ while문 기본 문법

     

     

    예제

    ▪ 0이 입력될 때까지 계속 수행되는 프로그램으로 0이 아닌 정수값(n)에 대해 3으로 나머지 연산한 결과를 출력하시오.

    #include <stdio.h>
    int main()
    {
      int n;
      
      scanf(“%d”,&n);
      
      while (n!=0)
      	{
          printf(“%d % 3 = %d \n”, n, n%3 );
          scanf(“%d”,&n);
    	}
    	return 0;
    }
    #include <stdio.h>
    int main()
    {
    	int n;
    	do
    	{
          scanf(“%d”,&n);
          if (!n)
          	printf(“%d % 3 = %d \n”, n, n%3);
        } while (n!=0);
        return 0;
    }

     


     

    3. 분기문

    기본 문법

    ▪ break : 블록을 탈출하는 명령어

    ▪ continue : 반복문의 시작으로 분기

     

     

    예제

    ▪ 1부터 입력한 정수값(n)까지 5의 배수가 아닌 값을 출력하시오.

    #include <stdio.h>
    int main()
    {
    	int i, n;
        
    	scanf(“%d”,&n);
        
          for(i=1 ; i<=n i++)
          if (i%5 == 0 )
    	continue;
          printf(“ %d “, i);
    	return 0;
    }

     

     

    ▪ 입력 받은 두 정수의 합을 출력하는 프로그램을 작성하시오. 단 첫 번째 입력한 값이 0이면 프로그램을 종료하시오.

    #include <stdio.h>
    int main()
    {
      int a, b;
      
      while (1)
      {
        scanf(“%d %d”, &a,&b);
        if(!a)
        break;
        printf(“%d + %d = %d \n", a, b, a+b);
      }
      return 0;
    }

     

     


     

     

    평가하기

     

    Q1. for문에 관한 설명으로 옳지 않은 것은 무엇인가?


    for문은 증감식에 의해 값의 변경이 있다.
    ② 조건식이 참이면 반복문을 수행한다.
    ③ 초기값은 반드시 초기값 항에 기술해야 한다. 
    증감식을 기술하지 않으면 무한 루프에 빠질 수 있다.

     

    for문은 초기값을 기술하나 반드시 초기값 항에 기술해야 하는 것은 아닙니다.




    Q2. 다음 중 무한 반복문이 아닌 것은 무엇인가?


    for( ; ;)
    ② while(1)
    ③ while( )
    for( ; ; i++)

     

    whlie문의 조건식에 1은 참의 논리이므로 무한 반복이 이루어집니다.

     



    Q3. for를 이용하여 반복문을 구현했을 때, 반복문 수행 중 continue;가 수행되면 어디로 분기가 이루어지는가?


    조건식
    초기식
    ③ 증감식
    ④ for 블록 탈출

    continue문은 증감식으로 분기합니다.

     

     

     


     

     

    학습정리

     

    1. for문

    • 초기식, 조건식, 증감식으로 구성되며, 조건이 참인 동안 문장을 반복 수행함

    • 필요에 따라 중첩하여 for문을 사용할 수 있음

    • 무한 루프를 위해 for( ; ; )와 같은 문을 사용할 수 있음

     

    2. while문

    • while : 조건식이 참인 동안 문장을 반복 수행함

    • do-while : 조건식이 참인 동안 문장을 반복 수행하며, 문장을 한 번 이상 수행할 필요가 있는 경우 유용함

    • break : 현재 수행 중인 반복문을 빠져나감

    • continue : 반복문의 시작 부분으로 분기함

    • goto : 레이블이 지정한 위치로 이동함

     

     

     

    댓글