[프로그래밍 언어개념] 레포트 및 공부자료
- 학교/전공
- 2018. 9. 26. 23:59
[프로그래밍 언어개념] 레포트 및 공부자료
제가 직접 푼거라서 정답은아닐 수도 있어요 ㅋㅋ 하지만 유용할거에요
1.8 많은 상이한 종류의 루프 문장들이 하나의 프로그래밍 언어에 포함되어 있는 이유는 무엇인가?(특히 java에서 do-while문, while-문, while-문 for-문 필요한 것에 대해 여러분의 답을 제시하라.)
반복한다는 기능은 같은 것일지라도 각자 반복하는 구조가 다른 문장들이다. 구조가 다르므로 알맞은 위 루프 문장들 중 골라서 알맞은 것을 사용하면 시간 복잡도를 줄이는 효과와 가독성을 높이고 코딩을 간단하게 해줄 수 있다.
1.13 언어 구조가 폰노이만 구조에 기반하고 있는 프로그래밍 언어 종류의 이름은 무엇인가?
어셈블리 언어. 폰 노이만은 CPU가 처리할 작업을 명령 코드로 작성하도록 하였다. 어셈블리 언어는 기계종속적이며, 저급 수준의 추상화, 읽고 쓰기 어려워서 나중에는 고급 언어가 탄생하였다.
4.1 프로그래밍 언어가 갖는 예약어에 대하여 설명하고, 예약어를 사용함으로써 얻어지는 장단점을 설명하라.
예약어: 언어 어휘를 사용하는 기초나 알파벳. 변수 이름으로 사용할 수 없다.
장점 : 프로그램을 쉽게 검색할 수 있음.(판독성 증가). 심볼 테이블 검색 속도 증가
단점 : 언어 확장시 변수 이름과 겹쳐서 오류 가능성 증가. 많은 예약어 기억 어려움
4.4 다음 구문 도표를 보고 물음에 답하라.
(1) BNF로 나타내시오
arrayidx::= <[><x><]>
<x>::= <exp><x>|<exp>..<<exp><x>
(2) EBNF로 나타내시오
<arrayidx>::=<[>{<exp>[..<exp>]}<]>
4.5 다음은 Ada 언어의 if문장에 관한 EBNF이다
<if - statment> ::= if <condition> then <sequence of starement>
{ elseif <condition> then <sequence of startement> }
[else <sequence of statement>] end if
(1) 위 EBNF를 구문 도표로 나타내어라.
이거 답은 개인적으로 쪽지 날리시면 알려드릴게요 올리기 귀찮네요
(2) Ada 언어에서는 현수 else 문제를 해결하고 있는지 위 EBNF를 보고 설명 하라.
4.7 BNF가 본문의 표 4.4와 같이 주어졌을 때 다음 식에 대한 추상 구문 트리와 파스 트리를 그려라.
(c) 3*4-5*6-7
6.4 동적 자료형 바인딩의 장단점은 무엇인가?
장점 - ① 타입이 선언문에 명세되지 않는다. - 배정문에서 값이 변수에 배정될 때 타입 이 변수에 바인딩된다.즉 실행될 때 배정받는 변수는 배정문의 우변의 값인, 변수,식의 타입에 바인딩된다. ② 상당한 양의 프로그래밍의 유연성 - 어떠한 타입의 데이터가 입력되더라도 처 리 할 수 있다.
단점 - ① 컴파일러의 오류 탐지 능력이 정적 타입 바인딩보다 낮다. ② 실행시간에 비용이 많이 소요 |
6.11 다음 C 프로그램을 생각해보자
int fun( int *i) { *i+=5; return 4; } void main() { int x=3 x=x+fun(&x); } |
다음의 각 경우에, main에 포함된 배정문이 실행된 후 x의 값은 무엇인가?
(a) 피연산자가 왼쪽에서 오른쪽 순서로 평가된다.
[풀이] |
|
|
|
|
|
|
|
|
3 + 8 이 계산되어 x의 값이 11이 된다. |
(b) 피연산자가 오른쪽에서 왼쪽 순서로 평가된다.
[풀이] |
|
|
|
|
|
|
|
|
8 +8이 계산되어 x의 값이 16이 된다. |
6.20 단락회로 평가란 무엇인가?
[풀이] |
|
|
|
|
|
|
|
|
식의 결과가 모든 피연산자와 또는 연산자를 평가하지 않고도 결정되는 평가를 말한다. 예를 들어 (13*A)*(b/13-1) 에서 A가 0이면 (b/13-1)의 값에 관계없이 식의 값이 결정되는것이다. |
7.8 3차원 배열 자료형에서 원소의 위치를 계산하는 방법을 저장 방식에 따라 수식으로 표현해 보아라.
- ① 행우선 방식: Loc(i1, i2, i3,... , in) = base
+ (i1-lb1)*(ub2-lb2+1)*(ub3-lb3+1)*...*(ubn-lbn+1)*s
+ (i2-lb2)*(ub3-lb3+1)*(ub4-lb4+1)*...*(ubn-lbn+1)*s
+...
+ (in-1-lbn-1)*(ubn-lbn+1)*s
+ (in-lbn)*s
② 열우선 방식: Loc(i1, i2, i3,... , in) = base
+ (in-lbn)*(ubn-1-lbn-1+1)*(ubn-2-lbn-2+1)*...*(ub1-lb1+1)*s
+ (in-1-lbn-1)*(ubn-2-lbn-2+1)*(ubn-3-lbn-3+1)*...*(ub1-lb1+1)*s
+...
+(i2-lb2)*(ub1-lb1+1)*s
+(i1-lb1)*s
7.11 포인터형의 설계 고려 사항은 무엇이고 포인터에 대한 두 가지 공통된 문제는 무엇인가?
- [언어 설계시 포인터에 관해 고려할 사항]
① 포인터 변수의 영역과 존속 기간은 무엇인가?
② 힙 변수의 존속 기간은 얼마인가?
③ 포인터가 가리키고자 하는 객체의 자료형에 제한받는가?
④ 포인터가 동적 메모리 관리, 간접 주소 지정을 위해서 사용되는가?
⑤ 언어가 포인터형, 참조형 혹은 둘 다를 지원하는가?
[문제점]
① dangling pointer: 여러 포인터 변수가 동일한 객체를 가리킬 때, 한 포인터를 사용하여 그 객체를 소멸시키거나 내용을 변경시키게 되면 프로그래밍의 어려움이 발생할 수 있다.
② memory leakage: 어떤 포인터 변수도 가리키고 있지 않는 객체가 존재할 수 있다.
7.17 Pascal 구문으로 된 자료형과 변수 선업이 다음과 같이 주어진다.
구조적 동치
이름 동치
선언 동치
8.8 다음 Pascal 골격 프로그램을 가지고 다음 물음에 답하라.
Program main;
var x : integer;
procedure sub3; forward;
procedure sub1;
var x : integer;
procedure sub2;
begin {sub2}
...
end; {sub2}
begin {sub1}
...
end; {sub1}
procedure sub3;
begin {sub3}
...
end; {sub3}
begin {main}
...
end. {main}
위의 프로그램이 다음과 같은 순서로 호출하여 실행된다고 가정한다.
main → sub1 → sub2 → sub3
(1) 정적 영역을 가정하면, 다음 각 부프로그램에서 x에 대한 참조는 x의 어느 선언인가?
- (a) sub1: sub1의 x
(b) sub2: sub1의 x
(c) sub3: main의 x
(2) 동적 영역을 가정하고서, (1)의 문제를 반복하시오.
- (a) sub1: sub1의 x
(b) sub2: sub1의 x
(c) sub3: sub1의 x
'학교 > 전공' 카테고리의 다른 글
안드로이드 앱 개발::중간고사 소스(안드로이드프로그래밍 기초) (0) | 2018.09.27 |
---|---|
스마트앱프로그래밍 :: 중간고사 문제 및 안드로이드 프로그래밍 (0) | 2018.09.27 |