ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015
Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III (1958) FORTRAN IV (1962) FORTRAN 66 (1966) FORTRAN 77 (1978) FORTRAN 90 (1991) FORTRAN 95 (1997) FORTRAN 2003 (2004) FORTRAN 2008 (2010)
Σύγκριση FORTRAN με C/C++ Είναι πιο εύκολη στην εκμάθηση Επιστημονικά προσανατολισμένη Υπάρχει πληθώρα γραμμένου κώδικα Είναι ευκολότερη στην χρήση και περισσότερο εύρωστη Είναι πιο γρήγορη (λογω καλύτερης βελτιστοποίησης του κώδικα) Είναι πιο αποτελεσματική στα μαθηματικά
Δομή πηγαίου κώδικα ΑΡΧΗ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΔΕΔΟΜΕΝΑ ΕΙΣΟΔΟΥ Συνδέεται άμεσα με την αποφυγή λαθών και την δέσμευση πόρων του συστήματος ΕΚΦΡΑΣΕΙΣ - ΚΟΡΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ (ΥΠΟΛΟΓΙΣΜΟΙ, ΔΙΑΔΙΚΑΣΙΕΣ,...) Επικοινωνία με τον χρήστη ΔΕΔΟΜΕΝΑ ΕΞΟΔΟΥ ΤΕΛΟΣ
Παράδειγμα πηγαίου κώδικα Το ίδιο πρόγραμμα, μόνο με τα απαραίτητα!
Διαδικασία Μεταγλώττισης Πηγαίος Κώδικας (Source Code) Κειμενογράφος (Text Editor) Μεταγλώττιση (Compilation) Μεταγλωττιστής (Compiler) Κώδικας Αντικείμενο (Object Code,.obj) Διασύνδεση με βιβλιοθήκες (Linking) Συνδέτης (Linker) Εκτελέσιμος Κώδικας (Executable,.exe) Φορτωτής (Loader) Φόρτωση στη μνήμη και εκτέλεση (Execution)
Αλφάβητο της FORTRAN Αλφάβητο 52 χαρακτήρες A-Z και a-z 10 αριθμοί 0-9 22 σύμβολα _ = + - * / ( ),. : ;! % &? < > $ κενό
Λέξεις (tokens) της FORTRAN Εντολές Μεταβλητές Λέξεις Λέξεις «κλειδιά» με συγκεκριμένη λειτουργία Λέξεις για την αναπαράσταση φυσικών μεγεθών που αλλάζουν τιμή κατά την εκτέλεση του προγράμματος Παράδειγμα DO, IF, READ TEMP, rho Σταθερές Τελεστές Ετικέτες Λέξεις για την αναπαράσταση φυσικών μεγεθών που δεν αλλάζουν τιμή κατά την εκτέλεση του προγράμματος Συμβολισμοί για την εκτέλεση αριθμητικών και λογικών πράξεων Αριθμοί (1-5 ψηφία) που σημαδεύουν την θέση μιας έκφρασης pi, k_boltz =, *, **, <=.AND.,.LT. 100, 55555 Διαχωριστές Εμπεριέχουν ή διαχωρίζουν τα στοιχεία μιας λίστας λέξεων ( )
Κανόνες σύνταξης της FORTRAN 90/95 Ο πηγαίος κώδικας ενός προγράμματος FORTRAN πρέπει να αποτελείται εξ ολοκλήρου από Αγγλικούς χαρακτήρες Κάθε γραμμή του κώδικα δεν πρέπει να ξεπερνά τις 132 στήλες Τα κενά χωρίζουν τις λέξεις μεταξύ τους. Περισσότερα από ένα κενά λαμβάνονται ως ένα Το! χρησιμοποιείται για την εισαγωγή σχολίων. Ό,τι βρίσκεται δεξιά του δεν λαμβάνεται υπόψη από τον compiler, ούτε έχει σημασία στην εκτέλεση του προγράμματος. (Και εδώ ισχύει ο πρώτος κανόνας: επιτρέπονται μόνον Αγγλικοί χαρακτήρες) Μια έκφραση μπορεί να συνεχίζεται στην επόμενη γραμμή όταν ο τελευταίος χαρακτήρας είναι το &. (Για το διαχωρισμό αλφαριθμητικών σταθερών απαιτείται και ένα & στην αρχή της επόμενης γραμμής) Μια γραμμή μπορεί να φιλοξενεί πολλές εκφράσεις αρκεί να χωρίζονται μεταξύ τους με ; Κατάληξη αρχείων *.f95 ή *.f90
Δομή προγράμματος FORTRAN Ένα πρόγραμμα αποτελείται από το Κυρίως Πρόγραμμα και ενδεχομένως ένα ή περισσότερα Yποπρογράμματα Υπάρχουν 2 είδη υποπρογραμμάτων Υπορουτίνες (Subroutines) Συναρτήσεις (Functions)
Κυρίως πρόγραμμα Το κυρίως πρόγραμμα αποτελεί τον κορμό του πηγαίου κώδικα Έχει ένα όνομα Τερματίζεται με το end program (ή το end program <όνομα προγράμματος> ή το end) Μπορεί να υπάρχει μόνο ένα κυρίως πρόγραμμα μέσα σε ένα project Από αυτό ξεκινάει η εκτέλεση του κώδικα
Ονοματολογία Οι κανόνες ισχύουν για όλα τα ονόματα που χρησιμοποιούνται στην FORTRAN Ονόματα προγραμμάτων, υποπρογραμμάτων Ονόματα μεταβλητών, σταθερών Τα ονόματα μπορούν να περιλαμβάνουν έως και 31 χαρακτήρες από τα επόμενα σύνολα Γράμματα (μόνον του Αγγλικού αλφαβήτου!) Αριθμούς Underscores ( _ ) Το δολάριο ( $ ) Το χαρακτήρα @ Ο ΠΡΩΤΟΣ χαρακτήρας πρέπει να είναι γράμμα
Ονοματολογία (συνέχεια) Στη Fortran δεν υπάρχει η έννοια της δεσμευμένης λέξης. Κατά συνέπεια τα ονόματα των μεταβλητών επιτρέπεται να είναι ονόματα εντολών ή εγγενών συναρτήσεων όπως τα if, end,sin κτλ. ΝΑ ΑΠΟΦΕΥΓΕΤΑΙ!! Η FORTRAN δεν κάνει διάκριση μεταξύ πεζών και κεφαλαίων στα ονόματα. π.χ το όνομα velocity είναι ακριβώς το ίδιο με το όνομα Velocity ή VELOCITY ή velocity κτλ
Προτεινόμενο Στυλ γραφής ονομάτων Επιλέγουμε να γράφουμε όλα τα ονόματα εκτός των πινάκων και των επωνύμων σταθερών με πεζούς χαρακτήρες π.χ. real :: velocity, x, i Τα ονόματα των πινάκων και των επωνύμων σταθερών τα γράφουμε με κεφαλαίους χαρακτήρες π.χ. Α(3), integer, parameter :: N=10 Αν ένα όνομα αποτελείται από 2 ή περισσότερες λέξεις, τότε τις ενώνουμε με τον χαρακτήρα _ π.χ. mean_value Αν θέλουμε να χρησιμοποιήσουμε για όνομα μία λέξη εντολής ή εγγενούς συνάρτησης τότε βάζουμε τον χαρακτήρα $ στο τέλος για σαφέστερη διάκριση π.χ. sin$=12.3 Φροντίζουμε τα ονόματά μας να είναι περιγραφικά