프로그래밍언어론워크북.hwp

Size: px
Start display at page:

Download "프로그래밍언어론워크북.hwp"

Transcription

1 << 프로그래밍 언어론 >> 제 1 장 프로그래밍 언어의 소개 1.1 프로그래밍 언어란 무엇인가 * 프로그래밍 언어 - 컴퓨터에 프로그래머의 의사를 전달하는 방법 - 프로그램을 작성하는 형식 - 프로그래머가 컴퓨터를 어떻게 추상화해야 하는가에 영향 미침 - 컴퓨터가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 서술하는 표기체계 * 프로그램 - 컴퓨터와 사람이 동시에 이해할 수 있는 형식으로 작성된 글 프로그래밍 언어에서의 추상화 * 추상화(abstraction) - 속성들의 특징적인 일부분만을 가지고 주어진 작업이나 객체를 표현하고, 그들의 공통 점을 추출하여 표현하는 방법 * 자료추상화 - 문자열, 수, 탐색 트리와 같은 계산의 주체가 되는 자료의 특성을 추상화 하는 것 * 제어추상화 - 알고리듬 추상화 - 현 상황에 따라 실행 순서의 수정을 위한 제어의 특성을 추상화 하는 것 * 기본적 추상화(basic abstraction) - 가장 국지적인 기계정보를 수집한 추상화 * 구조적 추상화(structured abstraction) - 프로그램의 구조에 대한 보다 전역적인 정보에 관한 추상화 * 단위추상화(unit abstraction) - 단위 프로그램 전체 정보에 관한 추상화 계산 전형 * 명령형 언어(imperative language) - 절차 언어(procedural language) - 순차적인 명령의 수행을 기본개념으로 하는 언어 * 함수형 언어 - 함수 개념에 기반을 둔 언어 - 계산기술이 함수의 평가, 즉 알려진 값을 함수에 적용하는 것에 기반 - 적용형 언어(application language) - 1 -

2 * 논리형 언어 - 기호논리학에 기반을 둔 언어 - 계산 내용만 선언하듯이 기술 - 선언적 언어(declarative language) * 객체지향언어 - 객체에 기반을 두고 있는 언어 언어 정의 * 구문론(syntax) - 형식화가 많이 되어 있는 부분 - 언어의 표면적인 구조만을 정의 - 대부분의 언어가 문맥자유(context free) 문법 사용 * 토큰(token) - 프로그래밍 언어의 어휘 구조 * 의미론(semantics) - 프로그램 실행 시 어떠한 일이 일어나는가를 기술 1.1 프로그래밍 언어란 무엇인가 기출문제 [2009 기말] 51. 프로그래밍 언어론을 배워야 하는 이유로 알맞지 않은 것은? 1 현재 사용하고 있는 언어를 더욱 잘 이해할 수 있다. 2 유용한 프로그래밍을 구사할 수 있는 능력을 증대시킨다. 3 프로그래밍 언어를 선택할 수 있는 능력을 증대시킨다. 4 언제, 어디에 있든지 컴퓨터의 지원을 받을 수 있는 능력을 증대시킨다. 프로그래밍 언어론을 배워야 하는 이유는 다음과 같다. (1) 현재 사용하고 있는 언어를 더욱 잘 이해할 수 있다. (2) 유용한 프로그래밍을 구사할 수 있는 능력을 증대시킨다. (3) 프로그래밍 언어를 선택할 수 있는 능력을 증대시킨다. (4) 새로운 프로그래밍 언어를 배우기 쉽게 해 준다. (5) 새로운 프로그래밍 언어를 설계하기 쉽게 해 준다. 보기 4번의 내용은 해당되지 않다. 그러므로 정답은 4번이다. [2009 중간] 1. 프로그래밍 언어의 전형(계산 전형) 4가지에 대해서 설명하시오. 1. 명령형 언어(imperative language) 또는 절차언어(procedural language) - 2 -

3 : 명령의 순차적 실행(중앙처리장치의 순차적 연산 수행), 기억장소 위치를 표현하는 변수의 사용(기억장치에 대한 읽기 수행), 변수의 값을 변경하기 위한 할당문의 사용(기억장치에 대 한 쓰기 수행) 등으로 구성되며, 이것은 실제로 컴퓨터 구조나 컴퓨터 적동과 밀접한 관련 이 있다. 이렇게 순차적인 명령의 수행을 기본개념으로 하는 언어를 의미한다. 2. 함수형 언어 또는 적응형 언어(applicative language) : 계산기술이 함수의 평가, 즉 알려진 값을 함수에 적용하는 것에 기반을 두고 있다. 함수형 프로그래밍 언어는 함수의 평가 및 호출 방법을 제공한다. 함수형 언어는 변수나 변수에 대 한 할당문이 없다. 또한 반복적인 연산이 반복문에 의해 기술되지 않고, 재귀적 함수 이론 이라는 수학적 이론에 바탕을 두고 있다. 3. 논리형 언어 또는 선언적 언어(declarative language) : 기호논리학에 기반을 둔 언어이다. 논리형 언어에서는 계산을 실행하는 순서를 기술하는 대신에 무엇을 하려고 하는가를 기술함으로써 프로그램 하게 된다. 순수한 논리형 프로그램 은 반복이나 선택문을 필요로 하지 않는다. 논리형 언어에서는 계산 내용만 선언하듯이 기 술한다. 4. 객체지향 언어 : 객체에 기반을 두고 있는데, 객체는 실세계에 존재하는 모든 유형 및 무형의 대상이 될 수 있다. 객체는 특정값을 저장하는 기억장소와 그 기억장소의 값을 변경할 수 있는 연산으 로 이루어진 개념이라고 할 수 있다. 많은 객체지향 언어에서 객체는 클래스로 표현되며, 클래스는 C언어나 Pascal에서 자료형이 선언되는 방법과 유사하게 선언된다. 하지만 클래 스의 선언에는 연산에 대한 추가적인 설명이나 선언이 필요하다. [2008 기말] 37. 언어의 정의에 대한 설명으로 옳은 것은? 1 프로그래밍 언어의 시맨틱스는 자연 언어의 문법과 많은 부분에서 유사하며, 언어 구성 요소의 외부적인 형태에 관한 것이다. 2 시맨틱스는 언어 구성 요소의 외부적인 형태에 관한 것으로, 언어의 구성 요소들을 결합 하여 다른 요소를 만드는 방법을 설명한 것이다. 3 프로그래밍 언어의 어휘 구조는 언어에서 사용할 수 있는 단어의 구조를 나타내준다. 4 신택스를 공식적으로 정의할 수 있는 방법으로 널리 인정받고 있는 것은 아직은 없다. 1번 해설 : 시맨틱스에 대한 설명이 아니라 신택스(구문론)에 관한 설명이다. 2번 해설 : 시맨틱스의 경우 형식화가 잘 이루어져 있지 않다. 3번 해설 : 구문과 밀접한 관련이 있는 것이 어휘구조(lexical structure)인데 자연어의 맞춤법과 유사하다. 프로그래밍 언어의 어휘 구조는 보통 토큰(token)이라고 한다. 4번 해설 : 언어의 구문에 관한 부분은 형식화가 많이 되어 있는 부분으로 오늘날 대부 분의 언어가 문맥자유(context free) 문법을 사용하고 있다. 그러므로 정답은 3번이다. 63. 다음 중 언어의 분류에 관한 설명으로 옳은 것은? 1 함수언어는 폰노이만 구조에 개념적 기초를 두고 있다

4 2 논리언어는 술어논리에 기초하고 있으며, 술어논리는 공리와 규칙으로 구성된다. 3 명령형 언어는 적용형 언어라고도 한다. 4 객체 지향 언어는 선언형 프로그래밍이라 불리우며, 객체들이 모여서 하나의 프로그램이 되는 것으로 간주한다. 1번 해설 : 폰노이만 구조에 개념적 기초를 두고 만들어진 언어는 명령형 언어이다. 2번 해설 : 논리형 언어는 기호논리학에 기반을 두고 있다. 3번 해설 : 명령형 언어는 절차언어라고도 하며, 적용형 언어는 함수형 언어와 같은 개 념이다. 4번 해설 : 선언형 프로그래밍이라 불리우는 것은 논리형 언어와 관련이 있다. 그러므로 정답은 2번이다. [2008 중간] 2. 시맨틱스와 신택스의 정의를 쓰고, 차이점에 대해 설명하시오. 1. 구문론(syntax) : 프로그램이 언어의 구문은 많은 면에서 자연어와 유사하다. 언어의 구문에 관한 부분은 형식화가 많이 되어 있는 부분으로 오늘날 대부분의 언어가 문맥자유(context free)문법을 사용하고 있다. 구문과 밀접한 관련이 있는 것이 어휘구조(lexical structure)인데 자연어의 맞춤법과 유사하다. 프로그래밍 언어의 어휘 구조는 보통 토큰(token)이라고 한다. 2. 의미론(semantics) : 언어의 구문은 언어의 표면적인 구조만을 정의한다. 하지만 의미론은 이보다 훨씬 복잡하 다. 의미론은 프로그램 실행 시 어떠한 일이 일어나는가를 기술한다. if문과 같은 예의 경우 조건문이 거짓으로 판명되었을 때, else문 이하가 존재하지 않는 경우와 같은 많은 예외적 인 경우에 대한 정의가 있어야만 한다. 하지만 언어의 구문과는 달리 의미론의 경우, 형식 화가 잘 이루어져 있지 않다. [2007 기말] 68. 프로그래밍 언어 전형과 해당 언어의 연결이 옳지 않은 것은? 1 명령형 언어 - Scheme 2 함수언어 - LISP 3 논리 언어 - Prolog 4 객체지향언어 - Smalltalk 1번 해설 : Common LISP와 Scheme 등은 모두 LISP의 후예로 오늘날 인공지능 분야에 서 폭넓게 사용되고 있다. 일반적인 리스트 구조와 함수의 응용을 기본으로 하는 언어로 명령형 언어가 아닌 함수형 언어이다. 그러므로 정답은 1번이다. 70. 프로그래밍 언어의 신택스를 정의하는데 이용되는 문법은? 1 문맥의존형 문법 2 무제한 문법 3 문맥자유 문법 4 정규문법 - 4 -

5 프로그래밍 언어의 구문은 많은 면에서 자연어와 유사하다. 언어의 구문에 관한 부분은 형 식화가 많이 되어 있는 부분으로 오늘날 대부분의 언어가 문맥자유(context free) 문법을 사용하고 있다. 그러므로 정답은 3번이다. [2006 기말] 37. 프로그래밍 언어의 전형에 포함되지 않는 것은? (3번) 1 명령형 언어 3 추상 언어 2 논리 언어 4 객체지향 언어 프로그래밍 언어의 계산 전형에 해당하는 것은 다음과 같다. (1) 명령형 언어(imperative language) 또는 절차언어(procedural language) (2) 함수형 언어 또는 적용형 언어(applicative language) (3) 논리형 언어 또는 선언적 언어(declarative language) (4) 객체지향 언어 추상 언어는 해당되지 않는다. 그러므로 정답은 3번이다. [2006 하계계절] 2. 다음 중 프로그래밍 언어의 전형에 대한 설명으로 틀린 것은? 1 함수 언어는 적용적 언어라고도 한다. 2 논리 언어는 공리, 사실, 추론 규칙, 증명할 정리나 질의로 구성된다. 3 객체 지향 프로그래밍에서는 객체들이 모여 하나의 프로그램이 되는 것으로 간주한다. 4 명령형 언어를 선언형 프로그래밍이라고도 한다. 4번 해설 : 선언형 프로그래밍이라 불리우는 것은 논리형 언어와 관련이 있다. 명령형 언어는 절차언어라고도 한다. 그러므로 정답은 4번이다 39. 다음 언어의 정의에 관한 설명 중 틀린 것은? (1번) 1 언어의 정의는 신택스와 시맨틱스, 그리고 컴파일러에 의해 정의된다. 2 신택스는 언어 구성 요소의 외부적인 형태에 관한 것으로, 언어의 구성 요소들을 결합하 여 다른 요소를 만드는 방법이다. 3 언어의 시맨틱스는 프로그램이 무엇을 어떻게 수행할지 나타낸다. 4 신택스는 대부분 문맥 무관형 문법으로 정의된다. 1번 해설 : 프로그래밍 언어의 형식 정의는 프로그램 설계 과정을 규격화할 때도 필요하 - 5 -

6 다. 언어의 정의는 두 가지 부분으로 나누어지는데, 하나는 구문론(syntax)에 관한 것이고 다른 하나는 의미론(semantics)에 관한 것이다. 그러므로 정답은 1번이다. [2005 기말] 46. 다음 중 언어의 분류에 관한 설명으로 틀린 것은? 1 함수언어는 함수 언어계산을 수행하는 주된 방법이 매개변수에 함수를 적용하는 것이다. 2 논리언어는 명령문을 순서대로 나열한 것이다. 3 명령형 언어는 폰노이만 구조에 개념적 기초를 두고 있다. 4 객체 지향 언어는 객체들이 모여서 하나의 프로그램이 되는 것으로 간주한다. 해설) 2번 해설 : 명령문을 순서대로 나열하는 것은 명령형 언어 또는 절차언어라고 한다. 논리언어는 계산을 실행하는 순서를 기술하는 대신에 무엇을 하려고 하는가 를 기술함으로써 프로그램 하게 된다. 그러므로 정답은 2번이다. 70. 다음 언어의 정의에 관한 설명 중 틀린 것은? 1 프로그래밍 언어의 신택스는 언어 구성 요소의 외부적인 형태에 관한 것이다. 2 프로그래밍 언어의 신택스는 언어의 구성 요소들을 결합하여 다른 요소를 만드는 방법을 설명한 것이다. 3 프로그래밍 언어의 시맨틱스는 어휘 구조를 이용하여 사용할 수 있는 단어의 구조를 표 현한다. 4 시맨틱스의 공식적인 정의에 대한 접근 방법으로 실행적 방법, 함수적 방법, 공리적 방 법이 대표적이다. 3번 해설 : 구문과 밀접한 관련이 있는 것이 어휘구조(lexical structure)인데 자연어의 맞춤법과 유사하다. 프로그래밍 언어의 어휘 구조는 보통 토큰(token)이라고 한다. 어휘구조와 관련이 있는 것은 시맨틱스가 아닌 구문론(신택스)이다. 그러므로 정답은 3번이다

7 1.2 프로그래밍 언어의 역사 디지털 컴퓨터 이전의 언어 * 찰스 배비지(Charles Babbage : 1792~1871) - 수치계산을 처리하기 위해 차분 엔진과 분석 엔진 설계 - 분석 엔진은 오늘날의 컴퓨터와 구조가 매우 유사 * 오거스타(Ada Augusta) - 세계 최초의 프로그래머로 인식 년대 : 최초의 프로그래밍 언어 * 저급언어 - 기계의존적인 이진수 개념이거나 자연언어와 차이가 많은 언어 - 사람이 이해하기보다는 컴퓨터의 내부구조에 의존적인 언어 * Fortran(FORmula TRANslation) - 최초의 고급언어 - 응용과학 분야에서 우위를 차지하고 있음 * Cobol(COmmon Business-Oriented Language) - 미 국방성에서 해군 그레이스 호퍼가 이끈 팀에 의해 만들어짐 - 은행이나 대규모 회사에서 서류처리와 같은 사무처리를 위해 재빨리 채택됨 * Alglo 60(ALGOrithmic Language 60) - 알로리듬을 기술하기 위한 일반적인 표현언어 * LISP(LISt Processor) - 일반적인 리스트 구조와 함수의 응용을 기본으로 한 언어 * APL(Automatic Programming Language) - 배열과 행렬을 포함하는 수학적 연산을 쉽게 프로그램이 하기 위한 언어 - IBM에서 제작 년대 : 다양한 프로그래밍 언어의 출현 * Simula 67 - 노르웨이 컴퓨터 센터에서 뉘고르(Kristen Nygaard)와 달(Ole-John Dahl)에 의해 탄생 - 시뮬레이션을 위해 디자인 됨 - 객체지향언어의 기본이 되는 클래스 개념 도입 * Basic(Beginners All-purpose Symbolic Instruction Code) - 다트머스(Dartmouth) 대학교의 존 케머니(John Kemeny)와 토머스 커츠(Thomas Kurtz)가 개발 - 새로운 시분할 시스템을 위한 간단한 언어로 개발 년대 : 간결성, 추상화 그리고 효율성 * C언어 - 벨연구소의 데니스 리치(Dennis Ritchie)에 의해 고안 - 컴퓨터 구조에 대한 접근을 제공해 주는 개념 - 7 -

8 - 중급 프로그래밍 언어로 부르기도 함 * Pascal - Algol의 개념 도입 - 복잡하거나 교육적 목적에 부합되지 않는 주요 기능은 생략 - 교육용으로뿐만 아니라 상업적으로도 높은 기능성 갖춤 년대 : 통합과 새로운 방향 * Ada 년대를 대표할 수 있는 중요한 프로그래밍 언어 - 미국 국방성의 주도로 탄생 - J. 이치바이어(J. Ichbiah)가 이끈 개발자들은 자료추상화, 타입 메커니즘(package), 병 행처리(task)와 예외처리기 등의 특징을 처음 도입 * Modula-2 - 니클라우스 워스(Niklaus Wirth)가 개발 - 운영체제를 구축하기 위해 고안된 Modula라는 언어를 기본으로 한 언어 - 추상화와 부분적 동시처리 개념과 내장형 시스템 프로그래밍을 목적으로 하드웨어에 쉽게 접근할 수 있는 기능도 추가한 다목적 언어 * ML(Meta Language) - 에든버러(Edinburgh) 대학교의 로빈 밀너(Robin Milner)가 개발 - 문법과 타입 검사가 훨씬 유연함 * Prolog - A. 콜메로에르(A. Colmerauer)가 이끄는 그룹에 의해 마르세유에서 개발 - 인공지능 분야에서 많이 쓰이고 있고 모범적인 언어로 인식됨 * Smalltalk - 제록스사의 팰로앨토 연구소에서 앨런 케이(Alan Kay), 댄 인갈스(Dan Ingalls)와 다른 연구자에 의해 개발 - 객체지향 접근방식으로 일관된 객체지향언어의 순수한 모범 케이스 * C++ - C언어를 확장한 개념 - 비야네 스트롭스트룹(Bjarne Stroustrup)이 개발 년대 : World Wide Web 프로그래밍(Java) * Java 년대 가장 특징적인 프로그래밍 언어 - 월드 와이드 웹 프로그래밍을 쉽게 구현가능 - 자바가상기계(JVM) 위에서 동작하기 때문에 다양한 응용분야에 적합 * Java 애플릿 - 웹 클라이언트에서 실해오딜 수 있는 작은 프로그램 1.2 프로그래밍 언어의 역사 기출문제 [2007 기말] - 8 -

9 69. 다음 중 추상자료형을 지원하는 언어가 아닌 것은? (4번) 1 Smalltalk 2 Ada 3 Modula-2 4 Simula 67 1번 해설 : Smalltalk는 객체지향 접근방식으로 일관된 객체지향언어의 순수한 모범 케이 스라고 할 수 있다. 2번 해설 : 논리형 언어는 기호논리학에 기반을 두고 있다. 3번 해설 : 명령형 언어는 절차언어라고도 하며, 적용형 언어는 함수형 언어와 같은 개 념이다. 4번 해설 : 선언형 프로그래밍이라 불리우는 것은 논리형 언어와 관련이 있다. 그러므로 정답은 4번이다. [2005 기말] 62. 다음 중 추상 자료형을 쓸 수 없는 언어는? (4번) 1 Java 3 Small talk 2 C++ 4 FORTRAN - 9 -

10 1.3 프로그래밍 언어의 설계기준 효율성 * 최적화 - 목적 코드의 효율성 - 번역기가 효율적인 실행 코드를 생성할 수 있도록 언어설계가 이루어지는 것 * 번역의 효율성 - 원시 코드가 효율적으로 번역되도록 허가하는지, 즉 알맞은 크기의 번역기로 빠르게 번 역할 수 있는지에 대한 것 * 신뢰성 - 프로그램 실행시에 예상치 못한 행동을 하거나 결함을 발생시키는 방향으로 행동하지 못하도록 하는 것 * 프로그래밍 효율성 - 얼마나 쉽고 빠르게 프로그램을 작성할 수 있는가 하는 것 - 프로그램의 작성력 일반성, 직교성, 획일성 * 일반성 - 특별한 경우를 피하거나 밀접한 관련이 있는 여러 개념을 일반적인 하나의 개념으로 결합한 것을 의미 * 직교성 - 같은 언어의 구성요소가 문맥이 다르다고 다르게 행동해서는 안 된다는 것을 의미 * 획일성 - 의미적으로 형식적으로 유사한 것들은 그 유사성을 프로그래밍 언어 내에서 일관되게 유지되어야 함을 의미 표현력 * 표현력 - 언어가 복잡한 과정이나 구조를 표현하는 데 용이함을 의미 정확성 * 정확성 - 프로그래밍 언어의 정확한 정의, 즉 프로그래밍 언어의 행위를 예측할 수 있는 정의를 기본적으로 필요로 하는 것을 의미 컴퓨터 독립성 * 독립성 - 하드웨어나 운영체제 측면의 컴퓨터에 대한 독립적인 프로그래밍 언어 정의를 통하여 보장될 수 있는 것을 의미 안전성

11 * 안전성(security) - 프로그래밍 오류를 줄이고 오류를 쉽게 발견하기 위한 것 - 프로그래밍 언어의 자료형, 형 검사, 변수선언 등 확장성 * 확장성 - 프로그래머에게 언어의 특징을 더 추가할 수 있도록 하자는 것 부분성 * 부분성 - 프로그래머가 언어에 대한 적은 지식과 언어구조에 대한 일부의 이해만 있어도 효과적 으로 프로그램을 작성할 수 있도록 해야 하는 것을 의미

12 제 2 장 프로그래밍 언어의 구조 및 해석 * 구문 - 프로그래밍 언어의 형식적인 구조를 의미 * 노엄 촘스키(Noam Chomsky) - 문법의 종류 분류 - 문맥자유 문법에 대한 아이디어 제안 2.1 언어구문 프로그래밍 언어의 어휘구조 * EBCDIC 코드 - IBM의 360 계열에 의해 처음 발표된 것 - 8비트 조합으로 만들어지는 코드 * ASCII 코드 - 7비트로 구성되어 있으며, 최대로 에 해당하는 128개까지의 문자 표현 가능 * 유니코드 체계 - 16비로 구성되어 있으며, 국제표준으로 대두 * 어휘 토큰 - 프로그래밍 언어의 어휘구조 - 프로그래밍 언어 알파벳 문자로 구성된 단어 * 언어 구성자 - 한 개 이상의 어휘 토큰을 가지고 구문적으로 허용된 프로그램의 일부 구조 - 언어 구성자를 부르는 이름이 식별자라는 토큰임 * 예약어(reserved word) - 미리 정의된 식별자(predefined identifier) 중에서 재정의할 수 없도록 한 식별자 문맥자유 문법과 BNF * BNF - 생성규칙(production rule)의 집합 * 비단말(nonterminal) 기호 - 각괄호(<>)로 묶인 기호 - BNF 규율로 다시 정의될 대상임을 의미 * 단말(terminal) 기호 - 각괄호로 묶이지 않은 기호 - 각 언어에서 사용하는 알파벳 문자 집합과 예약어가 있음 * 문맥자유 문법 - 모든 생성규칙에서 정의될 대상이 하나의 비단말기호만으로 구성된 문법 * 문맥의존 문법(context-sensitive grammar) - 특수한 문맥에 의존하여 대치되는 문법

13 * EBNF(Extended BNF) - BNF보다 읽기 쉽고 간결하게 표현할 수 있는 확장된 표기법 구문도표 * 구문도표(syntax diagram) - 형태가 순서도와 비슷하며, EBNF 선언과 바로 대응 가능 파스 트리와 프로그램 문법의 모호성 * 파스 트리(parse tree) - 한 표현이 주어진 BNF에 의하여 작성될 수 있는지 없는지를 확인하기 위해 사용 - 주어진 BNF를 이용하여 그 대상을 근(root)으로 하고 단말 노드를 왼쪽에서 오른쪽으 로 나열한 것이 검증하고자 하는 표현과 같이 되는 트리 * 추상구문 트리(abstract syntax tree) - 파스 트리에서 비단말기호를 없앤 본질적인 구조를 나타내는 트리 - 구문 트리(syntax tree) * 모호성 - 어떠한 명확한 구조를 표현하지 않는 것을 의미 2.1 언어구문 기출문제 [2009 기말] 52. 다음 보기는 BNF 표기법으로 작성된 문법이다. 이 문법을 EBNF 표기법으로 올바르게 변경한 것은? BNF 표현 <compound-statement> ::= begin <statement-list> end <statement-list> ::= <statement> <statement-list> ; <statement-list> 1 <compound-statement> ::= begin <statement> { ; <statement>} end 2 <statement-list> :: = begin <statement> {; <statement>} end 3 <compound-statement> :: = begin { ; <statement-list> } end 4 <statement-list> :: = begin { ; <statement-list> } end BNF 표기법으로 모든 프로그래밍 언어를 표기할 수 있지만, 보다 읽기 쉽고 간결하게 표현 할 수 있는 확장된 EBNF(Extended BNF)를 사용하기도 한다. EBNF는 특수한 의미를 갖 는 메타 기호를 더 사용하여 반복되는 부분이나 선택적인 부분을 간결하게 표현할 수 있으 며, 반복되는 부분을 나타내려면 { }를 사용한다. 즉, {a}는 a가 0번 이상 반복될 수 있음 을 의미한다. 보기에서 제시된 BNF 표현에서 <statement-list>가 반복되므로 EBNF의 { }를 사용하여 다음과 같이 표시한다. <compound-statement> ::= begin <statement> { ; <statement> } end

14 그러므로 정답은 1번이다. 53. 비단말에 대한 구문도표를 그리면 다음과 같다. 이에 해당하는 EBNF 문법으로 올바른 것은? 1 A ::= x { '(' B ')' } 2 A ::= '(' x B ')' 3 A ::= x '(' B ')' 4 A ::= x(b) 다음의 EBNF를 구문도표로 바꾸면 보기에서 제시된 표현과 같다. A :: x '(' B ')' 여기서 x, (, )는 단말기호를 나타내며, A는 비단말기호를 나타낸다. 단말기호일 경우 원 또 는 타원 안에 표기하고, 비단말일 경우 사각형 안에 표기한다. A ::=α 1 α 2 α n은 다음과 같이 나타낼 수 있다. 그러므로 정답은 3번이다 54. 동일 스트링(3-2*5)에 대해서 다음과 같이 두 가지의 서로 다른 유도과정이 발생하는 문제점과 관련이 없는 것은? 1 곱셈과 뺄셈 연산에 관해 우선순위를 고려하지 않은 문법이다. 2 명확한 구조를 표현하지 않는 모호성을 갖는 문법이다. 3 구조는 다르지만 트리의 의미를 서로 같으므로 연산을 추가해야 한다. 4 어떤 구조가 의미 있는지를 결정할 수 있게 모호성 제거규칙을 기술해야 한다

15 서로 다른 유도가 다른 파스 트리를 생성하기도 한다. 위의 문제에서 3-2*5 는 두 가지 유도과정을 거쳐 유도된다. 1) <exp> <exp> - <exp> <exp> - <exp> * <exp> (두 번째 <exp>가 <exp>*<exp>로 대치) <number> - <exp> * <exp> 3-2 * 5 2) <exp> <exp> * <exp> <exp> - <exp> * <exp> (첫 번째 <exp>가 <exp>-<exp>로 대치) <number> - <exp> * <exp> 3-2 * 5 위와 같이 동일 스트링에 대해서 서로 다른 파스(또는 구문) 트리가 만들어지면 이러한 문 법을 모호(ambiguous)하다고 한다. 모호한 문법은 어떠한 명확한 구조를 표현하지 않기 때 문에 어려움을 야기한다. 모호성을 갖는 문법을 유용하게 하려면 문법을 모호함이 없도록 개정하거나, 어떤 구조가 의미 있는지를 결정할 수 있게 모호성 제거규칙(disambiguating rule)을 기술해야 한다. 위의 두 구문 트리의 의미는 서로 다르다. 즉, 왼쪽 것은 곱셈 후 뺄셈을 의미하여, 그 결과 값이 -7이 되고, 오른쪽 것은 뺄셈 후 곱셈을 의미하여 그 결과값이 5가 된다. 이렇게 파스 트리는 연산순서를 정해 준다. 위의 식에 대한 일반적인 의미는 곱셈이 뺄셈보다 우선순위 를 갖기에 왼쪽 트리를 택해야 된다. 그러므로 정답은 3번이다. [2008 기말] 41. 아래 BNF로 표현된 <수>에 관한 문법규칙을 EBNF 표기로 올바르게 나타낸 것은? <수>::= <수><숫자> <숫자> <숫자>::= <수>::= [<숫자>] 2 <수>::= {<숫자>} 3 <수>::= <숫자>[<숫자>] 4 <수>::= <숫자>{<숫자>} BNF 표기법으로 모든 프로그래밍 언어를 표기할 수 있지만, 보다 읽기 쉽고 간결하게 표현 할 수 있는 확장된 EBNF(Extended BNF)를 사용하기도 한다. EBNF는 특수한 의미를 갖 는 메타 기호를 더 사용하여 반복되는 부분이나 선택적인 부분을 간결하게 표현할 수 있으 며, 반복되는 부분을 나타내려면 { }를 사용한다. 즉, {a}는 a가 0번 이상 반복될 수 있음 을 의미한다

16 보기에서 제시된 BNF 표현에서 <숫자>가 반복되므로 EBNF의 { }를 사용하여 다음과 같 이 표시한다. <수>::= <숫자>{ <숫자> } 그러므로 정답은 4번이다. [2008 중간] 1. BNF와 확장BNF(EBNF)가 무엇인지 설명하고, 차이점에 대해서 설명하시오. 한 프로그래밍 언어의 구문에 대한 BNG 정의는 생성규칙(production rule)의 집합으로 정 의될 수 있으며, 정의된 언어로 작성 가능한 모든 정상적인 프로그램을 이 생성규칙을 적용 해 산출한다. 생성규칙은 작성된 프로그램이 구문에 맞는 프로그램인지 아닌지를 결정하는 구문규율로도 사용한다. 생성규칙의 왼쪽에는 정의될 대상(object)이 표현되며, 오른쪽에는 그 대상에 대한 정의가 나타난다. BNF 표기법으로 모든 프로그래밍 언어를 표기할 수 있지만, 보다 읽기 쉽고 간결하게 표현 할 수 있는 확장된 EBNF(Extended BNF)를 사용하기도 한다. EBNF는 특수한 의미를 갖 는 메타 기호를 더 사용하여 반복되는 부분이나 선택적인 부분을 간결하게 표현할 수 있으 며, 반복되는 부분을 나타내려면 { }를 사용한다. 즉, {a}는 a가 0번 이상 반복될 수 있음 을 의미한다. [2007 기말] 61. 다음 문맥자유 문법과 관련된 용어의 정의로 틀린 것은? 1 비단말 : 문법구조명 2 메타기호 : 선택적 구조 3 단말 : 단어 혹은 토큰기호 4 생성 : 문법규칙 1번 해설 : 각괄호(<>)로 묶인 기호는 비단말(nonterminal)기호라고 하며, BNF 규율로 다시 정의될 대상임을 의미한다. 2번 해설 : BNF 표기에서 사용된 특수기호(::=,, <>)는 메타 기호(meta-symbol)라 불 리며, 메타 기호는 표현하려는 언어의 일부분이 아니라 그 언어를 표현하려 고 사용한 특수기호를 말한다. 3번 해설 : 각괄호로 묶이지 않은 기호는 단말(terminal)기로하고 하며, 이러한 단말기호 에는 각 언어에서 사용하는 알파벳 문자 집합과 예약어가 있다. 4번 해설 : BNF의 정의는 생성규칙(production rule)의 집합으로 정의될 수 있으며, 정 의된 언어로 작성 가능한 모든 정상적인 프로그램을 이 생성규칙을 적용해 산출한다. 생성규칙은 작성된 프로그램이 구문에 맞는 프로그램인지 아닌지 를 결정하는 구문규율로도 사용한다. 그러므로 정답은 2번이다. 63. 식에 대한 BNF로 표현된 문법규칙 중, +'보다는 * 가 더 높은 우선 순위를 갖도록 표 현된 문법은? 1 <식>::=<식>*<식> <식>::=<식>+<식>

17 2 <식>::=<식>+<식> <식>::=<식>*<식> 3 <식>::=<식>*<식> <항> <항>::=<항>+<항> <수> 4 <식>::= <식>+<식> <항> <항>::=<항>*<항> <수> 곱셈이 뺄셈보다 높은 우선순위를 갖는다는 사실을 어떻게 표현할 수 있을까? 이 경우 문법 과 별개로 모호성 제거규칙을 기술하거나 모호성을 갖지 않도록 문법을 개정할 수 있다. 그 리고 파스 트리의 보다 낮은 지점에서 *가 적용되는 순위폭포(precedence cascade)를 형 성하도록 한다. 4번의 경우 파스 트리로 표현하면 다음과 같다. 그러므로 정답은 4번이다. 64. 이 문법의 문제점은 동일한 문자열에 대하여 상이한 분석나무가 나타날 수 있어 가능한 여러 분석 나무 중 실제로 사용되는 분석나무에 따라 그 의미가 달라질 수 있다는 것에 있 다. 무엇에 관한 설명인가? 1 문맥자유 문법 2 모호한 문법 3 속성 문법 4 다형적 문법 동일 스트링에 대해서 서로 다른 파스(또는 구문) 트리가 만들어지면 이러한 문법을 모호 (ambiguous)하다고 한다. 모호한 문법은 어떠한 명확한 구조를 표현하지 않기 때문에 어려 움을 야기한다. 모호성을 갖는 문법을 유용하게 하려면 문법을 모호함이 없도록 개정하거 나, 어떤 구조가 의미 있는지를 결정할 수 있게 모호성 제거규칙(disambiguating rule)을 기술해야 한다. 그러므로 정답은 2번이다 [2007 중간] 1. 파스 트리와 모호성에 대해 설명하시오. 한 표현이 주어진 BNF에 의하여 작성도리 수 있는지 없는지를 확인하기 위해 주어진 BNF 를 이용하여 그 대상을 근(root)으로 하고 단말 노드를 왼쪽에서 오른쪽으로 나열한 것이 검증하고자 하는 표현과 같이 되는 트리를 작성하게 되는데 이 트리를 파스 트리(parse tree)라고 한다. 주어진 표현에 대한 파스 트리가 존재하면 그 표현은 주어진 BNF에 의하 여 작성되었다고 말하며, 해당 파스 트리가 존재하지 않으면 주어진 BNF에 의해 작성될 수 없다고 말한다. 동일 스트링에 대해서 서로 다른 파스(또는 구문) 트리가 만들어지면 이러한 문법을 모호

18 (ambiguous)하다고 한다. 모호한 문법은 어떠한 명확한 구조를 표현하지 않기 때문에 어려 움을 야기한다. 모호성을 갖는 문법을 유용하게 하려면 문법을 모호함이 없도록 개정하거 나, 어떤 구조가 의미 있는지를 결정할 수 있게 모호성 제거규칙(disambiguating rule)을 기술해야 한다. [2006 기말] 66. 다음의 신택스 도표에 해당하는 EBNF 표현은? 1 <F>::=(<E>),<N> 3 F::=(E), N 2 <F>::=(<E>) <N> 4 F::=(E) N 다음의 EBNF를 구문도표로 바꾸면 보기에서 제시된 표현과 같다. <F>::=(<E>) <N> 여기서 (, )는 단말기호를 나타내며, A, E, N은 단말기호를 나타낸다. 단말기호일 경우 원 또는 타원 안에 표기하고, 비단말일 경우 사각형 안에 표기한다. A ::=α 1 α 2 α n은 다음과 같이 나타낼 수 있다. 그러므로 정답은 2번이다. [2006 중간] 2. 어휘구조란 토큰의 구조를 말한다. 토큰의 범주에는 예약어, 식별자, 특수기호, 상수가 대표적이다. 이에 대해 설명하시오. 프로그래밍 언어의 어휘구조는 위에서 논의된 프로그래밍 언어 알파벳 문자로 구성된 단어, 즉 어휘 토큰이다. 어휘구조는 구문구조와 별개이지만 밀접한 관련이 있다. 일반적으로 번 역기는 어휘분석(lexical analysis, scanning) 단계에서 입력 프로그램의 일련의 문자를 토 큰으로 구분하고, 구문분석(syntax analysis) 단계에서 이를 처리하여 구문구조를 결정한다. 한 개 이상의 어휘 토큰을 가지고 구문적으로 허용된 프로그램의 일부 구조를 언어 구성자 라고 한다. 이러한 언어 구성자를 부르는 이름이 식별자라는 토큰이다. 번역과정의 속도를 높이고 프로그램의 신뢰성을 향상시키기 위해 프로그래밍 언어는 일부 식별자(predefined identifier) 중에서 재정의할 수 없도록 한 식별자를 예약어(reserved word)라고 한다. 예를 들면 C 언어에는 if, while, int 등 32개의 예약어가 있으며 scanf, printf, strcnp, #define 등은 예약어가 아닌 미리 정의된 식별자로 간주한다

19 [2006 하계계절] 7. 어휘 구조, 즉 토큰의 구조의 범주분류가 아닌 것은? 1 종결자 3 상수 2 예약어 4 식별자 어휘구조란 토큰의 구조를 말한다. 토큰의 범주에는 예약어, 식별자, 특수기호, 상수가 대표 적이다. 그러므로 정답은 1번이다. 8. 모호한 문법(ambiguous grammar)으로 인한 문제점은? 1 데이터 보호를 위한 별도의 장치나 방법이 필요하다. 2 분석 나무의 크기를 제한하여 모호성을 제거해야 한다. 3 가능한 여러 분석 나무를 생성해 내기 때문에 그 의미가 달라질 수 있다. 4 연산의 우선순위 때문에 결합규칙을 적용할 수 없다. 동일 스트링에 대해서 서로 다른 파스(또는 구문) 트리가 만들어지면 이러한 문법을 모호 (ambiguous)하다고 한다. 모호한 문법은 어떠한 명확한 구조를 표현하지 않기 때문에 어려 움을 야기한다. 모호성을 갖는 문법을 유용하게 하려면 문법을 모호함이 없도록 개정하거 나, 어떤 구조가 의미 있는지를 결정할 수 있게 모호성 제거규칙(disambiguating rule)을 기술해야 한다. 그러므로 정답은 3번이다

20 2.2 프로그래밍 언어 구현 기법 컴파일 기법 * 컴파일 기법 - 주어진 고급 프로그램이 언어로 작성한 프로그램을 실제 컴퓨터의 기계어로 번역하여 동등한 의미의 기계어 프로그램을 만들어 실행시키는 방법 * 컴파일러(compiler) - 고급언어인 원시언어를 실제 기계언어에 가까운 저급언어인 목적언어로 만들어 주는 번역기 * 어셈블러(assembler) - 목적언어가 준기계어 형태라는 점에서는 컴파일러와 유사하나 원시언어가 어셈블리 언 어인 번역기 * 링커(linker) - 재배치 형태의 기계어로 구성된 여러 개의 프로그램을 묶어서 로드 모듈이라는 어느 정도 실행 가능한 하나의 기계어로 번역해 주는 번역기 * 로더(loader) - 로드 모듈로 된 기계어 프로그램을 실제 실행 가능한 기계어로 번역해서 주기억장치에 적재하는 것 * 프리프로세서(preprocessor) - 원시언어와 목적언어가 모두 고급언어인 번역기 인터프리트 기법 * 인터프리트 기법 - 고급언어를 기계어로 하는 컴퓨터를 하드웨어로 구성하는 대신에 그 고급언어 기계를 다른 기계에서 실해오디는 소프트웨어로 시뮬레이션하여 구성하는 방법 인터프리트 기법과 컴파일 기법의 비교 * 중간 코드 실행기법 - 컴파일 기법과 인터프리트 기법을 함께 사용하여 컴퓨터에 구현한 방법 - 프로그램을 실행시키기 쉬운 형태로 번역한 후에, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행하는 방법 2.2 프로그래밍 언어 구현 기법 기출문제 [2009 기말] 37. 재배치 형태의 기계어로 구성된 여러개의 프로그램을 묶어서 로드 모듈이라는 어느 정 도 실행 가능한 하나의 기계어로 번역해 주는 번역기는? 1 어셈블러 2 로더 3 링커 4 프리프로세서 링커(linker) : 링커(또는 링키지 에디터)는 재배치 형태의 기계어로 구성된 여러 개의 프로그램(대부분의

21 경우 각각 컴파일된 목적 코드와 라이브러리 프로그램)을 묶어서 로드 모듈(load module) 이라는 어느 정도 실행 가능한 하나의 기계어로 번역해 주는 번역기이다. 그러므로 정답은 3번이다. 55. 프로그래밍 언어 구현 기법을 설명한 것으로 올바른 것은? 1 컴파일 기법이란 고급언어 기계를 다른 기계에서 실행되는 소프트웨어로 시뮬레이션하여 구성하는 방법을 의미 2 인터프리트 기법이란 원시언어로 작성된 프로그램을 입력으로 읽어서 목적언어로된 기능 이 동등한 프로그램을 출력해 주는 언어 처리기 의미 3 실행시간의 효율을 중시하는 프로그래밍 언어는 주로 인터프리트 기법을 적용한다. 4 컴파일 기법의 경우 한 줄의 원시 프로그램이 때로는 몇백 개의 기계어 명령으로 번역되 기 때문에 매우 큰 기억장치가 필요하다. 1번 해설 : 컴파일 기법이 아닌 인터프리트 기법에 대한 설명이다. 2번 해설 : 인터프리트 기법이 아닌 컴파일 기법에 대한 설명이다. 3번 해설 : 실행시간의 효율을 중시하는 프로그래밍 언어는 주로 컴파일 기법을, 사용자의 유연성을 중시하는 언어는 주로 인터프리트 기법을 적용하게 된다. 그러므로 정답은 4번이다. [2009 중간] 2. 컴파일 기법과 인터프리트 기법에 대해서 설명하시오. 컴파일 기법(compile) : 주어진 고급 프로그래밍 언어로 작성한 프로그램을 실제 컴퓨터의 기계어로 번역하여 동 등한 의미의 기계어 프로그램을 만들어 실행시키는 방법이다. 일반적으로 컴파일러는 원시 (source)언어(고급 또는 저급언어)로 작성된 프로그램을 입력으로 읽어서 목적(object)언어 (저급 또는 고급언어도 가능)로 된 기능이 동등한 프로그램을 출력해 주는 언어 처리기로 정의된다. 인터프리트 기법(interpretation) : 고급언어로 작성된 프로그램을 실행하고자 할 경우, 그와 동일한 기계어로 번역하여 실행 시키는 방법 외에도 고급언어를 기계어로 취급할 수 있는 컴퓨터를 가상하여 실제 컴퓨터에 서 시뮬레이션하여 실행시키는 방법도 있다. 인터프리트 기법(또는 소프트웨어 시뮬레이션 기법)이란 고급언어를 기계어로 하는 컴퓨터를 하드웨어로 구성하는 대신에 그 고급언어 기 계를 다른 기계에서 실행되는 소프트웨어로 시뮬레이션하여 구성하는 방법을 의미한다. [2008 기말] 38. 프로그래밍 언어 번역에 관한 설명으로 옳은 것은? 1 현재의 컴퓨터는 저수준의 언어인 기계어와 중간코드만을 바로 실행할 수 있다. 2 고수준의 프로그래밍 언어로 작성된 프로그램을 곧바로 실행하는 번역기를 컴파일러라 한다

22 3 프로그램을 실행에 적합한 형태로 바꾸는 번역기를 인터프리터라 한다. 4 컴파일러는 원시 프로그램을 받아들여 목적 프로그램을 만들어 낸다. 1번 해설 : 고급언어로 작성된 프로그램을 실제 컴퓨터에서 실행시킬 수 있는 기계어로 변경하는 구현방법으로는 컴파일 기법과 인터프리트 기법이 있다. 2번 해설 : 인터프리터와 컴파일러는 고급언어로 표현된 고수준의 프로그램을 읽어들인 다는 점에서는 같다. 그러나 컴파일러는 단지 그 입력 프로그램과 동일한 목적언어로 된 효율적인 목적 코드를 출력만 하는 반면에 인터프리터는 직접 고수준의 프로그램을 실행시킬 수 있다. 3번 해설 : 프로그램을 실행에 적합한 형태로 바꾸는 번역기를 컴파일러라고 한다. 컴파 일러는 고급언어인 원시언어를 실제 기계언어에 가까운 저급언어인 목적언어 로 만들어 주는 번역기이다. 그러므로 정답은 4번이다. [2007 기말] 38. 다음 설명 중 틀린 것은? (4번) 1 고수준의 프로그래밍 언어로 작성된 프로그램은 번역기를 거쳐야만 실행될 수 있고, 프 로그램을 곧바로 실행하는 번역기를 인터프리터라 하고, 프로그램을 실행에 적합한 형태로 바꾸는 번역기를 컴파일러라 한다. 2 프로그램과 입력 자료가 인터프리터에 주어지면 인터프리터는 이를 곧바로 실행시켜 결 과를 출력한다. 3 컴파일러는 최적화 코드를 만들 수 있기 때문에 컴파일러에 의해 만들어진 목적 프로그 램은 실행 속도가 빠르다. 4 중간 코드는 단순히 원래의 프로그램에서 불필요한 정보를 제거하고 명령어의 해독을 간 단히 하기 위해 명령문의 성분을 고정 형식으로 저장해 놓은 것이 상당수이며, 이 경우는 기본적으로 컴파일러 방식에 가깝다. 4번 해설 : 중간 코드 실행 기법은 프로그램을 실행시키기 쉬운 형태로 번역한 후에, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행하는 방법이다. 즉, 컴파일러 방법의 가장 큰 장점인 효율성을 최대한 추구하면서 자료관리나 기억장소 운영 등 일부 연산을 인터프리터 방법으로 구현한다. 그러므로 정답은 4번이다. [2007 중간] 2. 프로그래밍 언어를 번역하는 2가지 방법을 설명하고 각 방식을 채택한 언어의 예를 드시 오. 컴파일 기법(compile) : 주어진 고급 프로그래밍 언어로 작성한 프로그램을 실제 컴퓨터의 기계어로 번역하여 동

23 등한 의미의 기계어 프로그램을 만들어 실행시키는 방법이다. 일반적으로 컴파일러는 원시 (source)언어(고급 또는 저급언어)로 작성된 프로그램을 입력으로 읽어서 목적(object)언어 (저급 또는 고급언어도 가능)로 된 기능이 동등한 프로그램을 출력해 주는 언어 처리기로 정의된다. 예) Fortran, Algol, PL/1, Pascal, Cobol, C, Ada 등 인터프리트 기법(interpretation) : 고급언어로 작성된 프로그램을 실행하고자 할 경우, 그와 동일한 기계어로 번역하여 실행 시키는 방법 외에도 고급언어를 기계어로 취급할 수 있는 컴퓨터를 가상하여 실제 컴퓨터에 서 시뮬레이션하여 실행시키는 방법도 있다. 인터프리트 기법(또는 소프트웨어 시뮬레이션 기법)이란 고급언어를 기계어로 하는 컴퓨터를 하드웨어로 구성하는 대신에 그 고급언어 기 계를 다른 기계에서 실행되는 소프트웨어로 시뮬레이션하여 구성하는 방법을 의미한다. 예) LISP, Snobol4, APL, Prolog 등 [2006 기말] 39. 프로그래밍 언어 번역에 관한 설명으로 틀린 것은? 1 현재의 컴퓨터는 저수준의 언어인 기계어만을 바로 실행할 수 있다. 2 고수준의 프로그래밍 언어로 작성된 프로그램을 곧바로 실행하는 번역기를 중간 코드 생 성기라 한다. 3 프로그램을 실행에 적합한 형태로 바꾸는 번역기를 컴파일러라 한다. 4 컴파일러는 원시 프로그램을 받아들여 목적 프로그램을 만들어 낸다. 2번 해설 : 고수준의 프로그래밍 언어로 작성된 프로그램을 곧바로 실행하는 번역기는 인터프리터이다. 중간 코드 실행 기법은 프로그램을 실행시키기 쉬운 형태로 번역한 후에, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행하는 방법이다. 그러므로 정답은 2번이다. [2006 하계계절] 6. 인터프리터 방식과 컴파일러 방식의 중간 형태를 취하여 프로그램의 이동성을 높인 언어 는? 1 JAVA 3 Smalltalk 2 C++ 4 LISP 1번 해설 : 최근에 개발되어 각광받고 있는 Java 언어는 바이트 코드라 불리는 거의 기 계어 수준의 중간 언어이며, 한 번 바이트 코드로 번역된 것을 다시 번역하지 않고 계속 사용하기 때문에 Java 컴파일러라 부르지만, 호환성을 갖기 위하여 인터프리터(JVM)가 중간 언어를 실행하므로 중간 코드 구현 기법을 택한 것 이라 할 수 있다. 그러므로 정답은 1번이다

24 35. 다음 언어의 번역과 관련되어 틀린 설명은? 1 프로그램을 곧바로 실행하는 번역기를 인터프리터라고 한다. 2 프로그램을 실행에 적합한 형태로 바꾸는 번역기를 컴파일러라 한다. 3 인터프리터는 대화형 프로그램에 많이 사용된다. 4 컴파일러의 경우, 프로그램의 개발이 용이하고, 개발기간도 단축된다. 4번 해설 : 인터프리트 기법은 실행할 때마다 형 검사 등을 수행하기 때문에 실행 중에 자료의 동적 변화나 사용자와의 대화가 쉬워 유연성이 높은 언어의 구현에 편리하다. 뿐만 아니라 초보자라도 프로그램을 개발하기가 쉬우며 개발 기간 도 단축된다. 그러므로 정답은 4번이다. [2005 기말] 61. 컴파일러언어와 비교하여 인터프리터 언어의 일반적인 장점은 무엇인가? 1 초보자들의 프로그램 개발이 용이하고, 개발기간도 단축된다. 2 목적 프로그램을 링킹 로더에 의해 메모리에 적재하여 실행한다. 3 신택스 오류를 실행 전에 찾아준다. 4 최적화 코드를 생성하여 목적 프로그램의 실행 속도가 빠르다. 2번 해설 : 인터프리터 언어는 프로그램 실행 시마다 고급언어로 만들어진 프로그램 실 행 시뮬레이션을 통해 실행시켜야 한다. 3번 해설 : 인터프리트 기법은 실행할 때마다 형 검사 등을 수행하기 때문에 실행 중에 자료의 동적 변화나 사용자와의 대화가 쉬워 유연성이 높은 언어의 구현에 편리하다. 4번 해설 : 컴파일 기법은 번역을 하고 나면, 그 이후부터는 매우 빠른 시간에 실행될 수 있기 때문에 전체 실행시간 측면에서 매우 효율적이다. 그러므로 정답은 1번이다. 제 3 장 변수, 바인딩, 식 및 제어문 3.1 변수 * 변수(variable) - 실행시간 동안 그 값이 바뀔 수 있는 객체를 의미 - ISO 국제규격 : 선언문 또는 묵시적 선언으로 생성되며, 식별자, 자료속성의 집합, 하 나 이상의 주소, 자료값의 네 가지 요소로 구성되는데, 주소와 자료값의 관계는 변할 수 있다. * 노엄 촘스키(Noam Chomsky)

25 - 문법의 종류 분류 - 문맥자유 문법에 대한 아이디어 제안 3.1 변수 기출문제 [2009 기말] 57. 변수란 실행시간 동안 그 값이 바뀔 수 있는 객체를 의미한다. 변수의 구성요소가 아닌 것은? 1 명령어 2 자료속성의 집합 3 자료값 4 식별자 변수란 선언문 또는 묵시적 선언으로 생성되며, - 식별자, - 자료속성의 집합, - 하나 이상의 주소, - 자료값 의 네 가지 요소로 구성되는데, 주소와 자료값의 관계는 변할 수 있다. 그러므로 정답은 1번이다. [2006 기말] 44. 다음 중 변수의 속성에 포함되지 않는 것은? 1 기호테이블 3 저장위치 2 형 4 값 변수의 속성으로는 다음과 같은 것을 들 수 있다. (1) 이름 (4) 위치 (2) 형 (5) 범위 (3) 값 (6) 생명 시간 그러므로 정답은 1번이다. 67. 다음의 C 언어 변수 선언 int x; 이 있다고 할 때 변수 x에 할당되는 기억장소 크기는 어떻게 결정되는가? 1 C 언어 정의에서 지정된 정수의 범위에 따라 정적으로 2 사용하는 하드웨어의 정수 표현법에 따라 정적으로 3 실행시 x에 지정되는 값의 크기에 따라 동적으로 4 사용하는 하드웨어와 상관없이 정적으로

26 2번 해설 : C와 같은 컴파일러 언어에서는 변수 x의 자료형이 프로그램 작성 시에 확정 되는데, 이 경우 컴퓨터는 번역 시에 알게 되어 변수의 형은 번역시간(또는 컴파일 시간)에 바인딩된다고 한다. 변수 x의 형이 번역시간에 결정됨으로써 변수 x가 실행시간에 취할 수 있는 값의 종류와 변수 x의 값을 넣을 기억장 소의 크기 또한 번역시간에 확정된다. 그러므로 정답은 2번이다. 3.2 바인딩 바인딩의 개념 * 바인딩(binding) - 어떤 속성을 연결하는 과정을 의미 - 프로그램의 기본단위에 그 기본단위가 택할 수 있는 여러 가지 속성 중에서 일부를 선 정하여 결정해 주는 행위 * 바인딩 시간(binding time) - 바인딩이 발생하는 시간이 언제인지를 의미 바인딩 시간의 종류 * 정적 바인딩(static binding) - 번역시간에 이루어지는 바인딩 * 동적 바인딩(dynamic binding) - 실행시간에 이루어지는 바인딩 * 번역시간(translation time) - 컴파일 시간, 링크 시간, 로드 시간으로 구성 3.2 바인딩 기출문제 [2009 기말] 36. 변수의 이름에 어떤 속성을 연결하는 과정을 무엇이라 하는가? 1 바인딩 2 인스턴스 3 매개변수의 전달 4 선언 변수 이름에 어떤 속성을 연결하는 과정을 바인딩(binding)이라고 한다. 프로그램의 기본단 위에 그 기본단위가 택할 수 있는 여러 가지 속성 중에서 일부를 선정하여 결정해 주는 행 위를 말한다. 2번 해설 : 객체 지향 프로그래밍에서 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 3번 해설 : 프로시저가 호출되었을 때, 호출 프로그램은 실 매개변수의 주소를 직접 또는 간접으로 호출된 프로시저에 전달한다. 호출된 프로시저는 실 매개변수와 형

27 식 매개변수를 대응시키기 위하여 필요한 경우에 주소나 값을 복사하기도 한 다. 프로그래밍 언어에 따라 대응되는 값을 전달하는 방법은 다르다. 4번 해설 : 선언이란 실행 시 사용할 자료의 속성을 컴파일러 등에 알려주는 프로그램 문장으로, 바인딩을 제공하는 중요한 방법이다. 그러므로 정답은 1번이다. 56. 바인딩 시간의 종류에 대한 설명으로 올바른 것은? 1 바인딩은 대부분 프로그램 실행시간 중에 이루어지는 정적 바인딩을 한다. 2 컴파일러 언어에서는 대부분의 중요한 바인딩이 번역시간에 수행된다. 3 컴파일러 언어는 대부분 동적 바인딩을 기본으로 한다. 4 언어의 정의시간 바인딩을 많이 해서 언어의 구현시간에 일어나는 바인딩을 최대화함으 로써 호환성을 갖도록 시도한다. 1번 해설 : 바인딩은 대부분 프로그램 실행시간 중에 이루어지는 동적 바인딩을 한다. 3번 해설 : 컴파일러 언어에서는 대부분의 중요한 바인딩이 번역시간(translation time)에 수행된다. 즉, 컴파일러 언어는 대부분 정적 바인딩을 기본으로 한다. 4번 해설 : 대부분의 프로그래밍 언어에서는 언어의 정의시간 바인딩을 많이 해서 언어 의 구현시간에 일어나는 바인딩을 최소화함으로써 프로그램이 가능한 한 특 정 기종이나 구현에 구애받지 않는 호환성을 갖도록 시도한다. 그러므로 정답은 2번이다. [2009 중간] 3. 바인딩의 개념과 바인딩 시간 종류에 대해 설명하시오. 변수 이름에 어떤 속성을 연결하는 과정을 바인딩(binding)이라고 한다. 속성이 이름에 연결 되고 계산되는 과정이 어느 시점에서 이루어지는가에 따라 바인딩을 분류할 수 있는데, 그 시간을 바인딩 시간(binding time)이라고 한다. 다시 요약하면 바인딩이란 프로그램의 기본 단위에 그 기본단위가 택할 수 있는 여러 가지 속성 중에서 일부를 선정하여 결정해 주는 행위를 말하며, 바인딩 시간은 간략하게 바인딩이 발생하는 시간이 언제인지를 의미한다고 정의할 수 있다. 바인딩 시간의 종류 (1) 실행시간 : 바인딩은 대부분 프로그램 실행시간 중에 이루어지는 동적 바인딩을 한다. 예를 들어 변수값 확정 또는 자료구조에 기억장소 할당 등은 실행시간에 이루어진다. (2) 번역시간 : 컴파일러 언어에서는 대부분의 중요한 바인딩이 번역시간(translation time) 에 수행된다. 즉, 컴파일러 언어는 대부분 정적 바인딩을 기본으로 한다. 번역시간은 컴파일 시간, 링크 시간, 로드 시간으로 구성된다. 이때 발생하는 바인딩 종류로는 변수의 형, 자료 구조의 형과 크기, 레코드의 각 항목의 형 등을 확정하는 바인딩 등이 있다. (3) 언어 구현시간 : 모든 프로그래밍 언어에서 언어 정의 시 그 언어의 구성자에 관한 많

28 은 특성을 구체적으로 모두 한정하지 않고, 프로그램을 작성할 때에 그 특성의 일부를 확정 하도록 일임하고 있다. 한 언어에서 허락하는 정수의 자릿수, 실수의 유효숫자 개수 또는 수의 기계 내에서의 표기법 등이 이에 속한다. (4) 언어의 정의시간 : 프로그래밍 언어에서 허용되는 자료구조, 프로그램 구조, 택일문 등 에 관한 것은 프로그래밍 언어를 설계할 때 확정된다. 예를 들어 혼합형 연산이 허용되는 덧셈이나 곱셈 연산에서 연산해야 할 두 피연산자의 형에 따라 어떤 형의 연산을 해야 하는 지를 확정하는 것은 그 프로그램이 언어의 정의에 속한다. [2008 기말] 42. 다음 프로그래밍 언어에서 속성과 바인딩에 관한 설명으로 옳은 것은? 1 바인딩 : 프로그램에 나타나는 변수, 프로시저, 문 등의 실체들마다 어떤 성질을 갖게 되 는 성질 2 속성 : 속성이 사용되기 전에 결정되어야 하는 것으로, 실체의 속성을 특정한 값으로 정 하는 것 3 동적 바인딩 : 실행 이전에 바인딩이 이루어지는 것 4 정적 속성 : 번역시, 링크시, 로드시에 대부분 바인딩된다. 1번 해설 : 바인딩이란 변수 이름에 어떤 속성을 연결하는 과정을 말한다. 바인딩에 관한 설명이 아닌 속성에 대한 설명이다. 2번 해설 : 속성에 관한 설명이 아닌 바인딩에 대한 설명이다. 3번 해설 : 실행시간에 이루어지는 바인딩이 동적 바인딩이다. 그러므로 정답은 4번이다. 57. 실체의 속성을 특정한 값으로 정해주는 것을 무엇이라 하는가? 1 파싱 2 링킹 3 인터프리터 4 바인딩 1번 해설 : 파싱((syntactic) parsing)은 일련의 문자열을 의미있는 토큰(token)으로 분해 하고 이들로 이루어진 파스 트리(parse tree)를 만드는 과정을 말한다. 2번 해설 : 목적파일들을 실행 가능한 형태로 만들기 위해, 여러 개의 목적파일들을 하나로 연결해주는 작업이 필요한데, 이것을 링크, 또는 링킹 이라고 합니다. 3번 해설 : 인터프리터는 고급언어로 된 프로그램을 입력으로 읽어 기계어 수행과 동일 한 알고리듬으로 프로그램의 각 문장을 디코딩하고 실행시킴으로써 이 고급 언어를 시뮬레이션 한다. 4번 해설 : 바인딩이란 변수 이름에 어떤 속성을 연결하는 과정을 말한다. 그러므로 정답은 4번이다. [2007 기말] 59. 다음 속성과 바인딩에 대한 설명으로 틀린 것은? (2번) 1 프로그램에 나타나는 변수, 프로시저, 문 등의 실체들마다 어떤 성질을 갖게 되는데, 이 러한 성질을 그 실체의 속성이라고 한다

29 2 동적 속성은 대부분 번역시, 링크시, 로드시에 바인딩된다. 3 속성은 그 속성이 쓰이기 전에 반드시 결정되어 있어야 하는데, 실체의 속성을 특정한 값으로 정하는 것을 바인딩이라고 한다. 4 동적 속성인 경우에는 실행시까지 해당 설명자가 유지되어 야 하며, 이 설명자는 형조사 나 메모리 할당 등을 위하여 실행 시간 시스템이 사용한다. 2번 해설 : 바인딩은 대부분 프로그램 실행시간 중에 이루어지는 동적 바인딩을 한다. 컴파일러 언어에서는 대부분의 중요한 바인딩이 번역시간에 수행된다. 즉, 컴파일러 언어는 대부분 정적 바인딩을 기본으로 한다. 번역시간은 컴파 일 시간, 링크 시간, 로드 시간으로 구성된다. 그러므로 정답은 2번이다. [2007 중간] 3. 정적 바인딩과 동적 바인딩을 설명하고, 정적 속성과 동적 속성을 예를 들어서 설명하시 오. 바인딩 시간은 여러 종류의 바인딩을 간결하게 구분하기 위해 사용될 수 있는 가장 좋은 특 징이다. 바인딩 시간과 관련하여 정적 바인딩(static binding)과 동적 바인딩(dynamic binding) 개념이 있다. 즉, 번역시간에 이루어지는 바인딩이 정적 바인딩이고, 실행시간에 이루어지는 바인딩이 동적 바인딩이다. 동적 바인딩 : 실행시간 중에 이루어진다. 정적 바인딩 : 컴파일 시간, 링크 시간, 로드 시간으로 구성된다. [2006 하계계절] 10. 프로그램에 나타나는 변수, 프로시저, 문 등의 실체들마다 갖게 되는 어떤 성질을 무엇 이라 하는가? 1 바인딩 3 모듈 2 캡슐 4 속성 1번 해설 : 변수 이름에 어떤 속성을 연결하는 과정을 바인딩(binding) 이라고 한다. 2번 해설 : 자료형의 표현과 그에 관련된 연산을 함께 묶은 것을 캡슐이라 한다. 3번 해설 : 컴퓨터 시스템을 이용하여 특정일을 수행할 수 있도록 구성되어진 단위를 의 미한다. 그러므로 정답은 4번이다. [2005 기말] 37. 변수의 속성 중 보통 동적으로 바인딩되는 것은? 1 형 3 이름 2 값 4 위치

30 - 30 -

31 바인딩은 대부분 프로그램 실행시간 중에 이루어지는 동적 바인딩을 한다. 실행시간은 두 가지 개념으로 나누어진다. 1) 모듈의 시작 시간 : 많은 프로그래밍 언어에서 중요한 바인딩이 모듈 프로그램 실행 시 작 시간에 발생한다. 2) 실행시간의 사용시점 : 프로그램을 실행하는 동안 사용시점에서 수시로 발생하는 바인딩 이 있다. 대표적인 예로는 할당문에서 값을 변수에 바인딩하는 것이다. 그러므로 정답은 2번이다. 3.3 선언 * 선언(declaration) - 실행 시 사용할 자료의 속성을 컴파일러 등에 알려 주는 프로그램 문장 - 바인딩을 제공하는 중요한 방법 * 묵시적 선언(default declaration) - 명시적 선언이 없는 경우 * 형고정 연산(type specific operation) - 프로그래밍 언어에서 피연산자와 연산결과의 자료형이 하나로 고정된 연산 * 혼합형 연산(generic 혹은 mixed operation) - 주어진 연산자에 대한 피연산자와 연산결과의 자료형이 고정되지 않은 연산 3.3 선언 기출문제 [2009 기말] 38. 선언문의 주요한 목적에 포함되지 않는 것은? 1 주기억장치 사용과 접근방법의 효율성 향상 2 대규모 프로그래밍 지원 3 주기억 장치 경영의 효율성 향상 4 정적 형 검사 가능 프로그래밍 언어에서 선언문은 다음과 같은 중요한 목적을 세 가지 달성할 수 있다. (1) 주기억장치 사용과 접근방법의 효율성 (2) 주기억장치 경영의 효율성 (3) 정적 형 검사(static type checking) 가능 그러므로 정답은 2번이다

32 3.4 할당문 * 할당문 - 변수의 내용을 변경할 수 있는 연산 단순 할당문 * 단순 할당문 - 구문 형식 : <목적지_변수><할당_연산자><식> - 예) A = B = C 다중 목적변수 할당문 * 다중 목적변수 할당문 - 식 값을 한 개 이상의 목적변수에 할당하는 것을 허용하는 것 - 예) W, X, Y = 조건 목적변수 할당문 * 조건 목적변수 할당문 - 할당문에 조건 목적변수를 허용하는 것 - 예) flag? n:m = 복합할당 연산자 * 복합할당 연산자(compound assignment operator) - 일반적으로 할당문에 필요한 형태를 표현하는 축약방법 - 예) s = s+t s += t 단항할당 연산자 * 전위 연산자(prefix operator) - 연산자가 피연산자 앞에 오는 것 * 후위 연산자(postfix operator) - 연산자가 피연산자 뒤에 오는 것 식으로서의 할당문 * 식 부작용 - 할당문을 식의 피연산자에 허용하여 생기는 단점 - 읽고 이해하기 어려운 식을 초래할 수 있음 혼합형 할당문 * 혼합형 할당문 - 할당문에서 양편에 자료형이 서로 다른 경우

33 3.5 상수 및 변수 초기화 * 상수 - 프로그램이 수행되는 동안 값이 변경되는 것을 원치 않을 때 사용 - 식별자로 주어지며 프로그램 수행 중 결합된 값이 결코 변하지 않는데 선언문을 이용 하거나 묵시적 선언을 통해 생성 3.6 표현식 식의 개요 * 표현식(expression) - 하나 이상의 피연산자를 가지고 자료값의 계산을 기술하는 것 - 상수나 변수 같은 피연산자, 연산자, 그리고 사용 가능한 함수호출(function call)로 구 성 * 프로그램 상태공간(program state space) 또는 프로그램 환경(program environment) - 한 프로그램에서 사용되는 모든 변수와 관련 있는 값이 형성하는 것 * 참조투명성(referential transparency) - 환경을 변화시키지 않고 오직 값만 생성하는 것이 이상적인 식의 평가라는 것을 의미 * 좌결합 법칙 - 우선순위가 같은 두 개의 연산자가 함께 이웃했을 때 왼쪽 것을 먼저 수행하는 법칙 논리조건 * 적용순서(applicative order) - 피연산자1 연산자 피연산자2 와 같은 식에서 두 개의 피연산자를 평가한 후 결과를 얻 기 위해 연산자를 적용하는 방법의 평가

34 3.7 조건문 * 조건문(conditional statement) - 조건에 따라 실행되는 부분이 달라질 때 사용하는 문장

35 3.8 반복문 * 반복문(iteration statement) - 한 개 이상의 문장을 0번 이상 반복하여 실행시키는 문장 사용자 지정 반복 - 예) loop-repeat, break, continue 논리제어 반복문 - 예) while, until, do-while 논리제어 반복문 - 예) for

36 제 4 장 자료형 4.1 자료형과 형 선언 * 자료형 - 객체(object)의 집합과 이 객체의 실체(instance)를 생성(create), 작성(build-up), 소멸 (destroy), 수정(modify), 분해(pick apart)하는 연산의 집합을 의미 * 강 자료형(strongly type) - 자료형에 관한 모든 특성이 번역시간에 확정되는 프로그래밍 언어 * 구성원(member) - 객체(object), 요소(element) 또는 값(value)이라 불리며, 자료형의 구성원이 자료형 영 역(domain)을 구성 * 리터럴(literal) - 프로그래머가 작성한 구성원 * 스칼라형(scalar type) 또는 단순형(simple type) - 자료형 영역이 단순한 상수값으로만 구성되어 있는 자료 * 구조형(structured type) - 필드의 집합이며, 필드는 자신의 자료형을 따로 가짐 4.2 단순형 수치형 * 수치형 - 스칼라형으로 정수 또는 실수의 근사값을 표현 * 다형성(polymorphism) - 한 연산자가 속성은 같은데 피연산자의 자료형에 의존해 실제 기계에서 다른 것으로 간주되는 것을 의미 논리형 * 논리형 값의 영역 - 두 개의 객체, 즉 참과 거짓으로 구성 - 예) and, or, not, implies(imp), equivalence(equiv) 등 4.2 단순형 기출문제 [2007 기말] 53. 다음 중 기본 자료형에 대한 설명으로 틀린 것은? 1 정수형과 실수형은 하드웨어에서 직접 지원하는 자료형이다. 2 실수형은 보통 부동 소수점 표현법으로서 지수부와 가수부로 나누어 표현한다. 3 열거형의 원소는 0, 1, 2의 정수로 일대일 대응시키면 되기 때문에 수의 한계가 추가된

37 다는 것 외에는 정수형과 같이 취급하면 된다. 4 불형은 한 비트로 표현할 수 있지만 비트단위로 접근하는 것이 어려운 경우가 많기 때문 에 기계에서 주소 지정이 가능한 최소 단위를 할당하는 것이 일반적이다. 2번 해설 : 실수형은 보통 부동 소수점 표현법으로서 지수부와 가수부, 부호 비트로 나누 어 표현한다. 그러므로 정답은 2번이다

38 4.3 열거형 * 열거형(enumeration type) - 객체의 영역은 리스트로 정해 주며, 연산은 동등 및 순서 관계와 할당연산을 허용 4.4 배열 * 배열 - 집합체에서 첫 원소의 상대적 위치인 첨자로 원소를 식별하는 동질형 자료 (homogeneous data)의 집합체 * 레코드 - 원소를 식별자로 구별하는 이질형 자료(heterogeneous data)의 집합체 * 정적 배열(static array) - 첨자범위가 정적으로 바인딩되고 기억장소 할당이 정적으로(실행시간 전에) 이루어지는 배열 * 명세표(descriptor) - 배열이름과 원소의 형, 원소의 길이, 배열의 시작 주소, 각 차원의 하한과 상한을 포함 * 행우선(row major) - n차원 배열에서 마지막 첨자가 가장 먼저 변하도록 원소를 순서화하는 방법 * 열우선(column major) - n차원 배열에서 첫 번째 첨자가 가장 먼저 변하도록 원소를 순서화하는 방법 4.4 배열 기출문제 [2009 기말] 39. 행우선 프로그래밍 언어에서 선언된 2차원 배열이 M(9,9)라 하면, M(0,0)의 저장주소 를 α라 할 경우 M(7,2)의 주소는? 1 α+65 2 α+66 3 α+67 4 α+68 2차원 배열의 크기가 M (9,9)라면 M(0,0) M(0,1) M(0,2)... M(0,8) 1 M(1,0) M(1,1) M(1,2)... M(1,8) M(7,0) M(7,1) M(7,2) 주소로 표현하면 M(0,0)의 저장주소가 α이고, 행우선이므로 α α+1 α+2... α+8 1 α+9 α+10 α α+17 2 α+18 α+19 α α α+63 α+64 α

39 공식으로 유추해 보면 다음과 같다. M(0,0) M(0,1) M(0,2) M(0,8)... = α+0*9+0 = α+0*9+1 = α+0*9+2 = α+0*9+8 M(1,0) M(1,1) M(1,2) M(1,8)... = α+1*9+0 = α+1*9+1 = α+1*9+2 = α+1* M(7,0) M(7,1) M(7,2)... = α+7*9+0 = α+7*9+1 = α+7*9+2 주소(M(i,j)) = 시작주소(=α) + i * size(=9) + j 로 계산하면 M(7,2) = α+7*9+2 됩니다. 그러므로 정답은 1번이다

40 4.5 연상배열 * 연상배열(associative array) - 키(key)라 불리는 값에 의해 접근되는 순서를 갖지 않는 데이터 원소의 집합체 * exists 연산자 - 피연산자 키가 해시의 한 원소인지 원소가 아닌지에 따라 참이나 거짓을 반환 * keys 연산자 - 해시에 적용될 때, 그 해시에 포함된 키로 구성된 배열을 반환 * values 연산자 - 해시의 값으로 구성된 배열을 반환 * each 연산자 - 해시의 원소쌍에 대해 반복 수행

41 4.6 레코드 * 레코드형(record type) - 이질형 자료로 구성된 조직적 자료형 - 레코드형의 선언부는 여러 필드와 그들의 값에 대한 형을 기술 4.6 레코드 기출문제 [2009 기말] 40. 다음 중 자료형에 대한 설명으로 틀린 것은? 1 자료형이란 객체의 집합과 그 객체의 실체를 생성, 작성, 소멸, 수정, 분해하는 연산의 집합을 의미한다. 2 연상배열은 키(key)라 불리는 값에 의해 접근되는 순서를 갖지 않는 데이터 원소의 집합 체이다. 3 레코드는 어떤 객체에 대한 참조를 의미하며 레코드 변수는 객체를 참조하는 주소값을 취하는 식별자이다. 4 자료형에 대한 검사에는 번역시간에 하는 정적 형 검사와 실행시간에 하는 동적 형 검사 가 있다. 3번 해설 : 레코드형(record type)은 이질형 자료로 구성된 조직적 자료형이다. 포인터란 어떤 객체에 대한 기억장치 주소참조를 말한다. 포인터 별수란 객 체를 참조하는 기억장치 주소값으로 취하는 식별자이다. 그러므로 정답은 3번이다. 4.7 포인터 자료형 * 포인터(pointer) - 어떤 객체에 대한 기억장치 주소참조 * 포인터 변수(pointer variable) - 객체를 참조하는 기억장치 주소값으로 취하는 식별자 * 힙(heap) - 객체가 동적으로 할당되는 기억장소 영역 * 힙 변수(heap variable) - 힙에 할당되는 변수 - 식별자 없이 포인터나 참조형 변수에 의해 참조가능 * 무명변수(anonymous variable) - 이름이 없는 변수 * 다중관계(multiple relationship) - 포인터의 경우 : 하나의 자료가 많은 리스트에 동시에 연결되는 것을 허용 참조형

42 * 참조형 - 주로 함수 정의에서 형식 매개변수를 위해 사용 - 함수 정의에서 형식 매개변수로 사용될 때, 호출함수와 피호출함수간에 양방향 통신을 제공 4.7 포인터 자료형 기출문제 [2009 기말] 58. 포인터 자료형에 관한 설명으로 올바르지 않은 것은? 1 포인터란 어떤 객체에 대한 기억장치 주소참조를 말한다. 2 객체가 동적으로 할당되는 기억장소 영역을 힙(heap)이라 한다. 3 포인터 사용은 언어에서 작성력을 향상시킨다. 4 포인터는 형 연산자를 사용하여 정의하며 구조형에 속한다. 4번 해설 : 포인터는 형 연산자를 사용하여 정의하지만, 배열과 레코드와는 달리 구조형 이 아니며 스칼라형은 더더욱 아니다. 왜냐하면 포인터는 자료를 저장하는 것이 아니라 다른 객체를 참조하는데 사용하기 때문이다. 그러므로 정답은 4번이다. [2009 중간] 4. 포인터와 힙 변수, 그리고 힙 기억장소를 설명하시오. 포인터(pointer)란 어떤 객체에 대한 기억장치 주소참조를 말한다. 포인터 변수(pointer variable)란 객체를 참조하는 기억장치 주소값으로 취하는 식별자이다. 포인터와 포인터 변 수가 초기 고급언어에는 포함되지 않았으나, 최근 프로그래밍 언어는 대부분 이 개념을 포 함하고 있다. 객체가 동적으로 할당되는 기억장소 영역을 힙(heap)이라 한다. 이 힙에 할당되는 변수를 힙 변수(heap variable)라 하며, 이러한 변수는 식별자 없이 포인터나 참조형 변수에 의해 참조될 수 있다. [2008 기말] 56. 다음 중 포인터에 대한 설명으로 옳은 것은? 1 포인터는 동적 자료 구조를 만드는 데 적합하지만 메모리 주소를 직접적으로 다루는 저 수준의 구조이므로 프로그램의 작성과 이해에 어렵고 불안정한 프로그램이 되기 쉽다는 단 점이 있다. 2 포인터가 지시하는 자료구조는 보통 정적 자료 구조이기 때문에 히프 기억장소로부터 할 당된다. 3 만약 할당받은 히프 기억 장소를 반납하기 전에 그 기억장소를 지시하는 포인터가 하나 도 없게 된다면, 그 히프 기억장소는 포인터 직접 접근을 통해 접근할 수 있다. 4 Pacsal, Modula-2에서는 포인터에 대한 산술 연산을 허용하여 융통성이 떨어지는 단점 이 있다

43 2번 해설 : 포인터가 지시하는 자료 구조는 보통 동적 자료 구조이기 때문에 히프로부터 할당이 된다. 3번 해설 : 만약 할당 받은 히프 기억장소를 반납하기 전에 그 기억 장소를 지시하는 포 인터가 하나도 없게 된다면 그 기억 장소는 반납할 수 없다. 4번 해설 : Pascal, Modula-2에서는 포인터에 대한 산술 연산을 금지하였으나 이렇게 하면 융통성이 떨어진다. 그러므로 정답은 1번이다. [2006 기말] 50. 다음 중 포인터형에 대한 설명으로 틀린 것은? 1 메모리 주소를 직접적으로 다루는 저수준의 구조이기 때문에 프로그램 이해에 도움을 준 다. 2 동적 자료 구조를 만드는 데 아주 좋다. 3 메모리를 직접적으로 접근하기 때문에 불안정한 프로그램이 될 수 있다. 4 현수 참조의 문제점이 발생할 수 있으므로 메모리 관리에 신경을 써야 한다

44 1번 해설 : 포인터는 동적 자료 구조를 만드는 데 아주 좋지만 메모리 주소를 직접적으 로 다루는 저수준의 구조이기 때문에 포인터를 많이 쓰면 프로그램을 작성하 고 이해하기가 어렵고 불안정한 프로그램이 되기 쉽다는 단점이 있다. 그러므로 정답은 1번이다. 4.8 자료형 변환 * 정적 형 검사(static type checking) - 번역시간에 수행 - 강 자료형을 요구하며 컴파일러에게 일관성 있는 형 검사를 허용하고 효율적인 목적 코드를 생성할 수 있도록 하는 검사 * 동적 형 검사(dynamic type checking) - 실행시간에 수행 * 형 변환(type conversion) - 주어진 자료형의 값을 다른 자료형의 값으로 변환하는 것을 의미 * 묵시적 형 변환 - 강제로 컴파일러에 요구되어 자동으로 수행되는 자동변환(automatic conversion) 또는 강제변환(coercion)이라 함 * 명시적 형 변환 - 프로그래머가 명령문으로 요구한 형 변환으로 캐스트(cast)라 함 4.8 자료형 변환 기출문제 [2009 기말] 50. 다음 설명으로 틀린 것은? 1 동적 형 검사는 프로그램 작성시의 단순성을 증가시킨다. 2 일반적으로 프로그래밍 언어에서는 스칼라형 사이의 형 변환은 제공되나 구조자료형이나 사용자 정의형 사이에서는 현 변환이 허용되지 않는다. 3 형 변환의 종류는 컴파일러에서 자동으로 수행하는 묵시적 형 변환과 프로그래머가 명시 하는 명시적 형 변환이 있다. 4 형 검사는 번역시간에 수행되는 동적 형 검사와 실행시간에 수행되는 정적 형 검사로 나 뉜다. 4번 해설 : 자료형에 대한 정적 형 검사(static type checking)는 번역시간에 수행되며 동적 형 검사(dynamic type checking)는 실행시간에 수행된다. 그러므로 정답은 4번이다. [2006 기말] 52. 변수와 그 변수에 적용 가능한 연산을 확인하는 형 조사에 관한 내용으로 틀린 것은? 1 어떤 연산에 올 수 있는 피연산자의 형과 함께 쓰일 수 있는 형을 별명이라 한다

45 2 동적 형 검사는 형 정보가 실행 시에 바인딩되며, 실행 시에 형 조사가 행해진다. 3 정적 형 검사는 모든 형 정보가 정적으로 바인딩되며, 형 조사가 정적으로 이루어진다. 4 프로그램의 모든 형 오류를 검출할 수 있는 언어를 강형 언어라고 한다. 해설 1번 해설 : 함께 쓰일 수 있는 형을 양립적인 형이라고 한다. 별명은 프로그래밍 언어의 변수에 대해 그 변수명을 대체할 수 있는 다른 식별자를 의미한다. 그러므로 정답은 1번이다

46 제 5 장 영역과 수명 5.1 블록과 영역 * 복합문(compound statement) - begin-end를 사용하여 일련의 문장집합을 하나의 단위문장으로 표시하는 형태 * 블록(block) - 복합문 안에 변수, 부프로그램, 레이블과 같은 지역 식별자(local identifier)를 선언하 고, 그 묶인 부분의 복합문 영역을 의미 5.1 블록과 영역 기출문제 [2006 기말] 45. 실체가 그 이름으로 유효하게 사용될 수 있는 프로그램 영역을 무엇이라 하는가? 1 영역 3 링크 2 r-값 4 기호테이블 1번 해설 : 일반적으로 영역(scope)이란 프로그램에서 사용되는 식별자(변수, 상수, 레이 블, 자료형, 부프로그램의 이름)가 의미를 가질 수 있는 범위를 의미한다. 보 다 구체적으로 말하면, 한 식별자의 영역이란 그 이름의 사용이 허락되는 프 로그램 범위를 말한다. 그러므로 정답은 1번이다

47 5.2 정적 영역과 동적 영역 * 정적 영역 규칙 - 식별자의 영역이 번역 시에 결정 * 지역(local)변수 - 정적 내포관계를 유지하는 블록 구조 언어에서 블록에서 선언된 변수와 형식 매개변수 * 비지역(non-local)변수 또는 전역(global)변수 - 정적 내포관계를 유지하는 블록 구조 언어에서 그 블록을 내포하고 있는 외부 블록에 서 선언된 변수 * 자유변수(free variable) - 해당 블록에서 정의되지 않은 변수 * 정적(static) - 번역 시 프로그램 문장만 조사하여 변수의 정의된 상태를 결정할 수 있는 것을 의미 * 영역구멍(hole-in-scope) - 전역(비지역)선언이 지역선언 때문에 보이지 않을 경우 * 가시성(visibility) - 선언의 바인딩이 적용되어 선언된 식별자를 참조할 수 있는 프로그램 부분을 의미 * 동적 영역 규칙 - 식별자의 영역이 실행시간에 결정 - 식별자 영역을 작성된 프로그램 문맥으로 해결하지 않고 프로그램이 실행되고 있는 순 서를 가지고 해결하는 방법 5.2 정적 영역과 동적 영역 기출문제 [2009 기말] 41. 다음 변수의 영역과 관련된 설명으로 틀린 것은? (4번) 1 정적 영역 규칙에서 프로그래밍 언어의 식별자의 영역이 번역 시에 결정되며, 동적 영역 규칙에서는 실행시간에 영역이 결정된다. 2 블록 구조 언어에서 블록에서 선언된 변수와 형식 매개 변수는 지역변수이며, 그 블록을 내포하고 있는 외부 블록에서 선언된 변수는 비지역 변수이다. 3 자유변수는 현 블록을 내포하고 있는 가장 안쪽의 바깥블록을 조사하고, 그 블록에도 해 당 이름이 선언되어 있지 않으면, 또 다음 바깥쪽의 블록을 조사하여 결정된다. 4 동적 영역 규칙이란 선언의 바인딩이 적용되는 프로그램의 부분 영역을 의미한다. 4번 해설 : 식별자 영역을 작성된 프로그램 문맥으로 해결하지 않고 프로그램이 실행되 고 있는 순서를 가지고 해결하는 방법을 동적 영역 규칙이라고 한다. 동적 영역 규칙을 따르는 언어로는 LISP 초기 버전, APL, Simbol 4 등이 있다. 그러므로 정답은 4번이다. [2008 중간] 3. 정적 영역와 동적 영역에 대해 설명하시오

48 정적 영역 : 일반적으로 컴파일러 언어는 정적 영역 규칙을 따르는 언어이다. 정적 내포관계를 유지하 는 블록 구조 언어에서 블록에서 선언된 변수와 형식 매개변수는 지역(local)변수이며, 그 블록을 내포하고 있는 외부 블록에서 선언된 변수는 비지역(non-local) 또는 전역(global)변 수이다. 정적(static)이라고 하는 것은 번역 시 프로그램 문장만 조사하여 변수의 정의된 상 태를 결정할 수 있기 때문이다. 동적 영역 : 식별자 영역을 작성된 프로그램 문맥으로 해결하지 않고 프로그램이 실행되고 있는 순서 를 가지고 해결하는 방법이 동적 영역 규칙이다. [2007 기말] 58. 다음 중 동적 영역에 대한 설명으로 틀린 것은? 1 비지역 변수에 대한 바인딩이 동적 영역에서는 호출 순서에 따라 이루어진다. 2 동적 영역은 피호출 프로시저에 전달할 매개변수가 호출부에서 선언된 변수라면 굳이 매 개변수로 전달할 필요가 없다. 3 호출부의 실행 환경이 피호출부에 그대로 노출되므로 지역변수를 보호하기 어렵고 신뢰 성이 낮아진다. 4 비지역 변수에 대한 형 조사를 정적으로 행하지 않아도 되므로 실행전에 형 오류를 검출 하기가 쉽고, 비지역 변수에 대한 접근 시간을 줄일 수 있다. 4번 해설 : 동적 영역 규칙은 프로그램이 실행되고 있는 순서를 가지고 해결한다. 또 비 지역 변수에 대하여 형 조사를 정적으로 행할 수가 없어 형 오류를 실행 전 에 검출하기가 어렵다. 그리고 비지역 변수에 접근하려면 정적 범위인 경우 보다 더 많은 시간이 걸릴 수 있다. 그러므로 정답은 4번이다. [2006 하계계절] 13. 정적 영역 규칙을 사용하는 경우, 아래 코드에 대한 호출 가능 프로시저로 옳은 것은?

49 procedure A... procedure B... procedure C... end C procedure D... end D... end B procedure E... procedure F... end F... end E... end A 1 프로시저 A : A, B 2 프로시저 B : A, B, C, D 3 프로시저 C : A, B, D 4 프로시저 E : A, B, C, F 내포된 프로시저의 블록의 경우 범위 규칙에 의하여 호출 가능한 프로시저가 될 수 있다. 1번 해설 : 프로시저 A - A, B, E 2번 해설 : 프로시저 B - A, B, C, D 3번 해설 : 프로시저 C - A, B, C 4번 해설 : 프로시저 E - A, B, E, F 그러므로 정답은 2번이다. [2005 기말] 54. 다음 설명으로 틀린 것은? (2번) 1 정적 영역 규칙이란 이름에 대한 바인딩이 프로그램의 외형적인 구조에 따라 먼저 자기 블록의 것과 바인딩되도록 시도한다. 2 동적 영역 규칙이란 실행 시 지정문에 변수값이 주어지면 그 값에 따라 변수에 형이 바 인딩되는 것을 말한다. 3 동적 형 바인딩은 컴파일러의 오류 검사를 현격히 떨어뜨린다는 단점을 가진다. 4 영역이란 실체가 그 이름으로 유효하게 사용될 수 있는 프로그램의 영역을 의미한다

50 2번 해설 : 실행 시 지정문에 변수값이 주어지면 그 값에 따라 변수에 형이 바인딩되는 것은 동적 형 바인딩이다. 동적 영역 규칙이란 식별자 영역을 작성된 프로그 램 문맥으로 해결하지 않고 프로그램이 실행되고 있는 순서를 가지고 해결하 는 방법이다. 그러므로 정답은 2번이다

51 5.3 언어에서의 영역 * 외부영역(external scope) - 어느 블록에도 속하지 않고 모든 함수 전체를 영역으로 하는 영역

52 5.4 변수의 수명 * 변수의 수명(lifetime 또는 extent) - 변수가 값을 저장하기 위해 기억장소를 할당받고 있는 시간을 의미 - 기억장소 할당과 함께 시작하여 그 변수이름에 할당된 기억장소가 더 이상 그 변수값 을 의미하지 않을 때까지를 의미 * 자동할당 방식 - C의 경우 : 한 변수가 선언된 블록이 시작될 때 변수는 기억장소를 할당받고, 블록이 끝나면 변수의 기억장소는 자동적으로 회수되는 방식 * 정적할당 방식 - C의 경우 : 프로그램 시작 시 기억장소가 할당되며 블록이 끝나더라도 기억장소 값이 그대로 유지되며 프로그램 종료 시 회수되는 방식 * 프로그래머 지정 할당 방식 - C의 경우 : 프로그램 수행 도중 malloc() 함수를 이용하여 기억장소를 할당하고 free() 함수를 호출하여 기억장소를 회수할 때까지 기억장소가 유지되는 방식 * 환경(environment) - 지역 단위로 묶여진 장소와 관련된 모든 식별자를 정의한 용어로서 지역변수, 진입점과 비지역변수에 접근하기 위한 정보도 포함 - 그 블록에서 선언된 프로시저와 레이블도 포함 * 동적 수명(dynamic extent) - 프로그래머에게 기억장소의 수명 제어권을 부여하는 것 * 쓰레기 수집(garbage collection) - 프로그램에서 더 이상의 참조가 없더라도 계속 기억장소에 존재하게 하다가 새 기억장 소가 요구될 때 이들 기억장소를 회수하여 재생시키는 것 * 풀(pool) - 기억장소를 계속 할당하다가 사용 가능한 기억장소 5.4 변수의 수명 기출문제 [2009 기말] 42. 변수 값을 저장하기 위해 기억장소를 할당받고 있는 동안을 무엇이라 하는가? 1 변수의 수명 3 변수의 속성 2 변수의 블록영역 4 변수의 영역구멍 1번 해설 : 변수의 수명(lifetime 또는 extent)이란 변수가 값을 저장하기 위해 기억장소 를 할당받고 있는 시간을 의미한다. 즉, 변수의 수명은 기억장소 할당과 함께 시작하여 그 변수이름에 할당된 기억장소가 더 이상 그 변수값을 의미하지 않을 때까지이다. 그러므로 정답은 1번이다. [2007 기말]

53 54. 변수가 기억 장소에 바인딩되어 있는 시간 간격은? 1 변수의 수명 2 변수 범위 3 동적 변수 범위 4 정적 변수 범위

54 1번 해설 : 변수의 수명(lifetime 또는 extent)이란 변수가 값을 저장하기 위해 기억장소 를 할당받고 있는 시간을 의미한다. 즉, 변수의 수명은 기억장소 할당과 함께 시작하여 그 변수이름에 할당된 기억장소가 더 이상 그 변수값을 의미하지 않을 때까지이다. 그러므로 정답은 1번이다. 5.5 C의 영역 * 파일 범위 - 하나의 C 소스 파일 전체를 뜻하는 것 * 함수 범위 - 함수가 선언되고 함수가 정의되는 부분을 의미 * 블록 단위 - 일반적으로 중괄호 { } 로 묶인 모든 영역의 범위를 의미 5.5 C의 영역 기출문제 [2006 하계계절] 46. 다음은 정적 영역을 알아보기 위한 C언어 예제이다. (<가>, <나>의 실행 순의) 출력 결과로 올바른 것은 무엇인가? #include <stdio.h> main() { int a, b; a = 1; b = 2; { int a; a = 3; b = 4; } printf("%d %d", a, b); } (가) #include <stdio.h> main() { int a, b; a = 1; b = 2; a = 3; b = 4; printf("%d %d", a, b); } (나)

55 C는 기본적으로 파일 범위, 함수 범위, 블록 범위의 세 가지 영역단위가 있는데 이들은 영 역에 대한 관리를 보다 복잡하게 만든다. 파일범위는 하나의 C 소스 파일 전체를 뜻하는 것 이고, 함수 범위는 함수가 선언되고 함수가 정의되는 부분을 의미한다. 블록 단위는 일반적 으로 중괄호 { } 로 묶인 모든 영역의 범위를 의미한다. (가)의 경우 우선, a와 b에 1과 2의 값이 대입된다. 다음으로 블록 안에서 다시 a변수를 선 언한 후, a의 값을 3으로 변경한다. 하지만 블록 밖의 a에 대입된 1의 값은 변경되지 않는 다. 하지만 블록 안에서는 b의 변수가 선언되지 않았으므로 블록 밖에 있는 b의 값이 2에 서 4로 변경된다. 즉, a와 b의 출력 값은 1과 4이다. (나)의 경우 main 블록 안에 a와 b가 선언되고, 1과 2의 값을 대입한다. 다음으로 a와 b에 3과 4의 값을 다시 대입한다. 이 경우 같은 블록안에 a와 b의 변수가 포함되어 있으므로 a 와 b의 값은 1과 2에서 3과 4로 수정된다. 즉, a와 b의 출력 값은 3, 4이다. 그러므로 정답은 2번이다. 제 6 장 기억장소 할당 6.2 단위 프로그램 * 지역변수 - 단위 프로그램이나 블록에서 선언하여 사용하는 변수 * 활성화 상태(activated state) - 한 단위 프로그램의 실행 시작부터 종료까지 * 단위 활성화(unit activation) - 실행시간에 한 단위 프로그램이 표현된 상태 - 코드부(code segment)와 활성화 레코드(activation record)로 구성 * 참조 환경(referencing environment) - 단위 프로그램에서 선언된 지역변수와 사용 가능한 비지역변수로 구성 6.2 단위 프로그램 기출문제 [2009 기말] 43. 단위 프로그램에서 선언된 지역변수와 사용 가능한 비지역 변수로 구성된 단위 활성화 에 관련된 정보를 무엇이라 하는가? 1 활성화 레코드 3 활성화 코드부 2 참조환경 4 활성화 상태 한 단위 활성화의 참조환경(referencing environment)은 단위 프로그램에서 선언된 지역변

56 수와 사용 가능한 비지역변수로 구성된다. 지역변수에 대한 기억장소는 자신의 활성화 레코 드에 할당되어 있으며, 비지역변수에 대한 기억장소는 다른 단위 프로그램의 활성화 레코드 에 자리 잡고 있다. 그러므로 정답은 2번이다. [2008 기말] 64. 다음 중 참조 환경에 대한 설명으로 옳은 것은? 1 명령문에서 접근할 수 있는 변수들의 집합을 활성화 레코드라 한다. 2 정적 영역 규칙의 언어에서는 이름에 대한 바인딩이 프로그램의 외형적인 구조에 따라 먼저 자기 블록의 것과 바인딩 되도록 시도하고 자기 블록에서 선언된 것이 아니면 그 바깥 쪽 블록을 조사해보는 순으로 진행된다. 3 참조 환경은 컴파일할 때 피연산자나 자료 구조의 속성을 결정하는 데 사용된다. 4 활성 상태란 변수에 대한 바인딩이 끝나고, 실행이 완료된 것을 말한다. 1번 해설 : 실행시간에 한 단위 프로그램이 표현된 상태를 단위 활성화(activated state) 라고 하는데, 단위 활성화는 코드부(code segment)와 활성화 레코드 (activation record)로 구성되어 있다. 프로그램의 명령어로 구성된 코드부는 고정 크기로 프로그램 실행 동안 내용이 변하지 않고, 활성화 레코드는 단위 활성화의 지역변수와 관련된 자료를 비롯한 프로그램 실행에 필요한 모든 정 보를 가지고 있으며 프로그램의 실행에 따라 내용이 ㅂ녀한다. 3번 해설 : 한 단위 활성화의 참조환경(referencing environment)은 단위 프로그램에서 선언된 지역변수와 사용 가능한 비지역변수로 구성된다. 지역변수에 대한 기 억장소는 자신의 활성화 레코드에 할당되어 있으며, 비지역변수에 대한 기억 장소는 다른 단위 프로그램의 활성화 레코드에 자리 잡고 있다. 4번 해설 : 프로그래밍 언어는 대부분 한 프로그램을 여러 단위 프로그램으로 구성할 수 있는데, 단위 프로그램이나 블록에서 선언하여 사용하는 변수를 지역변수라 고 하고, 한 단위 프로그램의 실행 시작부터 종료까지를 활성화 상태 (activated state)라고 한다. 그러므로 정답은 2번이다. [2007 기말] 56. 다음 중 참조 환경에 대한 설명으로 틀린 것은? 1 명령문에서 접근할 수 있는 변수들의 집합을 참조 환경이라 한다. 2 정적 범위 규칙의 언어에서는 참조 환경이 지역 변수들로 이루어진 지역 환경과 접근 가 능한 동적 변수들로 이루어진 동적 환경으로 구성된다. 3 참조 환경은 컴파일할 때 피연산자나 자료 구조의 주소를 결정하는 데 사용된다. 4 활성 상태란 아직 실행이 끝나지 않은 것을 말한다

57 2번 해설 : 한 단위 활성화의 참조환경(referencing environment)은 단위 프로그램에서 선언된 지역변수와 사용 가능한 비지역변수로 구성된다. 지역변수에 대한 기 억장소는 자신의 활성화 레코드에 할당되어 있으며, 비지역변수에 대한 기억 장소는 다른 단위 프로그램의 활성화 레코드에 자리 잡고 있다. 그러므로 정답은 2번이다. 6.3 정적 기억장소 할당 * 정적 변수 - 번역시간에 크기가 고정되며 번역 시간에 할당되는 변수 6.3 정적 기억장소 할당 기출문제 [2009 기말] 59. 기억장소 할당에 관한 설명으로 바른 것은? 1 프로그램 실행 중에 기억장소를 할당하는 방법은 정적 기억장소 할당 기법이다. 2 번역 시간에 크기가 고정되며 번역 시간에 할당되는 변수를 정적 변수라고 한다. 3 정적 기억장소 할당 기법을 사용하는 언어는 블록 중심 언어이다. 4 재귀 호출이 허용되지 않는다는 기본조건으로 갖추어야 하는 것은 동적 기억장소 할당 기법이다. 1번 해설 : 프로그램 실행 중에 기억장소를 할당하는 기법은 동적 기억장소 할당 기법이 다. 3번 해설 : 동적 기억장소 할당 기법을 사용하는 언어는 블록 중심 언어로, 컴파일 기법 을 사용하여 구현되는 언어와 인터프리트 기법을 사용하여 구현되는 언어로 구분된다. 4번 해설 : 정적 기억장소 할당 기법은 단순하여 매우 쉽게 구현될 수 있지만, 프로그래 밍 언어에 대한 유연성이 적어진다. 즉, 재귀호출을 허용하지 못하며, 또한 배열을 비롯한 모든 변수에 대한 기억장소가 정적으로 한정되기 때문에 실행 중에 배열의 크기 등을 변화시킬 수 없다. 그러므로 정답은 2번이다. [2007 기말] 55. 기억 장소가 실행 이전에 바인딩되어 실행 종료시까지 계속되는 변수는? 1 정적 변수 3 전역 변수 2 동적 변수 4 지역 변수 1번 해설 : 변수는 실행시간 전에 생성되어 프로그램 실행시간 전체가 변수의 수명이 된

58 다. 이러한 의미(번역시간에 크기가 고정되며 번역 시간에 할당되는)를 갖는 변수를 정적 변수라고 한다. 2번 해설 : 프로그래머가 실행 중에 기억장소의 크기를 변화시키는 자료값을 다룰 수 있 다. 그러므로 활성화 레코드가 활성화되는 시점에서도 활성화 레코드의 크기 를 알 수 없다. 이러한 변수를 동적 변수라고 한다. 3번 해설 : 정적 내포관계를 유지하는 블록 구조 언어에서 블록에서 선언된 변수와 형식 매개변수는 지역변수이다. 4번 해설 : 정적 내포관계를 유지하는 블록 구조 언어에서 그 블록을 내포하고 있는 외 부 블록에서 선언된 변수는 비지역 또는 전역 변수이다. 그러므로 정답은 1번이다. [2005 기말] 43. 다음 중 생명시간이 프로그램 실행시간 전체인 것은? 1 묵시적 힙 변수 3 스택 변수 2 명시적 힙 변수 4 정적 변수

59 1번 해설 : 묵시적 힙 변수는 변수에 값이 부여될 때에서야 힙의 기억 장소가 할당된다. 2번 해설 : 명시적 힙 변수는 프로그래머가 필요에 따라 명령어를 써서 생성시켰다가 소 멸시키는 변수에 해당한다. 3번 해설 : 준동적 변수나 준정적 변수를 스택 변수라고 부른다. 준동적 변수 (semi-dynamic variable)는 준정적 변수 개념에 다음 조건 하나가 덧붙여진 다. 번역시간에 단위 활성화 레코드에서 지역변수의 차감거리가 상수값으로 확정되지 못하여 주소에 대한 최종 확정을 실행시간까지 늦추어야 한다는 것 이다. 준정적 변수(semi-static variable)는 활성화 레코드의 크기는 정적 바 인딩이고 기억장소 할당은 동적 바인딩을 하는 변수이다. 4번 해설 : 변수는 실행시간 전에 생성되어 프로그램 실행시간 전체가 변수의 수명이 된 다. 이러한 의미(번역시간에 크기가 고정되며 번역 시간에 할당되는)를 갖는 변수를 정적 변수라고 한다. 그러므로 정답은 4번이다. 6.4 스택 기반 동적 기억장소 할당 * 동적 기억장소 할당 기법 - 프로그램 실행 중에 기억장소를 할당 - 블록 중심 언어 - 컴파일 기법을 사용하여 구현되는 언어와 인터프리트 기법을 사용하여 구현되는 언어 로 구분 * 블록 기반 언어 - Algol 60의 영향을 크게 받아 설계된 프로그래밍 언어를 의미 - 변수의 영역을 제한하고, 프로그램을 적당한 단위 프로그램으로 나누어 구성할 수 있도 록 블록 개념을 도입한 언어 * 블록 - 전체 프로그램 실행과정에서 특정 블록의 실행 차례가 되었을 때 활성화 - 지역 선언문을 가지며 새로운 실행환경을 정의하기 위한 단위로 사용 * 부프로그램 - 호출문에 의하여 호출되었을 때 활성화 - 부프로그램에서 변수영역이 블록에서의 변수영역과 동일한 규칙을 따름 활성화 레코드의 크기가 정적으로 결정되는 경우 * 준정적 변수(semi-static variable) - 활성화 레코드의 크기와 변수에 대한 차감거리가 번역시간에 결정될지라도 실행시간 단위 프로그램이 활성화되는 시점에서 활성화 레코드의 위치가 결정되므로 변수에 대한 실제 주소는 실행시간에 바인딩되는 변수 - 활성화 레코드의 크기는 정적 바인딩이고 기억장소 할당은 동적 바인딩을 하는 변수 * 동적 링크(dynamic link) - 후자의 포인터

60 * 동적 체인(dynamic chain) - 현재 활성화된 활성화 레코드로부터 동적 링크를 추적한 연결 - 단위 활성화의 동적 내포관계를 표현 - 현 활성화까지 계속 호출된 활성화 레코드 체인을 의미 단위 프로그램이 활성화되는 시점에서 활성화 레코드의 크기가 결정되는 경우 * 준동적 변수(semi-dynamic variable) - 단위 프로그램이 활성화되는 시점에서 지역변수가 모두 생성되며, 지역변수가 요구하는 기억장소의 크기가 결정되는 변수 활성화 레코드가 동적으로 변하는 경우 * 동적 변수 - 활성화 레코드가 활성화되는 시점에서도 활성화 레코드의 크기를 알 수 없는 변수 - 힙(heap)이라고 하는 기억장소에 할당 - 힙 변수라 부르기도 함 * 유연성 배열(flexible array) - 프로그램 실행 중에 할당되는 자료에 맞추어서 크기를 조절할 수 있는 배역 * 스택 변수 - 준동적 변수가 준정적 변수 비지역변수의 참조방법 * 정적 링크(static link) - 비지역변수에 접근하기 위한 한 가지 방법으로 모든 활성화 레코드에 할당한 포인터 * 정적 체인 - 활성화 레코드로부터 아래로 연결된 정적 링크의 순서 * 디스플레이 사용 기법 - 단위 프로그램의 호출과 반환횟수에 비하여 비지역변수의 사용이 상대적으로 증가할 경우 매력적인 방법 6.4 스택 기반 동적 기억장소 할당 기출문제 [2009 기말] 44. 활성화 레코드현재 활성화된 활성화 레코드부터 동적 링크를 추적한 연결을 무엇이라 하는가? 1 동적 체인 3 정적 체인 2 준정적 변수 4 디스플레이 1번 해설 : 현재 활성화된 활성화 레코드로부터 동적 링크를 추적한 연결을 동적 체인 (dynamic chain)이라고 한다. 2번 해설 : 준정적 변수(semi-static variable)는 활성화 레코드의 크기는 정적 바인딩이 고 기억장소 할당은 동적 바인딩을 하는 변수이다

61 3번 해설 : 활성화 레코드로부터 아래로 연결된 정적 링크의 순서를 정적 체인이라 한다. 4번 해설 : 비지역변수의 자료값에 대한 참조시간을 줄이기 위한 또 하나의 구현기법으 로 디스플레이 사용 기법이 있다. 이 기법은 단위 프로그램의 호출과 반환횟 수에 비하여 비지역변수의 사용이 상대적으로 증가할 경우 매력적인 방법이 다. 그러므로 정답은 1번이다. 45. 번역 시간에 단위 활성화 레코드에서 지역변수의 차감거리가 상수값으로 확정되지 못하 여 주소에 대한 최종 확정을 실행시간까지 늦추어줘야하는 특성을 갖는 변수를 무엇이라 하 는가? 1 준정적 변수 2 동적변수 3 정적변수 4 준동적변수 1번 해설 : 준정적 변수(semi-static variable)는 활성화 레코드의 크기는 정적 바인딩이 고 기억장소 할당은 동적 바인딩을 하는 변수이다. 2번 해설 : 프로그래머가 실행 중에 기억장소의 크기를 변화시키는 자료값을 다룰 수 있 다. 그러므로 활성화 레코드가 활성화되는 시점에서도 활성화 레코드의 크기 를 알 수 없다. 이러한 변수를 동적 변수라고 한다. 3번 해설 : 변수는 실행시간 전에 생성되어 프로그램 실행시간 전체가 변수의 수명이 된 다. 이러한 의미(번역시간에 크기가 고정되며 번역 시간에 할당되는)를 갖는 변수를 정적 변수라고 한다. 4번 해설 : 준동적 변수(semi-dynamic variable)는 준정적 변수 개념에 다음 조건 하나 가 덧붙여진다. 번역시간에 단위 활성화 레코드에서 지역변수의 차감거리가 상수값으로 확정되지 못하여 주소에 대한 최종 확정을 실행시간까지 늦추어 야 한다는 것이다. 그러므로 정답은 4번이다. [2008 기말] 60. 순환 호출이 가능한 구조의 프로그램에서 활성화 레코드의 회수시 어디까지를 회수시켜 야 하는지 표시하기 위해 만든 것은? 1 정적 링크 2 정적 체인 3 실행시간 스택 4 동적 링크 1번 해설 : 비지역변수에 접근하기 위한 한 가지 방법으로 모든 활성화 레코드에 정적 링크(static link)라고 부르는 포인터를 할당하고, 그 포인터로 하여금 작성된 프로그램의 정적 내포관계에 있는 활성화 레코드를 가리키게 한다. 2번 해설 : 활성화 레코드로부터 아래로 연결된 정적 링크의 순서를 정적 체인이라 한다

62 직관적으로 볼 때 비지역변수에 대한 참조는 이 정적 체인을 따라서 검색해 먼저 발견된 변수를 참조하면 된다. 3번 해설 : 호출될 때에는 활성화 레코드가 할당되고 되돌아갈 때에는 회수되는데, 회수 는 할당의 역순, 즉 나중에 할당된 것이 먼저 회수되는 것이다. 이러한 순서 에 적합한 자료 구조가 스택이기 때문에 순환 호출을 위해서는 활성화 레코 드를 스택에 할당한다. 이러한 스택을 실행 시간 스택이라고도 한다. 4번 해설 : 호출된 활성화 레코드에서 호출한 활성화 레코드로 반환되려면 활성화 레코 드 안에 호출한 활성화의 반환주소와 호출한 활성화 레코드를 가리키는 주소 값을 저장할 포인터가 있어야 한다. 일반적으로 반환주소는 호출자의 코드부 에 대한 포인터와 호출 다음 명령어에 대한 코드부에서의 차감거리로 구성된 다. 이 경우 한 단위 프로그램의 활성화 상태에서 후자의 포인터를 동적 링 크(dynamic link)라고 한다. 그러므로 정답은 4번이다. [2007 기말] 47. 각 프로시저의 활성화 레코드에 저장되지 않는 것은? 1 반환주소 3 매개변수 2 전역변수 4 함수값 호출된 활성화 레코드에서 호출한 활성화 레코드로 반환되려면 활성화 레코드 안에 호출한 활성화의 반환주소와 호출한 활성화 레코드를 가리키는 주소값을 저장할 포인터가 있어야 한다. 또한, 지역변수, 매개변수, 함수값 등이 저장된다. 그러므로 정답은 2번이다. 51. 정적 체인에 의한 방법은 비지역 참조가 있을 때마다 정적 체인을 추적해야 하므로 비 지역 참조가 많은 경우에는 비효율적이며, 이러한 단점을 해결하기 위해 제안된 것은? 1 디스플레이 2 정적 링크 3 동적 링크 4 실행 시간 스택 비지역변수의 자료값에 대한 참조시간을 줄이기 위한 또 하나의 구현기법으로 디스플레이 사용 기법이 있는데, 이 기법에서는 단위 활성화를 생성하고 회수하는 작업이 좀 더 복잡하 다. 디스플레이 사용 기법은 단위 프로그램의 호출과 반환횟수에 비하여 비지역변수의 사용 이 상대적으로 증가할 경우 매력적인 방법이다. 정적 링크 대신에 실행시간 어느 시점에서 나 정적 체인 관계를 디스플레이라고 부르는 1차원 가변배열을 사용하여 유지한다. 그러므로 정답은 1번이다. [2006 기말]

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

<4D F736F F F696E74202D20C7C1B7CEB1D7B7A1B9D6BEF0BEEEB7D05FC3E2BCAEBCF6BEF7>

<4D F736F F F696E74202D20C7C1B7CEB1D7B7A1B9D6BEF0BEEEB7D05FC3E2BCAEBCF6BEF7> I. 프로그래밍언어의소개 프로그래밍언어론 목차 한국방송통신대학교컴퓨터과학과김진욱교수. 프로그래밍언어란무엇인가?. 프로그래밍언어의특성 프로그래밍언어란무엇인가?. 프로그래밍언어란무엇인가? 언어란무엇인가? 음성또는문자를수단으로사상이나감정을표현하고의사를전달하는수단또는체계 [ 출처 : 민중국어사전 ] 사람의생각하는바를표현하고전달하기위해오랜시간을통해형성된형식적이고의미적인표현방법

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

<C7C1B7CEB1D7B7A1B9D6BEF0BEEE2E687770>

<C7C1B7CEB1D7B7A1B9D6BEF0BEEE2E687770> 2과목 : 프로그래밍 일반 41. 프로그래머가 직접 제어를 표현하지 않았을 경우, 그 언어 에서 미리 정해진 순서에 의해 제어가 이루어지는 순서 제 어는? 가. 구조적 나. 명시적 다. 묵시적 라. 분석적 42. 파스 트리에 대한 설명으로 틀린 것은? 가. 어떤 표현이 BNF에 의해 바르게 작성되었는지 확인하 기 위해 만드는 트리이다. 나. 파스 트리가 존재하면

More information

<B3EDB9AEC0DBBCBAB9FD2E687770>

<B3EDB9AEC0DBBCBAB9FD2E687770> (1) 주제 의식의 원칙 논문은 주제 의식이 잘 드러나야 한다. 주제 의식은 논문을 쓰는 사람의 의도나 글의 목적 과 밀접한 관련이 있다. (2) 협력의 원칙 독자는 필자를 이해하려고 마음먹은 사람이다. 따라서 필자는 독자가 이해할 수 있는 말이 나 표현을 사용하여 독자의 노력에 협력해야 한다는 것이다. (3) 논리적 엄격성의 원칙 감정이나 독단적인 선언이

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

PowerPoint Presentation

PowerPoint Presentation 컴퓨터프로그래밍 Computer Programming 08 포인터기초 목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3 1. 포인터변수와선언 주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

<5BB0EDB3ADB5B55D32303131B3E2B4EBBAF12DB0ED312D312DC1DFB0A32DC0B6C7D5B0FAC7D02D28312E28322920BAF2B9F0B0FA20BFF8C0DAC0C720C7FCBCBA2D3031292D3135B9AEC7D72E687770>

<5BB0EDB3ADB5B55D32303131B3E2B4EBBAF12DB0ED312D312DC1DFB0A32DC0B6C7D5B0FAC7D02D28312E28322920BAF2B9F0B0FA20BFF8C0DAC0C720C7FCBCBA2D3031292D3135B9AEC7D72E687770> 고1 융합 과학 2011년도 1학기 중간고사 대비 다음 글을 읽고 물음에 답하시오. 1 빅뱅 우주론에서 수소와 헬륨 의 형성에 대한 설명으로 옳은 것을 보기에서 모두 고른 것은? 4 서술형 다음 그림은 수소와 헬륨의 동위 원 소의 을 모형으로 나타낸 것이. 우주에서 생성된 수소와 헬륨 의 질량비 는 약 3:1 이. (+)전하를 띠는 양성자와 전기적 중성인 중성자

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint Predicates and Quantifiers.ppt

Microsoft PowerPoint Predicates and Quantifiers.ppt 이산수학 () 1.3 술어와한정기호 (Predicates and Quantifiers) 2006 년봄학기 문양세강원대학교컴퓨터과학과 술어 (Predicate), 명제함수 (Propositional Function) x is greater than 3. 변수 (variable) = x 술어 (predicate) = P 명제함수 (propositional function)

More information

와플-4년-2호-본문-15.ps

와플-4년-2호-본문-15.ps 1 2 1+2 + = = 1 1 1 +2 =(1+2)+& + *=+ = + 8 2 + = = =1 6 6 6 6 6 2 2 1 1 1 + =(1+)+& + *=+ =+1 = 2 6 1 21 1 + = + = = 1 1 1 + 1-1 1 1 + 6 6 0 1 + 1 + = = + 7 7 2 1 2 1 + =(+ )+& + *= + = 2-1 2 +2 9 9 2

More information

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut 경영학을 위한 수학 Fial Eam 5//(토) :-5: 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오.. (각 6점) 다음 적분을 구하시오 4 ( ) (a) ( )4 8 8 (b) d이 성립한다. d C C log log (c) 이다. 양변에 적분을 취하면 log C (d) 라 하자. 그러면 d 4이다. 9 9 4 / si (e) cos si

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (I) Contents 변수와상수 블록과변수의범위 수식과연산자 제어문과반복문 문자와문자열 배열, 포인터, 메모리관리 구조체 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제

회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제 회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제 KR000****4 설 * 환 KR000****4 송 * 애 김 * 수 KR000****4

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

국어 순화의 역사와 전망

국어 순화의 역사와 전망 전문용어의국어화 강현화 1. 들어가기 이해할 수 있는 쉬운 언어 사용의 전형을 만들고자 노력하고 있다. 따라서 본고는 전문 용어의 사용자가 전문가뿐만 아니라 일반인도 포 될 수 있다는 데에서 출발한다. 이러한 출발점을 시작으로 과연 전문 함 용어의 국어화가 어떻게 나아가야 하는지에 대해 고민해 보고자 한다. 2. 전문 용어 연구의 쟁점 2.1. 전문 용어

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로

More information

3차시.ppt

3차시.ppt [ 정보처리기능사필기] 1 과목 - 전자계산기일반 1 / 10 정보처리기능사 ( 필기 ) 1 과목. 전자계산기일반컴퓨터시스템의구성 2 1. 컴퓨터의기본구성 컴퓨터의기본구성 컴퓨터 = + (Hardware) 컴퓨터기계 (Software 를움직여주는프로그램 [ 정보처리기능사필기] 1 과목 - 전자계산기일반 2 / 10 2. (Hardware) -Hardware

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

Data Structure

Data Structure Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;

More information

자연언어처리

자연언어처리 제 7 장파싱 파싱의개요 파싱 (Parsing) 입력문장의구조를분석하는과정 문법 (grammar) 언어에서허용되는문장의구조를정의하는체계 파싱기법 (parsing techniques) 문장의구조를문법에따라분석하는과정 차트파싱 (Chart Parsing) 2 문장의구조와트리 문장 : John ate the apple. Tree Representation List

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표 Vector Differential: 벡터 미분 Yonhee Lee October 7, 08 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표기법을 정의하는 방법이다 보통 스칼라(scalar)에 대한 미분은 일분수 함수 f : < < 또는 다변수 함수(function

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 SNU 4190.210 프로그래밍 원리 (Principles of Programming) Part III Prof. Kwangkeun Yi 차례 1 값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 2 프로그램의이해 : 환경과메모리 (environment & memory) 다음 1 값중심 vs 물건중심프로그래밍

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

#7단원 1(252~269)교

#7단원 1(252~269)교 7 01 02 254 7 255 01 256 7 257 5 10 15 258 5 7 10 15 20 25 259 2. 어휘의 양상 수업 도우미 참고 자료 국어의 6대 방언권 국어 어휘의 양상- 시디(CD) 수록 - 감광해, 국어 어휘론 개설, 집문당, 2004년 동북 방언 서북 방언 중부 방언 서남 방언 동남 방언 제주 방언 어휘를 단어들의 집합이라고 할 때,

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp 2015년도 국가직 9급 컴퓨터 일반 문 1. 시스템 소프트웨어에 포함되지 않는 것은? 1 1 스프레드시트(spreadsheet) 2 로더(loader) 3 링커(linker) 4 운영체제(operating system) - 시스템 소프트웨어 : 운영체제, 데이터베이스관리 프로그램,, 컴파일러, 링커, 로더, 유틸리티 소프트웨 어 등 - 스프레드시트 : 일상

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

EA0015: 컴파일러

EA0015: 컴파일러 5 Context-Free Grammar 무엇을공부하나? 앞에서배운 " 정규식 " 은언어의 " 어휘 (lexeme)" 를표현하는도구로사용되었다. 언어의 " 구문 (syntax)" 은 " 정규언어 " 의범위를벗어나기때문에 " 정규식 " 으로표현이불가능하다. 본장에서배우는 " 문맥자유문법 " 은언어의 " 구문 (syntax)" 을표현할수있는도구이다. 어떤 " 문맥자유문법

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - Chapter_04.pptx 프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information