Κατηγορίες δεδομένων Σταθερές. Αυτά που έχουν σταθερή τιμή κατά τη διάρκεια εκτέλεσης του προγράμματος. Οι σταθερές χωρίζονται σε δύο κατηγορίες : α) στις σταθερές χωρίς όνομα π.χ. στην έκφραση 3.14*R**2 το 3.14 αποτελεί μια σταθερά χωρίς όνομα, και β) στις σταθερές με όνομα που τις δηλώνουμε στην αρχή του προγράμματος π.χ. PI*R**2 όπου στην αρχή του προγράμματος δηλώσαμε τη σταθερά PI=3.14.
Μεταβλητές. Αυτά που η τιμή τους μεταβάλλεται κατά τη διάρκεια εκτέλεσης του προγράμματος. Πιο συγκεκριμένα, με τον όρο μεταβλητή εννοούμε μια (ή παραπάνω) θέση η οποία δημιουργείται στη μνήμη του H/Y, για να δεχτεί ένα συγκεκριμένο τύπο δεδομένων, και η οποία έχει ένα χαρακτηριστικό όνομα που πληροί τους κανόνες που θέσαμε παραπάνω.
Τύποι δεδομένων Όνομα Σύνολο τιμών INTEGER [-2 31, ] INTEGER(1) [-2 7, ] INTEGER(2) [-2 15, ] INTEGER(4) [-2 31, ] REAL [-10 38, ], [10 -38, ] REAL(4) [-10 38, ], [10 -38, ] DOUBLE PRECISION [ , ], [ , ] REAL(8) [ , ], [ , ]
COMPLEX (REAL,REAL) COMPLEX(4) (REAL(4),REAL(4)) DOUBLE COMPLEX (DP,DP) COMPLEX(8) (REAL(8),REAL(8)) CHARACTER Ένας χαρακτήρας CHARACTER*N Αλυσίδα Ν χαρακτήρων LOGICAL.FALSE.(0) ή.TRUE.(1)
Εκφράσεις στη Fortran ΤύποςΤελεστής Σειρά προτεραιότητας για τελεστές με την ίδια προτεραιότητα Αριθμητικός** Δ προς Α * / Α προς Δ + - Α προς Δ Σύγκρισης < <= Α προς Δ > >= Α προς Δ == /= Α προς Δ Λογικοί.NOT. Δ προς Α.AND..OR. Α προς Δ.EQV..NEQV. Α προς Δ.AND. Δεξιά προς αριστερά Αριστερά προς τα δεξιά
Όσον αφορά τις πράξεις μεταξύ ακεραίων και πραγματικών αριθμών ισχύουν τα εξής: ΠράξηΜετατροπήΑποτέλεσμα {Α}{Α} {Α} {A}{Π} {Π} {Π} {Π} Παράδειγμα Τι αποτέλεσμα θα δώσουν οι παρακάτω πράξεις: 1/2 1.0/2 2+3**2 (2+3)** /2 (1+1)/2.0
Αριθμητικές συναρτήσεις στη Fortran ΌνομαΠεριγραφή ABS(X)Απόλυτη τιμή του Χ SQRT(X)Τετραγωνική ρίζα του Χ SIN(X)Ημίτονο του Χ σε ακτίνια ΑSIN(X)Τόξο ημίτονου του Χ COS(X)Συνημίτονο του Χ σε ακτίνια ΑCOS(X)Τόξο συνημίτονου του Χ TAN(X)Εφαπτομένη του Χ σε ακτίνια ΑTAN(X)Τόξο εφαπτομένης του Χ EXP(X)e x
LOG(X) Φυσικός λογάριθμος του Χ LOG10(X) Δεκαδικός λογάριθμος του Χ MAX(X1,X2,X3) Ο μέγιστος των Χ1,Χ2,X3 MIN(X1,X2,X3) Ο ελάχιστος των Χ1,Χ2,X3 INT(X) Μετατροπή σε ακέραιο με αποκοπή REAL(X) Μετατροπή σε πραγματικό NINT(X) Μετατροπή στον πλησιέστερο ακέραιο FLOOR(X) Μεγαλύτερος ακέραιος <=X FRACTION(X) Κλασματικό μέρος του Χ MOD(X,Y) ή X-INT(X/Y)*Y Ακέραιο υπόλοιπο της διαίρεσης Χ/Υ
Αλφαριθμητικές συναρτήσεις στη Fortran Όνομα Περιγραφή LEN(X) Μήκος της αλυσίδας χαρακτήρων Χ LEN_TRIM(X) Μήκος μέχρι τον τελευταίο μη κενό χαρακτήρα του Χ TRIM(X) Αφαιρεί τα τελευταία κενά REPEAT(X,N) Δημιουργεί N αντίγραφα του Χ
Ασκήσεις (X-SIN(X)**2)/(TAN(X-1)**2+1)
ABS((1+SQRT(X-2)/(X**2-1))
EXP(LOG(X)-Y/X**3
Δομή προγράμματος στη Fortran Ένα πρόγραμμα γραμμένο σε Fortran αποτελείται από: Την επικεφαλίδα του προγράμματος. Το τμήμα των δηλώσεων. Το τμήμα των προτάσεων (εντολών). Το τμήμα των υποπρογραμμάτων.
Επικεφαλίδα Program όνομα προγράμματος END όνομα προγράμματος
Τμήμα δηλώσεων Περιοχή σταθερών PARAMETER (vname=const, vname=const,…) ή Τύπος δεδομ., PARAMETER:: vname=const,… Παράδειγμα PARAMETER (PI= ,G=9.81) REAL, PARAMETER :: PI=3.14, G=9.81
Περιοχή μεταβλητών Στην περίπτωση που δεν ορίσουμε τον τύπο των δεδομένων που θα δέχονται οι μεταβλητές μας, τότε αυτές θα ορίζονται αυτόματα (implicitly) σύμφωνα με το όνομα τους, δηλαδή οι μεταβλητές που το όνομά τους αρχίζει από Ι έως Ν θα είναι ακέραιες, ενώ οι υπόλοιπες μεταβλητές θα είναι πραγματικές. Προκειμένου να αποφύγουμε αυτόν τον τρόπο ορισμού, θα ξεκινούμε πάντα με την εντολή : IMPLICIT NONE που δηλώνει ότι καμιά μεταβλητή δεν θα οριστεί αυτόματα.
Θα πρέπει να ορίσουμε τον τύπο των δεδομένων που θα δέχονται οι μεταβλητές μας, ώστε να δίνεται η δυνατότητα στον Η/Υ να δημιουργήσει τις κατάλληλες θέσεις μνήμης που θα δεχτούν τα δεδομένα μας. Η δήλωση των μεταβλητών μας γίνεται ως εξής : Τύπος δεδομένων (type) :: vnames ή Τύπος δεδομένων (type) vnames
Παραδείγματα INTEGER (1) :: LENGTH, HEIGHT INTEGER A, BCA REAL (8) INTEREST REAL TEMP, AVER, F2 COMPLEX (4) IA CHARACTER (10) NAME, SURNAME CHARACTER A LOGICAL SELECTION
Περιοχή τύπων Η Fortran 90 μας δίνει την δυνατότητα να δημιουργήσουμε τους δικούς μας σύνθετους τύπους δεδομένων, εκτός των γνωστών REAL, INTEGER κ.λ.π., με την εντολή TYPE της οποίας τη σύνταξη βλέπουμε παρακάτω : TYPE (Όνομα νέου τύπου δεδομένων) Τύπος δεδομένων :: Όνομα πεδίου1 Τύπος δεδομένων :: Όνομα πεδίου2 ………………… END TYPE (Όνομα νέου τύπου δεδομένων)
Παράδειγμα Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε έναν καινούριο τύπο δεδομένων που θα δέχεται τα στοιχεία ενός φοιτητή, όπως για παράδειγμα : το επίθετο, το όνομα, το όνομα πατρός, τον αριθμό ειδικού μητρώου και το βαθμό που πήρε στη FORTRAN. Με όσα είπαμε ως τώρα, θα έπρεπε να χρησιμοποιήσουμε πέντε μεταβλητές : CHARACTER(LEN=20)SURNAME CHARACTER (LEN=10) NAME CHARACTER(LEN=10)FATHER_NAME INTEGER (2) AEM INTEGER (1) GRADE
Η Fortran όμως μας δίνει τη δυνατότητα να δημιουργήσουμε έναν καινούριο τύπο δεδομένων με το όνομα students: TYPE STUDENTS CHARACTER(20)SURNAME CHARACTER(10) NAME CHARACTER(10)FATHER_NAME INTEGER(2) AEM INTEGER(1) GRADE END TYPE STUDENTS Στη συνέχεια ορίζουμε τις μεταβλητές μας που θα δέχονται δεδομένα του συγκεκριμένου τύπου δεδομένων :
TYPE (STUDENTS) :: STUDENT δηλαδή γενικά TYPE (Νέος τύπος δεδομένων) :: Λίστα μεταβλητών Η απόδοση τιμών στη μεταβλητή STUDENT γίνεται ως εξής: STUDENT=STUDENTS(‘Αναστασιάδης’, ‘Λάζαρος’,’Γεώργιος’,1234,9) ή STUDENT.SURNAME=’Αναστασιάδης’ STUDENT.NAME=’Λάζαρος’ STUDENT.FATHER_NAME=‘Γεώργιος’ STUDENT.AEM=1234 STUDENT.GRADE=9
Το τμήμα των προτάσεων Στο τμήμα αυτό περιέχονται οι εκτελέσιμες προτάσεις του προγράμματος. Αν θέλουμε να συνεχίσουμε στην επόμενη γραμμή, θα πρέπει στο τέλος της γραμμής μας να τοποθετήσουμε το σύμβολο &, το οποίο θα μας οδηγήσει στην επόμενη εκτελέσιμη γραμμή (παραλείπονται οι γραμμές σχολίων). Π.χ.Ζ=Χ & & +Υ Μπορούμε να έχουμε παραπάνω από μια εντολές στην ίδια γραμμή αρκεί να τις διαχωρίζουμε με ερωτηματικό (;). Π.χ. READ*,A,B; Z=A+B
Το τμήμα διαδικασιών και συναρτήσεων Στο τμήμα αυτό τοποθετούνται οι διαδικασίες και συναρτήσεις οι οποίες καλούνται από το κυρίως πρόγραμμα για τη διεκπεραίωση συγκεκριμένων διαδικασιών. Παράδειγμα CONTAINS SUBROUTINE EMBADON(A,B,C) …….. END SUBROUTINE EMBADON
Δομή προγράμματος στη Fortran [PROGRAM Όνομα Προγράμματος] USE όνομα module IMPLICIT NONE INTERFACE “όνομα” …….. END INTERFACE Δήλωση Τύπων Δήλωση Σταθερών Δήλωση Μεταβλητών Εκτελέσιμες Προτάσεις CONTAINS Διαδικασίες – Συναρτήσεις END [PROGRAM [Όνομα Προγράμματος]]