본문 바로가기

자격증/정보처리기사 3과목

3-6강. 프로그래밍 언어 활용-언어특성 활용

[ 목차 ]

1. 절차적 프로그래밍

 

 

 

 

1. 절차적 프로그래밍

1) 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍

2) 프로시저는 루틴, 하위프로그램, 서브루틴, 메서드, 함수라고도 하며 수행되어야 할 연속적인 계산 과정을 포함

3) 프로그램의 아무 위치에서나 프로시저를 호출할 수 있으며 다른 프로시저, 심지어 자기 자신에서도 호출 가능

4) 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술

5) 프로그램이 실행되는 절차가 중요

6) 자연어에 가까운 단어와 문장으로 구성되어 있으며 c언가 대표적

7) 과학 계산이나 하드웨어 제어에 주로 사용 

 

2. 장점

1) 복잡도가 지나치지 않고 유지보수가 쉬움

2) 단순한 순차적 프로그래밍이나 비구조적 프로그래밍보다 여러 상황에서 장점이 많음

3) 코드의 재사용 : 같은 코드를 다른장소에서 호출만으로 재사용 가능

4) 쉬운 프로그램 흐름 파악 : GOTO문, JUMP문 사용이 아닌 쉬운 호출 파악이 가능

5) 모듈화 및 구조화 : 재사용 단위인 모듈로 구성하여 프로그램을 구조화

 

3. 단점

1) 프로그램 분석이 어려움

2) 유지보수나 코드 수정이 어려움

3) 유지보수는 관점에 따라 장점이기도 단점이기도 함

 

4. 프로시저와 모듈성

1) 크고 복잡한 프로그램 작성 시 모듈성은 필수

2) 모듈성은 스포시저에 어떤 형태의 압력과 출력이 이루어지는지 명확한 규칙을 정해 구현

3) 모듈성 특성

  1] 매개변수의 반환값 : 입력은 주로 인수의 형태로 문법적으로 지정, 출력은 결과값으로 지정

  2] 유효범위(스코프) :  프로시저가 모듈성을 잘 지킬 수 있게 해 주는 것으로, 다른 프로시저의 변수에 접근하거나 그 반대의 경우를 막음

  3] 명시적 허가 : 명시적 허가 없이는 자기 자신의 변수에도 접근 불가]

  4] 약결합 : 모듈성을 강하게 하는 것

 

5. 모듈화 측정 척도

1) 내부 처리 요소간의 독립성을 나타내며 응집도가 높을수록 좋고 모듈간의 연관성은 루즐리커플로 구현할 수 있는 결합도가 낮은 것이 좋음

2) 응집도 :높을수록 독립성 강함

3) 결합도 : 모듈간 상호의존성

 

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

1) C : 고급 프로그래밍 언어로, 저급 프로그래밍 언어의 특징을 모두 가지고 있으면서 사람이 이해하기 쉽게 함

2) 포트란 : 과학적 계산

3) 알골 : 알고리즘 연구개발

4) 베이직 : 교육용

 

7. 객체지향

1) 구조적 문제점을 극복하고 인간이 사고하는 방식대로 프로그램을 개발

2) 실세계에 존재하거나 개념적인 그 어떤 것을 표현한 것을 이용해 프로그래밍 하는 것

3) 절차지향이 모듈, 변수, 함수를 사용하는것에 반해 객체지향은 이들을 객체, 속성, 메소드로 바꿔 캡슐화, 추상화, 상속, 다형성을 이용해 표현

4) 장점 

  1] 대규모 소프트웨어 개발에 많이 사용

  2] 프로그래밍을 배우기 쉽게 하고 SW 개발과 보수를 간편하게 해 직관적 코드 분석이 가능하게 함

  3] 상속을 통한 재사용과 시스템의 확장 용이

  4] 사용자와 개발자 사이의 쉬운 이해

5) 단점

  1] 프로그래밍 구현을 지원해주는 정형화된 분석, 설계 방법의 부족

 

8. 캡슐화

1) 클래스를 선언하고 그 클래스를 구성하는 객체에 대하여 public, private, protected 선언하여 처리

2) 퍼블릭 : 모든 접근 허용

3) 프라이빗 : 자신을 포함한 클래스에서만 참조 가능

4) 프로텍티드 : 상속받은 클래스에서도 참조 가능

 

9. 추상화

1) 공통 성질을 추출해 슈퍼클랙스를 설정하는 것

2) 클래스간에 계층 관계가 정의될 때 상위에 있는 것을 슈퍼, 하위를 서브 클래스라 지칭

3) 기능 추상화 : 클래스 내 메소드를 정의

4) 자료 추상화 : 객체 클래스 자체를 데이터 타입으로 사용 / 데이터의 세부적 속성이나 용도를 정의하지 않고 데이터 구조를 대표할 수 있는 표현으로 대체

5) 제어 추상화 : 제어행위에 대한 개념화, 명령, 이벤트 / 이벤트 발생의 정확한 절차나 방법을 정의하지 않고 대표할 수 있는 표현으로 대체

 

10. 상속

1) 단일 상속 : 부모와 자식 클래스 간의 관계가 슈퍼, 서브 클래스로 유지

2) 다중 상속 : 하나의 클래스가 하나 이상의 클래스로부터 상속

3) 반복 상속 : 같은 조부모 클래스로부터 상속 받은 두 부모 클래스로부터 상속 받는 것

 

11. 객체지향 프로그래밍 구성요소

1) 객체

2) 클래스

3) 메시지

 

12. 객체의 구성 요소

1) 현실 세계에서 개체를 데이터 속성과 메소드를 결합시킨 형태로 표현하는 것

 

4. 클래스

1) 객체 지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입

 

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

1) C# : 자바에 대응하기 위해서 마소에서 개발

2) 자바 

3) 델파이 : 파스칼 문법과 같음

4) 스위프트 : 애플을 위한 프로그래밍 언어로 오브젝트-C와 함게 공존할 목적으로 생성

 

6. 스크립트 언어

1) 응용 소프트웨어를 제어하는 프로그래밍 언어

2) 응용 프로그램과 독립해서 사용

3) 응용 프로그램의 언어와 다른 언어로 사용되어 최종 사용자가 응용 프로그램의 동작을 일반 사용자의 요구에 맞게 수행

4) 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작

5) 컴파일  없이 실행되기에 실행 녹도가 느림

6) 런타임 오류가 많이 발생

 

7. 스크립트 언어 특징

1) 상대적으로 단순한 구문과 의미를 내포해 빠르게 배우고 작성하기 위해 개발된 언어

2) 짧은 소스 코드 파일이나 read-eval-print-loop 로 상호작용 하기에 적합

3) REPL : 단일 사용자의 입력을 취하고 이를 평가하고 결과를 사용자에게 반환하는 단순한 상호작용 컴퓨터 프로그래밍 환경

 

8. 스크립트 종류

1) 파이썬 : 인터프리식, 동적타이핑(실행 시 자료형을 체크해서 자동으로 메모리를 관리), 대화형

2) PHP : 동적 웹 페이지를 만들기 위해 설계

3) JCL : 일괄 처리 작업을 수행

4) 자바스크립트 : 웹 브라우저 내에서 주로 쓰며 다른 응용 프로그램의 내장 객체에도 접근할 수 있어 클라이언트용으로 사용, 웹 브라우저를 보기 좋게 꾸밀 수 있음

 

9. 선언형 언어

1) 특정 선언으로만 프로그램을 동작시키는 프로그래밍 패러다임

2) 제이쿼리, 앵귤러가 있으며, 반응형 프로그래밍 개념이 도입되어 있음

3) 반응형 프로그래밍 : 키의 누름, 마우스의 이동이라는 이벤트를 끊임없이 반응하고 그에 반응하는 프로그래밍

 

10. 함수형 언어와 논리 프로그래밍

1) 선언형 언어 안에 함술형 언어와 논리 프로그래밍이 포함

2) 선언형 언어는 명령형 언어와 대비되며, 명령형 언어는 알고리즘을 명시하지만 목표는 명시하지 않음

3) 함수형 언어 : 자료 처리를 수학적 함수의 계산으로 취급

4) 논리 프로그래밍 : 논리 문장을 이용해 프로그램을 표현, 계산 수행

 

11. 선언형 언어의 특징

1 참조투명성 : 프로그램의 동작 변경 없이 관련 값을 대체 가능

2) 지연평가 지원 : 계산이 필요한 순간까지 미룰 수 있음

3) 빠른 개발 : 이미 만들어진 것을 선언을 통해 사용

4) 작은 버그 : 구체적인 작동순서를 나열하지 않아 버그가 작음

5) 가독성, 재사용성 좋음

6) 프로그램 동작을 변경하지 않고도 관련 값 대체 가능

 

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

1) 하스켈 : 여러 함수형 언어들을 통합

2) 프롤로그 : 논리식을 토대로 사용

3) SQL

4) XML : 기존 HTML 단점을 보완해 웹에서 구조화된 폭넓고 다양한 문서들을 상호교환 가능