프로그래밍의 기초
This presentation is the property of its rightful owner.
Sponsored Links
1 / 155

프로그래밍의 기초 PowerPoint PPT Presentation


  • 313 Views
  • Uploaded on
  • Presentation posted in: General

프로그래밍의 기초. 서울대학교 컴퓨터 공학부. 안녕하세요. 반갑습니다. 프로그래밍의 기초 ?. 기초는 알겠는데요 , 프로그래밍은 무엇인가요 ?. 프로그래밍은 프로그램을 하는 것. 그럼 프로그램은 무엇인가요 ?. 프로그램 Program. 컴퓨터 프로그램 Computer Program. +. 프로그램은 이미 여러분의 생활안에 있습니다. 오늘은 이렇게 우리를 둘러싸고 있는 프로그램들의 기초가 되는 기본지식과 그 원리를 배워보도록 하겠습니다. 어려울거 같아요 ~.

Download 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3905132

프로그래밍의 기초

서울대학교 컴퓨터 공학부


3905132

안녕하세요


3905132

반갑습니다


3905132

프로그래밍의 기초?


3905132

기초는 알겠는데요,

프로그래밍은

무엇인가요?


3905132

프로그래밍은

프로그램을 하는 것


3905132

그럼

프로그램은 무엇인가요?


3905132

프로그램

Program


3905132

컴퓨터 프로그램

Computer Program


3905132

+


3905132

프로그램은

이미

여러분의 생활안에

있습니다.


3905132

오늘은 이렇게 우리를 둘러싸고 있는

프로그램들의 기초가 되는 기본지식과

그 원리를 배워보도록 하겠습니다.

어려울거 같아요~

WOW 깔아주세요~

그 많은 걸 어떻게 배워~


3905132

쉽고 재밌게 가르쳐주려고

많이 준비했는데…

꼭!

배우고 싶습니다!


3905132

짧은 시간 동안(9시간)

프로그래밍의 기초를

여러분의 생활에

도움이 되는 내용을 통해서

쉽고 재미있게


3905132

배워봅시다!


3905132

끓고 넘치기를 반복하는 표면적인 기술이 아닌

이러한 기술의 원동력이 되는 기초를 배워봅시다.


3905132

Part I – Excel을 통해 배우는 프로그래밍

공순호 선생님

Part II – Python을 통해 배우는 프로그래밍

한재화 선생님


3905132

감사합니다!


3905132

질문 있으신 분?


Microsoft excel

Microsoft Excel을통해서 배우는 프로그래밍

서울대학교 컴퓨터 공학부

공순호


3905132

이 시간의 주인공

Microsoft Excel 2003


3905132

왜?

C, C++, JAVA 같은

‘진짜’ 프로그래밍 언어를 배우지 않고

Excel을 배우나요?


3905132

1

프로그래밍의 기초적인 개념들을

별도의 어려운 문법들을 배우지 않고

직관적이고 시각적으로

배울 수 있기 때문입니다.


3905132

1

즉,

실생활에서 필요한 간단한 작업들은

Excel을 이용해서

편안하고, 효율적으로

프로그램 할 수 있습니다.


3905132

2

Excel 은

매우 강력한 프로그래밍 기능을

지원합니다.


3905132

2

복잡한 자료 처리를 간편하게 처리해주고

심지어 excel을 이용한

게임 프로그래밍도 가능합니다.


3905132

3

분석적인 자료 처리를 요구하는 분야들

회계, 유통, 건설, 교육 분야에서 널리 사용


3905132

지금부터 Excel에 등장하는

프로그래밍의 “개념”들을 만나보겠습니다.


3905132

개념 1

상수(Constant)와

변수(Variable)


3905132

상수 : 변하지 않는 것

예:

14

3.459

“서울대학교”

2007년 2월 22일

5시 35분


3905132

변수 : 변화하는 것

예:

x =3 일수도, x = 5일 수도 있다.


3905132

  • “10,000원”이라는 금액은 상수이다.즉, 변화하지 않고 항상 “10,000원” 이다.

  • “내 돈”이라는 변수는그 값으로 금액이라는 상수를 가진다.

  • “내 돈”이라는 변수는 “10,000원”일 수도 있고, “20,000원”일 수도 있다. 변화한다.


3905132

  • 상수의 값은 변화하지 않는다.

  • 변수는 그 값으로 상수를 가진다.

  • 변수가 가지는 값은 변화한다.


3905132

Excel에서의 상수와 변수


3905132

각각의 네모칸을 셀(Cell)이라고 부른다.


3905132

각각의 셀(Cell)은 그 위치에 따라서이름을가진다.

이름은 행과 열에 의해서 정해진다.

위의 예제에서 선택된 셀의 이름은 C6이다.


3905132

C6의 값은 3.141592 이다.


3905132

C6은 변수이고, 3.141592는 상수이다.


3905132

변수는 또 다른 변수를 가리킬 수 있습니다.


3905132

D3는 B3를 가리킵니다.


3905132

B3의 변화는 D3에 바로 반영됩니다.


3905132

개념 2

타입(Type)


3905132

“내 type 이다”?


3905132

“내 type 이다”에서의 type은 무슨 뜻일까?


3905132

흔히 말하는 “내 type”은

사실 집합


3905132

예를 들어서

“내 타입”= {김태희, 송혜교, 전지현}

이라고 하면


3905132

안소희는 “내 타입”의 원소가 아니므로

“내 타입”에 속하지 않습니다.


3905132

Excel에서의 타입(Type)


3905132

Excel에서는 타입이라고 말하지 않고

“서식”이라고 말합니다.

개념과 뜻은 동일합니다.

Excel에서의 변수(=각각의 Cell들)은

“서식”을 가집니다.


3905132

Excel이 지원하는 “서식”의 종류는

  • 일반

  • 숫자

  • 통화

  • 회계

  • 날짜

  • 시간

  • 백분율

  • 분수

  • 지수

  • 텍스트

  • 기타

  • 사용자 지정


3905132

각각의 “서식”은 고유한 “타입”을 나타내고

따라서 특정 집합(= 특정 값들)만을

나타냅니다.


3905132

처음 셀(Cell)에 값을 입력하게 되면

그 값에 의해서 그 셀의 서식이 결정됩니다.

물론, 나중에

셀의 서식을 변경할 수 있습니다.


3905132

“2008년 3월 1일”의 값을 가진 셀에

9를 새로 대입했을 때에 일어나는 일입니다.

각각의 셀들은 Date 포멧을 가지므로,

숫자 9는 “1900년 1월 1일에서 부터 9일째 되는 날”

이라는 의미로 해석됩니다.

따라서 결과적으로 “1900년 1월 9일”이라는 결과를 얻게 됩니다.


3905132

엑셀에 1/2를 입력하면

2008년 1월 2일이 됩니다.

즉, 자동으로 날짜 서식으로 인식합니다.

분수 서식으로 바꾸고 싶다면

½은 0과 ½ 이므로

0 1/2 을 입력합니다.


3905132

개념 3

함수(Function)


3905132

함수 때문에 수학 어려워 죽겠는데

왜 여기서 또 함수에요~


3905132

No. No. No.

함수는 슈퍼맨


3905132

입력값 1

함수

결과값

입력값 2

입력값 3

복잡한 계산도

나 대신 알아서 척척척


3905132

슈퍼맨이 어떻게 우리를 구해주는지

우리는 알 필요도 알 수도 없다.

우리에게 필요한 것은

“슈퍼맨을 부르는 방법”


3905132

함수가 어떻게 계산해주는지

우리는 알 필요도 알 수도 없다.

우리에게 필요한 것은

“함수를 부르는 방법”


3905132

함수가 내부에서

어떻게 작동하는지(X)

함수에 어떤 값을 넣어주면

어떤 일을 내게 해주는지(O)


3905132

1

더하기함수

6

2

3

더해줘요!

이렇게 불러보자!

더하기함수(1,2,3) = 6


3905132

어떻게 저걸 다 더했는지 => 모른다.

우리가 기대하는 결과가 무엇인지

=> 반드시 알아야함


3905132

Excel에서의 함수(Function)


3905132

예제

합과 평균 구하기

Excel에서는 합과 평균을 구하기 위한

함수를 지원합니다.


3905132

삽입 -> 함수에 갑니다.


3905132

기본적으로

다양한 함수들을 살펴볼 수 있습니다.


3905132

조그마한 레고 블럭들을 조립해서

커다란 것을 만들 수 있는 것처럼

함수들을 조립해서

우리가 원하는

조금 더 복잡한 것들을 만들 수 있습니다.


3905132

함수 1

입력값1

함수 3

함수 4

결과값

입력값2

함수 2


Python

Python 프로그래밍 기초

서울대학교 컴퓨터 공학부

한재화


0 0 python

0-0. 파이썬(Python)이란?

  • 프로그래밍 언어의 한 종류

    • 귀도 반 로썸이 제작했다.

    • 동적 프로그래밍 언어

      • 인터프리터 방식

      • 대화형 명령어 해석기가 내장되어있다.

        • 명령의 결과를 바로 볼 수 있어 편함.

    • 공식 홈페이지

      • http://www.python.org


0 0 python1

0-0. 파이썬(Python)이란?

  • 왜 파이썬을 배우는가?

    • What about C or C++ ?

      • C언어나 , C++ 는 진입장벽이 높다.

        • 직관적이지 않은 언어구조로 인해 배우기 어렵다.

        • ‘포인터, 구조체’ 등의 부분도 역시 이해하기가 어렵다.

        • Visual하게 보여줄 수 있는 교육용 툴이 없다.

    • Python은?

      • 배우기 쉽다.

        • 문법이 간단하고,

        • 시각적으로 볼 수 있는 교육용 툴이 많이 존재한다.


0 0 python2

0-0. 파이썬(Python)이란?

  • 무얼 만들 수 있을까?

    • 상상할 수 있는 모든 것!

      • 범용 프로그래밍 언어이기 때문에

      • 콘솔 응용프로그램, 윈도우 응용프로그램, 웹 어플리케이션 등…

  • 어디에 쓰일까?

    • 배워봅시다. To be continued…


3905132

0-1. 파이썬 실행하기

  • 파이썬 커맨드라인

    • 시작 – 프로그램 – Python 2.5


3905132

0-1. 파이썬 실행하기

  • Using Python as a Calculator

    >>> 2+2

    4

    >>> (50-5*6)/4

    5

    >>> (3*4) + 2

    14


3905132

1-0. 기초문법

  • Using Variables

    • 데이터를 담을 수 있는 틀

      • 상수 : 고정된 숫자 (혹은 data)

      • 변수 : 때에 따라 바뀔 수 있는 숫자 (혹은 data)

        • 수학에서 말하는 미지수와 비슷합니다.

    • 변수끼리의 연산도 가능합니다.

      >>> x = 3

      >>> y = 4

      >>> x * y

      12


3905132

1-0. 기초문법

  • 사용자 입력 받기

    • raw_input(), input()사용

      • raw_input() : 사용자의 입력을 문자열로만 받아들임.

      • input() : 숫자를 입력받을 때 쓸 수 있다.

        Example:

        yourage = input(“당신의 나이는? :”)

        print ‘내년이면’ +

        str(yourage+1) + ‘살이겠군요’


3905132

1-0. 기초문법

  • Using Variables & User input


3905132

1-0. 기초문법

  • String

    • 문자열을 다뤄보기

      • 문자열 합치기

        • ‘+’ 연산 사용

      • 문자열 반복

        • ‘*’ 연산 사용

      • 문자열 변환

        • str() 변환 함수 사용


3905132

1-0. 기초문법

  • 문자열끼리의 덧셈 (concatenation)

    >>> print “안녕하세요! “ + “한재화입니다.”

    안녕하세요!한재화입니다.

    >>> str1 = “Hello, “

    >>> str2 = “World!”

    >>> str3 = str1 + str2

    >>> print str3

    Hello, World!

  • 문자열을 반복하기

    >>> print ‘다시는 거짓말을 하지 않겠습니다.’ * 1000

  • 문자열과 다른 것들 더하기 (type casting)

    >>> age = 23

    >>> print ‘저는 올해 ‘ + str(age) + ‘살 입니다.’


3905132

1-1. 반복문

  • Iteration & Control flow

    • 귀찮은 반복을 내가 안하고,

    • 경우에 따라 프로그램을 바꿔보자

      • while 문의 이용

        • 조건이 만족되는 동안에 명령 반복

      • if..else..elif 문을 이용한 흐름제어.

        • 조건의 만족되고 안되고를 따라서 명령을 다르게 실행

    • 반복과 흐름제어는 프로그램 진행제어의 기본


3905132

1-1. 반복문

  • 반복문 써보기 (while)

    • 조건이 참인 동안 명령들을 실행한다.

      while (조건) :

      실행할 명령들.

    • Example : Fibonacci

      >>> a, b = 0, 1

      >>> while b < 10 :

      print b

      a, b = b, a+b


3905132

1-1. 반복문

  • 잠깐!

    • 파이썬의 ‘들여쓰기’ 문법

      • 각 ‘블록’은 반드시 들여쓰기가 되어야 한다.

        • 다른 언어에서는 선택사항이나, 파이썬에서는 문법사항.

      • 차후에 나올 모든 블록들은 전부 들여쓰기가 되어야 한다.

        • 소스코드 작성할 때 주의하세요

      • 예 :

        …while (b < 10) :

        ……print b

        ……b = b+1

        ….print ‘end’


3905132

1-1. 반복문

  • 반복문 써보기 (while)

    • 깜지쓰기.

      num = 1

      while num <= 100 :

      print str(num) + ‘. 다시는 거짓말을 안하겠습니다.’ ,

      num = num + 1

    • 만약에 마지막 문장을 없애면 어떻게 될까?

      • 무한루프


3905132

1-1. 반복문

  • 출력결과 비교


3905132

1-1. 반복문

  • 반복문 써보기 (while)

    • 이중 루프

    • 반복구조를중첩하여명령을 반복.


3905132

1-2. 조건문

  • 흐름제어 (if… elif … else)

if (조건1)←조건1이 만족되면

문장1←문장1을 실행

elif (조건2)←조건1은 만족못하고 2를 만족한다면

문장2←문장 2를 실행

elif (조건3)←조건1, 2 도 만족 못하고 3을 만족한다면

문장3←문장 3을 실행

….

else←모든 조건을 만족하지 못한 경우,

문장4


3905132

1-2. 조건문

  • if 문 예제

조건식을 판단한다.

>>> age = 23

>>> if age < 10 :

print ‘꼬맹이네요’

... elif age < 20:

print ’10대 청소년이군요’

… elif age < 30:

print ’20대 이시군요’

… else :

print ‘늙으셨군요 ㅠ’

참 거짓을 갖고 있는 값으로 판단할 수도..

>>> BeCareful = True

>>>if BeCareful :

print ‘무사통과’

… else

print ‘Ouch!’


3905132

1-2. 조건문

  • 중첩된 if 문

    • if 안에 또 다른 if 문이 들어가있는 경우

      • 조건의 세분화를 위해 쓰여진다.

        if (조건1) :← 조건 1을 만족하면

        if (조건1-1) :← 조건 1-1도 만족하면

        else:← 1은 만족하지만 1-1을 만족안하면

        elif (조건2):

        if (조건2-1):

        elif (조건2-2):

        else :

        elif (조건3):


3905132

연습문제

  • Exercise

    • 1. 문자열다루기

      • 나이를 입력받아 100살까지 몇 년 남았나 계산하여 출력해보세요

    • 2. if문 & 반복문 연습

      • 화면에 ‘*’, ’+’ 문자로 80x80 정사각형을 그리되, 홀수줄에는 ‘*’로 , 짝수줄에는 ‘+’로 그리세요


3905132

연습문제

  • Exercise

    • 3. 입력한 숫자의 구구단을 출력해보세요

      • 시작하면서, 사용자로부터 숫자를 받아 while문을 이용해 입력한 숫자의 구구단을 출력합니다.

    • 4. Up/Down 게임을 만들어보세요

      • 컴퓨터가 생성한 랜덤한 숫자(=n)를 사용자가 추측해서 n보다 크면, ‘down’, n보다 작으면 , ‘up’ 을 출력합니다. 맞출때까지 합니다.


3905132

연습문제

  • 출력 예제


3905132

1-3. 함수

  • 함수?

    • 자주 사용되거나, 의미상 분리될 수 있는 명령들을 하나로 묶어 이름붙여 놓은 것.

      • 함수에 무얼 넘겨주면, 그것을 가공해서 결과를 넘겨줄 수 있다.

    • 수학에서의 의미와 비슷하다고 봐도 된다.

      • f(x) = 3x + 4

      • In python :

        >>> def f(x) :

        ...return 3*x + 4


3905132

1-3. 함수

  • 함수를 쓰는 이유는?

    • Example : 멋있는 성적계산 프로그램

      • 중간고사 30%, 기말고사 40%, 숙제 30%

      • 총 점수 = middle * 0.3 + final * 0.4 + home *0.3

    • 매번 수식을 쓸 필요 없이,

      • totalscore = middle*0.3 + final*0.4 + home *0.3

      • totalscore = grade(middle, final, home)

    • 의미상으로도 알아보기 쉽다.

      • ‘grade’는 성적 계산용 함수

      • ‘rank’ 는 등수 계산용 함수

      • ‘purchase’ 는 물건을 사는 함수


3905132

1-3. 함수

수학에서의 함수

파이썬에서의 함수

인자를 조작한다.

return값이 있다.

def f(x) :

return 3 * x + 2

def g(x,y) :

return 3*x + 2*y + 4

  • 매개변수를 조작한다.

  • 결과값이 있다.

  • f(x) = 3*x + 2

  • g(x, y) = 3*x + 2*y + 4

  • 꼭 숫자만조작의 대상이 되는것은 아닙니다.

  • 파이썬의 함수는 인자가 없을수도 있고, return 값이 없을 수도 있습니다.


3905132

1-3. 함수

  • 함수의 구성요소

    • 들어가는 것

      • 인자를 넘기는 것

    • 조작하는 부분

      • 인자를 조작하는 것

    • 나오는 것

      • return 문으로 결과를 반환


3905132

1-3. 함수

  • 함수 만들어보기

    • 형식 :

      def 함수이름(인자1, 인자2, 인자3, … ) :

      적절한 조작으로 gg를 받아낸다.

      return 결과

    • 예제:

      def my_info(name, age, job)

      report = "이름 : " + name + "\n" +

      "나이 : " + str(age) + "\n" +

      "직업 : " + job + "\n"

      return report

    • 호출 방법 :

      >>> print my_info(“한재화”, 23, “무직”)


3905132

1-3. 함수

  • 함수 작성과 호출 예제


3905132

1-3. 함수

  • 인자없는, 결과값없는 함수만들기

    • 인자없는 함수

      def three() : #괄호 안에 인자가 없음을 보자.

      return 3

    • 결과값 없는 함수

      def print_hello(): #인자도 없고,

      print “안녕하세요~! 한재화입니다.”

      # return도 없다


3905132

1-3. 함수

  • 인자없는, 결과값 없는 함수 만들기 예제

#반환값이 없다.

def greeting(name):

print “안녕하세요” + name +“님!”

#인자가 없다.

def three() :

return 3

#인자도 없고, 반환값도 없다.

def hello():

print “Hello, World!”


3905132

1-3. 함수

  • 함수들의 집합, 라이브러리

    • 우리가 직접 만들어 쓰기 어려운 함수들을 모아 묶어놓은 집합체

      • math : 수학관련 라이브러리

        • 제곱근 구하기, 삼각함수, 지수, 로그 함수등

      • turtle : 파이썬 교육용거북이그래픽 라이브러리

        • 뒤에 상세히 소개하겠음.

    • 쓰려거든,

      • import ‘라이브러리이름’


3905132

1-3. 함수

  • 쓸만한 수학함수들

    • 각종 계산에 쓰기 편리하게 math 라는 라이브러리에 각종 수학함수들을 모아놨다.

    • math.함수이름(인자,..) 식으로 사용 가능하다.

      • 사용하기 위해서는

        • import math 를 먼저 하고 사용하자.

    • 함수목록

      • acos, asin, atan, atan2, ceil, cos, cosh, degrees, e, exp, fabs, floor, fmod, frexp, hypot, ldexp, log, log10, modf, pi, pow, radians, sin, sinh, sqrt, tan, tanh


3905132

1-3. 함수

  • 함수의 합성

    • 수학에서도 함수를 합성할 수 있는것과 같이, 한 함수의 결과가 다른 함수의 인자로 쓰일 수 있다.

  • In Mathematics

    • f(x) = 3*x

    • g(x) = 4*x + 2

    • f(g(2)) = 30

  • In Python

  • def f(x) : return 3*x

  • def g(x) : return 4*x + 2

  • print f(g(2))


3905132

1-3. 함수

  • 수학함수의 이용, 합성 예제


3905132

연습문제

  • Exercise

    • 함수작성, 수학함수 사용하기

      • 1. 이름을 받아 환영인사를 출력하는 함수를 작성해보세요

        • Example :

          print greeting(“한재화”)

          안녕하세요, 한재화님. 날씨가 아직 쌀쌀하네요.

      • 2. 인자 두개를 받아 다음을 계산하여 반환하는 함수를 만드세요

        |sin(x) + cos(y)| * √(x+y)


2 0 turtleworld

2-0. TurtleWorld

  • What is TurtleWorld?

    • 파이썬 교육용 프로그램

      • turtle graphic이라는 직관적인 그래픽으로 프로그래밍연습을 하게 해주는 프로그램이다.

    • 무엇을 할까?

      • 간단한 그림 그리기

      • 반복, 흐름제어를 이용하여 멋있는 그림 그리기

      • 재귀그래픽을 그려봄으로써 재귀호출을 이해하기.


2 0 turtleworld1

2-0. TurtleWorld

  • TurtleWorld 다운로드 및 실행

    • http://allendowney.com/swampy/swampy.1.1.zip

    • 압축을 푼 후, TurtleWorld.py 파일을 더블클릭하여 실행한다.


2 0 turtleworld2

2-0. TurtleWorld

  • 몸풀기

    • 기본명령 익혀보기

      bob.fd(30)

      bob.lt()

      bob.fd(30)

      bob.lt()

      bob.fd(30)

      bob.lt()

      bob.fd(30)


2 0 turtleworld3

2-0. TurtleWorld

  • 명령어 목록

    • fd(x) : x만큼 앞으로 간다.

    • bk(x) : x만큼 뒤로 간다.

    • lt(a) : a도 만큼 좌회전

      • 인자를 주지 않으면, 90도 회전 (ex : lt() )

    • rt(a) : a도 만큼 우회전

      • 인자를 주지 않으면, 90도 회전

    • pd() : 펜을 누른다. (움직일 때마다 선이 그려짐)

    • pu() : 펜을 뗀다. (움직여도 선이 그려지지 않음)


2 0 turtleworld4

2-0. TurtleWorld

  • 프로그램 코드를 짜서 실행하기

    • 편집기에 (메모장 등..) 프로그램 코드를 짜서 turtle을 움직일 수도 있다.


3905132

2-1. 함수로 묶기

  • 함수 써보기

    • 주어진 크기의 사각형 그리기

      • 가로, 세로 크기를 받아 사각형을 그려보자

        • 함수작성 :

          def rect(t, w, h) : #t = 거북이,w=가로,h=세로

          t.fd(w)

          t.lt()

          t.fd(h)

          t.lt()

          t.fd(w)

          t.lt()

          t.fd(h)

        • 함수 호출 :

          rect(bob, 30 , 20)


3905132

2-1. 함수로 묶기

  • 함수써보기

    • 주어진 크기의 정삼각형 그리기

      def triangle(t, l) : # t=거북이, l=한변의길이

      t.fd(l)

      t.lt(120)

      t.fd(l)

      t.lt(120)

      t.fd(l)

      t.lt(120)


3905132

2-1. 함수로 묶기

  • 함수써보기

    • 앞에서 만든, 사각형, 삼각형 그리는 함수를 써서 집 모양을 그려보자.

      def house(t, w) :

      triangle(t, w)

      t.rt()

      rect(t,w,w)


3905132

2-1. 함수로 묶기

  • 함수 써보기

    • 원 그리기

      • import math 를 위에 적어줘야한다.

        def circle(t, r):

        delay = t.delay

        theta=0

        t.delay = 0

        while theta<360 :

        t.fd(r * radians(1))

        t.lt(1)

        theta=theta+1

        t.delay= delay


3905132

2-2. 반복문 연습

  • 반복문 연습하기

    • 원들을 여러 개 겹쳐 그리기

      def manycircle(t, r) :

      theta = 0

      while theta < 360 :

      circle(t,r)

      t.lt(30)

      theta = theta + 30


3905132

2-2. 반복문 연습

  • 원호 그리기

    • 특정각도까지만 그리다가 멈춤

      • circle 함수를 변형하자.

        def arc(t, r, angle) :

        delay = t.delay

        theta = 0

        t.delay = 0

        while theta < angle :

        t.fd(r * radians(1))

        t.lt(1)

        theta = theta + 1

        t.delay = delay


3905132

연습문제

  • Exercise

    • 함수 및 반복문 연습

      • 시작할때의 반지름을 주면, 나선모양을 그리는 함수, swirl(r)을작성해보세요

        • 힌트

          • 앞에서 만들었던 arc를 이용하면 됩니다.

          • 원호를 여러 개 이어 그린다고 생각합니다.

          • 이어 그릴 때마다 반지름이 조금씩 줄어들면 되겠지요.


3905132

연습문제

  • swirl함수 출력예제


3905132

연습문제

  • Exercise

    • 함수 및 반복문 연습

      • 다각형을 그려봅시다.

        • polygon(l , n) # l = 한변길이, n = 각의수

        • 힌트

          • 삼각형은, 120 (= 360/3) 도 만큼 회전, 직진

            • 세번반복.

          • 사각형은, 90 (= 360/4) 도 만큼 회전, 직진

            • 네번반복.

          • … n각형은, 360/n 도 만큼 회전, 직진


3905132

연습문제

  • polygon함수 출력예제

    • polygon(bob, 90, 6),polygon(toad, 60, 5)


3905132

2-3. 재귀 그래픽

  • 소용돌이 그리기

    • 사각소용돌이

      • └ 모양을 점점 더 작게 이어서 그려보자.

    • 원형소용돌이

      • 반원을 점점 더 작게 이어서 그려보자.

    • 어떻게 그릴까?

      • 반복문을 이용해서

      • 재귀호출을 이용해서


3905132

2-3. 재귀 그래픽

  • 사각 소용돌이

    def squareswirl(t, l, n) : # l=한변길이, n=횟수

    if n >= 0 :

    t.fd(l); t.lt(); t.fd(l); t.lt()

    squareswirl(t, l - 20, n-1)

    #현재것 보다 조금작은 선들을 또 그린다.


3905132

2-3. 재귀 그래픽

  • 원형 소용돌이

    def swirl(t, r, n) : # r=반지름, n=횟수

    if n >= 0 :

    arc(t, r, 180)

    swirl(t, r - 20, n - 1)

    #현재것 보다 조금작은 반원들을 또 그린다.


3905132

2-3. 재귀 그래픽

  • 나무 그리기

    • 나무 기본구조

      lt(30); fd(l); bk(l); rt(60)

      fd(l); bk(l); lt(30)

    • 나무들의 크기만 작아질 뿐,같은 모양

      • 빨간색, 파란색, 초록색 나무는모양이 같고, 크기만 점점 작아지는 형태.


3905132

2-3. 재귀 그래픽

  • 나무 그리기

    • 문제를 간단히 보자.

    • 나무 전체를 그리려면,

      • 왼쪽가지 그리고, 거기에 달린 작은 나무 그리고

      • 오른쪽가지 그리고, 거기에 달린 작은 나무 그리고

        def tree(길이)

        왼쪽가지;

        tree(좀 더 작은 길이로)

        제자리로;

        오른쪽가지;

        tree(좀 더 작은 길이로)

        제자리로;


3905132

2-3. 재귀 그래픽

  • 나무 그리기

    def tree(t, l, n) :

    if n >= 0 : # n=0 일 때는 수행하지 않음(종료)

    t.lt(30)

    t.fd(l)#왼쪽 가지

    tree(t, l/1.4, n-1)#왼쪽가지에 달린 나무

    t.bk(l)#제자리로

    t.rt(60)

    t.fd(l)#오른쪽가지

    tree(t, l/1.4, n-1)#오른쪽가지에 달린 나무

    t.bk(l)#제자리로

    t.lt(30)


3905132

2-3. 재귀 그래픽

  • 나무 그리기

    • 단계에 따른 여러 형태들.


3905132

2-3. 재귀 그래픽

  • C curve

    • C curve 생성법칙

      • C 커브 →

        시계방향으로 45도, 작은 C 커브, 반시계방향으로 90도, 작은 C 커브, 시계방향 45도

      • F → +F--F+

      • 기본조건 (n == 0) : 앞으로 직진 (fd(l))


3905132

2-3. 재귀 그래픽

  • C curve

    • 함수작성하기

      • n==0 인 경우 (마지막), 아닌경우로 나눈다.

      • 마지막 경우에는, 단지 직진

        def c_curve(t, l, n) :

        if n > 0 :

        t.rt(45)

        c_curve(t, l/2.0, n-1)

        t.lt(90)

        c_curve(t, l/2.0, n-1)

        t.rt(45)

        elif n == 0:

        t.fd(l)


3905132

2-3. 재귀 그래픽

  • Koch 곡선

    • Koch 곡선 생성법칙

      • Koch곡선 →

        작은 Koch, 왼쪽으로 60도, 작은 Koch, 오른쪽으로 120도,

        작은 Koch, 왼쪽으로 60도, 작은 Koch.

      • 기본조건 (n == 0)

        • 앞으로 직진 (fd(l))


3905132

2-3. 재귀 그래픽

  • Koch 곡선

    • 함수작성하기

      • 마지막 경우 (n==0)와 아닌 경우로 나눈다.

      • 마지막 경우에는 단지 직진한다.

        def koch(t, l, n) :

        if n > 0 :

        koch(t, l/3.0, n-1) ; t.lt(60)

        koch(t, l/3.0, n-1) ; t.rt(120)

        koch(t, l/3.0, n-1) ; t.lt(60)

        koch(t, l/3.0, n-1)

        elif n ==0 :

        t.fd(l)


3905132

연습문제

  • 재귀 그래픽

    • 코흐의 눈송이

      • 코흐 곡선을 세개 이어 붙여서 코흐의 눈송이를 만들어봅시다.

      • Hint :

        • (코흐 곡선을 그린후, 120도 우회전) * 3


3905132

2-4. 마무리

  • 더 나아가서 …

    • 재귀 함수의 실제적 이용

      • 시각적인 재귀함수 외에 다른 여러 개념들

    • 객체지향 프로그래밍

      • 클래스, 상속 등..

    • TkInter 윈도우 프로그래밍

      • 윈도우에서 돌아가는 프로그램 제작

    • 다른 언어

      • C와 C++은 한번쯤 배워둬야 할 언어


Python1

Python 프로그래밍 기초

-끝-

감사합니다.


  • Login