관련 포스팅
1. Perl과제 기록
2. Pascal과제 기록
3. Prolog과제 기록
프로그래밍언어 시간에 과제로 부여한 Pascal이란 언어로 여러가지 자료구조들을 이용한 프로그램을 구현을 했습니다.
- 임의의 숫자 12개를 입력 받은 이진 트리를 출력하시오.
- F0 = 0, F1 = 1 그리고 Fn = Fn-1 + Fn-2 (n≥2)일 때, 임의의 숫자를 입력받아서 그 수보다 작은 수(혹은 같은수)까지의 피보나치 수열을 출력하시오.
- 임의의 숫자 12개를 입력 받아 퀵정렬 알고리즘을 사용하여 정렬하시오.
- 다음 그래프에서 1번 노드에서 시작해서 10번 노드로 가는 최단거리를 Dijkstra 알고리즘을 이용해서 구하시오.
- 하노이 탑 알고리즘 구현하시오. 세 개의 막대가 있고 원판의 개수는 임의로 입력 받는다.
프로그래밍 언어 3월달 과제는 Perl이라는 언어로 위의 자료구조들을 구현하는 것이였는데 4월달 과제는 Pascal이라는 언어로 위의 자료구조들을 구현하는 것이었습니다.
조교님께서 가르쳐주신다고 했으나 20분만에 상황 종료. 이렇게 깔고 프로그램은 이렇게 돌아가요. =_=;;
그런데 조교님이 태클을 건 것인 Turbo Pascal version 5.5을 기준으로 채점을 한다고 하였다.
여태까지 Pascal을 GNU에서 나온 GNU Pascal Compiler로 계속 컴파일 해서 과제를 했었는데 Turbo Pascal에서 컴파일 하라고 해서 당황했습니다.
Turbo Pascal 5.5 Version은 1989년도 볼랜드에서 나온 컴파일러로서 윈도우즈 XP에서도 돌아간다는 것이 신기할 정도였습니다.
아래 그림은 1989년에 만들어진 Turbo Pascal Version 5.5 화면입니다.
윗 프로그램이 1989년도에 만들어진 것이라서 한글을 쓰는 코드페이지에서는 와장창 깨집니다. 그리고 거기에 예전에 만들어진 것이라서 한글의 입력이 거의 불가능합니다. ;ㅁ;
그래서 Linux에서 우선 코드 적고 한글 주석 달고 GNU Pascal Compiler로 컴파일 한 다음 Turbo Pascal v5.5로 컴파일을 했습니다.
두벌일을 해버렸군요 시간은 금인데 효율적이지 않은 프로그래밍을 했다고 할까요?ㅠㅠ
위의 Turbo Pascal v5.5는 아래 링크에서 구했습니다.
http://www.freeprogrammingresources.com/Borland사의 Turbo Pascal를 직접 얻을려면 이 사이트에서 구하면 됩니다.
Antique Software: Turbo Pascal v5.5
(무려 Antique 입니까? ;ㅁ;)
윗 사이트에서 1989년 당시의 Turbo Pascal 광고도 볼수가 있습니다. 저 광고를 보면서 Pascal이란 자를 저주하고픈 충동이 생겼습니다. =_=
인터넷을 뒤져보다가 이런 희귀한 Pascal 자료들을 발굴하게 되었더군요 =_=;;
첫 원서 (그리고 관련없는 생각)아래 그림은 윗 링크에 나온 파스칼 설치 패키지입니다. 제가 이 것 보다도 더 오래된 Pascal Compiler를 쓴다는 것이 경악이었습니다 ㅠㅠ
Pascal을 처음 공부했을때에는 C와는 다른 예약어들과 C랑 다른 기호들 때문에 좀 헷갈리는 감이 있었는데 지금은 과제를 거뜬히 할수 있을 정도로 단련이 된듯 합니다. Pascal이 C랑 비슷한 구조가 있다는 것이 +_+
그런데 3월달에 Perl과제 처럼 4. Dijkstra Algorithm(Shortest Path)는 좀 압박이 좀 있었죠. 자료구조 책에서 이런 이론이 있다는 정도로 나가서 이해가 잘안되었던 기억이 ^^
Pascal을 배우면 배워볼수록, 책에 나온 PsudoCode들이 다 Pascal로 보입니다. 미묘님이 말씀한 것처럼 Pascal배우니까 PsudoCode들이 다 Pascal로 바꾸고 싶은 욕망들이 솟구쳤습니다 +_+
이번 과제는 제일 먼저 Linux에서 GNU에서 무료로 제공한 GNU Pascal Compiler로 Pascal을 컴파일 하였고, 그 다음 Turbo Pascal v5.5로 컴파일을 하였습니다. 둘다 돌아가게 만들었습니다.
아래는 과제 실행화면 결과입니다. 앞의 Perl 포스팅과 같은 값을 집어 넣었습니다.
=================================================
Binary Tree Programming
홍익대학교 컴퓨터공학과 3학년 A511151 ***
=======================================================
12개의 숫자를 입력하십시요.
49 36 64 40 50 55 24 20 68 85 12 39
................85
............68
........64
................55
............50
....49
............40
................39
........36
............24
................20
....................12
=============================================================
Fibonacci Sequence Programming
홍익대학교 컴퓨터공학과 3학년 A511151 ***
=============================================================
Input the number : 5
0 1 1 2 3 5
========================================================
QuickSort Algorithm
홍익대학교 컴퓨터공학과 3학년 A511151 ***
========================================================
임의의 숫자 12개를 입력 하세요 :D
0 56 19 80 58 47 35 89 82 74 17 85
정렬이 되었습니다 :D
0 17 19 35 47 56 58 74 80 82 85 89
==============================================================
Dijkstra Algorithm (Shortest Paths)
홍익대학교 컴퓨터공학과 3학년 A511151 ***
==============================================================
1번 노드로 부터 10번 노드까지 가는 최단 거리 Dijkstra Algorithm
1 -> 2 -> ... -> 10
=========================================================
Hanoi tower Algorithm
홍익대학교 컴퓨터공학과 A511151 ***
=========================================================
input board number : 3
board 1 [1->3]
board 2 [1->2]
board 1 [3->2]
board 3 [1->3]
board 1 [2->1]
board 2 [2->3]
board 1 [1->3]
[sungdh86@localhost hw]$