PC

블로그 이미지

DAVID

'Programming'에 해당되는 글 109건

제목 날짜
  • 160808: 102회차 2016.08.08
  • 160805: 101회차 2016.08.05
  • 160804: 100회차 2016.08.04
  • 160803: 99회차 2016.08.03
  • 160802: 98회차 2016.08.03
  • 160801: 97회차 2016.08.01
  • 160729: 96회차 2016.07.29
  • 160728: 95회차 2016.07.28
  • 160727: 94회차 2016.07.27
  • 160726: 93회차 2016.07.26

160808: 102회차

Programming 2016. 8. 8. 18:18

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


schedule _ 경로 설정 & html 충돌로 페이지 안 떴었음.

테이블 수정해서 권한 넣을 것


[11] 구구단 출력하기, 문자열 가지고 놀기

[01]  구구단 출력하기 

1. 1단 출력하기


# -*- coding:utf-8 -*-
# 구구단 1단 출력 ##############
 
for n in range(1, 10):              # 1~9까지 숫자 추출을 위한 반복문
    print 1, 'x', n, '=', 1*n      # 1 x 1 = 1 포맷의 출력


2. 원하는 단 출력하기

# -*- coding:utf-8 -*-
# 입력 받은 숫자에 해당하는 구구단 출력 ##############
 
m = int(input('구구단 몇 단을 출력 할까요? 숫자를 입력하세요: '))
 
while m < 1 or m > 9:
    m = int(input('구구단은 1단부터 9단까지 출력 가능합니다. 맞는 숫자를 다시 입력하세요: '))
 
for n in range(1, 10):
    print m, 'x', n, '=', m*n


3. 구구단 전체 출려하기

# -*- coding:utf-8 -*-
# 구구단 전체 출력 ##############
 
for m in range(1, 10):
    print('='*10)
    for n in range(1, 10):
        print m, 'x', n, '=', m*n




[02] 문자열 가지고 놀기

1. 문자열 대소문자 변경하기

# -*- coding:utf-8 -*-
s = raw_input('영어 대소문자로 이루어진 문장을 입력하세요.\n')  # 문자열 입력
 
print('모두 대문자로 출력\n' + s.upper())   # 대문자로 모두 변환
 
print('모두 소문자로 출력\n' + s.lower())   # 소문자로 모두 변환
 
new_s = str()   # 신규 문자열 형 변수 선언
 
for c in s:     # 입력 받은 문자를 하나씩 꺼내서 c에 대입
 
    if c.islower():         # 해당 문자가 소문자이면
        new_s += c.upper()  # 대문자로 변경하여 new_s에 붙이기
    else:                   # 해당 문자가 대문자이면
        new_s += c.lower()  # 소문자로 변경하여 new_s에 붙이
 
print('대소문자 바꿔서 출력\n' + new_s)             # 최종 변환 결과 출력
 
print('대소문자 바꿔서 출력\n' + s.swapcase())      # 대소문자 모두 변환


2. 문자열 순서 바꾸기

# -*- coding:utf-8 -*-
s = raw_input('영어 문장을 입력하세요.\n')  # 문자열 입력
 
new_s = str()                       # 신규 문자열형 변수 선언
 
for x in range(len(s)-1, -1, -1):   # range()를 활용한 역순 인덱스 추출
    new_s += s[x]                   # 문자열을 끝에서부터 앞으로 신규 변수에 붙이기
 
print(new_s)                        # 위 결과 출력
 
print(s[::-1])                      # 인덱스 사용법으로 역순 출력 = -1부터 반대로 가라 :-)



[12] 파일 입출력
[01]파일 입출력
1. 파일 처리 모드
 - open(filename, mode) 내장 함수로 filename 이름을 지닌 file 객체를 얻는다.
 - 얻어진 파일 객체에서 자료를 읽거나, 쓰거나, 덧붙이는 작업 수행 
 - 모든 작업이 끝나면 close()를 호출하여 작업 프로세스의 자원 점유 해제
 - 두번째 인자 mode 생략시에는 읽기 전용(r) 모드로 설정
a는 append 같은 것
mode 부분에 저걸 적으면 됨
 
 - filename → 첫 번째 인자에 문자열 형태로 기입 
 - mode → 두 번째 인자로 읽을 것인지, 쓸 것인지, 덧붙일 것인지 결정 ?
 - open 함수를 쓰면 항상 close 함수 같이 씀 ?
 - 읽기모드는 파일이 존재해야 함 ? 
 - 파일포인터 → 현재 읽는 위치 ?
 - read라는 메소드를 사용 시 파일포인터 있는 위치를 읽음 
 - 'a'는 affend의 약자 → 이미 존재하는 내용 뒤에 쓰기
 
 2. 파일 쓰기
 - 현재 작업디렉토리 알기
 # -*- coding:utf-8 -*-
 import os
 print os.getcwd()

 ____________________  cwd는 리눅스에서 현재 위치를 알려주는 것
 
 s = """안녕하세요. 파이썬 프로그래밍의 파일처리부분을 수업합니다.
 우선 파일에 글일 저장하는 파일쓰기글 먼저 수행합니다. 
 open함수를 이용하여 파일객체를 쓰기모드로 생성 합니다.
 또한 파일에서 읽어오는 방법에 대해서도 알아봅니다.
 """ 
 f = open('t.txt', 'w') 
 f.write(s) # 문자열을 파일에 기록 f.close()
 
- 이중따옴표 3개 → 여러 개의 문장 입력 가능 
- mode가 w → 파일이 쓰기 전용으로 열림 
- open 내장함수가 반환하고 있는 객체가 file 객체 
- write 메소드 → 문자열을 파일에 기록
 
- eclipse의 프로젝트 폴더에서 새로고침 하면 t.txt 파일이 보임
 
 
3. 파일 읽기
# -*- coding:utf-8 -*-
f = open('t.txt', 'r') # f = file('t.txt')와 동일 
s = f.read()
print s
 
- 모드가 쓰이지 않음 → 읽기 모드 
- s = f.read( ) → f라는 변수 내에 파일 내용 전체를 가져와 문자열 할당
- f.close( ) → 파일이 자원을 점유하고 있던 것을 해제
- close()을 마지막에 호출하지 않으면 해당 file 객체가 다른 값으로 치환되거나 
  프로그램이 종료될 때 자동으로 close()가 불리워진다. 
 
 
4. 라인 단위로 파일 읽기(총 4개)
1) 파일 객체의 반복자 이용하기 
  - 파일 객체의 반복자는 각 라인별로 내용을 읽어오도록 설정되어 있음 
  - 파일을 라인별로 읽는 방법 중 가장 효과적임
  - line 변수에는 첫 번째 라인 내용이 들어옴
 
f = open('t.txt') 
i = 1 
for line in f:
     print i, ":", line, 
     i += 1 
f.close()
 
 
2) readline(): 한번에 한줄씩 읽는다.
  - readline( ) → 현재의 파일포인터에서 개행 문자까지 읽음 = 한 라인
 
f = open('t.txt') 
line = f.readline()
i = 1 
while line: 
    print i, ":", line, 
    line = f.readline() 
    i += 1 
f.close()
 
3) readlines(): 파일 전체를 라인 단위로 끊어서 리스트에 저장한다. 
  - 각 라인을 모두 읽어서 메모리에 리스트로 저장
  - readlines( ) → 리스트를 반환 ? 
  - seek(0) → 파일포인터를 처음으로 돌려줌 
  - f.readlines( ) 호출하면 파일포인터가 젤 마지막에 위치하게 됨
 
# -*- coding:utf-8 -*-
f = open('t.txt') 
print f.readlines() 
print
f.seek(0) 
i = 1 
for line in f.readlines(): 
    print i, ":", line, 
    i += 1 
f.close()
 
4) xreadlines():
  - readlines()과 유사하지만 파일 전체를 한꺼번에 읽지 않고, 
    상황별로 필요한 라인만 읽는다. 
  - 대용량의 파일을 for 문 등으로 라인 단위로 읽을 때 효율적이다. 
  - xreadlines( ) → 리스트가 반환되지 않고 파일 객체 내용이 찍힘 
  - xreadlines( ) → 전체가 아닌 라인별로 읽어옴 → 효과적인 메모리 사용
f = open('t.txt') 
print f.xreadlines() 
f.seek(0) 
i = 1 
for line in  f.xreadlines(): 
    print i, ":", line, 
    i += 1 
f.close()
 
 
5. 라인 단위로 파일 쓰기
1) writelines(): 리스트 안에 있는 각 문자열을 연속해서 파일로 출력한다
 - writelines(lines) → 각각의 문자열을 라인 단위로 출력 ?
 - read( ) → 전체 내용을 모두 읽음 ? 
 - 각각의 라인을 입력할 때 '\n'은 필히 사용
 - '\n'을 넣지 않으면 개행이 되지 않음
 
# -*- coding:utf-8 -*-
lines = ['first line\n', 'second line\n', 'third line\n']  - 리스트하고 사전 타입 빼고는 다 변경 불가능
f = open('t1.txt', 'w')
f.writelines(lines)
f.close()
f = open('t1.txt')
f.seek(0) 
print f.read()
f.close()
 
2) write() 이용하여 여러 문자열을 각 라인별로 파일로 출력하는 방법
  - '\n'.join(lines) → 라인에 존재하는 원소를 '\n'로 이어줌
 
lines = ['first line', 'second line', 'third line']
f = open('t1.txt', 'w')
f.write('\n'.join(lines))
f.close()
f = open('t1.txt')
f.seek(0)
print f.read() 
f.close()
 
6) 텍스트 파일 t.txt의 단어(공백으로 분리된 문자열) 수를 출력하는 방법
- split( ) → 공백문자를 기준으로 문자를 잘라 list 화 ?
- len(s.split( )) → 리스트 안에 존재하는 원소의 개수
 
f = open('t.txt')
s = f.read()
n = len(s.split()) 
print n
f.close()
 
7) 기존 파일에 내용 추가
 
- 새로운 파일 추가 시 ‘a’ 모드 사용 
- 현재 존재하는 파일내용의 맨 뒤에 내용 삽입됨
 
f = open('retest.txt', 'w') # 파일의 생성
f.write('first line\n')
f.write('second line\n')
f.close()
 
f = open('retest.txt', 'a') # 파일 추가 모드로 오픈 
f.write('third line\n')
f.close()
f = open('retest.txt')      # 파일 읽기 
print f.read()

5. 표준 출력을 파일로 저장하기 
- 표준 출력(print)을 파일 객체로 전환  
- >> : 리다이랙트 기호 
f = open('t3.txt', 'w')
print >> f, 'spam string' 
f.close()  
f = open('t3.txt')
print f.read() 
f.close() 

값 타입이 없고 모두 참조타입이다 (함수명도 식별자를 가짐)






5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160816: 104회차  (0) 2016.08.16
160809: 103회차  (0) 2016.08.09
160805: 101회차  (0) 2016.08.05
160804: 100회차  (0) 2016.08.04
160803: 99회차  (0) 2016.08.03
Posted by DAVID

160805: 101회차

Programming 2016. 8. 5. 18:20

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


프로젝트 극대노


cudt


create 하는중


public class CompanyInfoDTO {

private String companyID; - 기업회원id

private String companyName; - 회사명

private String companyScale; - 기업형태

private String bossName; - 대표자명

private long companyNumber; - 사업자번호

private String ci; - 회사마크사진파일명

private String categoryCode; - 분류코드


이거 다하면 비동기로 받아오는 거 적용하깅


글고 스케줄도 적용하기~~~


5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160809: 103회차  (0) 2016.08.09
160808: 102회차  (0) 2016.08.08
160804: 100회차  (0) 2016.08.04
160803: 99회차  (0) 2016.08.03
160802: 98회차  (0) 2016.08.03
Posted by DAVID

160804: 100회차

Programming 2016. 8. 4. 12:18

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것

[09] 제어문, 키보드 입력, 출력문

[01] 제어문
1. 조건문
 - if 문은 단순히 식에 대한 평가를 수행해서 그것이 참인지 거짓인지에 따라 
   다른 일을 한다.
 
if <검사할 식>:
      작업을 수행
else:
      다른 작업을 수행
 
>>> x = 3
>>> y = 2
>>> if x == y:
     print 'x는 y와 같습니다'
 elif x > y:
     print 'x는 y보다 큽니다'
 else:
     print 'x는 y보다 작습니다'
 
x는 y보다 큽니다
 
2. 반복문
 - while 문
while 참
    연산을 수행
 
>>> x = 9
>>> y = 2
>>> while y < x:
...     print 'y is %d less than x' % (x-y)
...     y += 1
...
y is 7 less than x
y is 6 less than x
y is 5 less than x
y is 4 less than x
y is 3 less than x
y is 2 less than x
y is 1 less than x
 
 - for 문
 for 각각의 값 in 정의된 집합:
     연산의 묶음을 수행
 
 >>> for x in range(10):
...     print x
...
0
1
2
3
4
5
6
7
8
9
 
 - range는 파이썬의 내장 함수로서 단순히 특정한 값에서 다른 값까지의 범위를 제공한다.
   위 예제에서, range에 10이라는 값을 넘겨주고서 0에서 10 사이의 모든 값을 돌려받았는데, 
   앞쪽의 0을 포함되었고 끝의 값은 제외되었다.
 
[02] 키보드 입력
1. 키보드 입력
 - 파이썬 언어는 사용자 입력을 허용하는 애플리케이션의 작성을 지원하기 위해 키보드 
   입력을 받는 한 쌍의 내장 함수를 갖고 있다. 바로 raw_input()과 input()을 사용하여
   명령행에서 입력을 요청하고 사용자의 입력을 받아들일 수 있다. 
 
 - raw_input()과 input()함수 사용
 # 함수 내의 텍스트는 선택사항이며, 사용자에게 프롬프트로 사용됨
>>> name = raw_input("Enter Your Name:")
Enter Your Name:Josh
>>> print name
Josh
# 사용자가 입력한 식을 평가하는 input 함수를 사용
>>> val = input ('Please provide an expression: ')
Please provide an expression: 9 * 3
>>> val
27
# 식이 제공되지 않으면 입력 함수가 에러를 제기
>>> val = input ('Please provide an expression: ')
Please provide an expression: My Name is Josh
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
My Name is Josh
^
SyntaxError: invalid syntax
val = input("Please provide an expression:")
Please provide an expression:"My name is Josh"
val
Out[174]: 'My name is Josh'
 
[03] 출력문
 
1. 출력문
 - 출력print 문은 프로그램 결과를 화면에 출력하는데 사용된다.
   프로그램 내에서 출력되는 메시지를 표출하고, 계산된 값을 출력할 수도 있다
 
>>>print 'This text will be printed to the command line'
 
>>> my_value = 'I love programming in Jython'
>>> print my_value
I love programming in Jython
 
  - 문자열에 숫자 값을 추가하려고 하면 오류를 맞이하게 될 것이다.
>>> z = 10
>>> print 'I am a fan of the number: ' + z
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
 
 - 변수의 내용이나 식의 결과를 print 문에 포함하고 싶으면, 다음의 구문을 사용한다.
 print 'String of text goes here %d %s %f' % (decimalValue, stringValue, floatValue)
 
 %s - 문자열
 %d - 십진수
 %f - 부동소수점수
 
 >>> string_value = 'hello world'
>>> float_value = 3.998
>>> decimal_value = 5
>>> print 'Here is a test of the print statement using the values: %d, %s, and %f' % (decimal_value, string_value, float_value)
Here is a test of the print statement using the values: 5, hello world, and 3.998000
 
>>> x = 1
>>> y = 2
>>> print 'The value of x + y is: %d' % (x + y)
The value of x + y is: 3
 
>>> x = 2.3456
>>> print '%s' % x
2.3456
>>> print '%d' % x
2
>>> print '%f' % x
2.3



[10] 예외처리, 함수, 클래스

[10] 예외처리
  - 
일부 자바코드는 try-catch-finally 문 안에서 예외를 처리하지 않으면 컴파일조차 되지 않는다.
     파이썬은 자바와 유사한 구조를 가지고 있다.
 -  
throw 라고 하는 것은 자바에서 쓰이는 표현이다. 파이썬에서는 예외를 던지는 것이 아니라,
   그저 예외를 일으킨다(raise).  서로 다르게 표현하고는 있지만 기본적으로 두 용어는 같은 것이다.

    



# 다음 함수는 try-except 문을 통하여 사용자가 0을 분모로 전달하면

# 친절한 에러 메세지를 제공한다.
>>> from __future__ import division
>>> def divide_numbers(x, y):
...     try:
...         return x/y
...     except ZeroDivisionError:
...         return 'You cannot divide by zero, try again'
…
# 8 나누기 3을 시도
>>> divide_numbers(8,3)
2.6666666666666665
# 8 나누기 0을 시도
>>> divide_numbers(8, 0)
'You cannot divide by zero, try again'



- 파이썬에서는 또한 else 절을 제공하여 try-except-else 논리를 구성할 수 있다. else는 선택사항으로서
  아무런 예외도 찾을 수 없을 경우에 수행할 코드를 넣을 수 있다.


- 아무런 예외가 발생하지 않을 경우에만 수행하여야 하는 작업과 같은 예외 처리 논리를 다루기 위하여 
  
else 절을 사용할 수 있다. else 절 내의 코드는 아무런 예외도 던져지지 않았을 때에만 시작되며,
  else 절 내에서 어떠한 예외가 발생하게 되면 except로 돌아가지 못한다.



 

- try-except 블록은 원하는 만큼 겹칠 수 있다. 겹쳐진 예외 처리 블록의 경우, 만약 예외가 던져지면 오류를 받는
 가장 안쪽의 블록으로부터 프로그램 제어가 바로 윗 블록으로 건너뛰게 된다. 


# 키보드 입력을 통하여 받은 숫자에 대하여 나눗셈을 수행
try:
    # 작업을 수행
    try:
        x = raw_input ('Enter a number for the dividend:  ')
        y = raw_input('Enter a number to divisor: ')
        x = int(x)
        y = int(y)
    except ValueError:
        # 예외를 처리하고 바깥의 try-except로 이동
        print 'You must enter a numeric value!'
    z = x / y
except ZeroDivisionError:
    # handle exception
    print 'You cannot divide by zero!'
except TypeError:
    print 'Retry and only use numeric values this time!'
else:
    print 'Your quotient is: %d' % (z)

quotient - 몫


[02] 함수

1. 함수의 정의


def times2(n):
    return n * 2
 
- 함수는 보통 ‘def’정의한다. 위의 예제는 함수명이 times2이며 
  n을 매개변수로 가진다. 
- 함수의 몸체는 단 한 줄이지만, 매개변수를 숫자 2로 곱하는 곱셈이 이루어진다.
  그 결과는 변수에 저장하지 않고, 함수를 호출하는 코드로 바로 반환한다. 
 
>>> times2(8)
16
>>> x = times2(5)
>>> x
10

- 함수 정의는 코드의 어떤 수준에서도 발생할 수 있으며 어느 시점에서든지 일어날 수 있다.
- C나 자바와 같은 언어에서와는 달리, 함수의 정의는 선언이 아니다. 
- 파이썬에서의 함수 정의는 실행가능한 서술이다. 함수를 중첩시킬 수 있으며, 
  또한 조건부로 함수를 정의하는 것과 같은 일도 할 수 있다.
 
variant = True
 
if variant:
    def f():
        print "이렇게"
else:
    def f():
        print "혹은 저렇게"
 
f()
 
- 파이썬의 모든 매개 변수는 참조에 의해 전달된다. 
  그러한 점은 자바에서의 개체 매개변수와 동일하다. 
- 자바에서는 원시 자료형을 값으로 전달하는데 비해, 파이썬에는 그러한 속성은 없다.
- 파이썬에서는 모든 것이 개체인 것이다. 불변immutable 개체에는 변경이 일어날 수 없으므로,
- 문자열을 함수로 넘겨주고 변경하는 경우에는 문자열의 복사본이 만들어진다.
 
 
# 다음의 함수는 문자열 텍스트를 변경하기 위해 문자열의 사본을
# 만든 다음에 그것을 변경한다. 원래의 문자열은
# 불변이기 때문에 손댈 수 없다.
 
def changestr(mystr):
     mystr = mystr + '_changed'
     print 'The string inside the function: ', mystr
     return
mystr = 'hello'
changestr(mystr)
 
mystr
 
 
# 두 개의 값과 수학 함수를 매개변수로 받는 함수를 정의
>>> def perform_calc(value1, value2, func):
...     return func(value1, value2)
...
# 넘겨줄 수학 함수를 정의
>>> def mult_values(value1, value2):
...     return value1 * value2...
>>> perform_calc(2, 4, mult_values)
8
# 또 다른 함수를 정의하여 넘겨줌
>>> def add_values(value1, value2):
...     return value1 + value2
...
>>> perform_calc(2, 4, add_values)
6
>>>

중첩 함수 정의가 용이함


[03] 클래스
  - 파이썬은 C++, JAVA처럼 객체지향 언어이다.
  - 파이썬의 모든 것은 객체라는 것으로 이루어져 있으며 클래스는 이 객체를 만들기 위한
    설계도, 명세서라 할 수 있다.
  
>>> var = '파이썬 객체 지향'
>>> id(var)     #var의 식별자확인(java의 hashcode)
60456245
>>> type(var)  #var의 타입 확인
<class 'str'>

- 파이썬의 클래스 역시 하나의 객체이다.
- 문자열형 클래스 str은 type 클래스의 객체이다.
- type 클래스 역시 type클래스의 객체이다.

>>> str        # 문자열형
<class 'str'>
>>> type(str)
<class 'type'>
>>> id(str)   # 식별자 존재
17481545



1. 클래스 정의 및 사용

- test01.py 로 저장
- read_book 메소드 앞에 def생략시 에러
- self 생략이 에러 조심


# -*- coding:utf-8 -*-
class BookReader:
    name = str()
    def  read_book(self):
        print self.name + 'is reading Book!!'
 
 
reader = BookReader()
reader.name = '홍길동 '
reader.read_book()


2. __init__() 함수 정의, 인스턴스 변수, 클래스 변수

- 클래스 초기화 함수 이다 자바의 생성자 함수처럼 사용함
- 멤버변수를 이 클래스 초기화 함수에 선언하여 초기화하여 사용할 수 있다.
- __init__()함수 선언하면 BookReader() 가로안에 매개변수를 전달하지 않으면 에러 주의


# -*- coding:utf-8 -*-
class BookReader:
    def  __init__(self,name):     #name: 매개변수
       self.name = name        #self.name:인스턴스변수

 
    def  read_book(self):
        print self.name + 'is reading Book!!'
 
 
reader = BookReader("홍길동")
reader.read_book()



 - 클래스 변수 country = "korea"  를 __init__() 위에 선언한다.

# -*- coding:utf-8 -*-
class BookReader:
    
country = "korea"           #country:클래스변수
    def  __init__(self,name):     #name: 매개변수
       self.name = name        #self.name:인스턴스변수

 
    def  read_book(self):
        print self.name + 'is reading Book!!'
 
 
reader1 = BookReader("홍길동")
reader2 = BookReader("박길동")
reader1.read_book()
reader2.read_book()
print BookReader.country     #reader1.country 가능

 - 클래스의 인스턴스변수 더하기 곱하기 예제
 - 초기화 함수 __init__()은 어떠한 값을 초기화하는 데 쓰인다. 
 - 초기화 메소드는 객체를 생성하기 위해서 어떤 값이 클래스로 전달되도록 한다.
 - 클래스 내의 각 메소드와 함수가 self 인자를 받는 것을 볼 수 있을 것이다.
 - self 인자는 객체 자신을 참조하는데 쓰이는데, 이것을 통해 클래스는 
   인스턴스변수 공유한다.
 - self 자바 코드에서의 this와 비슷하다. 
 
>>> class my_object:
...     def __init__(self, x, y):
...         self.x = x
...         self.y = y
...
...     def mult(self):
...         print self.x * self.y
...
...     def add(self):
...         print self.x + self.y
...
>>> obj1 = my_object(7, 8)
>>> obj1.mult()
56
>>> obj1.add()
15


3. 데이터 은닉, Name Mangling
 
 - 파이썬은 자바처럼 강력한 데이터은닉 도구인 접근자(private)가 없다.
   대신에 변수 앞에에(__) 언더스코어를 있게함으로써 이름장식(Name Mangling) 기법을 제공한다.
   이름장식이된 변수는 직접 접근이 불가하다 이변수의 접근하기 위한 수정변수나 값반환 함수를
   만들어 접근하거나 클래스 이름으로 접근할 수 있다.


class BookReader:
    
country = "korea"           #country:클래스변수

print BookReader.country

--------------------------------------------------------------

class BookReader:
    __
country = "korea"           #__country:클래스변수에 직접 접근 안됨.

          
print BookReader.__country     #오류

--------------------------------------------------------------
class BookReader:
    __
country = "korea"           #country:클래스변수

BookReader.__country = "USA"          #대신 수정함수사용가능
print BookReader.__country               #반환함수 사용가능


4. 상속 
  - 중복코드를 최소화 함과 동시에 클래스간의 계층 관계를 형성함으로써
    부모의 속성과 메소드를 물려받는다.


# -*- coding:utf-8 -*-
class Animal(object):
    def sound(self):
        return "I don't make any sounds"
class Goat(Animal):
    def sound(self):
        return "Bleeattt!"
class Rabbit(Animal):
    def jump(self):
        return "hippity hop hippity hop"
class Jackalope(Goat, Rabbit):
    pass
 
animal = Animal()
goat = Goat()
rabbit = Rabbit()
jack = Jackalope()
print animal.sound()
print goat.sound()
print rabbit.sound()
print rabbit.jump()
print jack.sound()  #Goat함수 호출
print jack.jump()   #Rabbit함수 호출
 

print isinstance(animal, Animal)
print isinstance(goat, Goat)
print isinstance(rabbit, Rabbit)
print isinstance(jack, Jackalope)












5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160808: 102회차  (0) 2016.08.08
160805: 101회차  (0) 2016.08.05
160803: 99회차  (0) 2016.08.03
160802: 98회차  (0) 2016.08.03
160801: 97회차  (0) 2016.08.01
Posted by DAVID

160803: 99회차

Programming 2016. 8. 3. 14:36

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


다시 파이썬 수업



이걸 눌러서 파이썬 콘솔 활성화 _ 대화형 코딩 가능 (인터액티브 방식)


[05] Python 식별자와 변수선언, 데이터 타입

[01] Python 식별자와 변수선언 - 변수가 동적 자료형

1. 식별자와 변수선언
- 파이썬 언어에서 변수를 정의하려면, 단지 식별자를 사용하여 그 이름을 지으면 된다.
- 식별자란 개체를 식별하는 데 사용되는 이름을 말한다. 
- 파이썬 언어는 변수명을 어떠한 값을 가리키는 이름표로 취급한다. 
- 그것은 값이 어떤 종류인지 따지지 않는다. 따라서 모든 변수는 
  모든 종류의 데이터든 가질 수 있다. 
- 하나의 변수가 프로그램이 살아 움직이는 동안에 서로 다른 데이터 유형으로
  바뀌는 것도 가능하다. 그래서 처음에 정수로 할당되었던 변수가 나중에는 
  문자열을 가질 수도 있다. 
 

*  Python의 식별자 규칙
  - 첫자는 반드시 영문 대소문자 혹은 _(언더바)로 시작
  - 나머지 글자는 영문자, 숫자 혹은 _(언더바)로 구성한다.
  - 대소문자 구분한며, 길이에 대한 제약이 없다.
  - 예약어는 변수로 선언할 수 없다.

* 예약어


 
2. 변수의 선언
 
- 변수는 형이 정해지지 않았으며 어떠한 값이라도 받아들일 수 있는 상태이다. 
- 바로 이 점이 자바와 같이 자료형을 정적으로 유지하는 언어와, 파이썬과 같은 
  동적 언어의 차이점이다. 
- 자바에서는 변수를 생성할 때 자료형을 선언하지만, 파이썬에서는 그렇게 하지 않는다. 


>>> x = 'Hello Jython'
>>> z = 6
>>> y = 3.14
>>> z = z * y
>>> x
>>> Y
>>> z


3. Python의 데이터 타입
- 
 파이썬에서는 어떤 유형의 데이터를 저장하는지 번역기가 동적인 방식으로 판단한다.


x = 'Hello World'
x = "Hello World Two"
 
# 정수를 정의
y = 10
 
# 부동소수점수
z = 8.75
 
# 복소수
i = 1 + 8.07j
 
>>> # type 함수를 사용하여 개체의 유형을 반환
>>> i = 1 + 8.07j
>>> type(i)
<type 'complex'>
 
>>> a = 'Hello'
>>> type(a)
<type 'str'>
 
>>> x, y, z = 1, 2, 3
>>> print x
1
>>> print z
3


[06] Python 숫자형과 연산자

[01] Python 숫자형과 연산자 

1. 숫자형 

 -  int( 정수), float(실수), complex(복소수)
 - 연산이 가능한 데이터 타입.
 - 변수 선언시 데이터 타입을 선언하지 않는다.

1) 수학연산자

/는 나눗셈시 나머지까지 반환 

//는 나눗셈시 나머지 반환 x 

예시 - 

36/5.0

Out[52]: 7.2

36//5.0

Out[53]: 7.0

 - 나눗셈은 나눗셈의 결과에서 자동적으로 소수점 이하를 버리고 정수를 남긴다.
 - 거듭제곱 연산자는 예상할 수 있듯이, 연산자 왼쪽에 있는 숫자를 n번 곱한 결과를
   반환하며, 연산자 오른쪽의 n은 숫자를 나타낸다.



   >>> #기본적인 수학 계산을 수행
   >>> 10 - 6
    4
    >>> 9 * 7
   63
   >>> 36 // 5
   7
   >>> # 나머지를 반환하는 
   >>> 36 % 5
   1 
   >>> # 5의 제곱 
   >>> 5**2 
   25 
   >>> # 100의 제곱
   >>> 100**2 
   10000
  - 나눗셈의 자동 반올림 안하기 test.py

  # -*- coding:utf-8 -*-
  from __future__ import division
  # 그런 다음 평소와 같이 나눗셈을 수행하면 예상했던 결과를 얻을 수 있다
  print 14/2
  print 14/6
 

2) 수학내장 함수



  >>> # 다음 코드는 수학 내장 함수를 사용하는 몇 가지 예제를 제공한다

>>> # 9의 절대값
>>> abs(9)
9

>>> # -9의 절대값
>>> abs(-9)
9

>>> # 8을 4로 나눈 몫과 나머지로 이루어진 튜플
>>> divmod(8,4)
(2, 0)

>>> # 똑같은 일을 하지만, 이번에는 나머지(모듈로)가 반환됨
>>> divmod(8,3)
(2, 2)

>>> # 8의 제곱을 구함
>>> pow(8,2)
64

>>> # 8의 제곱을 3으로 나눈 나머지  ((8 **2) % 3)
>>> pow(8,2,3)
1
>>> # 반올림을 수행
>>> round(5.67,1)
5.7
>>> round(5.67)
6.00

3) 비교연산자



  >>> # 단순 비교

  >>> 8 > 10   False >>> 256 < 725 True >>> 10 == 10 True >>> # 식 내에서 비교 >>> x = 2*8 >>> y = 2 >>> while x != y: <- 저게 세미콜론이 아니라 콜론임 : <- 요거! ...     print 'Doing some work...' ...     y = y + 2 ... Doing some work... Doing some work... Doing some work... Doing some work... Doing some work... Doing some work... Doing some work... >>> # 삼항 비교 >>> 3<2<3 False >>> 3<4<8 True

4) 비트연산자



 - 파이썬의 비트 연산자는 숫자를 2의 보수로서 다루는 연산자의 집합이다.
 - 비트 연산자를 사용할 때는, 숫자를 0과 1로 구성된 문자열로 취급한다는 말이다.
 -  2의 보수에 대해 개념을 잡지 못하고 있다면, 위키피디아에서 다음의 문서를 참조한다.
  (
http://ko.wikipedia.org/wiki/2의_보수) 비트 연산자는 정수와 긴 정수에만 사용할 수 있다

 >>> 14 & 27 
10
>>> 14 | 27
31
>>> 14 ^ 27
21
>>> ~14
-15
>>> ~27
-28


5) 이동연산자


 - 왼쪽 이동 연산자는 왼쪽 항의 값을 오른쪽 항에서 지정한 비트만큼 왼쪽으로 이동시킨다.
 - 오른쪽 이동 연산자는 정확히 반대로 동작하여, 왼쪽 항의 값을 오른쪽 항에서 지정한 비트만큼
  오른쪽으로 이동시킨다.
- 본질적으로 왼쪽 이동 연산자는 왼쪽에 있는 항에다가 오른쪽 항에서 지정한 횟수만큼
   숫자 2를 곱하는 셈이다. 반대로 오른쪽 이동 연산자는 왼쪽에 있는 항을 오른쪽 항에서
   지정한 횟수만큼 2로 나누는 것이다.



  # 왼쪽으로 이동, 여기서는 3*2
  >>> 3<<1
 6
 # 3*2*2와 동등함
 >>> 3<<2
 12
 # 3*2*2*2*2*2와 동등함
 >>> 3<<5
 96
 # 오른쪽으로 이동
 # 3/2와 동등함
 >>> 3>>1
 1
 # 9/2와 동등함
 >>> 9>>1
 4
 # 10/2와 동등함
 >>> 10>>1
 5
 # 10/2/2와 동등함
 >>> 10>>2
 2

6) 복합대입연산자


  >>> x = 5 
  >>> x
  5
  # x의 값에 1을 더하여 그 값을 x에 할당
  >>> x+=1
  >>> x
  6
  # x의 값에 5를 곱하여 그 값을 x에 할당
  >>> x*=5
  >>> x
  30
 

[07] Python 논리형, 문자열, 형변환 함수

[01] Python 논리형, 문자열, 형변환 함수

1. 논리형

 - 
부울 값을 표현하기 위해 0과 1을 써서도 쉽게 작성할 수는 있겠지만,
 - 가독성과 유지보수를 위해서 True와 False
 - 첫자는 대문자로 쓴다.


조건부논리
andx and y 평가에 있어서, x가 거짓으로 판명되면 그것을 반환하고, 그렇지 않은 경우에는 y를 평가하여 결과값을 반환
orx or y 평가에 있어서, x가 참으로 판명되면 그것을 반환하고, 그렇지 않은 경우에는 y를 평가하여 결과값을 반환
notnot x 평가에 있어서, x가 거짓이라는 것은 x의 반대를 의미함

2. 문자열
 
  - 여러문자로 구성도어 있고, 다른 문자와 연결될 수 있으며 데이터에 포함된
    문자열의 길이를 확인할 수 있는 데이터 타입(str)

  - ('), (")로 감싸면 문자열로 인식한다. (' ' '), (" " ")로 감싸면 여러 줄인 경우에 사용된다.


   # -*- coding:utf-8 -*-
   print("안녕하세요")
   print('안녕하세요')
 
   print('''                            - '가 3개임
        안녕하세요
        반갑습니다.
        다시봅시다.
   ''')

    
     print(' 안녕하세요\n'
                   '반갑습니다.\n'
          '다시봅시다.')
 

   - 문자열 중간에 (') 출력하기

    print(" 안녕하세요 \"홍길동 \" 입니다.")
    print(' 안녕하세요 \'홍길동\' 입니다.')
    print(" 안녕하세요 '김길동' 입니다.")
    print(' 안녕하세요 "박길동" 입니다.')


  - 문자열 메소드 사용하기 


>>> our_string='python is the best language ever'
 
>>> # 문자열의 첫 글자를 대문자로
>>> our_string.capitalize()
'Python is the best language ever'
 
>>> # 가운데 정렬
>>> our_string.center(50)
'         python is the best language ever         '
>>> our_string.center(50,'-')
'---------python is the best language ever---------'
 
>>> # 문자열 내에서 부분문자열 세기
>>> our_string.count('a')
2
 
>>> # 부분문자열 발생 횟수 세기
>>> state = 'Mississippi'
>>> state.count('ss')
2
 
>>> # 문자열을 분할(partition)하면, 분리자의 앞 부분, 분리자, 그리고 그 분리자의
>>> # 뒷 부분의 세 원소로 이루어진 튜플을 반환
>>> x = "Hello, my name is Josh"
>>> x.partition('n')
('Hello, my ', 'n', 'ame is Josh')
 
>>> # 위와 똑같은 x가 있다고 할 때, 'l'을 분리자로 하여 문자열을 쪼개기(split)
>>> x.split('l')
['He', '', 'o, my name is Josh']
 
>>> # 보는 바와 같이 분리자는 반환되는 목록에 포함되지 않는다.
>>> # maxsplits 값을 1로 하여 추가하게 되면, 가장 왼쪽부터 쪼개기가 이루어진다.
>>> # maxsplits 값을 2로 주면, 가장 왼쪽 두 개의 쪼개기가 이루어진다.
>>> x.split('l',1)
['He', 'lo, my name is Josh']
>>> x.split('l',2)
['He', '', 'o, my name is Josh']

 

3. 형 변환 함수

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

# 정수가 나타내는 문자를 반환
>>> chr(4)
'\x04'
>>> chr(10)
'\n'
 
>>> # 정수를 부동소수점수로 변환
>>> float(8)
8.0
 
>>> # 문자를 나타내는 정수 값으로 변환
>>> ord('A')
65
>>> ord('C')
67
>>> ord('z')
122
 
>>> # 임의의 개체에 대하여 repr()을 사용
>>> repr(3.14)
'3.14'
>>> x = 40 * 5
>>> y = 2**8
>>> repr((x, y, ('one','two','three')))
"(200, 256, ('one', 'two', 'three'))"



[08] Python 데이터구조 list, tuple, set, Dictionary

[01] Python 데이터구조 list, tuble, set, Dictionary
- 데이터구조란 
  데이터를 활용 방식에 따라 조금 더 효율적으로 이용할 수 있도록 
  컴퓨터에 저장하는 여러 방법들
- Python의 데이터 구조는 list, tuble, set, Dictionary
 
1. list
  - 파이썬 프로그래밍 언어 내에서 가장 많이 쓰이는 구조
  - 목록은 어떠한 파이썬 자료형이라도 저장할 수 있다.
 
  >>> # 빈 목록을 정의
  >>> my_list = []
  >>> my_list = list()  # 가끔 사용됨
 
  >>> # 하나의 원소를 가진 목록
  >>> my_list = [1]
  >>> my_list  # 번역기에서 변수를 출력하기 위해서 print를 사용할 필요가 없다
     [1]
 
  >>> # 문자열 값의 목록을 정의
  >>> my_string_list = ['Hello', 'Jython' ,'Lists']
  >>> # 복수의 자료형을 포함하는 목록을 정의
  >>> multi_list = [1, 2, 'three', 4, 'five', 'six']
  >>> # 목록을 포함하는 목록을 정의
  >>> combo_list = [1, my_string_list, multi_list]
  >>> # 목록을 포함하는 목록을 한 줄로 정의
  >>> my_new_list = ['new_item1', 'new_item2', [1, 2, 3, 4], 'new_item3']
  >>> print my_new_list
  ['new_item1', 'new_item2', [1, 2, 3, 4], 'new_item3']
 
  >>> # 목록에서 원소를 얻기
  >>> my_string_list[0]
  'Hello'
  >>> my_string_list[2]
  'Lists'
 
  >>> # 음수 인덱스는 목록의 마지막 원소에서 시작하여 첫 항목 쪽으로 거슬러 감
  >>> my_string_list[-1]
  'Lists'
  >>> my_string_list[-2]
  'Jython'
 
  >>> # 썰기(썰기는 시작 인덱스의 원소는 포함하고 끝 인덱스의 원소는 제외한다는 점에 유의)
  >>> my_string_list[0:2]
  ['Hello', 'Jython']
 
  >>> # 썰기를 통해 목록의 얕은 사본을 생성
  >>> my_string_list_copy = my_string_list[:]
 
  >>> my_string_list_copy
  ['Hello', 'Jython', 'Lists']
 
  >>> # 목록에서 모든 다른 원소를 반환
  >>> new_list=[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
  >>> # 시작인덱스:끝인덱스:간격
  >>> # 이 예제는 한 칸 씩 이동(step)
  >>> new_list[0:10:1]
  [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
 
  >>> # 그리고 여기서는 두 칸 씩 이동
  >>> new_list[0:10:2]
  [2, 6, 10, 14, 18]
 
  >>> # 시작 인덱스를 비워두면 기본값이 0을 지정한 것과 같이 동작하며, 
  >>< # 끝 인덱스에 대해서는 목록의 길이가 기본값임
  >>> new_list[::2]
  [2, 6, 10, 14, 18]
 
  >>> # 목록의 원소를 수정. 이 경우는 9번 위치에 있는 원소를 수정함
  >>> new_list[9] = 25
  >>> new_list
  [2, 4, 6, 8, 10, 12, 14, 16, 18, 25]
 
  >>> # append 메소드를 사용하여 목록에 값들을 추가
  >>> new_list=['a','b','c','d','e','f','g']
  >>> new_list.append('h')
  >>> print new_list
  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
 
  >>> # 다른 목록을 기존 목록에 추가
  >>> new_list2=['h','i','j','k','l','m','n','o','p']
  >>> new_list.extend(new_list2)
  >>> print new_list
  ['a', 'b', 'c', 'd', 'e', 'f', 'g', ‘h’,'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
 
  >>> # 인덱스를 통해 특정 위치에 값을 삽입.
  >>> # 이 예제에서는 'c'를 목록에서 3 번째 위치에 추가
  >>> # (목록의 인덱스는 0부터 시작하므로, 인덱스 2가 실제로는 세번째 자리를 가리킴을 기억하라)
  >>> new_list.insert(2,'c')
  >>> print new_list
  ['a', 'b', 'c', 'c', 'd', 'e', 'f', 'g', 'h', ‘h’,'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
 
  >>> # 인덱스를 통해 특정한 위치로 목록을 삽입
  >>> another_list = ['a', 'b', 'c']
  >>> another_list.insert(2, new_list)
  >>> another_list
  ['a', 'b', [2, 4, 8, 10, 12, 14, 16, 18, 25], 'c']
 
  >>> # 썰기 표기법을 사용하여 목록 또는 순서의 일부를 덮어씀
  >>> new_listA=[100,200,300,400]
  >>> new_listB=[500,600,700,800]
  >>> new_listA[0:2]=new_listB
  >>> print new_listA
  [500, 600, 700, 800, 300, 400]
 
  >>> # 빈 썰기 표기법을 사용하여 목록을 다른 목록에 할당
  >>> one = ['a', 'b', 'c', 'd']
  >>> two = ['e', 'f']
  >>> one
  ['a', 'b', 'c', 'd']
  >>> two
  ['e', 'f']
 
  >>> # 시작과 종료 위치를 동일하게 하여 목록으로부터 빈 조각을 만들어낸다.
  >>> # 시작과 끝 위치를 동일하게 쓰는 한, 어느 위치든 상관 없음.
  >>> one[2:2]
  []
 
  >>> # 그 자체로는 별로 재미가 없다 - 빈 목록은 아주 쉽게 만들 수 있다.
  >>> # 이것에 대해 유용한 점은 이것을 빈 조각에 할당할 수 있다는 것이다.
  >>> # 이제, 'two' 목록을 'one'목록의 빈 조각에 할당함으로써 실제로는 'two' 목록을 'one' 목록에 삽입한다.
  >>> one[2:2] = two          # 'one' 목록의 원소 1과 2 사이를 'two' 목록으로 대체
  >>> one
  ['a', 'b', 'e', 'f', 'c', 'd']
 
  >>> # del 구문을 사용하여 값 또는 값의 범위를 목록으로부터 제거
  >>> # 모든 다른 원소가 이동하여 빈 공간을 채움에 유의
  >>> new_list3 = ['a','b','c','d','e','f']
  >>> del new_list3[2]
  >>> new_list3
  ['a', 'b', 'd', 'e', 'f']
  >>> del new_list3[1:3]
  >>> new_list3
  ['a', 'e', 'f']
 
  >>> # del 구문을 사용하여 목록을 제거
  >>> new_list3=[1,2,3,4,5]
  >>> print new_list3
  [1, 2, 3, 4, 5]
  >>> del new_list3
  >>> print new_list3
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'new_list3' is not defined
 
  >>> # pop과 remove 함수를 사용하여 목록으로부터 값을 제거
  >>> print new_list
  ['a', 'b', 'c', 'c', 'd', 'e', 'f', 'g', 'h',’h’, 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
 
  >>> # 인덱스가 2인 원소를 pop
  >>> new_list.pop(2)
  'c'
  >>> print new_list
  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',’h’, 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
 
  >>> # 목록에서 처음으로 나타나는 'h' 문자를 제거
  >>> new_list.remove('h')
  >>> print new_list
  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
 
  >>> # pop() 함수를 사용하는 유용한 예제
  >>> x = 5
  >>> times_list = [1,2,3,4,5]
  >>> while times_list:
  ...      print x * times_list.pop(0)
  ...
     5
    10
    15
    20
     25

꺼내온 뒤에 내용 없어짐(pop)


 2. list 함수 사용하기 

 


>>> # 어떤 주어진 값에 대한 인덱스를 반환
>>> new_list=[1,2,3,4,5,6,7,8,9,10]
>>> new_list.index(4)
3
 
>>> #  인덱스가 4인 원소의 값을 변경
>>> new_list[4] = 30
>>> new_list
[1, 2, 3, 4, 30, 6, 7, 8, 9, 10]
 
>>> # 이제, 값을 원상태로 되돌려놓자.
>>> new_list[4] = 5
>>> new_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
>>> # 이 목록에 중복된 값을 추가하고 인덱스를 반환
>>> # 처음 나타나는 값의 인덱스를 반환함에 유의
>>> new_list.append(6)
>>> new_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6]
>>> new_list.index(6)
5
 
>>> # 주어진 값과 동등한 원소의 갯수를 반환하도록 count() 함수를 사용
>>> new_list.count(2)
1
>>> new_list.count(6)
2
 
>>> # 목록의 값들을 정렬
>>> new_list.sort()
>>> new_list
[1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10]
 
>>> # 목록의 값들의 순서를 반대로
>>> new_list.reverse()
>>> new_list
[10, 9, 8, 7, 6, 6, 5, 4, 3, 2, 1]

3. tuple 
 - 변경할 수 없는 lit형
 - list형은 일반적으로 동일한 자료형으로 이루어진 항목들을
   list내에서 순차적으로 추출하는 용도로 사용되는 반면
 - tuple형은 서로다른 종류의 데이터형으로 이루어진 항목들을
   바로 풀어쓰는 언패킹 또는 색인을 매기는 용도로 사용한다.
 - []아닌 ()기호로 감싸거나 아예 감싸지 않는 방법으로 선언한다.
 
>>> # 빈 튜플 생성
>>> myTuple = ()
 
>>> # 튜플 생성하고 사용하기
>>> myTuple2 = (1, 'two',3, 'four')
>>> myTuple2
(1, 'two', 3, 'four')
 
>>> # 마지막에 쉼표를 써서 한 항목짜리 튜플을 생성하기
>>> myteam = 'Bears',
>>> myteam
('Bears',)
 
 - tuple은 변경할 수 없는 자료형(Immutable)이지만 튜폴항목의 
   list데이터 형은 변경이 가능한 데이터형이라면 해당 객체 내의
   변경이 가능하다.
 
 >>>t2 = [1,2,3],[4,5,6]
 >>>t2
 ([1, 2, 3], [4, 5, 6])
 >>>t2[0]
 [1, 2, 3]
 >>>t2[0] = [7,8,9]
Traceback (most recent call last):
  File "C:\Users\lecture\AppData\Local\Enthought\Canopy\User\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-56-28c2e5ed8f80>", line 1, in <module>
    t2[0] = [7,8,9]
TypeError: 'tuple' object does not support item assignment
 >>>t2[0][0] = 7
 t2
 ([7, 2, 3], [4, 5, 6])
 
 - 변수 movie에 4개의 서로 다른 자료형이 하나의 튜풀로 포장되었다.
   이개념 튜플패키징이라고 하다.
 >>>movie ='슈퍼맨',1234,'배트면',4321
 >>>movie
 
 - 반대로 아래 예제 처럼 튜플을 항목별로 각각 풀어서 할당하는 개념을 튜플 
   언패킹이라고 한다.
 >>>a,b,c,d = movie
 >>>a
 >>>b
 >>>c
 >>>d
 
4. SET 
 - 색인에 대한 순서가 없고 중복이 허용되지 않는 데이터들의 집합
 - set()함수로만 set생성이 가능하다.
 
>>> # 집합을 사용하기 위해서는 우선 모듈을 들여와야한다.
>>> from sets import Set
 
>>> # 다음의 구문을 써서 집합을 생성한다
>>> myset = Set([1,2,3,4,5])
>>> myset
Set([5, 3, 2, 1, 4])
 
>>> # 집합에 값을 추가. 자세한 내용은 표 2-7을 참조
>>> myset.add(6)
>>> myset
Set([6, 5, 3, 2, 1, 4])
 
>>> # 중복되는 원소의 추가를 시도
>>> myset.add(4)
>>> myset
Set([6, 5, 3, 2, 1, 4])
 
>>> # 두 개의 집합을 생성
>>> s1 = Set(['jython','cpython','ironpython'])
>>> s2 = Set(['jython','ironpython','pypy'])
 
>>> # 집합의 사본을 만듦
>>> s3 = s1.copy()
>>> s3
Set(['cpython', 'jython', 'ironpython'])
 
>>> # s1에는 속하지만 s2에는 속하지 않는 모든 원소를 포함하는 새로운 집합을 구함
>>> s1.difference(s2)
Set(['cpython'])
 
>>> # 각 집합의 모든 원소를 포함하는 새로운 집합을 구함
>>> s1.union(s2)
Set(['cpython', 'pypy', 'jython', 'ironpython'])
 
>>> # 각 집합에 속하되 양쪽 모두에는 속하지 않는 원소로 이루어진 새로운 집합을 구함
>>> s1.symmetric_difference(s2)
Set(['cpython', 'pypy'])
 
>>> # 세 개의 집합을 생성
>>> s1 = Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> s2 = Set([5, 10, 15, 20])
>>> s3 = Set([2, 4, 6, 8, 10])
 
>>> # s2로부터 임의의 원소를 제거
>>> s2.pop()
20
>>> s2
Set([5, 15, 10])
 
>>> # s1에 3과 동일한 원소가 존재하는 경우 폐기
>>> s1.discard(3)
>>> s1
Set([6, 5, 7, 8, 2, 9, 10, 1, 4])
 
>>> # s1과 s2 양쪽 모두에 속하는 원소들만을 가지도록 s1을 갱신
>>> s1.intersection_update(s2)
>>> s1
Set([5, 10])
>>> s2
Set([5, 15, 10])
 
>>> # s2의 모든 원소를 제거
>>> s2.clear()
>>> s2
Set([])
 
>>> # 집합 s3의 모든 원소를 포함하도록 s1을 갱신
>>> s1.update(s3)
>>> s1
Set([6, 5, 8, 2, 10, 4])

5. Dictionary
- 전체항목이 정렬되지 않는 키(key)와 값(Value)의 쌍으로 구성된 집합
 
>>> # 빈 사전 및 채워진 사전을 생성
>>> myDict={}
>>> myDict.values()
[]
 
>>> # 사전에 열쇠-값 쌍을 할당
>>> myDict['one'] = 'first'
>>> myDict['two'] = 'second'
>>> myDict
{'two': 'second', 'one': 'first'}
 
>>> # 빈 사전을 생성하고 사전을 채움
>>> mydict = {}
 
>>> # 사전에서 열쇠를 찾아봄
>>> 'firstkey' in mydict
False
 
>>> # 사전에 열쇠/값 쌍을 추가
>>> mydict['firstkey'] = 'firstval'
>>> 'firstkey' in mydict
True
 
>>> # 사전의 값들을 나열
>>> mydict.values()
['firstval']
 
>>> # 사전의 열쇠들을 나열
>>> mydict.keys()
['firstkey']
 
>>> # 사전의 길이(열쇠/값 쌍이 얼마나 들어있는지)를 표시
>>> len(mydict)
1
 
>>> # 사전의 내용을 출력
>>> mydict
{'firstkey': 'firstval'}
 
>>> # 원본 사전을 문자열 기반 열쇠를 가진 사전으로 대체
>>> # 다음의 사전은 하키 팀을 표현
>>> myDict = {'r_wing':'Josh','l_wing':'Frank','center':'Jim','l_defense':'Leo','r_defense':'Vic'}
>>> myDict.values()
['Josh', 'Vic', 'Jim', 'Frank', 'Leo']
>>> myDict.get('r_wing')
'Josh'
>>> myDict['r_wing']
'Josh'
 
>>> # 존재하지 않는 열쇠에 대한 값을 얻기 위해 시도
>>> myDict['goalie']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'goalie'
 
>>> # get()을 사용하여 존재하지 않는 열쇠에 대한 값을 얻기 시도
>>> myDict.get('goalie')p
>>>
 
>>> # 열쇠가 존재하지 않는 경우 기본 메시지를 표시
>>> myDict.get('goalie','Invalid Position')
'Invalid Position'
 
>>> # 사전의 항목들에 대하여 반복
>>> for player in myDict.iteritems():
...     print player
...
('r_wing', 'Josh')
('r_defense', 'Vic')
('center', 'Jim')
('l_wing', 'Frank')
('l_defense', 'Leo')
 
>>> # 열쇠와 값을 독립적인 개체에 할당한 다음 출력
>>> for key,value in myDict.iteritems():
...     print key, value
...
r_wing Josh
r_defense Vic
center Jim
l_wing Frank
l_defense Leo
 



5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160805: 101회차  (0) 2016.08.05
160804: 100회차  (0) 2016.08.04
160802: 98회차  (0) 2016.08.03
160801: 97회차  (0) 2016.08.01
160729: 96회차  (0) 2016.07.29
Posted by DAVID

160802: 98회차

Programming 2016. 8. 3. 09:46

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


프로젝트를 했습니다




5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160804: 100회차  (0) 2016.08.04
160803: 99회차  (0) 2016.08.03
160801: 97회차  (0) 2016.08.01
160729: 96회차  (0) 2016.07.29
160728: 95회차  (0) 2016.07.28
Posted by DAVID

160801: 97회차

Programming 2016. 8. 1. 10:08

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


파이썬 교육 시작


[01] Python 프로그래밍 시작-유래,특징,활용,장점

[01]Python 프로그래밍
1. Python의 유래
1) Python의 사전적 의미는 독이 없는 뱀으로 먹이를 몸으로 감아서 압사시키는 
   큰 뱀, 또는 그리스 신화에 나오는 악마 
2) Python 의 유래
    . 프로그래밍 언어로서 Python 이름의 유래는 1970년대에 영국 BBC에서 방영한  
      "Monty Python's Flying Circus" 방영 프로그램에서 유래되었다. 
      이 프로그램은  매우 어색하고 이상한 행동을 보이는 사람들을 쇼형태로 방영하여 
      많은 인기를  누렸다. 
    . 이 언어를 만든 Guido van Rossum이 이 프로그램의 대단한 팬이었기 때문이었다.
    . 1989년 12월 크리스마스 휴가를 보내고 있던 Guido는 휴가기간 동안 무엇인가  
      재미있게 할 수 있는 무언가를 찾고 있었다.
    . 연휴라서 연구실이 닫힌 상황에서 집에서 컴퓨터를 가지고 예전부터 생각하고 있었던
      인터프리터(interpreter)를 만들어 보기로 결심하였다.
    . 즉, Guido가 무료한 한때를 보내기 위하여 만들기 시작했던 언어가 지금 많은 
      사람들이 사용하는 Python 언어가 되었다. 
3) Python 의 출발
    . 파이썬의 기반은 80년대 초반에 Guido가 동료들과 함께 개발을 하였던 ABC라는
      언어이다.
    . 80년대에 ABC라는 언어는 최고의 교육용 언어로 알려졌었고 전문 프로그래머가 
      아닌 사람이 배우기 편하게 만들어진 아주 훌륭한 언어였다.
    . 그럼에도 불구하고 전문 프로그래머들에게는 거의 받아 들여지지도 않았고 잘 
      사용되지도 않았다.
    . 이는 프로그래밍이 대중화가 많이 되지 않은 상황에서 전문 프로그래머들에게 외면 
      받았을때에 나올수 있는 결과라고 볼수 있다.
    . Guido는 파이썬으로 실제 문제를 더욱더 쉽게 해결할 수있도록 설계하였으며 C언어나
      유닉스 쉘을 대신해서 좀 더 편하게 사용할 수 있는 언어를 개발하는 데 초점을
      맞추었다. 
4) Python 의 필요성 
    . 생산성이 높기 때문에 먼저 개발하고 나서 성능을 개선할 수 있다.
    . 개발을 먼저 할 시 장점 : 협업 시 비교하여 성능을 높이기 용이함 
2. Python 의 특징
    . 대화 기능의 인터프리터 언어  -> 마치 컴퓨터와 개발자가 대화하는듯한 느낌 
    . 동적인 데이터 타입 결정 지원  - 데이터 타입이 정해져 있지 않은 것 처럼 선언 가능

    ex) - 여기서는 제대로 안 되어있는데 들여쓰기가 중요하다.
    def add(a,b):     - 뭐가 들어 왔는가에 따라서 데이터 타입이 변환됨
    return a+b 
    print add(1,2)
    print add('abc', 'def') - "와 '의 구분이 명확하지 않음 - 하나 써도 문자열 두개 써도 문자열
    print add([1, 2, 3], [4, 5, 6]) 
    결과---------------------------------------
    3 
    abcdef
    [1, 2, 3, 4, 5, 6] 
 
    설명---------------------------------------
    def  → add 함수를 만드는 키워드 ?
    print → add 함수 수행 값을 반환한 것을 출력하는 것  ?
    문자열을 더하면 문자들이 합쳐짐 ?
    리스트 + 리스트 = 하나의 리스트 ?
    함수의 a와 b는 타입이 정해져 있지 않음. ? 
    타입은 실제로 값이 변수에 할당되는 순간에 정해짐 
    -----------------------------------------
    . 플랫폼 독립적 언어  
      - 윈도우에서 개발한 파이썬 소스코드를 맥과 리눅스에서 수행 가능 
      - C언어의 경우 소스코드를 컴파일을 다시 진행해야 함
    . 개발 기간 단축에 초점을 둔 언어 
    . 간단하고 쉬운 문법 
    . 고수준의 내장 객체 자료형 제공 
      - a 변수 → 리스트 
      - 리스트 : 서로 다른 객체들을 원소로 갖고, 순서가 부여된 자료구조형
      - 리스트 : 첫 번째, 두 번째 인덱싱을 할 수 있음  

- 자바로 치면 generic 타입 리스트 선언한 것처럼 사용할 수 있는 자료형.

    ex)
    a=[12, 'abcde', 4+2j, [3,4,5]]
    a.append('add')
    print a; 
    결과 ---------------------------------------
    [12, 'abcde', (4+2j), [3, 4, 5], 'add'] 
 
    . 메모리 자동 관리 
    . 쉬운 유지 보수 
    . 많은 수의 라이브러리 제공 
    . 짧아지는 코드 
      - C언어 또는 Java → 100라인,  파이썬 → 5~10라인 
      - 코딩시 필요한 모듈 끌어와 사용 가능 
    . 높은 확장성 
 
3. Python의 활용처 
    . 시스템 유틸리티 
      - 시스템 유틸리티: OS가 지원해야 하는 명령어 
      - 리눅스 → ls, DOS → dir, copy, move 
    . GUI 
      - wxpython, tkinter 
    . 게임 프로그래밍 
      - 파이썬 게임엔진: PyOpenGL PySDL PyGame Kivy PyOgre Panda3D 
        Cocos2D PySoy 
    . 웹 프로그래밍 
      - django 프레임워크 
    . 수치 프로그래밍 
      - numpy 및 pandas 모듈    
      - networks 모듈 
    . 데이터베이스 프로그래밍 
    . 기타 
      - 참고: http://mulgu.kr/73 
4. Python 의 장점
    . Guido가 생각했던 Python 문법적 특징은 들여쓰기를 철저하게 지키도록 언어를 
      설계했다는 점이다.
      - 파이썬은 들여쓰기를 안 할 경우 error 발생 → 들여쓰기 강제 
    . 이는 코드의 가독성을 현격히 높여준다.
    . C 언어에서처럼 {} 등의 괄호를 넣지 않기 때문에 프로그램을 좀더 깔끔하게 
      만들어준다. 
    . 파이썬 코드는 재사용하기가 쉽다. 
    . 코드의 분석이 쉽기 때문에 다른 사람이 작성한 코드를 받아서 작업하는 사람들이 훨씬 
      더 작업을 편하게 해준다. 
 

[02] Python 프로그래밍 시작-스크립트 언어의 이해
[01]스크립트 언어의 이해 
1. 스크립트 언어란 무엇인가?  - 인터프리터 형식으로 해석 / 실행이 될 수 있는 언어
   . 스크립트(scripts)의 사전적 의미: 
     - 연극의 대사등이 적혀 있는 스크립트에서 유래 
   . Script Language의 wikipedia 정의  
   (http://en.wikipedia.org/wiki/Scripting_language) :
   a programming language that supports scripts, programs written 
   for a special    run-time environment that can interpret 
   (rather than compile) and automate the execution of tasks 
   that could alternatively be executed one-by-one by 
   a human operator 
  . 소스코드 = 스크립트 
  . 연기자가 스크립트를 보고 연기 = 컴퓨터가 스크립트를 읽어 수행 
  . a special run-time environment = 수행시간 환경  
  . 해석과 수행을 함  
  . 라인 단위로 해석하여 수행함 
 
2. 컴파일 언어와 스크립트 언어와의 비교 
  . 컴파일(Compile) 방식의 언어에 의해 작성되는 응용 프로그램은 컴파일러에 의해 
    기계어로 번역된 채로 실행되기 때문에, 수정이 빈번하게 발생할 경우에는 수정 후 
    다시 컴파일을 해야 함.
  . 덩치가 큰 프로그램은 컴파일 시간이 꽤 길다. 즉, 간단한 수정에도 오랜 기간의 
    컴파일 시간이 요구된다. 

 
    - 리눅스나 맥은 .exe. 파일이 아니어도 실행파일로 존재 가능 
    - 컴파일러 언어 단점 : 자원을 많이 요구하고 시간 소요됨
    - special run-time environment 덕분에 단계가 많이 줄어듦  
    - special run-time environment  = 인터프리터 
 
  . 반면에 수정이 빈번하게 발생하는 경우에는 소스 코드를 한 줄 한 줄 읽어 바로 바로 
    실행하는 인터프리터 방식이 상당히 유리하다. 
  . 스크립트 소스코드를 컴파일 방식에 의해 중간 코드(Bytecode)로 우선 만들고,
    이를 다시 인터프리터 방식으로 해석하여 수행하는 방법도 종종 활용된다. 

 
    - 파이썬의 경우 두 방법 모두 활용 가능 
    - 바이트 코드(읽을 수 있는 언어)  ≠ 기계어 (이진수, 0, 1) 
 
3. 스크립트 언어의 장점 및 단점
  . 장점
    - 개발 시간이 단축된다. 
    - 소스 코드 수정이 빠르고 간단하게 이루어진다. 
    - 소스코드의 수정을 많이 요구될경우 → 스크립트 언어가 더 용이 
  . 단점
    - 중간 코드를 만드는 것은 간단하지만 그것을 실제로 실행시키는 
      것은 많은 작업을 필요로 한다.
    - 실행 시간이 오래 걸린다. 
  . special run-time environment = Java 가상머신 
  . Java → 컴파일 언어가 기본이지만 인터프리터 사용도 혼용  
  . 실행시간을 좀 더 단축하고자 수치분석이 많이 요구됨 
 
4. 대표적인 스크립트 언어
  . 브라우저에서 웹페이지를 동적으로 만들어주는 Javascript
  . Actionscript : flash 개발시 사용 
  . Perl : 요즘에 많이 사용 안함 
  . PHP : 동적인 웹 페이지 구현 시 많이 사용 
  . Lua, Ruby → 최근에 개발된 스크립트 언어 



[03] Python 개발 환경 구축 - Canopy
[01] Python 개발 환경 구축

1. Python 전용 통합개발환경(IDE) 사용 
 . Enthought Canopy 
   - 별도의 파이썬 설치 없이 아래 통합개발환경을 사용하면 자동으로 파이썬이 설치됨 
   - CANOPY EXPRESS (Free) 다운로드 사이트:    
     https://www.enthought.com/products/canopy/ 










  . 설치후 실행화면 








 
 . Python 실행 - Enthought Canopy 직접 활용 
   - 커맨드 창 (터미널) - ipython 명령어 이용 
     - python 이나 ipython  명령어 빠져나오는 방법 - Ctrl + Z




[04] Python 개발 환경 구축 - Eclipse

[01] Python 개발 환경 구축

1. Python 코딩 환경 구축 
  1) Enthought Canopy 설치 
  2) 이클립스 설치
  3) PyDev 플러그인 설치 

2. Eclipse 사용 
  1) 파이썬 설치
     - 파이썬 다운로드 사이트: https://www.python.org/downloads/
     - 본 강좌에서는 파이썬 2.7.x 버전 사용
     - Default 선택으로 설치합니다.


  

   

  

- 캐노피를 먼저 설치하면 이거 설치 안 해도 됨

2) 이클립스에서 Python 설치 

1. Help-> Eclipse Marketplace 
  - python 검색 
  - PyDev 선택후 설치
  - 설치 중간에 확인창 뜨면 체크하고 계속 진행 


 
2. Eclipse restart -> Window -> Open perspectiv -> PyDev 선택

 
3. Window -> Preference -> PyDev -> Interpreter-Python 
  - Python interpreters에 설정 추가
  - Auto Config를 이용하여 자동으로 추가
  - 시간이 소요된다.



 
4. File -> New -> Python 프로젝트 생성

    PythonTest  프로젝트 생성


5. PythonTest -> test01폴더생성 -> test.py 파일 생성

 coding ---------------------------------------------------
  print 4+5
  print "Hello World!" 
결과 ------------------------------------------------------
  9
  Hello World!


coding -----------------------------------------------------
  # -*- coding:utf-8 -*-
  print "홍길동 안녕하세요!" # 한글 주석
결과  --------------------------------------------------------
 
  - 한글깨짐 방지   # -*- coding:utf-8 -*-
  - # 주석

 
  - Python 버전알기
coding -------------------------------------------------------
import sys
print sys.version
print
print sys.version_info 

 
- Python 변수의 Type의 동적변화
coding --------------------------------------------------------
# -*- coding:utf-8 -*-
print 'Hello' 
print "Hi there!" 
a = 'My name is ' 
b = '홍길동' 
print a + b 
결과 -------------------------------------------------------------
Hello
Hi there!
My name is 홍길동


- 커맨트 창에서 실행하기
- prmonth() : 출력메소드
coding test01.py ---------------------------------------------------------------
 import calendar
 calendar.prmonth(2014, 11) 
-----------------------------------------------------------------------------------
- 커맨트 창 (터미널 창)에서 해당 폴더로 이동 후 다음 명령어 수행   
python test01.py 




- eclipse의 대화모드에서 파일 실행




 
- execfile('/python/workspace/Pythontest/test01/test01.py') 
   November 2014
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30




5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160803: 99회차  (0) 2016.08.03
160802: 98회차  (0) 2016.08.03
160729: 96회차  (0) 2016.07.29
160728: 95회차  (0) 2016.07.28
160727: 94회차  (0) 2016.07.27
Posted by DAVID

160729: 96회차

Programming 2016. 7. 29. 11:12

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것



0801 - 오전: 파이썬 교육 시작


0808 ~ 0809: no-sql 시작



해야할 포트폴리오: 오라클 작업 내용 / 스프링 기반 작업 내용 ( 작품집 ) 

 


[27] 개발자 테스트
[01] 개발자 테스트

▶ 학습 목표 
요구사항대로 응용소프트웨어가 구현되었는지를 검증하기 위해서 테스트
케이스를 작성하고, 
통합테스트를 수행하여 결함을 발견하고 결함을
조치할 수 있다.
 
 
1. 코드 관련 개발시에 많이 사용되는 단위 테스트 툴은 JUNIT 입니다.
 
 
2. 소프트웨어 테스트에 대한 개요
1) 테스팅은 일반적으로 작업이 끝난 후, 처음에 요구된 것과 현재 상태의
   차이를 발견하기
 위해 수행하는 활동이다.
2) 제품이 만들어지고 난 후 기능이 정상적으로 작동하는지 테스트하는
   활동을 말한다.
3) 테스팅은 동작과 성능, 안정성을 사용자가 요구하는 수준을 맞추었는지
   테스트하는 활동을 말한다.
4) 테스팅은 결함을 발견하는 작업이며 디버깅은 발견된 결함을 수정하는
   작업을 말한다.
 
 
3. 테스트의 필요성
1) 소프트웨어가 올바르게 동작하지 않는 경우 다양한 문제가 발생하며,  
  이로 인한 피해는 
금전적인 손실이 발생한다.
2) 버그있는 소프트웨어는 시간의 낭비, 비즈니스 이미지 손상, 그리고
   부상이나 사망에 
이르는 심각한 문제가 발생 할 수 있다.
3) 코드에 결함이존재하면 작동해야할 상황을 판단하기 어려워져 보안상에
  문제가 
발생할 수 있다.
4) 결함은 인간이 오류를 범하기 쉽기 때문에 발생하며, 시간적인 압박,
  복잡한 코드, 
기반 환경의 복잡성으로 발생할 수 있다.
 
 
4. 테스팅의 분류
1) 프로그램의 기능이 정상적으로 작동하는지에 중심을둔 테스트 기법은
   블랙박스 기법이다.
2) 프로그램의 원시 프로그램 소스가 지정된 규칙을 지켰는지에 중심을둔
   테스트 기법은 
화이트박스 기법이다.

   
 
3) 동적 테스트팅이란 실제 구현된 시스템을 실행하여 테스트하는 것을
   말한다.
4) 정적 테스팅은 실제 시스템이 구현되기전에 요구사항 정의서, 설계서,
   소스코드등의 
개발 산출물을 테스는하는 것을 말한다.
 
 
5. 정적 분석 도구를 통해 발견되는 전형적인 결함
1) 정의되지 않은 값으로 변수 참조
2) 사용되지 않는 변수
3) 사용되지 않는 죽은 코드
4) 코딩 표준 위반
5) 보안 취약성
 
 
6. 통합 테스팅에 대한 개요
1) 백본(Backbone) 방식은 가장 중요하고 리스크가 높은 모듈로 초기
   통합을 구성한다.
2) 빅뱅(Big Bang) 방식은 모든 테스트 모듈을 동시에 통합한다.
3) 상향식(Bottom Up) 방식은 최하위 모듈부터 점진적으로 모듈을 통합하며
   테스트한다.
4) 하향식(Top Down) 방식은 최상위 모듈부터 통합해가면서 테스트한다.
 
 
7. 통합 테스팅 방식에 대한 장점의 비교
1) 백본(Backbone) 방식은 결함 격리 쉬움, 리스크(위험도)가 높은 결함을 조기에 발견 할 수 있다.
2) 빅뱅(Big Bang) 방식은 단시간 테스트가 가능하다.
3) 상향식(Bottom Up) 방식은 결함 격리가 쉽고 하위 모듈 테스트가 가능
   하다.
4) 하향식(Top Down) 방식은  결함 격리가 쉽고 설계상의 결함을 조기에
   발견할 수 있다.
 
** 통합테스트 수행 방법 분류


 
8. 대부분의 SI 프로젝트에서 통합테스트 수행 방법은 수행 절차의 간편함과      효율적인 시간 사용을 위해서 Big Bang 방법을 사용한다.
 
 
9. 개발자 통합 테스트 절차
① 테스트 계획을 점검한다.
② 통합테스트를 위한 테스트 환경을 구축한다.
③ 각 기능별 시스템 간 연결 테스트를 수행한다.
④ 테스트시 발생된 문제는 수정하여 반영한다.
⑤ 테스트 완료 결과를 보고한다.  
 
 
10. 결함의 분류
1) 요구사항 미준수등 기획시 유입되는 결함.
2) 설계 표준 미준수등 설계시 유입되는 결함.
3) 코딩 표준 미준수등 코딩시 유입되는 결함.
4) 팀간 의사소통 부족으로 인한 테스트 부족으로 유입되는 결함.

5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160802: 98회차  (0) 2016.08.03
160801: 97회차  (0) 2016.08.01
160728: 95회차  (0) 2016.07.28
160727: 94회차  (0) 2016.07.27
160726: 93회차  (0) 2016.07.26
Posted by DAVID

160728: 95회차

Programming 2016. 7. 28. 15:55

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


[28] 제품 소프트웨어 패키징

[01] 제품 소프트웨어 패키징

▶ 학습목표 
개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 
필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하며, 제품 소프트웨어에 대
한 패치 개발과 업그레이드를 위해 버전 관리를 수행할 수 있다. 


1. 제품 소프트웨어 패키징의 개념

1) 개발이 완료된 제품 소프트웨어를 기준으로 한다.
2) 고객에게 전달하기쉬운 형태로 패키징하는 것을 말한다.
3) 설치와 사용에 필요한 제반 절차 및 환경등의 내용을 포함한다.
4) 제품 메뉴얼이 포함되며, 패치 개발과 업그레이드를 위한 버전 관리 기능도 포함한다.


2. 제품 소프트웨어의 모듈화의 장점

1) 프로그램의 효율적인 관리 및 성능 향상
2) 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
3) 소프트웨어 시험, 통합, 수정시 용이성 제공
4) 기능의 분리가 가능하고 인터페이스가 단순
5) 모듈 재사용 가능으로 개발과 유지보수가 용이


3. 설치 매뉴얼 작성의 기본 사항

1) 설치 매뉴얼은 개발자 기준이 아닌 사용자 중심으로 작성한다.
2) 최초 설치 진행부터 완료까지 순차적으로 진행한다.
3) 각 단계별 메시지및 해당 화면을 순서대로 전부 캡쳐하여 설명한다.
4) 설치 중간에 이상 발생시 해당 메시지 및 에러에 대한 내용을 분류하여 설명한다.


4. 사용자 매뉴얼 작성 단계



1) 작성 지침 정의: 매뉴얼 작성을위한 지침을 설정한다.
2) 사용자 매뉴얼 구성 요소 정의: 제품 소프트웨어의기능, 구성 객체 목록, 객체별 메소드, 사용 예제, 환경 설정 방법
3) 구성 요소별 내용 작성: 구성 요소별 내용을 작성한다.
4) 사용자 매뉴얼 검토: 작성된 사용자 매뉴얼이 개발된 제품의 기능을 제대로 설명하는지, 누락여부 등을 검토


5. 사용자 메뉴얼 기록 항목



1) 제품 명칭
2) 제품 소프트웨어의 모델명
3) 기록 항목에 대한 문서 번호
4) 제품 번호
5) 구입 날짜


6. 사용자 매뉴얼 작성시 기본 사항

1) 제품 소프트웨어 개요: 제품 소프트웨어의 주요 기능 및 UI 설명
2) 제품 소프트웨어 사용: 제품 소프트웨어의 사용을 위한 최소 환경, PC 사양, OS등 명시
3) 제품 소프트웨어 관리: 
제품 소프트웨어의 사용 종료 및 관리등에 대한 기재
4) 모델, 버전별 특징: 제품 구별을 위한 모델, 버전별 UI 및 기능의 차이 기술
5) 기능, 인터페이스 특징: 제품의 기능 및 인터페이스 기술
6) 제품 소프트웨어 구동 환경: 개발 언어 및 호환 OS


7. 제품 소프트웨어 형상 관리의 역활

1) 이전 버전이나 현재 버전에 대한 정보에 언제든지 접근 가능하여 배포본 관리에 유용함.
2) 불필요한 사용자의 소스 수정을 제한
3) 동일한 프로젝트에대해 여러 개발자 동시 개발 가능
4) 에러가 발생 했을경우 빠른 시간내에 복구 가능


8. 형상관리 소프트웨어 목록

1) Thr CVS팀의 CVS
2) 아파치 소프트웨어 재단의 Subversion
3) 리누스 토르발스의 Git
4) IBM의 ClearCase


9. 버전관리 용어



1) Add: 버전 관리가 되지 않은 최초의 생성 프로젝트를 Git 저장소에 저장하는 기능
2) 체크 아웃(Check-out): 신규 개발자가 프로젝트 참여를 위해 프로젝트를 가져오는 기능

3) 원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께
  공유하기 위한 저장소
4) 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소
5) 예치(커밋, Commit): 저장소에 파일을 저장
6) update: 저장소에서 다른 개발자가 작업한 소스를 가져오는 기능
7) 동기화(Update): Commit 작업 후 저장소에 최종 저장하여 다른 개발자에게 출력
8) 차이(Diff) :새로운 개발자가 추가된 파일의 수정 기록(Change Log)을 보면서 기본 개발자가 처음 추가한 파일과
   이후 변경된 파일의 차이를 본다(Diff)
9) Github: Github 회사에서 운영중이며 Git의 기능을 웹상에서 구현한 웹호스팅 시스템
10) Github는 무료이나 프로젝트를 공개해야하며, 비공개로 진행시는 10$(10,000원) 안팍의 비용을 지불함.



10. Git의 주요 기능

1) 리눅스 커널의 버전 콘트롤을 하는 Bitkeeper를 대체하기위해 탄생
2) 속도에 중심을 둔 분산형 버전관리 시스템
3) 대형 프로젝트에서 안정적인 기능을 발휘함.
4) SVN과 다르게 Commit은 로컬 저장소에 저장되고 Push를 통해 원격 저장소에 저장됨.
5) 서버에서 소스를 수신 받을시 Pull 기능을 사용함.



5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160801: 97회차  (0) 2016.08.01
160729: 96회차  (0) 2016.07.29
160727: 94회차  (0) 2016.07.27
160726: 93회차  (0) 2016.07.26
160725: 92회차  (0) 2016.07.25
Posted by DAVID

160727: 94회차

Programming 2016. 7. 27. 17:31

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것





5. 수업

진도: 

hw: 


6. 할것


오전: 코딩

오후: 시험공부 


플랜으로 가자


'Programming' 카테고리의 다른 글

160729: 96회차  (0) 2016.07.29
160728: 95회차  (0) 2016.07.28
160726: 93회차  (0) 2016.07.26
160725: 92회차  (0) 2016.07.25
160722: 91회차  (0) 2016.07.22
Posted by DAVID

160726: 93회차

Programming 2016. 7. 26. 12:17

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것



public int EmailCheck(String email){ }

public int idCheck(String companyID){ }

public int passwdCheck(String companyID , String passwd){ }




public int create(Object dto) throws Exception { }

public List list(Map map) throws Exception { }

public Object read(Object pk) throws Exception { }

public int update(Object dto) throws Exception { }

public int delete(Object pk) throws Exception { }

public int total(Map map) throws Exception { }



5. 수업

진도: 

hw: 


6. 할것



'Programming' 카테고리의 다른 글

160728: 95회차  (0) 2016.07.28
160727: 94회차  (0) 2016.07.27
160725: 92회차  (0) 2016.07.25
160722: 91회차  (0) 2016.07.22
160721: 90회차  (0) 2016.07.21
Posted by DAVID
이전페이지 다음페이지
블로그 이미지

by DAVID

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

링크

카테고리

PC (112)
Programming (109)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
DAVID's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

PC

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • PC (112)
    • Programming (109)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바