4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 140 ~ 148
140. Python의 기초
1) 기본 문법
- 자료형 선언이 없다
- 세미콜론 필요없다
- 변수에 연속하여 저장 가능
- if, for와 같은 코드 블록 포함 명령문 작성시 코드블록은 콜록(:)과 여백으로 구분.
- 같은 수준의 코드들은 반드시 동일한 여백
2) 입출력 함수
- input() : 키보드로 입력받아 문자열로 취급되어 저장.
- print()
a = intput('입력하세요.')
x, y = input().split('-')
print(출력값1, 출력값2, ..., sep=분리문자, end=종료문자)
print(82, 24, sep='-', end=',') //82-24,
print(서식문자열 % (출력값1, 출력값2,...))
print('%-8.2f' % 200.20)
- 형변환
변수 = int(input()) //정수로 변환
변수 = float(input()) //실수로 변환
변수1, 변수2, ... = map(int, input().split()) //정수로 변환
변수1, 변수2, ... = map(float, input().split()) //실수로 변환
3) 리스트
: 하나의 리스트에 정수, 실수, 문자열 등 다양한 자료형을 섞어서 저장 가능.
- 리스트 위치는 0부터 시작.
리스트명 = [값1, 값2, ...]
리스트명 = list([값1, 값2, ...])
a = [10, 'mike', 23.45]
4) 딕셔너리
: 연관된 값을 묶어서 저장하는 용도로 사용.
- 딕셔너리는 사용자가 원하는 값을 키로 지정해 사용.
딕셔너리명 = {키1:값1, 키2:값2, ...}
딕셔너리명 = dict({키1:값1, 키2:값2, ...})
a = dict({'이름':'홍길동', '나이':25, '주소':'서울'})
5) Range
: 연속된 숫자를 생성하는 것. (리스트, 반복문 등에서 많이 사용됨.)
range(최종값) //0에서 최종값-1까지 숫자 생성
range(초기값, 최종값) // 초기값에서 최종값-1까지 숫자 생성
range(초기값, 최종값, 증가값) //초기값에서 최종값-1까지 증가값만큼 증가하면서 숫자 생성.
a = list(range(5))
a = list(range(4, 9))
a = list(range(1, 15, 3))
a = list(range(9, 4, -1)) //9에서 5까지 -1씩 감소하는 숫자 리스트
6) 슬라이스
: 문자열이나 리스트와 같은 순차형 객체에서 일부를 잘라 반환
객체명[초기위치:최종위치] //초기위치에서 최종위치-1까지의 요소
객체명[초기위치:최종위치:증가값]
객체명[:] 또는 객체명[::] //객체의 모든 요소 반환
객체명[초기위치:] //초기위치에서 마지막 위치까지
객체명[:최종위치] //0번째 위치부터 최종위치-1까지의 요소
객체명[::증가값] //0번째 위치부터 마지막 위치까지 증가값만큼 증가하며 반환
141. Python의 활용
1) if문
if 조건:
실행문장
if 조건:
실행문장1
else:
실행문장2
if 조건1:
실행문장1
elif 조건2:
실행문장2
elif 조건3:
실행문장3
//...
else:
실행문장4
2) for문
// range 활용
for 변수 in range(최종값):
실행문장
for i in range(10):
sum += i
// 리스트 활용
for 변수 in 리스트
실행문장
a = [35, 55, 65, 93, 45]
hap = 0
for i in a:
hap += i
avg = hap / len(a)
print(hap, avg)
3) while문
while 조건:
실행문장
i, hap = 0, 0
while i<5:
i+=1
hap+=i
print(hap)
4) 클래스
// 정의 형식
class 클래스명:
실행문장
def 메소드명 (self, 인수):
실행문장
return값
// 객체의 선언형식
변수명 = 클래스명()
class Cls:
x, y = 10, 20
def chg(self):
temp = self.x
self.x = self.y
self.y = temp
a=Cls()
print(a.x, a.y)
a.chg()
print(a.x, a.y)
// 클래스 없이 메소드만 단독 사용 가능.
def calc(x,y):
x*=3
y/=3
print(x, y)
return x
a, b = 3, 12
a = calc(a,b)
print(a,b)
142. 절차적 프로그래밍 언어
: 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어.
- 실행속도 빠름
- 같은코드 복사하지 않고 다른 위치에서 호출 가능
- 모듈 구성이 용이, 구조적인 프로그래밍 가능
- 프로그램 분석 어려움
- 유지보수, 코드 수정 어려움
- C, ALGOL, COBOL, FORTRAN
143. 객체지향 프로그래밍 언어
: 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 소프트웨어를 개발할 때 객체들을 조립하여 프로그램을 작성할 수 있도록 한 프로그래밍 기법.
1) 장단점
- 상속을 통한 재사용, 시스템 확장 용이
- 코드 재활용성 높음
- 자연적인 모델링에 의해 분석, 설계 쉽고 효율적
- 사용자-개발자 이해 쉽게 해줌
- 대형 프로그램 작성이 용이
- 개발 및 유지보수 용이
- 정형화된 분석 및 설계 방법이 없다
- 구현 시 처리 시간이 지연됨.
2) 구성요소
- 객체 : 데이터(속성)과 이를 처리하기 위한 연산(메서드)을 결합.
- 클래스 : 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소.
- 메시지 : 객체들 간 상호작용에 사용되는 수단. 객체의 메서드를 일으키는 외부의 요구 사항.
3) 특징
- 캡슐화 : 데이터와 데이터 처리 함수를 하나로 묶는 것. (재사용이 용이)
- 정보 은닉 : 다른 객체에서 자신의 정보를 숨기고, 자신의 연산만을 통해 접근을 허용하는 것.
- 추상화 : 불필요한 부분 생략, 객체 속성 중 가장 중요한 것에만 중점을 두어 모델화하는 것.
- 과정 추상화 : 자세한 수행과정 정의 X
- 데이터 추상화 : 데이터의 세부 속성이나 용도를 정의X
- 제어 추상화 : 이벤트 발생의 정확한 절차나 방법을 정의 X
- 상속성 : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것. (extends)
- 다형성 : 하나의 메시지에 대해 각 객체가 가지고 있는 고한 방법으로 응답할 수 있는 능력. (implements)
144. 스크립트 언어
: HTML문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것.
- 데이터베이스 처리 작업을 수행하기 위해 주로 사용.
- 클라이언트용 스크립트 언어 : 클라이언트 웹 브라우저에서 해석되어 실행됨. (자바스크립트, VB 스크립트)
- 서버용 스크립트 언어 : 서버에서 해석되어 실행된 후 결과만 클라이언트로 보냄. (ASP, JSP, PHP, 파이썬)
1) 장단점
- 컴파일 없이 바로 실행 > 결과 바로 확인
- 개발 시간 짧음
- 소스코드 쉽고 빠르게 수정
- 실행 속도가 느리다
- 런타임 오류 많이 발생.
2) 종류
- 자바스크립트 : 프로토타입 개념 활용 가능
- VB 스크립트 (Visual Basic Script) : Active X를 사용하여 컨트롤 가능
- ASP (Active Server Page) : 서버 측에서 동적으로 수행되는 페이지. 윈도우 계열에서만 가능.
- JSP (Java Server Page) : JAVA로 만들어진 서버용 스크립트. 다양한 운영체제에서 가능
- PHP (Professional Hypertext Preprocessor)
- Python : 대화형 인터프리터 언어. 객체지향 기능 지원
- 쉘 스크립트 : 유닉스/리눅스 계열의 쉡에서 사용되는 명령어들의 조합. .sh가 붙음.
- Basic : 절차지향/ 대화형 인터프리터 언어.
145. 선언형 언어
: 프로그램이 수행해야 하는 문제를 기술하는 언어.
- 목표를 명시하고 알고리즘은 명시하지 않는다. (HTML)
- 함수형 언어 : 수학적 함수를 조합하여 문제를 해결하는 언어. 알려진 값을 함수에 적용하는 것을 기반으로 함.
- 논리적 언어 : 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행.
1) 장단점
- 가독성, 재사용성이 좋음
- 작동순서 구체적으로 작성하지 않아 오류가 적음
- 프로그램 동작을 변경하지 않고도 관련 값을 대체할 수 있음.
2) 종류
- HTML
- LISP : 인공지능 분야에 사용되는 언어. 기본 자료구조가 연결 리스트 구조. 재귀호출을 많이 사용.
- PROLOG : 인공지능 분야에서의 논리적인 추론이나 리스트 처리 등에 주로 사용.
- XML : 사용자가 새로운 태그 정의 가능. 문서 내용이 독립적
- Haskell : 코드 간결. 에러 발생 가능성 낮음.
146. 라이브러리
: 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아놓은 집합체.
- 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리. (여러 종류의 모듈이나 패키지 형태)
- 외부 라이브러리 : 개발자들이 필요한 기능들을 만들어 인터넷 등에 공유해 놓은 것. (다운받아 설치 후 사용)
1) C언어의 표준 라이브러리
: 헤더 파일로 제공한다. 헤더 파일을 사용하려면 #include <stdio.h>와 같이 include문을 이용해 선언한 후 사용해야 한다.
- stdio.h : 데이터 입출력에 사용되는 기능들 제공 (printf, scanf, fprintf, fscanf, fclose, fopen)
- math.h : 수학 함수 제공 (sqrt, pow, abs)
- string.h : 문자열 처리에 사용되는 기능들 제공(strlen, strcpy, strcmp)
- stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공. (atoi, atof, strand, rand, malloc, free)
- time.h : 시간 처리에 사용되는 기능들 제공 (time, clock)
2) JAVA 표준 라이브러리
: 라이브러리를 패키지에 포함하여 제공. import문을 이용해 선언한 후 사용.
- java.lang : 기본적으로 필요한 인터페이스, 자료형, 예외처리 등에 관련된 기능 제공. import문 없이도 사용 가능 (String, System. Process, Runtime, Math, Error)
- java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리 등 (Date, Calender, Random, StringTokenizer
- java.io : 파일 입출력과 관련된 기능 제공.(InputStream, OutputStream, Reader, Writer)
- java.net : 네트워크와 관련된 기능 제공 (Socket, URL, InetAddress)
- java.awt : 사용자 인터페이스와 관련된 기능을 제공 (Frame, Panel, Dialog, Button, Checkbox)
147. 예외 처리
: 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해놓은 처리 루틴을 수행하도록 하는 것.
- 프로그램을 종료시키거나, 로그를 남기도록 하는 것.
1) JAVA의 예외처리
: 예외를 객체로 취급하며, 예외 관련 클래스를 java.lang 패키지에서 제공.
- try ~ catch 문을 이용해 예외 처리. (중괄호{} 생략 불가)
- ClassNotFoundException : 클래스 찾지 못한 경우
- NoSuchMethod Exception : 메소드 찾지 못한 경우
- FileNotFoundException : 파일 못찾음
- InterruptedIOException : 입출력 처리가 중단됨
- ArithmeticException : 0으로 나누는 등의 산술 연산에 대한 예외
- IllegalArgumentException : 잘못된 인자를 전달한 경우
- NumberFormatException : 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환
- ArrayIndexOutOfBoundException : 배열의 범위를 벗어난 접근을 시도
- NegativeArraySizeException : 0보다 작은 값으로 배열의 크기를 지정
- NullPointerException : 존재하지 않는 객체를 참조한 경우
148. 프로토타입
: 함수 원형. 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것.
- 본문이 없다는 점을 제외하고 함수 정의와 형태가 동일.
1) C언어에서의 프로토타입 선언
- main() 함수 바깥쪽에 선언해야 함.
int func(int i, int j){
func 함수 코드;}
main() {
main 함수 코드;}
//혹은
int func(int i, int j)
main() {
main 함수 코드;}
int func(int i, int j){
func 함수 코드;}
'Programming > 정처기' 카테고리의 다른 글
4과목 프로그래밍 언어 활용 응용 SW 기초 기술 활용 157 ~ 165 (2) | 2024.02.12 |
---|---|
4과목 프로그래밍 언어 활용 응용 SW 기초 기술 활용 149 ~ 156 (1) | 2024.02.11 |
4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 132 ~ 139 (0) | 2024.02.05 |
4과목 프로그래밍 언어 활용 서버 프로그램 구현 127 ~ 131 (1) | 2024.02.05 |
3과목 데이터베이스 구축 SQL 활용 114 ~ 120 (1) | 2024.02.04 |