본문 바로가기

정보처리기사_실기

정보처리기사 156 ~ 162 (Python 활용 ~ 예외 처리)

 

  • Python
    • 객체지향 기능을 스크립트 언어
  • Python 예제
① x = input('입력 :')
② a = [ 'abc123', 'def456', 'ghi789' ]
③ a.append(x)
④ a.remove('def456')
⑤ print(a[1][-3:], a[2][:-3], sep = ',')
⑥ for i in range(3, 6) : 
⑦	 print(i, end = ' ')
  • ① : 화면에 입력 : 이 출력되고 입력을 기다림
  • ② : 리스트 a 에 abc123, def456, ghi789를 초기값으로 지정
  • ③ : a 리스트의 마지막에 x의 입력값(xyz321) 을 추가
  • ④ : a 리스트에서 def456을 삭제하고 요소들을 앞으로 하나씩 이동
  • ⑤ : a[1]과 a[2]를 슬라이스하고 쉼표(,)로 구분하여 출력
    • a[1][-3:]
      • a[1]의 문자열 ghi789의 -3 위치부터 마지막 요소까지 출력 → 789 출력
    • a[2][:-3]
      • a[2]의 문자열 xyz321의 맨 처음 요소부터 -4까지의 요소 출력 → xyz 출력
    • 결과 : 789, xyz
  • ⑥ : 3에서 5(6-1)까지 순서대로 i에 저장하며 ⑦을 반복수행
  • ⑦ : i의 값을 출력하고 종료문자로 공백 한칸 출력
  • 결과
    • 789, xyz
    • 3 4 5

 

  • Python 예제 2
 ① a = {'apple', 'lemon', 'banana'}
 ② a.update( {'kiwi', 'banana'} )
 ③ a.remove('lemon')
 ④ a.add('apple')
 ⑤ for i in a :
 ⑥ 		print(i)
  • ① : 세트 a를 선언하면서 초기값으로 apple, lemon, banana 지정
  • ② : a 세트에 새로운 세트를 추가하여 확장 → a 세트에 kiwi 추가 (banana는 이미 있음)
  • ③ : a 세트에서 lemon을 제거
  • ④ : a 세트에 apple을 추가 → 이미 apple이 있으므로 변경 없음
  • ⑤ : a 세트의 각 요소의 값을 차례로 i에 저장하면서 a 세트의 요소 수 많큼 반복수행
  • ⑥ : i의 값을 출력한 후 커서를 다음 줄로 옮김
  • 결과
    • apple
    • banana
    • kiwi
  • Python 리스트 관련 주요 메소드
    • pop() : 리스트의 ()위치의 값을 출력하고 해당 요소를 삭제
    • index() : 리스트에서 ()값이 저장된 요소의 위치 반환
    • count() : 리스트에서 ()값이 저장되어 있는 요소들의 개수를 반환
    • extend() : 리스트의 끝에 새로운 리스트를 추가하여 확장
    • reverse() : 리스트의 순서를 역순으로 뒤집음
    • sort() : 리스트를 정렬, 기본값은 오름차순
      • Ture : 내림차순 // False : 오름차순
    • copy() : 리스트 복사

 

 

  • 절차적 프로그래밍 언어
    • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어
    • 데이터를 중심으로 프로시저를 구현
    • 종류
      • C
        • 1972년 미국 벨 연구소의 데니스 리치에 의해 개발
        • 고급 프로그래밍 언어 이면서 저급 프로그램 언어의 특징을 모두 갖춤
          • 저급 언어 : 기계 친화적 언어
          • 고급 언어 : 인간 친화적 언어
        • 이식성이 좋음
      • ALGOL
        • 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
        • PASCAL과 C언어의 모체
      • COBOL
        • 사무 처리용 언어
        • 4개의 Division(Identification, Environment, Data, Procedure)로 구성
      • FORTRAN
        • 과학 기술 계산용 언어
  • 객체 지향 프로그래밍 언어
    • 현실세계의 개체를 하나의 객체로 만들고, 그 객체들을 조립해서 프로그램을 작성하는 기법
    • 종류
      • JAVA
        • 분산 네트워크 환경에 적용 가능
        • 멀티 스레드 기능 제공
        • 운영체제 및 하드웨어에 독립적이고 이식성 좋음
      • C++
        • C언어에 객체지향 개념을 적용한 언어
      • Smalltalk
        • 1세대 객체지향 프로그래밍 언어
        • 최초로 GUI를 제공
  • 스크립트 언어
    • HTML문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어
    • 분류
      • 클라이언트 사이드 스크립트 언어
        • 클라이언트의 웹 브라우저에서 해석되어 실행
        • 종류
          • 자바 스크립트 (Java Script)
            • 웹 페이지의 동작을 제어하는데 사용
            • 클래스가 존재하지 않으며 변수 선언도 필요 없음
            • 서버에서 데이터를 전송할 때 아이디, 비빈번호, 수량 등의 입력 사항을 확인하기 위한 용도로 많이 사용
          • VB 스크립트 (Visual Basic Script)
            • 마이크로소프트 사에서 자바스크립트에 대응하기 위해 제작
            • Active X를 사용하여 마이크로소프트 사의 애플리케이션들을 컨트롤 할 수 있음
              • Active X : 마이크로소프트 사에서 윈도우 환경의 응용 프로그램과 웹을 연결하기 위해 개발한 기술
      • 서버 사이드 스크립트 언어
        • 서버에서 해석되어 실행된 후 결과만 클라이언트로 보냄
        • 종류
          • ASP (Active Server Page)
            • 서버 특에서 동적으로 수행되는 페이지를 만들기 위한 언어
            • 마이크로소프트 사에서 제작
            • 윈도우 계열에서만 수행 가능
          • JSP (Java Server Page)
            • JAVA로 만들어진 서버용 스크립트 언어
            • 다양한 운영체제에서 사용 가능
          • PHP (Professional Hypertext Preprocessor)
            • Linux, Unix, Windows 운영체제에서 사용 가능한 서버용 스크립트 언어
            • C, Java와 문법이 유사, 웹 페이지 제작에 많이 사용
          • 파이썬 (Python)
            • 객체지향 기능을 지원하는 대화형 인터프리터 언어
              • 인터프리터 언어 : 원시 프로그램을 줄 단위로 번역하여 바로 실행해주는 언어
            • 플랫폼에 독립적
          • 쉘 스크립트
            • 유닉스/리눅스 계열의 쉘(Shell)에서 사용되는 명령어들의 조합으로 구성
          • Basic
            • 절차지향 기능을 지원하는 대화형 인터프리터 언어
  • 선언형 언어
    • 프로그램이 수행해야 할 문제를 기술하는 언어
    • 목표를 명시하고 알고리즘은 명시하지않음
    • 분류
      • 함수형 언어
        • 수학적 함수를 조합하여 문제를 해결하는 언어
        • 재귀호출이 자주 사용
        • 종류 : LISP
      • 논리형 언어
        • 기호 논리학에 기반을 둔 언어
        • 반복문이나 선택문을 사용하지 않음
        • PROLOG
    • 종류
      • LISP
        • 인공지능 분야에 사용되는 언어
        • 기본 자료 구조가 연결 리스트 구조
        • 재귀호출을 많이 사용
      • PROLOG
        • 논리학을 기초로 한 고급언어
        • 인공지능 분야에서 논리적인 추론이나 리스트 처리 등에 주로 사용
      • HTML
        • 인터넷의 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
      • XML
        • 기존 HTML의 단점을 보완
        • 사용자가 새로운 태그(Tag) 정의 가능
      • Haskell
        • 함수형 프로그래밍 언어
        • 부작용이 없음
  • 명령형 언어
    • 문제를 해결하기 위한 방법을 기술하는 언어
    • 폰노이만 구조에 개념적인 기초
    • 종류 : FORTRAN, COBOL, C, JAVA 등..
  • 라이브러리
    • 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
    • 분류
      • 표준 라이브러리
        • 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리
        • 여러 종류의 모듈이나 패키지 형태
      • 외부 라이브러리
        • 개발자들이 필요한 기능들을 만들어 공유해 놓은 라이브러리
        • 외부 라이브러리를 다운받아 설치한 후 사용
    • C언어의 대표적인 표준 라이브러리
      • 헤더파일로 제공
      • #include 문을 이용
      • 종류
        • stdio.h : 데이터의 입.출력에 사용되는 기능 제공
        • math.h : 수학 함수 제공
        • string.h : 문자열 처리에 사용되는 기능 제공
        • stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공
        • time.h : 시간 처리에 사용되는 기능 제공
    • Java의 대표적인 표준 라이브러리
      • 패키지에 포함하여 제공
      • import 문을 이용
      • 종류
        • java.lang : 기본적으로 필요한 인터페이스, 자료형 등에 관련된 기능을 제공, import문 필요 없음
        • java.util : 날짜 처리, 난수 발생 등에 관련된 기능을 제공
        • java.io : 파일 입.출력과 관련된 기능 및 프로토콜 제공
        • java.net : 네트워크와 관련된 기능 제공
        • java.awt : UI와 관련된 기능 제공
    • Python의 대표적인 표준 라이브러리
      • 종류
        • 내장 함수 : 기본적인 인터페이스
        • os : 운영체제와 상호작용 하기 위한 기능 제공
        • re : 고급 문자열 처리를 위한 기능 제공
        • math : 복잡한 수학 연산을 위한 기능 제공
        • random : 무작위 선택을 위한 기능 제공
        • statistics : 통계값 산출을 위한 기능 제공
        • datetime : 날짜와 시간 조작을 위한 기능 제공
  • 예외 처리
    • 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴이 수행되도록 하는 것
    • C++, Ada, Java, 자바스크립트와 같은 언어에는 예외 처리 기능이 내장되어 있음
    • 예외 원인
      • 하드웨어 문제
      • 운영체제 설정의 실수
      • 라이브러리 손상
      • 사용자의 입력 실수
      • 받아들일 수 없는 연산
      • 할당하지 못하는 기억장치 접근
    • Java의 예외 처리
      • 예외를 객체로 취급함
      • try~catch문을 이용해 예외 처리
      • 주요 예외 객체
        • ClassNotFoundException : 클래스를 찾지 못한 경우
        • NoSuchMethodException : 메소드를 찾지 못한 경우
        • FileNotFoundException : 파일을 찾지 못한 경우
        • InterruptedIOException : 입.출력 처리가 중단된 경우
        • ArithmeticException : 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우
        • IllegalArgumentException : 잘못된 인자를 전달한 경우
        • NumberFormatException : 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우
        • ArrayIndexOutOdBoundsException : 배열의 범위에 벗어난 접근을 시도한 경우
        • NegativeArraySizeException : 0보다 작은 값으로 배열의 크기를 지정한 경우
        • NullPointerException : 존재하지 않는 객체를 참조한 경우