ABCABC

ABC

 

[ABC] ABC 언어를 아세요?

올린이 : 위풍당당(박부영 ) 95/10/06 17:16 읽음 : 89 관련자료 없음

 
ABC는
BASICBASIC
BASIC
을 대신하게 설계된 명령형 언업니다.
이 언어는 BASIC이나
Pascal Pascal
Pascal
, AWK 따위로 할 수 있는 모든 종류의 프로그램을 짤 수 있는 범용 언어입니다.
ABC는
CC
C
ForthForth
Forth
같은 시스템 프로그래밍 언어는 아니지만, BASIC보다 훨씬 배우기 쉽고(몇 시간 정도면 충분합니다), 그러면서도 대단히 구조적인 프로그래밍이 가능하면서, 쓰기도 쉬운 고수준 언어입니다.
게다가 교육용 언어로도 대단히 뛰어나면서, 계산 또한 빠릅니다.
같은 내용의 Pascal이나 C 프로그램에 비해, 약 4분의 1에서 5분의 1 정도 크기로 프로그램을 짤 수 있고, 읽기도 훨씬 쉽습니다.
2의 1000제곱이 얼마나 되는지 아십니까? 500!은 얼마나 큰 수일까요? C나 Pascal로 이런 큰 수를 계산하는 게 불가능하지는 않지만, 그러자면 상당히 긴 프로그램을 짜야만 합니다.
그러나, ABC에서는 WRITE 2**1000이라고 치고 엔터를 누르자마자, 답이 주르륵 나옵니다.
 
>>> WRITE 2**1000 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
 
Archive
[40] 제목 : [ABC] ABC 언어를 아세요? 올린이 : 위풍당당(박부영 ) 95/10/06 17:16 읽음 : 89 관련자료 없음 ------------------------------------------------------------------------------ ABC는 BASIC을 대신하게 설계된 명령형 언업니다. 이 언어는 BASIC이나 Pascal, AWK 따위로 할 수 있는 모든 종류의 프로그램을 짤 수 있는 범용 언어입니다. ABC는 C나 Forth 같은 시스템 프로그래밍 언어는 아니지만, BASIC보다 훨씬 배우기 쉽고(몇 시간 정도면 충분합니다), 그러면서도 대단히 구조적인 프로그래밍이 가능하면서, 쓰기도 쉬운 고수준 언어입니다. 게다가 교육용 언어로도 대단히 뛰어나면서, 계산 또한 빠릅니다. 같은 내용의 Pascal이나 C 프로그램에 비해, 약 4분의 1에서 5분의 1 정도 크기로 프로그램을 짤 수 있고, 읽기도 훨씬 쉽습니다. 2의 1000제곱이 얼마나 되는지 아십니까? 500!은 얼마나 큰 수일까요? C나 Pascal로 이런 큰 수를 계산하는 게 불가능하지는 않지만, 그러자면 상당히 긴 프로그램을 짜야만 합니다. 그러나, ABC에서는 WRITE 2**1000이라고 치고 엔터를 누르자마자, 답이 주르륵 나옵니다. >>> WRITE 2**1000 107150860718626732094842504906000181056140481170553360744375038837 035105112493612249319837881569585812759467291755314682518714528569 231404359845775746985748039345677748242309854210746050623711418779 541821530464749835819412673987675591655439460770629145711964776865 42167660429831652624386837205668069376 이 정도야 별 게 아니죠. ABC 언어로 프로그래밍을 할 때의 특징 하나는, 앞의 명령을 칠 때, 그냥 w만 누르면, W?RITE라고 명령 전체가 나옵니다. 여기서 [Tab]키를 누르면 그대로 WRITE가 써집니다. ABC에서 한 문장의 시작은 언제나 명령어이므로, 소문자든 대문자든 w를 누르기만 하면 W?RITE가 나옵니다. 배우기 쉬운 언어라는 게 전혀 빈말이 아닙니다! 그건 그렇고, 다음 결과를 보면 깜작 놀랄 겁니다. >>> PUT 1/(2**1000) IN x >>> WRITE 1 + 1/x 107150860718626732094842504906000181056140481170553360744375038837 035105112493612249319837881569585812759467291755314682518714528569 231404359845775746985748039345677748242309854210746050623711418779 541821530464749835819412673987675591655439460770629145711964776865 42167660429831652624386837205668069377 아무리 큰 수라도 그 역수를 구해서 계산하는 게 간단하게 처리됩니다. 이 예들을 보면 ABC가 얼마나 쉬운 언어인지 알 수 있습니다. PUT 1/(2**1000) IN x 라는 문장은, 그 뜻 그대로, 1/(2**1000)을 x라는 변수에 대입하라는 뜻이고, WRITE 1 + 1/x 는 계산 결과를 출력하라는 뜻 그대롭니다. (물론 영어를 모른다면 말짱 소용없지만... ^^) 이밖에 ABC에서 다루는 자료형은 문자열, 다중 집합, 순서쌍, 일반화된 배열의 네 가지가 더 있습니다. 문자열(TEXT)은 다음 예를 참고하세요. TEXTS >>> PUT ("ha " ^^ 3) ^ ("ho " ^^ 3) IN laugh >>> WRITE laugh ha ha ha ho ho ho >>> WRITE #laugh 18 >>> PUT "Hello! "^^1000 IN greeting >>> WRITE #greeting 7000 다중 집합(LIST)은 정렬이 된 집합을 말합니다. (정렬은 컴퓨터가 알아서 해 줍니다.) 단, 보통 집합과 다른 것은, 같은 것이라도 두 번 입력된 것은 달리 간주합니다. 이런 집합을 다중 집합(multi set)이라고 합니다. 역시 다음 예를 참고하세요. LISTS >>> WRITE {1..10} {1; 2; 3; 4; 5; 6; 7; 8; 9; 10} >>> PUT {1..10} IN l >>> REMOVE 5 FROM l >>> INSERT 4 IN l >>> INSERT pi IN l >>> WRITE l {1; 2; 3; 3.141592653589793; 4; 4; 6; 7; 8; 9; 10} >>> PUT {} IN ll >>> FOR i IN {1..3}: INSERT {1..i} IN ll >>> WRITE ll {{1}; {1; 2}; {1; 2; 3}} >>> FOR l IN ll: WRITE l / {1} {1; 2} {1; 2; 3} >>> WRITE #ll 3 순서쌍(COMPOUND)는 여러 요소를 괄호로 묶어 놓은 것으로, 예는 아래를 참고하세요. COMPOUNDS >>> PUT ("Square root of 2", root 2) IN c >>> WRITE c ("Square root of 2", 1.414213562373095) >>> PUT c IN name, value >>> WRITE name Square root of 2 >>> WRITE value 1.414213562373095 일반화된 배열(TABLE)은 다른 컴퓨터 언어의 배열과 같은 것으로, 특이한 것은 인덱스로 무엇이든 쓸 수 있다는 것과, 배열의 모든 요소가 다 같은 자료형일 필요는 없다는 겁니다. 다음의 전화 번호 프로그램을 보면 금방 이해가 될 겁니다. A TELEPHONE LIST This uses the table data-type. In use, tables resemble arrays: >>> PUT {} IN tel >>> PUT 4054 IN tel["Jennifer"] >>> PUT 4098 IN tel["Timo"] >>> PUT 4134 IN tel["Guido"] >>> WRITE tel["Jennifer"] 4054 You can write all ABC values out. Tables are kept sorted on the keys: >>> WRITE tel {["Guido"]: 4134; ["Jennifer"]: 4054; ["Timo"]: 4098} The keys function returns a list: >>> WRITE keys tel {"Guido"; "Jennifer"; "Timo"} >>> FOR name IN keys tel: WRITE name, ":", tel[name] / Guido: 4134 Jennifer: 4054 Timo: 4098 ABC는 사용자가 마음대로 새로운 명령어를 만들 수 있습니다. 다음은 DISPLAY라는, 일반화된 배열을 보기 좋게 출력하는 명령을 만드는 과정입니다. HOW TO DISPLAY t: FOR name IN keys t: WRITE name<<10, t[name] / >>> DISPLAY tel Guido 4134 Jennifer 4054 Timo 4098 ABC는 몇 가지 특이한 명령들을 갖고 있습니다. To find the user of a given number, you can use a quantifier: >>> IF SOME name IN keys tel HAS tel[name] = 4054: WRITE name Jennifer 무얼 하는 건지 아시겠습니까? 앞서 든 예에서, 전화 번호가 4054인 사람을 찾는 겁니다. 단 한 줄이면 됩니다! ABC 언어, 한번 써 보시지 않겠습니까? 출력이 끝났습니다. [Enter]를 누르십시오.