< 8장, 여러형태의 반복문 >
/* 이번장은 좀 생각을 많이 필요해요, 재밌게 해봅시다.(많이 중요해요) */
● 반복문이란?
- 반복문의 기능
> 특정 영역을 특정 조건이 만족하는 동안에 반복실행하기 위한 문장
● 반복문의 세가지 형태?
(이 중에 한개만 이해하면 나머지는 아무것도 아닙니당)
- while문에 의한 반복 : while()
- do ~ while문에 의한 반복 : do while()
- for문에 의한 반복 for( ; ;)
● while문의 기본 원리와 의미
=============================
- while문의 구성 : 반복조건의 만족되는 동안 반복내용을 반복해서 실행하라
while(반복조건)
{
반복내용
}
==============================
// 예제 참고
문장이 2줄이상이면 { } 를 넣어준다.
하지만 콤마 연산자(,)를 사용해서 한줄로 나타낼수 있다
그렇다면{}를 없애도 된다.(한줄은 문장은 {}를 생략가능하다)
// 구구단 프로그램 연습하기
#include <stdio.h>
int main()
{
int i = 1;
printf("구구단 2단 입니다 ");
while(1) //무한반복하란의미, 즉 ()안의 조건이 '1', 즉 항상 참이기때문
{
printf(" %d × %d = %d ", 2, i, 2*i);
i++; // 반복문이 실행이 될때마다 i값을 1씩 증가
if(i>9) break; // 만약에 i가 9보다 크면 break문을 써서 반복문을 빠져나온다
}
system("PAUSE");
return 0;
}
※ while(1)은 어떻게 될까요?
= > 0이 아닌 모든 숫자는 참이다
= > 항상 참이기때문에 무한반복이된다.
- 일반적으로 1을 쓴다 (프로그래머와의 약속) - 0이 아닌 어떤수를 넣어도 된다
ex) 컴퓨터를 검색할때 쓰인다.
★ while문의 중괄호
: 반복하고자 하는 영역이 둘 이상의 문장으로 구성되는 경우 필수
- 여러분이 이것저것 숫자 바꿔보고 연습해야함
● while문의 중첨
> 여러분에게 있어서 고비 일수도 있습니다.
- while문안에 while문을 포함시킨다는 뜻
- 반복 구조내에서 또 하나의 반복 구조 형성
- 연습장 가지고 나름대로 그림그려가면서 공부하면 더 좋다.
- 백문이 불여일견, 백문이 불여일타
while문 안에 while문을 포함시킨다는 뜻
- 반복구조내에서 또하나의 반복구조 형성
예제=====================================
#include <stdio.h>
#include <windows.h>
using namespace std;
int main(void)
{
int k, j;
k = j = 0;
int num=0;
while(k < 3)
{
printf("**** 현재는 k = %d ", k);
while(j < 3)
{
printf("현재 j는 %d ", j);
num++;
j++;
}
k++;
j=0;
}
system("PAUSE");
return 0;
}
=========================================
오늘것만 이해하신거면 완전 성공한거
알쏭달쏭하다면 반 성공
전혀 모르겠다 => 더 잘됐다 이런분들이 더 빠질수 있다
※ do ~ while문과 while문의 차이점
- do while문은 일단 한번 실행하고 나서 조건 검사를 진행
do{
반복내용
} while(반복의조건);
자 먼저 do내용을 먼저 한번 실행하고
while 반복조건을 검색한다
- while문은 한번도 실행이 안될수 있다 (조건검사를 먼저 하기때문)
- do ~ while문은 한번은 먼저 실행되고 조건을 검색하고 다시 반복된다.
>> 한번 먼저 실행하고 반복검사를 하면 프로그램을 더 좋을때가 많다.
>> 일반적으로 while문이 많이 쓰인다.
====================================================
/* 구구단출력 프로그램 */
#include <stdio.h>
#include <windows.h>
using namespace std;
int main(void)
{
int i = 2; // i는 2부터 시작하니,
int j = 0;
while(i<10) // i가 10보다 작을때까지, 즉 9까지
{
j = 1;
while(j<10) // j는 10보다 작을때까지, 즉 9까지
{
printf("%d * %d = %d ", i, j , i*j);
j++;
}
i++;
}
====================================================
/* 입력한수 계속 더하기 */
#include <stdio.h>
int main()
{
int total = 0;
int val = 0;
do
{printf("숫자 입력 ( 0 : quit) :");}
scanf("%d", &val);
total+=val;
while(val!=0);
printf("Total : %d ", total);
system("PAUSE");
return 0;
}
====================================================
/* 원한는 단을 출력하는 구구단프로그램 */
#include <stdio.h>
#include <windows.h>
int main()
{
int val ;
int i = 1;
printf("출력하고자 하는 구구단, 몇 단? :");
scanf("%d", &val);
do
{
printf("%d * %d = %d ", val, i, val*i);
i++;
}
while(i<10);
return 0;
}
● for문의 기본 원리와 의미
- 초기문 , 조건문, 증감문 모두를 기본적으로 포함
- 가장 많이 사용되는 반복문
for(초기문; 조건문; 증감문)
{
반복하고자 하는 내용
}
- 초기문 : 반복을 하고자하는 변수를 초기화 (딱한번만 실행)
- 조건문 : 반복조건을 확인하는 문장
- 증감문 : 반복의 조건을 어느시점에서 무너뜨리기 위한 증감
※ 대부분 반복문들은 잘 관찰하면 이 세가지가 항상 등장한다.
===========================================================
/* 0부터 입력한수까지의 합 구하는 프로그램 */
#include <stdio.h>
#include <windows.h>
int main(void)
{
int total = 0;
int i, n;
printf("0부터 n까지의 덧셈, n은? ");
scanf("%d", &n);
for(i=0; i<=n; i++) // i는 0부터시작해서 입력한 수 n보다 같거나 작을때까지
{ // i는 1씩 증가
total += i;
}
printf("0부터 %d까지의 덧셈결과는 : %d", n, total);
system("PAUSE");
return 0;
}
===========================================================
이해하고 익숙해지면 for문이 더 이해하기 쉽다
- 초기문, 조건문, 증감문을 한눈에 볼수 있다
※ while문 do~while, for문으로 서로 막 바꿔가면서 연습을 해보세요
===========================================================
/* 양의정수를 입력을 반복하여 더해 평균을 구하는 프로그램 */
#include <stdio.h>
#include <windows.h>
int main(void)
{
float total = 0.0;
float input = 0.0;
int count = 0;
for(;input >=0.0;) // 이건 초기문, 증감문이 없다.
// 단, input값이 0.0보다 클때 라는 조건만 있따.
{
total += input; // 아
printf("양의 실수 입력(minus to quit) :");
scanf("%f", &input);
count++;
}
printf("지금까지의 평균 : %f ", total/count-1); // count는 한번더 +1을 하므로 -1을 해줌
return 0;
}
// for문의 초기문 증감문은 필요에 따라서 다른곳에 적어준다
// for(;;) = while(1) 즉, 무한루프를 의미
===========================================================
/* for문의 중첩반복을 통한 이해를 돕는 */
#include <stdio.h>
#include <windows.h>
int main(void)
{
int i, j;
for(i=0; i<3; i++)
{
printf("현재 i 는 %d *** ", i);
for(j=0; j<2;j++)
{
printf("현재 j는 %d ", j);
}
i++;
}
system("PAUSE");
return 0;
}
숙제 ===========================================================
다음과 같은 프로그램이 동작하도록
코드를 작성하세요

'프로그래밍 > C' 카테고리의 다른 글
제 10장 조건에 따른 흐름의 분기 - 2 (0) | 2010.07.08 |
---|---|
제 9장 조건에 따른 흐름의 분기 - 1 (0) | 2010.07.08 |
제 7장 비트단위 연산과 상수, 기본자료형 (0) | 2010.07.08 |
제 6장 scanf함수와 데이타 표현방식의 이해 (0) | 2010.07.08 |
제 5장 변수와 연산자 - 2 (0) | 2010.07.08 |