'Programming/fortran'에 해당되는 글 4건

  1. 2014.06.19 포트란 변수 타입
  2. 2014.06.19 포트란77 문법 테스트
  3. 2014.06.18 fortran 첫 실행 >_<
  4. 2014.06.08 fortran 문법
Programming/fortran2014. 6. 19. 22:34

FORTRAN 77 supports six data types:

LOGICAL            
boolean (true or false)
CHARACTER          character
INTEGER            integer
COMPLEX            single precision complex number 
REAL               single precision floating point number
DOUBLE PRECISION   double precision floating point number
 
[링크 : http://www.obliquity.com/computer/fortran/datatype.html


complex는 a+ib의 허수 표현으로 ()를 사용하지만 엄밀하게 배열은 아니라고 해야 하려나?
복소수 상수 complex constant이다. 이 때는 (real 또는 integer) 상수 한 쌍을 쉼표(comma)로 분리하고 괄호 (paranthese)로 둘러싸서 나타낸다.

      (2, -3)
      (1., 9.9E-1)
 
첫 번째 숫자는 실수부, 두번째 숫자는 허수부이다.
 
[링크 : http://seismic.yonsei.ac.kr/fortran/expressions.html] ]


문자열은 c가 그러하듯 character형 배열로 선언하면 된다.
Character Arrays

When a dummy argument is a character array the passed-length mechanism can be used in the same way as for a character variable. Every element of the dummy array has the length that was passed in from the actual argument.

For example, a subroutine designed to sort an array of character strings into ascending order might start with specification statements like these:

       SUBROUTINE SORT(NELS, NAMES) 
       INTEGER NELS 
       CHARACTER NAMES(NELS)*(*) 

Alternatively the actual argument can be a character variable or substring. In such cases it usually makes more sense not to use the passed-length mechanism. For example an actual argument declared:
CHARACTER*80 LINE
could be passed to a subroutine which declared it as an array of four 20-character elements:
       SUBROUTINE SPLIT(LINE) 
       CHARACTER LINE(4)*20 

Although this is valid Fortran, it is not a very satisfactory programming technique to use a procedure call to alter the shape of an item so radically.
 
[링크 : http://www.star.le.ac.uk/~cgp/prof77.html

'Programming > fortran' 카테고리의 다른 글

포트란77 문법 테스트  (0) 2014.06.19
fortran 첫 실행 >_<  (0) 2014.06.18
fortran 문법  (0) 2014.06.08
Posted by 구차니
Programming/fortran2014. 6. 19. 22:12
첫줄에 바로 program이라는 키워드를 입력하면 에러가 발생한다.
반드시 7칸 째에 입력해야 한다 -_-a 
또한, 탭으로도 7번 넣어줘도 안되고 반드시 스페이스로 해야한다. 
  1 program circle
  2       real r, area 

$ fort77 simple.f
Error on line 1: illegal continuation card (starts "progra")
   MAIN:
/usr/bin/fort77: aborting compilation 

4칸을 띄울 경우 컴파일 에러가 발생한다.
  7       write (*,*)
  8     + 'Give radius r:' 

$ fort77 simple.f
   MAIN circle:
Error on line 8: nondigit in statement label field "    +"
Error on line 8: unclassifiable statement (starts "")
/usr/bin/fort77: aborting compilation 

5칸 째에는 어떤 문자가 들어가던 상관없지만 문장이 이어짐을 나타내기 위해 +를 주로 쓰는게 좋다고 한다.
  7       write (*,*)
  8      s  'Give radius r:' 

  7       write (*,*)
  8      + 'Give radius r:' 

[링크 : http://seismic.yonsei.ac.kr/fortran/basics.html]


+ 아무래도.. 포트란이 구석기 시대(!) 프로그래밍 언어이다 보니
천공카드로 뚫어 쓰던 관습(?)으로 인해 칸으로 구분을 하는 듯?



[링크 : http://blog.daum.net/osh535/11247020 ]


몇가지 C언어와의 차이점이 C언어는 [행][열] 인데 반해 포트란은 [열][행] 이란 점? 
그런데 메모리 할당상으로도 차이가 있으려나? 

재밌게도 포트란77은 c와 다르다죠. 
dimension a(4,3)이라고 변수가 선언되었다면
a(1,1) a(2,1) a(3,1) a(4,1) a(1,2) a(2,2) ... 순서로 저장됩니다.
포트란9x에서는 row major인지 column major인지 지정할 수 있다는군요.
 
[링크 : https://kldp.org/node/75640

'Programming > fortran' 카테고리의 다른 글

포트란 변수 타입  (0) 2014.06.19
fortran 첫 실행 >_<  (0) 2014.06.18
fortran 문법  (0) 2014.06.08
Posted by 구차니
Programming/fortran2014. 6. 18. 22:41
조금은.. 귀찮아서 대충 날로먹는 글? ㅋㅋ

최소한이 키워드는 이렇게 하이라이팅 되니 천천히 공부를 해봐야겠다. 
일단 c로 시작하면 주석이고..
나머지는 탭이나 스페이스로 넣어 주는데 문법상으로 몇칸을 해야 한다는게 있어서 실험적으로 찾아봐야 익혀질 것 같다.


$ vi simple.f
      program circle
      real r, area

c This program reads a real number r and prints
c the area of a circle with radius r.

      write (*,*) 'Give radius r:'
      read  (*,*) r
      area = 3.14159*r*r
      write (*,*) 'Area = ', area

      stop
      end

$ fort77 simple.f
   MAIN circle:
$ ll
합계 20
drwxrwxr-x  2 minimonk minimonk 4096  6월 18 22:38 ./
drwxr-xr-x 55 minimonk minimonk 4096  6월 18 22:38 ../
-rwxrwxr-x  1 minimonk minimonk 7614  6월 18 22:38 a.out*
-rw-rw-r--  1 minimonk minimonk  267  6월 18 22:38 simple.f

$ ./a.out
 Give radius r:
10
 Area =   314.158997 

칸에 관한 규칙 (Column position rules)

Fortran 77은 정해진 형식이 없이 자유롭게 쓸 수 있는 언어가 아니라 원시 코드라고 하는 source code의 형식에 대한 매우 엄격한 규칙이 있다. 가장 중요한 규칙은 칸 (column)에 관한 규칙이다.
Col. 1    : 빈 칸 또는 설명임을 나타내는 "c" 나 "*"
Col. 2-5  : 문장 label (optional)
Col. 6    : 앞 줄의 연속 (optional)
Col. 7-72 : 문장
Col. 73-80: 일련 번호 (optional, 요즈음은 거의 사용하지 않음)
 
Fortran 77 프로그램의 대부분의 줄은 6 개의 빈칸으로 시작하여 72 번째 칸 이전에 끝나서 문장 영역(statement field)만 사용한다. 반면에 Fortran 90은 형식에 구애받지 않는 free-foramt이 가능하다.

[링크 : http://seismic.yonsei.ac.kr/fortran/basics.html



C언어가 포트란을 많이 계승했다고 하지만
C를 먼저 다룬 입장으로는 포트란이 참 C틱하구나 싶을 정도?
컴파일 이후에 a.out 나오는 걸 보면 참.. 미묘한 느낌이 든다. 

'Programming > fortran' 카테고리의 다른 글

포트란 변수 타입  (0) 2014.06.19
포트란77 문법 테스트  (0) 2014.06.19
fortran 문법  (0) 2014.06.08
Posted by 구차니
Programming/fortran2014. 6. 8. 12:18
한번쯤은 봐둬야지 싶었는데..
영손이 안가는 이녀석..

swift관련해서 obejctive-c 이야기에 포트란이 언급되길래 한번 찾아 봄

[링크 : http://seismic.yonsei.ac.kr/fortran/]
[링크 : http://yoonc.tistory.com/40

'Programming > fortran' 카테고리의 다른 글

포트란 변수 타입  (0) 2014.06.19
포트란77 문법 테스트  (0) 2014.06.19
fortran 첫 실행 >_<  (0) 2014.06.18
Posted by 구차니