Προγραμματισμός FORTRAN > Μαθήματα > Δηλωτικές Εντολές
Αρχική-HomeΠαραδείγματαΕντολές-ΣυναρτήσειςΟδηγίες-FAQsΣυνδέσεις-Links

ΜΑΘΗΜΑ: ΔΗΛΩΤΙΚΕΣ ΕΝΤΟΛΕΣ

¨Ενα πρόγραμμα Fortran αρχίζει με την εντολή PROGRAM και τελειώνει με την εντολή END ή τις STOP και END. Στο αρχικό τμήμα του προγράμματος που περιέχει τις δηλώσεις τοποθετούνται εντολές όπως οι: IMPLICIT, REAL, INTEGER, CHARACTER, κλπ.

Η γενική μορφή των εντολών αρχής και τέλους των προγραμμάτων είναι:

PROGRAM [όνομα_προγράμματος]
STOP ['μήνυμα τερματισμού' ή αριθμός τερματισμού]
END

Η πιο συνηθισμένες μορφές των δηλωτικών εντολών, που τοποθετούνται στο αρχικό τμήμα του προγράμματος, είναι:

IMPLICIT NONE
REAL:: [μεταβλητή [, μεταβλητή = αρχική τιμή]]
REAL, PARAMETER:: [μεταβλητή = τιμή]
INTEGER:: [μεταβλητή [, μεταβλητή = αρχική τιμή]]
INTEGER, PARAMETER:: [μεταβλητή = τιμή]
CHARACTER:: [μεταβλητή*μήκος [, μεταβλητή*μήκος = 'αρχική τιμή']]
CHARACTER (LEN=n) :: [μεταβλητή]
CHARACTER, PARAMETER:: [μεταβλητή = 'τιμή']

Εκτός από τον τύπο της, κάθε μεταβλητή της Fortran χαρακτηρίζεται από δύο ακόμη χαρακτηριστικά: RANK και KIND. Από τον συνδυασμό των τύπων, των χαρακτηριστικών και της διατύπωσης των δηλωτικών εντολών, προκύπτουν πολλοί διαφορετικοί τρόποι δηλώσεων, μερικοί από τους οποίους είναι ταυτόσημοι.


αρχή

RANK & KIND

Η RANK χαρακτηρίζει τις διαστάσεις μιας μεταβλητής (μητρώο) όταν αυτή δεν είναι βαθμωτή, όπως θα δούμε στο αντίστοιχο μάθημα για μητρώα και πίνακες.

Ο ρόλος της KIND είναι να χαρακτηρίζει το είδος της αναπαράστασης ενός μεγέθους, αριθμητικού ή μη του οποίου η τύπος είναι ορισμένος. Για τα αριθμητικά μεγέθη η KIND δηλώνει την ακρίβεια (πλήθος των bytes) με την οποία αποθηκεύονται στη μνήμη και ταυτόχρονα ορίζει και το εύρος των τιμών που μπορεί να πάρει η μεταβλητή. Μια μεταβλητή INTEGER (KIND=4) χρησιμοποιεί 4 bytes και μπορεί να πάρει ακέραιες τιμές από -2147483648 έως 2147483647 (~2x109), ενώ μια μεταβλητή REAL (KIND=8) χρησιμοποιεί 8 bytes και μπορεί να πάρει πραγματικές τιμές στη περιοχή ±10100 και μικρές έως ±10-100. Για τους χαρακτήρες η KIND έχει διαφορετικό ρόλο καθώς η τιμή της δηλώνει το αλφάβητο ή το σετ των χαρακτήρων που θα χρησιμοποιηθεί.

Κάθε τύπος μεταβλητής έχει ένα ή περισσότερα είδη KIND π.χ.:

INTEGER ([KIND=] 1) ή INTEGER*1 ή BYTE
INTEGER ([KIND=] 2) ή INTEGER*2
INTEGER ([KIND=] 4) ή INTEGER*4
REAL ([KIND=] 4) ή REAL*4
REAL ([KIND=] 8) ή REAL*8 ή DOUBLE PRECISION
COMPLEX ([KIND=] 4) ή COMPLEX*8
COMPLEX ([KIND=] 8) ή COMPLEX*16 ή DOUBLE COMPLEX
LOGICAL ([KIND=] 1) ή LOGICAL*1
LOGICAL ([KIND=] 2) ή LOGICAL*2
LOGICAL ([KIND=] 4) ή LOGICAL*4
CHARACTER ([KIND=] 1) ή CHARACTER


αρχή

ΔΙΑΦΟΡΟΙ ΤΡΟΠΟΙ ΔΗΛΩΣΕΩΝ

INTEGER

Ο ακέραιος τύπος χρησιμοποιείται κυρίως για τους μετρητές και τους δείκτες στις επαναλήψεις (DO) και τα μητρώα (arrays). Χρησιμοποιείται επίσης και για τη περιγραφή ορισμένων φυσικών ακέραιων ποσοτήτων, όπως είναι ο πληθυσμός, η ημερομηνία, ο κωδικός ενός προϊόντος, κ.ά. Αντίθετα, ο ακέραιος τύπος είναι ακατάλληλος για τη πλειοψηφία των πραγματικών μετρήσεων και υπολογισμών που κάνει ένας μηχανικός, ακόμα και αν πρόκειται για στρογγυλοποιημένους αριθμούς των οποίων τα δεκαδικά ψηφία δεν είναι γνωστά ή δεν χρησιμοποιούνται.

INTEGER, PARAMETER:: N=200, M=150, NM=(N-1)*(M-1)
INTEGER:: a, b=5, c=2*N, d
INTEGER (KIND=1):: mikro_i=10
INTEGER, PARAMETER:: akriv8=SELECTED_INT_KIND(8)
INTEGER(8), PARAMETER:: megisto=HUGE(1), elaxisto=TINY(1)

Οι σταθερές BOZ είναι επίσης μια αναπαράσταση ακεραίων σε άλλο όμως σύστημα από το δεκαδικό. Η χρήση τους είναι περιορισμένη και συνήθως γίνεται σε συνδυασμό με συναρτήσεις τύπου INT. Τα άλλα συστήματα αρίθμησης είναι: το δυαδικό (binary) που συμβολίζεται με το B, το οκταδικό (octal) που συμβολίζεται με το Ο, και, το δεκαεξαδικό (hexadecimal) που συμβολίζεται με το Ζ (το H ήταν δεσμευμένο για τα δεδομένα Hollerith της παλαιότερης Fortran). Στο επόμενο παράδειγμα δήλωσης όλοι οι ακέραιοι θα πάρουν την ίδια αρχική τιμή:

INTEGER:: a=ΙΝΤ(B'101101'), b=ΙΝΤ(O'55'), c=ΙΝΤ(Z'2D'),d=45

REAL

Κάθε επιστημονικό δεδομένο που αποτελεί μέτρηση φυσικού μεγέθους ανήκει στο σύνολο των πραγματικών (real) αριθμών. Θεωρητικά, κάθε τέτοια μέτρηση μπορεί να έχει άπειρους βαθμούς ακριβείας, ενώ θεωρητικά πάλι, δύο ίδιες μετρήσεις θα έχουν πάντα μια, έστω και απειροελάχιστη, διαφορά μεταξύ τους. Πρακτικά όμως μετράμε πάντα με περιορισμένη ακρίβεια και δυο μετρήσεις πάρα πολύ κοντινές, για την ακρίβεια των οργάνων, τις θεωρούμε ίδιες. Ο τύπος REAL της Fortran ταυτίζεται με αυτή τη πεπερασμένη προσέγγιση του απείρου συνόλου τω πραγματικών αριθμών.

REAL, PARAMETER:: pi=3.14159
REAL (KIND=8), PARAMETER:: pi_dbl=3.141592653689
REAL:: a, b=15.0, c=pi/4.0, d(3)=(/1.0, 3.2, -2.9/)
V=2.34E-42_8 ; W=2.34D-42

COMPLEX

Οι μιγαδικοί αριθμοί αναπαρίστανται με ένα ζεύγος πραγματικών αριθμών που αποτελούν το πραγματικό και το φανταστικό μέρος και έχουν ένα κοινό όνομα. Οι μιγαδικοί παίρνουν τιμές σε ζεύγη όπου ο πρώτος είναι το πραγματικό μέρος και ο δεύτερος το φανταστικό. Π.χ.:

COMPLEX:: a=(1.0, 1.23), c=(11.34_8, 45.67_8)

CHARACTER

Οι σειρές χαρακτήρων αποτελούνται από ένα ή περισσότερα γράμματα, ψηφία, ή, σύμβολα που ανήκουν στο σετ χαρακτήρων του Η/Υ.

CHARACTER (LEN=20):: name, surname, position
CHARACTER:: name*15, middleini*1, surname*20, title*5

LOGICAL

Οι λογικές μεταβλητές παίρνουν μόνο δυο τιμές: .TRUE. ή .FALSE. (οι τελείες στα άκρα των δυο λέξεων είναι υποχρεωτικές).

LOGICAL, PARAMETER:: ShowSteps=.TRUE.
LOGICAL:: OxeiaGwnia, ErrorFlag=.FALSE.


αρχή

Prev Μάθημα Next


Παραδείγματα

Ερωτήσεις


©2006 Δρ. Β. Χ. Μούσας, Επικ. Καθ., e-mail Τ.Ε.Ι. ΑθήναςΤμήμα Πολιτικών Έργων Υποδομής