프로그래밍 언어론 연습문제[정익사 - 원유헌 저]
본 자료는 8페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
해당 자료는 8페이지 까지만 미리보기를 제공합니다.
8페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

프로그래밍 언어론 연습문제[정익사 - 원유헌 저]에 대한 보고서 자료입니다.

목차

제 1 장 프로그래밍 언어 소개

제 2 장 언어의 변천

제 3 장 프로그래밍 언어 설계

제 4 장 프로그래밍 언어의 구문과 구현 기법

제 5 장 변수, 바인딩, 식 및 제어문

제 6 장 자료형

제 7 장 영역과 수명

제 8 장 기억장소 배당

제 9 장 부프로그램

본문내용

로그램에서 조작할 수 없는 측면에서 안전하다.
단점-부프로그램에서 얻어낸 결과값을 상위 프로그램에서 사용할 수 없다.
③ 이름 전달: 장점-실매개변수와 형식매개변수가 매핑되어 있으므로 부프로그램에서 계속해서 변화되는 값을 형식매개변수에 적용할 수 있다.
단점-이해하기 힘들고 구현이 복잡하다.
④ 값-결과 전달: 장점-값 전달의 단점을 보완하기 위해서 결과값을 반환할 수 있다.
단점-반환하는 결과값의 개수가 한정되어 있고, 모든 결과값을 명시적으로 선언해주어야 한다.
■ [9.2] C++과 Ada의 사용자-정의 연산자 중복의 방법을 공부하고 언어를 평가하는 우리의 기준을 사용하여 두 언어를 비교하는 보고서를 작성하시오.
- ① C++: 기본적으로 연산자 중복이 가능하며 사칙연산과 함께 복소수 연산자의 + - * / 이 가능하도록 연산자 중복을 이용할 수 있다.
② Ada: 논리 연산자, 관계연산자, 가감연산자, 단일연산자, 승제 연산자, 지수 연산자 모두 연산자 중복 정의 허용, 단락회로 연산자(and then, else or)나 집합에 속하는지를 검사하는 연산자(in)는 중복 정의되지 않는다.
■ [9.6] 다음 Algol 형태의 프로그램을 가지고 아래 물음에 답하여라.
begin integer I ; integer array A[1: 2] ;
procedure F(X, Y) ; integer X, Y ;
begin X := X + 1 ;
Y := Y + 1 ;
print (X, Y) ;
X := X 1 ;
Y := Y 1 ;
end F ;
I := 1 ;
A[1] := 5 ;
A[2] := 10 ;
F(I, A[I]) ;
print(I, A[1], A[2]) ;
F(A[1], I) ;
print(I, A[1], A[2]) ;
end
다음 매개변수 전달 기법에 따라 출력되는 변수의 값을 써라.
(1) X와 Y가 값 전달
- 2, 6
1, 5, 10
6, 2
1, 5, 10
(2) X는 참조 전달, Y는 이름 전달
- 2, 7
1, 6, 10
7, 8
1, 5, 10
(3) X는 이름 전달, Y는 참조 전달
- 2, 6
1, 5, 10
6, 2
1, 5, 10
(4) X와 Y가 이름전달
- 2, 6
1, 5, 10
6, 2
1, 5, 10
■ [9.7] 다음 프로그램에서 매개 변수를 값에 의한 호출, 참조에 의한 호출, 그리고 값-결과에 의한 호출로 처리했을 때, 출력되는 결과는 무엇인가?
begin integer a;
procedure P(b);
begin b := b + 1; print(b, a) end
a := 1;
P(a);
print(a);
end
- ① 값에 의한 호출: 2, 1
1
② 참조에 의한 호출: 2, 1
2
③ 값-결과에 의한 호출: 2, 1
2
■ [9.8] 다음 Algol 형태의 프로그램을 가지고 아래 물음에 답하여라.
begin integer A, B;
procedure F(X, Y, Z) : integer X, Y, Z;
begin Y := Y + 1;
Z := Z + X;
end F;
A := 2;
B := 3;
F(A+B, A, A);
print A;
end
다음 매개변수 전달 기법에 따라 출력되는 변수의 값을 써라.
① 값 전달
- 2
② 이름 전달
- 8
③ 참조 전달
- 7
■ [9.9] 본문에서 설명된 5종류의 매개변수 전달 방법을 사용하여(Pascal 구문으로 쓰여진)다음 프로그램의 결과를 제시하라.
program main
var i : integer;
a : array[1..2] of integer;
procedure p(x, y : integer;);
begin
x := x + 1;
i := i + 1;
y := y + 1;
end; (* end p*)
begin
a[1] := 1;
a[2] := 1;
i := 1;
p(a[i],a[i]);
writeln(a[1]);
writeln(a[2]);
end. (*main*)
- ① 값 전달: 1, 1
② 참조 전달: 2, 2
③ 결과 전달: 2, 2
④ 값-결과 전달: 2, 2
⑤ 이름 전달: 1, 2
■ [9.10] Ada 는 값 전달인 in 매개변수 읽기-전용이라는 규칙을 갖는다. 즉, 그들은 지역 변수로 사용될 수 없다. 따라서 다음 코드는 Ada에서 비합법적이다.
procedure p (x: in INTEGER) is
begin
x:=x+1;
end p;
① 3장의 설계기준을 참조하여 이 규칙을 논하라
- 일반성을 제공한 반면에 직교성이 부족하다. Ada언어의 in 모드는 SPARK언어에서 이미 정의된 in, out, in out 모드 개념과 같지만 다른 out, in out 는 사용하지 않게 하여 일반성을 제공했지만 일반적으로 in모드는 값 전달 기법에서 형식 매개 변수가 지역 변수로 취급되는데 비하여 Ada의 in 모드는 지역 상수로만 취급이 된다. 따라서 직교성이 부족하다.
② Ada는 함수 선언에서 매개 변수들은 in 매개 변수이어야 한다 그 이유는?
- 부작용이 작용하지 않는 함수 사용을 보장하기 위해, 즉 하나의 값을 생산하는 것 이외에 아무 것도 하지 않는 객체로서 함수를 정의하여 함수의 투명성을 보장하자는 것이다.
■ [9.11] C 구문으로 작성된 다음 프로그램을 보자.
void main() {
int value = 2, list [5] = {1, 3, 5, 7, 9};
swap(value, list[0]);
swap(list[0], list[1]);
swap(value, list[value]);
}
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
다음 매개변수-전달 방법에 대해 SWAP을 3번 호출한 후에 변수value와 list의 값은 무엇인가?
① 값-전달
- value: 2
list : 1,3,5,7,9
② 참조-전달
- value: 5
list : 3,2,2,7,9
③ 이름-전달
- value: 3
list : 1,3,2,1,9
④ 값-결과 전달
- value: 3
list : 3,1,2,7,9
  • 가격2,500
  • 페이지수23페이지
  • 등록일2010.04.26
  • 저작시기2005.4
  • 파일형식한글(hwp)
  • 자료번호#602963
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니