15강. 객체지향과 다형성

학습개요 서브프로그램을 이용하면 전체 프로그램을 나누어 작성할 수 있습니다. 전체 프로그램이 사용자로부터 입력을 받고 사용자에게 출력을 내는 것처럼 서브프로그램도 독자적인 입력을 받고 반환값을 내는 것을 볼 수 있었습니다. 이처럼 서브프로그램을 이용하여 여러 서브프로그램을 작성하다 보면 서브프로그램 사이의 소통에 더 관심을 갖게 되는데, 서브프로그램 사이의 소통을 확대한 개념이 바로 객체지향 프로그래밍입니다. 객체지향 프로그래밍에서는 독자적인 객체들 사이의 … Read more

14강. 서브프로그램 구현

학습개요 서브프로그램은 독자적인 자신만의 영역을 관리해야 하기 때문에 이를 구현하는 것은 다소 복잡합니다. 더구나 서브프로그램에서 비지역변수를 사용할 경우에는 이를 호출자의 영역에서 찾아야 하므로 일이 더 복잡해집니다. 그럼 서브프로그램을 어떻게 구현할 수 있을까요? 서브프로그램을 구현할 때에는 활성 레코드라는 것을 사용합니다. 활성 레코드는 서브프로그램의 매개변수와 지역변수를 포함하고 있으며 서브프로그램 호출 관계를 관리하기 위해서 다른 관리 정보도 포함하고 … Read more

13강. 서브프로그램 개요

학습개요 서브프로그램은 프로그램을 구성하는 작은 프로그램이라고 볼 수 있습니다. 따라서 모듈화 프로그래밍을 지원하는 기본 기능이라고 할 수 있지요. 프로그래밍 언어의 서브프로그램 개념은 어떻게 생겨났을까? 서로 다른 프로그래밍 언어의 서브프로그램은 어떻게 다를까? 이번 강의에서는 서브프로그램의 기초 개념과 용어를 살펴보고 여러 프로그래밍 언어에서 제시되고 있는 서브프로그램의 인수 전달 방법의 차이 등을 알아봅니다. 또한 범용 서브프로그램이 어떻게 구현될 … Read more

12강. 문장

학습개요 지난주에 우리는 수식에 대해 배웠습니다. 수식은 요리의 재료와 비슷하다고 했습니다. 그럼 요리를 한다고 가정할 때, 그 절차는 어떻게 보여 줄 수 있을까요? 바로 문장으로 나타냅니다. 가장 기본적인 문장은 재료를 담는 문장입니다. 이는 대수학 분야의 대입과 매우 유사한데, 그래서 변수에 값을 저장하는 문장을 대입문이라고 부릅니다. 변수를 사용하기 전에는 미리 선언해야 하는데, 변수뿐 아니라 어떤 이름을 … Read more

11강. 수식

학습개요 수식이라고 하면 왠지 수학이 떠올라서 딱딱하긴 하지만, 프로그래밍 언어에서 수식은 수뿐 아니라 일반적인 값을 나타내기 위한 것입니다. 그래서 영어로는 표현식(expression)이라고 부릅니다. 값을 나타내는 수식은 어떤 처리를 나타내기 위한 문장과는 다릅니다. 그러나 문장 내에서도 값을 나타내기 위해서는 수식이 필요합니다. 요리를 할 때 재료가 필요한 것과 마찬가지이지요. 수식에는 대개 연산자가 포함되어 있는데, 연산자는 연산 의미에 따라 … Read more

10강. 복합타입

학습개요 지난 강의에서는 데이터 집합의 요소가 하나의 데이터로만 구성된 단순타입에 해당하는 여러 타입들을 배웠습니다. 하지만 실제 프로그램에서는 훨씬 복잡한 형태의 데이터를 다룰 필요가 있습니다. 이번 강의에서는 데이터 집합의 요소가 데이터들의 구조로 구성된 복합타입에 대해 살펴봅니다. 복합타입에 해당하는 배열, 문자열형, 연관배열과 해싱, 구조체, 공용체에 대해 알아본 후, 포인터형과 참조형에 대해 알아봅니다. 학습목표 배열과 문자열형을 설명할 수 … Read more

9강. 타입

학습개요 프로그램은 –1, 0, 1 같은 정수, 0.75, 3.141592 같은 실수, x, y, z 같은 문자 등 다양한 형태의 데이터를 처리합니다. 이러한 데이터들은 사람의 눈으로 보기에는 모두 글자의 조합이지만, 프로그래밍 언어 입장에서는 내부적인 표현 방법도 다르고 처리 방법도 다릅니다. 따라서 대부분의 프로그래밍 언어에서는 데이터를 효과적으로 처리학 위해 타입 개념을 지원합니다. 이번 강의와 다음 강의에서는 프로그래밍 … Read more

8강. 변수의 영역

학습개요 앞서 우리는 변수의 수명에 대해 배웠습니다. 그럼 수명이 있는 동안에는 무조건 변수를 사용할 수 있을까요? 안타깝게도 대부분의 프로그래밍 언어에서는 그렇지 않습니다. 이번 강의에서는 프로그램에서 변수를 사용할 수 있는 범위인 변수의 영역에 대해 알아봅니다. 우선 변수의 영역 및 이와 관련된 기본 개념을 알아본 후, 두 가지 영역 규칙인 정적 영역 규칙과 동적 영역 규칙에 대해 … Read more

7강. 변수와 바인딩

학습개요 우리는 지금까지 몇 주에 걸쳐 프로그래밍 언어의 구현과 관련된 내용을 알아보았습니다. 오늘부터는 프로그래밍 언어의 구성 요소에 대해 다룰 예정입니다. 그 첫 여정으로 앞으로 두 주에 걸쳐 변수에 대해 알아보겠습니다. 변수는 프로그램의 기본이면서 가장 중요한 개념입니다. 이번 강의에서는 변수의 개념과 변수의 바인딩에 대해서 알아봅니다. 바인딩이라는 용어 자체가 생소하기에 바인딩의 개념을 먼저 알아본 뒤 변수의 속성별로 … Read more

6강. 프로그래밍 언어의 구현

학습개요 앞서 우리는 프로그래밍 언어의 구문론과 의미론, 구문 분석 이론에 대해 살펴보았습니다. 그렇다면 구체적으로 프로그래밍 언어는 어떻게 구현할 수 있을까요? 다시 말해서 프로그래밍 언어의 인터프리터나 컴파일러를 어떻게 작성할 수 있을까요? 프로그래밍 언어 구현이 복잡하긴 하지만 실제로는 우리에게 잘 알려진 자료 구조를 사용합니다. 구문 분석을 위해서는 조금 복잡한 알고리즘이 사용되는데, 성능을 크게 고려하지 않는다면 사람이 이해하기 … Read more