Microsoft PowerPoint - Lesson6.pptx

Similar documents
Microsoft PowerPoint - chap-07.pptx

untitled

ch08

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ch03 - 조건문과 반복문 pm0215

PowerPoint 프레젠테이션

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

C 언어 프로그래밊 과제 풀이

Infinity(∞) Strategy

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap-06.pptx

쉽게 풀어쓴 C 프로그래밍

untitled

중간고사

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Chapter8.pptx

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윈도우즈프로그래밍(1)

Chapter_06

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

untitled

Microsoft PowerPoint - chap06-1Array.ppt

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4


C 언어와 프로그래밍 개요

OCW_C언어 기초

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-03.pptx

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint 프레젠테이션

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - chap04-연산자.pptx

PowerPoint Presentation

Microsoft PowerPoint - gnu-w10-c-chap11

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Visual Basic 반복문

1.1.1 컴퓨터의 구성 p.19

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

슬라이드 1

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

歯9장.PDF

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

OCW_C언어 기초

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

본 강의에 들어가기 전

금오공대 컴퓨터공학전공 강의자료

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 5장 조건문 pptx

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - [2009] 02.pptx

Java ...

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 7장 배열 pptx

PowerPoint 프레젠테이션

C 프로그래밊 개요

Microsoft PowerPoint - Chapter_05.pptx

untitled

PowerPoint 프레젠테이션

C 프로그래밊 개요

Microsoft PowerPoint - chap-11.pptx

슬라이드 1

슬라이드 1

Chapter 4. LISTS

11장 포인터

프로그래밍 및 연습 1

슬라이드 1

ch15

슬라이드 1

C프로-3장c03逞풚

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson13.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap-05.pptx

untitled

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

슬라이드 1

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - 2장 변수와 자료형 pptx

쉽게 풀어쓴 C 프로그래밍

Transcription:

Computer Engineering g Programming g 2 제 7 장반복문 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

이번장에서학습할내용 반복의개념이해 while 반복문 do-while 반복문 for 반복문 break와 continue문 반복구조는일련의처리를반복할수있게한다. 반복의개념을먼저이해하고 C에서제공되는 3가지의반복구조에대하여학습한다. 2

Q) 반복구조는왜필요한가? 반복문 A) 같은처리과정을되풀이하는것이필요하기때문이다. 학생 30 명의평균성적을구하려면같은과정을 30 번반복하여야한다. 3

프로그램의흐름을제어하는방법 순차구조 차례대로실행 선택구조 조건을검사하여여러개의실행경로중에서하나를선택 반복구조 조건이만족될때까지반복 4

마일을미터로바꾸는프로그램 #include <stdio.h> int main(void) int meter; meter = 0 * 1609; printf("0 마일은 %d미터입니다\n", meter); 같은처리과정 #1 meter = 1 * 1609; printf("1 마일은 %d미터입니다\n", meter); 같은처리과정 #2 meter = 2 * 1609; printf("2 마일은 %d미터입니다\n", meter); return 0; 같은처리과정 #3 5

반복문의종류 6

while 문 주어진조건이만족되는동안문장들을반복실행한다. while( 조건식 ) 문장 ; 7

#include <stdio.h> 예제 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d 마일은 %d 미터입니다 \n", i, meter); i++; return 0; 0 마일은 0 미터입니다 1 마일은 1609 미터입니다 2 마일은 3218 미터입니다 8

반복문의실행과정 9

반복문의실행과정 10

반복문의실행과정 반복횟수 i 의값 i< 3 반복여부 첫번째반복 ( 시작위치 ) 0 참 (1) 반복 두번째반복 ( 시작위치 ) 1 참 (1) 반복 세번째반복 ( 시작위치 ) 2 참 (1) 반복 네번째반복 ( 시작위치 ) 3 거짓 (0) 중지 11

예제 // while 문을이용한구구단출력프로그램 #include <stdio.h> int main(void) int n; int i = 1; printf(" 구구단중에서출력하고싶은단을입력하시오 : "); scanf("%d", &n); while (i <= 9) printf("%d*%d = %d \n", n, i, n*i); i++; 구구단중에서출력하고싶은단을입력하시오 : 9 return 0; 9*1 = 9 9*2 92 = 18 9*3 = 27... Konkuk 9*9 University = 81 12

예제 // while 문을이용한제곱값출력프로그램 #include <stdio.h> int main(void) int n; printf("====================\n"); printf(" n n 의제곱 \n"); printf("====================\n"); n = 1; while (n <= 10) printf("%5d n++; return 0; %5d\n", n, n*n); =================== n n의제곱 =================== 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 13

예제 1 부터 n 까지의합을계산하는프로그램 1 + 2 + 3 +... + n n 이무엇이될지모르는경우라면다음과같이계산 1 빈통을준비한다. 2 통에 1 부터 n 까지를넣는다. 3 통에들어있는동전의개수를출력한다.... 14

예제 #include <stdio.h> int main(void) int i, n, sum; // 변수선언 정수를입력하시오 : 3 1 부터 3 까지의합은 6 입니다 printf(" 정수를입력하시오 :"); scanf("%d", &n); // 입력안내메시지출력 // 정수값입력 i= 1; // 변수초기화 sum = 0; while(i <= n) sum += i; // sum = sum + i; 와같다. i++; // i = i + 1과같다. printf("1부터 %d까지의합은 %d입니다\n", n, sum); return 0; 15

예제 // while 문을이용한합계프로그램 #include <stdio.h> int main(void) int i, n, sum; i = 0; // 변수초기화 sum = 0; // 변수초기화 while (i < 5) printf(" 값을입력하시오 : "); scanf("%d", &n); sum = sum + n; // sum += n; 과같다. i++; printf(" 합계는 %d입니다.\n", sum); 값을입력하시오 : 10 값을입력하시오 : 20 값을입력하시오 : 30 값을입력하시오 : 40 값을입력하시오 : 50 합계는 150입니다. return 0; 16

센티널 ( 보초값의이용 ) 센티널 : 입력되는데이터의끝을알리는특수한값 100, 200, 300, 400, 500, -1 센티널 17

성적들의평균을구하는문제 성적의평균을구한다. 1. 필요한변수들을초기화한다. 2. 성적을입력받아서합계를구하고성적의개수를센다. 3. 평균을계산하고화면에출력한다. 1. 필요한변수들을초기화한다. (1) sum을 0으로초기화한다. (2) n을 0으로초기화한다. (3) grade를 0으로초기화한다. 18

성적들의평균을구하는문제 2. 성적을입력받아서합계를구하고성적의개수를센다. while 성적이 0보다작지않으면 (1) 사용자로부터성적을읽어서 grade 에저장한다. (2) sum에이점수를누적한다. (3) n을하나증가한다. 3. 평균을계산하고화면에출력한다. (1) sum을 n으로나누어서 average 에저장한다. (2) average를화면에출력한다. 19

센티넬예제 1/2 // while 문을이용한성적의평균구하기프로그램 #include <stdio.h> int main(void) int grade, n; float sum, average; // 필요한변수들을초기화한다. n = 0; sum = 0; grade = 0; printf(" 성적입력을종료하려면음수를입력하시오 \n"); 20

센티넬예제 2/2 // 성적을입력받아서합계를구하고학생수를센다. while (grade >= 0) printf(" 성적을입력하시오 : "); 오 scanf("%d", &grade); sum += grade; n++; sum = sum - grade; // 마지막데이터를제거한다. n--; // 마지막데이터를제거한다. // 평균을계산하고화면에출력한다. average = sum / n; printf(" 성적의평균은 %f입니다.\n", average); 성적입력을종료하려면음수를입력하시 성적을입력하시오 : 10 성적을입력하시오 : 20 성적을입력하시오 : 30 성적을입력하시오 : 40 성적을입력하시오 : 50 성적을입력하시오 : -1 성적의평균은 30.000000 입니다. return 0; 21

예제 두수의최대공약수구하기 유클리드알고리즘 1 두수가운데큰수를 x, 작은수를 y라한다. 2 y가 0이면공약수는 x와같다. 3 r x % y 4 x y 5 y r 6 단계 2 로되돌아간다. 22

예제 // while 문을이용한최대공약수구하기프로그램 #include <stdio.h> int main(void) 두개의정수를입력하시오 ( 큰수, 작은수 ): 12 8 int x, y, r; 최대공약수는 4입니다. printf(" 두개의정수를입력하시오 ( 큰수, 작은수 ): "); scanf("%d%d", &x, &y); while (y!= 0) r = x % y; x = y; y = r; printf(" 최대공약수는 %d 입니다.\n", x); return 0; 23

if 문과 while 문의비교 if 문은 while 문으로변경할수있다. while 문도 if문으로변경할수있다. if( 조건 )...... 조건이만족되면한번만실행된다. while( 조건 )...... 조건이만족되면여러번반복실행된다. 24

while 문에서주의할점 int i = 1; while(i < 10) printf(" 반복중입니다 \n"): i--; int i = 0; while(i < 3) printf(" 반복중입니다 \n"): i++;. 변수가증가아니라감소반복루프에포함되어있지않다. int i = 0; while(i < 3) ; printf(" 반복중입니다 \n"): i++;. 조건뒤에 ; 이있음 25

do...while 문 반복조건을루프의끝에서검사 do 문장 while( 조건 ) 1 문장들이실행된다. 2 조건식이계산된다. 3 결과가참이면 1로돌아간다. 4 결과가거짓이면종료된다. 26

// do..while 문을이용한메뉴 #include <stdio.h> 예제 1---새로만들기 2---파일열기 3---파일닫기 int main(void) 하나를선택하시요. int i = 0; 1 do 선택된메뉴 =1 printf("1---새로만들기 \n"); printf("2---파일열기 \n"); printf("3--- 파일닫기 \n"); printf(" 하나를선택하시요.\n"); scanf("%d", &i); while(i < 1 i > 3); printf(" 선택된메뉴 =%d\n",i); return 0; 27

// 반복을이용한글자게임프로그램 #include <stdio.h> int main(void) char answer = 'm' char guess; int tries = 0; do 글자게임예제 printf(" 정답을추측하여보시오 : "); scanf(" %c", &guess); tries++; 정답을추측하여보시오 : a 제시한문자의아스키코드값이낮습니다. 정답을추측하여보시오 : s 제시한문자의아스키코드값이높습니다. 정답을추측하여보시오 : b 제시한문자의아스키코드값이낮습니다. 정답을추측하여보시오 : z 제시한문자의아스키코드값이높습니다. 정답을추측하여보시오 : m 축하합니다. 시도횟수 =5 if( guess > answer ) printf(" 제시한문자의아스키코드값이높습니다.\n"); if( (g guess < answer ) printf(" 제시한문자의아스키코드값이낮습니다.\n"); while(guess!= answer); printf(" 축하합니다. 시도횟수 =%d \n", tries); return 0; 28

for 루프 정해진횟수만큼반복하는구조 29

for 문의구조 for ( 초기화 ; 조건식 ; 증감식 ) 문장 ; 1 초기화를실행한다. 2 반복조건을나타내는조건식을계산한다. 3 수식의값이거짓이면 for 문의실행이종료된다. 4 수식의값이참이면문장이실행된다. 5 증감을실행하고 2로돌아간다. 30

for 문의구조 int i; for(i = 0; i < 10; i++) printf("hello World!\n"); 31

for 문의실행과정 32

for 문의실행과정 int i; for(i = 0; i < 10; i++) printf("hello World!\n"); 반복횟수 i의값 i<10 반복여부 1 번째반복 0 참 반복 2 번째반복 1 참반복 3 번째반복 2 참반복 4 번째반복 3 참반복 5 번째반복 4 참반복 6 번째반복 5 참반복 7 번째반복 6 참반복 8 번째반복 7 참반복 9 번째반복 8 참반복 10 번째반복 9 참반복 11번째반복 10 거짓중지 33

예제 // 반복을이용한정수합프로그램 #include <stdio.h> int main(void) int i, sum; sum = 0; for(i = 1;i <= 10; i++) sum += i; // sum = sum + i; 와같음 printf("1 부터 10 까지의정수의합 = %d\n",sum); return 0; 1 부터 10 까지의정수의합 =55 34

예제 // 반복을이용한세제곱값구하기 #include <stdio.h> int main(void) int i, n; printf(" 정수를입력하시요 :"); scanf("%d", &n); 정수를입력하시요 :5 ==================== i i의세제곱 ==================== 1 1 2 8 3 27 4 64 5 125 printf("====================\n"); printf(" i i의세제곱 \n"); printf("====================\n"); for(i = 1;i <= n; i++) printf("%5d %5d\n", i, i*i*i); return 0; 35

예제 // 반복을이용한팩토리얼구하기 #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 10! 은 3628800입니다. 36

while 루프와 for 루프와의관계 37

다양한증감수식의형태 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"); for ( ; i<100; i++ ) printf("hello World!\n"); for (i = 0, k = 0; i < 100; i++ ) printf("hello World!\n"); for (printf(" 반복시작 ), i = 0; i < 100; i++ ) printf("hello World!\n"); 2 씩증가 2를곱한다. 어떤수식이라도가능한부분이없을수도있다. 2개이상의변수초기화어떤수식도가능 38

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

예제 // 중첩 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; ********** ********** ********** ********** ********** 40

예제 #include <stdio.h> int main(void) int s, t; float score, total, average; for(s = 0;s < 20; s++) total = 0; for(t = 0;t < 5; t++) printf("%d 번학생에대한 % 번째성적 : "); scanf("%f", &score); total += score; average = total / 5.0; printf("%d번학생의성적평균 : %f\n", average); return 0; 41

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

예제 // break를이용하여무한루프를탈출한다. #include <stdio.h> #include <math.h> int main(void) id) double v; while(1) printf(" 실수값을입력하시오 : "); scanf("%lf", &v); if( v < 0.0 ) break; printf("%f의제곱근은 %f입니다.\n", v, sqrt(v)); 실수값을입력하시오 : 9.0 9.000000의제곱근은 3.000000입니다. 실수값을입력하시오 :120 12.0 12.000000의제곱근은 3.464102입니다. 실수값을입력하시오 : 25.0 25.000000의제곱근은 5.000000입니다. 실수값을입력하시오 : -1 return 0; 43

예제 // break 를이용하여무한루프를탈출한다. #include <stdio.h> int main(void) float grade, sum = 0.0, average; int count = 0; 학생성적을입력하시오 : 90 학생성적을입력하시오 : 90 학생성적을입력하시오 : 80 학생성적을입력하시오 : 70 학생성적을입력하시오 : -1 학생들의성적의평균은 82.500000입니다. while(1) printf(" 학생성적을입력하시오 : "); scanf("%f", &grade); if( grade < 0.00 ) break; count++; sum += grade; average = sum / count; printf(" 학생들의성적의평균은 %f입니다.\n", average); return 0; 44

goto 문의사용 #include <stdio.h> int main(void) int x, y; for(y = 1; y < 10000; y++) for(x = 1; x < 50; x++) if( _kbhit() ) goto OUT; printf("*"); printf("\n"); OUT: return 0; 45

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

예제 sum = 245 47

예제 // 소문자를대문자로변경한다. #include <stdio.h> int main(void) char letter; while(1) printf(" 소문자를입력하시오 : "); scanf(" %c", &letter); 소문자를입력하시오 : a 변환된대문자는 A입니다. 소문자를입력하시오 : b 변환된대문자는 B입니다. 소문자를입력하시오 : c 변환된대문자는 C입니다. 소문자를입력하시오 : Q if( letter == 'Q' ) break ; if( letter < 'a' letter > 'z' ) continue ; letter -= 32; printf(" 변환된대문자는 %c 입니다.\n", letter); return 0; 48

예제 // 복리이자계산 #include <stdio.h> #define RATE 0.07 // 이율 #define INVESTMENT 10000000 // 초기투자금 #define YEARS 10 // 투자기간 int main(void) int i; double total = INVESTMENT; // 원리금합계 printf("==============\n"); printf(" 연도원리금 \n"); printf("==============\n"); ============== 연도원리금 ============== 1 10700000.0 2 11449000.0 3 12250430.0 4 13107960.1 5 14025517.3 6 15007303.5 7 16057814.8 8 17181861.8 9 18384592.1 10 19671513.6 for(i = 1; i <= YEARS; i++) total = total * ( 1 + RATE ); // 새로운원리금계산 printf("%2d %10.1f\n", i, total); return 0; 49

예제 #include <stdio.h> #define START_DAY 3 // 첫번째날이수요일 #define DAYS_OF_MONTH 31 // 달의일수 int main(void) id) int day, date; printf("=====================\n"); printf(" 일월화수목금토 \n"); printf("=====================\n"); for(day = 0; day < START_DAY ; day++) // 월요일부터수요일까지 printf(" "); // 공백출력 for(date = 1; date <= DAYS_OF_MONTH ; date++) if( day == 7 ) day = 0; // 일요일이면줄바꿈을출력 printf("\n"); day++; printf("%2d ", date); // 날을출력한다. printf("\n=====================\n"); return 0; 50

Q&A 51