정보교육을위한파이썬 정보탐색 Version d2 저자 : Charles Severance 번역 : 이광춘, 한정수 (xwmooc)

Size: px
Start display at page:

Download "정보교육을위한파이썬 정보탐색 Version d2 저자 : Charles Severance 번역 : 이광춘, 한정수 (xwmooc)"

Transcription

1 정보교육을위한파이썬 정보탐색 Version d2 저자 : Charles Severance 번역 : 이광춘, 한정수 (xwmooc)

2 Copyright Charles Severance. Printing history: October 2013: Major revision to Chapters 13 and 14 to switch to JSON and use OAuth. Added new chapter on Visualization. September 2013: Published book on Amazon CreateSpace January 2010: Published book using the University of Michigan Espresso Book machine. December 2009: Major revision to chapters 2-10 from Think Python: How to Think Like a Computer Scientist and writing chapters 1 and to produce Python for Informatics: Exploring Information June 2008: Major revision, changed title to Think Python: How to Think Like a Computer Scientist. August 2007: Major revision, changed title to How to Think Like a (Python) Programmer. April 2002: First edition of How to Think Like a Computer Scientist. This work is licensed under a Creative Common Attribution-NonCommercial-ShareAlike 3.0 Unported License. This license is available at creativecommons.org/licenses/ by-nc-sa/3.0/. You can see what the author considers commercial and non-commercial uses of this material as well as license exemptions in the Appendix titled Copyright Detail. The LATEX source for the Think Python: How to Think Like a Computer Scientist version of this book is available from

3 Chapter 1 왜 프로그래밍을 배워야 하는가? 컴퓨터 프로그램을 만드는 행위(프로그래밍)는 매우 창의적이며 향후 뿌린 것 이상으로 얻을 것이 많다. 프로그램을 만드는 이유는 어려운 자료분석의 문제를 해결하려는 것에서부터 다른사람의 문제를 해결해주는 재미를 느끼는 것까지 다양한 이유가 있다. 이 책에서 모든 사람이 어떻게 프로그램을 만드는지를 알 고, 프로그램을 만드는지를 알게되면, 새로 습득한 프로그래밍 기술로 원하는 것을 해결할 수 있는 것을 배우게 된다. 우리의 일상은 노트북부터 핸드폰까지 다양한 컴퓨터에 둘러싸여 있다. 이러한 컴퓨터가 개인비서로 우리를 위해서 많은 일을 대신해 준다고 생각한다. 일상생 활에서 접하는 컴퓨터 하드웨어는 우리에게 다음에 무엇을 하면 좋겠습니까? 라는 질문을 지속적으로 물어보게 만들어 졌다. What Next? What Next? What Next? What Next? What Next? What Next? PDA 프로그래머는 운영체제와 하드웨어에 응용 프로그램을 만들었고, 결국 많은 것 들을 도와주는 PDA(Persoanl Digital Assistant)로 진화했다. 컴퓨터는 빠르며, 큰 저장소를 가지고 있어 우리가 컴퓨터에게 다음꺼 실행해(do next)를 컴퓨터 가 이해할 수 있는 말로 지시를 하게되면 우리에게 매우 유용할 수 있다. 예를 들어, 다음의 세 문단을 보고 가장 많이 나오는 문단의 단어를 찾아보고 얼마나 나오는지를 알려주세요라고 컴퓨터에게 시킬 수 있다. 사람이 몇초만에 단어를 읽고 이해할 수는 있지만, 그 단어가 몇번 나오는지를 세는 것은 매우 고생스렁운 과정이다. 왜냐하면 사람은 지루하고 반복되는 일의 문제를 해결하 는데 적합하지 않기 때문이다. 컴퓨터는 정반대이다. 논문이나 책에서 텍스트를 읽고 이해하는 것은 컴퓨터에게 어렵다. 하지만 단어를 세고 가장 많이 사용되는 단어를 말해주는 것은 컴퓨터에게는 무척이나 쉽다. python words.py

4 Chapter 1. 왜 프로그래밍을 배워야 하는가? 2 Enter file:words.txt to 16 우리의 개인 정보분석 비서는 to 라는 단어가 가장 많이 사용되었고 16번 나왔 다고 바로 답을 준다. 사람이 잘하지 못하는 점을 컴퓨터가 잘할 수 있다는 사실을 이해하면 왜 컴퓨 터 언어로 컴퓨터와 대화해야 하는지를 알 수 있다. 컴퓨터와 대화할 수 있는 언어(Python)를 배우게되면 지루하고 반복되는 일을 컴퓨터가 처리하게 하면 더 많은 시간을 창의적이고, 직관적이며, 창조적인 시간을 컴퓨터와 함께 할 수 있다. 1.1 창의성과 동기 이책은 직업 프로그래머를 위해서 저작된 것은 아니지만, 직업적으로 프로그램 을 만드는 작업은 개인적으로나 경제적인면에서 꽤 매력적인 일이다. 특히, 유 용하며, 심미적이고, 똑똑한 프로그램을 다른 사람이 사용할 수 있도록 만드는 것은 매우 창의적인 일이다. 컴퓨터는 다양한 그룹의 프로그래머들이 사용자의 관심과 시선을 빼았기 위해서 경쟁적으로 다양한 프로그램을 가지고 있다. 이렇 게 개발된 프로그램은 사용자가 원하는 바를 충족시키고 훌륭한 사용자 경험을 주려고 노력한다. 이러한 상황에서 사용자가 소프트웨어를 고르게 될 때 고객의 선택에 대해서 프로그래머는 직접적으로 보상을 받게된다. 만약 프로그램을 프로그래머 집단의 창의적인 결과물로 바라본다면, 아마도 다 음의 그림이 PDA 컴퓨터에 의미가 있을 듯 하다. Pick Me! Pick Me! Pick Me! Pick Me! Pick Me! Buy Me :) PDA 우선은 프로그래을 만드는 주된 동기가 사업을 위한다던가 사용자를 기쁘게 한 다기 보다는 일상생활에서 맞닥드리는 자료와 정보를 잘 다뤄 좀더 생산적으로 우리의 삶을 만드는데 초점을 잡아보자. 프로그램을 만들기 시작할 때 여러분 모두는 프로그래머이면서 동시에 자신이 만든 프로그램의 사용자가 된다. 프로 그래머로서 기술을 습득하고 프로그래밍 자체로 창의적으로 느껴진다면, 여러 분은 다른 사람을 위해 프로그램을 개발하게 준비가 된 것이다. 1.2 컴퓨터 하드웨어 아키텍처 소프트웨어 개발을 위해 컴퓨터에 지시 명령어를 전달하기 위한 컴퓨터 언어 를 배우기 전에, 컴퓨터가 어떻게 구성되어 있는지 이해할 필요가 있다. 컴퓨터 혹은 핸드폰을 분해해서 안쪽을 살펴보면, 다음의 주요 부품을 발견할 수 있다.

5 1.2. 컴퓨터 하드웨어 아키텍처 Software Input Output Devices 3 What Next? Central Processing Unit Main Memory Network Secondary Memory 주요 부품을 살펴보자. 중앙처리장치(Central Processing Unit, CPU): 다음은 무엇을 할까요? ( What is next? ) 명령어를 처리하는 주요 부분이다. 컴퓨터가 3.0 GHz 라면 초당 명령어(다음은 무엇을 할까요? What is next?)를 삼백만번 처 리할 수 있다고 계속 물을 수 있다. CPU의 처리속도를 따라서 컴퓨터와 빠르게 대화하는 것을 배울 것이다. 주 기억장치(Main Memory): 주기억장치는 중앙처리장치(CPU)가 급하 게 명령어를 처리하기 위해 필요로 하는 정보를 저장하는 용도로 사용된 다. 주 기억장치는 중앙처리장치만큼이나 빠르다. 그러나 주기억장치에 저장된 정보는 컴퓨터가 꺼지면 자동으로 지워진다. 보조 기억장치 보조 기억장치는 정보를 저장하기 위해 사용되지만, 주기억장치보다 속 도가 느리다. 전기가 나갔을 때도 정보를 기억하는 것이 장점이다. 휴대용 USB 기억장치나 이동 MP3 플레이어에 사용되는 USB의 플래쉬 메모리 나 디스크 드라이브가 여기에 속한다. 입출력장치(Input Output Devices): 간단하게 화면, 키보드, 마우스, 마 이크, 스피커, 터치패드가 포함된다. 컴퓨터와 사람이 상호작용하는 방식 이다. 네트워크(Network): 요즘 거의 모든 컴퓨터는 네트워크로 정보를 주고 받 는 네트쿼크 커넥션(Network Connection) 하드웨어를 가지고 있다. 네트 워크는 정보를 저장하는 느린 저장소로 혹은 때때로 원하는 정보를 가져 오지 못하는 것으로 보조 기억장치(Secondary memory)로 생각할 수 있다. 어떻게 이러한 주요 부품들이 작동하는지에 대한 자세한 사항은 컴퓨터를 만드 는 사람에게 달려있지만, 프로그램을 만들때 컴퓨터 주요부품에 대해서 언급되 어 컴퓨터 전문용어를 습득하고 이해하는 것은 도움이 된다. 프로그래머로서 여러분들은 사용자가 원하는 자료를 분석하고 문제를 풀 수 있 는 컴퓨터 자원들을 사용하고 오케스트레이션하는 것이다.

6 Chapter 1. 왜 프로그래밍을 배워야 하는가? 4 Software Input Output Devices What Next? Central Processing Unit Main Memory Network Secondary Memory You 프로그래머로 중앙처리장치(CPU)와 대화하며 다음은 무엇을 수행하세요 라 고 지시할 것이다. 때때로 중앙처리장치(CPU)에게 주 기억장치, 보조 기억장치, 네트워크, 입출력 장치를 사용하라고 지시할 것이다. 프로그래머는 컴퓨터의 다음은 무엇을 수행할까요 에 대한 답을 하는 사람이 기도 하다. 하지만, 컴퓨터에 답하기 위해서 5mm 크기로 컴퓨터에 프로그래 머를 집어넣고 초당 30억개의 명령어로 답을 하는 것은 매우 불편할 것이다. 그래서, 미리 컴퓨터에게 수행할 명령문을 써놔야한다. 이렇게 미리 작성된 명 령문의 집합을 프로그램(Program)이라고 하며, 명령어 집합을 작성하고 명령 어 집합이 올바르게 작성될 수 있도록 하는 행위를 프로그래밍(Programming) 이라고 부른다. 1.3 프로그래밍 이해하기 책의 나머지 장을 통해서 책을 읽고 있는 당신을 프로그래밍의 장인으로 인도할 것입니다. 종국에는 책을 읽고 있는 여러분은 프로그래머가 될 것입니다. 아마 도 전문적인 프로그러머는 아닐지라도 적어도 자료/정보 분석 문제를 보고 그 문제를 풀수 있는 기술을 가지게는 될 것입니다. 이런 점에서 프로그래머가 되려면 두가지 기술이 필요로 합니다. 첫째, 파이썬같은 프로그래밍 언어 - 어휘와 문법을 알 필요가 있습니다. 단어를 새로운 언어에 맞추어 쓸 수 있어야 하며 새로운 언어를 잘 표현된 문장으로 구성하는지를 알아야 합니다. 둘째, 스토리(Story)를 말 할 수 있어야 합니다. 스토리를 만들때, 독자에 게 우리의 아이디어(idea)를 전달하기 위해서 단어와 문장을 조합합니다. 스토리를 만들 때 기술과 예술적인 면이 있으며, 기술과 예술적인 면은 여러번 쓰기 연습을 통하고 피트백을 받으므로써 향상됩니다. 프로그래 밍에서, 우리가 만든 프로그램은 스토리이고, 풀려고 하는 문제는 아이 디어 에 해당합니다.

7 1.4. 단어와 문장 5 파이썬과 같은 프로그래밍 언어를 배우게 되면, 자바스크립트나 C++ 같은 두 번째 언어를 배우는 것은 무척이나 쉽습니다. 새로운 프로그래밍 언어는 매우 다른 어휘와 문법을 가지지만, 문제푸는 기술을 배우기만 하면, 모든 프로그래 밍 언어에서로 동일하게 접근할 수 있습니다. 파이썬의 어휘와 문단은 금방 배웁니다. 새로운 종류의 문제를 풀기위해 논리 적인 프로그램을 짜는 것은 오래 걸립니다. 여러분은 작문을 배우듯이 프로그래 밍을 배우게 될 것입니다. 프로그래밍을 읽고 설명하는 것으로 시작해서 간단한 프로그램을 작성하고, 점차적으로 복잡한 프로그램을 작성하게될 것입니다. 어 느 순간에 명상에 잠기게 되고, 문제해결과 프로그램의 패턴을 보게되고, 좀더 자연스럽게 어떻게 문제를 받아들여 그 문제를 해결할 수 있는 프로그램을 작성 하게 될 것입니다. 그리고, 그 순간에 도착하게 되면, 프로그래밍은 매우 즐겁고 창의적인 과정이 될 것입니다. 파이썬 프로그램의 어휘와 구조로 시작을 합니다. 간단한 예제가 언제 처음으로 프로그램을 읽기 시작했는지를 일깨워 주니 인내심을 가지세요. 1.4 단어와 문장 사람의 언어와 달리, 파이썬의 어휘는 실질적으로 매우 적다. 어휘를 예약어 (researved words)로 부른다. 이들 단어는 파이썬에 매우 특별한 의미를 가진다. 파이썬 프로그램에서 파이썬이 이들 단어를 보게되면, 이들 단어는 파이썬에게 단 하나의 유일한 의미를 지니게 된다. 후에 여러분들이 프로그램을 작성할 때 여러분들이 만든 자신만의 단어를 작성하게 되는데 이를 변수(Variable)라고 합니다. 여러분의 변수의 이름을 지을 때 폭넓은 자유를 가질 수 있지만, 변수의 이름으로 파이썬의 예약어를 사용할 수는 없습니다. 이런 점에서 강아지를 훈련시킬 때 앉아, 기달려, 가져와 같은 특별한 어휘 를 사용합니다. 강아지에게 이런 특별한 예약어를 사용하지 않을 때, 강아지는 주인이 특별한 어휘를 사용하지 않을 때 주인을 물끄러미 쳐다보기만 합니다. 예를 들어, 여러분이 더 많은 사람들이 건강을 전반적으로 향상하는 방향으로 가자 원한다 고 말하면, 강아지가 든는 것은 뭐라 뭐라 뭐라 walk 뭐라 이렇 게 들릴 것이다. 왜냐하면 가자 가 강아지의 언어에는 예약어1 이기 때문이다. 이러한 사실은 개와 사람사이에는 예약어가 없다는 것을 의미할지도 모른다. 사람이 파이썬에게 말을 하는 예약어는 다음과 같은 것이 있다. and as assert break class continue def del elif else except exec finally for from global if import in is lambda 1 not or pass print raise return try while with yield

8 Chapter 1. 왜 프로그래밍을 배워야 하는가? 6 강아지의 사례와는다르게 파이썬은 이미 완벽하게 훈련이 되어 있다. 여러분이 try 라고 말하면, 파이썬은 여러분이 매번 try 라고 말할 때마다 실패 없이 시도를 할 것이다. 이러한 예약어를 배울 것이고 어떻게 잘 사용되는지도 함께 배울것이지만, 지 금은 파이썬에 말하는 것에 집중할 것이다. 파이썬에게 말하는 것 중 좋은 것은 다음과 같은 메세지를 던지는 것으로도 파이썬에 말을 할 수 있다는 것이다. print 'Hello world!' 이 간단한 문장이 파이썬의 구문(Syntax)론적으로 완벽하다. 위 문장은 예약어 print 로 시작해서 출력하고자 하는 문자열을 작은 따옴표로 감싸안아 올바르 게 파이썬에게 전달했다. 1.5 파이썬과 대화하기 파이썬으로 우리가 알고 있는 단어를 가지고 간단한 문장을 만들었고, 새로운 언어 기술을 시험하기 위해서 파이썬과 대화를 어떻게 하는지 알 필요가 있다. 파이썬과 대화를 시작하기 전에, 파이썬 소프트웨어를 컴퓨터에 설치하고 컴 퓨터에서 파이썬을 어떻게 실행하는지를 배워야 한다. 이번장에서 다루기에는 너무 구체적이고 자세한 사항이기 때문에 참조하는 것을 권고한다. 자세한 설치 방법과 화면을 캡쳐하여 윈도우와 매킨토쉬 시스 템 및 실행하는 방법을 설명하였다. 설치가 마무리되고 터미널이나 명령어 실 행창에서 python을 치게되면 파이썬 인터프리터가 인터랙티브 모드로 실행을 시작하고 다음과 같은 것이 화면에 뿌려진다. Python (r261:67515, Jun , 21:47:49) [GCC (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> 프롬프트는 파이썬 인터프리터가 여러분에게 요청하는 방식이다. 다음에 파이썬이 무엇을 실행하기를 원합니까? 파이썬은 여러분과 대화를 나눌 준비 가 되었다. 이제 남은 것은 파이썬 언어로 어떻게 말하는 지를 여러분이 아는 것이고 여러분은 대화를 할 수 있다. 예를들어 여러분이 가장 간단한 파이썬 언어의 단어나 문장 조차도 알수가 없 다고 가정해 봅시다. 우주 비행사가 저 멀리 떨어진 행성에 착륙할 때 사용하는 간단한 말을 사용하여 행성의 거주민에게 대화를 시도한다고 생각해 봅시다. >>> I come in peace, please take me to your leader File "<stdin>", line 1 I come in peace, please take me to your leader ˆ SyntaxError: invalid syntax >>>

9 1.5. 파이썬과 대화하기 7 잘 되는것 같지 않습니다. 뭔가 빨리 다른 생각을 하지 않는다면, 행성의 거주민 은 창으로 찔르고, 기름에 잘 발라 불위에서 바베큐를 만들어 저녁으로 먹을 듯 합니다. 운 좋게도 기나긴 우주 여행중 이책의 복사본을 가지고 와서 다음과 같이 빠르게 친다고 생각해봅시다. >>> print 'Hello world!' Hello world! 훨씬 좋아보기고, 좀더 커뮤니케이션을 이어갈 수 있을 것으로 보입니다. >>> print 'You must be the legendary god that comes from the sky' You must be the legendary god that comes from the sky >>> print 'We have been waiting for you for a long time' We have been waiting for you for a long time >>> print 'Our legend says you will be very tasty with mustard' Our legend says you will be very tasty with mustard >>> print 'We will have a feast tonight unless you say File "<stdin>", line 1 print 'We will have a feast tonight unless you say ˆ SyntaxError: EOL while scanning string literal >>> 이번 대화는 잠시동안 잘 진행되다가 여러분이 파이썬 언어로 말하다가 정말 사소한 실수를 저질러 파이썬이 오류를 뱉어낸다. 이번에 파이썬이 놀랍도록 복잡하고 강력하고 파이썬과 의사소통을 할때 사용 하는 신택스(syntax)가 매우 까다롭다는 것은 알 수 있었다. 파이썬은 다른말로 똑똑(Intelligent)하지는 않다. 지금까지 여러분은 자신과 대화를 저절한 신택스 (syntax)를 가지고 대화를 했습니다. 여러분이 다른사람이 작성한 프로그램을 사용한다는 것은 여러분과 파이썬을 사용하는 다른 프로그래머가 파이썬을 중간 매개체로 대화를 하는 것으로 볼 수 있습니다. 파이썬은 프로그램을 만든 저작자가 어떻게 대화가 진행되어져야 하 는지를 표현하는 방식입니다. 다음 몇 장에 걸쳐서 여러분은 파이썬을 이용하여 여러분의 프로그램을 이용하는 다른 많은 프로그래머 중의 한명이 될 것입니다. 파이썬 인터프리터와 대화하는 첫 장을 끝내기 전에, 파이썬 행성의 거주자에게 안녕히 계세요 를 말하는 적절한 방법을 알아야 한다. >>> good-bye Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'good' is not defined >>> if you don't mind, I need to leave File "<stdin>", line 1 if you don't mind, I need to leave ˆ SyntaxError: invalid syntax >>> quit()

10 Chapter 1. 왜 프로그래밍을 배워야 하는가? 8 위 처음 두개의 시도는 다른 오류 메세지를 출력한다. 두번째 오류는 다른데 이유는 if가 예약어이기 때문에 파이썬은 이 예약어를 보고 뭔가 다른 것을 말한 다고 생각하지만, 잠시 후 문장의 신택스가 잘못됐다고 판정하고 오류를 뱉어 낸다. 파이썬에게 안녕히 계세요 를 말하는 올바른 방식은 인터렉티브 >>> 프롬프 트에서 quit()를 입력하는 것이다. 1.6 전문용어: 인터프리터와 컴파일러 파이썬은 사람이 읽고 쓸수 있고 컴퓨터도 읽고 쓸 수 있도록 고안된 하이레벨 (High-level) 언어이다. 다른 하이레벨 언어는 자바, C++, PHP, 루비, 베이직, 펄, 자바스크립트 등 다수가 있다. 중앙처리장치(CPU)내에서 실제 하드웨어 수준 에서 이런 하이레벨 언어를 이해하지 못한다. 중앙처리장치는 우리가 기계어(machine-language)로 부르는 언어만 이해한다. 기계어는 매우 간단하고 솔직히 작성하기에는 매우 지루하다. 왜냐하면 모두 0 과 1로만 표현되기 때문이다 과 1로만 되어 있기 때문에 기계어가 간단해 보이지만, 시택스는 복잡하고 파이 썬보다 훨씬 어렵다. 그래서 매우 소수의 프로그래머만이 기계어를 쓸수 있다. 대신에 파이썬과 자바스크립트 같은 하이레벨 언어로 프로그래머가 작성할 수 있도록 다양한 번역기(translator)를 만들었다. 이들 번역기는 프로그램을 중앙 처리장치에 의해서 실제 실행이 가능한 기계어로 변환하여 준다. 기계어는 컴퓨터하드웨어에 묶여있기 때문에 기계어는 다른 형식의 하드웨어 에 이식(portable)이 되지 않는다. 하이레벨 언어로 작성된 프로그램은 새로운 하드웨어위에 다른 인터프리터를 이용하여 옮겨 실행이 가능하고 다른 하드웨 어에 사용할 수 있도록 프로그램을 다시 컴파일하여 사용할 수 있다. 프로그래밍 언어의 번역기는 두가지 범주가 있다. (1) 인터프리터 (2) 컴파일러 인터프리터는 프로그래머에 의해서 쓰여진 소스코드를 읽고, 소스코드를 파싱 하고, 즉석에서 명령어를 해석한다. 파이썬은 인터프리터다. 파이썬을 인터렉트 브 모드로 실행할때, 파이썬 명령문을 쓰면, 파이썬이 즉성에서 처리하고, 다른 파이썬 명령어를 여러분으로부터 기다린다. 파이썬 명령어는 파이썬이 나중에 사용될 값을 기억하기를 바란다. 적당한 이름 을 잡아서 그 값을 기억시키고, 나중에 그 이름을 호출하여 값을 사용할 수 있다. 이러한 목적으로 값을 저장하는 것을 변수(variable)라고 한다. >>> x = 6 >>> print x 6 >>> y = x * 7

11 1.6. 전문용어: 인터프리터와 컴파일러 9 >>> print y 42 >>> 이 예제에서 파이썬이 x라는 라벨을 사용하여 6이라는 값을 저장하기를 바라고 나중에 사용코저 한다. print 예약어를 사용하여 파이썬이 잘 기억하고 있는지 를 검증한다. 그리고 x를 반환하여 7을 곱하고 새로운 변수 y에 값을 집어 넣는 다. 그리고 y에 현재 무엇이 저장되어 있는지 출력하라고 파이썬에게 요청한다. 파이썬에 한줄 한줄 명령어를 쳐 넣고 있지만, 파이썬은 앞쪽에 명령문에서 생 성된 자료가 나중의 실행 명령문에서 사용될 수 있도록 정렬된 명령문으로 처 리한다. 방금전 논리적이고 의미있는 순서로 4줄의 명령문을 가진 한 단락을 작성한 것이다. 위에서 본것처럼 파이썬과 대화를 주고받을 수 있는 것이 인터프리터의 본질이 다. 컴파일러는 완전한 프로그램을 하나의 파일에 담겨지고, 하이레벨 소스코 드가 기계어로 번역되고, 컴파일러가 나중에 실행되도록 기계어를 파일에 담아 놓는다. 윈도우를 사용한다면, 실행가능한 기계어 프로그램의 확장자가.exe (executable), 혹은.dll (dynamically loadable library)임을 확인할 수 있다. 리눅스와 매키토쉬에서는 실행화일을 의미하는 확장자는 없다. 텍스트 편집기에서 실행파일을 열게되면 다음과 같은 읽을 수 없는 좀 괴상한 출력을 화면상에서 확인할 수 있다. ˆ?ELFˆAˆAˆAˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆBˆ@ˆCˆ@ˆAˆ@ˆ@ˆ@\xa0\x82 ˆDˆH4ˆ@ˆ@ˆ@\x90ˆ]ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@4ˆ@ ˆ@ˆGˆ@(ˆ@$ˆ@!ˆ@ˆFˆ@ ˆ@ˆ@4ˆ@ˆ@ˆ@4\x80ˆDˆH4\x80ˆDˆH\xe0ˆ@ˆ@ˆ@\xe0ˆ@ˆ@ˆ@ˆE ˆ@ˆ@ˆ@ˆDˆ@ˆ@ˆ@ˆCˆ@ˆ@ˆ@ˆTˆAˆ@ˆ@ˆT\x81ˆDˆHˆT\x81ˆDˆHˆS ˆ@ˆ@ˆ@ˆSˆ@ˆ@ˆ@ˆDˆ@ˆ@ˆ@ˆAˆ@ˆ@ˆ@ˆA\ˆDˆHQVhT\x83ˆDˆH\xe8... It is not easy to read or write machine language so it is nice that we have interpreters and compilers that allow us to write in a high-level language like Python or C. Now at this point in our discussion of compilers and interpreters, you should be wondering a bit about the Python interpreter itself. What language is it written in? Is it written in a compiled language? When we type python, what exactly is happening? The Python interpreter is written in a high level language called C. You can look at the actual source code for the Python interpreter by going to and working your way to their source code. So Python is a program itself and it is compiled into machine code and when you installed Python on your computer (or the vendor installed it), you copied a machine-code copy of the translated Python program onto your system. In Windows the executable machine code for Python itself is likely in a file with a name like: C:\Python27\python.exe

12 Chapter 1. 왜 프로그래밍을 배워야 하는가? 10 That is more than you really need to know to be a Python programmer, but sometimes it pays to answer those little nagging questions right at the beginning. 1.7 프로그램 작성하기 파이썬 인터프리터에 명령어를 치는 것은 파이썬의 주요기능을 알아볼 수 있는 좋은 방법이지만 좀더 복잡한 문제를 해결하기 위해서는 권해드리지는 않습 니다. 프로그램을 작성할 때 스크립트(script)로 불리는 파일에 명령어 집합을 작성하 기 위해서 텍스트 편집기를 주로 사용합니다. 파이썬 스크립트는.py라는 확장 자를 가집니다. 스크립트를 실행하기 위해서 파이썬 인터프리터에게 파일의 이름을 말해줍니 다. 유니스나 윈도우 명령창에서 python hello.py를 치게 되면 다음과 같은 결과를 얻게 됩니다. csev$ print csev$ Hello csev$ cat hello.py 'Hello world!' python hello.py world! csev$ 은 운영시스템의 명령어 프롬프트이고, cat hello.py 는 문자열을 출력 하라는 한줄의 파이썬 프로그램을 표시하라는 명령어입니다. 인터랙트브 모드로 파이썬 코드를 보여달라는 방식 대신에 파이썬 인터프리터 를 호출하고 hello.py 파일에서 소스코드를 읽으라고 말하는 것입니다. 이 새로운 방식은 파이썬 프로그램을 끝내기 위해 quit()를 사용할 필요가 없 는 것이 좋은 점입니다. 파이썬이 파일에서 소스코드를 읽을 때, 파일 끝까지 읽게되면 파이썬은 자동으로 끝낼 줄을 알고 있습니다. 1.8 프로그램이란 무엇인가? 프로그램(Program)의 가장 기본적인 정의는 어떠한 일을 할 수 있도록 조작된 일련의 파이썬 명령문의 집합이다. 가장 간단한 hello.py 스크립트도 프로그램 이다. 한줄의 프로그램으로 특별히 유익하고 쓸모가 있는 것은 아니지만 엄격한 의미에서 파이썬 프로그램이 맞다. 프로그램을 이해하는 가장 쉬운 방법은 프로그램이 어떠한 문제를 풀려고 만들 어졌는지 문제를 먼저 생각하는 것이다. 그리고 그 문제를 풀려고 작성된 프로 그램을 살펴보는 것이다. 예를 들어 여러분이 페이스북의 일련의 게시된 글에 가장 자주 사용된 단어에 관심을 가지고 소셜 컴퓨팅 연구를 한다고 생각해 봅시다. 페이스북에 게시된

13 1.8. 프로그램이란 무엇인가? 11 글들을 출력하고 가장 흔한 단어를 찾으로 열심히 들여다 볼 것이지만 매우 오래 걸리고 실수하기 쉽습니다. 하지만 파이썬 프로그램을 이용하면, 빨리 정확하게 작업을 할 수 있는 파이썬 프로그램을 작성해서 주말에 뭔가 재미있는 일로 보낼 수 있습니다. 예를 들어 다음의 자동차(car)와 광대(clown)를 보고, 가장 많이 나오는 단어는 무엇이며 몇번 나왔는지 세어보세요. the clown ran after the car and the car ran into the tent and the tent fell down on the clown and the car 그리고, 몇백만줄의 텍스트를 보고서 동일한 일을 한다고 상상해 보세요. 솔직 히 수작업으로 단어를 세는 것보다 파이썬을 배워 프로그램을 배우는 것이 훨씬 빠를 것입니다. 더 좋은 소식은 이미 텍스트 파일에서 가장 자주 나오는 단어를 찾아내는 간단한 프로그램을 제시했고, 작성했고, 시험까지 했다. 이걸 가지고 여러분들은 바로 사용을 할 수 있기 때문에 수고를 덜 수 있다. name = raw_input('enter file:') handle = open(name, 'r') text = handle.read() words = text.split() counts = dict() for word in words: counts[word] = counts.get(word,0) + 1 bigcount = None bigword = None for word,count in counts.items(): if bigcount is None or count > bigcount: bigword = word bigcount = count print bigword, bigcount 이 프로그램을 사용하려고 파이썬을 알 필요도 없다. 10장에 걸쳐서 멋진 파 이썬 프로그램을 만드는 방법을 배우게 될 것입니다. 지금 여러분은 사용자로 단순히 프로그램을 사용하지만 이 프로그램이 얼마나 많은 수작업을 줄일 수 있는지 보여주고 있다. 코드를 작성하고 words.py로 저장하여 실행을 하거나, 소스코드를 다운로드 받아 실행하 면 된다. 파이썬과 파이썬 언어가 중간의 중개자로서 여러분(사용자)과 저자(프로그래 머)사이에서 중개자의 역할을 훌륭히 하고 있는 것을 보여주고 있습니다. 파이 썬이 설치된 컴퓨터에서 누구나 사용할 수 있는 공통의 언어로 유용한 명령 순서 (즉, 프로그램)를 주고받는지 보여준다. 그래서 파이썬과 직접의사소통하지 않 고 파이썬을 통해서 서로 의사소통할 수 있다.

14 Chapter 1. 왜 프로그래밍을 배워야 하는가? 프로그램 구성요소 다음의 몇장에 걸쳐서 파이썬 어휘, 문장구조, 문단구조에 대해서 배울 것이다. 파이썬의 강력한 점에 대해서 배울 것이고, 유용한 프로그램을 작성하기 위해서 파이썬의 역량을 조합하는 법을 배울 것이다. 프로그램을 작성하기 위해서 사용하는 로우레벨(low-level) 패턴이 몇가지 있다. 파이썬을 위해서 만들어졌다기 보다는 기계어부터 하이레벨 언어에 이르기까 지 모든 언어에 공통된 사항이다. 입력: 컴퓨터 바깥세계에서 데이터를 가져온다. 파일로부터 데이터를 읽을 수 도 있고, 마이크나 GPS 같은 센서에서 데이터를 입력받을 수도 있다. 위 프로그램에서 사용자의 키보드로 데이터를 입력받아 입력값으로 사용된 사례이다. 출력: 화면에 프로그램의 결과값을 보여주거나 파일에 저장한다. 혹은 음악을 연주하거나 텍스트를 읽도록 스피커 같은 장치에 데이터를 보낸다. 순차 실행: 스크립트에 작성된 순서에 맞추어 한줄 한줄 실행된다. 조건 실행: 조건을 확인하고 명령문을 실행하거나 건너뛴다. 반복 실행: 반복적으로 명령문을 실행한다. 대체로 반복 실행시 변화를 수반 한다. 재사용: 명령어를 한번 작성하고 이름을 주어 저장하고 프로그램의 필요에 따 라 이름을 불러 몇차례 다시 사용한다. 너무나 간단하게 들리지만, 전혀 간단하지는 않다. 걸음거리를 간단히 한 다리 를 다를 다리 앞에 놓으세요 라고 말하는 것 같다. 프로그램을 짜는 예술 은 이러한 기본 요소를 조합하고 엮어 사용자에게 유용한 무언가를 만드는 것이다. 단어를 세는 프로그램은 위 프로그램의 기본요소를 하나만 빼고 모두 사용하여 작성되었다 프로그램이 잘못되면? 파이썬과 처음에 대화를 할때, 파이썬 코드를 명확하게 작성하여 의사소통을 해 야한다. 작은 차이 혹은 실수는 파이썬이 여러분이 작성한 프로그램을 보다가 포기하게 만듭니다. 초보 파이썬 프로그래머는 파이썬이 오류에 대해서는 인정사정볼 것 없다고 생각합니다. 파이썬이 모든 사람을 좋아하는 것 같지만, 파이썬은 사적으로 사 람들을 알고 있고, 뒤끝이 있습니다. 이러한 사실로 인해서 파이썬은 완벽하게 작성된 프로그램만을 가지게 되고 잘못 작성되었어요 라고 뱉어내고 여러분 에게 고통을 줍니다.

15 1.10. 프로그램이 잘못되면? 13 >>> primt 'Hello world!' File "<stdin>", line 1 primt 'Hello world!' ˆ SyntaxError: invalid syntax >>> primt 'Hello world' File "<stdin>", line 1 primt 'Hello world' ˆ SyntaxError: invalid syntax >>> I hate you Python! File "<stdin>", line 1 I hate you Python! ˆ SyntaxError: invalid syntax >>> if you come out of there, I would teach you a lesson File "<stdin>", line 1 if you come out of there, I would teach you a lesson ˆ SyntaxError: invalid syntax >>> 파이썬과 다퉈봐야 얻을 것은 없어요. 파이썬은 도구고 감정이 없습니다. 여러 분이 필요로 할 때마다 여러분에게 봉사하고 기쁨을 주기 위해서 존재할 뿐입니 다. 오류 메세지가 심하게 들릴지는 모르지만 단지 파이썬이 도와달라고 하는 요청일 뿐입니다. 여러분이 입력한 것을 쭉 읽어보고 여러분이 입력한 것을 이 해할 수 없다고만 말할 뿐입니다. 파이썬은 어떤면에서 강아지와 닮았습니다. 맹목적으로 여러분을 사랑하고, 강 아지가 이해하는 몇몇 단어만 이해하며, 웃는 표정(>>> 명령 프롬프트)으로 여 러분이 무언가를 말하기만을 기다립니다. 파이썬이 SyntaxError: invalid syntax 을 뱉어낼 때, 꼬리를 흔들면서 뭔가 말씀하시는 것 같은데요... 주인님 말 씀을 이해하지 못하겠어요, 다시 말씀해 주세요 (>>>) 말하는 것과 같다. 여러분이 작성하는 프로그램이 점점 유용해지고 복잡해짐에 따라 3가지 유형의 오류를 마주치게 된다. 구문 오류(Syntax Error): 첫번째 마주치는 오류로 고치기 가장 쉽습니다. 구문 오류는 파이썬의 문법에 맞지 않는다는 것을 의미합니다. 파이썬은 구문 오류가 발생한 줄을 찾아 정확한 위치를 알려줍니다. 하지만, 파이썬이 제시하는 오류가 그 이전 프로그램 부문에서 발생했을 수도 있기 때문에 파이썬이 알려주는 곳 뿐만 아니라 그 앞쪽도 살펴볼 필요가 있다. 따라서 파이썬이 제시하는 구문 오류의 경우 오류가 난 곳은 오류를 고치기 위한 시작점으로 의미가 있다. 논리 오류(Logic Error): 논리 오류는 프로그램의 구문은 완벽하지만 명령문 의 실행에 혹은 다른 명령어부분과 관련된 부문에서 실수가 있는 것이다. 논리 오류의 예를 들어보자. 물병에서 한모금 마시고, 가방에 넣고, 도서 관으로 걸어가서, 물병을 닫는다 시맨틱 오류(Semantic Error): 시맨틱 오류는 구문론적으로 완벽하고 올바른 순서로 프로그램의 명령문이 작성되었지만 프로그램에 오류가 숨어있다.

16 Chapter 1. 왜 프로그래밍을 배워야 하는가? 14 프로그램은 완벽하게 작동하지만 여러분이 의도한 바를 수행하지는 못합 니다. 간단한 예로 여러분이 식당으로 가는 방향을 알려주고 있습니다.... 주유소 사거리에 도착했을 때, 왼쪽으로 돌아 1.6km 쭉 가면 왼쪽편에 빨간색 빌딩에 식당이 있습니다. 친구가 매우 늦어 전화로 지금 농장에 있고 헛간으로 걸어가고 있는데 식당을 발견할 수 없다고 전화를 합니다. 그러면 여러분은 주유소 왼쪽 혹은 오른쪽을 돈거야 말하면, 그 친구 는 말한대로 완벽하게 따라서 했고, 말한대로 적기까지 했는데, 왼쪽으 로 돌아 1.6km에 주요소가 있다고 했어, 그러면 여러분은 미안해, 내가 가지고 있는 건 구문론적으로는 완벽한데, 사소한 시맨틱 오류가 있네! 라고 말할 것이다. 위 세 종류의 오류에 대해서 파이썬은 여러분이 요청한 것을 충실히 수행하기 위해서 최선을 다합니다 학습으로의 여정 여러분이 책을 읽으면서 개념들이 처음에 잘 와 닿지 않는다고 기죽을 필요는 없어요. 여럽누이 말하는 것을 배울 때, 처음 몇년동안 웅얼거리는 것은 문제가 아닙니다. 간단한 어휘에서 간단한 문장으로 옮겨가고, 문장에서 문단으로 옮 겨가는데 6개월이 걸려도 괜찮습니다. 흥미로운 완벽한 짧은 스토리를 자신의 언어로 작성하는데 몇 년이 걸립니다. 여러분이 파이썬을 빨리 배울수 있도록 다음의 몇장에 걸쳐서 정보를 제공해 드릴 것입니다. 새로운 언어를 습득하는 것과 같아서 자연스럽게 느껴지기까지 흡수하고 이해하기까지 시간이 걸립니다. 큰 그림(Big Picture)을 이루는 작은 조각을 정의하면서 여러분을 큰 그림을 볼 수 있도록 여러 주제를 찾고, 또 찾 으면서 혼란이 생길 수 있다. 이책이 순차 선형적으로 쓰여져서 본 과정을 선 형적으로 배워갈 수도 있지만, 비선형적으로 본 교재를 활용하는 것도 괜찮다. 가볍게 앞쪽과 뒷쪽을 넘나들며 책을 읽을 수도 있다. 구체적이고 세세한 점을 완벽하게 이해하지 않고 고급 과정을 가볍게 읽으면서 프로그래밍의 왜(Why) 에 대해서 더 잘 이해할 수도 있다. 앞에서 배운것을 다시 리뷰하고 앞의 연습 문제를 다시 하면서 처음에 난공불락이라 여겼던 어려운 주제도 더잘 배우고 이해할 수 있다는 것을 알게될 것이다. 대체적으로 처음 프로그래밍 언어를 배울 때 망치로 돌을 내리치고, 끌로 깎아 내고 하면서 아름다운 조각품을 만들면서 겪게되는 몇 번의 유레카, 아 하 순간이 있다. 만약 어떤 것이 특별히 힘들다면, 밤새도록 앉아서 지켜보고 노력하는 것은 별 로 의미가 없다. 잠시 쉬고, 낮잠을 자고, 간식을 먹고 다른사람이나 강아지에게 문제를 설명하고 자문을 구한 후에 깨끗한 정신과 눈으로 돌아와서 다시 시도해 보라. 단언컨데 이책의 프로그래밍 개념을 배우자마자 정말 쉽고 멋지다는 것을 돌이켜 보면 알게될 것이다. 프로그래밍 언어는 정말 배울 가치가 있다.

17 1.12. 용어사전 용어사전 버그(bug): 프로그램 오류 중앙처리장치(central processing unit, CPU): 컴퓨터의 심장, 여러분이 작성 한 프로그램을 실행하는 장치, CPU 혹은 프로세서라고 불립니다. 컴파일러(compile): 하이레벨 언어로 작성된 프로그램을 로우레벨 언어로 즉시 혹은 나중에 사용하도록 번역하는 번역기 하이레벨 언어(high-level language): 사람이 읽고 쓰기 쉽게 설계된 파이썬과 같은 프로그래밍 언어 인터랙티브 모드(interactive mode): 프롬프트에서 명령어나 표현식을 입력함 으로써 파이썬 인터프리터를 사용하는 방식 인터프리트(interpret): 하이레벨 언어의 프로그램을 한번에 한줄씩 번형해서 실행하는 것 로우레벨 언어(low-level language): 컴퓨터가 실행하기 쉽게 설계된 프로그래 밍 언어, 기계어 코드, 어셈블리 언어 로 불린다. 기계어 코드(machine code): 중앙처리장치에 의해서 바로 실행될수 있는 가장 낮은 수준의 언어로된 소프트웨어 주메모리(main memory): 프로그램과 데이터를 저장한다. 전기가 나가게 되면 주메모리에 저장된 정보는 사라진다. 파싱(parse): 프로그램을 검사하고 구문론적 구조를 분석하는 것 이식(portability): 하나 이상의 컴퓨터에서 실행될 수 있는 프로그램의 특성 출력문(print statement): 파이썬 인터프리터가 화면에 값을 출력할 수 있게 만 드는 명령문 문제해결(problem solving:) 문제를 만들고, 답을 찾고, 답을 표현하는 과정 프로그램(program:) 컴퓨테이션(Computation)을 명세하는 명령어의 집합 프롬프트(prompt): 프로그램이 메세지를 출력하고 사용자가 프로그램에 입력 하도록 기다릴 때. 보조 기억장치 전기가 나갔을 때도 정보를 기억하고 프로그램을 저장하는 저 장소. 일반적으로 주메모리보다 속도가 느리다. USB의 플래쉬 메모리나 디스크 드라이브가 여기에 속한다. 시맨틱(semantics): 프로그램의 의미 시맨틱 오류(semantic error): 프로그래머가 의도한 것과 다른 행동을 하는 프 로그램의 오류 소스코드(source code): 하이레벨 언어로 기술된 프로그램

18 16 Chapter 1. 왜 프로그래밍을 배워야 하는가? 1.13 연습문 Exercise 1.1 컴퓨터 보조기억장치의 기능은 무엇입니까? a) 모든 연산과 프로그램의 로직을 수행한다. b) 인터넷의 웹페이지를 불러온다. c) 파워가 없을 때도 장시간 정보를 저장한다. d) 사용자로부터 입력정보를 받는다. Exercise 1.2 프로그램은 무엇입니까? Exercise 1.3 컴파일러와 인터프리터의 차이점을 설명하세요. Exercise 1.4 기계어 코드는 다음중 어는 것입니까? a) 파이썬 인터프리터 b) 키보드 c) 파이썬 소스코드 파일 d) 워드 프로세싱 문서 Exercise 1.5 다음 코드에서 잘못된 점을 설명하세요. >>> primt 'Hello world!' File "<stdin>", line 1 primt 'Hello world!' ˆ SyntaxError: invalid syntax >>> Exercise 1.6 다음의 파이썬 프로그램이 실행된 후에 변수 X 는 어디에 저장 됩니까? x = 123 a) 중앙처리장치 b) 주메모리 c) 보조메모리 d) 입력장치 e) 출력장치 Exercise 1.7 다음 프로그램에서 출력되는 것은 무엇입니까? x = 43 x = x + 1 print x a) 43 b) 44 c) x + 1 d) 오류, 왜냐하면 x = x + 1 은 수학적으로 불가능하다.

19 1.13. 연습문 17 Exercise 1.8 사람의 어느 능력부위에 해당하는지 예로하여 다음을 설명하세 요. (1) 중앙처리장치, (2) 주메모리, (3) 보조메모리, (4) 입력장치 (5) 출력장치 중앙처리장치에 상응하는 사람의 몸 부위는 어디입니까? Exercise 1.9 구문오류( Syntax Error )는 어떻게 고칩니까?

20 18 Chapter 1. 왜프로그래밍을배워야하는가?

21 Chapter 2 변수, 표현식, 스테이트먼트 (Statement) 2.1 값(Value)과 형식(Type) 값(Value)는 문자와 숫자처럼 프로그램이 다루는 가장 기본이되는 단위이다. 우리가 지금까지 살펴본 값은 1,2 그리고 'Hello,World!' ('안녕 세상!') 이다. 이들 값들은 다른 형식에 속해있는데, 2는 정수, 'Hello,World!' ('안녕 세 상!') 는 문자열(String)에 속해있다. 문자(Letter)의 열에 있어서 문자열이라고 부른다. 여러분과 인터프리터는 문자열을 확인할 수 있는데 이유는 인용부호 따옴표에 쌓여있기 때문이다. print 문은 정수에도 사용할 수 있다. python 명령어를 실행하여 인터프리터 를 구동시키자. python >>> print 4 4 값의 형식을 확신을 못한다면, 인터프리터가 알려준다. >>> type('hello, World!') <type 'str'> >>> type(17) <type 'int'> 놀랍지도 않게, strings은 str 형식이고, 정수는 int 형식이다. 소숫점을 가진 숫자는 float 형식이다. 왜냐하면 이들 숫자가 부동소수점 형식으로 표현되기 때문이다. >>> type(3.2) <type 'float'>

22 20 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) '17', '3.2' 같은 값은 어떨가? 문자처럼 보이지만 문자처럼 따옴표안에 쌓여 있다. >>> type('17') <type 'str'> >>> type('3.2') <type 'str'> '17', '3.2' 은 문자열이다. 아주 큰 정수를 입력할, 1,000,000 처럼 세자리 숫자마다 콤마(,)를 입력한다. 하지만, 파이썬에서 적법한 정수는 아니지만 적법하다. >>> print 1,000, 하지만, 파이썬이 뱉은 값은 우리가 기대했던 것이 아니다. 파이썬은 1,000,000 을 콤마로 구분된 정수로 인식한다. 따라서 사이 사이 공백을 넣어 출력했다. 이 사례가 여러분이 처음 경험하게 되는 시맨틱 오류이다. 코드가 에러 메세지 없이 실행이되지만, 올바르게(right) 작동을 하는 것은 아니다. 2.2 변수(Variable) 프로그래밍 언어의 가장 강력한 기능중의 하나는 변수를 다룰 수 있는 능력이다. 변수(Variable)는 값을 참조할 수 있는 이름이다. 할당 스테이스먼트(Assignment statement)는 새로운 변수를 생성하고 값을 준다. >>> message = 'And now for something completely different' >>> n = 17 >>> pi = 위의 예제는 세개의 할당을 보여준다. 첫번째 할당의 예제는 message 변수에 문 자열을 할당한다. 두번째 예제는 변수 n에 정수 17을 할당한다. 세번째 예제는 pi변수에 π 근사값을 할당하는 경우이다. 변수의 값을 출력하기 위해서 print 스테이트먼트를 사용한다. >>> print n 17 >>> print pi 변수의 형식은 변수가 참조하는 값의 형식이다. >>> type(message) <type 'str'> >>> type(n) <type 'int'> >>> type(pi) <type 'float'>

23 2.3. 변수명(Variable name)과 예약어(keywords) 변수명(Variable name)과 예약어(keywords) 대체로 프로그래머는 의미있는 변수명을 고른다. 프로그래머는 변수가 어디에 사용되는지를 문서화도 한다. 변수명은 임의로 길 수 있다. 변수명은 문자와 숫자를 포함할 수 있지만, 통상 문자로 시작한다. 대문자를 사용하는 것도 적합하지만 소문자로 시작하는 변수 명으로 시작하는 것도 좋은 생각이다. (후에 왜 그런지 보게될 것이다.) 변수명에 밑줄(underscore character, _)이 들어갈 수 있다. 밑줄은 my_name 혹은 airspeed_of_unladen_swallow 처럼 여러 단어와 함께 사용된다. 적합하지 못한 변수명을 사용하면, 구문 오류를 보게된다. >>> 76trombones = 'big parade' SyntaxError: invalid syntax >>> more@ = SyntaxError: invalid syntax >>> class = 'Advanced Theoretical Zymurgy' SyntaxError: invalid syntax 76trombones 변수명은 문자로 시작하지 않아서 적합하지 않다. more@는 특수 문자 (@)를 변수명에 포함해서 적합하지 않다. class 변수명은 뭐가 잘못된 것 일까? class는 파이썬의 예약어 중의 하나이다. 인터프리터는 예약어를 프로그램 구 조를 파악하기 위해서 사용하고 변수명으로는 사용할 수 없다. 파이썬의 31개의 키워드1 를 예약어로 이미 가지고 있다. and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield 여러분은 예약어 목록을 잘 가지고 다니고 싶을 것입니다. 인터프리터가 변수명 중에서 불평하고 이유를 모를 경우 예약어 목록에 있는지 확인해 보세요. 2.4 스테이트먼트(Statement) 스테이트먼트(statement)는 파이썬 인터프리터가 실행하는 코드의 단위입니 다. print, assignment 두 종류의 스테이트먼트를 봤습니다. 인터랙트브 모드에서 스테이트먼트를 입력할 때, 만약 한줄이면 인터프리터는 스테이트먼트를 실행하고 결과를 출력합니다. 1 In Python 3.0, exec is no longer a keyword, but nonlocal is.

24 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) 22 스크립트는 보통 여러줄의 스테이트먼트로 구성됩니다. 하나 이상의 스테이트 먼트가 있다면, 스트테이트먼트가 실행되며 결과가 한번에 나타납니다. 예를 들어, 다음의 스크립트를 생각해 봅시다. print 1 x = 2 print x 위 스크립트는 다음의 결과를 출력합니다. 1 2 할당 스테이트먼트(x=2)는 결과를 출력하지 않습니다. 2.5 연산자(Operator)와 피연산자(Operands) 연산자(Operators)는 덧셈과 곱셈 같은 연산(Computation)을 표현하는 특별한 기호입니다. 연산가자 적용되는 값을 피연산자(operands)라고 합니다. 다음의 예제에서 보듯이, +, -, *, /, ** 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈, 누승을 수행합니다 hour-1 hour*60+minute minute/60 5**2 (5+9)*(15-7) 나눗셈 연산자는 여러분이 기대하는 행동을 하지 않을 수도 있습니다. >>> minute = 59 >>> minute/60 0 minute 값은 59, 보통 59를 60으로 나누면 0 대신에 입니다. 이런 차이가 발생하는 이유는 파이썬이 부동 소숫점 나눗셈을 하기 때문입니다. 두 개의 피연산자가 정수이면, 결과도 정수입니다. 부동 소수점 나눗셈2 은 소수 점 이하를 절사해서 이 예제에서는 소수점이하 잘라버려 0 이 됩니다. >>> minute/ (표현)식(Expression) (표현)식 (expression)은 값, 변수, 연산자의 조합니다. 값은 자체로 표현식이고, 변수도 동일합니다. 따라서 다음의 표현식은 모두 적합합니다. (변수 x에 사전에 어떤 값이 할당되었다고 가정하고) 2 파이썬 3.0 에서 이 나눗셈의 값은 소수점입니다. 파이썬 3.0 에서 새로운 연산자//는 정수 나눗셈을 수행합니다.

25 2.7. 연산자 적용 우선순위 (Order of Operations) x x + 17 인터랙티브 모드에서 표현식을 입력하면, 인터프리터는 표현식을 평가(evaluate)하고 값을 표시합니다. >>> 하지만, 스크립트에서는 표현식 자체로 어떠한 것도 수행하지는 않습니다. 초 심자에게 혼란스러운점입니다. Exercise 2.1 파이썬 인터프리터에 다음의 스테이트먼트를 입력하고 결과를 보 세요. 5 x = 5 x 연산자 적용 우선순위 (Order of Operations) 1개 이상의 연산자가 표현식에 등장할때 연산자 실행의 순서는 순위 규칙(rules of precedence)에 따른다. 수학 연산자에 대해서 파이썬은 수학의 관례를 동일 하게 따른다. 영어 두문어 PEMDAS는 기억하기 좋은 방식이다. 괄호(Parentheses)는 가장 높은 순위를 가지고 여러분이 원하는 순위에 맞춰 실행할 때 사용한다. 괄호안에 있는 식이 먼저 실행되기 때문에 2 * (3-1) 은 4가 정답이고, (1+1)**(5-2)는 8이다. 괄호를 표현식을 읽 기 쉽게하려고 사용하기도 한다. (minute * 100) / 60 는 실행순서가 결과값에 영향을 주지 않지만 가독성이 상대적으로 좋다. 멱승(Exponentiation)이 다음으로 높은 우선순위를 가진다. 그래서 2**1+1는 4가 아니라 3이고, 3*1**3는 27이 아니고 3이다. 곱셈(Multiplication)과 나눗셈(Division)은 덧셈(Addition), 뺄셈(Substraction)보다 높은 우선 순위를 가지고 같은 실행의 순위를 갖는다. 2*3-1는 4가 아니고 5이고, 6+4/2는 5가 아니라 8이다. 같은 실행의 순위를 갖는 연산자는 왼쪽에서 오른쪽으로 실행된다 표현식은 3이 아니고 1이다. 왜냐하면 5-3이 먼저 실행되고 나서 2에서 1 을 빼기 때문이다. 여러분이 의도한 순서대로 연산이 일어날수 있도록 좀 의심스러운 경우는 괄호 를 사용하세요.

26 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) 나머지 연산자 (Modulus Operator) 나머지 연산자(modulus operator)는 정수에 사용하며, 첫번째 피연산자가 두번 째 피연산자로 나눌 때 나머지 값을 만들어 냅니다. 파이썬에서 나머지 연산자는 퍼센트 기호(%)입니다. 구문은 다른 연산자와 동일합니다. >>> >>> 2 >>> >>> 1 quotient = 7 / 3 print quotient remainder = 7 % 3 print remainder 7을 3으로 나누면 2가 되고 1을 나머지로 갖게됩니다. 나머지 연산자가 놀랍도록 유용합니다. 예를 들어 한 숫자가 다른 숫자로 나눌 수 있는지 없는지를 확인할 수도 있습니다. x % y가 0이라면 x는 y로 나눌 수 있습니다. 또한, 숫자로부터 가장 오른쪽의 숫자를 분리하는데 사용할 수도 있습니다. 예 를 들어 x % 10 은 x의 10진수인 경우 가장 오른쪽 숫자를 뽑아낼 수 있고, 동일 하게 x % 100은 가장 오른쪽 2개 숫자를 뽑아낼 수도 있습니다. 2.9 문자열 연산자 (String Operator) + 연산자는 문자열에도 사용할 수 있지만, 수학에서의 덧셈의 의미는 아닙니다. 대신에 문자열의 끝과 끝을 연결하여 접합(concatenation)을 수행합니다. 예를 들어 >>> first = 10 >>> second = 15 >>> print first+second 25 >>> first = '100' >>> second = '150' >>> print first + second 이 프로그램의 출력은 입니다 사용자에게서 입력값 받기 때때로 키보드를 통해서 사용자에게서 변수에 대한 값을 받고 싶을 때가 있습 니다. 키보드3 로부터 입력값을 받을 수 있는 raw_input 이라는 빌트인(built-in) 함수를 파이썬은 제공합니다. 이 함수가 실행될 때 파이썬은 실행을 멈추고 사 용자로부터 입력 받기를 기다립니다. 사용자가 Return 혹은 엔터를 누르게되면 3 파이썬 3.0에서 이 함수는 input으로 명명되었습니다.

27 2.11. 주석(Comment) 25 프로그램은 다시 실행되고 raw_input은 사용자가 입력한 값을 문자열로 반환 합니다. >>> input = raw_input() Some silly stuff >>> print input Some silly stuff 사용자로부터 입력을 받기 전에 프롬프트에서 사용자에게 어떤 값을 입력해 야하는지 출력하는 것도 좋은 생각이다. 입력값을 위해 잠시 멈춰있기 전에 raw_input 함수에 출력될 문자열에 대한 정보를 사용자에게 전달하는 것이다. >>> name = raw_input('what is your name?\n') What is your name? Chuck >>> print name Chuck 프롬프트의 끝에 \n 은 새줄(newline)을 의미합니다. 새줄은 줄을 바꾸게 하는 특수 문자입니다. 이런 이유 때문에 사용자의 입력이 프롬프트 밑에 출력이 됩 니다. 만약 사용자가 정수를 입력하기를 바란다면, int()함수를 사용하여 반환되는 값을 정수(int)로 형변환할 수 있습니다. >>> prompt = 'What...is the airspeed velocity of an unladen swallow?\n' >>> speed = raw_input(prompt) What...is the airspeed velocity of an unladen swallow? 17 >>> int(speed) 17 >>> int(speed) 하지만, 사용자가 숫자 문자열이 아닌 다른 것을 입력하게 되면 오류가 발생합 니다. >>> speed = raw_input(prompt) What...is the airspeed velocity of an unladen swallow? What do you mean, an African or a European swallow? >>> int(speed) ValueError: invalid literal for int() 이런 종류의 오류를 나중에 더 만나게 될 것입니다 주석(Comment) 프로그램이 커지고 복잡해짐에 따라 읽기는 점점 어려워집니다. 형식언어로 촘 촘하고 코드의 일부분을 읽기 어렵고 무슨 역할을 왜 수행하는지 이해하기 어 렵습니다.

28 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) 26 이런 이유로 프로그램이 무엇을 하는지를 일반적인 언어로 프로그램에 노트를 달아놓는게 좋은 습관입니다. 이러한 노트를 주석(Comments)라고 하고 # 기호 로 시작합니다. # 경과한 시간의 퍼센트를 계산 percentage = (minute * 100) / 60 이 경우, 주석 자체가 한줄이다. 주석을 프로그램의 뒤에 놓을 수도 있다. percentage = (minute * 100) / 60 # 경과한 시간의 퍼센트를 계산 # 뒤의 모든 것은 무시되기 때문에 프로그램에는 아무런 영향이 없습니다. 주석 은 코드의 명확하지 않은 점을 문서화할 때 가장 유용합니다. 프로그램을 읽는 사람이 코드가 무엇 을 하는지 이해할 수 있다고 가정하는 것은 그럴 듯합니다. 왜 그런지를 설명하는 것은 더더욱 유용합니다. 다음의 주석은 코드와 중복으로 쓸모가 없습니다. v = 5 # assign 5 to v 다음의 주석은 코드에 없는 유용한 정보가 있습니다. v = 5 # velocity in meters/second. 좋은 변수명은 주석을 할 필요를 없게 만들지만, 지나치게 긴 변수명은 읽기 어 려운 복잡한 표현식이 될 수도 있기 때문에 상충관계(trade-off)가 존재합니다 기억하기 쉬운 변수명 만들기 변수를 이름 짓는 간단한 규칙을 따르고, 예약어를 피하기만 하면 변수를 이름지 을 수 있는 무척이나 많은 경우의 수가 존재합니다. 처음에 이러한 선택의 폭이 프로그램을 읽는 사람이나 프로그램을 작성하는 사람 모두에게 혼란스러울 수 있습니다. 예를 들어, 다음의 3개 프로그램은 수행하는 것이 동일하다는 점에서 동일하지만 여러분이 읽고 이해하는데는 많은 차이점이 있습니다. a = 35.0 b = c = a * b print c hours = 35.0 rate = pay = hours * rate print pay x1q3z9ahd = 35.0 x1q3z9afd = x1q3p9afd = x1q3z9ahd * x1q3z9afd print x1q3p9afd 파이썬 인터프리터는 이들 3개 프로그램을 정확하게 동일하게 바라보지만, 사 람은 이들 프로그램을 매우 다르게 바라보고 이해하게 됩니다. 사람은 가장 빨리

29 2.12. 기억하기 쉬운 변수명 만들기 27 두번째 프로그램의 의도를 알아차립니다. 왜냐하면 프로그래머가 변수에 저장 되는 값에 관계없이 프로그래머의 의도를 나타내는 변수명을 사용했기 때문입 니다. 현명하게 선택된 변수명을 기억하기 쉬운 변수명( mnemonic variable name ) 이라고 합니다. 기억하기 좋은 영어 단어 mnemonic 4 은 기억을 돕는다는 뜻입 니다. 왜 변수를 생성했는지 기억하기 좋게 하기 위해서 기억하기 좋은 변수명을 선택합니다. 매우 훌륭하게 들리고, 기억하기 좋은 변수명을 만드는게 좋은 아이디어 같지 만, 기억하기 좋은 변수명은 초보 프로그래머가 코드를 파싱하고 이해하는데 걸림돌이 되기도 한다. 왜냐하면 31개의 예약어도 기억하지 못하고 때때로 너 무 서술적인 이름의 변수가 마치 우리가 일반적으로 사용하는 언어처럼 보여 잘 선택된 변수명처럼 보이지 않기 때문이다. 어떤 데이터를 반복하는 다음의 파이썬 코드를 살펴보자. 여러분은 곧 반복 루 프를 보지만 이것이 무엇을 의미하는지 알기 위해서 퍼즐을 풀기시작할 것이다. for word in words: print word 무엇이 일어나고 있는 것일까요? for, word, in 등등 어느 것이 예약어일까요? 변수명은 무엇일까요? 파이썬이 기본적으로 단어의 개념을 이해할까요? 초보 프로그래머는 어떤 부분의 코드가 이 예제와 동일해야 하는지와 단지 프로그래 머의 선택에 의한 부분이 코드의 어느부분인지 분간하는데 애를 먹는다. 다음의 코드는 위의 코드와 동일하다. for slice in pizza: print slice 초보 프로그래머가 이 코드를 보고 어떤 부분이 파이썬의 예약어이고 어느 부분 이 프로그래머가 선택한 변수명인지 알 수 있다. 파이썬이 피자와 피자조각에 대한 근본적인 이해가 없고 피자는 하나 혹은 여러 조각으로 구성된다는 근본 적인 사실을 알지 못한다. 하지만, 여러분의 프로그램이 데이터를 읽고 데이터의 단어를 찾는다면 피자 (pizza)와 피자조각(slice)은 기억하기 좋은 변수명이 아니다. 이들 변수명 은 프로그램의 의미를 왜곡시킬 수 있다. 좀 시간을 보낸 후에 흔한 예약어에 대해서 알게될 것이고 이들 예약어가 여러 분에게 눈에 띄게 될 것이다. for word in words: print word for, in, print, :은 파이썬에서 정의된 예약어로 굵게 표시되어 있고, 프로그 래머가 생성한 word, words는 굵게 표시되어 있지 않다. 많은 텍스트 에디터는 파이썬의 구문을 알고 있고 파이썬 예약어와 프로그래머의 변수를 구분하기 위 해서 다른 색까로 구분지어준다. 잠시 후에 여러분은 이제 파이썬을 읽고 변수와 예약어에 대해서 빨리 구분할 수 있을 것이다. 4

30 28 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) 2.13 디버깅(Debugging) 이 지점에서 여러분이 만들 것 같은 구문 오류는 odd job, US$ 같은 특수문자 를 포함한 잘못된 변수명과 class, yield같은 예약어를 변수명으로 사용하는 것이다. 변수명에 공백을 넣는다면, 파이썬은 연산자 없이 두 개의 피연산자로 생각합 니다. >>> bad name = 5 SyntaxError: invalid syntax 구문 오류에 대해서, 구문오류 메세지는 그다지 도움이 되지 못합니다. 가장 흔한 오류 메세지는 SyntaxError: invalid syntax, SyntaxError: invalid token인데 둘다 그다지 도움이 되지 못합니다. 여러분이 많이 만드는 실행 오류는 정의전에 사용( use before def )하는 것으로 변수에 값을 할당하기 전에 변수를 사용할 경우 발생합니다. 여러분이 변수명을 쓸 때도 발생할 수 있습니다. >>> principal = >>> interest = principle * rate NameError: name 'principle' is not defined 변수명은 대소문자를 구분합니다. LaTeX는 latex와 같지 않습니다. 이 지점에서 여러분이 저지르기 쉬운 구문 오류는 연산자의 우선 순위일 것입 1 를 계산하기 위해서 다음과 같이 프로그램을 작성하게 되면 니다. 예를 들어 2π... >>> 1.0 / 2.0 * pi 나눗셈이 먼저 일어나서 π/2를 같은 것이 아닙니다. 파이썬이 여러분이 쓴 의 도를 알게할 수는 없습니다. 그래서 이런 경우 오류 메세지를 얻지는 않지만 잘못된 답을 여러분은 얻게 될 것입니다 용어 설명 할당(assignment): 변수에 값을 할당하는 스테이트먼트 결합(concatenate): 두 개의 피연산자 끝과 끝을 합치는 것 주석(comment): 다른 프로그래머나 소스코드를 읽는 다른 사람을 위한 프로그 램의 정보로 프로그램의 실행에는 아무런 영향이 없다. 평가(evaluate): 하나의 값을 만들도록 연산을 실행함으로써 표현식을 간단히 하는 것 (표현)식(expression): 하나의 결과값을 만드는 변수, 연산자, 값의 조합 부동 소수점(floating-point): 분수를 가진 숫자를 표현하는 방식

31 2.15. 연습문제 29 플로어 나눗셈(floor division) 두 숫자를 나누어 소수점이하 부분을 절사하는 연산자 정수(integer): 완전수를 나타내는 형식 예약어(keyword): 프로그램을 파싱하는 컴파일러가 사용하는 이미 예약된 단 어; if, def, while 같은 예약어를 변수명으로 사용할 수 없다. 니모닉(mnemonic): 기억 보조, 변수에 저장된 것을 기억하기 좋게 변수에 니 모닉 이름을 부여한다. 나머지 연산자(modulus operator): 퍼센트 기호 (%) 로 표시되고 정수를 가지 고 한 숫자를 다른 숫자로 나누었을 때 나머지 피연산자(operand): 연산자가 연산을 수행하는 값의 하나 연산자(operator): 덧셈, 곱셈, 문자열 결합 같은 간단한 연산을 나타내는 특별 기호 순위 규칙(rules of precedence): 여러 개의 연산자와 피연산자를 포함한 표현 식이 평가되는 실행 순서를 정한 규칙 집합 스테이트먼트(statement): 명령이나 액션을 나타내는 코드 부문. 지금까지 assignment, print 스테이트먼트를 보았습니다. 문자열(string): 일련의 문자를 나타내는 형식 형(type): 값의 범주. 지금까지 여러분이 살펴본 형은 정수 (type int), 부동 소 수점수 (type float), 문자열 (type str) 입니다. 값(value): 프로그램이 다루는 숫자나 문자 같은 데이터의 기본 단위중 하나 변수(variable): 값을 참조하는 이름 2.15 연습문제 Exercise 2.2 raw_input을 사용하여 사용자의 이름을 입력받고 환영하는 프로 그램을 작성하세요. Enter your name: Chuck Hello Chuck Exercise 2.3 급여를 지불하기 위해서 사용자로부터 근로시간과 시간당 임금을 계산하는 프로그램을 작성하세요. Enter Hours: 35 Enter Rate: 2.75 Pay: 96.25

32 Chapter 2. 변수, 표현식, 스테이트먼트(Statement) 30 지금은 급여가 정확하게 소수점 두자리까지 표현되지 않아도 된다. 만약 원하 다면, 파이썬의 빌트인 round 함수를 사용하여 소수점 아래 두자리까지 반올림 하여 작성할 수 있다. Exercise 2.4 다음 할당 스테이트먼트를 실행한다고 합시다. width = 17 height = 12.0 다음 표현식에 대해서 표현식의 값과 표현식의 값의 형을 작성하세요. 1. width/2 2. width/ height/ * 5 정답을 확인하기 위해서 파이썬 인터프리터를 사용하세요. Exercise 2.5 사용자에게서 섭시 온도를 입력받아 화씨온도롤 변환하고 변환된 온도를 출력하는 프로그램을 작성하세요.

33 Chapter 3 조건부 실행 불 연산식(Boolean expressions) 3.1 불 연산식(boolean expression)은 참(True) 혹은 거짓(False)를 가진 연산 표현식 이다. 다음 예제는 == 연산자를 사용하는데 두개의 피연산자를 비교하여 값이 동일하면 참(True), 그렇지 않으면 거짓(False)을 출력한다. >>> 5 == 5 True >>> 5 == 6 False 참(True)과 거짓(False)은 불(bool)형식에 속하는 특별한 값들이고, 문자열 은 아니다. >>> type(true) <type 'bool'> >>> type(false) <type 'bool'> ==연산자는 비교(comparison operators) 연산자 중의 하나이고, 다른 연산자는 다음과 같다. x x x x x x x!= y > y < y >= y <= y is y is not y # # # # # # # x는 x는 x는 x는 x는 x는 x는 y와 값이 같지 않다. y보다 크다. y보다 작다. y보다 크거나 같다. y보다 작거나 같다. y와 같다. y와 개체가 동일하지 않다. 여러분에게 이들 연산자가 친숙할지 모르지만, 파이썬 기호는 수학 기호와는 다 르다. 일반적인 오류에는 비교의 같다의 의미로 == 연산자 대신에 =를 사용하는 것이다. = 연산자는 할당 연산자이고, ==연산자는 비교 연산자이다. =<, => 비교 연산자는 파이썬에는 없다.

34 Chapter 3. 조건부 실행 논리 연산자 3개의 논리 연산자(logical operators): and, or, not가 있다. 논리 연산자 의미는 영어 의미와 유사하다. 예를 들어, x > 0 and x < 10 x이 0 보다 크다. 그리고(and), 10 보다 작으면 참이다. n%2 == 0 or n%3 == 0은 두 조건문 중의 하나만 참이되면, 즉, 숫자가 2 혹은 (or) 3으로 나누어진다면 참이다. 마지막으로 not 연산자는 불 연산 표현을 부정한다. x > y이 거짓이면, not (x > y)은 참이다. 즉, x이 y 보다 작거나 같으면 참이다. 엄밀히 말해서, 논리 연산자의 두 피연산자는 모두 불 연산 표현이여야 하지만, 파이썬은 그렇게 엄격하지는 않는다. 어떤 0이 아닌 숫자 모두 true 로 해석 된다. >>> 17 and True True 이러한 유연함이 유용할 수 있으나, 혼란을 줄 수도 있으니 유의해서 사용해야 됩니다. 무슨 일을 하고 있는지 정확하게 알지 못한다면 피하는게 좋습니다. 3.3 조건문 실행 유용한 프로그램을 작성하기 위해서는 조건을 확인하고 조건에 따라 프로그램 의 실행을 바꿀 수 있어야 한다. 조건문(Conditional statements)은 그럴 수 있는 능력을 부여한다. 가장 간단한 형태는 if 문이다. if x > 0 : print 'x is positive' if문 뒤에 불 연산 표현문을 조건(condition)이라고 한다. x>0 no yes print 'x is positive' 만약 조건문이 참이면, 들여쓰기 된 스테이트먼트가 실행된다. 만약 조건문이 거짓이면, 들여쓰기 된 스테이트먼트의 실행을 생략한다.

35 3.4. 대안 실행 33 if문은 함수 정의나 for 반복문과 동일한 구조를 가진다. if문은 콜론(:)으로 끝나는 헤더 머리부문과 들여쓰기 블록으로 구성된다. if문과 같은 구문을 한 줄 이상에 걸쳐 작성되기 때문에 복합문(compound statements)이라고 한다. if문 본문에 실행 명령문의 제한은 없으나 최소한 한 줄은 있어야 한다. 때때 로, 본문에 하나의 실행명령문이 없는 경우가 있다. 아직 코드를 작성하지 않고 자리를 잡아 놓는 경우로, 아무것도 수행하지 않는 pass문을 사용할 수 있다. if x < 0 : pass # 음수값을 처리 예정! if문을 파이썬 인터프리터에서 타이핑하고 엔터를 치게 되면 명령 프롬프트가 갈매기 세마리에서 점 세개로 바뀌어 본문을 작성중에 있다는 것을 다음과 같이 보여줍니다. >>> x = 3 >>> if x < 10:... print 'Small'... Small >>> 3.4 대안 실행 if문의 두 번째 형태는 대안 실행(alternative execution)으로 두 가지 경우의 수가 존재하고, 조건이 어느 방향인지를 결정한다. 구문(Syntax)은 아래와 같다. if x%2 == 0 : print 'x is even' else : print 'x is odd' x가 2로 나누었을 때, 0이되면, x는 짝수이고, 프로그램은 짝수 결과 메시지를 출력한다. 만약 조건이 거짓이라면, 두 번째 명령문 블록이 실행된다. no print 'x is odd' x%2 == 0 yes print 'x is even' 조건은 참 혹은 거짓이서, 대안 중 하나만 정확하게 실행될 것이다. 대안을 분기 (Branch)라고도 하는데 이유는 실행 흐름의 분기가 되기 때문이다.

36 Chapter 3. 조건부 실행 연쇄 조건문 때때로, 두 가지 이상의 경우의 수가 있으며, 두 가지 이상의 분기가 필요하다. 이 같은 연산을 표현하는 방법이 연쇄 조건문(chained conditional)이다. if x < y: print 'x is less than y' elif x > y: print 'x is greater than y' else: print 'x and y are equal' elif는 else if 의 축약어이다. 이번에도 단 한번의 분기만 실행된다. x<y x>y yes yes print 'less' print 'greater' print 'equal' elif문의 갯수에 제한은 없다. else문이 있다면, 거기서 끝마쳐야 하지만, 연쇄 조건문에 필히 있어야 하는 것은 아니다. if choice == 'a': print 'Bad guess' elif choice == 'b': print 'Good guess' elif choice == 'c': print 'Close, but not correct' 각 조건은 순서대로 점검한다. 만약 첫 번째가 거짓이면, 다음을 점검하고 계속 점검해 나간다. 순서대로 진행 주에 하나의 조건이 참이면, 해당 분기가 수행되 고, if문 전체는 종료된다. 설사 하나 이상의 조건이 참이라고 하더라도, 첫 번째 참 분기만 수행된다. 3.6 중첩 조건문 하나의 조건문이 조건문 내부에 중첨될 수도 있다. 다음처럼 삼분 예제를 작성할 수 있다.

37 3.7. try와 catch를 활용한 예외 처리 35 if x == y: print 'x and y are equal' else: if x < y: print 'x is less than y' else: print 'x is greater than y' 바깥 조건문에 두 개의 분기가 있다. 첫 분기는 간단한 명령 실행문을 담고 있다. 두 번째 분기는 자체가 두 개의 분기를 가지고 있는 또 다른 if문을 담고 있다. 자체로 둘다 조건문이지만, 두 분기 모두 간단한 실행 명령문이다. yes x == y no yes print 'equal' x<y print 'less' no print 'greater' 명령문 블록을 들여쓰는 것이 구조를 명확히 하지만, 중첩 조건문의 경우 가독 성이 급격히 저하된다. 일반적으로, 가능하면 중첩 조건문을 피하는 것을 권장 한다. 논리 연산자를 사용하여 중첩 조건문을 간략히 할 수 있다. 예를 들어, 단일 조 건문으로 가지고 앞의 코드를 다시 작성할 수 있다. if 0 < x: if x < 10: print 'x is a positive single-digit number.' print문은 두개의 조건문이 통과될 때만 실행돼서, and 연산자와 동일한 효과 를 거둘 수 있다. if 0 < x and x < 10: print 'x is a positive single-digit number.' 3.7 try와 catch를 활용한 예외 처리 앞에서 사용자가 타이핑한 것을 읽어 정수로 파싱하기 위해서 함수 raw_input 와 int을 사용한 프로그램 코드를 살펴 보았다. 또한 이렇게 하는 코딩하는 것이 얼마나 위험한 것인지도 살펴보았다.

38 36 Chapter 3. 조건부 실행 >>> speed = raw_input(prompt) What...is the airspeed velocity of an unladen swallow? What do you mean, an African or a European swallow? >>> int(speed) ValueError: invalid literal for int() >>> 파이썬 인터프리터에서 상기 명령문을 실행할 때, 이런 잠시 있다가 다음 명령 실행문으로 넘어가는 새로운 명령 프롬프트를 보게 된다. 하지만, 코드가 파이썬 스크립트로 실행이 되면 오류가 발생하고 즉시, 그 지점 에서 멈추게 된다. 다음의 명령 실행문은 실행하지 않는다. 화씨 온도를 섭씨 온도로 변환하는 간단한 프로그램이 있다. inp = raw_input('enter Fahrenheit Temperature:') fahr = float(inp) cel = (fahr ) * 5.0 / 9.0 print cel 이 코드를 실행하고 적절하지 않은 입력값을 타이핑하게되면, 다소 불친절한 오류 메시지와 함께 작동을 멈춘다. python fahren.py Enter Fahrenheit Temperature: python fahren.py Enter Fahrenheit Temperature:fred Traceback (most recent call last): File "fahren.py", line 2, in <module> fahr = float(inp) ValueError: invalid literal for float(): fred 이런 종류의 예측되거나, 예측 못한 오류를 다루는 try / except 로 불리는 조건 실행 구조가 파이썬에 내장되어 있다. try와 except의 기본 사항은 일부 명령 문이 문제를 가 있다는 것을 사전에 알고 있고, 만약 그 때문에 오류가 발생하게 된다면 대신 실행할 명령문을 프로그램에 추가하는 것이다. except 블록의 명 령문은 오류가 없다면 실행되지 않는다. 파이썬의 try, except 기능을 프로그램 코드의 실행에 보험을 든다고 생각할 수 있다. 온도 변환기 프로그램을 다음과 같이 다시 작성할 수 있다. inp = raw_input('enter Fahrenheit Temperature:') try: fahr = float(inp) cel = (fahr ) * 5.0 / 9.0 print cel except: print 'Please enter a number' 파이썬은 try 블록의 명령문을 우선 실행합니다. 만약 모든 것이 순조롭다면, except 블록을 건너뛰고, 다음 코드를 실행합니다.

39 3.8. 논리 연산식의 단락(Short circuit) 평가 37 except이 try 블록에서 발생하면, 파이썬은 try블록을 건너뛰고 except블록 의 명령문을 수행합니다. python fahren2.py Enter Fahrenheit Temperature: python fahren2.py Enter Fahrenheit Temperature:fred Please enter a number try문으로 예외사항을 다루는 것을 예외 처리한다catching an exception고 부 릅니다. 예제에서는 except 절에서는 단순히 오류 메시지를 출력만 합니다. 대 체로, 예외 처리는 오류를 고치거나, 다시 시작하거나, 최소한 프로그램이 정상 적으로 종료될 수 있게 합니다. 3.8 논리 연산식의 단락(Short circuit) 평가 파이썬이 x >= 2 and (x/y) > 2와 같은 논리 연산식을 처리할 때, 왼쪽에 서부터 오른쪽으로 연산식을 평가한다. and의 정의 때문에 x이 2보다 작다 면, x >= 2은 거짓(False)이 되서, 전체는 (x/y) > 2이 참(True) 혹은 거짓 (False)에 관계없이 거짓(False)이 된다. 파이썬이 논리 연산식의 나머지 부 분을 평가해도 나아지는 것이 없다고 탐지할 때, 평가를 멈추고 나머지 논리 연 산식에 대한 연산도 중지한다. 최종 논리 연산식의 값이 이미 알려졌기 때문에 더 이상의 연산을 멈출 때, 이를 단락(Short-circuiting) 평가라고 한다. 이것이 세심해 보일 수 있지만, 단락 행동이 가디언 패넌(guardian pattern)으 로 불리는 좀 더 똑똑한 기술로 연결된다. 파이썬 인터프리터의 다음 코드를 살펴보자. >>> x = 6 >>> y = 2 >>> x >= 2 and (x/y) > 2 True >>> x = 1 >>> y = 0 >>> x >= 2 and (x/y) > 2 False >>> x = 6 >>> y = 0 >>> x >= 2 and (x/y) > 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> 파이썬이 (x/y)연산을 평가할 때 y이 0 이어서 실행오류 발생시켜서, 세번째 연 산은 수행되지 않습니다. 하지만, 두 번째 예제의 경우 x >= 2 이 거짓(False) 이어서 전체가 거짓(False)이 되어 (x/y) 평가가 실행되지 않고, 단락(Shortcircuiting) 평가 규칙에 의해서 오류도 발생하지 않습니다.

40 Chapter 3. 조건부 실행 38 오류가 발생할 것 같은 평가식 앞에 가디언(gardian) 평가식을 전략적으로 배치 해서 논리 평가식을 아래와 같이 구성합니다. >>> x = 1 >>> y = 0 >>> x >= 2 and y!= 0 and (x/y) > 2 False >>> x = 6 >>> y = 0 >>> x >= 2 and y!= 0 and (x/y) > 2 False >>> x >= 2 and (x/y) > 2 and y!= 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> 첫 번째 논리 표현식은 x >= 2이 거짓(False)이라 and에서 멈춥니다. 두 번째 논리 표현식은 x >= 2이 참(True), y!= 0은 거짓(False)이어서 (x/y)까지 갈 필요는 없습니다. 세 번째 논리 표현식은 (x/y) 연산이 끝난 후에 y!= 0이 수행되어서 오류가 발생합니다. 두 번째 논리 표현식에서 y!= 0이 0 이 아니어만 (x/y)이 실행될 수 있도록 가디언(gardian) 역할을 수행한다고 할 수 있다. 3.9 디버깅(Debugging) 오류가 발생했을 때, 파이썬이 화면에 출력하는 트레이스백(traceback)은 상당 한 정보를 담고 있지만, 특히 스택에 많은 프레임이 있는 경우 엄청나게 보일 수도 있다. 대체로 유용한 정보는 다음과 같다. 어떤 종류의 오류인가. 어디서 발생했는가. 구문 오류는 대체로 발견하기 쉽지만, 몇 가지는 애매합니다. 공백 오류가 대 표적인데, 공백(space)과 탭(tab)은 구별이 되지 않고, 통상 무시하고 넘어가기 쉽기 때문입니다. >>> x = 5 >>> y = 6 File "<stdin>", line 1 y = 6 ˆ SyntaxError: invalid syntax 이 예제의 문제는 두 번째 줄이 한 칸 공백으로 들여써서 발생하는 것입니다. 하지만, y에 오류 메시지가 있는데 프로그래머를 잘못된 곳으로 인도합니다. 대 체로 오류 메시지는 문제가 어디에서 발견되었는지를 지칭하지만, 실제 오류는 코드 앞에서 종종 선행하는 줄에 있을 수 있습니다.

41 3.10. 용어 정의 39 동일한 문제가 실행 오류에도 있습니다. 데시벨(decibels)로 신호 대비 잡음비를 계산한다고 가정합시다. 공식은 SNRdb = 10 log10 (Psignal /Pnoise )입니다. 파이썬 에서 아래와 같이 작성할 수 있습니다. import math signal_power = 9 noise_power = 10 ratio = signal_power / noise_power decibels = 10 * math.log10(ratio) print decibels 하지만, 실행하게 되면, 다음과 같은 오류 메시지1 가 발생합니다. Traceback (most recent call last): File "snr.py", line 5, in? decibels = 10 * math.log10(ratio) OverflowError: math range error 오류 메지지가 5번째 줄에 있지만, 잘못된 것은 없습니다. 실제 오류를 발견하기 위해서, 출력값은 0인 ratio의 값을 print문을 사용해서 출력해 보는 것이 도움 이 됩니다. 문제는 4번째 줄에 있는데, 두 정수를 나누기를 소수점 연산을 했기 때문입니다. signal_power 와 noise_power 를 부동 소수점값으로 표현하는게 해결책입니다. 대체로, 오류 메시지는 어디에 문제가 발견되었는지를 말해주지만, 종종 어디서 원인이 발생했는지는 말해주지 않습니다 용어 정의 몸통부문(body): 복합문 내부에 열련의 명령문 실행을 기술한 부문 불 표현식(boolean expression): 참(True) 혹은 거짓(False)의 값을 가지는 표 현식 분기(branch): 조건문에서 대안 실행 명령문의 한 흐름 연쇄 조건문(chained conditional): 일련의 대안 분기가 있는 조건문 비교 연산자(comparison operator): 피연산자를 ==,!=, >, <, >=, <=로 비교하 는 연산자 조건문(conditional statement): 조건에 따라 명령의 흐름을 조절하는 명령문 조건(condition): 조건문에서 어느 분기를 실행할지 결정하는 불 표현식 복합문(compound statement): 머리부문(head)와 몸통부문(body)으로 구성된 스테이트먼트. 머리부문은 콜론(:)으로 끝나며, 몸통부문은 머리부문을 기준으로 들여쓰기로 구별된다. 1 파이썬 3.0에서는 오류 메시지가 발생하지 않습니다. 정수 피연산자인 경우에도 나눗셈 연 산자가 부동 소수점 나눗셈을 수행합니다.

42 Chapter 3. 조건부 실행 40 가디언 패턴(guardian pattern): 단락(short circuit) 행동을 잘 이용하도록 논리 표현식을 구성하는 것 논리 연산자(logical operator): 불 표현식을 결합하는 연산자 중의 하나 (and, or, not) 중첩 조건문(nested conditional): 하나의 조건문이 다른 조건문 분기에 나타나 는 조건문. 트레이스백(traceback): 예외 사항이 발생했을 때 실행되고, 출력되는 함수 리 스트 단락(short circuit): 왜냐하면 파이썬이 나머지 조건 표현식 평가를 할 필요없 이 최종 결과를 알기 때문에, 파이썬이 논리 표현식 평가를 일부 진행하고, 더 이상의 평가를 멈출 때 연습문제 Exercise 시간 이상 일할 경우 시급을 1.5배 더 종업원에게 지급하는 봉 급계산 프로그램을 다시 작성하세요. Enter Hours: 45 Enter Rate: 10 Pay: Exercise 3.2 try, except를 사용하여 봉급계산 프로그램을 다시 작성하세요. 숫자가 아닌 입력값을 잘 처리해서 메시지를 출력하고 프로그램을 종료하게 됩 니다. 다음은 프로그램의 출력 결과를 보여줍니다. Enter Hours: 20 Enter Rate: nine Error, please enter numeric input Enter Hours: forty Error, please enter numeric input Exercise 과 1.0 사이의 점수를 출력하는 프로그램을 작성하세요. 만약 점수가 범위 밖이면 오류를 출력합니다. 만약 점수가 0.0과 1.0 사이라면, 다음 의 테이블에 따라 등급을 출력합니다. Score >= 0.9 >= 0.8 >= 0.7 >= 0.6 < 0.6 Grade A B C D F Enter score: 0.95

43 3.11. 연습문제 41 A Enter score: perfect Bad score Enter score: 10.0 Bad score Enter score: 0.75 C Enter score: 0.5 F 입력값으로 다양한 다른 값을 출력하도록 반복적으로 보이는 것처럼 프로그램 을 실행하세요.

44 42 Chapter 3. 조건부실행

45 Chapter 4 함수 4.1 함수 호출 프로그래밍 문맥에서, 함수(function)는 연산을 수행하는 일련의 명명된 명령문 이다. 함수를 정의할 때, 이름과 일련의 명령문을 명시한다. 후에, 함수를 이름으 로 호출(call) 할 수 있다. 이미 함수 호출(function call)의 예제를 살펴 보았다. >>> type(32) <type 'int'> 함수명은 type이다. 괄호안의 표현식을 함수의 인수(argument)라고 한다. 인수 는 함수의 입력값으로 함수 내부로 전달되는 값이나 변수이다. 앞의 type 함수 의 결과값은 인수의 형(type)이다. 통상 함수가 인수를 받아 결과를 돌려준다고 한다. 결과를 결과값(return value) 이라고 부른다. 4.2 내장(Built-in) 함수 파이썬에는 함수를 정의할 필요없이 사용할 수 있는 많은 중요 내장함수가 있 다. 파이썬을 처음 만든 사람이 공통의 문제를 해결할 수 있는 함수를 작성해서 여러분이 사용할 수 있도록 파이썬에 포함을 했습니다. max와 min 함수는 리스트의 최소값과 최대값을 각기 계산해서 여러분에게 보여 줍니다. >>> max('hello world') 'w' >>> min('hello world') ' ' >>> max 함수는 문자열의 가장 큰 문자, 상기 예제에서는 w, min함수는 최소 문자를, 상기 예제에서는 공백, 출력합니다.

46 Chapter 4. 함수 44 또 다른 매우 자주 사용되는 내장 함수는 얼마나 많은 항목이 있는지 출력하는 len함수가 있습니다. 만약 len 함수의 인수가 문자열이면 문자열의 문자 갯수 를 반환합니다. >>> len('hello world') 11 >>> 이들 함수는 문자열에만 한정된 것이 아니라, 뒷장에서 보듯이 다양하게 다양한 자료형에 사용될 수 있습니다. 내장함수의 이름은 사전에 점유된 예약어로 다뤄야 하고, 예를 들어 max 를 변수명으로 사용을 피해야 합니다. 4.3 형 변환 함수 파이썬은 A형(type)에서 B형(type)으로 값을 변환하는 내장 함수를 제공합니다. int함수는 임의의 값을 입력 받아 변환이 가능하면 정수형으로 변환하고, 그렇 지 않으면 불평을 합니다. >>> int('32') 32 >>> int('hello') ValueError: invalid literal for int(): Hello int는 부동 소수점 값을 정수로 변환할 수 있지만 소수점 이하를 절사합니다. >>> int( ) 3 >>> int(-2.3) -2 float는 정수와 문자열을 부동 소수점으로 변환합니다. >>> float(32) 32.0 >>> float(' ') 마지막으로, str은 인수를 문자열로 변환합니다. >>> str(32) '32' >>> str( ) ' ' 4.4 난수(Random numbers) 동일한 입력을 받을 때, 대부분의 컴퓨터는 매번 동일한 출력값을 생성하기 때 문에 결정적(deterministic)이라고 합니다. 결정론이 대체로 좋은데 왜냐하면,

47 4.4. 난수(Random numbers) 45 동일한 계산은 동일한 결과를 기대할 수 있기 때문입니다. 하지만, 어떤 어플리 케이션에서는 컴퓨터가 예측불가능하길 바랍니다. 게임이 좋은 예이고, 더 많은 예를 찾을 수 있습니다. 프로그램을 온전하게 비결정론적으로 만드는 것은 쉽지 않은 것으로 밝혀졌지만, 비결정론적인 것처럼 보이게 하는 방법은 있습니다. 의사 난수(pseudorandom numbers)를 생성하는 알고리즘을 사용하는 방법이 그 중 하나입니다. 의사 난수는 이미 결정된 연산에 의해서 생성된다는 점에서 진정한 의미의 난수는 아니지만,이렇게 생성된 숫자를 진정한 난수와 구별하기 는 불가능에 가깝다. random 모듈은 의사 난수를 생성하는 함수를 제공한다. (이하 의사 난수 대신 난수(random) 로 간략히 부르기로 한다.) random 함수는 0.0과 1.0 사이의 부동 소수점 난수를 반환한다. random 함수는 0.0은 생성하지만 1.0은 생성하지 않는다. 매번 random 함수를 호출할 때 마다 이미 생성된 난수열에서 하나씩 하나씩 뽑아 쓰게 됩니다. 샘플로 다음 반복문을 실행해 봅시다. import random for i in range(10): x = random.random() print x 프로그램이 0.0과 1.0을 포함하지 않는 최대 1.0에서 10개의 난수 리스트를 생 성합니다 Exercise 4.1 여러분의 컴퓨터에 프로그램을 실행해서, 어떤 난수가 생성되는 지 살펴보세요. 한번 이상 프로그램을 실행하여 보고, 어떤 난수가 생성되는지 다시 살펴보세요. random함수는 난수를 다루는 단지 많은 함수 중의 하나입니다. randint 함수는 최저(low)와 최고(high) 매개 변수를 입력받아 최저값(low)와 최고값(high) 을 포함하는 두 사이의 정수를 반환합니다. >>> random.randint(5, 10) 5 >>> random.randint(5, 10) 9 무작위로 배열로부터 하나의 숫자를 뽑아내기 위해서, choice를 사용합니다.

48 Chapter 4. 함수 46 >>> t = [1, 2, 3] >>> random.choice(t) 2 >>> random.choice(t) 3 random 모듈은 정규분포, 지수분포, 감마분포 및 몇가지 추가된 연속형 분포에 서 난수를 생성할 수 있는 함수도 제공합니다. 4.5 수학 함수 파이썬은 가장 친숙한 수학 함수를 제공하는 수학 모듈이 있습니다. 수학 모듈을 사용하기 전에, 수학 모듈 가져오기를 실행합니다. >>> import math 이 명령문은 math 모듈 개체를 생성한다. 모듈 개체를 출력하면, 모듈 개체에 대한 정보를 얻을 수 있다. >>> print math <module 'math' from '/usr/lib/python2.5/lib-dynload/math.so'> 모듈 개체는 모듈에 정의된 함수와 변수를 담고 있다. 함수 중에 하나에 접근하 기 위해서, 점으로 구분되는 모듈의 이름과 함수의 이름을 명시해야 한다. 이런 형식을 점 표기법(dot notation)이라고 부른다. >>> ratio = signal_power / noise_power >>> decibels = 10 * math.log10(ratio) >>> radians = 0.7 >>> height = math.sin(radians) 첫 예제는 로그 지수 10으로 신호 대비 소음 비율을 계산한다. 수학 모듈은 자연 로그를 log함수를 호출해서 사용할 수 있도록 제공한다. 두 번째 예제는 라디안의 사인값을 찾는 것이다. 변수의 이름이 힌트로 sin과 다른 삼각 함수(cos, tan 등)는 라디안을 인수로 받는다. 도수에서 라디안으로 변환하기 위해서 360으로 나누고 2π를 곱한다. >>> degrees = 45 >>> radians = degrees / * 2 * math.pi >>> math.sin(radians) math.pi 표현문은 수학 모듈에서 pi 변수를 얻고, π와 근사적으로 동일하고 15 자리수까지 정확하다. 삼각함수를 배웠다면, 앞의 연산 결과를 2를 루트를 씌우고 2로 나누어서 비교 한다. >>> math.sqrt(2) /

49 4.6. 신규 함수 추가 신규 함수 추가 지금까지 파이썬에 딸려 있는 함수를 사용했지만 새로운 함수를 추가하는 것 도 가능하다. 함수 정의(function definition)는 신규 함수명과 함수가 호출될 때 실행할 일련의 명령문을 명세한다. 함수를 신규로 정의하면, 프로그램 내내 반 복해서 함수를 재사용할 수 있다. 여기 예제가 있다. def print_lyrics(): print "I'm a lumberjack, and I'm okay." print 'I sleep all night and I work all day.' def는 이것이 함수 정의를 나타내는 키워드입니다. 함수명은 print_lyrics입 니다. 함수명을 명명 규칙은 변수명과 동일합니다. 문자, 숫자, 그리고 몇몇 문장 부호는 사용할 수 있지만, 첫 문자가 숫자는 될 수 없다. 함수명으로 예약어 키 워드를 사용할 수도 없고, 동일한 변수명과 함수명은 피하는 것이 좋다. 함수명 뒤에 빈 괄호는 이 함수가 어떠한 인수도 갖지 않는다는 것을 나타낸다. 나중에, 입력값으로 인수를 가지는 함수를 작성해 볼 것이다. 함수 정의 첫번째 줄을 머리 부문(헤더, header), 나머지 부문을 몸통 부문(바디, body)라고 부른다. 머리 부문은 콜론(:)으로 끝나고, 몸통 부문은 들여쓰기를 해야 한다. 파이썬 관례로 들여쓰기는 항상 4칸의 공백이다. 몸통 부문은 제약 없이 명령문을 작성할 수 있다. print문의 문자열은 이중 인용부호로 감싸진다. 단일 인용부호나, 이중 인용부 호나 차이가 없다. 대부분의 경우 단일 인용부호를 사용하고, 단일 인용부호가 문자열에 나타나는 경우, 이중 인용부호를 사용하여 단일 인용부호가 출력되게 감싼다. 함수 정의를 인터렉티브 모드에서 타이핑을 한다면, 함수 정의가 끝나지 않았 다는 것을 알 수 있도록 생략부호(...)를 출력한다. >>> def print_lyrics():... print "I'm a lumberjack, and I'm okay."... print 'I sleep all night and I work all day.'... 함수 정의를 끝내기 위해서는 엔터(Enter)키를 눌러 빈 줄을 삽입한다. (스크립 트에서는 반듯이 필요한 것은 아니다.) 함수를 정의하게 되면 동일한 이름의 변수도 생성된다. >>> print print_lyrics <function print_lyrics at 0xb7e99e9c> >>> print type(print_lyrics) <type 'function'> print_lyrics의 값은 'function' 형을 가지는 함수 개체(function object) 이다. 신규 함수를 호출하는 구문은 내장 함수의 경우와 동일합니다.

50 Chapter 4. 함수 48 >>> print_lyrics() I'm a lumberjack, and I'm okay. I sleep all night and I work all day. 함수를 정의하면, 또 다른 함수 내부에서 사용이 가능합니다. 예를 들어, 이전의 후렴구를 반복하기 위해 repeat_lyrics 함수를 작성할 수 있습니다. def repeat_lyrics(): print_lyrics() print_lyrics() 그리고 나서, repeat_lyrics 함수를 호출합니다. >>> repeat_lyrics() I'm a lumberjack, and I sleep all night and I'm a lumberjack, and I sleep all night and I'm okay. I work all day. I'm okay. I work all day. 하지만, 이 방법이 실제 노래가 불려지는 방법은 아닙니다. 4.7 함수 정의와 사용법 앞 절의 코드 조각을 모아서 작성한 전체 프로그램은 다음과 같다. def print_lyrics(): print "I'm a lumberjack, and I'm okay." print 'I sleep all night and I work all day.' def repeat_lyrics(): print_lyrics() print_lyrics() repeat_lyrics() 상기 프로그램은 두개의 함수(print_lyrics, repeat_lyrics)를 담고 있다. 함 수정의는 다른 명령문과 동일하게 수행되지만, 함수 개체를 생성한다는 점에서 차이가 있다. 함수 내부의 명령문은 함수가 호출되기 전까지 수행되지 않고, 함 수 정의는 출력값도 생성하지 않는다. 예상하듯이, 함수를 실행하기 전에 함수를 생성해야 한다. 다시 말해서, 처음으 로 호출되기 전에 함수 정의가 실행되어야 한다. Exercise 4.2 상기 프로그램의 마지막 줄을 최상단으로 옮겨서 함수 정의 전에 호출되도록 프로그램을 고쳐보세요. 프로그램을 실행서 오류 메시지를 확인하 세요. Exercise 4.3 함수 호출을 맨 마지막으로 옮기고, repeat_lyrics 함수 정의 뒤 에 print_lyrics 함수를 옮기세요. 프로그램을 실행하게 되면 무슨 일이 발생 하나요?

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Chapter 2 변수와 수식 그리고 문장 프로그래밍 언어의 가장 강력한 기능 중 하나는 변수(variable)가 조작 가능하다는 것이다. 변수 는 값에 부여하는 이름이다. 2.1 할당문 할당문(assignment statement)은 새로운 변수를 생성하고 값을 부여

Chapter 2 변수와 수식 그리고 문장 프로그래밍 언어의 가장 강력한 기능 중 하나는 변수(variable)가 조작 가능하다는 것이다. 변수 는 값에 부여하는 이름이다. 2.1 할당문 할당문(assignment statement)은 새로운 변수를 생성하고 값을 부여 Chapter 2 변수와 수식 그리고 문장 프로그래밍 언어의 가장 강력한 기능 중 하나는 변수(variable)가 조작 가능하다는 것이다. 변수 는 값에 부여하는 이름이다. 2.1 할당문 할당문(assignment statement)은 새로운 변수를 생성하고 값을 부여한다. >>> message = 'And now for something completely

More information

Chapter 5 조건문과 재귀문 프로그램의 상태에 따라 다른 코드를 실행하는 if문이 이 장의 핵심 주제이다. 그 전에 내림 나눗 셈 연산자와 나머지 연산자를 살펴보자. 5.1 내림 나눗셈과 나머지 연산자 내림 나눗셈 연산자 //는 두 수를 나누어 얻은 결과 값의 정

Chapter 5 조건문과 재귀문 프로그램의 상태에 따라 다른 코드를 실행하는 if문이 이 장의 핵심 주제이다. 그 전에 내림 나눗 셈 연산자와 나머지 연산자를 살펴보자. 5.1 내림 나눗셈과 나머지 연산자 내림 나눗셈 연산자 //는 두 수를 나누어 얻은 결과 값의 정 Chapter 5 조건문과 재귀문 프로그램의 상태에 따라 다른 코드를 실행하는 if문이 이 장의 핵심 주제이다. 그 전에 내림 나눗 셈 연산자와 나머지 연산자를 살펴보자. 5.1 내림 나눗셈과 나머지 연산자 내림 나눗셈 연산자 //는 두 수를 나누어 얻은 결과 값의 정수 값을 취한다. 예를 들어, 105분 길이의 영화가 있다고 했을 때 몇 시간 짜리 영화인지

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

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

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf(hihi\n); } warning: conflicting types for functiona 이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.

More information

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Chapter 3 함수 프로그래밍이라는 문맥에서 함수(function)은 연산을 수행하기 위한 일련의 문장들에 이름을 붙여 놓은 것이다. 함수를 정의할 때는 이름과 문장들 지정해야 한다. 그 다음에 함수를 지정한 이름으로 호출(call) 할 수 있다. 3.1 함수 호출

Chapter 3 함수 프로그래밍이라는 문맥에서 함수(function)은 연산을 수행하기 위한 일련의 문장들에 이름을 붙여 놓은 것이다. 함수를 정의할 때는 이름과 문장들 지정해야 한다. 그 다음에 함수를 지정한 이름으로 호출(call) 할 수 있다. 3.1 함수 호출 Chapter 3 함수 프로그래밍이라는 문맥에서 함수(function)은 연산을 수행하기 위한 일련의 문장들에 이름을 붙여 놓은 것이다. 함수를 정의할 때는 이름과 문장들 지정해야 한다. 그 다음에 함수를 지정한 이름으로 호출(call) 할 수 있다. 3.1 함수 호출 우리는 이미 함수 호출(function call)의 예를 보았다: >>> type(42)

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Translation Song 1 Finger Family 한글 해석 p.3 아빠 손가락, 아빠 손가락. p.4 p.5 엄마 손가락, 엄마 손가락. p.6 p.7 오빠 손가락, 오빠 손가락. p.8 p.9 언니 손가락, 언니 손가락. p.10 p.11 아기 손가락, 아기 손가락. p.12 p.13 p.14-15 재미있게 부르기 (Sing and Play Time)

More information

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not, Page 1 of 5 Learn Korean Ep. 4: To be and To exist Of course to be and to exist are different verbs, but they re often confused by beginning students when learning Korean. In English we sometimes use the

More information

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

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PathEye 공식 블로그 다운로드 받으세요!!   지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

3장 함수

3장 함수 3 장함수 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 3 장함수 1 / 20 학습내용 함수호출타입변환함수수학함수사용자정의함수파라미터와인자변수와파라미터의범위함수의구분함수를사용하는이유 from을이용한가져오기디버깅변수의범위재귀함수 박창이 ( 서울시립대학교통계학과 ) 3 장함수 2 / 20 함수호출 함수는어떤연산을수행하는일련의명령문들로함수이름으로호출

More information

와플-4년-2호-본문-15.ps

와플-4년-2호-본문-15.ps 1 2 1+2 + = = 1 1 1 +2 =(1+2)+& + *=+ = + 8 2 + = = =1 6 6 6 6 6 2 2 1 1 1 + =(1+)+& + *=+ =+1 = 2 6 1 21 1 + = + = = 1 1 1 + 1-1 1 1 + 6 6 0 1 + 1 + = = + 7 7 2 1 2 1 + =(+ )+& + *= + = 2-1 2 +2 9 9 2

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

새로운 지점에서 단이 시작하는 경우 기둥코로 시작하라고 표시합니다. 기둥코(standing stitch)로 시작하는 방법은 YouTube 에서 찾아볼 수 있습니다. 특수 용어 팝콘뜨기: 1 코에 한길긴뜨기 5 코, 바늘을 빼고 첫번째 한길긴뜨기코의 앞에서 바늘을 넣은

새로운 지점에서 단이 시작하는 경우 기둥코로 시작하라고 표시합니다. 기둥코(standing stitch)로 시작하는 방법은 YouTube 에서 찾아볼 수 있습니다. 특수 용어 팝콘뜨기: 1 코에 한길긴뜨기 5 코, 바늘을 빼고 첫번째 한길긴뜨기코의 앞에서 바늘을 넣은 Desire Copyright: Helen Shrimpton, 2016. All rights reserved. By: Helen at www.crystalsandcrochet.com 12 인치 모티브 worsted/aran(10ply), 5mm 바늘 사용 약 10인치 Double Knitting(8ply), 4mm 바늘 사용 미국식 용어를 사용합니다. 약어

More information

1

1 2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^

More information

8장 문자열

8장 문자열 8 장문자열 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 1 / 24 학습내용 문자열 (string) 훑기 (traversal) 부분추출 (slicing) print 함수불변성 (immutablity) 검색 (search) 세기 (count) Method in 연산자비교 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 2 /

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

book.dvi

book.dvi 정보교육을 위한파이썬 정보탐색을통한데이터과학자로의여정 Version 0.0.9-d2 저자: Charles Severance 번역: 이광춘 (xwmooc) Copyright 2009- Charles Severance.한국어번역 2014- : 이광춘(xwMOOC) 출판 이력: 2014년 12월: 한국어색인,그림한글번역,목차한글반영,주요용어표준화 2014년 9월:

More information

152*220

152*220 152*220 2011.2.16 5:53 PM ` 3 여는 글 교육주체들을 위한 교육 교양지 신경림 잠시 휴간했던 우리교육 을 비록 계간으로이지만 다시 내게 되었다는 소식을 들으니 우 선 반갑다. 하지만 월간으로 계속할 수 없다는 현실이 못내 아쉽다. 솔직히 나는 우리교 육 의 부지런한 독자는 못 되었다. 하지만 비록 어깨너머로 읽으면서도 이런 잡지는 우 리

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구 Python: 파이썬이란무엇인가? Kangwon Natl. University Department of Computer Science Cheoneum Park Intelligent software Lab. 파이썬이란? Python 1990년암스테르담의귀도반로섬 (Guido Van Rossum) 이개발한인터프리터언어 국내외에서교육, 실무등에서많이사용 구글의소프트웨어,

More information

하나님의 선한 손의 도우심 이세상에서 가장 큰 축복은 하나님이 나와 함께 하시는 것입니다. 그 이 유는 하나님이 모든 축복의 근원이시기 때문입니다. 에스라서에 보면 하나님의 선한 손의 도우심이 함께 했던 사람의 이야기 가 나와 있는데 에스라 7장은 거듭해서 그 비결을

하나님의 선한 손의 도우심 이세상에서 가장 큰 축복은 하나님이 나와 함께 하시는 것입니다. 그 이 유는 하나님이 모든 축복의 근원이시기 때문입니다. 에스라서에 보면 하나님의 선한 손의 도우심이 함께 했던 사람의 이야기 가 나와 있는데 에스라 7장은 거듭해서 그 비결을 새벽이슬 2 0 1 3 a u g u s t 내가 이스라엘에게 이슬과 같으리니 그가 백합화같이 피 겠고 레바논 백향목같이 뿌리가 박힐것이라. Vol 5 Number 3 호세아 14:5 하나님의 선한 손의 도우심 이세상에서 가장 큰 축복은 하나님이 나와 함께 하시는 것입니다. 그 이 유는 하나님이 모든 축복의 근원이시기 때문입니다. 에스라서에 보면 하나님의 선한

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

2 min 응용 말하기 01 I set my alarm for 7. 02 It goes off. 03 It doesn t go off. 04 I sleep in. 05 I make my bed. 06 I brush my teeth. 07 I take a shower.

2 min 응용 말하기 01 I set my alarm for 7. 02 It goes off. 03 It doesn t go off. 04 I sleep in. 05 I make my bed. 06 I brush my teeth. 07 I take a shower. 스피킹 매트릭스 특별 체험판 정답 및 스크립트 30초 영어 말하기 INPUT DAY 01 p.10~12 3 min 집중 훈련 01 I * wake up * at 7. 02 I * eat * an apple. 03 I * go * to school. 04 I * put on * my shoes. 05 I * wash * my hands. 06 I * leave

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

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

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 두근두근 파이썬수업 4 장자료의종류에는어떤것들이있나요? 이번장에서만들프로그램 (1) 터틀그래픽의거북이와인사하는프로그램을작성해보자. Run Python (2) 여러개의색상을리스트에저장하였다가하나씩꺼내서원들을그려보자 Run Python 파이썬에서사용할수있는자료의종류 파이썬과자료형 변수에어떤종류의자료도저장할수있다 x = 10 print("x =", x) x = 3.14

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

<B3EDB9AEC0DBBCBAB9FD2E687770>

<B3EDB9AEC0DBBCBAB9FD2E687770> (1) 주제 의식의 원칙 논문은 주제 의식이 잘 드러나야 한다. 주제 의식은 논문을 쓰는 사람의 의도나 글의 목적 과 밀접한 관련이 있다. (2) 협력의 원칙 독자는 필자를 이해하려고 마음먹은 사람이다. 따라서 필자는 독자가 이해할 수 있는 말이 나 표현을 사용하여 독자의 노력에 협력해야 한다는 것이다. (3) 논리적 엄격성의 원칙 감정이나 독단적인 선언이

More information

기본소득문답2

기본소득문답2 응답하라! 기본소득 응답하라! 기본소득 06 Q.01 07 Q.02 08 Q.03 09 Q.04 10 Q.05 11 Q.06 12 Q.07 13 Q.08 14 Q.09 응답하라! 기본소득 contents 16 Q.10 18 Q.11 19 Q.12 20 Q.13 22 Q.14 23 Q.15 24 Q.16 Q.01 기본소득의 개념을 쉽게 설명해주세요. 06 응답하라

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0 for loop array {commands} 예제 1.1 (For 반복변수의이용 ) >> data=[3 9 45 6; 7 16-1 5] data = 3 9 45 6 7 16-1 5 >> for n=data x=n(1)-n(2) -4-7 46 1 >> for n=1:10 x(n)=sin(n*pi/10); n=10; >> x Columns 1 through 7

More information

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap-06.pptx 쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

4 5 4. Hi-MO 애프터케어 시스템 편 5. 오비맥주 카스 카스 후레쉬 테이블 맥주는 천연식품이다 편 처음 스타일 그대로, 부탁 케어~ Hi-MO 애프터케어 시스템 지속적인 모발 관리로 끝까지 스타일이 유지되도록 독보적이다! 근데 그거 아세요? 맥주도 인공첨가물이

4 5 4. Hi-MO 애프터케어 시스템 편 5. 오비맥주 카스 카스 후레쉬 테이블 맥주는 천연식품이다 편 처음 스타일 그대로, 부탁 케어~ Hi-MO 애프터케어 시스템 지속적인 모발 관리로 끝까지 스타일이 유지되도록 독보적이다! 근데 그거 아세요? 맥주도 인공첨가물이 1 2 On-air 3 1. 이베이코리아 G마켓 용평리조트 슈퍼브랜드딜 편 2. 아모레퍼시픽 헤라 루즈 홀릭 리퀴드 편 인쇄 광고 올해도 겨울이 왔어요. 당신에게 꼭 해주고 싶은 말이 있어요. G마켓에선 용평리조트 스페셜 패키지가 2만 6900원! 역시 G마켓이죠? G마켓과 함께하는 용평리조트 스페셜 패키지. G마켓의 슈퍼브랜드딜은 계속된다. 모바일 쇼핑 히어로

More information

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가 수업주제 경찰 출동! (버튼, LED, 버저 사용하기) 9 / 12 차시 수업의 주제와 목표 본 수업에서는 이전 차시에 배웠던 블록들의 기능을 복합적으로 활용한다. 스위치 기능을 가진 버튼을 활용하여 LED와 버저를 동시에 작동시키도록 한다. 각 블록들을 함께 사용하는 프로젝트를 통해 각각의 기능을 익히고 보다 다양한 활용 방법을 구상할 수 있다. 교수 학습

More information

Chapter_06

Chapter_06 프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.

More information

750 1,500 35

750 1,500 35 data@opensurvey.co.kr 750 1,500 35 Contents Part 1. Part 2. 1. 2. 3. , 1.,, 2. skip 1 ( ) : 2 ( ) : 10~40 (, PC, ) 1 : 70 2 : 560 1 : 2015. 8. 25~26 2 : 2015. 9. 1 4 10~40 (, PC, ) 500 50.0 50.0 14.3 28.6

More information

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

Microsoft Word _mentor_conf_output5.docx

Microsoft Word _mentor_conf_output5.docx < 이재성교수님연구실멘토링자료 > 20151012 최현준제작 # 목차 1. 간단한파이썬 1.1 파이썬설치및설명. 1.2 파이썬데이터형과연산자. 1.3 간단한입출력과형변환. 1.4 for, while, if, with ~ as, indent. 1.5 def 함수정의와 default / return values 1.6 import 와 try except, pip.

More information

문서의 제목 나눔고딕B, 54pt

문서의 제목 나눔고딕B, 54pt 산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART I : 파이썬기초 가천대학교 산업경영공학과 최성철교수 수학연산 Integer 와 Float >>> print 3/2 1 # 왜 1 이나올까? - 파이썬은정수 (Integer) 와소수 (decimal number) 를구분 - 프로그래밍에서소수는부동소수 (floating-point numbers) 또는 float

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

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

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 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

슬라이드 1

슬라이드 1 기초 PYTHON 프로그래밍 14. 함수 - 1 1. 함수 2. 파이썬내장함수 3. 사용자정의함수 4. 함수의인수와반환값 5. 함수의위치와 main 작성하기 1. 함수 블랙박스 (black box) 함수는입력과출력을갖는 black box이다. 주어진입력에대해서어떤과정을거쳐출력이나오는지가숨겨져있다. >>> print('hello world') Hello world

More information

퇴좈저널36호-4차-T.ps, page 2 @ Preflight (2)

퇴좈저널36호-4차-T.ps, page 2 @ Preflight (2) Think Big, Act Big! Character People Literature Beautiful Life History Carcere Mamertino World Special Interview Special Writing Math English Quarts I have been driven many times to my knees by the overwhelming

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - chap-05.pptx 쉽게풀어쓴 C 언어 Express 제 5 장수식과연산자 컴퓨터프로그래밍기초 이번장에서학습할내용 * 수식과연산자란? * 대입연산 * 산술연산 * 논리연산 * 관계연산 * 우선순위와결합법칙 이번장에서는수식과연산자를살벼봅니다. 컴퓨터프로그래밍기초 2 수식 수식 (expression) x + y x*x + 5*x + 6 (principal * interest_rate

More information

4. 수업의 흐름 차시 창의 인성 수업모형에 따른 단계 수업단계 활동내용 창의 요소 인성 요소 관찰 사전학습: 날짜와 힌트를 보고 기념일 맞춰보기 호기심 논리/ 분석적 사고 유추 5 차시 분석 핵심학습 그림속의 인물이나 사물의 감정을 생각해보고 써보기 타인의 입장 감정

4. 수업의 흐름 차시 창의 인성 수업모형에 따른 단계 수업단계 활동내용 창의 요소 인성 요소 관찰 사전학습: 날짜와 힌트를 보고 기념일 맞춰보기 호기심 논리/ 분석적 사고 유추 5 차시 분석 핵심학습 그림속의 인물이나 사물의 감정을 생각해보고 써보기 타인의 입장 감정 World Special Days 1. 수업 목표 과목 영어 학년 6 학년 내용 목표 인성 목표 언어 목표 여러 기념일에 대해 알아보고 새로운 기념일을 만들고 소개할 수 있다. 소외된 사람이나 사물에 대해 생각해보고 이들에 대한 배려와 관심의 필요성을 깨달음으로써 타인의 입장에 감정 이입, 배려 등의 요소를 기를 수 있다. 기념일이나 특별한 날짜를 묻고 대답할

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

Microsoft PowerPoint Predicates and Quantifiers.ppt

Microsoft PowerPoint Predicates and Quantifiers.ppt 이산수학 () 1.3 술어와한정기호 (Predicates and Quantifiers) 2006 년봄학기 문양세강원대학교컴퓨터과학과 술어 (Predicate), 명제함수 (Propositional Function) x is greater than 3. 변수 (variable) = x 술어 (predicate) = P 명제함수 (propositional function)

More information

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로 한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리

More information

2007 학년도 하반기 졸업작품 아무도 모른다 (Nobody Knows) 얄리, 보마빼 (AIi, Bomaye) 외계인간 ( 外 界 人 間 ) 한국예술종합학교 연극원 극작과 예술전문사 2005523003 안 재 승

2007 학년도 하반기 졸업작품 아무도 모른다 (Nobody Knows) 얄리, 보마빼 (AIi, Bomaye) 외계인간 ( 外 界 人 間 ) 한국예술종합학교 연극원 극작과 예술전문사 2005523003 안 재 승 2007 학년도 하반기 졸업작품 아무도 모른다 (Nobody Knows) 알리, 보마예 (Ali, Bomaye) 외계인간 ( 外 界 A 間 ) 원 사 3 승 극 문 연 전 재 E 숨 } 닮 런 예 m 안 합 과 ; 조 O 자 숨 그, 예 시 국 하 2007 학년도 하반기 졸업작품 아무도 모른다 (Nobody Knows) 얄리, 보마빼 (AIi, Bomaye)

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

노트북 IT / 모바일 데스크탑 34 올인원PC 35 PC 소프트웨어 포터블SSD / SSD / 메모리카드 36 태블릿 37 휴대폰 39 PC 솔루션 IT / 모바일 IT / 모바일 노트북 29 삼성전자는 Windows 를 권장합니다. 삼성전자만의 편리하고 다양한 소프트웨어를 통해 초보자도 보다 쉽고 빠르게 이용 가능합니다. Easy Settings 삼성 패스트

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)- 1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32

More information

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

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제 Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, 2018 1 1.1 Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제 6.5에서 찾아볼 수 있다. http://incompleteideas.net/book/bookdraft2017nov5.pdf

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

Week5

Week5 Week 05 Iterators, More Methods and Classes Hash, Regex, File I/O Joonhwan Lee human-computer interaction + design lab. Iterators Writing Methods Classes & Objects Hash File I/O Quiz 4 1. Iterators Array

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

<B1E2C8B9BEC828BFCFBCBAC1F7C0FC29322E687770>

<B1E2C8B9BEC828BFCFBCBAC1F7C0FC29322E687770> 맛있는 한국으로의 초대 - 중화권 음식에서 한국 음식의 관광 상품화 모색하기 - 소속학교 : 한국외국어대학교 지도교수 : 오승렬 교수님 ( 중국어과) 팀 이 름 : 飮 食 男 女 ( 음식남녀) 팀 원 : 이승덕 ( 중국어과 4) 정진우 ( 중국어과 4) 조정훈 ( 중국어과 4) 이민정 ( 중국어과 3) 탐방목적 1. 한국 음식이 가지고 있는 장점과 경제적 가치에도

More information

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기 소규모 비즈니스를 위한 YouTube 플레이북 YouTube에서 호소력 있는 동영상으로 고객과 소통하기 소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

More information

1_2•• pdf(••••).pdf

1_2•• pdf(••••).pdf 65% 41% 97% 48% 51% 88% 42% 45% 50% 31% 74% 46% I have been working for Samsung Engineering for almost six years now since I graduated from university. So, although I was acquainted with the

More information

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장

More information

歯처리.PDF

歯처리.PDF E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling

More information

»êÇÐ-150È£

»êÇÐ-150È£ Korea Sanhak Foundation News VOL. 150 * 2011. 12. 30 논단 이슈별 CSR 활동이 기업 충성도에 미치는 영향 : 국가별 및 산업별 비교분석 최 지 호 전남대 경영학부 교수 Ⅰ. 서론 Ⅰ. 서론 Ⅱ. 문헌 고찰 및 가설 개발 2. 1. 호혜성의 원리에 기초한 기업의 사회적 투자에 대한 소

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information