5강. 연결 리스트

학습개요 리스트는 배열과 달리 원소들 간의 논리적인 순서를 위한 자료구조입니다. 원소들 간의 순서가 논리적으로(추상적으로) 지켜져야 하며, 각각의 원소가 저장되는 물리적인 위치가 연속적이든 불연속적이든 상관하지 않습니다. 배열을 이용하여 리스트를 구현하면, 원소의 논리적인 순서를 지키기 위해 원소의 이동이 많아집니다. 따라서 리스트를 구현하기 위해서는 일반적으로 포인터 변수를 이용한 연결 리스트를 이용합니다. 포인터 변수의 사용과 동적인 메모리 할당 방법을 … Read more

4강. 큐

학습개요 큐는 스택과 유사하게 입출력 순서를 중심으로 자료들 간의 관계가 성립되는 자료구조입니다. 입출력 순서의 관리를 통해 입력이 가장 빨랐던 자료가 가장 먼저 출력되는 관계를 표현합니다. 그렇기 때문에 큐는 줄을 서는 순서에 따라서 공평하게 서비스를 해주는 경우에 많이 사용되고, 자원의 할당을 받으려는 작업들 간의 순서를 관리하기 위해 사용되는 경우가 많습니다. 큐를 기반으로 하는 입력 연산을 수행하기 … Read more

3강. 스택

학습개요 스택은 입출력 순서를 중심으로 자료들 간의 관계가 성립되는 자료구조입니다. 즉, 입력이 가장 늦게 된 자료가 가장 먼저 출력되는 관계를 표현합니다. 그렇기 때문에 스택은 왔던 길을 되돌아가는 경우에 많이 사용되고, 예전에 처리했던 값들을 역순으로 되돌아가며 찾아내서 처리해야 하는 경우에 많이 사용됩니다. 스택 구조는 입력 연산을 수행하기 전에 정의된 스택의 크기를 항상 확인해야 합니다. 스택의 크기보다 … Read more

2강. 배열

학습개요 배열은 자료의 추상화된 의미와 구체화된 의미가 유사한 자료구조입니다. 자료간의 관계가 추상화되었을 때와 구체화되어 저장되었을 때가 동일하다는 의미입니다. 배열은 자료에 해당하는 원소(원소값)와 몇 번째에 해당하는 지를 의미하는 인덱스로 구성됩니다. 즉, 배열은 순서를 표현하는 인덱스와 값을 표현하는 원소값의 쌍으로 이루어집니다. 이러한 특성은 2차원 배열이나 3차원 배열에서도 지켜집니다. 즉, 1차원 배열의 확장된 모양이 2차원 배열이며 3차원 배열이 … Read more

1강. 자료구조란 무엇인가?

학습개요 자료구조는 현실세계의 자료를 컴퓨터에게 전달하기 위해 사용되는 자료의 추상화된 형태이다. 특히 자료구조는 알고리즘과 함께 고려되어 구조화되며 컴퓨터과학에서 가장 기본적이고 핵심적인 분야이다. 이 장에서는 자료구조의 기본 개념과 알고리즘과 자료구조와의 관계, 그리고 추상화에 대해서 살펴본다. 학습목표 자료구조와 추상화의 의미를 이해할 수 있다. 알고리즘과 자료구조와의 관계를 이해할 수 있다. 미리 정의된 자료구조와 사용자 정의 자료구조의 차이를 이해할 … Read more

15강. 객체지향과 다형성

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

14강. 서브프로그램 구현

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

13강. 서브프로그램 개요

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

12강. 문장

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

11강. 수식

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