FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών Μηχανολόγων Μηχανικών Εθνικό Μετσοβιο Πολυτεχνείο February 24, 2016 Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Περιεχόμενα ύλης 1 Εισαγωγή στην γλώσσα FORTRAN 2 Απλοί τύποι δεδομένων, σταθερές, μεταβλητές, εκφράσεις, εντολές 3 Δομές ελέγχου, συναρτήσεις, διαδικασίες, πέρασμα παραμέτρων 4 Σύνθετες δομές δεδομένων: πίνακες, εγγραφές Παραχώρηση μνήμης 5 Μεταφορά δεδομένων, αρχεία εισόδου/εξόδου 6 Στοιχεία μεθοδολογίας προγραμματισμού: αλγόριθμοι, δομές δεδομένων, επανάληψη, αναδρομή, δομημένος προγραμματισμός 7 Φάσεις ανάπτυξης λογισμικού: προδιαγραφές, σχεδίαση, υλοποίηση, επαλήθευση, τεκμηρίωση, συντήρηση προγραμμάτων 8 Αντικειμενοστραφής προγραμματισμός: τύποι δεδομένων, κλάσεις, αντικείμενα, κληρονομικότητα, πολυμορφισμός 9 Διασύνδεση FORTRAN με άλλες γλώσσες (C/C++, MATLAB) Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Το περιβάλλον Silverfrost Plato 1 http://wwwsilverfrostcom/, για να κατεβάσετε και να εγκαταστήσετε την γλώσσα 2 Γραφικό περιβάλλον ανάπτυξης 3 Χρήση έκδοσης FORTRAN 95, για Windows Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα PROGRAM square_root_example PROGRAM square_root_example! G Papalambrou! comments start with exclamation mark IMPLICIT NONE REAL :: x,y INTRINSIC SQRT! Standard FRTRN functions! Command line interface Ask a number and read it WRITE (*,*) Give a value (number) for x: READ(*,*) x y=x**2+1! power function and arithmetic WRITE (*,*) Given value for x:,x WRITE (*,*) Computed value of x**2+1:,y! Print the sqrt of y to screen WRITE (*,*) Computed value of SQRT(x**2+1):,SQRT(y) END PROGRAM square_root_example Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα PROGRAM square_root_example Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα PROGRAM square_root_example Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 1 Τα σχόλια ξεκινούν με θαυμαστικό (!) Βάζετε πάντα πολλά σχόλια!! Αρχικά γίνονται δηλώσεις μεταβλητών: REAL :: x,y Χρήση βιβλιοθηκών της γλώσσας: INTRINSIC SQRT Ένα interface ζητά τιμές: WRITE (*,*) Give a value (number) for x: Διαβάζεται η τιμή: READ(*,*) x Γίνονται οι υπολογισμοί: y=x**2+1 Τυπώνονται διάφορα στοιχεία: WRITE (*,*) Given value for x:, x Τυπώνονται διάφορα στοιχεία και γίνεται υπολογισμός: WRITE (*,*) Computed:, SQRT(y) Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 2 Χρήση γλώσσας έκδοσης FORTRAN 95/2003 Το πρόγραμμα ξεκινάει με την λέξη PROGRAM <όνομα προγράμματος> και τελειώνει με την λέξη END PROGRAM <όνομα προγράμματος> Η δήλωση IMPLICIT NONE πρέπει να γίνεται πάντα, διότι ακυρώνει ορισμένες δηλώσεις μεταβλητών σε παλαιότερες εκδόσεις της γλώσσας Έτσι στην FORTRAN 95 όλες οι μεταβλητές δηλώνονται Σε παλαιότερες εκδόσεις, με IMPLICIT είσοδο, μεταβλητή που αρχίζει με τα γράμματα i, j,, n θεωρείται ακέραια (type integer), εκτός αν δηλωθεί διαφορετικά, ενώ μεταβλητή που αρχίζει με τα υπόλοιπα γράμματα θεωρείται πραγματική (real), εκτός αν δηλωθεί διαφορετικά Έτσι στην FORTRAN 95 όλες οι μεταβλητές δηλώνονται Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 3 Δηλώσεις του προγράμματος μπορούν να ξεκινήσουν σε οποιαδήποτε στήλη και μπορεί να είναι μέχρι 132 χαρακτήρες (FRΝ77: 80 χαρακτήρες) Oποιοδήποτε κείμενο που εμφανίζεται σε μια γραμμή μετά από ένα θαυμαστικό θεωρείται ως σχόλιο και αγνοείται από τον compiler Το & που εμφανίζεται ως τελευταίος χαρακτήρας σε μια γραμμή δείχνει ότι το πρόγραμμα θα συνεχιστεί στην επόμενη γραμμή Τα ονόματα μεταβλητών μπορεί να είναι μέχρι 31 χαρακτήρες Τα ονόματα μεταβλητών και οι εντολές μπορεί να είναι κεφαλαία ή πεζά χωρίς διαφορά Έτσι γίνεται χρήση των REAL :: x,y και Real :: x,y χωρίς αλλαγή στο αποτέλεσμα Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 4 Η δήλωση Real :: x,y αφορά τον τύπο των μεταβλητών x,y Σε άλλες περιπτώσεις γίνεται χρήση των Integer :: i, n Οι τύποι ακέραιοι και πραγματικοί δηλώνουν ότι οι μεταβλητές i,n πρέπει να θεωρηθούν ως ακέραιοι και οι μεταβλητές x,y κινητής υποδιαστολής-πραγματικoί αριθμοί Η κατανόηση των διαφορών μεταξύ των δύο τύπων είναι ζωτικής σημασίας Γενικά, πραγματικές μεταβλητές χρησιμοποιούνται για την αποθήκευση δεδομένων και την υπολογιστική αριθμητική, ενώ ακέραιες μεταβλητές χρησιμοποιούνται κυρίως για την καταμέτρηση (πχ βρόχοι επανάληψης) και για τον καθορισμό των διαστάσεων των πινάκων και των δεικτών των στοιχείων τους Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 5 Το όνομα προγράμματος είναι mainf95, δηλ τύπου FORTRAN 95 Αντίστοιχα σε FORTRAN 90 θα είναι mainf90 Εδώ οι εντολές READ, WRITE θεωρούν ως standard interface την γραμμή εντολών (command line), σε αντίστοιχη οθόνη που ανοίγει κατά την εκτέλεση προγράμματος και το πληκτρολόγιο Αργότερα ως interface θα έχουμε και αρχεία text, τύπου είσοδου, από όπου θα λαμβάνονται δεδομένα και τύπου εξόδου, όπου θα αποθηκεύονται τα αποτελέσματα Στην εντολή εισόδου read(*,*) a,b ο 1ος αστερίσκος δηλώνει ότι τα δεδομένα που θα έρθουν μέσω της standard input, και ο 2ος ότι οι τιμές για a,b θα πρέπει να διαβαστούν ως λίστα, δηλ με ελεύθερη μορφή εισόδου, με τα στοιχεία να διαχωρίζονται με κενά, tabs, κόμματα, κα Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 6 Στην FRTRN πρέπει να διορθωθεί το πρόγραμμα από συντακτικά λάθη (μέσω του compiler), ώστε να δημιουργηθεί αρχείο object Αν υπάρξουν λάθη πρέπει να διορθωθούν και επαναληφθεί το compilation Το αρχείο object ενώνεται με τις βιβλιοθήκες της γλώσσας (μέσω του linker), ώστε να δημιουργηθεί το τελικό εκτελέσιμο αρχείο (executable) Το αρχείο exe περιλαμβάνει τις εντολές που θα εκτελεστούν από τον επεξεργαστή Οι εργασίες compilation και link ονομάζονται Build Με την διαδικασία εκτέλεσης (Run) εκτελείται το πρόγραμμα σε πραγματικό χρόνο και εμφανίζονται τα αποτελέσματα σε οθόνη ή σε αρχείο Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Διαδικασία εκτέλεσης προγράμματος Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 7 Το παραθυρικό περιβάλλον PLATO είναι IDE (Integrated Development Environment), δηλ πλήρες αφού περιέχει όλες τις εργασίες compilation, linking, creating executable Σε άλλα λειτουργικά συστήματα (Unix-Linux), ο χρήστης είναι δυνατό να καλέσει την κάθε εργασία χωριστά από το command line (shell) ή μέσω αρχείου (script) Στο PLATO ο χρήστης επιλέγει Build και εκτελούνται οι εργασίες compilation, linking, creating executable μαζί, αν δεν υπάρχει λάθος Αν δεν γίνει αλλαγή στο πρόγραμμα δεν απαιτείται εκ νέου compilation, linking, δημιουργία executable πριν την εκτέλεση (μήνυμα: Executable is up to date ) Για την εκτέλεση επιλέγει Build και δίνει Start Run οπότε και ανοίγει η γραμμή εντολών (μαύρη οθόνη με άσπρα γράμματα) Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Σχόλια 8 Σε σύνθετα προγράμματα, κατά την εκτέλεση προτιμάμε το τρόπο εκτέλεσης προγράμματος βήμα-βήμα (Step) Σε αυτή την περίπτωση ο χρήστης επιλέγει Build και δίνει Step into, οπότε και ανοίγει διαφορετικό παράθυρο που επιτρέπει τέτοιους χειρισμούς Το περιβάλλον τώρα είναι σε mode debug, δηλ κατάσταση διόρθωσης Περισσότερα για το debug σε επόμενο μάθημα Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα πρώτο πρόγραμμα Διαδικασία εκτέλεσης προγράμματος σε mode debug Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα δικό σας πρώτο πρόγραμμα Άσκηση Κατεβάστε από το site http://wwwsilverfrostcom/ το περιβάλλον Silverfrost FTN95: Fortran for Windows, έκδοση PLATO, FTN95 s native IDE, και εγκαταστήστε το στον ΗΥ σας Προσπαθήστε να δημιουργήσετε το πρόγραμμα του παραδείγματος Φτιάξτε πρώτα ένα Project που θα περιέχει το αρχείο σας Δώστε File New Project και επιλέξτε ως τύπο το Fortran Application Θα ανοίξει o editor για να γράψετε τoν source κώδικα σας Αποθηκεύετε συχνά τον κώδικα Κατόπιν χρειάζεται Build Build και Build Run οπότε και θα σας ζητηθεί να δώσετε τα δεδομένα στο command window Στο τέλος δώστε Return για να κλείσει η εφαρμογή σας Καλή επιτυχία! Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Ένα δικό σας πρώτο πρόγραμμα PLATO New Project Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Η βοήθεια στο περιβάλλον PLATO Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός
Βιβλιογραφία M Metcalf, J Reid, M Cohen, Modern Fortran Explained, Oxford, 4th Edition, 2011 A Markus, Modern Fortran in Practice, Cambridge University Press, 2012 N Clerman, W Spector, Modern Fortran: Style and Usage, Cambridge University Press, 1st edition, 2011 I Chivers, J Sleightholme, Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77, Springer, 2nd Edition, 2012 Γ Παπαλάμπρου FORTRAN και Αντικειμενοστραφής Προγραμματισμός