• 검색 결과가 없습니다.

횟수로 반복하기

N/A
N/A
Protected

Academic year: 2022

Share "횟수로 반복하기"

Copied!
36
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

2015년 2학기 프로그래밍개론및 실습 과목으로 본 내 용은 강의 교재인 생능출판사, 두근두근 C 언어 수업,

천인국지음을 발췌 수정하였음

프로그래밍개론및 실습

(2)

CHAPTER 12

횟수로 반복하기

(3)

for 루프

정해진 횟수만큼 반복하는 구조

(4)

for 문의 순서도 및 구조

for 문은 초기식, 조건식, 증감식의 3 부분으로 구성

i= 0 , i<10, i++

start

end

“Hello World”

(5)

제어변수 사용

현재의 반복 횟수를 출력해보자.

#include <stdio.h>

int main(void)

{ int i;

for (i = 0; i < 5; i++) { printf("%d \n", i);

}

printf(“ %d반복이 종료 . \n", i);

return 0;

}

i= 0 , i<5, i++

start

반복이 종료

end

i

(6)

핵심예제 : 정수들의 합

1부터 사용자가 입력한 수 n까지 더해서 (1+2+3+...+n)을 계산하는 프로그램을 작성하여 보자

(7)

예제 소스

// 반복을 이용한 정수합 프로그램

#include <stdio.h>

int main(void)

{ int i, sum=0, limit=5;

for (i = 1; i <= limit; i++) sum += i;

printf(“ %d\n", sum);

return 0;

}

i= 1 , i<=limit, i++

sum+=i

start

i , sum=0, limit=5

sum

end

(8)

핵심예제 : 팩토리얼 계산하기

for문을 이용하여서 팩토리얼을 계산해보자. 팩토리얼 n!은 1부터 n 까지의 정수를 모두 곱한 것을 의미한다. 즉, n! = 1×2×3×……×(n- 1)×n이다.

(9)

예제 소스

// 반복을 이용한 팩토리얼 구하기

#include <stdio.h>

int main(void)

{ long fact=1;

int i, n;

printf("정수를 입력하시오: ");

scanf("%d", &n);

for(i = 1;i <= n; i++)

fact = fact * i;

printf("%d!은 %d이다.\n",n,fact);

return 0;

}

(10)

핵심예제 : 온도 변환 테이블 출력

화씨온도-섭씨온도 변환 테이블을 출력하는 프로그램을 작성하여 보 자.

(11)

예제 소스

#include <stdio.h>

int main(void) { double t;

for( t=0.0 ; t<=100.0 ; t += 10.0 )

{ printf("%6.2f F = %6.2f C\n", t, (t - 32.0) * 5.0 / 9.0);

}

return 0;

}

(12)

Lab:화면에 사각형 그리기

화면에 사각형을 그려본다.

(13)

Lab:함수 그래프 그리기

0.01 ∗ 의 그래프를 반복문을 이용하여서 그려보자.

(14)

예제 소스

#include <windows.h>

#include <stdio.h>

HWND hwnd;

HDC hdc;

int main(void) {

int x, y;

hwnd = GetForegroundWindow();

hdc = GetWindowDC(hwnd);

MoveToEx(hdc, 100, 300, 0);

LineTo(hdc, 300, 300);

MoveToEx(hdc, 100, 300, 0);

LineTo(hdc, 100, 0);

for (x = 0; x < 300; x++) {

y = 0.01*x*x + x;

SetPixel(hdc, 100 + x, 300 - y, RGB(255, 0, 0));

}return 0;

}

(15)

while 루프와 for 루프와의 관계

{

초기식

while (

조건식

)

}

문장1장

;

문장2장

;

증감식

;

for (

초기식

;

조건식

;

증감식

)

{

}

문장1장

;

문장2장

;

...

...

(16)

다양한 증감수식의 형태

for (i = 10; i > 0; i-- )

printf("Hello World!\n");

for (i = 0; i < 10; i += 2 )

printf("Hello World!\n");

for (i = 1; i < 10; i *= 2 )

printf("Hello World!\n");

for (i = 0; i < 100; i = (i * i) + 2 ) printf("Hello World!\n");

뺄셈 사용

2씩 증가

2를 곱한다.

어떤 수식이라도 가능

(17)

다양한 증감수식의 형태

for (i = 0, k = 0; i < 100; i++ ) printf("Hello World!\n");

for (printf("반복시작”), i = 0; i < 100; i++ ) printf("Hello World!\n");

2개 이상의 변수 초기화

어떤 수식도 가능 for ( ; ; )

printf("Hello World!\n");

무한 반복 루프

(18)

중첩 반복문

중첩 반복문(nested loop): 반복문 안에 다른 반복문이 위치

(19)

// 중첩 for 문을 이용하여 *기호를 사각형 모양으로 출력하는 프로그램

#include <stdio.h>

int main(void) {

int x, y;

for(y = 0; y < 5; y++) {

for(x = 0; x < 10; x++) printf("*");

printf("\n");

}

return 0;

}

예제

(20)

핵심예제 : 구구단 출력하기

구구단을 2단부터 9단까지 출력하는 프로그램을 살펴보자.

(21)

예제 소스

#include <stdio.h>

int main(void)

{ int x, dan;

for (dan = 2; dan<10; dan++) { for (x = 1; x<10; x++)

printf("%d*%d=%2d ", dan, x, dan*x);

printf("\n");

}return 0;

}

(22)

Lab: 주사위 경우의 수

두 개의 주사위를 던졌을 때 합이 7이 되는 경우를 모두 출력하여 보 자.

(23)

예제 소스

#include <stdio.h>

#define SUM 7 int main(void)

{ int diceA, diceB;

printf("합이 %d이 되는 경우의 수를 찾아 봅니다. \n", SUM);

printf("--- \n");

printf("주사위A 주사위B \n");

printf("--- \n");

for (diceA = 1; diceA <= 6; diceA++)

for (diceB = 1; diceB <= 6; diceB++)

if ( SUM== (diceA+diceB) )

printf("%d %d \n", diceA, diceB);

return 0;

}

(24)

break 문

break 문은 반복 루프를 빠져 나오는데 사용된다.

(25)

핵심예제 : break로 반복종료

‘q’가 입력되면 반복 루프를 빠져나오는 예제를 작성하여 보자.

(26)

예제 소스

#include <stdio.h>

int main(void) { char c;

for(;;) {

printf( "어떤 키나 누르세요, q는 종료: " );

scanf(" %c", &c);

if (c == 'q') break;

}return 0;

}

(27)

#include <stdio.h>

int main(void) {

int i;

for(i=0 ; i<10 ; i++) if( i%3 == 0 )

continue;

printf("%d ", i);

return 0;

}

continue 문

현재의 반복을 중단하고 다음 반복을 시작하게 한다.

3의 배수 는 건너뛴다.

(28)

Lab:배터리 관리

배터리 관리 프로그램을 시뮬레이션하여 보자. 사용자는 충전과 사용 을 반복한다. 충전은 양수로, 사용은 음수로 입력받는다. 만약 배터리 가 총충전용량의 10% 이하로 내려가면 충전이 필요하다는 경고를 화 면에 출력하고 프로그램을 종료한다.

(29)

예제 소스

#include <stdio.h>

int main (void) {

double capacity, remaining, amount;

capacity = 5000.0;

remaining = 3000.0;

printf ("현재 남아 있는 충전량: %f\n", remaining);

while (remaining > capacity * 0.10) {

printf ("\n충전(+)/사용(-): ");

scanf ("%lf", &amount);

remaining = remaining + amount;

if (remaining < 0.0) remaining = 0.0;

if (remaining > capacity) remaining = capacity;

printf ("현재 남아 있는 충전량: %f\n", remaining);

}printf ("경고! 충전하세요!\n");

return (0);

}

(30)

Lab: 직각 삼각형 찾기

각 변의 길이가 100보다 작은 삼각형 중에서 피타고라스의 정리가 성 립하는 직각 삼각형은 몇 개나 있을까?

(31)

알고리즘

for(a=1;a<=100;a++)

for(b=1;b<=100;b++)

for(c=1;c<=100;c++)

if( c*c = =(a*a + b*b) )

abc 를 화면에 출력한다 .

(32)

소스

#include <stdio.h>

int main(void) {

int a, b, c;

for(a=1; a<=100; a++)

for(b=1; b<=100; b++)

for(c=1; c<=100; c++)

if(c*c== (a*a+b*b) )

printf("%d %d %d", a, b, c);

return 0;

}

(33)

Lab: 숫자 추측 게임

프로그램이 가지고 있는 정수를 사용자가 알아맞히는 게임

사용자가 답을 제시하면 프로그램은 자신이 저장한 정수와 비교하여 제시된 정수가 더 높은지 낮은지 만을 알려준다.

(34)

알고리즘

do

 사용자로부터 숫자를 guess 로 입력받는다 .

 시도횟수를 증가한다 .

if( guess < answer )

 숫자가 낮다고 출력한다 .

if( guess > answer )

 숫자가 높다고 출력한다 .

while(guess != answer);

 “축하합니다”와 시도횟수를 출력한다 .

(35)

소스

#include <stdio.h>

int main(void) {

int answer =59; // 정답 int guess;

int tries = 0;

do {

printf("정답을 추측하여 보시오: ");

scanf("%d", &guess);

tries++;

if (guess >answer) // 사용자가 입력한 정수가 정답보다 높으면 printf("제시한 정수가 높습니다.");

if (guess <answer) // 사용자가 입력한 정수가 정답보다 낮으면 printf("제시한 정수가 낮습니다.");

} while (guess !=answer);

printf("축하합니다. 시도횟수=%d", tries);

return 0;

(36)

퀴즈

임의의 수

A, B, C, D 4개의 수로 구성된 3자리 정수가 있다 . 단 각각의 수는 1에서 9사이의 정수이다. 다음식을 만족

하는

A,B,C,D의 값들을 출력하는 프로그램을 작성하시오

A B C + C A C ---

B D D

설명

) 여러 해 중에서 예를 들면 A=2, B=9, C=6, D=2인 경우

위 식을 만족하는 해라고 할 수 있음

2 9 6 +6 2 6 ---

9 2 2

참조

관련 문서

 이렇게 공조게임에서는 자신이 가진 부존자원 또는 BATNA가 작은 선수가 상대적으로 더 많은 이익을 보는 경우가 일반적임...

There exist arithmetic progressions consisting of prime numbers of any given length.

지금까지 우리는 어떠한 PP가 그 문장의 다른 구성요소들 보다 더/덜 중요한 정 보를 전달하는지 아닌지 만을 논의해왔다.다시 말해 PP자체가 더 중요한 정보를 전달할 때 보충어

다음 소개하는 모델링

이 프로그램은 성에 대한 관심과 욕구가 강한 청소년들이 직면하기 쉬운 성적 갈등상 황에 처해 있을 때 자신이 어떻게 행동할 것인지를 가치명료화 과정을 통하여 알아내고

이 프로그램은 라이트 형제가 최초로 비행에 성공할 당시의 상황을 사 실적으로 서술하기 위해 1차 정보를 이용하여 상황을 파악하고 2차 정보 와 비교하여

단계 1에서 구한 실행 가능한 경제적 주문량에서의 연간 총비용 과 이 실행 가능한 경제적 주문량보다 더 큰 모든 가격차별점에 서의 연간 총비용을 비교하여 연간

IMPORT 프로시저와 데이터 가져오기 마법사를 각각 이용하여 저장한 엑셀 파일을 SAS