4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 140 ~ 148

2024. 2. 6. 23:58
728x90

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 함수 코드;}

 

 

 

 

 

728x90

BELATED ARTICLES

more