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

Size: px
Start display at page:

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

Transcription

1 Python 프로그래밍 마지막수정일 : by girin

2 참고자료 외여러파일 강의자료 구글파이썬스타일가이드 Python IDE 개발환경 Tutorials 2

3 파이썬 (Python) 이란? 년귀도반로섬 (Gudi Van Rossum) 이발표 - 플랫폼독립적인인터프리터언어며, - 객체지향적, 동적타이핑언어 Gudi Van Rossum - 처음 C 언어로구현되었음 알아두면좋은이야기 - 귀도반로섬은 1989년크리스마스에할일이딱히없어파이썬을개발하였다고함 - 파이썬 이라는이름은코메디프로그램 Monty Python s Flying Circus 에서유래 - 파이썬의원래의미는그리스신화에나오는거대한뱀 - 귀도는구글에근무했고현재 DropBox에서근무중 - 귀도는파이썬개발자를찾는헤드헌터로부터취업제안메일을받은적이있음 3

4 파이썬 (Python) 파이썬의로고 두마리의뱀이겹쳐있는모습 4

5 파이썬의특징 1 플랫폼 (?) 독립적인 (?) 인터프리터 (?) 언어 5

6 파이썬의특징 플랫폼 = OS : 윈도우, 리눅스, 안드로이드, 맥OS, ios 등프로그램이실행되는운영체제를플랫폼이라고함 독립적인 = 관계없는, 상관없는 : OS 에상관없이한번프로그램을작성하면사용가능 인터프리터 = 통역기를사용하는언어 : 소스코드를바로실행할수있게지원하는프로그램실행방법뭔말인지모르면넘어가자. 괜찮다. 6

7 파이썬의특징 2 가독성 간결하고가독성이좋습니다. 코드블럭을들여쓰기 (indentation) 로구분. 풍부한라이브러리 매우광범위한라이브러리가기본으로포함되어있음. 외부라이브러리가풍부하며확장이쉬움. 접착성 무료 쉽게라이브러리를추가할수가있습니다. 파이썬에서 C 로구현된부분을사용할수도있으며, C 에서파이썬을사용할수도있습니다. 파이썬은파이썬소프트웨어재단 (Python Software Foundation) 에서관리하고있음. 무료와다름없는 Python Software Foundation License. 유니코드 파이썬에서의문자열들은모두유니코드입니다. 우리가한글, 한자등을표현하려고특별한노력을할필요가없습니다. 동적타이핑 런타임시에타입체크를하는동적타이핑을지원하며, 메모리관리자동으로합니다. 7

8 파이썬의특징 3 객체지향적 (?) 동적 (?) 타이핑언어 8

9 파이썬의특징 3 객체지향적언어 : 실행순서가아닌단위모듈 ( 객체 ) 중심으로프로그램을작성하나의객체는어떤목적을달성하기위한행동 (method) 와데이터 (attribute) 를가지고있음 동적타이핑언어 : 프로그램이실행하는시점프로그램이가지고있는데이터에대한타입을검사함뭔말인지모르면넘어가자. 괜찮다. 9

10 컴파일러언어 vs 인터프리터언어 컴파일러 인터프리터 소스코드를기계어로먼저번역하고해당플랫폼에최적화되어프로그램을실행 작동방식 별도의번역과정없이소스코드를한줄한줄분석하여컴퓨터가처리할수있도록함 실행속도가빠름한번의많은기억장소필요 장점단점 간단히작성, 메모리가적게필요실행속도가느림 C, 자바, C++, C# 주요언어파이썬, 스칼라 최근인터프리터언어도실행속도를올리기위해사용자가모르게컴파일한다음번역없이실행 10

11 소프트웨어 ( 프로그램 ) 의동작과정 사람이알수있는고급언어를기계가알수있는저급언어로변환 Compiler Assembler Source Code A = 3 B = 4 Write (a * b) M OV A=3 M OV B=4 LOD A LOD B STO 1,TEM P CPU Interpreter 파이썬은처음에컴파일러언어인 C 로작성되었다. 당연히실행시 Assembler 와같은기계어변환과정을거친다 11

12 Why Python? 12

13 왜파이썬인가? 인간지향적인간단한문법 JAVA vs Python 변수선언여부 Loop 선언형태 Brace 여부 프로그래밍을몰라도해석이가능한문법의언어 13

14 왜파이썬인가? 다양한라이브러리, 넓은활용범위 14

15 가장인기있고대중화된 Python 15

16 파이썬의종류 Cpython : C 로짜여진파이썬. 우리가쓰는파이썬인터프리터가바로이 CPython 이다. 바꿔말하면파이썬은 C 로짜여졌다라고할수도 Cython : 싸이썬은파이썬의수퍼셋 (superset) 이다. 파이썬이동적으로결정되는부분을정적으로결정하고컴파일을하면되지 Jython : 자바위에서돌아가는파이썬 IronPython : 닷넷에서돌아가는파이썬 PyPy : 파이썬으로작성된파이썬인터프리터 16

17 파이썬프로젝트 파이썬프로젝트 400 가지그리고소스파일 알게모르게파이썬이사용되는프로젝트들이많습니다만, 유명한것들만예를들어보겠습니다. BitTorrent, MoinMoin, Scons, Trac, Yum CherryPy, Django GIMP, Maya, Paint Shop Pro Youtube.com, Google Groups, Google Maps, Gmail 17

18 파이썬 2.x 와 3.x 차이 print 가함수로변경. 2.x style : >>> print "welcome to", "python3k welcome to python3k 3.0 style : >>> print("welcome to", "python3k") welcome to python3k long 자료형이없어지고 int 로통일. 2.x style : >>> type(2**31) <type 'long'> >>> sys.maxint style : >>> type(2**31) <class 'in t'> >>> type(2**40) <class 'in t'> int / int 의결과가 float 으로처리. 2.x style : >>> 3/ style : >>> 3/2 1.5 >>> type(2/2) <class ' flo at'> String, Unicode 체계변경. 2.x style : >>> type(' 가 ') <type 'str'> >>> type(u' 가 ') <type 'unicode'> 3.0 style : >>> type(' 가 ') <class 'str'> >>> type(' 가 '.encode('cp949')) <class 'bytes'> 18

19 소스코드인코딩 파이썬에서는 # 이후는주석으로인식합니다. 그러나다음과같이, 소스코드부분에서사용될경우, 소스코드인코딩을지정하는용도로사용됩니다. # coding: latin-1 # -*- coding: utf-8 -*- 19

20 기타파이썬문법 한라인에여러구문이올경우에는세미콜론 (;) 을사용해야합니다. >>> a = 1; b = 2 들여쓰기 (indentation) 이중요하지만, 문장이아직안끝난경우에는들여쓰기를안해도문법오류가나지않습니다. >>> a = (1 + [TAB] [TAB][S][S]4) >>> a 10 20

21 파이썬버전 2.x 를 3. ㅌ로변환하기 파이썬 2.x 과파이썬 3 과는호환이되지않는다는것은큰단점입니다만, 2.x 에서 3 로변경하는툴을제공합니다. C:\ Python30\ To o ls\ Scripts>2to3.py -w test.py 21

22 파이썬시작하기 22

23 Python 설치 에서다운로드설치설치할때 Pat h 자동으로등록되도록체크 23

24 설치및개발환경 24

25 설치및개발환경 25

26 설치및개발환경 Python command line IDLE 26

27 Python IDLE 실행 27

28 Python 실행 Windows 에서도 CLI 환경에서개발 실행창에 cmd 입력 ( 하단명령어입력 ) Command Line Interface (CLI) Graphic User Interface (GUI) 와달리 Text 를사용하여컴퓨터에명령을입력하는인터페이스체계 28

29 CLI 환경에서 python 파이썬실행 29

30 CLI 환경 GUI 환경의명령들도 CLI 를통해호출가능 예 ) 작업관리자호출 : taskmgr PATH 가설정되어야어디서나작동가능 노트패드실행 : notepad 익스플로러실행 : "c:\ Program Files\ Internet Explorer\ iexplore" 실행시실행인자 (argument) 값사용가능 종료 : shutdown /s, 재시작 : shutdown /r 같은명령어지만인자값 ( 옵션또는인수 ) 에따라기능이다름 여러명령어를동시에또는자동화하여실행가능 예 ) autoexec.bat 30

31 CLI 상에서주요명령어 명령어 수행내용 dir mkdir python copy abc.txt python\ cd python 해당폴더의파일리스트보여주기 "python" 이라는이름으로새폴더만들기 "abc.txt" 파일을 "python" 폴더로복사 "python" 폴더로이동 move abc.txt..\ "abc.txt" 파일을부모폴더로이동 ( 복사후삭제 ) cd.. del abc.txt rmdir python echo 부모폴더로이동 "abc.txt" 파일삭제 "python" 폴더삭제 Echo Hello World > hello.txt 31

32 코딩컨벤션 32

33 코딩컨벤션 ㆍ프로그래밍은공동작업이많기때문에프로그램을작성하는가이드라인언어마다정해져있음 ㆍ자신만의방식으로만프로그램을작성할경우, 다른사용자의이해가떨어짐 ㆍ컴퓨터가이해할수있는코드는어느바보나다짤수있다. 좋은프로그래머는사람이이해할수있는코드를짠다. - 마틴파울러 ㆍ이를위해기본적인코딩작성법을코딩컨벤션이라함 33

34 Python 코딩컨벤션 ㆍ들여쓰기는공백 4칸을권장ㆍ한줄은최대 79자까지ㆍ클래스내의메소드정의는 1줄씩띄어쓰기ㆍ불필요한공백은피함 ( ([]) 와 (()) 안, (,), (:) 과 (;) 앞ㆍ = 연산자는붙여씀ㆍ주석은항상갱신, 불필요한주석은삭제ㆍ소문자 L, 대문자 O, 대문자 I는변수명으로사용하지말것 ( 가독성문제 ) ㆍ함수명은소문자로구성, 필요하면밑줄로나눔 34

35 모든프로그래밍언어 C, C++, Java, Python, R, 자바스크립트, C# 변수여러 가지다른값들을나타내는일종의상징 byte char int long float double 연산 제어 함수 산술연산자 ( +, -, /, *, ^, % ) 비교연산자 ( =, >, <, >=, <=, ==,!=) 비트연산자 (&,, ^, ~, <<, >>) 논리연산자 ( &&,,! ) 증감연산자 (a++, a--, ++a, --a) sw itch 문, while 반복문, if 문 영어 function 에서온말인데이뜻은 " 기능 " 을뜻한다. 즉, 하나의기능을구현하는부분을따로떼어구현하는것 int sum(a, b); 35

36 Python 변수 36

37 변수 (Variable) 임시로혹은영구적으로값을기억해두기위한저장소값을담아줄뿐만아니라어떠한값에이름표를붙이는것변수가담고있는값은항상고정되어있는게아니라변할수있다 문자, 숫자, 밑줄 (_) 로구성됩니다. 숫자는처음에나올수없습니다. 대소문자를구분합니다. 예약어사용불가. 4pple = 10 # 숫자가가장처음에등장했다. 이경우에는구문에러가발생한다. admin = 50 # 정상적으로 ad m in 이란변수가만들어진다. Apple = 60 # 정상적으로 Apple 이란변수가만들어진다. apple = 70 # 대소문자를구분하기때문에앞에나온변수인 Apple 과는별개의변수이다. print(admin, Apple, apple) # 세변수의값을모두출력한다. 출력된결과는 이다. 예약어, KeyWorld 사용불가. False, None, True, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield 37

38 파이썬의모든자료형은객체 >>> a = 1 >>> b = "python" >>> c = [1,2,3] >>> X = 3 >>> Y = 3 >>> Z = 5 >>> print(id(x), id(y), id(3), id(z), id(5))

39 수치자료형 (Numeric Data Type) 정수 (Integer) >>> A = 5 >>> B = 10 >>> print(a, B) 실수 (Float ) >>> print(0b10, 0o10, 0x10) >>> bin(202020) '0b ' >>> oct(20114) '0o47222' >>> hex(401000) '0x61e68' >>> A = 3.14 >>> B = >>> print(a, B) >>> E >>> E 복소수 (Complex) >>> x = 7-3j >>> type(x) <class 'complex'> >>> x.imag -3.0 >>> x.real 7.0 >>> x.conjugate() (7+3j) 39

40 정수형상수 (int) ㆍ 10 진수, 16 진수, 8 진수, 2 진수변환가능 a= 32 # a에정수 32할당 print a, hex(a), oct(a), bin(a) # 10진수, 16진수, 8진수, 이진수값출력 32 0x b ㆍ정수간의연산은정수, 정수 - 실수계산은실수로연산 >>> print >>> print

41 실수형상수 (float) >>> a = 1.2 # a에정수 1.2 할당 >>> b = 2.0 # b에정수 2.0 할당 >>> print a. is_integer(), b.is_integer() # a와 b가정수형인지확인 False True # a는정수형불가, b는가능 >>> import math # math 라이브러리호출 >>> print round(a), math.ceil(a), math.floor(a) # a의반올림, 올림, 내림계산수헁 41

42 복소수형상수 (complex) ㆍ실수부와허수부로분리, 허수부는 j 를붙임 >>> a = 1 + 1j # a에 1 + i 할당 >>> b = 1-1j # b에 1 - i 할당 >>> print (a+b), (a-b), (a* b) # a+b, a-b, a* b 출력 (2+0j) 2j (2+0j) >>> print a.real, a.imag, a.conjugate() # a의실수, 허수, 켤례복소수출력 j >>> a = 1 >>> b = -1 >>> complex (a,b) # a는실수, b는허수로복소수생성 (1-1j) 42

43 모듈 math 를활용한연산 ㆍ복잡한수학연산을위해기존만들어진모듈을사용 import math print math.pow(2,10) print math.sqrt(121) print math.log(12) Print math.log10(100) # math 모듈호출 # 지수연산 # 제곱근연산 # 자연로그연산 # 상용로그연산

44 문자열 (string) 44

45 문자열 (string) ㆍ시퀀스자료형으로문자형 data 를메모리에저장ㆍ영문자한글자는 1byte 의메모리공간을사용 import sys # sys 모듈을호출 print sys.getsizeof("a"), sys.getsizeof("ab"), sys.getsizeof("abc") # a, ab, abc 의각메모리사이즈출력 ㆍ string 은 1byte 크기로한글자씩메모리공간이할당됨 a = abcde a b c d e

46 인덱싱 (Indexing) ㆍ문자열의각문자는개별주소 (offset) 를가짐, 이주소를사용해할당된값을가져오는것이인덱싱 a = "abcde print a[0], a[4] print a[-1], a[-5] # a 번수의 0 번째, 4 번째주소에있는값 # a 변수의오른쪽에서 1 번째, 5 번째주소에있는값 ㆍ각문자의오프셋은왼쪽에선 0 부터오른쪽에선 -1 부터시작함 Source: 46

47 슬라이싱 (slicing) ㆍ문자열의주소값을기반으로문자열의부분값을반환 a = "Gachon Unversity" print a[0:6], " AND ", a[-9:] # a 번수의 0 부터 5 까지, -9 부터끝까지 print a[:] print a[-50:50] # a 변수의처음부터끝까지 # 범위를넘어갈경우자동으로최대범위를지정 print a[::2], " AND ", a[::-1] # 2 칸단위로, 역으로슬라이싱 47

48 문자열연산및포함여부검사 ㆍ덧셈과뺄셈연산가능, in 명령으로포함여부체크 a = "Gachon" b = "University a + " " + b # 덧셈으로 a 와 b 변수연결하기 'Gachon University' A * 2 + " " + b * 2 'GachonGachon UniversityUniversity # 곱하기로반복연산가능 if 'U' in a: print a # U 가 a 에포함되었는지확인 else: print b 48

49 다양한문자열표현 문자열선언은큰따옴표 ( ) 나작은따옴표 ( ) 를활용 It s OK 이라는문자열은어떻게표현할까? 1 a = It\ ok. # \ 는문자열구분자가아닌출력문자로처리 2 a = It s ok. # # 큰따옴표로문자열선언후작은따옴표는출력문자로사용 두줄이상은어떻게저장할까? 1 \ n # \ n 은줄바꿈을의미하는특수문자 2 큰따옴표또는작은따옴표세번연속사용예 ) a= It Ok I m Happy. See you. 49

50 특수문자 (escape character) 문자열을표시할때백슬래시 \ 를사용하여키보드로표시하기어려운문자들을표현함 문자설명문자설명 \ [Enter] 다음줄과연속임을표현 \ n 줄바꾸기 \ \ \ 문자자체 \ t TAB 키 \ ` ` 문자 \ e ESC 키 \ " " 문자 \ b 백스페이스 50

51 리스트자료형 (list) 51

52 리스트 (list) ㆍ문자형과같은시퀀스자료형, 여러데이터들의집합리스트명 = [ 요소 1, 요소 2, 요소 3,...] colors = ['red', 'blue', 'green'] print colors[0] ## red print colors[2] ## green print len(colors) ## 3 Source:

53 리스트의연산 ㆍ인덱싱, 슬라이싱, 연산등을동일하게사용 color = ['red', 'blue', 'green'] color2 = ['orange', 'black', 'white'] print color + color2 # 두리스트합치기 len(color) # 리스트길이 color[0] = yellow # 0 번째리스트의값을변경 print color * 2 blue in color2 # color 리스트 2 회반복 # 문자열 blue 가 color2 존재여부반환 total_color = color + color2 for each_color in total_color # total_color 에입력된문자열하나씩순회 print each_color 53

54 리스트요소추가와삭제 color.append("white") # 리스트에 white 추가 color.extend(["black","purple"]) # 리스트에새로운리스트추가 color.insert(0,"orange") # 0 번째주소에 orange 추가 print color ['orange', 'yellow', 'blue', 'green', 'white', 'black', 'purple'] color.remove("white") del color[0] # 리스트에 white 삭제 # 0 번째주소리스트객체삭제 print color ['yellow', 'blue', 'green', 'black', 'purple'] 54

55 리스트의특징 a = [ color, 1, 0.2] # 다양한데이터타입입력가능 color = ['yellow', 'blue', 'green', 'black', 'purple'] a[0] = color # 리스트안에리스트도입력가능 print a [['yellow', 'blue', 'green', 'black', 'purple'], 1, ] 중첩리스트시메모리구조 Source: 55

56 리스트함수들 a = [5,3,4,1,2] a.index(2) a.count(5) a.sort() a.reverse() b = sorted(a) # 정수 2가있는주소값 # 리스트내에 5의개수 # 리스트 a 정렬 # 리스트 a 역정렬 # 정렬된 a를 b 변수에할당 56

57 리스트의메모리저장방식 a = [5, 4, 3, 2, 1] b = [1, 2, 3, 4, 5] b = a print b # [5, 4, 3, 2, 1] a.sort() print b # [1, 2, 3, 4, 5] b = [6,7,8,9,10] print a, b [1, 2, 3, 4, 5] [6, 7, 8, 9, 10] a b a b a b a b = 의의미는같다가아닌메모리주소에해당값을할당 ( 연결 ) 한다는의미 57

58 패킹과언패킹 (packing and unpacking) ㆍ패킹 : 한변수에여러개의데이터를넣는것 ㆍ언패킹 : 한변수의데이터를각각의변수로반환하는것 t = [1, 2, 3] a, b, c = t # 1,2,3 을변수 t 에패킹 # t 에있는값 1, 2, 3 을변수 a, b, c 에언패킹 Print t, a, b, c # [1, 2, 3]

59 이차원리스트 ㆍ리스트안에리스트를만들어행렬 (Matrix) 생성가능 kor_score = [49,79,20,100,80] A B C D E 국어점수 math_score = [43,59,85,30, 90] eng_score = [49,79,48,60,100] 수학점수영어점수 midterm_score = [kor_score, math_score, eng_score] print midterm_score[0][2] 59

60 이차원리스트순환 ㆍ이전페이지코드를활용하여사람별평균을구하라 student_score = [0,0,0,0,0] i = 0 for subject in midterm_score: for score in subject: student_score[i] += score # 각학생마다개별로교과점수를저장 i += 1 # 학생 index 구분 i = 0 # 과목이바뀔때학생인덱스초기화 Else: a, b, c, d, e = student_score # 학생별점수를 unpacking student_average = [a/3,b/3,c/3,d/3,e/3] # print student_average 60

61 성적입력프로그램연습 동적으로학생수와교과목개수를받아서 학생별성적평균과교과목성적평균을 계산하는프로그램을구하라 61

62 데이터구조 (stack, queue, tuple, set, dictionary) 62

63 데이터구조 (Data Structure) ㆍ메모리상에데이터를효율적으로관리하는방법ㆍ검색, 저장등의작업에서효율을고려하여메모리사용량과실행시간등을최소화함ㆍ파이썬에서는리스트, 튜플, 집합 (Set), 사전 (dictionary) 등의기본데이터구조를제공함 63

64 스택 (St ack) ㆍ나중에넣은데이터를먼저반환하도록설계된메모리구조로 Last In First Out (LIFO) 로구현됨ㆍ Data 의입력을 Push, 출력을 Pop 이라고함 push push push pop pop

65 큐 (Queue) ㆍ먼저넣은데이터를먼저반환하도록설계된메모리구조로 First In First Out 으로구현됨ㆍ St ack 과반대되는개념 Source: 65

66 파이썬에서큐 (Queue) 구현 ㆍ파이썬은리스트를사용하여큐구조를활용 ㆍ put 를 append(), get 을 pop(0) 를사용 a = [1,2,3,4,5] a.append(10) a.append(20) a.pop(0) # 1 출력 a.pop(0) # 2 출력 66

67 튜플 (tuple) ㆍ리스트와동일한개념이나값의변경이불가능함ㆍ선언시 [ ] 가아닌 ( ) 를사용ㆍ리스트의연산, 인덱싱, 슬라이싱등을동일하게사용 t = (1,2,3) print t +t, t * 2 # (1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3) len(t) # 3 t[1] = 5 # Error 발생 67

68 집합 (set) ㆍ값을순서없이저장, 중복불허하는자료형ㆍ set 객체선언을이용하여객체생성 s = set([1,2,3]) s.add(1) s.remove(1) s.update([1,4,5,6,7]) s.discard(3) s.clear() # set 함수를사용 1,2,3을집합객체생성 # 1를추가, 중복불허로추가되지않음 # 1 삭제 # [1,4,5,6,7] 추가 # 3 삭제 # 모든원소삭제 68

69 집합연산 ㆍ수학에서활용하는다양한집합연산가능 s1 = set([1,2,3,4,5]) s2 = set([3,4,5,6,7]) s1.union(s2) # s1 과 s2 의합집합 s1 s2 # set([1, 2, 3, 4, 5, 6, 7]) s1.intersection(s2) # s1 과 s2 의교집합 s1 & s2 # set([3, 4, 5]) s1.difference(s2) # s1 과 s2 의차집합 s1 - s2 # set([1, 2]) 69

70 사전 (Dictionary) ㆍ key 와 value 를매핑하여 key 로 value 를검색ㆍ다른언어에서는 HashTable 이라는용어를사용ㆍ {Key1:Value1, Key2:Value2, Key3:Value3...} 형태 student_info = { :'Sungchul', :'Jiyong', :'JaeHong'} student_info[ ] Key Value student_info[ ] = 'Janhyeok' student_info[ ] student_info[ ] = 'wonchul student_info Janhyeok Jiyo n g JaeHong wonchul 70

71 데이터형확인하기 type() 함수는변수의데이터형을확인하는함수 >>> a=int(10.3) # a는정수형으로 10.3을할당 >>> b=float(10.3) # b는실수형으로 10.3을할당 >>> c=str(10.3) # c는문자열로으로 10.3을할당 >>> type(a) # a의타입을출력 <type ' int'> >>> type(b) # b의타입을출력 <type 'float'> >>> type(c) # c의타입을출력 <type ' str'> str() 함수는숫자값을문자값으로변환함 71

72 Python 연산 72

73 수학연산과비교연산 연산자 설명 연산자 설명 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 // 나눗셈의몫 % 모듈로 ( 나눗셈의나머지 ) > 큼 < 작음 >= 크거나같음 <= 작거나같음!= 같지않음 == 같음 ** 지수연산자 +var -var 단항덧셈 단항뺄셈 73

74 비트연산, 쉬프트 ( 이동 ) 연산, 논리 (Bool) 연산 연산자 & ^ 설명 논리곱연산자로서비트가두항에모두나타나는경우비트를결과에복사함 논리합연산자로서비트가두항중어느곳에나타나는경우비트를결과에복사함 배타적논리합연산자로서어느한쪽의항에만비트가존재할경우비트를결과에복사함 ~ 부정연산자로서비트를뒤집어서각비트에대하여정확히반대를반환함 x<<n 왼쪽으로이동 ( 숫자 x 에 2 를 n 번곱한것과동등함 ) x>>n 오른쪽으로이동 ( 숫자 x 를 2 로 n 번나눈것과동등함 ) 조건부 and or not 논리 x가거짓으로 False 반환하고, y를평가하여결과값을반환 x가참으로판명되면 Tru e 반환하고, y를평가하여결과값을반환 not x 평가에있어서, x가거짓이라는것은 x의반대를의미함 74

75 연산자우선순위 가장높은것부터가장낮은것까지의연산자의우선순위 +var, -var, ~var 이름 단항연산자 ** 제곱연산자 *, /, //, % 곱셈, 나눗셈, 몫, 나머지 +, - 덧셈, 뺄셈 <<, >> 왼쪽및오른쪽이동 & ^ 논리곱 배타적논리합 논리합 <, >, <=. >=, <> 비교연산자 ==,!=, is, is not, in, not in 동등및포함 and, or, not 여부판단조건 75

76 Python 제어 76

77 콘솔입출력 77

78 콘솔창입출력 1 raw_input() 함수는콘솔창에서문자열을입력받음프로그램정지효과 raw_input.py print "Enter your name:" somebody = input() # 콘솔창에서입력한값을 somebody에저장 print "Hi", somebody, "How are you today?" 실행 $ python raw_input.py # 코드실행 Enter your name: Sungchul Choi # 콘솔창에서이름입력 Hi Sungchul Choi How are you today? 78

79 콘솔창입출력 2 콤마 (,) 사용할경우 print 문이연결됨 print "Hello World!", print "Hello Again!!! #, 사용 Hello World! Hello Again!!! # 실행시두문장이열결되서출력됨 숫자입력받기 fahrenheit = float(input()) # 입력시바로형변환하기 print Fahrenheit python float_input.py 30 # 실행시 30을입력하면 30.0 # 30.0으로형변환하여출력 79

80 화씨변환기연습 아래와같이출력되는프로그램을만드시오 본프로그램은섭씨를화씨로로변환해주는프로그램입니다변환하고싶은섭씨온도를입력해주세요 : 32.2 # 사용자입력섭씨온도 : 32.2 화씨온도 : 한글입력을위해서다음행을첫줄에삽입 # -* - coding: utf-8 -* 섭씨온도변환공식은 : ((9/5) * 섭씨온도 )

81 화씨변환기답 # -*- coding: utf-8 -*- print " 본프로그램은섭씨를화씨로로변환해주는프로그램입니다 " print " 변환하고싶은섭씨온도를입력해주세요 : " celcius = float(input()) fah = ( (9.0/5.0) * celcius ) + 32 print " 섭씨온도 :", celcius print " 화씨온도 :", fah 81

82 제어 if, elif, else 조건식의참 / 거짓판단 단축평가 while 문 for 문 break, continue, else 리스트내장 제어문과관련된유용한내장함수 82

83 If 조건문 if < 조건식 > : < 구문 > >>> value=10 >>> if value > 5 : print( value is bigger then 5 ) 조건식을평가하고참인경우만구문이수행 2개이상의구문은들여쓰기로블록을지정 함수와동일 들여쓰기의정도는파일전체를통틀어일치해야함 83

84 If ~ elif ~ else 조건문 if < 조건식 1> : < 구문 1> elif < 조건식 2> : < 구문 2> else: < 구문 3> elif else 2 개이상의조건을처리하는경우 if 는가장처음에만사용할수있는반면에, elif 는필요한만큼사용가능 어떠한조건에도해당하지않는경우 가장마지막에만사용가능 84

85 If ~ elif ~ else 조건문예제 파이썬의조건식표현방법 70 <= score < 80 grade >= 70 and grade < 80 85

86 조건식의참거짓판단 기본적으로자료형의 bool 값과동일 (2 장참조 ) Tru e 로판명 : 10 > 0 Fa lse 로판명 : 5 > 10 Fa lse Tru e 0, 0.0, (), [], {} ( 빈문자열 ), None 인경우 Fa lse 인경우를제외한값이할당된경우 86

87 and / or 2 개이상의논리식판별을위한연산자 식의왼쪽에서오른쪽으로판별 and, & or, score > 70 and score <= 80 score > 70 & score <= 80 math > 80 or e n g lish > 80 math > 80 e n g lish > 80 하지만모든경우에 and 와 &, o r 와 가동일하게수행되는것은아님!! 87

88 단축평가 단축평가란? 조건식전체를판단하지않고순차적으로진행하다식전체가자명한경우, 더이상수식을평가하지않는방법 and 와 o r 는단축평가로수행되도록보장 x and y: x 가 Fa lse 인경우, y 값은평가하지않음 x o r y: x 가 Tru e 인경우, y 값은평가하지않음 88

89 단축평가 a 가 0 인경우조건식 a & 10/a 는거짓 10 / a 에의하여 ZeroDivisionError 가발생 89

90 단축평가의장점 조건식의결과가결정되는시점이후로추가적인판별연산을수행하지않기때문에속도향상 Run time error 발생을 try ~ except 구문이아닌논리식으로사전에차단가능 90

91 while 반복문 while < 조건식 > : < 구문 > 조건식이참 (True) 인동안내부구문을반복수행 조건식은구문이수행되기이전에우선평가 구문을모두수행이후다시조건식을재평가 조건식이거짓 (False) 이면 w h ile 문구조를벗어남 91

92 for 반복문 for < 아이템 I> in < 시퀀스형객체 S> : < 구문 > 시퀀스형객체를순차적으로순회 시퀀스형객체 S 의각아이템을 아이템 I 에할당 할당된아이템 I를가지고구문을수행 모든아이템을순회하거나 break을만나면 for문이종료 92

93 for 반복문예제 반복문은 2 개이상중첩해서사용가능 93

94 for 반복문대상자료 for 문에서사용할수있는자료 문자열, 리스트, 튜플, 사전 이터레이터 (iterator), 제너레이터객체 (3 장참조 ) 94

95 break 중지문 break 을만나면반복문내부블록을벗어남 95

96 continue 문 continue 이후반복문내부블록을수행하지않고, 다음아이템을선택하여내부블록의시작지점으로이동 96

97 Else 문 반복문수행도중 break 로인하여중간에종료되지않고끝가지수행되었을때, else 블록이수행 else 블록이수행되는경우 else 블록이수행되지않는경우 97

98 Pass 구문 아무일도하지않습니다. 아무것도하지않는함수, 모듈, 클래스를만들어야할경우가있는데. 이때 pass 가사용될수있다. 코드설계시제어문, 함수, 클래스를미리만들어놓을경우사용 >>>def sampl e(): pass >>>sampl e() >>>cl ass pr e_cl ass(): pass >>> 98

99 리스트내장반복문 [< 표현식 > for < 아이템 > in < 시퀀스객체 > (if < 조건식 >)] 기존시퀀스객체를이용하여추가적인연산을통하여새로운리스트객체를생성 99

100 리스트내장반복문 [< 표현식 > for < 아이템 > in < 시퀀스객체 > (if < 조건식 >)] 조건식을이용하여원본객체에서조건을만족하는아이템만선별 원본리스트가 2 개인경우 100

101 제어에유용한함수 filter(<function> None, 시퀀스객체 ) 함수의결과값이참인시퀀스객체의이터레이터를반환 None 이오는경우필터링하지않음 101

102 제어에유용한함수 range([' 시작값 '], ' 종료값 '[, ' 증가값 ']) 수열을순회하는이터레이터객체를반환 시작값과증가값은생략가능하며, 이때는각 0, 1 이할당 102

103 제어에유용한함수 map(<function>, 시퀀스객체, ) 시퀀스객체를순회하며 function 의연산을수행 함수의인자수만큼시퀀스객체를전달 103

104 Python 함수 104

105 형변환함수 함수 chr(value) complex(real [,imag]) dict(sequence) eval(string) float(value) frozenset(set) hex(value) int(value [, base]) list(sequence) long(value [, base]) oct(value) ord(value) repr(value) set(sequence) str(value) tuple(sequence) unichr(value) 설명 정수를문자로변환 복소수를만듦 주어진 ( 키, 값 ) 튜플의순서로부터사전을만듦 문자열을평가하여수학적계산에유용한개체를반환. 주의 : 이함수는올바로사용하지않을경우보안위험을초래할수있으므로매우조심하여야함 숫자를부동소수점수로변환 집합을동결집합으로변환 정수로부터 16 진수를나타내는문자열로변환 정수로변환하며 base 문자열이주어진경우에는사용함 주어진순서를목록으로변환 long( 긴정수 ) 형으로변환하며 base 문자열이주어진경우에는사용함 정수로부터 8 진수를나타내는문자열로변환 문자를가리키는정수값으로변환 개체를표현문자열로변환. 표현식을역따옴표로둘러싼것과같음 (`x + y`). 개체에대하여출력가능하며평가가능한문자열을반환 sequence 를집합으로변환 개체를문자열로변환. value 에대하여출력가능한문자열을반환하나, 평가할수는없음 주어진 sequence 를튜플로변환 정수를유니코드문자로변환 105

106 내장수학함수 기능 abs(var) pow(x, y) pow(x,y,modulo) round(var[, n]) divmod(x, y) 설명 절대값 ** 연산자대신에사용가능 삼항지수 - 나머지 (x ** y) % modulo 10-n 또는 (10**-n) 의반올림한근사치를반환. n 의기본값은 0 나눗셈의몫과나머지로이루어진튜플을반환 106

107 문자열함수 (1/2) 함수명 len(a) a.upper() a.lower() a.cap italize() a.titile() a.count('abc') a.fin d ('abc') a.rfind('abc') a.startswith('ab'c) a.endswith('abc') 기능 문자열의문자개수를반환 대문자로변환 소문자로변환 첫문자를대문자로변환 제목형태로변환띄워쓰기후첫글자만대문자 문자열 a 에 'abc' 가들어간횟수반환 문자열 a 에 'abc' 가들어간위치 ( 오프셋 ) 반환 문자열 a 는 'abc' 로시작하는문자열여부반환 문자열 a 는 'abc' 로끝나는문자열여부반환 107

108 문자열함수 (2/2) 함수명 a.strip() a.rstrip() a.lstrip () a.sp lit() a.sp lit('abc') a.isd ig it() a.islo w er() a.isupper() 기능좌우공백을없앰오른쪽공백을없앰왼쪽공백을없앰공백을기준으로나눠리스트로반환 abc를기준으로나눠리스트로반환문자열이숫자인지여부반환문자열이소문자인지여부반환문자열이대문자인지여부반환 108

109 함수 (Function) 함수의정의 return 인수전달 스코핑룰 함수인수 Lambda 함수 재귀적함수호출 Pass doc 속성과 help 함수 이터레이터 제네레이터 109

110 함수정의 함수는여러개의문장 (statement) 을하나로묶어줌 이미정의되어있는함수를사용하거나필요한함수를정의함 한번혹은여러번호출될수있으며함수종료시결과값을전달. 프로그램을구조적, 논리적으로만들어준다. 함수의선언은 def 로시작하고콜론 (:) 으로끝낸다. 함수의시작과끝은코드의들여쓰기로구분 시작과끝을명시해줄필요가없다. 헤더 (header) 파일, 인터페이스 (interface)/ 구현 (implementation) 같은부분으로나누지않음 110

111 함수선언방법 함수선언문법 간단한함수선언해보기 입력받은 2 개의인수를서로곱한값을리턴한다. def Ti mes( a, b) : r et ur n a* b >>> Ti mes( 10, 10)

112 함수선언시일어나는일 메모리에함수객체가생성된다. 함수객체를가리키는레퍼런스가생성된다. 함수레퍼런스를통해서함수를사용하게된다. 함수레퍼런스는다른변수에할당할수있다. 112

113 return 반환문 함수를종료시키고호출한곳으로돌아가게한다. return 은어떠한객체로돌려줄수있다. 여러개의값을튜플로묶어서값을전달할수있음 return 을사용하지않거나 return 만적을때도함수가종료 리턴값으로 None 을리턴 113

114 파이썬함수에서인수전달 1 파이썬에서함수인수는레퍼런스를이용해전달 함수의인수는호출자내부객체의레퍼런스 >>> a = 10 >>> def i szer o(arg1): r et ur n ar g1 == 0 >>> i szer o( a) Fal se a Function : iszero Class int :

115 파이썬함수에서인수전달 2 호출자가전달하는변수의타입에따라다르게처리 변경가능변수 (mutable) 불가능변수 (im m u tab le) 변경불가능변수예제 115

116 파이썬함수에서인수전달 3 변경가능한변수를인수로전달. 116

117 범위규칙 (Scoping Rule) 이름공간 (Name Space) 변수의이름이저장되어있는장소 함수내부의이름공간, 지역영역 (Local scope) 함수밖의영역, 전역영역 (Global scope) 파이썬자체에서정의한내용에대한영역, 내장영역 (Bu ilt-in Scope) LG B 규칙 변수이름을찾을때 Local Scope -> Global Scope -> Bu ilt-in Scope 순서로찾는다. 지역영역에서전역영역의이름을접근할때 global 을이용 117

118 파이썬함수에서인수모드 1 기본인수값 함수를호출할때인수를지정해주지않아도기본값이할당되도록하는방법. 키워드인수 인수이름으로값을전달하는방식 변수의이름으로특정인수를전달할수있다. 118

119 파이썬함수에서인수모드 2 가변인수리스트 인수의개수가정해지지않은가변인수를전달 * 를사용하며인수는튜플형식으로전달됨. 정의되지않은인수처리하기. ** 를사용하면정의되지않은인수를사전형식으로전달 119

120 람다 (Lambda) 함수 이름이없는 1 줄짜리함수 한줄의간단한함수가필요한경우 프로그램의가독성을위해서 함수를인수로넘겨줄때 120

121 재귀적 (Recursive) 함수호출 함수내부에서자기자신을계속호출하는방법 변수를조금씩변경하면서연속적으로반복된연산을할때유용함. 121

122 doc 속성과 help 함수 help 함수를이용해함수의설명을볼수있다. >>> hel p( pr i nt ) 사용자가만든함수도 help 를사용해설명을볼수있다. 조금더자세한설명을추가하려면 doc 속성을이용한다. 122

123 반복자 (Iterator) 훑개, 순회변수 순회가능한객체의요소를순서대로접근할수있는객체 내부반복문을관리해주는객체 이터레이터안의 next () 를이용해순회가능한객체의요소를하나씩접근할수있다. 123

124 생성기 (Generator) return 대신 yield 라는구문을이용해함수객체를유지한체값을호출자에넘겨줌 값을넘겨준후함수객체는그대로유지 함수의상태를그대로유지하고다시호출할수있기때문에순회가능한객체를만들때매우편리함. 124

125 Generator 예제 >>> def abc(): data = "abc" for char in data: yield char >>> abc <function abc at 0x0205EB70> >>> abc() <generator object abc at 0x02061A30> >>> it = iter(abc()) >>> next(it) 'a' >>> next(it) 'b' >>> next(it) 'c' 125

126 클래스 클래스란? 클래스기본 이름공간 클래스와인스턴스관계 생성자와소멸자 메서드확장 연산자중복 상속 126

127 클래스란? 데이터와데이터를변형하는함수를같은공간으로작성 메서드 (Method) 인스턴스 (Instance) 정보은닉 (Information Hiding) 추상화 (Abstraction) 부모클래스 자식클래스 127

128 클래스기본 클래스와인스턴스 클래스와인스턴스이름공간 128

129 이름공간 (name space) 검색순서 인스턴스객체영역 -> 클래스객체영역 -> 전역영역 예제코드 129

130 이름공간계속 클래스와인스턴스에멤버데이터추가 예제코드 130

131 클래스와인스턴스의관계 isinstance( 인스턴스객체, 클래스객체 ) 인스턴스객체가어떤클래스로부터생성되었는지확인 불린형태로결과반환 예제코드 131

132 생성자와소멸자 생성자 생성시초기화작업을수행 인스턴스객체가생성될때자동으로호출 in it () 소멸자 소멸시종료작업을수행 인스턴스객체의참조카운터가 '0' 이될때호출 del () 예제코드 132

133 메서드확장 정적 (sta tic) 메서드 인스턴스객체를통하지않고, 클래스를통해직접호출할수있는메소드 형식 인스턴스객체를참조하는 self 인자가필요하지않음 < 호출할메소드이름 > = staticmethod( 클래스내정의한메소드이름 ) 클래스 (class) 메서드 클래스영역의데이터에직접접근할수있는메소드 형식 암시적으로첫인자로클래스객체가전달 < 호출할메소드이름 > = classmethod( 클래스내정의한메소드이름 ) 133

134 연산자중복 연산자중복이란 사용자정의객체에서필요한연산자를내장타입과형태와동작이유사하도록재정의 연산자중복을위하여두개의밑줄문자가앞뒤로있는메소드를미리정의함 예제코드 134

135 연산자중복계속 수치연산자 그외다른메소드는교제 102 ~ 108 페이지참조 135

136 상속 상속이란 부모클래스의모든속성 ( 데이터, 메소드 ) 를자식클래스로물려줌 클래스의공통된속성을부모클래스에정의 하위클래스에서는특화된메소드와데이터를정의 장점 각클래스마다동일한코드가작성되는것을방지 부모클래스에공통된속성을두어코드의유지보수가용이 각개별클래스에특화된기능을공통된인터페이스로접근가능 136

137 상속 예제코드 클래스간의관계확인 상속관계인두클래스간의관계를확인 issubclass( 자식클래스, 부모클래스 ) 그외다른메소드는교제 102 ~ 108 페이지참조 137

138 상속 다중상속 2 개이상의클래스를상속받는경우 두클래스의모든속성 ( 변수와메소드 ) 을전달받음 예제코드 그외다른메소드는교제 102 ~ 108 페이지참조 138

139 상속 클래스상속과이름공간인스턴스객체영역 -> 클래스객체간상속을통한영역 ( 자식클래스영역 -> 부모클래스영역 ) -> 전역영역 예제코드 그외다른메소드는교제 102 ~ 108 페이지참조 139

140 모듈 모듈사용하기 모듈만들기 모듈의경로 모듈임포트 모듈임포트파헤치기 유용한팁 패키지 140

141 모듈사용하기 여러코드를한데묶어다른곳에서재사용할수있는코드모음 현재파이썬 3.0 버전에서는대략 200 개가넘는모듈을지원 문자열 (string), 날짜 (date), 시간 (time), 십진법 (d ecim al), 랜덤 (random) 파일 (file), os, sq lite3, sys, xm l, em ail, h ttp 등등 간단하게모듈을사용할수있음 모듈을사용하는이유 코드의재사용성 코드를이름공간으로구분하고관리할수있음. 복잡하고어려운기능을포함하는프로그램을간단하게만들수있다. 141

142 모듈 import import : 모듈을현재이름공간으로가져오는역할 >>> i mpor t mat h >>> mat h. pow( 2, 10) >>> mat h. pi math 모듈은삼각함수, 제곱근, 로그함수등수학과관련된기능이들어있는내장모듈. dir() 함수를이용해모듈에어떠한함수혹은데이터가들어있는지알수있다. >>>i mpor t mat h >>> di r ( mat h) [ ' doc ', ' l oader ', ' name ', ' package ', ' spec ', ' acos', 'acosh', ' asi n', 'asi nh', 'at an', ' at an2', ' at anh', 'ceil', 'copysi gn', 'cos', 'cosh', ' degr ees', ' e', ' er f ', ' er f c', 'exp', ' expm1', ' f abs', 'factorial', 'floor', ' f mod', 'f r exp', 'f sum', ' gamma', ' hypot ', 'isfinite', 'isinf', 'i snan', 'l dexp', ' l gamma', ' l og', ' l og10', ' l og1p', ' l og2', ' modf ', 'pi', 'pow', 'radians', 'sin', ' si nh', 'sqr t ', 'tan', 't anh', 't r unc' ] >>> 142

143 간단한 FTP 프로그램 FTP 로서버에접근해파일리스트를가져오는프로그램. >>> f r om ftplib i mpor t FTP >>> ftp = FTP('ftp.cwi.nl') >>> f t p. l ogi n() ' 230 Logi n successf ul. ' >>> ftp.retrlines( ' LI ST' ) dr wxr wsr - x 2 f t p ftp 512 Jan DI ENST dr wxr - xr - x 2 f t p ftp 512 Nov i ncomi ng - rw- r --r -- 1 f t p ftp 1810 Jul i ncomi ng. r eadme l r wxr wxr wx 1 f t p ftp 1 Nov peopl e - >. dr - xr - xr - x 75 f t p ftp 1536 Feb 04 07: 16 pub dr wxr wsr - x 10 f t p ftp 512 Nov si gchi - r --r --r -- 1 f t p ftp 2195 May wel come. msg ' 226 Di r ect or y send OK. ' >>>ftp.quit() ' 221 Goodbye. ' 143

144 모듈만들기 사용자가직접모듈을만들수있다. 큰프로젝트의경우모듈단위로일을진행하기도함. 모듈은일반적으로 < 모듈이름 >.py 으로지정합니다. 144

145 Simpleset 모듈만들기 텍스트에디터를이용해교집합, 차집합, 합집합함수를만듭시다. sim pleset.py 이름으로저장하고 sim pleset.py 를파이썬라이브러리디렉터리에옮깁니다. import 명령을이용해 sim pleset 모듈을가지고옵니다. >>> im port sim p leset 합집합구하기 >>> seta = [1, 3, 7, 10] >>> setb = [2, 3, 4, 9] >>> simpleset.union(seta, setb) [1, 3, 7, 10, 2, 4, 9] 145

146 모듈의경로 모듈을임포트했을때모듈의위치를검색하는경로 sys.path 에저장되어있는디렉토리를검색한다. 모듈의경로밖의모듈은임포트할수없음 모듈경로탐색순서. 프로그램이실행된디렉터리 PYTHONPATH 환경변수에등록된위치 표준라이브러리디렉터리 146

147 모듈 import 모듈안의어트리뷰트 ( 함수, 데이터 ) 들을사용하려면임포트를해야한다. Import 구문은어디에서나사용가능하다. 함수, 제어문내부에서도 import 를할수있다. Import < 모듈이름 > 기본적인임포트방법 모듈. 이름형식으로모듈안의데이터나함수를사용할수있다. 모듈은임포트하는방법은 import 모듈이름방법이외에도다른방법이있다. 147

148 모듈 import 방법 from < 모듈 > import < 어트리뷰트 > >>> from sim p leset import union >>> union([1, 2, 3], [3], [3, 4]) [1, 2, 3, 4] from < 모듈 > import * import < 모듈 > as < 별칭 > < 모듈 > 이름을 < 별칭 > 으로변경하여임포트합니다. 148

149 모듈 import 파헤치기 임포트를할때, 해당모듈의바이트코드가있으면이를임포트한다. 모듈을임포트하면해당모듈의코드가실행된다. 모듈이임포트되면메모리에모듈코드가로딩되면프로그램이나파이썬인터프리터가끝나기전까지변경되지않는다. 149

150 바이트코드 일종의중간파일 모듈의임포트를빠르게해주는역할 바이트코드가이미있으면 : 모듈을인터프리팅 (Interpreting) 하지않고바로바이트코드로딩 바이트코드가없으면 : 모듈을인터프리팅해서바이크코드를생성 바이트코드가생성된모습 150

151 모듈이메모리에로딩될때 모듈의코드가실행됨 처음임포트할때 print 구문이실행된다. 한번메모리에로딩된모듈은끝나기전까지변하지않는다. 151

152 유용한팁 모듈이직접실행혹은다른곳에서임포트되었는지를구분해줄수있는 name 어트리뷰트 모듈이임포트되었을때 name 은모듈자기자신의이름 모듈이직접실행되었을때 name 은 main 152

153 패키지 모듈의모음 파이썬의모듈이름공간을구조화하는한방법 파이썬내장라이브러리중 XML 패키지의디렉터리구조 153

154 예외처리 예외 (Exception) 란? 구문에러 예외의몇가지종류 내장예외클래스계층구조 주요내장예외 예외처리 raise 구문 사용자정의예외 assert 구문 154

155 예외 (Exception) 란? 프로그램의제어흐름을조정하기위해사용하는이벤트 처리를하지않는예외에대하여자동으로에러 (Error) 가발생하고프로그램을종료 처리되지않은예외 (Unhandled Exception) 0 으로나누는경우 원격에있는데이터베이스접속시연결되지않는경우 파일을열었는데사용자에의해서삭제된경우 155

156 구문에러 오타, 들여쓰기의실수로발생 인터프리터에서에러가의심되는부분을개발자에게알려줌 156

157 예외의종류 1 NameError 선언하지않은변수 'a' 에접근 ZeroDivisionError '0' 으로나눔 157

158 예외의종류 2 IndexError 리스트의접근가능한인덱스를넘음 TypeError 지원하지않는연산 ( 정수를문자열로나눔 ) 158

159 내장예외클래스계층구조 내장예외는 exceptions 모듈에미리정의 프로그램동작중자동적으로발생 개발자가명시적으로예외발생도가능 159

160 주요내장에러 클래스이름 Exception ArithmeticError LookupError EnvironmentError 내용 모든내장예외의기본클래스 - 사용자정의예외를작성시활용 수치연산예외의기본클래스 시퀀스관련예외의기본클래스 파이썬외부에러의기본클래스 참고자료 빠르게활용하는파이썬 3, 148~149 페이지 파이썬공식문서, Bu ilt-in Exceptions 부분 160

161 예외처리 - 1 try 구문 try: < 예외발생가능성이있는문장 > except < 예외종류 > : < 예외처리문장 > except ( 예외 1, 예외 2): < 예외처리문장 > except 예외 as 인자 : < 예외처리문장 > else: < 예외가발생하지않은경우, 수행할문장 > finally: < 예외발생유무에상관없이 try 블록이후수행할문장 > 161

162 예외처리 - 2 try ~ except 예제 수행결과 162

163 예외처리 - 3 예제 (p151) 수행결과 163

164 예외처리 - 4 예제 (p153) 수행결과 164

165 예외처리 - 5 예제 (p154) 수행결과 165

166 예외처리 - 6 예제 (p154) 수행결과 166

167 예외처리 - 7 예제 (p155) 167

168 예외처리 - 8 try ~ finally try: < 예외발생가능성이있는문장 > finally: < 예외와관계없이, 항상수행되어야할문장 > 위와같은구조인경우, fin ally 는생략불가 예제

169 raise 구문 명시적으로예외발생 raise 구문형식 raise [Exception] raise [Exception(data)] raise 예제

170 사용자정의예외 - 1 내장예외만으로부족한경우, 개발자가직접예외를정의하여사용가능 Exception 클래스나그하위클래스를상속받아서구현 생성자에클래스멤버변수를이용하여인자를에러처리부로전달 예제

171 사용자정의예외 - 2 예제 수행결과 171

172 assert 구문 - 1 표현식 Assert < 조건식 >, < 관련데이터 > 인자로받은조건식이거짓인경우, AssertionError 가발생 개발과정에서디버깅, 제약사항설정등으로사용 debug 가 Tru e 인경우만 assert 구문활성화 명령프롬프트에서최적화옵션 (-O) 을설정하면 debug 는 Fa lse 로설정됨 다음코드와동일 if debug : if not < 조건식 >: raise AssertionError(< 관련데이터 >) 172

173 assert 구문 - 2 예제 수행결과 173

174 입출력 174

175 출력 화면으로출력할때는 print() 함수를사용합니다. 파이썬버전 2.x 때는 print 가함수가아니었지만, 3.0 에서는함수로바뀌었습니다. 즉, 다음과같이함수처럼괄호안에출력할인자를적으면됩니다. >>> print(1) 1 >>> print('hi, guyz') hi, guyz Print 함수의입력인자로다음과같이구분자 (sep), 끝라인 (end), 출력 (file) 을지정해줄수있습니다. 아래예제와같이 file 을이용해서출력을표준오류 (standard error) 로변경하거나파일로바꿀수도있습니다. >>> print("welcome to","python", sep="~", end="!", file=sys.stderr) welcome to~python! 175

176 포맷팅 (Formatting) Print 만가지고는출력이좀불편하다고느끼실것입니다. 그러나 format() 메소드을사용하면문자열을그이상으로자유롭게다룰수가있습니다. 문자열내에서어떤값이들어가길원하는곳은 {} 로표시를합니다. {} 안의값들은숫자로표현할수있으며, format 인자들의인덱스를사용합니다. 아래예제를보면, {0 } 는첫번째인자인 "apple" 을나타내고 {1 } 은두번째인자인 "red" 를나타냅니다. >>> print("{0} is {1}".format("apple", "red")) apple is red 176

177 포맷팅 (Formatting) { } 안의값을지정할때는다음과같이 format 의인자로키 (key) 와값 (value) 을주어위와동일한결과를얻을수있습니다. >>> print("{item} is {color}".format(item="apple", color="red")) apple is red 이번에는 dictionary 를입력으로받는경우를살펴보도록하겠습니다. >>> d ic = {"item":"apple", "color":"red"} >>> print("{0[item]} is {0[color]}".format(dic)) apple is red 177

178 포맷팅 (Formatting) 앞에서 {0 [it e m ]} 의 0[ ] 을달고다니느라매우불편하셨을텐데요, ** 기호를사용하면 dictionary 를입력으로받은것으로판단하고인자를하나만받게됩니다. 그러므로아래와같이불필요한 index 는생략할수있습니다. >>> print("{item} is {color}".format(**dic)) apple is red 178

179 포맷팅 (Formatting)! 기호를사용해서문자열변환을사용할수있습니다. >>> print("{item!s} is {color!s}".format(**dic)) apple is red >>> print("{item!r} is {color!r}".format(**dic)) 'apple' is 'red' >>> print("{item!a} is {color!a}".format(**dic)) 'apple' is 'red'!s,!r,!a 는각각 str(), repr(), ascii() 를실행한결과와동일하다고보시면됩니다. 179

180 포맷팅 (Formatting) 이번에는 : 기호를이용하여보다정교하게정렬, 폭, 부호, 공백처리, 소수점, 타입등을지정할수있는법을알아보겠습니다. >>> print("{0:$>5}".format(10)) $$$10 {0 " 까지는첫번째인자인 10 을표시하라는뜻인것을알수있습니다. 그런데 ":" 이후의기호들은모두처음보는것들이네요. 눈치가빠르신분들은이미파악하셨겠지만, "$" 는공백을채우는문자를 "$" 로채우라는의미이며, ">" 는오른쪽정렬을, "5" 는전체자리수가 5 자리라는것을나타냅니다. 180

181 포맷팅 (Formatting) 정렬에사용되는기호는 ">", "<", "^ ", "=" 이있습니다. ">" 는오른쪽기준, "<" 는왼쪽기준, "^ " 는가운데기준을나타냅니다. "=" 는부호와상관이있는데, "=" 가사용되면공백문자들앞에부호가표시됩니다. 사용되지않으면공백문자들뒤, 즉, 숫자바로앞에부호가표시됩니다. 부호를나타내는기호는 "+", "-", " " 이있습니다. "+" 는플러스부호를나타내라는뜻이며, "-" 는마이너스값만마이너스부호를나타내라는것을의미하며, " " 는마이너스값에는마이너스부호를나타내고플러스일때는공백을표시하라는뜻입니다. 181

182 포맷팅 (Formatting) 진수를바꿔서출력할수도있습니다. "b" 는이진수를, "d" 는십진수를, "x" 는 16 진수를, "o" 는 8 진수를나타내며 "c" 는문자열을출력합니다. >>> print("{0:b}".format(10)) 1010 >>> print("{0:o}".format(10)) 12 >>> print("{0:c}".format(65)) 또한 "#" 를사용하면 #x 는 16 진수 #o 는 8 진수, #b 는 2 진수로표시됩니다. >>> print("{0:#x}, {0:#o}, {0:#b}".format(10)) 0xa, 0o12, 0b

183 포맷팅 (Formatting) 정수이외에실수에대한변환도제공되며, "e" 는지수표현을, "f" 는일반적인실수표현을, "% " 는퍼센트표현을의미합니다. >>> print("{0:e}".format(4 / 3)) e+00 >>> print("{0:f}".format(4 / 3)) >>> print("{0:% }".format(4 / 3)) % 실수에서는다음과같이소수점몇번째자리까지표현할것인지를지정할수있습니다. 아래예제에서는소수점 3 번째자리까지만출력되는것을확인할수있습니다. >>> print("{0:.3f}".format(4 / 3))

184 입력 사용자로부터입력은다음과같이 input() 함수를이용해서받을수있습니다. input 의입력인자로는화면에출력할프롬프트 (prompt) 를줄수있으며, 생략가능하며, 결과값으로는문자열객체를반환합니다. >>> a = input('insert any keys :') insert any keys : test >>> print(a) test 184

185 파일입출력 파일로의입출력은앞에서본바와같이 print() 함수의 file 입력인자를이용할수도있지만, 파일입출력제어를보다세밀하게하기위해서는 open() 함수를통해서파일을연후파일전용함수들을이용해서작업하는것이일반적입니다. >>> f = open('test.txt', 'w') Open 함수의마지막인자는파일을열때의속성을의미하며, 다음속성들의조합으로사용이가능합니다. r : 읽기모드 ( 디폴트 ) w : 쓰기모드 a : 쓰기 + 이어쓰기모드 + : 읽기 + 쓰기모드 b : 바이너리모드 t : 텍스트모드 ( 디폴트 ) 185

186 파일입출력 파일로부터읽고쓰기위해서파일로부터모든데이터를읽는 read() 함수와문자열을쓰는 write() 함수가제공됩니다. 또한파일을열고할일을모두완료했을경우파일객체를닫아주는 close() 함수가있습니다. >>> f = open('test.txt', 'w') >>> f.write('plow deep\ nwhile sluggards sleep') 31 >>> f.clo se() 186

187 파일입출력 이번에는이파일이제대로쓰였는지읽어보도록하겠습니다. >>> f = open('test.txt') >>> f.read() 'plow deep\ nw hile sluggards sleep' >>> f.clo se() >>> f.clo sed Tru e 텍스트모드에서는일반문자열과같이 encoding 이적용되기때문에, 바이너리데이터 (binary data) 를다룰때에는오류가발생하게됩니다. 그러므로바이너리데이터를다룰때에는반드시바이너리모드를사용해야합니다. 187

188 파일입출력 파일입출력관련함수들 read lin e() 함수는호출할때마다한줄씩읽은문자열을반환하며, readlines() 함수는파일의모든내용을줄단위로잘라서리스트를반환합니다. tell() 함수는현재파일에서어디까지읽고썼는지위치를반환하며, seek() 함수는사용자가원하는위치로포인터를이동합니다. With ~ as 구문 >>> with open('test.txt') as f: [TAB]print( f.readlines() ) [TAB]print( f.clo sed ) ['plow deep\ n', 'while sluggards sleep'] Fa lse >>> f.clo sed Tru e 188

189 Pickle 그런데문자열의경우에는배운방법을사용하여쉽게다룰수있지만, 리스트나클래스등을저장할때는어떻게해야할까요? 내용을모두분해해서파일에저장한후, 다시읽어들일때는구분해서다시값을설정해야할까요? 파이썬에는이러한일들을쉽게할수있도록도와주는 pickle 이라는모듈이있습니다. 189

190 Pickle 다음과같이리스트가있다고가정합니다. >>> colors = ['red', 'green', 'black'] 아래와같이 pickle 모듈의 dump 함수를사용하면, colors 를다음과같이쉽게파일에저장할수있습니다. >>> im p o rt p ickle >>> f = open('colors', 'wb') >>> pickle.dump(colors, f) >>> f.clo se() 190

191 Pickle 이번에는파일로부터다시읽어보겠습니다. 우선 colors 를삭제한후, load 함수를이용해서리스트를읽어들입니다. >>> del colors >>> f = open('colors', 'rb') >>> colors = p ickle.lo ad (f) >>> f.clo se() >>> colors ['red', 'green', 'black'] pickle 로파일에쓰거나읽을때는반드시바이너리모드로파일을열어야합니다. 191

192 Pickle pickle 로저장할수있는대상은파이썬객체라면거의모두가능합니다. 기본자료형은물론이고아래예제와같이사용자가정의한클래스객체도 pickle 이가능합니다. >>> class test: [TAB]var = None >>> a = test() >>> a.var = ' Te st ' >>> f = open(' test', ' wb') >>> pickle.dump(a, f) >>> f.clo se() >>> f = open(' test', ' rb') >>> b = p ickle.lo ad (f) >>> f.clo se() >>> b.var 'Test' 192

193 C/C++ 연동 간단한확장모듈예제 모듈초기화 모듈빌드 파이썬 / C API 에러처리 확장타입 ctypes 193

194 확장모듈이필요한이유 새로운내장객체타입을구현 - 확장모듈을이용하여파이썬에서 C/C++ 라이브러리함수혹은시스템콜가능. 파이썬의연산처리속도증가 - 느린연산처리속도를 Up - 잘하는것 ( 문자열처리, 자료형, 인터페이스 ) 은파이썬, 연산처리는 C/C++ 코드 코드은익 - 파이썬코드를 C/C++ 모듈이나 C 확장형으로구현시, 작성한파이썬코드 (*.py) 들의핵심적인부분을공개하지않고배포가능 - 파이썬은인터프리터언어처럼동작, 코드가직접적으로나타남 194

195 간단한확장모듈예제 헤더파일 python.h spam 이라는확장모듈을만들면서파이썬과 C 의연동을알아보겠습니다. 입력받은문자열을구하는함수를포함 파이썬에서 spam 모듈이아래와같이사용될것임 195

196 확장모듈 spam 만들기 Spammodule.c 파일생성하기 전통적으로 모듈이름 + module.c 와같은형식으로파일이름지정 첫줄에 python.h 를포함시킨다. 헤더파일을포함할때 python.h 를제일먼저포함해야함. 196

197 strlen 함수만들기 파이썬에서 spam.strlen 을호출했을때실행되는 C 코드만들기 PyObject, PyArg_ParseTuple, Py_BuildValue 197

198 모듈초기화 모듈을임포트할때파이썬내부에서다음과같은작업이이루어진다. 1단계 : 모듈을찾는다. 2단계 : 모듈을초기화한다. 3단계 : 지역이름공간 (Local Namespace) 에이름을정의한다. 확장모듈을만들면 2,3 단계를직접해줘야한다. 198

199 Py_InitModule() 함수 모듈을초기화하려면 Py_InitModule() 혹은 PyModule_Create() 함수를사용 199

200 확장모듈빌드 작성한코드들을 spammodule.c 파일에저장. Distu tils 를이용해서빌드 위의명령은리눅스에서는 gcc 를호출하며, 윈도에서는 visu al C++ 컴파일러가구동되면서빌드후파이썬디렉토리의 Lib /site-packages 디렉토리에 m ylib.so 또는 m ylib.p yd 파일이생성된다. 200

201 확장모듈 spam 테스트 생성된 spam.pyd 를모듈검색이가능한경로에복사 확장모듈테스트 201

202 파이썬 C/ API 파이썬에서 C 연동을위한함수들을 C/API 라고부른다. PyArg_ParseTuple() 함수 Py_Bu ild Valu e() 함수 202

203 PyArg_ParseTuple( ) 함수 파이썬에서 C 로전달되는인수를 C 함수에맞게변경 함수원형 (Prototype) 여러가지포맷기호 203

204 Py_BuildValue( ) 함수 Py_BuildValue 는 C 의자료형을파이썬의자료형으로변환 함수원형 (Prototype) 사용예제 204

205 예외처리 파이썬내부에서발생한에러는파이썬에서처리해준다. C 확장모듈에서발생한에러는특별한작업을해줘야한다. 에러가발생했을때에러의상황을파이썬에직접알려줘야한다. 파이썬 C/API 함수들은특별히에외처리를하지않아도된다. 205

206 에러가발생했을때 에러가발생했을때 무슨에러가발생했는지정하고 NULL 을리턴한다. PyErr_SetString() 함수 에러를설정하는가장대표적인함수. 함수원형 type 은에러의종류를입력 분수의제수가 0 일때 PyExc_ZeroDivisionError message 는에러에대한설명 206

207 확장타입 C 를이용해만든파이썬타입 파이썬이제공하는패턴을이용해타입을만들면비교적쉽게확장타입을만들수있다. PyObject_HEAD 확장타입인스턴스의참조카운터, 타입객체의포인터를선언하는매크로 PyTypeObject 파이썬 include 디렉터리의 object.h에선언 확장타입생성에필요한목록이선언되어있는구조체 모든항목을다채울필요는없고사용하는기능만사용하면된다. 207

208 수학연산과비교연산 ctypes 파이썬에서외부라이브러리를간편하게사용할수있는내장모듈 C 의데이터타입이나, DLL 혹은 shared library 의함수들을직접사용할수있습니다. ctypes 모듈을이용해원도우 System function 호출하는예제 >>> im port ctypes >>> print(hex(ctypes.windll.kernel32.getmodulehandlea(none))) 0x1d

209 types 로 C 데이터타입사용하기 ctypes 가지원하는 C 언어데이터타입 ctypes 데이터타입을이용한예제 209

210 210

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

문서의 제목 나눔고딕B, 54pt 산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART I : 파이썬기초 가천대학교 산업경영공학과 최성철교수 [ 생각해보기 ] 1, Hello 만저장한파일의크기는얼마일까? [optimus_prime 5_data_type_structure]$ ls -lha -rw-r--r-- 1 optimus_prime admin 2 2014-07-30 18:53 1.txt

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

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

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

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

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

More information

OCW_C언어 기초

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

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

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

Microsoft PowerPoint - C++ 5 .pptx

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

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

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

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

@ p a g e c o n te n tt y p e = " te x t/ h tm l;c h a rs e t= u tf- 8 " fo r (in t i= 0 ; i< = 1 0 ; i+ + ) { o u t.p rin tln (" H e llo W o rld " + i + " < b r/> " ); = re s u lt + re s u lts u m ()

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

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

PowerPoint Presentation

PowerPoint Presentation Package Class 1 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

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

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

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

More information

C 프로그램의 기본

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

More information

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

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구 Python: 파이썬프로그래밍의기초, 함수 Kangwon Natl. University Department of Computer Science Cheoneum Park Intelligent software Lab. 함수 Intelligent software Lab. 2 함수란무엇인가? Intelligent software Lab. 3 함수를사용하는이유는? 프로그래밍을하다보면똑같은내용을반복해서작성하는경우다반사

More information

PowerPoint Presentation

PowerPoint Presentation #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

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

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

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

More information

A Review of C Programming

A Review of C Programming 02 장파이썬프로그래밍의 기초, 자료형 자료형을알고있다면그언어의절반을터득한것 02-1 숫자형 정수형 (1, 2, -2) 실수 (1.24, -34.56) 컴퓨터식지수표현방식 (4.24e10, 4.24e-10) 복소수 (1+2j) 8진수 (0o37) 16진수 (0x7A) 2 02-1 숫자형 사칙연산 >>> a = 3 >>> b = 4 >>> a + b 7 >>>

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

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

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

슬라이드 1

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

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

Tcl의 문법

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 파이썬을이용한빅데이터수집. 분석과시각화 이원하 목 차 1 2 3 4 5 Python 설치변수와파이썬자료형 (Data Type) 흐름제어입력 (Input) 과출력 (Output) 함수 (Function) 03 10 38 48 57 6 모듈 (Module) 62 1 1 PYTHON 설치 WHY PYTHON https://www.python.org 4 Download

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

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

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

APCPCWM_ :WP_GLOBAL_PFWP_GLOBAL_PF APCPCWM_ :WP_GLOBAL_PFWP_GLOBAL_PF 예제로보는 네트워크엔지니어를위한 Python 101

APCPCWM_ :WP_GLOBAL_PFWP_GLOBAL_PF APCPCWM_ :WP_GLOBAL_PFWP_GLOBAL_PF 예제로보는 네트워크엔지니어를위한 Python 101 예제로보는 네트워크엔지니어를위한 Python 101 오늘의목표 NO NO YES Python Basic Indentation Python에서 Indentation으로 Code Block(Scope) 를구분 동일한 Code Block은동일한방법 (Space, Tab) 으로구분해야함 하위레벨의 Code Block 나오기전에는 : ( 콜론 ) 사용 Indent

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

PowerPoint Presentation

PowerPoint Presentation 데이터처리프로그래밍 Data Processing Programming 01 파이썬프로그래밍언어 목차 1. 프로그래밍언어 2. 파이썬소개 3. 파이썬설치와실행 데이터처리프로그래밍 (Data Processing Programming) - 01 파이썬프로그래밍언어 3 1. 프로그래밍언어 프로그래밍언어개념 프로그래밍언어 programming language : 컴퓨터시스템을구동시키는소프트웨어를작성하기위한형식언어

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

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

<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 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

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

슬라이드 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

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

< 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

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

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

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

Microsoft PowerPoint - chap-03.pptx

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

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

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

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

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

8장 문자열

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

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

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

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 변수, 타입, 정수, 실수 상수 상수 (constant) #define MAX_FLOOR 100 프로그램헤더나앞부분에존재 변수의이름 ( 식별자 ) 와같은규칙을따르지만, 일반적으로대문자와 _ 로만구성 프로그램가독성을높이고, 일관된수정을위해사용 프로그램중간에갑자기등장하는임의의숫자는이해도를떨어뜨림 -> 반드시의미있는상수를이용해야함 Preprocessor

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

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

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

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information