You are on page 1of 2

FORTRAN 77

COLUMNES:
C: comentaris
1-5 : posar etiquetes (números) per tornar a aquestes línies
6 : un caràcter $ en aquesta columna indica continuació de l’anterior línia
7-72 : codi fortran
MODULS:
PROGRAM nom-del-programa
IMPLICIT NONE
[codi programa principal, subrutines, funcions..]
END
________________________________________________
Type FUNCTION func-name (a1, a2, ... , an) (TYPE= integer, real, etc..)
IMPLICIT NONE
type a1, a2, ... , an (TYPE= integer, real, etc..)
[Dona UN valor amb el nom de la funció, que s’ha d’haver
assignat abans d’arribar al final com a
fun-name=something
S’han de declarar els tipus de variable d’entrada . Si no hi ha arguments s’ha de posar parèntesis. ]
END
Fun-name(a1, a2, ... , an)
________________________________________________
SUBROUTINE sub-name (a1, a2, ... , an)
IMPLICIT NONE
type a1, a2, ... , an (TYPE= integer, real, etc..)
[Dona UN O MÉS valors amb els noms de la llista d’input.
S’han de declarar els tipus de variable. Si no hi ha arguments es pot ometre el parèntesis]
END
CALL sub-name(a1, a2, ... , an)
COMMON BLOCK: COMPARTIR VARIABLES MAIN-PROGRAM I SUBROUTINE/FUNCTION
TYPE VAR1, VAR2, VAR3
COMMON VAR1 , VAR2 , VAR3 (si només es fa servir un common es pot fer sense nom)
[COMMON / BLOCK-NAME / VAR1, VAR2, VAR3]
Al utilitzar-lo en una subrutine/function també s’han de declarar les variables. Els noms no han de coincidir, només la posició
DATA TYPES:
-

INTEGER enter des de -215 fins 215-1 INTEGER*4 -231 fins 231-1
REAL precisió 10-7 entre 10-38 i 1038
DOUBLE PRECISION (REAL*8) precisió 10-15 entre 10-308 i 10308
(a més s’hauran d’escriure els numeros decimals com: 5.5d0, 7.d0-4 si són exponents)
COMPLEX (a , b) real i imaginari
CHARACTER*N n caràcters
LOGICAL true/false

VECTORS I MATRIUS (type= integer, real, etc..)
TYPE nom-vector(longitud-vector)
Crea un vector de longitud desitjada.
nom-vector(1)=primer element del vector
TYPE nom-vector(lower-bound : upper-bound)
Crea un vector de longitud= LowerBound + UpperBound
Els dos paràmetres han de ser enters (Integer)
nom-vector(lower-bound)= primer element del vector
TYPE nom-matriu(files , columnes)
Genera una matriu. Enlloc de posar el nº de files o columnes es pot utilitzar la notació de lower:upper bound. S’accedeix
igual que als vectors.

ELSE Statement-block_n END IF BUCLES. B dona FALSE només si els dos són FALSE DEFINIR PARAMETRES. format2 . * per format automatic. IOSTAT=) ESCRIPTURA READ( UNIT= .NE.AND. FMT= . step operations .100) ‘COSA1’ . Equal to (=) Not equal to(≠) Lower than (<) Lower/equal than (≤) Greater than (>) Greater/equal than (≥) OPERADORS LÒGICS Operen amb variables lògiques (TRUE o FALSE). FILE=’arxiu.dat’) obre l’arxiu o el crea si no existeix CLOSE(identificador-nº) . - . A nega el valor donat (. IF (logical-expression) THEN Statement-block1 ELSE IF (logical-expression) THEN Statement-block2 ELSE IF (logical-expression) THEN Statement-block3 . Van entre parèntesis.OPERADORS RELACIONALS Operar amb números. END= . ... ERR= . .NE. WRITE / READ WRITE( UNIT= .. IOSTAT=) UNIT: Numero enter amb el que s’hagi identificat l’arxiu. OPEN OPEN(identificador-nº.LE.. FMT= . . FMT: format específic. .. ERR= . tots el que es llegeix se separa per comes] WRITE(*. END DO BUCLES. 0. True o false de resultat.GE. ‘COSA2’.Y Y=1.. Excepte caràcters.0/X BLOCK IF – THEN> ELSEIF – THEN > ELSE – THEN > ENDIF Poden contenir més IF aniuats. * escriu a la cosola. END= .EQ. final-value .NOT.. [valors lògics llegits donen T / F .A = false si A=True) A . END DO ESCRIPTURA i LECTURA EN FITXER.*) X. .LT. 100 FORMAT (format1.0) ) ESTRUCTURES AMB IF LOGICAL IF IF (logical-expression) statement Per exemple: Y= 0. VAR1 .) OBERTURA D’ARXIUS. ESTRUCTURES AMB DO DO j = initial-value .OR.0) WRITE (*.not.GT. ESTRUCTURES AMB DO WHILE DO WHILE (logical-expression) (=TRUE) operations . B dona TRUE només si els dos són TRUE A .. .0 IF ( X . NÚMERO PI Els paràmetres són variables que no es poden modificar. REAL pi PARAMETER ( pi=acos(-1.