1 / 17

C Presentation

C Presentation. for JAVA Seminar. 정보통신학부 20063435 신예진. Index…!. # printf 와 scanf 함수에 대한 고찰 1. printf 함수 이야기 2. scanf 함수 이야기. #다양한 형태의 반복문 while do~while for. #조건에 따른 흐름의 분기 if 와 else loof 의 생략과 탈출 (continue & break) Switch 에 의한 선택 실행. printf 함수 이야기.

aquila
Download Presentation

C Presentation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C Presentation for JAVA Seminar 정보통신학부 20063435 신예진

  2. Index…! # printf와 scanf 함수에 대한 고찰 1. printf 함수 이야기 2. scanf 함수 이야기 #다양한 형태의 반복문 • while • do~while • for #조건에 따른 흐름의 분기 • if 와 else • loof의 생략과 탈출(continue & break) • Switch에 의한 선택 실행 LAB1111 Seminar

  3. printf 함수이야기 • printf는 문자열을 출력하는 함수이다. • printf는 특수문자 표기가 가능하다. • printf의 f는 formatted(서식화된)를 의미한다. • 필드 폭을 지정한다. LAB1111 Seminar

  4. 특수문자 표기 LAB1111 Seminar

  5. 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

  6. Tip 입력받을 값을 저장할 변수에는 반드시 &연산자를 붙여야 한다. 포인터 연산자를 표시하지 않았을 때의 프로그램 경고 메시지 (실제로 컴퓨터 자체가 고장날 수 있음) (계속) scanf 함수 이야기 LAB1111 Seminar

  7. 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++; } } <= 실행화면 LAB1111 Seminar

  9. (계속)반복문 첫 번째 while • Flow Chart • while문의 중첩(응용) while문 안에 while문을 포함시키는 것 • 무한 루프 형태 while(1) { 반복내용 } Ex Source 보기 반복조건이 TRUE? 루프 내 문장실행 true true를 의미 false LAB1111 Seminar

  10. 반복문 두번째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

  11. 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

  12. (계속) 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

  13. 시간복잡도? • 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

  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. break continue Continue & break 비교 While(1) { …….. if (x<0) …….. break; } printf(“끝\n”); While(1) { …….. if (x<0) …….. continue; } printf(“끝\n”); LAB1111 Seminar

  16. 분기의 수가 많아지면 가급적 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

  17. 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

More Related