170 likes | 355 Views
C Presentation. for JAVA Seminar. 정보통신학부 20063435 신예진. Index…!. # printf 와 scanf 함수에 대한 고찰 1. printf 함수 이야기 2. scanf 함수 이야기. #다양한 형태의 반복문 while do~while for. #조건에 따른 흐름의 분기 if 와 else loof 의 생략과 탈출 (continue & break) Switch 에 의한 선택 실행. printf 함수 이야기.
E N D
C Presentation for JAVA Seminar 정보통신학부 20063435 신예진
Index…! # printf와 scanf 함수에 대한 고찰 1. printf 함수 이야기 2. scanf 함수 이야기 #다양한 형태의 반복문 • while • do~while • for #조건에 따른 흐름의 분기 • if 와 else • loof의 생략과 탈출(continue & break) • Switch에 의한 선택 실행 LAB1111 Seminar
printf 함수이야기 • printf는 문자열을 출력하는 함수이다. • printf는 특수문자 표기가 가능하다. • printf의 f는 formatted(서식화된)를 의미한다. • 필드 폭을 지정한다. LAB1111 Seminar
특수문자 표기 LAB1111 Seminar
scanf 함수 이야기 • 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
Tip 입력받을 값을 저장할 변수에는 반드시 &연산자를 붙여야 한다. 포인터 연산자를 표시하지 않았을 때의 프로그램 경고 메시지 (실제로 컴퓨터 자체가 고장날 수 있음) (계속) scanf 함수 이야기 LAB1111 Seminar
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
반복문 첫 번째 while • 반복조건이 만족할 때만 반복 내용을 실행 While ( 반복조건) { 반복내용 } • Ex Source #include<stdio.h> void main() { int i=1; while(i<=10) { printf(“%d\n”); i++; } } <= 실행화면 LAB1111 Seminar
(계속)반복문 첫 번째 while • Flow Chart • while문의 중첩(응용) while문 안에 while문을 포함시키는 것 • 무한 루프 형태 while(1) { 반복내용 } Ex Source 보기 반복조건이 TRUE? 루프 내 문장실행 true true를 의미 false LAB1111 Seminar
반복문 두번째do ~ while • About do~while 반드시 do에 있는 내용을한번 실행하고 그 후에 while문의 조건에 따라 반복여부가 결정 • Tip 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) } LAB1111 Seminar
for 반복문 세 번째 • About for… 기본적으로 초기문, 조건문, 증감문으로 구성 • 형태 for (초기문;조건문;증감문) { 반복내용 } • Tip 초기문이 맞지 않으면 for문 자체 반복내용에 접근하지 않는다. • 사용 예 • for(i = n-1 ; i !=0; i /= 2) • for( ; ;) • For( i=j ; j>i ; i+=j) • And so On…… LAB1111 Seminar
(계속) for문의 활용 • 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
시간복잡도? • 1) for(i = 1; i < n ; i *= 2) ++k; =>T(n)=O(n/2)=O(log n) • 2) for(i = n-1 ; i !=0; i /= 2) ++k; =>T(n)=O(n/2)=O(log n) • 3) for(i = 0; i < n ; ++i) if(i % 2== 0) ++k; =>T(n)=O(n) • 4) for(i = 0; i < n; ++i) for(j = 0; j < n ; ++j) ++k; =>최악의 경우 O(n^2) • 5) for(i = 0; i < n; ++i) for(j = i; j < n ; ++j) / 4) ++k; =>O(n^2) • 6) for(i = 0; i < n; ++i) for(j = 0; j < n ; ++j) for(r = 0; r < 10 ; ++r) ++k; • 로그순서 : 1> log n > n > n log n > n^2 > n^2 log n > n^3 > n^3 log n .... 출처 : NAVER 지식 IN LAB1111 Seminar
조건에 따른 흐름의 분기 • 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
break continue Continue & break 비교 While(1) { …….. if (x<0) …….. break; } printf(“끝\n”); While(1) { …….. if (x<0) …….. continue; } printf(“끝\n”); LAB1111 Seminar
분기의 수가 많아지면 가급적 switch문 사용 Case문으로 모든 경우를 다 표시하고 다른 경우가 없다고 하더라도 default : 값으로 예외의 경우를 꼭 처리한다. Switch 문에서는 비교 연산이 올 수 없다. Switch VS if~else switch(n) { case n>1 : printf(“AAA”); case n==0 : printf(“BBB”); } Char형과 Int형만 가능 Switch (조건) { case 1 : case 2: defalt : } N을실행할 영역을 결정짓기 위한 정보 LAB1111 Seminar
Switch 문 예제 • 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