6장 명령문
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 6장 명령문(statement) 6.1 명령문 6.2 주석문 6.3 조건문(Conditional Statement) 6.4 반복문(Loop Statement) 6.5 분기문
명령문 명령문: 문장(sentence): 한가지 처리를 하는 하나의 명령어(command)이다 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 명령문 명령문: 한가지 처리를 하는 하나의 명령어(command)이다 문장(sentence): 명령문으로 취급되며 세미콜론으로 끝난다 ,
주석문 (comment) 프로그램내에 설명이 필요한 경우 사용 비실행문으로 컴파일시 무시 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 주석문 (comment) 프로그램내에 설명이 필요한 경우 사용 비실행문으로 컴파일시 무시 /*로 시작하고 */로 끝나면 중첩될수 없음 one-line 주석으로 //를 사용 프로그램 판독성을 좋게 함 /* /* 파일명: Hello.c */ 만든이: 홍길동 프로그램 내용: Hello C world */ 오류 발생 /* // 파일명: Hello.c 만든이: 홍길동 프로그램 내용: Hello C world */ 정상
조건문 조건문의 종류 if문 switch문 조건문 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문 조건문 조건(식)을 평가해서 참(true) 혹은 거짓(false)에 따라 다른 계산 또는 처리를 수행하는 명령문 true는 1, false는 0 0 이외의 모든 값은 참 음수는??? 조건문의 종류 if문 switch문
조건문(If문) 형식 1: 조건식을 이용하여 선택적으로 문장을 수행하는 명령문 ① 수행할 문장이 한 개인 경우 중괄호 생략 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문) 조건식을 이용하여 선택적으로 문장을 수행하는 명령문 형식 1: ① 수행할 문장이 한 개인 경우 중괄호 생략 if (조건식) 문장; if (조건식) 문장; … 문장 조건식이 참이면 문장을 수행해라!
조건문(If문) ② 수행할 문장이 여러 개인 경우 중괄호로 묶음 if (조건식) { 문장1; 문장2; 문장3; } 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문) ② 수행할 문장이 여러 개인 경우 중괄호로 묶음 if (조건식) { 문장1; 문장2; 문장3; } 문장1, 문장2, 문장3 조건식이 참이면 문장1, 문장 2, 문장 3을 수행해라!
조건문(If문)- 예 #include <stdio.h> int main(void) { int num; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문)- 예 #include <stdio.h> int main(void) { int num; printf("숫자를 입력하세요 : "); scanf("%d", &num); if(num>=0) printf("양수입니다.\n"); if(num<0) printf("음수입니다.\n"); return 0; }
조건문(If ~else문) 형식 2: if (조건식) 문장1; else 문장2; 조건이 ‘참’인 경우 ‘문장1’을 수행 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If ~else문) 형식 2: if (조건식) 문장1; else 문장2; 조건이 ‘참’인 경우 ‘문장1’을 수행 if(조건) { 문장1; }else 문장2; } 조건이 참이 아닌 경우 ‘문장2’를 수행
조건문(If ~else문) –예제(p134) #include <stdio.h> int main(void) { 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If ~else문) –예제(p134) #include <stdio.h> int main(void) { int data; printf("\n 정수를 입력하시오 : "); scanf("%d", &data); printf("\n 입력된 수 = %d\n", data); if(data<=5) printf("\n %d는 5보다 작거나 같다", data); else printf("\n %d는 5보다 크다", data); return 0; }
조건문(중첩 If ~else문) 형식 3: if (조건식1) 문장1; else if (조건식2) 문장2; ….. 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(중첩 If ~else문) 형식 3: if (조건식1) 문장1; else if (조건식2) 문장2; ….. else 문장n;
조건문(중첩 If ~else문)- 예제(p134) 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(중첩 If ~else문)- 예제(p134) #include <stdio.h> int main( ) { int x, y, sum; printf("\n첫번째 정수 : "); scanf("%d", &x); printf("\n두번째 정수 : "); scanf("%d", &y); sum = x + y; printf("\n\n%d + %d = %d\n", x, y, sum); if(sum <=79) printf("C"); else if (sum <= 89) printf("B"); else if ( sum >=90) printf("A"); printf("\n"); return 0; }
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문) 실습하기 ① 세 가지의 정수(x, y, z)를 받아 아래와 같은 수식을 계산하여 그 결과가 홀수이면 "ODD"를 출력하고, 짝수이면 "EVEN"을 출력한다. 수식 : result = x + y * 3 - z ② 정수로 되어 있는 국어, 영어, 수학의 점수를 키보드로부터 입력을 받은 후 세 과목의 합계 점수와 평균 점수를 구하고 평균 점수에 따른 등 급을 다음과 같은 형식으로 출력하시오. ∙ 출력 형식 국어=100점, 영어=100점, 수학=100점, 합계=300점, 평균=100점, 등급=A ∙ 점수별 등급
조건문(If문) 실습하기- ① int main(void) { int x,y,z, result; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문) 실습하기- ① int main(void) { int x,y,z, result; printf("x값 : "); scanf(); printf("y값 : "); scanf(); printf("z값 : "); scanf(); result= () ; if(( )==0) printf(" result=%d, () \n",result); else printf(" result=%d, () \n", result); return 0; }
조건문(If문) 실습하기- ② int main(void) { int a,b,c, sum, avg; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 조건문(If문) 실습하기- ② int main(void) { int a,b,c, sum, avg; printf("국어점수 : "); scanf (); printf("영어점수 : "); scanf(); printf("수학점수 : "); sum = a+b+c; avg= sum/3; printf("국어=%d점, 영어=%d점, 수학=%d점, 합계=%d점, 평균=%d점, ",( ) ); if() printf("등급= A\n"); else if() printf("등급= B\n"); printf("등급= C\n"); printf("등급= D\n"); else printf("등급= F\n"); return 0; }
default은 모든 case에 해당되지 않을 경우 수행 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문 지정된 변수 값에 따라 조건처리 할 경우 if ~ else문 보다 간결하게 표현 가능 형식: break를 만나면 그 이후 내용은 무시되고 switch문 종료 default은 모든 case에 해당되지 않을 경우 수행
Switch문 –예제(p137) #include <stdio.h> int main( ) { 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문 –예제(p137) #include <stdio.h> int main( ) { int a = 1, b = 1; switch (a) { case 1 : ++b; break; case 2 : b = b + 2; case 3 : b = b + 3; } printf("\nb= %d", b); return 0; #include <stdio.h> int main( ) { int a = 1, b = 1; switch (a) { case 1 : ++b; case 2 : b = b + 2; case 3 : b = b + 3; } printf("\nb= %d", b); return 0;
Switch문 –예제 int main( ) { int a, b, number; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문 –예제 int main( ) { int a, b, number; printf("\n 첫번째 정수를 입력하시오 <a> : "); scanf("%d", &a); printf("\n 두번째 정수를 입력하시오 <b> : "); scanf("%d", &b); printf("\n 선택 사항 [1, 2, 3, 4] : "); scanf("%d", &number); switch (number) { case 1 : printf("\n a + b = %d", a + b); break; case 2 : printf("\n a - b = %d", a - b); break; case 3 : printf("\n a * b = %d", a * b); break; case 4 : printf("\n a / b = %d", a / b); break; default : printf("\n Select [1, 2, 3, 4], retry !\n"); } /* end of switch */ return 0; } <지시사항> 1을 선택하면 a+b를, 2를 선택하면 a-b를, 3을 선택하면 a*b를, 4를 선택하면 a/b를 계산하여 출력 <추가> 입력한 숫자가 계산식에 나오도록 수정
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문 switch~case 문과 if~else문과의 관계
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문의 제약점 ① '관계 연산이 올 수 없다.'
Switch문의 제약점 ② '실수 자료형을 사용할 수 없다.' int main(void) { double num; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Switch문의 제약점 int main(void) { double num; printf(“실수 입력: ”); scanf(“%lf”, num); switch(num) case 3.14: 내용 1; break; case 4.14: 내용 2; } return 0; ② '실수 자료형을 사용할 수 없다.'
반복문 반복문 반복문의 종류 어떤 명령문을 반복적으로 수행하는 문장 for문 while문 do ~while문 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 반복문 반복문 어떤 명령문을 반복적으로 수행하는 문장 반복문의 종류 for문 while문 do ~while문
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문 for문의 형식
for문의 여러가지 유형 #include <stdio.h> int main( ) { int i=1; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문의 여러가지 유형 #include <stdio.h> int main( ) { int i=1; for( ; i<=10; i++) // 초깃값이 없는 경우 printf(" %d\n", i); } return 0;
for문의 여러가지 유형 #include <stdio.h> int main( ) { int i; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문의 여러가지 유형 #include <stdio.h> int main( ) { int i; for(i=1; ; i++) // 조건값이 없는 경우 printf(" %d\n", i); if (i>10) break; // 무한 반복문을 탈출하기 위한 break 문 } return 0;
for문의 여러가지 유형 #include <stdio.h> int main( ) { int i; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문의 여러가지 유형 #include <stdio.h> int main( ) { int i; for( i= 1; i<=10; ) // 증감값이 없는 경우 printf(" %d\n", i); i++; // 증감값을 여기에… } return 0;
for문-예제(p139) #include <stdio.h> int main( ) { char ch; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문-예제(p139) #include <stdio.h> int main( ) { char ch; for (ch = 'A'; ch <= 'K'; ch++) { printf("Alphabet : %c", ch); printf(" Number : %d\n", ch); } return 0;
for문-예제(p140) #include <stdio.h> int main( ) { int i=0; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문-예제(p140) #include <stdio.h> int main( ) { int i=0; printf(" ASCII 코드 조견표\n10진수 16진수 문자"); for(i=0;i<=255;i++) printf("\n%4d %4x %c",i,i,i); return 0; }
for문-예제(p141) #include <stdio.h> #include <process.h> 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 for문-예제(p141) #include <stdio.h> #include <process.h> int main( ) { int i, j; system("cls"); printf(" * 구 구 단 *\n"); for (i=1; i<10; i++){ for (j=2; j<10; j++) printf("%2d*%2d=%2d ", j, i, i*j); printf("\n"); } return 0;
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문 while문의 형식
while (x != 'c') putchar(x++);와 동일 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예(p142) #include <stdio.h> int main( ) { char x = 'a'; while (x != 'c') { putchar(x); x++; } return 0; while (x != 'c') putchar(x++);와 동일
while문-예제(p144) #include <stdio.h> int main( ) { 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p144) #include <stdio.h> int main( ) { int a=1, sum = 0; while (a <= 100) { sum = sum + a; a=a+1; } printf("\nsum=%d\n",sum); return 0;
while문-예제(p145) #include <stdio.h> int main( ) { int a, b; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p145) #include <stdio.h> int main( ) { int a, b; printf("정수를 입력하시오 : "); scanf("%d", &b); a = 0; while (a <= b) printf("\n %d", a++); return 0; }
while문-예제(p145) #include <stdio.h> int main( ) { int i, n; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p145) #include <stdio.h> int main( ) { int i, n; i = n = 0; while(n < 10) { while(i < n) { putchar('*'); i++; } putchar('\n'); i = 0; n++; return 0;
while문-예제(p146) #include <stdio.h> int main( ) { char ch; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p146) #include <stdio.h> int main( ) { char ch; int charcount = 0; while( (ch=getchar( )) != ‘\n' ) charcount = charcount + 1; /* 문자수 계산 */ printf("총 문자수 = %d", charcount); return 0; }
while문-예제(p147) #include <stdio.h> int main( ) { char ch; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p147) #include <stdio.h> int main( ) { char ch; int linecount = 0; while( (ch=getchar( )) != EOF ) if ( ch == '\n' ) linecount = linecount + 1; /* 행수 계산 */ printf("총 행수 = %d", linecount); return 0; } EOF(End Of Line): ctrl키와 Z키를 함께 누른다
while문-예제(p147) int main( ) { char ch; int inword = 0, wordcount = 0; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 while문-예제(p147) int main( ) { char ch; int inword = 0, wordcount = 0; while( (ch=getchar( )) != '\n'){ if ( ch == ' ' || ch == '\n' || ch == '\t') inword = 0; else { if (inword == 0) { inword = 1; } if (inword == 1) { wordcount = wordcount + 1; inword++; printf("총 단어수 = %d",wordcount); return 0; int main( ) { char ch; int inword = 0, wordcount = 0; while( (ch=getchar( )) != '\n'){ if ( ch == ' ' || ch == '\n' || ch == '\t') inword = 0; else if (inword == 0) { inword = 1; wordcount = wordcount + 1; } printf("총 단어수 = %d",wordcount); return 0;
Do ~while문 while문 do ~while문 한번도, 반복할 내용을 실행하지 않을수 있다 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 Do ~while문 while문 한번도, 반복할 내용을 실행하지 않을수 있다 do ~while문 최소한 한번은 반복할 내용을 실행한다.
do ~while문-예제(p149) #include <stdio.h> int main( ) { int i; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 do ~while문-예제(p149) #include <stdio.h> int main( ) { int i; i = 0; /* 초깃값 */ do { printf("DO - WHILE !\n"); i = i + 1; /* 초깃값 재조정 */ } while (i <= 10); /* 조건식 */ return 0; }
do ~while문-예제(p150) #include <stdio.h> #define UNIT 7 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 do ~while문-예제(p150) #include <stdio.h> #define UNIT 7 #define MAX 123 int main( ){ int n; char ch; ch = 33; n = 0; do { while(n < UNIT) { printf("%c = %3d ", ch, ch); ch++; n++; } printf("\n"); n = 0; } while(ch <= 123); printf("\n\n\t\t THE END ... \n"); return 0;
무한 반복문 무한 반복문 예) 종료되지 않고 무한히 실행되는 반복문 for문: for( ; ;){ …. } 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 무한 반복문 무한 반복문 종료되지 않고 무한히 실행되는 반복문 예) for문: for( ; ;){ …. } 조건식을 생략 while문 : while(1){ ….. } do ~while문: do{ …. }while(1) (1) 또는 (1>0)와 같은 항상 참이 되는 조건식
반복의 중단 break문 continue문 조건문을 종료 반복문을 종료 반복문을 생략 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 반복의 중단 break문 조건문을 종료 반복문을 종료 continue문 반복문을 생략 반복문(for문, while문, do~while문)내에서 사용 switch문에서 사용 못함
수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 반복의 중단 break와 continue의 비교
반복의 중단 break문 사용(p152) #include <stdio.h> int main( ) { int j=0; 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 반복의 중단 break문 사용(p152) #include <stdio.h> int main( ) { int j=0; while(1) // 무조건 참 { if(j==10) break; j= j+1; printf(" \n%d", j); } printf(" \n반복구간을 벗어났습니다"); return 0;
반복의 중단 continue문 사용(p153) #include <stdio.h> int main( ) { 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 반복의 중단 continue문 사용(p153) #include <stdio.h> int main( ) { int j=0; while(1) { if(j==10) break; j= j+1; if(j < 3) continue; printf(" \n%d", j); } printf(" \n반복구간을 벗어났습니다"); return 0;
분기문(goto문) 분기문(goto문) 형식: 예) 레이블(label): 주의 수원과학대학 컴퓨터정보과 1학년 1학기 2018-11-10 분기문(goto문) 분기문(goto문) 지정된 레이블(label)이 있는 행(line)으로 건너뛰어수행하는 명령문 형식: 예) 레이블(label): 점프할 명령행의 주소를 나타냄 분기할 레이블은 같은 함수내에 있는 것만 가능 주의 프로그램을 복잡하게 만듬으로 제한적으로 사용 main(){ int i=0; ABC: i=i+1; if(i<5) goto ABC; printf("i=%d\n",i); } goto 레이블명; 레이블명: