SEC 151) 포인터(A)
* 포인터의 개요
- 앞에서 어떤 수나 문자를 저장하기 위해 변수를 사용함, 사실 이 변수는 기억장소의 어느 위치에 대한 이름이며 그 위치는 주소로도 표현할 수 있음. C언어에서 변수의 주소를 포인터라고 하고, 포인터를 저장할 수 있는 변수를 포인터 변수라고 함. 변수의 주소인 포인터는 출력할 수도 있고 포인터가 가리키는 곳에 값을 저장하거나 읽어 오는 등 다양한 조작이 가능함. 이런 기능 때문에 C언어는 주소를 제어할 수 있는 기능이 있다고 말함
SEC 152) 사용자 정의 함수(A)
* 사용자 정의 함수 개요
- 말그대로 사용자가 직접 만들어 사용하는 함수
SEC 153) Java의 클래스(A)
* Java 클래스의 개요
- 클래스는 객체 생성을 위한 필드(속성)와 메소드(함수)를 정의하는 설계도로, Java는 아무리 작은 프로그램이라도 클래스를 만들어서 사용해야함
* 클래스 만들어 사용하는 순서
1) 클래스 이름을 정하고 객체 생성을 위한 필드와 메소드를 정의함. 자동차를 만들기 위한 설계도
2) 객체를 생성. 자동차 설계도로 자동차를 만들어야 사용할 수 있듯이 클래스를 이용해 객체를 생성해야 프로그램에서 사용할 수 있음. 사용하는 명령이 new임
3) 생성된 객체들을 이용해 프로그램 코딩하기.
SEC 154) Java의 활용(A)
* 추상클래스와 형 변환의 개요
- 추상메소드는 자식 클래스에서 재정의해야만 사용할 수 있는 메소드를 의미, 이런 메소드를 하나 이상 포함하는 클래스를 추상클래스라고 함. 그리고 이렇게 재정의한 메소드를 부모 클래스의 객체 변수를 통해 사용하려면 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용해야함, 이를 클래스의 형 변환.
SEC 155) Python의 개요
- Python은 객체지향 기능을 지원하는 스크립트 언어로, 다른 언어에 비해 문법이 간단하다는 장점이 있음.
>> Python을 C, Java와 비교했을 때 기본 작성법의 차이점은 다음과 같음
- 변수의 자료형에 대한 선언이 없음.
- 문자와 문자열을 작은따옴표(‘’), 큰따옴표(“”)로 구분 없이 사용할 수 있으며, 3개의 작은따옴표(‘‘‘ ’’’), 3개의 큰따옴표(“““ ”””)로 묶어 표현할 수 있음.
- 문장의 끝을 의미하는 세미클론(;)을 사용할 필요가 없음.
- if나 for와 같이 코드 블록을 포함하는 명령문을 작성할 때 중괄호({ })나 대신 콜론(:)과 여백으로 구분.
SEC 156) 절차적 프로그래밍 언어(C)
* 절차적 프로그래밍 언어
- 절차적 프로그래밍 언어는 일련의 처리 절차를 정해진 무넙에 따라 순서대로 기술하는 언어
- 프로그램이 실행되는 절차를 중요시함.
- 데이터를 중심으로 프로시저를 구현하며, 프로그램 전체가 유기적으로 연결되어 있음
- 자연어에 가까운 단어와 문장으로 구성됨
- 과학 계산이나 하드웨어 제어에 주로 사용됨.
* 절차적 프로그래밍 언어의 종류
언어 | 특징 |
C | - 1972년 미국 벨 연구소의 데니스 리치에 의해 개발됨 - 시스템 프로그래밍 언어로 널리 사용됨 - 고급 프로그래밍 언어이면서 저급 프로그램 언어의 특징을 모두 갖춤 - 이식성이 좋아 컴퓨터 기종에 관계없이 프로그램을 작성할 수 있음 |
ALGOL | - 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어 - PASCAL과 C 언어의 모체가 됨 |
COBOL | - 사무 처리용 언어 - 영어 문장 형식으로 구성되어 있어 이해와 사용이 쉬움 - 4개의 DIVISION으로 구성됨 |
FORTRAN | - 과학 기술 계산용 언어 - 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 할 수 있음 |
SEC 157) 객체지향 프로그래밍 언어(C)
* 객체지향 프로그래밍 언어
- 객체지향 프로그래밍 언어는 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계의 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성하는 기법.
- 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법.
- 한 프로그램을 다른 프로그램에서 이용할 수 있도록 함.
* 객체지향 프로그래밍 언어의 종류
언어 | 특징 |
JAVA | - 분산 네트워크 환경에 적용이 가능함 - 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있음 - 운영체제 및 하드웨어에 독립적이며, 이식성이 강함 |
C++ | - C언어에 객체지향 개념을 적용한 언어임 - 모든 문제를 객체로 모델링하여 표현함 |
Smalltalk | - 1세대 객체지향 프로그래밍 언어로, 순수한 객체지향 프로그래밍 언어임 - 최초로 GUI를 제공함 |
SEC 158) 스크립트 언어(C)
* 스크립트 언어(Script Language)
- 스크립트 언어는 HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어
- 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석해 동작
- 게시판 입력, 상품 검색, 회원 가입 등과 같은 데이터베이스 처리 작업을 수행하기 위해 주로 사용함
>> 스크립트 언어의 분류
분류 | 내용 |
서버용 스크립트 언어 | - 서버에서 해석되어 실행된 후 결과만 클라이언트로 보냄 - 종류: ASP, JSP, PHP, 파이썬 |
클라이언트용 스크립트 언어 | - 클라이언트의 웹 브라우저에서 해석되어 실행됨 - 종류: 자바 스크립트(JAVA Script), VB 스크립트(Visual Basic Script) |
필기 20.8, 20.6
* 스크립트 언어의 종류
언어 | 특징 |
자바 스크립트 (JAVA Script) |
- 웹 페이지의 동작을 제어하는데 사용되는 클라이언트용 스크립트 언어 - 클래스가 존재하지 않으며 변수 선언도 필요 없음 - 서버에서 데이터를 전송할 때 아이디, 비밀번호, 수량 등의 입력 사항을 확인하기 위한 용도로 많이 사용됨 |
VB 스크립트 (Visual Basic Script) |
- 마이크로소프트 사에서 자바 스크립트에 대응하기 위해 제작한 언어 - Active X를 사용하여 마이크로소프트 사의 애플리케이션들을 컨트롤할 수 있음 |
ASP(Active Server Page) | - 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어 - 마이크로소프트 사에서 제작하였음 - Windows 계열에서만 수행 가능함 |
JSP(Java Server Page) | - JAVA로 만들어진 서버용 스크립트 언어 - 다양한 운영체제에서 사용 가능함 |
필기 20.6 PHP(Professional Hypertext Preprocessor) |
- Linux, Unix, Windows 운영체제에서 사용 가능한 서버용 스크립트 언어 - C, Java 등과 문법이 유사하므로 배우기 쉬워 웹 페이지 제작에 많이 사용됨 |
필기 20.6 파이썬(Python) |
- 객체지향 기능을 지원하는 대화형 인터프리터 언어 - 플랫폼에 독립적이고 문법이 간단하여 배우기 쉬움 |
필기 20.8 쉘 스크립트 |
- 유닉스/리눅스 계역의 쉘(Shell)에서 사용되는 명령어들의 조합으로 구성된 스크립트 언어 - 쉘 스크립트에서 사용되는 제어문(선택형:if,case/반복형:for,while,until) |
필기 20.6 Basic |
- 절차지향 기능을 지원하는 대화형 인터프리터 언어 - 초보자도 쉽게 사용할 수 있는 문법 구조를 가짐 |
SEC 159) 선언형 언어(C)
* 선언형 언어
- 선언형 언어는 프로그램이 수행해야 할 문제를 기술하는 언어
- 목표를 명시하고 알고리즘은 명시하지 않음
>> 선언형 언어의 분류
분류 | 내용 |
함수형 언어 | - 수학적 함수를 조합하여 문제를 해결하는 언어 - 알려진 값을 함수에 적용하는 것을 기반으로 함 - 재귀호출이 자주 이용됨 - 종류: LISP |
논리형 언어 | - 기호 논리학에 기반을 둔 언어 - 논리 문장을 이용해 프로그램을 표현하고 rPts을 수행함 - 반복문이나 선택문을 사용하지 않음 - 종류: PROLOG |
* 명령형 언어
- 명령형 언어는 문제를 해결하기 위한 방법을 기술하는 언어
- 순차적인 명령 수행을 기본으로 함
- 폰노이만 구조에 개념적인 기초를 두고있음
- 명령형 언어에는 절차적 언어와 객체지향 언어가 있음
- 종류: FORTRAN, COBOL, C, Java 등
* 선언형 언어의 종류
언어 | 특징 |
HTML | - 인터넷의 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어 - 특별한 데이터 타입이 없는 단순한 텍스트이므로 호환성이 좋고 사용이 편리함 |
LISP | - 인공지능 분야에 사용되는 언어 - 기본 자료 구조가 연결 리스트 구조임 - 재귀(Recursion) 호출을 많이 사용함 |
PROLOG | - 논리학을 기초로 한 고급 언어 - 인공 지능 분야에서의 논리적인 추론이나 리스트 처리 등에 주로 사용됨 |
XML | - 기존 HTML의 단점을 보완하여 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어 - HTML에 사용자가 새로운 태그(Tag)를 정의할 수 있음 - 문서의 내용과 이를 표현하는 방식이 독립적임 |
Haskell | - 함수형 프로그래밍 언어로 부작용(Side Effect)이 없음 - 코드가 간결하고 에러 발생 가능성이 낮음 |
SEC 160) 라이브러리(C)
* 라이브러리
- 라이브러리는 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
- 자주 사용하는 함수들의 반복적인 코드 작성을 피하기 위해 미리 만들어 놓은 것이며, 필요할 때는 언제든지 호출하여 사용할 수 있음
>> 라이브러리의 분류
분류 | 내용 |
표준 라이브러리 | - 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리 - 여러 종류의 모듈이나 패키지 형태임 |
외부 라이브러리 | - 개발자들이 필요한 기능들을 만들어 인터넷 등에 공유해 놓은 라이브러리 - 외부 라이브러리를 다운받아 설치한 후 사용함 |
* C언어의 대표적인 표준 라이브러리
- C언어는 라이브러리를 헤더 파일로 제공함.
- 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, srand, rand, malloc, free 등 |
time.h | - 시간 처리에 사용되는 기능들을 제공함 - 주요 함수: time, clock 등 |
* Java의 대표적인 표준 라이브러리
- Java는 라이브러리를 패키지에 포함해 제공함
- Java에서 패ㅣ지를 사용하려면 ‘import java.util’과 같이 import문을 이용해 선언한 후 사용해야함.