Etc/📃 Certification

[정보처리기사] 4과목 2장 - 프로그래밍 언어 활용

posted by sangmin

4과목 - 프로그래밍 언어 활용

2장. 프로그래밍 언어 활용


127. 변수

기억 클래스

  • 자동 변수 (auto)
    • 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
    • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동 소멸
  • 레지스터 변수 (register)
    • 메모리가 아닌 CPU 내부 레지스터에 기억영역을 할당받는 변수
    • 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용
    • CPU에 저장되어 메모리 주소를 가질 수 업기 때문에 '&' 연산자 사용 불가능
  • 정적 변수 (static)
    • 내부 정적 변수 : 선언한 함수나 블록 내에서만 사용
    • 외부 정적 변수 : 모든 함수에서 사용 가능
    • 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
  • 외부 변수 (extern)
    • 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조하기 위한 변수
    • 함수 밖에서 종료된 뒤에고 값이 소멸되지 않음

132. 포인터

포인터와 포인터 변수

  • 포인터 변수는 필요에 의해 동적으로 할당되는 힙 영역에 접근하는 동적 변수
  • 용도
    • 연결된 자료 구조를 구성하기 위해 사용
    • 동적으로 할당된 자료 구조를 지정하기 위해 사용
    • 배열을 인수로 전달하기 위해 사용
    • 문자열을 표현하기 위해 사용
    • 메모리에 직접 접근하기 위해 사용

133. 절차적 프로그래밍 언어

절차적 프로그래밍 언어의 개요

  • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해나가는 언어
  • 데이터 중심으로 프로시저를 구현하며, 프로그램 전체가 유기적으로 연결되어 있음

절차적 프로그래밍 언어의 장단점

  • 장점
    • 컴퓨터 처리 구조와 유사하여 실행 속도가 빠름
    • 같은 코드를 복사하지 않고 다른 위치에서 호출하여 사용할 수 있음
    • 모듈 구성이 용잏며, 구조적인 프로그래밍 가능
  • 단점
    • 프로그램 분석이 어려움
    • 유지 보수나 코드의 수정이 어려움

134. 객체지향 프로그래밍 언어

객체지향 프로그래밍 언어의 개요

  • 현실 세계의 개체를 하나의 객체로 만들어, 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법
  • 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법

객체지향 프로그래밍 언어의 장단점

  • 장점
    • 상속을 통한 재사용과 시스템 확장이 용이
    • 코드의 재활용성이 높고, 대형 프로그램 작성이 용이
    • 유지 보수가 용이
  • 단점
    • 프로그래밍 구현을 지원해주는 정형화된 분석 및 설계 방법이 없음
    • 구현 시 처리 시간 지연

객체지향 프로그래밍 언어의 구성 요소

  • 객체 (Object)
    • 속성과 이를 처리하기 위한 메소드를 결합시킨 실체
    • 속성 (Attribute) : 한 클래스 내 속한 객체들이 갖고 있는 데이터 값
    • 메소드 (Method) : 객체가 메시지를 받아 실행해야 할 때 구체적인 연산을 정의하는 것
  • 클래스 (Class)
    • 공통된 특성과 행위를 갖는 객체의 집합
  • 메시지 (Message)
    • 객체의 메소드를 일으키는 외부의 요구 사항

객체지향 프로그래밍 언어의 특징

  • 캡슐화 (Encapsulation)
    • 데이터와 함수를 하나로 묶는 것
    • 캡슐화된 객체들은 재사용 용이
  • 정보 은닉 (Information Hiding)
    • 캡슐화에서 가장 중요한 개념
    • 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근하는 것
  • 추상화 (Abstraction)
    • 불필요한 부분을 생략하고, 객체 속성 중 가장 중요한 것에만 중점을 두어 모델화하는 것
  • 상속성 (Inheritance)
    • 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
  • 다형성 (Polymorphism)
    • 하나의 메시지에 대해 각 객체가 갖고 있는 고유한 특성으로 응답할 수 있는 능력
    • 객체들은 동인한 메소드명을 사용하며 같은 의미의 응답을 함

135. 스크립트 언어

스크립트 언어 (Script Language)의 개요

  • HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것
  • 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작
  • 데이터베이스 처리 작업을 수행하기 위해 주로 사용
  • 서버용 스크립트 언어 : ASP, JSP, PHP, 파이썬
  • 클라이언트용 스크립트 언어 : Javascript

스크립트 언어의 장단점

  • 장점
    • 컴파일 없이 실행하므로 결과를 바로 확인할 수 있음
    • 개발 시간이 짧고 소스 코드를 빠르게 수정할 수 있음
  • 단점
    • 코드를 읽고 해석해야하므로 실행 속도가 느림
    • 런타임 오류 많이 발생

136. 선언현 언어

선언형 언어

  • 프로그램이 수행해야 할 문제를 기술하는 언어
  • 목표를 명시하고 알고리즘은 명시하지 않음
  • 종류
    • 함수형 언어
      • 수학적 함수를 조합하여 문제를 해결하는 언어
      • 재귀호출이 자주 이용되고, 병렬 처리에 유리
      • ex) LISP
    • 논리형 언어
      • 논리 문장을 이용하여 프로그램을 표현하고 계산
      • 반복문이나 선택문을 사용하지 않는 비절차적 언어
      • ex) PROLOG

선언형 언어의 장단점

  • 장점
    • 가독성이나 재사용성이 좋음
    • 작동 순서를 구체적으로 작성하지 않아 오류거 적음

선언형 프로그래밍 언어 종류

  • HTML : 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
  • LISP : 인공지능 분야에 사용되는 언어
  • PROLOG : 인공지능 분야에서 논리적인 추론이나 리스트 처리 등에 사용
  • XML : 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어

137. 라이브러리

라이브러리의 개념

  • 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터를 미리 만들어 놓은 집합체

138. 데이터 입출력

scanf() 함수

  • C언어의 표준 입력 함수
  • 키보드로 입력받아 변수에 저장하는 함수

printf() 함수

  • C언어의 표준 출력 함수
  • 인수로 주어진 값을 화면에 출력하는 함수

기타 표준 입출력 함수

  • 입력
    • getchar() : 키보드로 한 문자를 입력받아 변수에 저장
    • gets() : 키보드로 문자열을 입력받아 변수에 저장
  • 출력
    • putchar() : 인수로 주어진 한 문자를 화면에 출력
    • puts() : 인수로 주어진 문자열을 화면에 출력

139. 예외 처리

예외 처리의 개요

  • 예외 (Exception) : 프로그램의 정상적인 실행을 방해하는 조건이나 상태
  • 예외가 발생했을 때 일반적으로는 프로그램을 종료시키거나 로그를 남기도록 함

JAVA의 예외 처리

  • 자바는 예외를 객체로 취급
  • try ~ catch 문을 이용하여 예외 처리
try {
    예외가 발생할 가능성이 있는 코드;
}
catch (예외객체1 매개변수) {
    예외객체1에 해당하는 예외 발생 시 처리 코드;
}
catch (예외객체2 매개변수) {
    예외객체2에 해당하는 예외 발생 시 처리 코드;
}
catch (Exception 매개변수) {
    예외객체1~n에 해당하지 않는 예외 발생 시 처리 코드;
}
finally {
    예외 발생 여부와 관계없이 무조건 처리되는 코드;
}

140. 프로토타입

프로토타입 (Prototype)의 개념

  • 프로토타입이란 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것
  • 함수가 호출되기 전에 함수가 미리 정의되는 경우에는 프로토타입을 정의하지 않아도 됨
  • 프로토타입에 정의된 반환 형식과 함수 정의에 지정된 반환 형식이 반드시 일치해야함

C언어에서의 프로토타입 선언

  • main() 함수 바깥쪽에 선언
inf func(int i, int j);    // func() 함수의 프로토타입 선언

main() {
    ...
}

int func(int i, int j) {
    ...
}

참고

 

시나공 정보처리기사 필기

2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을

book.naver.com