(→코드 예제) |
(→코드 예제) |
||
6번째 줄: | 6번째 줄: | ||
IBM 704는 자기 드럼, 자기 테이프, 천공 카드로부터 자료를 읽거나 저장할 수 있었고, 프린터와 CRT에 정보를 보여줄 수 있었다. 하지만 보통은 천공 카드를 주로 썼고, 실제로 입력 가능한 도구는 천공 카드밖에 없었다. 때문에 천공카드 기반의 언어가 될 수밖에 없었다. | IBM 704는 자기 드럼, 자기 테이프, 천공 카드로부터 자료를 읽거나 저장할 수 있었고, 프린터와 CRT에 정보를 보여줄 수 있었다. 하지만 보통은 천공 카드를 주로 썼고, 실제로 입력 가능한 도구는 천공 카드밖에 없었다. 때문에 천공카드 기반의 언어가 될 수밖에 없었다. | ||
==== 코드 예제 ==== | ==== 코드 예제 ==== | ||
IBM 704에서는 [[ | IBM 704에서는 80열 [[천공 카드]]를 사용한다. 즉, 포트란 코딩 시트(FORTRAN STATEMENT)에 다음과 같이 '''구멍을 내면'''<ref>[[키펀치|천공기]]라고, 이미 그 당시 펀치 카드 작성기가 있었기 때문에 손으로 뚫을 필요는 없다.</ref> 각 줄은 하나의 천공카드를 의미한다. 천공카드에 적힌 수 중에서 가장 큰 수를 찾아서 출력하여 준다. | ||
천공카드에 적힐 수는 A(***)이며, 각 카드마다 12개씩, 6개의 열에 숫자를 적을 수 있다. 999개 이상으로 구성된 집합에서는 찾을 수 없다. 이 코드의 경우 천공 카드가 결과지로 역할한다. | 천공카드에 적힐 수는 A(***)이며, 각 카드마다 12개씩, 6개의 열에 숫자를 적을 수 있다. 999개 이상으로 구성된 집합에서는 찾을 수 없다. 이 코드의 경우 천공 카드가 결과지로 역할한다. | ||
천공 카드는 총 80열로 이루어져 있다. | 천공 카드는 총 80열로 이루어져 있다. |
2016년 6월 4일 (토) 03:59 판
개요
포트란은 1954년 중반 IBM 704에서 과학적인 계산을 하기 위해 만들어지게 된 컴퓨터 프로그래밍 언어이다. 전문적인 계산문제에 한해서는 C언어보다 훨씬 직관적이며, 대부분의 경우 계산속도 또한 빠르다.
역사
FORTRAN
IBM 704는 자기 드럼, 자기 테이프, 천공 카드로부터 자료를 읽거나 저장할 수 있었고, 프린터와 CRT에 정보를 보여줄 수 있었다. 하지만 보통은 천공 카드를 주로 썼고, 실제로 입력 가능한 도구는 천공 카드밖에 없었다. 때문에 천공카드 기반의 언어가 될 수밖에 없었다.
코드 예제
IBM 704에서는 80열 천공 카드를 사용한다. 즉, 포트란 코딩 시트(FORTRAN STATEMENT)에 다음과 같이 구멍을 내면[1] 각 줄은 하나의 천공카드를 의미한다. 천공카드에 적힌 수 중에서 가장 큰 수를 찾아서 출력하여 준다. 천공카드에 적힐 수는 A(***)이며, 각 카드마다 12개씩, 6개의 열에 숫자를 적을 수 있다. 999개 이상으로 구성된 집합에서는 찾을 수 없다. 이 코드의 경우 천공 카드가 결과지로 역할한다. 천공 카드는 총 80열로 이루어져 있다.
1열부터 5열까지의 숫자는 Statement number이다. 만약 C 부분에 구멍이 뚫려 있다면 Comment card를 의미한다. 요즘 말로 하면 주석이 되겠다. 컴파일러에서 이게 뚫린 카드는 읽지 않는다. 다른 경우 이는 줄 번호를 이야기하거나 아예 쓰여있지 않다. 6열의 숫자는 Continuation. 1부터 9까지, 카드의 번호를 의미한다. 7열부터 72열까지 컴파일러에서 읽는다. 73열부터 80열까지는 컴파일러에서 읽지 않으며, 카드를 먹거나 순서가 바뀌는 경우를 방지하기 위하여 사용한다. 각 줄 앞에 있는 숫자는 두 가지 의미이다. 이 코드가 필요한 사람은 이미 천공카드 사용법을 알고 있을 것이기 때문에 그 사용법은 더 적지 않는다. [2]
C PROGRAM FOR FINDING THE LARGEST VALUE C ATTAINED BY A SET OF NUMBERS DIMENSION A(999) FREQUENCY 30(2,1,10), 5(100) READ 1, N, (A(I), I*1, N) 1 FORMAT (I3/(12F6.2) BIGA = A(1) 5 DO 20 I = 2,N 30 IF (BIGA-A(I)) 10,20,20 10 BIGA = A(I) 20 CONTINUE PRINT 2,N,BIGA 2 FORMAT (22H1 THE LARGEST OF THERE I3, 12H NUMBERS IS F7.2) STOP 77777
FORTRAN II
포트란 2는 58년에 나왔다. 지난 버전보다 절차적 프로그래밍을 중시하기 위해 사용자-입력 서브루틴과 함수와 변수를 구현하였다.
코드 예제
다음은 위키백과에 수록된 포트란 II 예제이다. 데이터 카드(천공 카드나 천공 테이프)에서 삼각형의 세 변의 길이를 읽은 후, 헤론의 공식으로 넓이를 구하여 출력하는 예.
C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION C INPUT - CARD READER UNIT 5, INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING READ INPUT TAPE 5, 501, IA, IB, IC 501 FORMAT (3I5) C IA, IB, AND IC MAY NOT BE NEGATIVE C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE C IS GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO IF (IA) 777, 777, 701 701 IF (IB) 777, 777, 702 702 IF (IC) 777, 777, 703 703 IF (IA+IB-IC) 777,777,704 704 IF (IA+IC-IB) 777,777,705 705 IF (IB+IC-IA) 777,777,799 777 STOP 1 C USING HERON'S FORMULA WE CALCULATE THE C AREA OF THE TRIANGLE 799 S = FLOATF (IA + IB + IC) / 2.0 AREA = SQRT( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) * + (S - FLOATF(IC))) WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA 601 FORMAT (4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2, + 13H SQUARE UNITS) STOP END
FORTRAN III
FORTRAN IV
코드 예제
FORTRAN 66
코드 예제
FORTRAN 77
가장 범용적인 포트란 메이저 리비전. 이 언어는 70년대부터 90년대 중반까지 코볼과 같이 세상을 나눠먹었다. 현재의 C언어가 갖는 위상보다 더 높을 정도. 참고로, 오 나의 여신님의 등장인물인 모리사토 케이이치가 다루는 언어는 설정상 바로 이것이다. 작품이 90년대 나온 것을 생각하면 당연한 일이지만, 지금 생각하면...
코드 예제
Fortran 90
쓰기 쉬워진 포트란 메이저 리비전. 이름이 바뀐 이유는 이 버전부터 소문자와 대문자의 구분을 지원하기 때문이다.
코드 예제
아래의 예제는 편집자가 직접 추가한 예제이다. 이를 *.f90 파일로 저장한 뒤 gfortran 등의 컴파일러로 변환하면 된다. 당장 포트란 II에서의 예제와 비교해 보자. 이 예제는 헤론의 공식이 아니라 사인-코사인을 사용하여 넓이를 구하고 있다.
PROGRAM Triangle IMPLICIT NONE REAL :: a, b, c, area PRINT *, 'AREA OF A TRIANGLE WITH & &Using the length of 3 sides ' PRINT *, 'PLEASE ENTER THE LENGTHS& & OF THE 3 SIDES.' READ *, a, b, c PRINT *, 'Triangle's area: ', Area(a,b,c) END PROGRAM Triangle FUNCTION Area(x,y,z) IMPLICIT NONE REAL :: area ! function type REAL, INTENT( IN ) :: x, y, z REAL :: theta, height theta = ACOS((x**2+y**2-z**2)/(2.0*x*y)) height = x*SIN(theta); Area = 0.5*y*height END FUNCTION Area
Fortran 95
정립된 쉬운 포트란 마이너 리비전.
Fortran 2003
Fortran 2008
Fortran 2015
각주
- ↑ 천공기라고, 이미 그 당시 펀치 카드 작성기가 있었기 때문에 손으로 뚫을 필요는 없다.
- ↑ http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf 를 참조하시오
프로그래밍 관련 정보 |
|||||||||
---|---|---|---|---|---|---|---|---|---|
문자 인코딩 | |||||||||
문자 집합 |
|
||||||||
프로그래밍 언어 | |||||||||
마크업 언어 | |||||||||
표준과 API와 규격 | |||||||||
라이브러리 | |||||||||
프레임워크 | |||||||||
개발 소프트웨어 | |||||||||
튜토리얼 |