문서의 제목 나눔명조R, 40pt

Similar documents
Microsoft PowerPoint - chap05-제어문.pptx

K&R2 Reference Manual 번역본

Infinity(∞) Strategy

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

untitled

C 프로그래밊 개요

untitled

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

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

untitled

PowerPoint 프레젠테이션

OCW_C언어 기초

슬라이드 1

중간고사

Chapter_06

C프로-3장c03逞풚

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

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

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

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

PowerPoint 프레젠테이션

chap x: G입력

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap10-함수의활용.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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

03장.스택.key

슬라이드 1

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션

슬라이드 1

슬라이드 1

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

歯9장.PDF

슬라이드 1

Microsoft PowerPoint - additional01.ppt [호환 모드]

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap12-고급기능.pptx

chap 5: Trees

Java ...

쉽게 풀어쓴 C 프로그래밍

Chapter 4. LISTS

쉽게 풀어쓴 C 프로그래밍

02 C h a p t e r Java

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

11장 포인터

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

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - C++ 5 .pptx

Introduction to Geotechnical Engineering II

Microsoft PowerPoint - chap-09.pptx

Microsoft PowerPoint 세션.ppt

컴파일러

PowerPoint 프레젠테이션

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt


Microsoft PowerPoint - Chapter8.pptx

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

4장.문장

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

쉽게 풀어쓴 C 프로그래밍

02장.배열과 클래스

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

13주-14주proc.PDF

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터

PowerPoint Presentation

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

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

商用

강의10

Microsoft PowerPoint - chap04-연산자.pptx

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

윤성우의 열혈 TCP/IP 소켓 프로그래밍

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Data Structure

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

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

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

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

OCW_C언어 기초

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

설계란 무엇인가?

chap8.PDF

강의 개요

MPLAB C18 C

Microsoft PowerPoint - 04_C_Language_Function

1장. 유닉스 시스템 프로그래밍 개요

Transcription:

이문서는나눔글꼴로작성되었습니다. 설치하기 8 차시 : 제어의흐름 함수 ( 계속 ) 프로그래밍및실험 제 8 주 동국대학교조영석

4.10 부울변수 - 생략 4.11 comma 연산자 - 우선순위가가장낮음. comma_expression ::= expr, expr ( 예 ) a = 0, b = 1 /* 문장이아니라 comma expression 임 */ for ( sum = 0, i = 1; i <= n; ++i ) sum += i; for ( sum = 0, i = 1; i <= n; sum += i, ++i ) ; 2

4.12 do 문 do_statement ::= do statement while (expr); do statement while ( expr ) ; next statement 3

( 예 ) 0이입력될때까지입력된정수의합을구하기. i = 0; sum = 0; do { sum = sum + i; scanf("%d", &i); /* prompt 생략 */ } while ( i > 0) ; do { printf("input a positive integer : "); scanf("%d", &n); if ( error = (n <= 0) ) printf("\nerror : Do it again!\n\n"); } while ( error ) ; /* 음수가입력되면계속수행 */ 4

4.13 피보나치수열 (Fibonacci Numbers) - 재귀적정의. f 0 = 0 f 1 = 1 f i+1 = f i + f i-1, for i = 1, 2... (f 0 = 1, f 1 = 1로정의하기도함.) - f 0, f 1 을제외하고모든원소는이전두원소의합. (0,) 1, 1, 2, 3, 5, 8, 13, 21, 34,... 5

/* print Fibonacci numbers and quotients. */ #include <stdio.h> #define LIMIT 46 void main() { long f0 = 0, f1 = 1, n, temp; /* 1st 2#'s */ printf("%7d%19d\n%7d%19d\n", 0, 0, 1, 1); for ( n = 2; n <= LIMIT; ++n) { temp = f1; f1 = f1 + f0; f0 = temp; printf("%7ld%19ld%29.16f\n", /* ld: long int */ n, f1, (double)f1 / f0); } } 6

- output 0 0 Fib(n)/Fib(n-1) 1 1 2 1 1.0000000000000000 3 2 2.0000000000000000 4 3 1.5000000000000000 5 5 1.6666666666666667 6 8 1.6000000000000001 7 13 1.6250000000000000 23 23657 1.6180339901755971 24 46368 1.6180339882053250 25 75025 1.6180339889579021 44 701408733 1.6180339887498949 45 1134903170 1.6180339887498949 46 1836311903 1.6180339887498949 n==41 부터 quotient 가수렴 7

- manual execution n temp f1 f0 quotient (f1/f0) 1 0 2 1 1 1 1.0 3 1 2 1 2.0 4 2 3 2 1.5 5 3 5 3 1.66666666 6 5 8 5 1.6 황금비는 1.6180339887498949 :1 이라고표현하지만, 정확히말하면입니다. 그리고피보나치수열의일반식은, 입니다. 여기서 n=1,2,3,4,5... 를넣으면, 놀랍게도생긴것과다르게 1,1,2,3,5... 가나옵니다. 8

- 자연과피보나치수열 꽃과꽃잎, 식물의잎에서피보나치수열을찾을수있음. 식물뿐아니라고둥이나소라의나선구조에도나타남. 이수열은 신의비율 인황금비를만들어냄. 황금비는피라미드파르테논신전이나다빈치미켈란젤로의작품에서시작해오늘날에는신용카드와담배갑의가로세로비율까지광범위하게쓰임. 황금비는태풍과은하수의형태, 초식동물의뿔, 바다의파도에도있음. 배꼽을기준으로한사람의상체와하체, 목을기준으로머리와상체의비율도황금비 이수열은 12 세기말이탈리아수학자레오나르도피보나치 (1170-1250) 가제안했다. 9

한쌍의토끼가계속새끼를낳을경우몇마리로불어나는가를숫자로나타낸것. 한농장에서갓태어난한쌍의아기토끼가사육되기시작했다고하자. 한쌍의토끼는생후 1 개월뒤짝짓기를하며짝짓기한뒤 1 개월뒤에다시한쌍의토끼를생산한다고하자. 생산된토끼가죽지않고계속산다면일년동안토끼는몇쌍이될까 0 개월 : 1 쌍의토끼 1 개월뒤 : 여전히 1 쌍의토끼 2 개월뒤 : 2 쌍의토끼 (1 쌍의토끼가새로태어나기때문 ) 3 개월뒤 : 3 쌍의토끼 ( 첫번째암토끼가다시 1 쌍의토끼생산 ) 4 개월뒤 : 5 쌍의토끼 (2 마리의암토끼가각각 1 쌍의토끼생산 ). 1 1 2 3 5 8 13 21 34 55 89 144 233 10

거의모든꽃의꽃잎이 3장 5장 8장 13장 21장 34장 임. 백합, 아이리스, 붓꽃 : 3장채송화, 패랭이, 동백, 야생장미, 애기미나리아재비 : 5장모란, 코스모스, 참제비고깔 : 8장금불초, 금잔화, 시네라리아 : 13장애스터, 치코리 : 21장질경이, 데이지 : 34장쑥부쟁이 : 종류에따라 55장, 89장 11

고둥도한변의길이가피보나치수열인정사각형들이만들어낸나선모양을하고있음. 피보나치수열은해바라기나데이지꽃머리의씨앗배치에도존재 최소공간에최대의씨앗을촘촘하게배치하는 최적의수학적해법 으로꽃은피보나치수열을선택 씨앗은꽃머리에서왼쪽과오른쪽두개의방향으로엇갈리게나선모양으로자리잡음. 데이지꽃머리에는서로다른 34 개와 55 개의나선이있고, 해바라기꽃머리에는 55 개와 89 개의나선이있음. 12

식물의잎차례 : 줄기에서잎이나와배열하는방식. 피보나치수열이가장잘나타남. t/n 으로표시 (t 번회전하는동안잎이 n 개나오는비율 ) 참나무, 벚꽃사과 : 2/5 포플러장미배버드나무는 3/8 갯버들과아몬드는 5/13 전체식물의 90% 가피보나치수열의잎차례를따름. 잎이바로위의잎에가리지않고햇빛을최대한받을수있는수학적해법 13

황금비 : 피보나치수열을만들어냄. F i / F i-1 2/1 3/2 5/3 8/5 를계속계산하면황금비에수렴 (2/1 3/2 5/3 8/5 1.6180339887498949 ) 1.618 음악의거장바르톡은피보나치수열에따라음악의마디를나누고황금분할점에클라이막스를두는새로운음악을제창. 전에는식물의 DNA 가피보나치수열을만들어낸다고생각했으나, 요즘에는식물의씨앗이나잎이먼저나온씨나잎을비집고새로자라면서환경에적응해최적의성장방법을찾아가는과정에서자연스럽게피보나치수열에이르는것으로생각하고있다. 특히최근에는생물뿐아니라전하를입힌기름방울을순서대로떨어뜨려도해바라기씨앗처럼퍼진다는사실이밝혀지면서피보나치수열과황금비가생물은물론자연과우주어디에나숨어있다고믿는수학자가더욱늘고있다 ( 서울대김홍종교수 ( 수학 )) 14

4.14 goto 문 - 절대로사용하지말것 - 숙제에서 goto 가발견되면무조건 'F' 15

4.15 break 문과 continue 문 - 정상적인제어의흐름을중단시킴. - break; ( 예 ) loop 의내부나 switch 문에서빠져나오게함. while ( 1 ) { scanf("%lf", &x); if ( x < 0.0) break;... } /* break jumps to here */ 16

- continue: for, while, do loop 내에서만사용 ( 예 ) loop 의현재반복을중단하고즉시다음반복을수행. for ( i = 0; i < TOTAL; ++i) { c = getchar( ); if ( c >= '0' && c <= '9') continue;... /* 숫자에대해서는아래의처리를않음 */ /* continue jumps to here to begin next iteration */ } - break : loop 를종료. continue : 현재반복의끝부분으로제어를전달. 17

4.16 switch 문 - if-else 문을일반화한다중조건문. ( 예 ) scanf("%c", &i); switch ( i ) { case 'a' : ++ a_count; break; case 'b' : ++ b_count; break; case 'c' : case 'C' : ++ c_count; break; default : ++ other_count; } - switch(x) 의 x 는반드시정수적형임. - break; 문이없으면 label 과관계없이다음문장을수행. 18

( 예 ) 장학금 1 등 : 수업료 + 기성회비 + 학생회비 2 등 : 기성회비 + 학생회비 3 등 : 학생회비 switch ( i ) { /* break 문없음 */ case 1 : 장학금 = 장학금 + 수업료 ; case 2 : 장학금 = 장학금 + 기성회비 ; case 3 : 장학금 = 장학금 + 학생회비 ; } switch ( i ) { /* break문사용 */ case 1 : 장학금 = 장학금 + 수업료 + 기성회비 + 학생회비 ; break; case 2 : 장학금 = 장학금 + 기성회비 + 학생회비 ; break; case 3 : 장학금 = 장학금 + 학생회비 ; break; default : ; } 19

4.17 조건부연산자 expr1? expr2 : expr3 ( 예 ) x = ( y < z )? y : z; if ( y < z ) x = y; else x = z; 20

Chapter 5. 함수 (function) - 문제해결의방법 : 큰문제는작은문제들로분해하여해결한후취합하면용이함. - P = P 1 + P 2, where P 는해결해야할문제. P 1, P 2 는 P 의조각들. - E(P) E(P 1 ) + E(P 2 ), - 일반화 P = where E(x) 는 x 를해결하는데드는노력의크기. n i= 1 Pi, E( P) - 유지 보수가용이함. 특히, debugging 시유리. - 재사용성이높음. n i= 1 E( Pi) - S/W 의부품화 21

5.1 함수정의 - 함수가수행할일을기술한 C code. type function_name ( parameter list ) /* header */ { /* body */ declarations statements } ( 예 ) int factorial (int n) /* header */ { /* body */ int i, product = 1; for (i = 2; i <= n; ++i) product = product * i; return product; } 호출방법 : j = factorial( i ); 22

( 예 ) void Hi ( void ) { printf("\nhi!!!\n"); } 호출방법 : Hi( ); - 함수의형 (type) 이기술되지않았을경우 int 를가정함. int factorial(int n) { } == factorial (int n) { } 23

- 지역변수 v.s. 전역변수 (local v.s. global variable) 지역변수 : 함수몸체 (body) 내부에선언된변수. 전역변수 : 함수몸체 (body) 외부에선언된변수. /* 전역변수는절대사용하지말것. 발각시과목성적 = F */ /* 기호상수는전역으로사용가능 ( 예 ) #define PI 3.14159 */ ( 예 ) #include <stdio.h> int Global_var = 33; /* global variable */ int main ( ) { int Local_var = 77; /* local variable */ printf("%d", Global_var); /* global to main */ printf("%d", Local_var); /* local to main */ return 0; } 24

5.2 return 문 return; return expr; return (expr); - 실행이종료되고제어는 return 문에포함된수식의값과함께호출한환경으로넘어감. - 하나의함수내에복수개의 return 문도허용됨. ( 예 ) double abs_value (double x) { if ( x >= 0.0 ) return x; else return -x; } 25

- 그러나 1 개의 return 문을사용하는것을권장함. - 함수에서의출구는하나로작성하는것이원칙임. ( 예 ) double abs_value (double x) { if ( x >= 0.0 ) ; else x = -x; return x; } ( 예 ) int square (int x) { x = x * x; return x; /* 또는 return x * x; */ } 26

5.3 함수원형 (function prototypes) - 함수는사용전반드시선언되어야함. type function_name ( parameter type list ); - 또는 main 함수이전에정의 함수의수가많으면가독성이떨어지고, team 에의한개발시매우불편함. ( 예 ) double sqrt (double); void f (char c, int i); - parameter type list( 매개변수형목록 ) ',' 로분리되는형 (type) 의목록 (list). - 함수원형의식별자는 option( 있어도사실상무시함 ). - void void f (char, int); == void f (char c, int i); 함수가인자를가지지않을경우사용. ( 예 ) int f (void); 함수가 return 하는값이없을경우사용. ( 예 ) void f (int); 27

감사합니다. 이문서는나눔글꼴로작성되었습니다. 설치하기