프로그래밍 언어 활용 part 1 - 반복문
반복문
[학습내용] | [학습목표] |
▪ 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”);
..
//“*”를 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문
기본 문법
for과 while
▪ for를 while로 변경할 때는 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문
기본 문법
예제
▪ 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 : 레이블이 지정한 위치로 이동함