6 - While-For
<학습하기>
반복문
일련의 명령어들을 반복해서 실행하도록 하는 명령.
구성
1. 반복 구간(블럭) : 어디서부터 어디까지 반복할지 지정해 주는 역할을 한다.
2. 반복 조건 : 조건식으로 이루어져 있으먀. 이 조건식이 참일 동안 반복을 한다.
ex)
+++
+++
while (조건식) //조건식이 참일 동안
{ //여기서 부터
+++
+++
+++
+++
:
:
} //여기까지 반복
//조건식이 없다면 블럭 구간 무한 반복.
+++ //조건문이 없다면 이 부분은 실행이 안된다.
+++
+++
-while
형식
do
{
명령문;
명령문;
}
단, 반복할 명령어가 단 하나일 경우네는 중괄호 생략 가능.
(if문도 마찬가지).
-do while
형식
do
{ //여기서부터
명령문;
명령문;
} while (조건식); //여기까지 반복 (조건식이 참일 동안)
while문은 반복조건을 반복블럭 앞에서 검사하기에,
처음부터 조건이 틀리다면, 반복블럭을 아예 건너뛴다.
do while문은 반복조건을 뒤에서 검사하기에,
처음부터 조건이 틀려도 최소한 한번은 실행한다.
거의 while은 90%정도 사용함.
한번의 실행이 필요하고 조건식을 대입하려는 경우에 do while이 적합.
-for
정규화된 반복문.
while문이나 do while문이나 다음과 같은 세가지 식이 거의 항상 필요.
index = 0; //초기화
while (index < 10) //조건식
{
++index; //변동식
:
:
}
이 세개의 식을 한꺼번에 모아놓은 것이 for문이다
형식
for(초기화; 조건식; 변동식)
{
:
:
}
-실행순서
초기화 -> 조건식 ->반복블럭 실행 -> 변동식
-> 조건식 -> 반복블럭 실행 -> 변동식
-> 조건식 -> 반복블럭 실행 -> 변동식
-> 조건식 -> for문 탈출
위의 while문을 for문으로 바꾼다면
for(index = 0; index < 10; ++index)
{
:
:
}
-1부터 100까지의 합을 구하기.
알고리즘1
1과 2를 더한다.
거기에 3을 더한다.
거기에 4를 더한다.
거기에 5를 더한다.
:
:
거기에 99를 더한다.
거기에 100을 더한다.
그것을 출력한다.
알고리즘2 : '거기'와 '그것'을 변수 sum으로 하자.
1과2를 더해 sum에 넣는다.
sum에 4를 더한다.
:
:
sum에 100을 더한다.
sum을 출력한다.
알고리즘3 : 1과 2일 경우 규칙에 맞도록 수정.
sum에 0을 넣는다.
sum에 1을 더한다.
:
:
sum에 100을 더한다.
sum을 출력한다.
알고리즘 4 : 1~100까지 더하는 부분을 반복문으로 만든다.
sum에 0을 넣는다. sum = 0;
index에 1을 넣는다. index = 1;
반복 -> index가 100보다 작거나 같을동안. while (index <= 100);
{ {
sum에 index를 더한다. sum+= index;
index에 1을 더한다. ++index;
} }
sum을 출력한다. printf("sum : %d\n", sum);
<실습하기>
#include <stdio.h>
main()
{
int index;
puts("while문과 do while문의 비교");
index = 0; //초기화
while(index<5) //반복조건
{
++index; // 변동식. 이 조건이 없다면 무한 반복.
printf("while(index가 0부터 시작) index: %d\n",index);
}
index = 0; //초기화
do
{
++index; //변동식
printf("do while(index가 0부터 시작) index: %d\n",index);
}while(index<5);//조건식
///////////////////////////////////////////////////////////////
index = 5;
while(index<5)
{
++index;
printf("while(index가 5부터 시작) index: %d\n",index);
}
index = 5;
do
{
++index;
printf("do while(index가 5부터 시작) index: %d\n",index);
}while(index<5);
///////////////////////////////////////////////////////////////
//for문 테스트
puts("1+2+3+ .....+99+100의 값은?");
{//변수를 선언하기 위한 블럭
int index = 1;
int sum = 0;
for(index =1; index<=100; index++)
{
sum+=index;
}
printf("sum:%d\n", sum);
}
}
댓글
댓글 쓰기