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언어에서의 프로토타입 선언
inf func(int i, int j); // func() 함수의 프로토타입 선언
main() {
...
}
int func(int i, int j) {
...
}
참고