Εισαγωγή στην Fortran ΕΠΛ031 Εισαγωγή στον Προγραμματισμό Νέαρχος Πασπαλλής Επισκέπτης Ακαδημαϊκός (Λέκτορας) nearchos@cs.ucy.ac.cy Γραφείο #B120, Τηλ. ext. 2744 FORTRAN: Ιστορική Αναδρομή 1954 1957, πρώτος μεταγλωττιστής. Ερευνητική ομάδα της IBM (John Backus + 13 προγραμματιστές). Γλώσσα για τον υπολογισμό μαθηματικών εκφράσεων. FORTRAN: FORmula TRANslation 1966, FORTRAN 66, φορητά (portable) προγράμματα 1977, FORTRAN 77, σημαντικές αλλαγές προσαρμογή στις εξελίξεις της τεχνολογίας 1991, FORTRAN 90, σημαντικές βελτιώσεις, αφαίρεση περιορισμών, δυνατότητα παραλληλισμού δεδομένων, δυνατότητα αντικειμενοστραφούς προγραμματισμού (object-oriented) 1997, FORTRAN 95, αναβάθμιση-βελτίωση της FORTRAN 90 4-2 Γιατί FORTRAΝ; Επί δεκαετίες οι ερευνητές την εμπιστεύονται και την χρησιμοποιούν στην ανάπτυξη μοντέλων Έχουν αναπτυχθεί μέχρι σήμερα εκατομμύρια εφαρμογές σε FORTRAN: προγράμματα προσομοίωσης (simulations), μαθηματικές και στατιστικές βιβλιοθήκες... Στηρίχθηκε και στηρίζεται σε ισχυρά και γενικώς αποδεκτά πρότυπα (η C++ όχι) Εξελίσσεται και βελτιώνεται διαρκώς Ως γλώσσα μαθηματικών εκφράσεων, είναι πολύ κοντά στην φυσική γλώσσα των επιστημόνων Εύκολη στην εκμάθηση, ειδικά από άτομα με κάποιο μαθηματικό υπόβαθρο Όσον αφορά τον χειρισμό των προβλημάτων της επιστήμης, η FORTAN 90/95 θεωρείται αξεπέραστη Το Αλφάβητο της FORTRAN 52 χαρακτήρες A Z και a z του αγγλικού αλφαβήτου Τα πεζά είναι ισοδύναμα με τα αντίστοιχα κεφαλαία (Not case sensitive) 10 αριθμοί (0 9) 21 σύμβολα κενό = + - * / ( ) < >,. : ;! $ & %? Συνολικά, το αλφάβητο της FORTRAN έχει 73 χαρακτήρες Για σχόλια (δηλαδή κείμενο που ακολουθεί μετά από!) μπορούμε επίσης να χρησιμοποιήσουμε οποιοδήποτε άλλο χαρακτήρα (π.χ. Ελληνικούς χαρακτήρες) 4-3 4-4 Πανεπιστήμιο Κύπρου 1
Λέξεις Μια λέξη είναι μια νοηματική μονάδα της FORTRAN, που σχηματίζεται από ένα ή περισσότερους χαρακτήρες της FORTRAN O χρήστης μπορεί να δημιουργήσει όσες λέξεις θέλει Υπάρχει και μια σειρά από δεσμευμένες λέξεις που ονομάζονται εντολές A, COUNT, TEMP, EMBADON, 3.14, TREE1: Λέξεις από τον χρήστη DO, READ, WRITE, SELECT, IF, PRINT: Εντολές της FORTRAN Εκφράσεις & Προτάσεις Οι λέξεις και οι εντολές, μαζί με συντακτικούς κανόνες, δημιουργούν εκφράσεις και προτάσεις Λένε στον υπολογιστή τι να εκτελέσει,, υπό ποίες συνθήκες και πώς Οι προτάσεις δημιουργούνται από εντολές μαζί με λέξεις του χρήστη, και έχουν αυστηρά καθορισμένη σύνταξη π.χ. PRINT *, A DO I=1, 6 READ *, MHKOS Οι εκφράσεις δημιουργούνται με λέξεις του χρήστη σε συνδυασμό με τελεστές και άλλα σύμβολα με βάση γενικούς κανόνες σύνταξης π.χ. A = B + 3.14 EMBADON = MHKOS * PLATOS 4-5 4-6 Μεταβλητές Λέξεις δοσμένες από τον χρήστη των οποίων η τιμή τους αλλάζει στην διάρκεια της επίλυσης του προβλήματος Κάθε μεταβλητή έχει Τύπο (π.χ. Ακέραιος, πραγματικός, μιγαδικός, αλφαριθμητικός, λογικός) 4-7 Μέγεθος (π.χ., 1, 2, 4, 8 bytes) Όνομα (π.χ. EMBADON, A, TEMP) Τιμή (π.χ. 34, 23.4, 2+3i, B,.TRUE.) 4-8 Σημασία Μεταβλητής τύπος Όνομα τιμή integer count; (διεύθυνση) count = 137 count = count + 142 0 98760060...... 137 279 Πανεπιστήμιο Κύπρου 2
Κανόνες ονομασίας μεταβλητών Κάθε μεταβλητή διαφορετικό όνομα Μέγιστο μήκος: 31 χαρακτήρες (FORTRAN 77, 6 χαρακτήρες) ) Α Ζ, a z, 0-9, και _ μόνο Ο πρώτος χαρακτήρας Α-Ζ ή a z Κεφαλαία και πεζά είναι το ίδιο Να χρησιμοποιείτε ονόματα που είναι Αυτο-επεξηγηματικά Παραδείγματα TIME DISTANCE EMBADON1 $ TAX-FREE (πολύ μεγάλο για F77) (πολύ μεγάλο για F77) x μη επιτρεπτός χαρακτήρας ($) x μη επιτρεπτός χαρακτήρας (-) ROOT_12 2X x δεν μπορεί να ξεκινά με αριθμό 4-9 4-10 Επώνυμες Σταθερές Λέξεις δοσμένες από τον χρήστη των οποίων η τιμή τους δεν αλλάζει στην διάρκεια της επίλυσης του προβλήματος Κάθε σταθερά έχει τύπο, μέγεθος, όνομα, και σταθερή τιμή Ο μεταγλωττιστής αντικαθιστά το όνομα με την τιμή Οι επώνυμες σταθερές διευκολύνουν: Τροποποιήσεις ιάβασμα και κατανόηση ενός προγράμματος (PI ή 3.1453) Θα δούμε αργότερα πως επιβάλλουμε μια λέξη να είναι σταθερή (να μην μπορεί να αλλάξει η τιμή της) Η Σύνταξη της FORTRAN 90/95 Ο κώδικας γράφεται στις στήλες 1-132 Τα κενά χωρίζουν λέξεις μεταξύ τους. Περισσότερα ρ από ένα κενά μεταξύ λέξεων εκλαμβάνονται ως ένα. Όταν ένα θαυμαστικό (!) είναι ο πρώτος, μη κενός, χαρακτήρας μιας γραμμής, ολόκληρη η γραμμή εκλαμβάνεται ως σχόλιο (μη εκτελέσιμη γραμμή). Αν το θαυμαστικό δεν είναι ο πρώτος χαρακτήρας αλλά βρίσκεται σε μια άλλη θέση μέσα στη γραμμή, οτιδήποτε μετά απ αυτό και μέχρι το τέλος της γραμμής θεωρείται σχόλιο. π.χ. A = B + C! Βρίσκουμε το άθροισμα των δύο αριθμών 4-11 4-12 Πανεπιστήμιο Κύπρου 3
Σύνταξη (συνέχεια) Η γραμμή μπορεί να αρχίζει σε οποιαδήποτε στήλη Μια έκφραση μπορεί να συνεχίζεται στην επόμενη γραμμή όταν ο τελευταίος, μη κενός, χαρακτήρας είναι το &. π.χ. EMBADON = MHKOS * & PLATOS Μια γραμμή μπορεί να περιέχει πολλές εκφράσεις ή προτάσεις, αρκεί να χωρίζονται μεταξύ τους με τον χαρακτήρα ; π.χ. READ *, B, C; Α = Β + C ; PRINT *, A FORTRAN 77: Περιοριστική Σύνταξη Στήλες 1 6: Άδειες. Αν περιέχουν C ή c ή *, όλη η γραμμή θεωρείται σχόλιο Στήλες 7 72: Εκφράσεις και προτάσεις Στήλες 73 : Αγνοούνται 4-13 4-14 Απόλυτα απαραίτητες εντολές / προτάσεις σε ένα πρόγραμμα FORTRAN [PROGRAM [όνομα προγράμματος]].. END [PROGRAM [όνομα προγράμματος]] Σαν συνιστώ να δίνεται στο αρχείο που περιέχει το πρόγραμμα σας, το ίδιο όνομα με το όνομα του προγράμματος. π.χ. Όνομα προγράμματος: circle (PROGRAM circle) Όνομα αρχείου: circle.f 4-15 Σύνταξη εκφράσεων Όνομα μεταβλητής ή σταθεράς = δεδομένα = ή συνδυασμός δεδομένων και τελεστών 4-16 π.χ. MHKOS = 23 PLATOS = 45 EMBADON = MHKOS * PLATOS PERIFERIA = 2 * MHKOS + 2 * PLATOS εδομένα: μεταβλητές και σταθερές Πανεπιστήμιο Κύπρου 4
Απλό πρόγραμμα FORTRAN PROGRAM Embadon REAL EMBADON, MHKOS, PLATOS READ *, MHKOS, PLATOS EMBADON = MHKOS * PLATOS PRINT *, EMBADON END PROGRAM Embadon (Απλή) Είσοδος READ *, λίστα Η λίστα μπορεί να περιέχει ονόματα μεταβλητών ή επώνυμων σταθερών, οποιουδήποτε τύπου χωρισμένα με κόμμα Το πρόγραμμα περιμένει μέχρι να δώσουμε όλες τις τιμές μς Στη θέση του * μπορούμε να ορίσουμε κάποιο νούμερο που να αντιπροσωπεύει μια συγκεκριμένη πηγή εισόδου (π.χ. αρχείο) Default: ιαβάζει από το πληκτρολόγιο 4-17 4-18 (Απλή) Έξοδος PRINT *, λίστα Η λίστα μπορεί να περιέχει ονόματα μεταβλητών ή επώνυμων σταθερών ή ρητών σταθερών (τιμές), οποιουδήποτε τύπου, ή κείμενο σε εισαγωγικά, χωρισμένα με κόμμα 4-19 π.χ. PRINT *, Το εμβαδόν είναι, EMBADON Στη θέση του * μπορούμε να ορίσουμε κάποιο νούμερο που να αντιπροσωπεύει μια συγκεκριμένη πηγή εξόδου (π.χ. αρχείο) Default: Τυπώνει στην οθόνη Παράδειγμα 1 Program test1 implicit none real num1 real num2 real::sum1,mult1 Print*,"Dose to number1" Read*,num1 Print*,"Dose to number2" Read*,num2 sum1=num1+num2 mult1=num1*num2 Print*,sum1 Print*,mult1 End test1 4-20 Πανεπιστήμιο Κύπρου 5
Παράδειγμα 2!Mathima:EPL031_2010!Programma: Test!Skopos: Ypologismos pithagorio theorima!sygrafeas:!analusi provlimatos:to programma dexetai ws! dedomena tis 2 kathetes pleures,kai upologizoume! tin upotinousa!eisagomena:pleura1 kai pleura2 se metra!eksagomena:ypotinousa metra Program test Implicit None!Dilwsi metablitwn Real pleura1 Real::pleura2,Ypotinousa!Zhtoume apo ton xristi na mas dwsei tis 2 pleures Print*,"Dwse thn pleura 1 se metra:" Read*,pleura1 Print*,"Dwse tin pleura 2 se metra:" Read*,pleura2!ypologismos pithagoreiou theorimatos Ypotinousa=sqrt(pleura1**2+pleura2**2)!Ektypwsi apotelesmatwn Print*,"Ypotinousa einai: ", Ypotinousa, se metra" End program test Παράδειγμα 3!Mathima:EPL031!Programma: Ergasia!Skopos: Ypologismos embadou kai ogkou kwnou!me kuklikh vasi!sygrafeas:!hmeromhnia:!analusi provlimatos:to programma dexetai ws!dedomena thn aktina vasis, to ipsos tou kwnou kai!upologizei to mikos ths pleuras, to embado kai ton! ogko tou kwnou me kuklikh vash!eisagomena:aktina,ipsos se metra!eksagomena:embado se tetragwnika metra kai!ogkos se kuvika metra Program kwnos Implicit None!Dilwsi metablitwn Real::aktina,ipsos,pleura,embado,ogkos Real, parameter::pi=3.14159!zhtoume apo ton xristi na mas dwsei thn aktina! Vashs, kai to ipsos tou kwnou se metra Print*,"Dwse thn aktina vashs tou kwnou se metra:" Read*,aktina Print*,"Dwse to ipsos tou kwnou se metra:" Read*,ipsos!ypologismos mikous pleuras tou kwnou me xrisi tou!pithagoreiou theorimatos pleura=sqrt(aktina**2+ipsos**2)!ypologismos embadou kai ogkou tou kwnou embado=pi*aktina*(pleura+aktina) ogkos=pi*ipsos*aktina**2*1.0/3.0!ektypwsi apotelesmatwn Print*,"To embado tou kwnou einai ",embado," tetragwnika metra" Print*,"O ogkos tou kwnou einai ",ogkos," kyvika metra " End program kwnos 4-21 4-22 Περίληψη Αλφάβητο της FORTRAN Λέξεις και Εντολές Προτάσεις και Εκφράσεις Μεταβλητές και Σταθερές Σύνταξη της FORTRAN Ένα απλό πρόγραμμα FORTRAN PRINT και READ 4-23 Πανεπιστήμιο Κύπρου 6