티스토리 뷰

 

안녕하세요 잡다입니다.

사무자동화 산업기사 이론 2과목까지 어떠셨나요?

벌써 5분의 2를 끝냈습니다.

후...드디어 3과목시작이군요

이제 많은 사람들에게 낯선 과목인 프로그래밍 일반에 대해 포스팅을 할 것입니다.

이 과목의 첫 포스팅에서는 다양한 프로그래밍 언어에 대해 주로 배울 것입니다.

이쪽계열이 아니신 분은 어렵게 느껴질 가능성도 있으니 최대한 쉽게 요약해보겠습니다.

그럼 시작하겠습니다.


 

3과목 프로그래밍 일반 


1. 저급 언어와 고급 언어

 

1-1)저급 언어(Low-Level Language)

기계 중심의 언어빠른 실행 속도를 지녔으며, 상이한 기계에서 호환성이 없다.

저급 언어에는 기계어와 어셈블리어가 있다.

 

 기계어(MachineLanguage)
컴퓨터가 직접 이해할 수 있는 언어로 0과 1로 표현돼서 수행시간이 빠르다. 하지만 전문적 지식이 없으면 프로그램을 다루기 힘들고, 기종마다 기계어가 달라 호환성이 없다.


 어셈블리어(AssemblyLanguage)
기계어와 1:1로 대응되어 기계어로 번역하기 위해 필요한 언어이며, 기호 코드(Mnemonic Code)라고 한다.

 

->저급 언어의 특징과 저급언어에는 기계어와 어셈블리어가 있다는 것을 알고 있어야합니다. 

또한 어셈블리어가 기호 코드라고도 불린다는 것 기억해야합니다.

 

1-2)고급 언어(High-Level Language)

사람 중심의 언어로 실행을 위한 번역이 필요하다. 호환성이 좋아 상이한 기계에서 수정없이 실행 가능하다.
종류 : FORTRAN, COBOL, ALGOL, LISP, APL, PL/1, BASIC, SNOBOL, C, Java, Ada, Pascal

->고급 언어의 특징 중 번역이 필요한 것을 기억해두세요. 또한, 번역은 수정과는 다른 개념이라는 것을 분명히 해두시면 좋습니다. 저급 언어와 고급 언어의 종류를 구분하는 문제가 한번씩 출제 됩니다. 보기로 나왔던 것은 빨강색으로 표시해두었습니다. 하지만 무조건 저것들만 나오는 것은 아니니 시간나면 다른 것도 외워주세요.

 

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


2-1)객체지향 프로그래밍 언어란?

현실 세계의 현상을 컴퓨터상에 객체(Object)로 모델화해서, 여러 문제를 해결할 수 있게 해주는 언어이다.
유지보수성(Maintainability)과 재사용성(Reusability)이 좋다.
종류 : Ada, Smalltalk, C++, Java 등

 

2-2)기본 구성 요소

객체(Object) : 데이터와 메소드

클래스(Class) : 유사한 객체들을 묶어 하나의 공통된 특성을 표현한 것
메시지(Message) : 객체들 간의 상호작용을 위한 수단


2-3)주요 특징

캡슐화(Encapsulation) : 데이터와 메소드를 하나로 묶어 객체 내부에서 필요로 하는 정보를 외부로부터 은닉
추상화(Abstraction) : 객체의 불필요한 부분은 숨기고 가장 중요한 것에만 중점을 두고 모델화하는 것
상속(Inheritance) : 정의된 상위 클래스의 메소드를 비롯한 모든 속성을 하위 클래스가 물려받는 것

->문제를 정의로 주고 문제가 설명하는 특징은? 이라는 문제가 나옵니다. 키워드 중심으로 외워주세요. 그리고 가끔 영어로 맞추는 문제가 나오니까 영어 단어로도 기억해주세요.

 

3. 언어의 구문


3-1)문자 집합

알파벳 문자, 숫자, 특수 문자

 

3-2)식별자(Identifier)

변수, 레이블, 프로시저 등의 이름
(하나의 프로그램 내에서 식별자는 유일)


3-3)연산자(Operator)

변수나 상수의 연산(+, -, *, /, %, ...)

 

3-4)핵심어(Key Word)

특별한 의미를 가진 고정된 부분으로 사용되는 식별자


3-5)예약어(Reserved Word)

시스템이 알고 있는 특수한 기능을 수행하도록 이용도가 정해져 있는 단어이다.
프로그램의 판독성, 신뢰성을 증가시킨다.
번역 속도를 높여 준다.
오류 회복이 용이하다.
새로운 언어에서는 예약어의 수가 늘어나고 있다.


->예약어 관련된 특징 문제가 자주 나옵니다. 예약어는 예를 들어 우리가 +를 더하기로 알고 있다면, 용도가 예약되어 있는 단어니까 빼기로 사용하지 말자라는 의미입니다. 특징도 알고 있어야합니다.

3-6)주석(Comment)

프로그램을 읽어 이해하기에 도움이 되는 내용들을 기록한 부분이다.


->프로그램 진행에는 영향을 주지 않지만 사용자로 하여금 이해를 돕게 해주는 요소입니다. 

예를 들어 코딩으로만 이루어진 것을 보면, 무엇이 어떤 역할을 하는지 바로 이해하기 힘듭니다. 하지만, 이 부분은 A라는 작업을 진행하는 코드라는 주석을 남기면 사용자가 해당 코드의 역할을 바로 알 수 있게 되는 것입니다.


3-7)구분 문자

문장이나 식과 같은 구문적인 단위의 시작과 끝을 나타내기 위하여 사용되는 구문적 요소이다.

 

3-8)잡음어

특별한 정보는 갖고 있지 않으나, 판독성을 향상시키기 위하여 사용하는 구문 요소이다.

 

3-9)구문 표기법

BNF(Backus-Naur Form) : 프로그래밍 언어의 구문 형식을 정의하는 가장 보편적인 방법

::= 정의
| 선택(택일)
< 비종단(Non-terminal)

 

EBNF(Extended BNF)
- BNF를 확장하여 보다 읽기 쉽고 간결하게 표현할 수 있다.
- 반복, 선택 부분에서 BNF보다 간결하게 표현할 수 있다.

{ } 반복
[ ] 선택 사항(옵션)
(|) 선택(택일)

 

구문 도표(Syntax Diagram) : BNF나 EBNF 규칙을 표현하는 그래픽적인 방법이다.


파스 트리(Parse Tree) : 구문 분석기가 처리한 문장에 대해 그 문장의 구조를 트리로 표현한 것으로 루트, 중간, 단말 노드로 구성되는 트리이다.

->구문 표기법 내용은 정말 100%나옵니다. 

각 구문 표기법에 어떤 것이 포함되어 있는지, 무엇을 의미하는지를 분명히 아셔야합니다. 

또한, 파스트리는 정말 자주나오는 답입니다. 

 

 

---------------------------------------------------------

3과목 프로그래밍 일반의 첫 포스팅 어떠셨나요?

프로그래밍이라 대부분 어색하고, 힘들다고 느낄 수 있다고 생각합니다.

하지만 프로그래밍 일반은 나오는 문제가 거의 비슷비슷해서 요약된 것만 보시면 분명 좋은 결과를 얻으실 것입니다.

최대한 이해하기 쉽게 설명해보려했는데...잘 된건지 모르겠네요....ㅎㅎ

부족하다고 생각되시는 분 혹은 공부했는데 잘 모르겠다고 하시는 분 댓글 달아주시면 잡다가 최대한 답변해드리겠습니다!

공감과 구독, 댓글은 큰 힘이 됩니다.ㅎㅎ

 


반응형
댓글