Blog/JAVA기반 스마트웹 개발2021

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

고구마달랭이 2021. 7. 26. 00:08

반복문

[학습내용] [학습목표]
 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 : 레이블이 지정한 위치로 이동함