1. 프로그램언어의 정의와, 프로그램언어의 세대별 주요 이슈 및 변천과정을 설명하시오.
<답> 정의: 인간이 컴퓨터로 수행하고자 하는 바를 컴퓨터에 전달하기 위한 표기법
변천과정: 저장방식언어의 출현->고급언의 등장->간결성,일관성->구조적기법->객체지향(함수,논리형 포함)
->4세대언어등장->월드와이드웹의 등장->컴포넌트개발방식의 사용
(시대별, 세대별로 구분 할수도 있음)
2. 프로그램 언어의 설계기준에서 일반성, 직교성, 획일성에 대해 간단히 설명하고, 직교성에 대한 예를 몇 개 들어 보시오.
<답> 일반성: 특별한 경우를 피하고 관련이 있는 여러 개념들을 일반적인 하나의 개념으로 결합하는 성질
직교성: 수학개념에서 유래. 언어 구성자들이 각각의 의미를 지닌채 결합해야 하는 성질
획일성: 외모와 행동의 조화가 이루어져야 함. 유사한 것은 유사하게 보여야 한다는 설계원칙이다.
직교성의 예:
파스칼에서 반환값을 스칼라형이나 포인터형만 허용, 구조형은 허용치않는다
C언어의 매개변수 전달방법에 직교성이 없다
3. 다음의 BNF 표현에 대해 간단히 설명하고, 구문도표로 변환하시오.
A ::= x | '<' B '>'
B ::= ACD
C ::= {+A}
D ::= [y]
<답> - 비단말기호: A, B, C, D
- 단말기호: x, <, >, +, y
- 메타기호: 대입, 반복 등을 사용하여 다이어그램을 그린다
4. 다음 BNF 구문의 의미에 대해 설명하고, 우선순위와 결합성을 고려한 변환된 BNF표기로 바꾸고 구문트리를 그리시오.
<exp> ::= <exp> - <exp> | <exp> * <exp> | (<exp>) | <number>
<number> ::= <number> <digit> | <digit>
<digit> ::= 0|1|2|3|4|5|6|7|8|9
<답>
<exp> ::= <exp> - <term> | <term> , <term> ::= <term> * <facter> | <facter>
<facter>::=(<term>) | <number> , <number>::=<number><digit>| <digit>
<digit>::= 0|1|2|3|4|5|6|7|8|9
-> 구문트리를 그린다
5. 바인딩의 개념과 바인딩시간에 대해 설명하시오.
<답> 바인딩: 변수의 4대요소중 이름에 속성을 연결하는 과정. (4대요소:이름,속성,값,위치)
바인딩시간: 바인딩이 이루어지는 시간. 시간의 시점은 언어정의, 구현, 번역, 실행시간에 발생한다.
6. 반복문 중, while 문과 for 문의 특징과 실행순서를 설명하시오.
<답> while문 - 그림으로 설명
: 조건이 참일 동안 계속 반복한다
절차: 1) 조건을 검사, 거짓이면 반복문을 빠져나옴 2) 참일때 while문의 블록을 실행 3) 다시 조건 검사
for문 - 그림으로 설명
: 반복변수(제어변수)를 사용 고정된 횟수의 반복을 수행
절차: 1) for문의 식1의 초기값 실행 2) 식2의 조건에 따라 거짓이면 빠짐 3) 참이면 블록문을 수행
4) 식3를 실행한다 5) 식2의 조건을 판단 하여 3항을 계속한다