Fortran

Η γλώσσα **FORTRAN** (από τα αρχικά **FOR**mulae **TRAN**slator - μεταφραστής τύπων) είναι μία από τις πρώτες γλώσσες προγραμματισμού υψηλού επιπέδου, η οποία χρησιμοποιήθηκε κυρίως σε επιστημονικές αλλά και σε εμπορικές εφαρμογές. Δημιουργήθηκαν οι εξής τυποποιημένες εκδόσεις της FORTRAN:

* FORTRAN-57
* FORTRAN-66
* FORTRAN-77
* FORTRAN-90
* FORTRAN-95
* FORTRAN 2000
* FORTRAN 2003
* FORTRAN 2008

Βάση για την περιγραφή της FORTRAN παρακάτω θα είναι η έκδοση FORTRAN-77.

## Αλφάβητο
Ένα πρόγραμμα γραμμένο σε έκδοση της FORTRAN μέχρι και την FORTRAN-77 μπορεί να χρησιμοποιήσει οποιουδήποτε από τους εξής χαρακτήρες:
* Τα 26 κεφαλαία γράμματα του αγγλικού αλφαβήτου: A, B, ..., Z
* Τους 10 αραβικούς αριθμούς: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
* Τους 12 ειδικούς χαρακτήρες: + - * / = ( ) ' . , $ :
* Το κενό διάστημα.

Από την έκδοση FORTRAN-90 και μετά, προστέθηκαν επιπλέον ειδικοί χαρακτήρες:
* ! " & ;  ?
* Τα 26 μικρά γράμματα του αγγλικού αλφαβήτου: a, b, ..., z

Επιπλέον, από την έκδοση FORTRAN 2003 συμπεριλαμβάνονται οι ακόλουθοι χαρακτήρες:
* ~ \ [ ] ` ^ { } | # @

## Τύποι εντολών
Οι εντολές της FORTRAN-77 είναι δηλωτικές ή εκτελέσιμες:

### Δηλωτικές εντολές
* PROGRAM, FUNCTION, SUBROUTINE, BLOCKDATA
* IMPLICIT
* PARAMETER
* INTEGER, REAL, DOUBLEPRECISION, COMPLEX, LOGICAL, CHARACTER
* DIMENSION
* COMMON, EQUIVALENCE
* EXTERNAL, INTRINSIC, ENTRY
* Ορισμός συνάρτησης – πρότασης
* SAVE
* DATA
* FORMAT

#### Δηλωτική εντολή τέλους κειμένου προγράμματος
* END

### Εκτελέσιμες εντολές
* OPEN, CLOSE, INQUIRE, READ, WRITE, PRINT, PUNCH
* REWIND, BACKSPACE, ENDFILE
* (ανάθεση τιμής) =
* ASSIGN .. TO
* ανάθεση GOTO, χωρίς συνθήκη GOTO, υπολογιζόμενο GOTO
* αριθμητικό IF, λογικό IF, IF .. THEN .. ELSEIF .. ELSE .. ENDIF
* DO .. CONTINUE
* CALL, RETURN
* PAUSE, STOP

Σε επόμενη έκδοση της γλώσσας προστέθηκαν οι END DO και WHILE.

## Κατηγορίες εντολών
Οι εντολές της FORTRAN-77 κατατάσσονται σε 4 κατηγορίες:
* Εντολές εκχώρησης ή αντικατάστασης (assignment statements)
* Εντολές εισόδου/εξόδου (input/output statements)
* Εντολές ελέγχου και λογικής (control statements)
* Πληροφοριακές εντολές και εντολές οργάνωσης (specification statements)

## Δομή προγραμμάτων
### Κατά στήλες
Ένα αρχείο που περιέχει ένα πρόγραμμα FORTRAN χωρίζεται νοητά σε **τρεις ομάδες στηλών**:
* Η πρώτη ομάδα, που περιέχει τις στήλες 1-6, χρησιμοποιείται για την εισαγωγή των **συμβόλων σχολίων** (* και c), των **αριθμών εντολών** και **χαρακτήρων συνέχισης γραμμής**. Ειδικότερα:
# Τα σύμβολα * ή c είναι προαιρετικά και εισάγονται στην πρώτη στήλη. Ο μεταγλωττιστής αναγνωρίζει έτσι την αντίστοιχη γραμμή ως σχόλιο, και την προσπερνάει. Τα σχόλια δεν έχουν επίδραση στον εκτελέσιμο κώδικα, αλλά βοηθάνε τον προγραμματιστή στην κατανόηση και αποσφαλμάτωση του προγράμματος.
# Οι αριθμοί εντολών είναι προαιρετικοί 5-ψήφιοι αριθμοί, που εισάγονται στις στήλες 1 ως 5. Είναι χρήσιμοι για εντολές ανακατεύθυνσης της ροής του προγράμματος, αν και σπάνια πια χρησιμοποιούνται μετά την εισαγωγή της έννοιας του δομημένου προγραμματισμού.
# Ένας οποιοσδήποτε χαρακτήρας, εκτός του κενού διαστήματος και του μηδέν, υποδεικνύει στον μεταγλωττιστή ότι η αντίστοιχη γραμμή είναι συνέχεια της προηγούμενης. Καθίσταται έτσι δυνατή η συνέχιση μιας πολύ μεγάλης εντολής σε περισσότερες της μίας γραμμής. Ο μέγιστος αριθμός γραμμών για μια εντολή είναι 40.
* Στην δεύτερη, κύρια ομάδα στηλών 7-72, εισάγονται οι **εντολές της FORTRAN**.
* Τέλος η τρίτη ομάδα, στήλες 73-80, περιέχει **κείμενο που αγνοείται από τον μεταγλωττιστή**, εκτός αν πρόκειται για **δεδομένα** του προγράμματος.

**Σημείωση**: Στην FORTRAN-90, δεν υπάρχουν οι περιορισμοί των ομάδων στηλών 7-72 και 73-80. Κάθε γραμμή έχει 132 χαρακτήρες. Η συνέχιση γραμμής γίνεται με τον χαρακτήρα &. Επίσης τα σχόλια γίνονται με την τοποθέτηση του συμβόλου ! σε οποιαδήποτε στήλη, ακολουθούμενο από το σχόλιο.

### Κατά γραμμές
Ένα πρόγραμμα FORTRAN μπορεί επίσης να χωριστεί κατά 4 τμήματα ως εξής:

#### Επικεφαλίδα (heading)
Η **επικεφαλίδα** σε ένα πρόγραμμα είναι προαιρετική και εισάγεται στην πρώτη γραμμή. Προσδιορίζει την αρχή του προγράμματος και το όνομά του. Έχει την εξής συγκεκριμένη μορφή:


```
PROGRAM [όνομα προγράμματος]
```


Οι αγκύλες δεν εισάγονται. Προσδιορίζουν μια παράμετρο, όπως και στις υπόλοιπες εντολές παρακάτω.

#### Τεκμηρίωση (documentation)
Ακολουθεί η **τεκμηρίωση**. Είναι επίσης προαιρετικό τμήμα, το οποίο περιέχει σχόλια σχετικά με το πρόγραμμα, όπως:
* Σκοπό του προγράμματος,
* Σημασία των διαφόρων μεταβλητών,
* Πληροφορίες για την είσοδο/έξοδο του προγράμματος,
* Περιγραφή τυχόν τυποποιημένων αλγορίθμων,
* Όνομα/ονόματα προγραμματιστή/προγραμματιστών,
* Ημερομηνία σύνταξης, τροποποίησης, κ.τ.λ.
Σχόλια τεκμηρίωσης μπορεί να βρίσκονται και ανάμεσα από τις εκτελέσιμες εντολές.

#### Τμήμα προδιαγραφών/Τμήμα δηλώσεων (specification part)
Στο **τμήμα προδιαγραφών/δηλώσεων** δηλώνονται τα ονόματα και οι τύποι των μεταβλητών ή των σταθερών που θα χρησιμοποιηθούν, οι πίνακες, κτλ. Οι δηλωτικές εντολές γράφονται όλες πριν από τις εκτελέσιμες εντολές. (Εξαίρεση είναι η εντολή ENTRY.)

#### Εκτελέσιμο τμήμα (execution part)
Τέλος, το σημαντικότερο τμήμα είναι το **εκτελέσιμο**. Περιέχει τις εκτελέσιμες εντολές, με τις οποίες τα δεδομένα της εισόδου μετατρέπονται σε αποτελέσματα.

#### Τέλος του προγράμματος
Το τέλος του προγράμματος δηλώνεται με την εντολή END.

## Βιβλιογραφία
* ''"Εισαγωγή στους Υπολογιστές ΙΙ, Πανεπιστημιακές Παραδόσεις", 5η έκδοση, Μιχαήλ Κουκιάς & Ευάγγελος Δερματάς, Πάτρα 2005
* "ANSI FORTRAN", Ε.Σκορδαλάκης, Αθήναι 1972.

## Εξωτερικοί σύνδεσμοι

* 

FORTRAN
Κατηγορία:Αντικειμενοστρεφείς γλώσσες προγραμματισμού
Κατηγορία:Πρότυπα υπολογιστών
Κατηγορία:Εργαλεία προγραμματισμού Unix