알고리즘과 추상자료형
알고리즘 (Algorithm)
프로그램과 알고리즘
프로그램
-컴퓨터에게 우리가 원하는 일을 시키기 위해서 사용하는 구체적인 방법
-실제로 컴퓨터가 일을 할 수 있는 상태의 매우 세세한 것까지 표현
알고리즘
-컴퓨터에게 편한 관점이 아닌 우리 사람에게 유용한 관점에서 어떤 원하는 일을 처리하는 방법을 표현 한 것
프로그램과 알고리즘
컴퓨터를 활용한다는 면에서는 알고리즘과 프로그램은 서로 불가분의 관계
알고리즘은 프로그램으로 표현되어야 컴퓨터가 처리할 수 있다.
프로그램도 결국은 우리가 원하는 일을 표현한 것이므로 알고리즘이라고 할 수 있다.
알고리즘이란?
알고리즘이란, 그 지시대로 실행하여 특정한 일을 달성하려는 명령어들의 유한집합이다. 그리고 다음의 조건을 만족해야 한다.
1.입력(Iput) : 0개 이상이어야 한다.
2.출력(Otput) 적어도 한 개 이상 있어야 한다.
3.명확성(Definiteness) : 그 결과는 명확해야한다.
4.유한성(Finiteness) : 명령을 유한개수 만큼 실행하면 우리가 원하는 결과가 나와야 한다.
5.유효성(Effectiveness) : 명령 하나하나는 컴퓨터가 쉽게 실행할 수 있는 것이어야 한다.
기본 자료형
자료형을 사용하는 이유는?
-컴파일러는 자료형이 일치하지 않은 것을 찾아낸다.
-자료형을 명시적으로 선언하면 비명시적인 경우에 비해 잘못 사용할 가능성을 줄여준다.
Java에서는 기본적으로 boolean, char, int, float 등을 제공한다. 각각 문자, 정수, 실수를 하나씩 표현할 수 있다.
컴퓨터에서는 계산의 효율을 위해 정수와 실수를 구분하여 서로 달리 표현한다. 정수는 실수보다 효율적으로 계산할 수 있다. 더 큰 숫자나 더 정확한 숫자를 나타내기 위해서는 정수의 경우에는 int 대신 long을, 실수의 경우에는 float 대신에 double을 사용할 수 있다.
추상 자료형
자료형의 두 요소
원소들의 집합
이 원소들에 대해 실행되는 연산들의 집합
추상 자료형(Abstract Data Types)은 Class
각 추상자료형의 구성 요소:
객체의 집합
객체에 적용되는 연산들의 집합
객체지향 프로그래밍의 중요한 개념인 클래스는 사실 다름아닌 바로 사용자가 정의하여 사용할 수 있는 사용자 정의 자료형이다. 프로그램 설계자가 정의하는 자료형이다.
자료의 추상화란?
자료의 추상화란 무엇인가? 사실 처음 배우는 단계에서 쉬운 개념은 아니다.
우리 일상 생활에서 접할 수 있는 추상화의 예를 하나 들어 보자. 캡슐에 들어 있는 마이신 약을 생각해 보자. 캡슐을 열어보면 그 안에는 가루 약이 들어 있다. 마이신은 염증 치료에 사용되는 매우 쓴 약이다. 약의 사용자라고 할 수 있는 환자는 염증 치료를 위해 마이신 약을 먹는다. 그렇지만 먹어서 낫기만 하면 되는 것이 목적이지, 그 약의 쓴 맛을 보는 것이 목적이라고 할 수는 없다.
한편 약의 제조자인 제약회사의 관점에서 생각해 보자. 제약회사는 사용자의 용도에 맞추어 마이신 약의 목적은 살리되 환자가 원하지 않는 약의 쓴 맛은 모르게 하고 싶을 것이다. 그래서 캡슐이라는 것을 만들게 되었다. 약의 효능에는 영향을 주지 않으면서도 맛은 쓰지 않은 캡슐(capsule)을 만들어 그것으로 마이신 약을 감싸서 알약으로 만든 것이다. 이러한 행위가 바로 캡슐화, 즉 encapsulation 이라고 할 수 있다.
자바에서는 class로 추상자료형을 구현을 하는데 c로 바꾸자면 구조체랑 비슷하다고 볼 수 있다. 다만 차이점이라면 구조체는 순수 데이터만 가지고 있지만 OOP에서 객체에의한 자료의 추상화는 이 자료를 다루는 메소드도 같이 포함하여 처리를 한다.




덧글