Εισαγωγή στο προγραμματισμό Η/Υ Fortran 90/95/2003 Silverfrost FTN95: Fortran for Windows http://www.silverfrost.com/default.aspx http://users.auth.gr/~ppi/fortran/ fortran95.math.auth@gmail.com
Ηλεκτρονικός Υπολογιστής Hardware Software (Λογισμικό ) Λογισμικό Συστήματος Λογισμικό Εφαρμογών
Central processing unit Program control unit Arithmetic-logic unit Instructions Data Memory unit Input- Output equipme nt
- Μονάδες Εισόδου : Είναι το σύνολο των μονάδων με τις οποίες επιτυγχάνεται η είσοδος των πληροφοριών στον Η/Υ, π.χ. πληκτρολόγιο, ποντίκι, κ.τ.λ. - Κεντρική Μονάδα Επεξεργασίας (CPU) : Η μονάδα στην οποία γίνονται οι κάθε είδους επεξεργασίες των πληροφοριών, καθώς και ο συντονισμός και έλεγχος των λειτουργιών του Η/Υ. Αποτελείται από την αριθμητική και λογική μονάδα, τη μονάδα ελέγχου και μονάδες μνήμης.
- Κύρια Μνήμη (Random Access Memory) : Η μονάδα αυτή χρησιμοποιείται για την αποθήκευση του προγράμματος των δεδομένων, καθώς επίσης και των ενδιάμεσων και τελικών αποτελεσμάτων του προγράμματος, πριν αυτά εμφανιστούν στην οθόνη ή τυπωθούν στον εκτυπωτή ή αποθηκευτούν σε κάποια μονάδα δευτερεύουσας μνήμης. - Μονάδες Εξόδου: Είναι το σύνολο των μονάδων με τις οποίες επιτυγχάνεται η έξοδος των αποτελεσμάτων από τον Η/Υ π.χ. οθόνη, εκτυπωτής, δισκέτα κ.τ.λ.
Γλώσσα προγραμματισμού είναι ένα σύνολο γραμμάτων, αριθμών, λέξεων και συντομογραφικών μνημονικών σημείων που διέπονται από ειδικό συντακτικό και χρησιμοποιούνται στην ανάπτυξη αλγορίθμων στον υπολογιστή. Οι γλώσσες χαμηλού επιπέδου που βρίσκονται κοντά στις στοιχειώδεις εντολές μηχανής ενός συγκεκριμένου Η/Υ και γι αυτό διαφέρουν από Η/Υ σε Η/Υ. Η γλώσσα που είναι πιο κοντά στο επίπεδο της μηχανής είναι η γλώσσα μηχανής.
Οι γλώσσες υψηλού επιπέδου, που προσεγγίζουν την ανθρώπινη γλώσσα περισσότερα από ότι οι γλώσσες χαμηλού επιπέδου και είναι ειδικά σχεδιασμένες, ώστε προγράμματα τα οποία είναι γραμμένα σ αυτές να εκτελούνται από οποιονδήποτε υπολογιστή. Τέτοιες γλώσσες είναι οι BASIC, FORTRAN, PASCAL, PROLOG, C, C++, κ.τ.λ. Το πρόγραμμα που γράφουμε σε μια γλώσσα υψηλού επιπέδου μεταφράζεται πάντοτε μέσο ειδικών προγραμμάτων στη γλώσσα που καταλαβαίνει ο Η/Υ, δηλαδή τη γλώσσα μηχανής. Τα προγράμματα που κάνουν τη μετάφραση αυτή είναι ο Interpreter ή ο Compiler.
Interpreter (Διερμηνέας): Μεταφράζει μια-μια τις εντολές συγχρόνως με την εκτέλεση τους. Compiler (Μεταφραστής): Μεταφράζει μια φορά ολόκληρο το πρόγραμμα. Στη συνέχεια το μεταφρασμένο πρόγραμμα εκτελείται. Ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου ονομάζεται συνήθως πηγαίος κώδικας (source code). Μετά τη μετατροπή του σε γλώσσα μηχανής από το μεταφραστή (compiler) δημιουργείται το αντικείμενο πρόγραμμα (object program).
Το αντικείμενο πρόγραμμα στη συνέχεια συνδέεται με βιβλιοθήκες της γλώσσας προγραμματισμού και άλλα αντικείμενα προγράμματα (linker) προκειμένου να δημιουργηθεί ο εκτελέσιμος κώδικας ή αλλιώς το εκτελέσιμο πρόγραμμα (executable program).
name.f95 name.obj name.exe
FORTRAN Το όνομα FORTRAN προέρχεται από τις λέξεις Formula Translation 1954-1957 IBM Fortran Ι, Fortran ΙI 1962 γνώστη έκδοση Fortran ΙV 1966 Fortran 66 (First standard edition) 1978 Fortran 77 1991 Fortran 90 1997 Fortran 95 2005 Fortran 2003
Γιατί η γλώσσα Fortran χρησιμοποιείται τόσα χρόνια; Η κυριότερη αιτία είναι η απλότητά της. Περισσότερα ερευνητικά προγράμματα είναι γραμμένα σε γλώσσα Fortran Υπάρχουν έτοιμα και δημοσιευμένα σε διεθνή περιοδικά μικρά προγράμματα(υποπρογράμματα) σε γλώσσα Fortran ικανά να λύσουν κάθε πρόβλημα μαθηματικών,φυσικής, αστρονομίας, και πολλών άλλων επιστημονικών τομέων. Υπάρχουν διαθέσιμες και πολλές φορές δωρεάν, βιβλιοθήκες έτοιμων προγραμμάτων.
Το αλφάβητο της Fortran Γράμματα: Κεφαλαία και μικρά Αγγλικά γράμματα Α,Β,,Ζ,a,b,,z Ψηφία 0,1,2,3,4,5,6,7,8,9 Ειδικοί χαρακτήρες! # $ % & ( ) * + - / < > : ;. = \ [ ] ^ { }?
Ειδικοί χαρακτήρες. (Τελεία), (Κόμμα) = (Ίσον) > (Μεγαλύτερο) < (Μικρότερο) $ (Δολάριο) ( (Ανοικτή παρένθεση) ) (Κλειστή παρένθεση) & (Σύμβολο του «και») (Απόστροφος) (Διπλή απόστροφος) : (Άνω και κάτω τελεία) :: (Διπλή άνω και κάτω τελεία)! (Θαυμαστικό) ; (Ελληνικό ερωτηματικό)? (Αγγλικό ερωτηματικό) _Υπογράμμιση (underscore)
Το λεξιλόγιο της Fortran Το λεξιλόγιο της Fortran 95 περιλαμβάνει 9 κατηγορίες : ονόματα, αριθμούς, χαρακτήρες, αλυσίδες χαρακτήρων, λογικοί χαρακτήρες, τελεστές, διαχωριστές, λέξεις κλειδιά και σχόλια.
Ονόματα Περιέχουν 1-31 αλφαριθμητικούς χαρακτήρες (τα 26 γράμματα της αγγλικής αλφαβήτου, τα 10 ψηφία και το σύμβολο _ ). Ξεκινούν πάντα με αγγλικό γράμμα και στη συνέχεια ακολουθεί συνδυασμός γραμμάτων και αριθμών. Κεφαλαία ή πεζά θεωρούνται το ίδιο. Επιτρέπεται η χρήση ονομάτων που έχουν ειδική σημασία για τη FORTRAN 95 αν και δεν συνιστάται η χρήση τους.
Τι δεν επιτρέπεται; Δεν επιτρέπονται σύμβολα εκτός από το _. Δεν επιτρέπονται τα κενά. Δεν επιτρέπονται οι Ελληνικοί χαρακτήρες. Παραδείγματα: Επιτρεπτά ονόματα: AF1, DAY, FATHER_NAME Μη επιτρεπτά ονόματα: 1DC, ΩΡΑ, FATHER-NAME
Αριθμεί Ακέραιοι αριθμοί. (Integer number) Πρόκειται για ένα σύνολο ψηφίων με ένα πρόσημο πριν από αυτά π.χ. 4, +555, 78900. Στην περίπτωση που το πρόσημο είναι + είναι προαιρετικό. Δεν θα πρέπει να χρησιμοποιούμε (,) ή (.) π.χ. 4.5, 5,67, παραπάνω από ένα πρόσημα ή να τοποθετούμε το πρόσημο δεξιά του αριθμού. Το μέγεθος των ακεραίων, ανάλογα με τη δήλωση τους είναι : [-2 7, 2 7-1], [-2 15, 2 15-1], [-2 31, 2 31-1]. Το πλήθος των σημαντικών τους ψηφίων είναι το πολύ 10.
Πραγματικοί αριθμοί. (Real number) Πρόκειται για θετικούς ή αρνητικούς αριθμούς έξω από το διάστημα των ακεραίων ή με δεκαδικά ψηφία. Ανάλογα με το μέγεθος τους διακρίνονται σε πραγματικούς αριθμούς απλής ακριβείας [-10 38, -10-38 ], [10-38,10 38 ], και πραγματικούς αριθμούς διπλής ακριβείας [-10 308, -10-308 ], [10-308, 10 308 ]. Το πλήθος των σημαντικών ψηφίων των πραγματικών αριθμών απλής ακρίβειας είναι 6 ενώ των διπλής ακρίβειας είναι 15.
Οι πραγματικοί αριθμοί χωρίζονται σε δύο κατηγορίες : Πραγματικοί αριθμοί σταθερής υποδιαστολής (θετικοί ή αρνητικοί αριθμοί που περιέχουν υποδιαστολή) π.χ. 34.5 Πραγματικοί αριθμοί κινητής υποδιαστολής (θετικοί ή αρνητικοί αριθμοί που είναι εκφρασμένοι σε εκθετική μορφή xxxxe±xxxx όπου η βάση είναι θετικός ή αρνητικός ακέραιος ή δεκαδικός αριθμός, ενώ ο εκθέτης είναι θετικός ή αρνητικός ακέραιος αριθμός) π.χ. Ο αριθμός 0.345E+2 συμβολίζει τον 34.5 Ο αριθμός 0.345E-2 συμβολίζει τον 0.00345
Μιγαδικοί αριθμοί. (Complex number) Πρόκειται για ένα ζεύγος αριθμών, π.χ. η παράσταση του μιγαδικού αριθμού 3+4i είναι (3, 4). Το πρώτο μέρος του ζεύγους είναι το πραγματικό μέρος, ενώ το δεύτερο μέρος είναι το φανταστικό μέρος. Οι μιγαδικοί αριθμοί χωρίζονται σε δύο κατηγορίες : α) τους μιγαδικούς αριθμούς απλής ακριβείας, όπου τα μέλη του ζεύγους είναι και τα δύο πραγματικοί αριθμοί απλής ακριβείας και β) τους μιγαδικούς αριθμούς διπλής ακριβείας, όπου τα μέλη του ζεύγους είναι και τα δύο πραγματικοί αριθμοί διπλής ακριβείας.
Χαρακτήρες ( Character ) Όλοι οι χαρακτήρες που υποστηρίζονται από τον Η/Υ μέσα σε αποστρόφους πρδ. a, γ. Ισχύουν τα εξής : Ο χαρακτήρας A είναι διαφορετικός από το χαρακτήρα a. Ο κενός χαρακτήρας συμβολίζεται με δύο αποστρόφους που περικλείουν ένα διάστημα, δηλαδή. Ο χαρακτήρας 3 διαφέρει από τον αριθμό 3. Ο πρώτος δεν μπορεί να πάρει μέρος σε αριθμητικές πράξεις ενώ ο δεύτερος μπορεί. Πρέπει να δοθεί προσοχή στο διαχωρισμό του μηδέν 0 και του κεφαλαίου όμικρον Ο. Πρέπει να δοθεί προσοχή στο διαχωρισμό για το αριθμό ένα 1 και το γράμμα l.
Αλυσίδες χαρακτήρων Πρόκειται για ακολουθία χαρακτήρων μεταξύ διπλών αποστρόφων π.χ. Fortran 95, 123. Για να τοποθετήσουμε απόστροφο σε μια αλυσίδα χαρακτήρων θα πρέπει να τοποθετήσουμε στη θέση της αποστρόφου δύο αποστρόφους, π.χ. don't forget έχει περιεχόμενο don t forget. Λογικοί χαρακτήρες (Logical) Πρόκειται για δεδομένα τα οποία αποτελούνται από δύο μόνο τιμές.true. και.false.
Τελεστές Είναι σύμβολα που δηλώνουν πράξεις μεταξύ τελεστέων, δηλαδή αριθμών, αλυσίδων χαρακτήρων κ.λ.π.. Υπάρχουν 4 κατηγορίες τελεστών: αριθμητικοί, χαρακτήρων, σύγκρισης και λογικοί:
Τελεστές αριθμητικοί Χρησιμοποιούνται για πράξεις μεταξύ αριθμών. Τελεστής Λειτουργία Σύνταξη + Πρόσθεση Χ+Υ - Αφαίρεση Χ-Υ * Πολλαπλασιασμός Χ*Υ / Διαίρεση Χ/Υ ** Δύναμή Χ**Υ
Τελεστές χαρακτήρων Χρησιμοποιούνται για πράξεις μεταξύ αλυσίδων χαρακτήρων. Τελεστής Λειτουργία Σύνταξη // Συνένωση ABC // 123 αλυσίδων θα μας δώσει χαρακτήρων ABC123
Τελεστές Σύγκρισης Χρησιμοποιούνται για σύγκριση μεταξύ αριθμών ή αλυσίδων χαρακτήρων. Τελεστής Λειτουργία Σύνταξη.EQ. ή == Ισότητα Χ.EQ.Y ή Χ==Υ.NE. ή /= Ανισότητα Χ.NE.Y ή Χ/=Υ.GT. ή > Μεγαλύτερο Χ.GT.Y ή Χ>Υ.LT. ή < Μικρότερο Χ.LT.Y ή Χ<Υ.GΕ. ή >= Μεγαλύτερο ή ίσο Χ.GΕ.Y ή Χ>=Υ.LΕ. ή <= Μικρότερο ή ίσο Χ.LΕ.Y ή Χ<=Υ
Τελεστές Λογικοί Χρησιμοποιούνται για την εκτέλεση λογικών πράξεων. Τελεστής.ΝΟΤ..AND..OR..EQV..NEQV..XOR. Λειτουργία Λογική άρνηση Λογική πρόσθεση Διάζευξη Ισοδυναμία Μη ισοδύναμα ή/και
Οι πίνακες αληθείας των λογικών τελεστών είναι : Χ Y X.AND.Y X.OR.Y.NOT.X T T T T F T F F T F F T F T T F F F F T Χ Y X.EQV.Y X.NEQV.Y X.XOR.Y T T T F F T F F T T F T F T T F F T F F
Διαχωριστές Πρόκειται για χαρακτήρες με συγκεκριμένη λειτουργία στη FORTRAN 90,95. Οι κυριότεροι είναι: = ( ),. & ; Καταχώριση Παρενθέσεις, για τους πίνακες Σημεία στίξης Σύμβολο συνέχειας γραμμής Για τον διαχωρισμό εντολών που βρίσκονται στην ίδια γραμμή
Λέξεις Κλειδιά Πρόκειται για λέξεις με ειδική σημασία στη FORTRAN 95, όπως PROGRAM, END, IF, DO, WHILE κ.λ.π. Σχόλια Οποιοιδήποτε χαρακτήρες ακολουθούν το σύμβολο! θεωρούνται σχόλια και δεν μεταφράζονται από τον compiler της FORTRAN. Παράδειγμα:! Το παρακάτω πρόγραμμα υπολογίζει
Μαθηματικές συναρτήσεις στη 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) sinh(x) cosh(x) tanh(x) Φυσικός λογάριθμος του Χ Δεκαδικός λογάριθμος του Χ Yπερβολικό ημίτονο του x Yπερβολικό συνημίτονο του x Yπερβολική εφαπτομένη του x MOD(X,Y) FRACTION(X) Ακέραιο υπόλοιπο της διαίρεσης Χ/Υ Κλασματικό μέρος του Χ MAX(X1,X2,X3) MIN(X1,X2,X3) INT(X) REAL(X) Ο μέγιστος των Χ1,Χ2,X3 Ο ελάχιστος των Χ1,Χ2,X3 Μετατροπή σε ακέραιο με αποκοπή Μετατροπή σε πραγματικό
Μαθηματικές εκφράσεις στη Fortran Τύπος Τελεστής Σειρά προτεραιότητας για τελεστές με την ίδια προτεραιότητα Αριθμητικός x**y Δ προς Α Αλγεβρική * / Α προς Δ + - Α προς Δ Σύγκρισης > >= Α προς Δ < <= Α προς Δ == /= Α προς Δ Λογικοί.NOT. Δ προς Α.AND..OR. Α προς Δ.EQV..NEQV.
Μερικές παρατηρήσεις για τις εκφράσεις στην Fortran Προσοχή στις πράξεις που έχουν ίδια προτεραιότητα, π.χ. η παράσταση a/b/c/d είναι ισοδύναμη με την ((a/b)/c)/d. Δεν μπορούμε να βάλουμε δύο αριθμητικούς τελεστές τον ένα δίπλα στον άλλο, π.χ. 3*-4, πρέπει να χρησιμοποιούμε παρενθέσεις 3*(-4). Αν οπουδήποτε έχετε αμφιβολία για την σειρά εκτέλεσης των πράξεων χρησιμοποιείστε παρενθέσεις.
Ασκήσεις Να μετατρέψτε τις παρακάτω αλγεβρικές εκφράσεις, σε μορφή αποδεκτή από τη γλώσσα Fortran.
(x-sin(x)**2)/(tan(x-1)**2+1)
ABS((1+SQRT(X-2))/(X**2-1))
EXP(LOG(X))-Y/X**3
(tan(x)>=-1).and.(tan(x)<=3)
Βήμα 1. Εκκίνηση Προγράμματος Shortcut Plato Έναρξη (Start) -> Προγράμματα (Programs) -> Silverfrost -> Plato IDE
Βήμα 2. Δημιουργία νέας εφαρμογής File -> New Project
Βήμα 3. Δημιουργία νέας εφαρμογής-> Fortran application->name:askisi1- >create on desktop folder Askisi1->Location:Browse in Desktop in Askisi1 -> Open
Βήμα 4 Right click on ->Sourse File->Add New Item
Βήμα 5 Name:Askisi1 -> check Free format Fortran file ->Open
Βήμα 6. Γράψιμο προγράμματος Πηγαίος κώδικας (source code) -> Askisi1.f95
Βήμα 7. Μετάφραση προγράμματος Build -> Compile (Ctrl+F7)
Βήμα 8. Δημιουργία εκτελέσιμου προγράμματος Build -> Build ( Ctrl+Shift+B)
Βήμα 9. Εκτέλεση του προγράμματος Build -> Start Run ( Ctrl+F5)
Βήμα 10. Εμφάνιση των αποτελεσμάτων Εμφανίζεται ένα παράθυρο του MS-DOS όπου και εκτελείται το πρόγραμμά μας :