1.1.1 컴퓨터의 구성 p.19

Similar documents
1.1.1 컴퓨터의 구성 p.19

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

Microsoft PowerPoint - chap05-제어문.pptx

Infinity(∞) Strategy

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-06.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

untitled

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

OCW_C언어 기초

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

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

중간고사

Microsoft PowerPoint - chap04-연산자.pptx

untitled

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

Chapter_06

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

Microsoft PowerPoint - 5장 조건문 pptx

Java ...

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

슬라이드 1

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

Microsoft PowerPoint - chap-07.pptx

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

Microsoft PowerPoint - Java7.pptx

C 언어와 프로그래밍 개요

Microsoft PowerPoint - Lesson6.pptx

C프로-3장c03逞풚

: 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

K&R2 Reference Manual 번역본

4장.문장

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

Visual Basic 반복문

Microsoft PowerPoint - gnu-w10-c-chap11

ch08

untitled



Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - lec3.ppt

03장.스택.key

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

본 강의에 들어가기 전

Microsoft PowerPoint - 7장 배열 pptx

프로그래밍 및 연습 1

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

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


Microsoft PowerPoint - chap06-1Array.ppt

RYWKVGWKJOFY.hwp

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - chap-03.pptx

슬라이드 1

PowerPoint Presentation

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - chap12-고급기능.pptx

歯9장.PDF

PowerPoint 프레젠테이션

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

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - [2009] 02.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

슬라이드 1

Microsoft PowerPoint - chap08-1 [호환 모드]

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

슬라이드 1

(원본)모리스디자인_사용설명서 수정 - 복사본 copy

Microsoft PowerPoint - Lesson2.pptx

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

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

OCW_C언어 기초

Microsoft PowerPoint - chap06-2pointer.ppt

컴파일러

1.1.1 컴퓨터의 구성 p.19

C 프로그램의 기본

PowerPoint 프레젠테이션

Microsoft PowerPoint - gnu-w10-c-chap12

Microsoft PowerPoint - Chapter_02.pptx

06 세상을 변화시키는 연산자

슬라이드 1

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-11.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap-05.pptx

5.스택(강의자료).key

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Transcription:

교육용프로그래밍언어 C 언어 제어문 ( 조건문, 반복문 ) 강사 : 김희진 1

Contents 프로그램의실행흐름을제어하는제어문을살펴본다. 조건문의종류, 특성, 기능에대해살펴본다.. if 문, switch 문 반복문의종류, 특성, 기능에대해살펴본다.. for 문, while 문, do~while 문 기타제어문에대해살펴본다. break 문, continue 문, goto 문

5.0 개요 실행흐름의제어가필요한경우 조건에따라실행할문장이달라질때 ( 예 ) 성적이 70 점이상이면 합격 을, 70 점미만이면 불합격 을출력하는문제 특정내용을반복실행하고자할때 ( 예 ) 학생 1,000 명에대해다섯과목의평균과순위를구하는문제 제어문의종류 조건문 : if 문 반복문 : for 문, while 문 기타제어문 : break 문, continue 문, goto 문 3

제어문의필요성 입력된정수의짝수 / 홀수여부출력하기 두가지경우를모두처리하려면 if문으로해결할수있다. 짝수라면! printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 입력한수 %d 는 ( 은 ) ", num); printf(" 짝수입니다.\n"); return 0; 홀수라면! printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 입력한수 %d 는 ( 은 ) ", num); if (num % 2 == 0) printf(" 짝수입니다.\n"); else printf( 홀수입니다.\n"); return 0; printf(" 입력한수 %d 는 ( 은 ) ", num); printf(" 홀수입니다.\n"); return 0; 4

5.1.1 if 문 단순 if 문 주어진조건을만족할경우에만처리할내용이있을때사용 예 ) 성적이 90점이상일때만 우수 출력하기 점수가평균보다작을때만평균미만자의수를 1 증가시키기 자격증이있을때만가산점주기 5

단순 if 문 단순 if 문형식 if ( 조건식 ) 다음문장 ; 종속문장 1; if ( 조건식 ) { 종속문장 1; 종속문장 2; 종속문장 n; } 복합문 (compound statement) - {} 로묶은여러문장 - 초기엔한문장일때도 {} 를쓰는것을권장 다음문장 ; 6

단순 if 문 예 score 가 70 이상일때만통과자수 pass 를 1 증가시키기 if (score >= 70) pass++; score가 70 이상이면통과자수 pass를 1 증가시키고 sum에점수 score를누적하기 if (score >=70) { pass++; sum = sum + score; } 7

단순 if 문 예 점수 score 가 90 이상일때만점수출력전에 ' 우수!' 출력하기 scanf( %d, &score); if (score >= 90) printf(" 우수!\n"); printf( 점수 : %d \n", score); 정수 n 이홀수일때만홀수임을출력하기 수치를논리값으로취급하기 if (n % 2) // if (n%2!= 0), if (n%2 == 1) printf("%d 는홀수입니다.\n", n); x 값이 5 와 10 사이인지 if ((5 <= x) && (x <= 10)) printf("5 와 10 사이의수입니다.\n"); 8

단순 if 문 if~else 문 조건의참과거짓에따라둘중하나를선택해처리할때사용 if ( 조건식 ) 종속문장 1; else 종속문장 2; 다음문장 ; 예 ) 70 이상이면 ' 합격!', 아니면 ' 불합격!' 출력하기 if (score >= 70) printf(" 합격!\n"); else printf(" 불합격!\n"); 10

if~else 문 [ 프로그램 5-3] 입력받은정수의홀수 / 짝수여부출력 사용자가입력한값에따라이자리가 홀수입니다. 또는 짝수입니다. 둘중하나가되게 사용자가입력한값에따라이자리가 홀수입니다. 또는 짝수입니다. 둘중하나가되게 10 printf(" 입력한수 %d 는 ( 은 ) ", num); 11 12 if (num % 2 == 0) 13 printf(" 짝수입니다.\n"); 14 else 15 printf(" 홀수입니다.\n"); 16 17 return 0; 18 11

if~else 문 p. 163 주의 쓸데없이 ; 을붙이지않아야한다. if (age >= 20) ; adult++; else ; child++; 바로뒤에 ; 을붙이면컴파일러는조건식이참일때처리할내용이없는빈문장인 ; 으로해석함 else 없는 if 문이끝난것으로해석되어뒤의 else 가나타나에러가됨 else 뒤에조건식을단독으로사용불가 if (age >= 20) adult++; else (age < 20) child++; if (age < 20) 는가능하나여기서는굳이 if 가새로필요하지않음 12

5.1.1 중첩된 if 문 중첩된 if 문 if문안에또다른 if문을사용 여러선택사항중한가지를골라처리할때사용 [ 프로그램 5-3] 입력된정수 num에대해 양의짝수, 양의홀수, 음의짝수, 음의홀수중해당사항을출력하기 팁 ) 복잡한조건을양자택일이되는조건으로나누어 if를중첩하면코딩하기가편함 바깥 if문 양수 음수 짝수홀수짝수홀수 if 문 if 문 13

5-3 입력받은정수가짝수인지홀수인지출력하기 7 printf(" 정수를입력하시오 : "); 8 scanf("%d", &num); 9 10 printf(" 입력한수 %d는( 은 ) ", num); 11 12 if (num >= 0) // num이양수면 13 { 14 if (num % 2 == 0) 15 printf(" 양의짝수입니다.\n"); 16 else 17 printf(" 양의홀수입니다.\n"); 18 } 19 else // num이음수면 20 { 21 if (num % 2 == 0) 22 printf(" 음의짝수입니다.\n"); 23 else 24 printf(" 음의홀수입니다.\n"); 25 } 26 27 return 0; 14

5.1.1 중첩된 if 문 n 개조건에따라처리할내용이 n 가지있을때 15

5.1.1 중첩된 if 문 주의 if 와 else 의매칭 5 행의 else 는어느 if 와짝일까? 1 scanf("%d", &x); 2 if (x > 0) 3 if (x % 2 == 0) 4 printf(" 양의짝수입니다.\n"); 5 else 6 printf(" 음수입니다.\n"); else 와 if 짝을명확히하기위해 { } 를사용하기 1 scanf("%d", &x); 2 if (x > 0) 3 { 4 if (x % 2 == 0) 5 printf(" 양의짝수입니다.\n"); 6 } 7 else 8 printf(" 음수입니다.\n"); 16

프로그램 5-4 입력받은점수의학점출력하기 17

5.2.1 if~else 문을이용한간단한성적처리프로그램 문제 입력 국어, 음악, 미술점수 출력 평균 평균이 70점이상이면 통과, 70점미만이면 탈락 출력해결과정 1. 점수를 kor, music, art에입력받기 2. 세점수를합한후 3으로나누어 avg에평균을구하기 3. 학생의점수세개와평균을출력하기 4. if~else문을이용 avg가 70점이상인지아닌지에따라 통과 또는 탈락 출력하기 18

5-5 세과목의평균을구한후합격여부를출력하기 5 int kor, music, art; 6 double avg; 7 8 printf(" 국어음악미술점수는?"); 9 scanf("%d %d %d", &kor, &music, &art); 10 11 avg = (double)(kor + music + art)/3; 12 13 printf("===================================== \n"); 14 printf("\n \n국어 \t음악 \t미술 \t평균 \t결과\n"); 15 printf("------------------------------------- \n"); 16 printf("%3d \t%3d \t%3d \t%6.1lf ", kor, music, art, avg); 17 if (avg >= 70) 18 printf("\t통과 \n"); 19 else 20 printf("\t탈락 \n"); 21 printf("===================================== \n"); 19

5.2.2 중첩 if 문을이용한간단한산술계산기 문제 입력 : 수식 3 * 25 출력 : 입력된수식계산결과값 분석 int 형피연산자두개, char 형연산자한개입력 연산자종류 8가지 (+, -, *, /, %, &,, ^) 로한정 그외의연산자는잘못된입력으로간주하여안내문출력 8가지계산방법중하나를선택해야함 중첩된 if문사용 20

5-6 if~else 문을이용한산술계산기 6 int x, y, result; 7 char op; // 연산자저장할변수 8 9 printf(" 수식을입력하시오.\n"); 10 printf(" 연산자의종류 : + - * / %% & ^\n"); 11 printf(" 입력예 : 2 + 3\n\n입력 >> "); 12 scanf("%d %c %d", &x, &op, &y); 13 14 if (op == '+') 16 result = x + y; 17 else if (op == '-') 18 result = x - y; 19 : 29 else if (op == '^') 30 result = x ^ y; 31 else 32 { 33 printf(" 잘못된연산자입니다.\n"); 34 exit(0); // 프로그램실행종료 35 } 36 37 printf("\n결과 >> %d %c %d = %d\n", x, op, y, result); % 앞뒤로빈칸필요 [ 참고 ] 프로그램 5-8: [ 프로그램 5-6] 을 switch문으로수정한것 21

5.3 반복문 (for 문 ) 반복문 : 루프 (loop) 동일한내용을특정횟수만큼반복처리할때사용 데이터하나를처리하는코드가 10 행일때데이터 1,000 개를 1,000*10 행의코드로처리하는경우 프로그램길이도문제지만프로그램을수정하는것도문제 반복문사용시 일정코드를지정한횟수만큼자동으로반복실행가능 반복횟수에상관없이일정한길이의코드 프로그램길이단축 단순하고명확한코드 유지관리용이 22

5.3.1 반복문의필요성 다음처럼비슷한내용이반복될때반복횟수가매우커진다면? printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("1 번 \n"); printf("2 번 \n"); printf("3 번 \n"); printf("4 번 \n"); printf("5 번 \n"); sum = 1 + 2 + 3 + 4 + 5; printf("1~5 의합은 %d \n", sum); 23

5.3.2 for 문형식 for 문형식 for ( 초기식 ; 조건식 ; 증감식 ) 다음문장 ; 반복할문장 ; for ( 초기식 ; 조건식 ; 증감식 ) { 여러문장 ; } 다음문장 ; 24

5.3.2 for 문형식 for 문실행과정 for (i=1; i<=5; i++ ) printf( 1 번 \n ); 표 5-1 for 문실행과정 i 값 i<=5 반복할문장 ----------------------------------------------------------------- 1 참 printf("1 번 \n"); 2 참 printf("1 번 \n"); 3 참 printf("1 번 \n"); 4 참 printf("1 번 \n"); 5 참 printf("1 번 \n"); 6 거짓 for 문을끝냄 for (i=1; i<=5; i++) i 를 1 부터 5 까지 1 씩증가시키며반복 하기로해석하면헤더를작성하고이해하기편함 25

5.3.2 for 문형식 1 번 에서 5 번 까지차례대로출력하기 팁 ) 반복내용중고정이아니라변하는것은 for 문의제어변수를활용하자!!! 1 for (i=1; i<=5; i++) 2 printf("%d 번 \n", i); ); 제어변수를활용 26

5.3.2 for 문형식 1 에서 5 까지의합구하기 : 방법 1 1 sum = 0; 2 sum += 1; 3 sum += 2; 4 sum += 3; 5 sum += 4; 6 sum += 5; 7 8 printf(" 결과 : %d", sum); 1 sum = 0 ; 2 for (i=1; i<=5; i++) 3 sum += i; 4 5 printf(" 결과 : %d", sum); 반복동안변하는값은제어변수를활용 27

5.3.2 for 문형식 p.182 주의 1 for (i=1; i<=5; i++) ; 2 printf("c Language \n"); for (i=1, i<=5, i++) 28

5.3.2 for 문형식 다양한 for문의헤더 p.184 // 1에서 100까지의합구하기 for (sum=0, i=1; i<=100; i++) sum += i; // 1 과 100 사이에있는 3 의배수합구하기 for (sum=0, i=0; i<=100; i+=3) sum += i; // 100 에서 1 까지거꾸로출력하기 for (i=100; i>=1; i--) printf("%3d \n", i); 주의 초기식, 조건식, 증감식은모두생략가능하나 ; 은생략불가능 for ( ; ; ) 29

5.3.2 for 문형식 다양한 for 문의헤더 : 무한루프 조건식생략시무조건본체실행 무한반복이되는무한루프가됨 무한루프는일반적으로본체안에서 for 문을탈출하는방법이포함된다. break 를많이사용 Q) 조건식을사용하도록수정한다면? 30

5.3.3 중첩된 for 문 중첩된 for 문 for 문안에또다른 for 문이포함된것 1 2 3 1 2 3 for (j=1; j<=3; j++) printf( %d \n, j); for (j=1; j<=3; j++) printf( %d \n, j); for (i=1; i<=2; i++) for (j=1; j<=3; j++) printf( %d \n, j); 31

5.3.3 중첩된 for 문 이중중첩 for문예 1 for (i=1; i<=2; i++) 2 { 3 printf("i=%d일때 : ", i); 4 5 for (j=1; j<=3; j++) 6 printf("j=%d ", j); 7 8 printf("\n"); 9 } 10 32

중첩된 for 문에서제어변수의활용 [ 프로그램 5-10] ***** 를 5 행출력하는중첩 for 문 5 int line, star; 6 7 for (line=1; line<=5; line++) 8 { 9 for (star=1; star<=5; star++) 10 printf("*"); 11 printf("\n"); // 행바꾸기 12 } 33

중첩된 for 문에서제어변수의활용 [ 프로그램 5-11] 중첩 for 문과제어변수를활용해 n 행에 * 을 n 개출력하기 5 int line, star; 6 바깥 for문의제어변수활용 7 for (line=1; line<=5; line++) 8 { 9 for (star=1; star<= line ; star++) 10 printf("*"); 11 printf("\n"); // 행바꾸기 12 } 34

5.4.7 중첩된 for 문을이용해알파벳출력하기 [ 프로그램 5-19] 알파벳출력하기 (ch5-19.cpp) 5 char start, ch; 6 7 for (start='z'; start>='a'; start--) 8 { 9 // 행시작부분의연속된빈칸출력 10 for (ch='a'; ch<start; ch++) 11 printf(" "); 12 13 // 빈칸뒤에 start 부터 'z' 까지출력 14 for (ch=start; ch<='z'; ch++) 15 printf("%c", ch); 16 17 printf("\n"); 18 } 실행결과 z yz xyz wxyz vwxyz uvwxyz tuvwxyz : bcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxy z 35

5.5 반복문 (while 문 ) 5.5.1 while 문 반복횟수는모르지만어떤조건을만족하는동안은계속반복할때유용 예 ) 음수가입력된다면계속입력받기 합이 1000을넘지않는한계속더하기 게임을계속하고싶어하는한다시게임하기 올바른비밀번호를찾을때까지계속입력하고찾기 36

5.5.1 while 문 while 문형식 while ( 조건식 ) 다음문장 ; 반복할문장 ; while ( 조건식 ) { 반복할여러문장 ; } 다음문장 ; 37

5.5.1 while 문 예 ) 1~n 의합이처음으로 100 을넘게되는 n 구하기 2 sum = 0, i = 0; 3 while (sum <= 100) 4 { 5 i++; 6 sum = sum + i; 7 } 8 printf("1~%d까지의합 : %d \n", i, sum); 38

5.5.1 while 문 while 문과 for 문의비교 문제에따라 for 문과 while 문을선택해서사용 반복횟수를정확히알때는 for 문이편리 39

5.5.1 while 문 while 문과무한루프 1 // 1~n의합이처음으로 100을넘게되는 n 구하기 2 sum = 0, i = 1; 3 4 while (1) 5 { 6 sum = sum + i; 7 if (sum > 100) 무한루프의탈출 8 break; 9 i++; 10 } 11 printf("1~%d까지의합 : %d \n", i, sum); 40

5.5.1 while 문 while 문과무한루프 // 사용자가양수를입력할때까지입력받기 while (1) { printf(" 양수를입력하세요."); scanf("%d", &n); 무한루프의탈출 if (n > 0) break; } 41

5.6 기타제어문 ` 5.6.1 break 문 switch 문, for 문, while 문, do~while 문을실행하는중간에완전히탈출할때 사용 무한루프를벗어날때매우유용 42

5.6.1 break 문 주의 중첩된루프인경우안쪽루프에서 break문을사용하면 break문이속한안쪽루프만빠져나온다. 그러므로맨안쪽루프에서가장바깥루프까지빠져나오려면 break문이루프개수만큼필요하다. 43

5.6.1 break 문 주의 break문은반복문과 switch문에만해당 if문탈출에사용불가 do { 1~9 행의 if 문이아닌 do_while 을벗어남 } while(reply = Y ); 44