Download presentation
Presentation is loading. Please wait.
1
C Presentation for JAVA Seminar 정보통신학부 신예진
2
Index…! #다양한 형태의 반복문 #조건에 따른 흐름의 분기 # printf와 scanf 함수에 대한 고찰
while do~while for #조건에 따른 흐름의 분기 if 와 else loof의 생략과 탈출(continue & break) Switch에 의한 선택 실행 LAB1111 Seminar
3
printf 함수 이야기 printf는 문자열을 출력하는 함수이다. printf는 특수문자 표기가 가능하다.
printf의 f는 formatted(서식화된)를 의미한다. 필드 폭을 지정한다. LAB1111 Seminar
4
특수문자 표기 특수문자 의 미 \a 경고음 소리(alram) \b 백스페이스(backspace) \f
폼피드(form feed) \n 개행(new line) \r 캐리지 리턴 (carriage return) \t 수평 탭(tab) \v 수직 탭 \\ Back slash 기타 특수문자( ‘ , ” ..) \후 작성 LAB1111 Seminar
5
scanf 함수 이야기 Tip 문자나 숫자를 입력 받 을 때 ()안에 “와 %사이 에 공백이 없어야 한다. =>오류예제
Source printf("두 개의 숫자를 입력하시오 : " ); scanf(“ %d %d ” , &input1, &input2); while(input1<=input2) { for ( inja=1 ; inja<=9 ; inja++ ) { for( i=input1 ; i<=input2 ; i++ ) { printf("%d*%d=%d\t",i, inja, i*inja); if(i==input1+2) break; } Tip 문자나 숫자를 입력 받 을 때 ()안에 “와 %사이 에 공백이 없어야 한다. =>오류예제 LAB1111 Seminar
6
(계속) scanf 함수 이야기 Tip 입력받을 값을 저장 할 변수에는 반드시 &연산자를 붙여야 한 다.
입력받을 값을 저장 할 변수에는 반드시 &연산자를 붙여야 한 다. 포인터 연산자를 표시하지 않았을 때의 프로그램 경 고 메시지 (실제로 컴퓨터 자체가 고장날 수 있음) LAB1111 Seminar
7
if(yes_no=='y' || yes_no=='Y') continue;
while(1) { printf("\n\n\t\t번호:"); scanf("%d",&main_choice); puts("Do you want to continue ordering? Y/N"); scanf("%s", &yes_no); if(yes_no=='y' || yes_no=='Y') continue; else if(yes_no=='n'||yes_no=='N') break; } 버퍼의문제를 해결하기 위해 fflush(stdin) 이 rewind(stdin)을 이 용한다. But, fflush(stdin) 는 표준에 정의 되지 않았고 rewind(stdin)는 콘 솔과 파일입출력에서 행동이 완전 다르기 때문에 문제가 발 생을 만드는 코드가 됩니다. So , getch(); 를 임의로 넣어서 처리하는 방법이 좋다. 사용자가 입력할 문자는 한글자 이기 때문에 %c를 사용하였는데 알 수 없는 오류가 나면서 프로그램이 종료 되었다 그래서. %s로 수정을 했더니 오류없이 실행되었다 LAB1111 Seminar
8
While ( 반복조건) { 반복내용 } 반복문 첫 번째 while Ex Source
#include<stdio.h> void main() { int i=1; while(i<=10) printf(“%d\n”); i++; } <= 실행화면 반복조건이 만족할 때만 반복 내용을 실행 While ( 반복조건) { 반복내용 } LAB1111 Seminar
9
(계속)반복문 첫 번째 while Flow Chart while문의 중첩(응용) 무한 루프 형태 while(1) { 반복내용
} Ex Source 보기 반복조건이 TRUE? 루프 내 문장실행 true true를 의미 false LAB1111 Seminar
10
반드시 do에 있는 내용을한번 실행하 고 그 후에 while문 의 조건에 따라 반 복여부가 결정
Ex Source #include<stdio.h> void main() { int input; int i=1; printf("몇 단을 출력하시겠습니까?"); scanf("%d", &input); do printf("%dX%d = %d\n", input, i, input*i); i++; }while(i<10) } About do~while 반드시 do에 있는 내용을한번 실행하 고 그 후에 while문 의 조건에 따라 반 복여부가 결정 Tip while문의 개념과 구 별하여 기억한다. LAB1111 Seminar
11
for 반복문 세 번째 About for… 기본적으로 초기문, 조 건문, 증감문으로 구성 형태 Tip
{ 반복내용 } Tip 초기문이 맞지 않으면 for문 자체 반복내용에 접근하지 않는다. 사용 예 for(i = n-1 ; i !=0; i /= 2) for( ; ;) For( i=j ; j>i ; i+=j) And so On…… LAB1111 Seminar
12
(계속) for문의 활용 For 문 중첩 예제 Tip for문이 중첩될 수록 for(i=0;i<input/2+1;i++)
{ for(k=input;(k-i)/2>0;k--) printf(" "); for(j=0;j<=i*2;j++) printf("*"); printf("\n"); } } //별 찍기 프로그램 Tip for문이 중첩될 수록 시간복잡도는 제곱의 형 태로 증가하게 된다 =>참고 글 보기 LAB1111 Seminar
13
시간복잡도? 1) for(i = 1; i < n ; i *= 2) ++k;
=> T(n)=O(n/2)=O(log n) 5) for(i = 0; i < n; ++i) 2) for(i = n-1 ; i !=0; i /= 2) ++k; for(j = i; j < n ; ++j) / 4) =>T(n)=O(n/2)=O(log n) =>O(n^2) 3) for(i = 0; i < n ; ++i) 6) for(i = 0; i < n; ++i) if(i % 2== 0) for(j = 0; j < n ; ++j) ++k; for(r = 0; r < 10 ; ++r) => T(n)=O(n) ++k; 4) for(i = 0; i < n; ++i) for(j = 0; j < n ; ++j) 로그순서 : ++k; 1> log n > n > n log n > n^2 > n^2 log n > n^3 > n^3 log n .... =>최악의 경우 O(n^2) 출처 : NAVER 지식 IN LAB1111 Seminar Lab 1111
14
조건에 따른 흐름의 분기 조건(삼항) 연산자 About if…
실행의 조건문이 만족되는 경우, 실행하고 자 하는 내용이 선택적으로 실행된다. 형태 if ( 조건 ) { 실행하려는 내용1 } else if (조건) 실행하려는 내용2 else 실행하려는 내용3 조건(삼항) 연산자 - 조건 ? A :B 조건이 true인 경우 A를 반환 조건이 false인 경우 B를 Ex > ch=(x<0)? ‘-’ : -’; (ch==‘+’)? printf(“양수 \n”) : printf(“음수 \n”); printf(“절대 값 : %d\n”, (x<0)? - 1*x :x); True 일 때 False 일 때 LAB1111 Seminar
15
Continue & break 비교 continue break break; continue; While(1) { ……..
if (x<0) break; } printf(“ 끝\n”); While(1) { …….. if (x<0) continue; } printf(“ 끝\n”); LAB1111 Seminar
16
Switch VS if~else Switch 문에서는 비교 연산 이 올 수 없다.
Case문으로 모든 경우를 다 표 시하고 다른 경우가 없다고 하 더라도 default : 값으로 예외의 경우를 꼭 처리한다. switch(n) { case n>1 : printf(“AAA”); case n==0 : printf(“BBB”); } Char형과 Int형만 가능 Switch (조건) { case 1 : case 2: defalt : } N을 실행할 영역을 결정짓기 위한 정보 LAB1111 Seminar
17
Switch 문 예제 LAB1111 Seminar switch( choice ) { case 1 :
printf(" %lf " , fir+sec);break; case 2 : printf(" %lf" , fir-sec);break; case 3: printf(" %lf" , fir*sec);break; case 4 : if( sec==0 ) printf(" 0으로 나눌 수 없어요 \n"); } else printf(" %lf" , fir/sec); default : printf("몰라요\n"); } LAB1111 Seminar
Similar presentations