1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει να εκτελέσει ο υπολογιστής για την επίλυση ενός προβλήµατος. Οπως και οι κοινές γλώσσες, έτσι και οι γλώσσες προγραµµατισµού αποτελούνται από ένα συγκεκριµένο σύνολο χαρακτήρων µε τη βοήθεια των οποίων µπορούµε να δηµιουργήσουµε «λέξεις» (εντολές ή συµβολικά ονόµατα) ή να γράψουµε αριθµητικές παραστάσεις. Οι επιτρεπόµενοι χαρακτήρες στη FORTRAN 77 είναι: 1. τα 26 γράµµατα του αγγλικού αλφάβητου (κεφαλαία και µικρά) 2. τα ψηφία 0,1,2,...,9 3. τα σύµβολα: + - * / = ( )., _ 4. το κενό ΠΑΡΑΤΗΡΗΣΕΙΣ 1. Η FORTRAN 77 δεν κάνει διαχωρισµό µεταξύ κεφαλαίων και µικρών γραµµάτων. Για παράδειγµα, η εντολή print*,sum µπορεί να γραφτεί και ως PrINt*, Sum ή print*,sum κοκ 2. Τα κενά δε λαµβάνονται υπ όψιν από τον υπολογιστή. Για παράδειγµα το print*, sum είναι ισοδύναµο µε το pr in t *, Su m 3. Τα συµβολικά ονοµατα επιλέγονται ελεύθερα από τον προγραµµατιστή αλλά πρέπει να πληρούν ορισµένους κανόνες. Πιο συγκεκριµένα: a) Τα συµβολικά ονόµατα µπορούν να περιέχουν µέχρι 31 χαρακτήρες.
2 b) Oi επιτρεπόµενoi χαρακτήρες είναι: όλα τα γράµµατα του αγγλικού αλφάβητου (κεφαλαία και µικρά), οι αριθµοί 0,1,2,...,9 και το _ (underscore) c) Ο πρώτος χαρακτήρας κάθε ονόµατος ΠΡΕΠΕΙ να είναι γράµµα 1.1.1 ΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Η δοµή ενός πρόγραµµατος στη FORTRAN 77 έχει ως εξής: program name δήλωση µεταβλητών εντολές end ΠΑΡΑΤΗΡΗΣΕΙΣ 1. Ένα πρόγραµµα στη FORTRAN 77 ξεκινάει µε την εντολή program και τελειώνει µε την εντολή end. Μεταξύ των εντολών αυτών υπάρχουν: αρχικά η δήλωση των µεταβλητών και στη συνέχεια οι υπόλοιπες εντολές. 2. Η εντολή program συνοδεύεται πάντα από ένα συµβολικό όνοµα (βλ. 1.1) 3. Η εντολή τερµατίζει την εκτέλεση του προγράµµατος σε όποιο σηµείο υπάρχει. Η χρήση του πριν το end είναι προαιρετική, µια και η εκτέλεση του πρόγραµµατος θα σταµατήσει ούτως ή άλλως µόλις συναντήσει την εντολή end. Όµως στο παράδειγµα που ακολουθεί program name δήλωση µεταβλητών εντολή1 εντολή2 εντολή3 end το πρόγραµµα θα σταµατήσει στο πρώτο που θα συναντήσει, δηλ. ακριβώς πριν από την εντολή3. 1.1.2 ΚΑΝΟΝΑΣ ΤΩΝ ΣΤΗΛΩΝ Ο κώδικας στη FORTRAN πρέπει να γράφεται µε ένα συκγεκριµένο τρόπο στο αρχείο που θα τον αποθηκεύσουµε. Πιο συγκεκριµένα:
3 1. Οι εντολές γράφονται µεταξύ των στηλών 7 72 της κάθε γραµµής. 2. Αν υπάρχει ο χαρακτήρας c (ή το *) στην στήλη 1, τότε ότι κι αν γράψουµε στη γραµµή αυτή είναι σχόλιο και δε λαµβάνεται υπ όψιν απο τον υπολογιστή 3. Αν στην στήλη 6 υπάρχει οποιοδήποτε σύµβολο (συνηθίζεται το &), τότε η γραµµή αυτή θεωρείται συνέχεια της προηγούµενης. Αυτό συνήθως το χρησιµοποιουµε όταν η εντόλη που γραφουµε σε µία γραµµη υπερβαίνει τη στήλη 72. 4. Στις στήλες 2-5 µπαίνουν (αν είναι αναγκαίο) αριθµητικές (ακέραιες) ετικέτες. 1.1.3 ΕΝΑ ΑΠΛΟ ΠΑΡΑ ΕΙΓΜΑ 123456789... program circle c Το πρόγραµµα αυτό διαβάζει από το πληκτρολόγιο την ακτίνα ενός κύκλου c και υπολογίζει την περίµετρο και το εµβαδόν του c c ΜΕΤΑΒΛΗΤΕΣ c r (input) ακτίνα του κύκλου c perimetros (output) περίµετρος του κύκλου c emvadon (output) εµδαδόν του κύκλου real r, perimetros, emvadon print*, ώστε την ακτίνα του κύκλου read*, r perimetros = 2.*3.14*r emvadon = 3.14*r**2 print*, Η περίµετρος του κύκλου είναι:, perimetros print*, Το εµβαδόν του κύκλου είναι:, emvadon end 1.2 ΑΛΓΕΒΡΙΚΕΣ ΠΡΑΞΕΙΣ Οι αριθµητικοί τελεστές ειναι οι: + (πρόσθεση) - (αφαίρεση) * (πολλαπλασιασµός) / (διαίρεση)
4 ** (ύψωση σε δύναµη) Για παράδειγµα η παρακάτω µαθηµατική έκφραση: a + b 2 c ( a + b) + + d c στην FORTRAN 77 γράφεται ως c*(a+b) + (a+b)/c + d**2 ΠΑΡΑΤΗΡΗΣΗ Οι αλγεβρικές πράξεις εκτελούνται µε την εξής σειρά προτεραιότητας: 1. ύψωση σε δύναµη 2. πολλαπλασιασµός ή διαίρεση 3. πρόσθεση ή αφαίρεση Παραδείγµατα: 2*3+20 = 6+20 = 26 2+100/20 = 2+5 = 7 5+6*3**2 = 5+6*9 = 5+54 = 59 Πρώτες εκτελούνται οι πράξεις µέσα στις παρενθέσεις µε τη σειρά που αναφέραµε προηγουµένως. Για παράδειγµα: (2*3**2 +1)*2-6 = (2*9+1)*2-6 = (18+1)*2-6 = 19*2-6 = 38-6 = 32 1.3 ΜΕΤΑΒΛΗΤΕΣ (ΜΕΡΟΣ A) H FORTRAN 77 κάνει αυστηρό διαχωρισµό µεταξύ των πραγµατικών αριθµών (αριθµών µε δεκαδικό ψηφίο) και των ακεραίων αριθµών ( αριθµών χωρίς δεκαδικό ψηφιο). Για παράδειγµα, οι αριθµοί: 23-100 2341 10000000001 είναι ακέραιοι, ενώ οι 23. 1.0000.00231-192. 134.2345 είναι πραγµατικοί. Μπορεί οι αριθµοί 23 και 23. να είναι ακριβώς η ίδια τιµή, ωστόσο στη FORTRAN 77 αντιµετωπίζονται τελείως διαφορετικά, γιατί αποθηκεύονται µε διαφορετικό τρόπο στη µνήµη του υπολογιστή.
5 1.4.1 ΤΥΠΟΙ ΜΕΤΑΒΛΗΤΩΝ Οι τύποι µεταβλητών που υποστηρίζει η FORTRAN 77 είναι: 1. integer (ακέραιοι) 2. real (πραγµατικοί, ακρίβεια µέχρι 8 ο δεκαδικό ψηφίο) 3. double precision (πραγµατικοί, ακρίβεια µέχρι 16 ο δεκαδικό ψηφίο) 4. complex (µιγαδικοί) 5. character (χαρακτήρες) 6. logical (λογικές, µόνο δύο τιµές true και fulse) 1.3.2 ΗΛΩΣΗ ΜΕΤΑΒΛΗΤΩΝ 1. Ρητή δήλωση type λίστα µεταβλητών π.χ: integer a1, sum, count real energy, sum, r 2. Aυτονόητη (implicit) δήλωση Σε περίπτωση πoυ δεν ορίσουµε ρητά τον τύπο των µεταβλητών η FORTRAN 77 έχει την δυνατότητα να ταξινοµίσει τις µεταβλητές αυτόµατα. Πιο συγκεκριµένα, όσες µεταβλητές αρχίζουν από i, j, k, l, m,n είναι ακέραιοι (πχ isum, icount), ενώ όσες αρχίζουν απο τα υπόλοιπα γράµµατα του αγγλικού αλφάβητου, δηλ. a-h and o-z, είναι πραγµατικοί (π.χ sum, x, func) 1.3.3 ΕΚΧΩΡΗΣΗ ΤΙΜΗΣ ΣΤΙΣ ΜΕΤΑΒΛΗΤΕΣ Μια µεταβλητή µπορεί να πάρει κάποια συκγεκριµένη τιµή ως Μεταβλητή = αριθµητική παράσταση Για παράδειγµα a=0.5*10.**2 ή energy = 0.5*m*v**2, όπου οι µεταβλητές m και v έχουν ήδη κάποια συγκεκριµένη τιµή. Επίσης µπορούµε να δώσουµε τιµή σε µια µεταβλητή µε την εντολή read (βλ. επόµενη παράγραφο).
6 1.4 ΕΤΟΛΕΣ print ΚΑΙ read 1.4.1 Εντολή read Σύνταξη: read*, λίστα µεταβλητών Με την εντολή αυτή ο υπολογιστής περιµένει να του δώσουµε από το πληκτρολόγιο µία λίστα µεταβλητων. Παράδειγµα: read*,a1, r, energy ΠΑΡΑΤΗΡΗΣΗ Υπάρχουν δυο τρόποι να εισάγουµε τις µεταβλητές από το πληκτρολόγιο: a) ίνουµε διαδοχικά όλες τις µεταβλητές χωρισµένες µε κόµµα (,) και στο τέλος παταµε enter. b) Πατάµε enter σε κάθε µεταβλητή που πληκτρολογούµε. 1.4.2 Εντολή print Σύνταξη: print*, σχόλια και/ή λίστα µεταβλητών Με την εντολή αυτή ο υπολογιστής θα τυπώσει στην οθόνη τα σχόλια και/ή τη λίστα των µεταβλητών. Παράδειγµα: print*, Το εµβαδόν του κύκλου είναι, emvadon ΠΑΡΑΤΗΡΗΣΕΙΣ 1. Τα σχόλια µπαίνουν πάντα µέσα σε µονά εισαγωγικά:...σχόλιο... 2. Τα σχόλια και οι µεταβλητές χωρίζονται πάντα µε κόµµα. 1.5 ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Συνοπτικά η διαδικασία που ακολουθείται για την εκτέλεση ενός προγράµµατος, είναι: 1. Αποθηκεύουµε τον κώδικα FORTRAN σε ένα αρχείο που έχει κατάληξη.f π.χ pogram1.f 2. Μεταφράζουµε (compile) τον κώδικα στη γλώσσα µήχανής π.χ g77 program1.f o program1.exe Το ο program1.exe δηµιουργεί το εκτελέσιµο αρχείο µε όνοµα program1.exe
7 (Σε περίπτωση που δε δώσουµε το «ο program1.exe», τότε ο µεταφραστής (compiler) θα ονοµάζει πάντα το εκτελέσιµο αρχειο ως a.out) 3. «Τρέχουµε» το εκτέλεσιµο αρχείο program1.exe ΠΑΡΑΤΗΡΗΣΗ Η κατάληξη.exe στο εκτελέσιµο αρχείο είναι προαιρετική. Απλά συνηθίζεται για να υποδεικνύει ότι το αρχείο αυτό είναι εκτελέσιµο (executable). Βουλγαράκης Νίκος (20/2/03)