ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Σχετικά έγγραφα
ΦΥΣ-151: HΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Ι ΕΣΑΓΩΓΗ ΣΤΗ FORTRAN 77

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Κεφάλαιο 8ο: Αρχεία. 8.1 Τι είναι αρχείο;

Το πλήθος των δεικτών και οι µεγαλύτερες τιµές που µπορούν να πάρουν ορίζεται µε µία δηλωτική εντολή που λέγεται Dimension.

8 FORTRAN 77/90/95/2003

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 5ο: Εντολές Επανάληψης

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 13 Μαρτίου 2010 Οµάδα

- program p_name(input) - uses crt

Εισαγωγή στη χρήση Η/Υ. Αναγνωστοπούλου Χριστίνα Λέκτορας

Κεφάλαιο 3ο: Βασικά στοιχεία ενός προγράµµατος της γλώσσας Fortran

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Δομή προγράμματος στη Fortran

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

Μονοδιάστατοι πίνακες

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Fortran και Αντικειμενοστραφής προγραμματισμός.

Δομή προγράμματος στη Fortran

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Είσοδος -Έξοδος. Άνοιγµα αρχείου:

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

CE 120. Φροντιστήριο 14/10/2011

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Περιεχόµενα Περιεχόµενα iii 1 Εισαγωγή STOP

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

LAB1 ΛΥΣΗ. Ευρετήριο απαντήσεων ανά τµήµα: Ευρετήριο απαντήσεων ανά µήνυµα λάθους/προειδοποίησης

scanf() scanf() stdin scanf() printf() int float double %lf float

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

Ο τελεστής ανάθεσης και οι εντολές εισόδουεξόδου

Μονοδιάστατοι πίνακες (συνέχεια)

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

Υπο-προγράμματα στη Fortran

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

2.2.3 Η εντολή Εκτύπωσε

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Τύποι Δεδομένων Είσοδος/Έξοδος

0.1 Εκχειλίσεις κατά την Επίλυση Τετραγωνικής Εξίσωσης

Υπολογιστές Ι. Άδειες Χρήσης. Πολυδιάστατοι πίνακες. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Fortran και Αντικειµενοστραφής προγραµµατισµός.

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

επιµέλεια Θοδωρής Πιερράτος

Ενότητα 1 Διάλεξη 4. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

a = 10; a = k; int a,b,c; a = b = c = 10;

Επεξεργασία Αρχείων Κειµένου

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 10/12/2014, 22:00

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

- program p_name(output); - uses crt;

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Μονοδιάστατοι πίνακες

Ασκήσεις Γενικά Μαθηµατικά Ι Οµάδα 5 (λύσεις)

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Διαδικασιακός Προγραμματισμός

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Χωρική Βάση δεδοµένων Autocad

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ

3 Αναδροµή και Επαγωγή

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Oι εντολές COMMON και PARAMETER

ΕΙΣΑΓΩΓΗ ΣΤΗΝ FORTRAN 77

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

Transcript:

32 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 5 5.1 Ι ΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Εκτός από τους µονοδιάστατους πίνακες ή διανυσµατα που συζητήσαµε στην παράγραφο 4.1, µπορούµε να αποθηκεύσουµε τιµές και σε διδάστατους πίνακες. Τους διδιάστατους πίνακες στη FORTRAN 77 µπορεί κανείς να τους µεταχειρίζεται για ευκολία, όπως και τους αντίστοιχους πίνακες που χρησιµοποιούµε στην αλγεβρα. Για παράδειγµα, στην άλγεβρα ο παρακάτω πινακας 1 A = 5 9 2 6 10 3 7 11 4 8 12 είναι 3x4 και εννοούµε ότι έχει 3 γραµµές και 4 στήλες. Επίσης µπορούµε να αναφερόµαστε συµβολικά σε καθε στοιχείο του ώς Α i,j, όπου το i είναι η γραµµή και το j η στήλη στην οποία βρίσκεται το συγκεκριµένο στοιχείο. Παραδείγµατος χάριν, το στοιχείο του πινακα που βρίσκεται στην 2 η γραµµη και στην 3 η στήλη συµβολίζεται Α 2,3 και είναι είναι το 7. Στη FORTRAN 77 η διαδικασία που ακολουθείται για τη χρησιµοποποίηση ενός διδιάστατου πίνακα είναι αντίστοιχη µε αυτή που µάθαµε στους µονοδιάστατους. Για παράδειγµα ο παραπάνω πίνακας δηλώνεται ως εξής: Real A(4,6) ηλαδή, αρχικά προηγείται η δήλωση του τύπου (real, integer κτλ) του πίνακα και στη συνέχεια δίνουµε το όνοµά του και µέσα σε παρενθέσεις ορίζουµε πόσες γραµµές και στήλες θέλουµε να έχει ο πίνακας, χωρισµένες µε κοµµα (,). Επίσης, όπως και στους µονοδιάστατους πίνακες, οι δείκτες των γραµµών και των στηλών µπορούν να πάρουν και αρνητικές τιµές, πχ ο πίνακας Real x(0:4, -1:7) είναι ένας πραγµατικός πίνακας µε 5 γραµµές (0,1,2,...,5) και 9 στήλες (-1,0,1,...,7), δηλαδή έχει 5x9=45 στοιχεία. ΠAΡΑ ΕΙΓΜΑ 1 Γράψτε µία υπορουτίνα που να υπολογίζει το ελάχιστο στοιχείο ενός διδιάστατου πίνακα και να προσδιορίζει και την θέση του µέσα σε αυτόν. subroutine Min2D(N,M,A,amin,imin,jmin)

33 implicit none real A(N,M), Amin integer imin,jmin Amin=A(1,1) do i=1,n do j=1,m If(A(i,j).lt.Amin) then Amin=A(i,j) imin=i jmin=j endif return end 5.1.1 Ανάγνωση απο τό πληκτρολόγιο και εκτύπωση στην οθόνη των στοιχείων ενός διδιάστατου πινακα Για να διαβάσουµε τα στοιχεία ενος πίνακα από το πληκτρολόγιο ο πιο βολικός τρόπος είναι µε ένα διπλο do-loop: do i=1,3 do j=1,4 print*, ώστε το, i,j, στοιχείο του πίνακα read*, A(i,j) Η εκτύπωση στην οθόνη των στοιχείων του πίνακα είναι λίγο πιο πολύπλοκη υπόθεση. Αν χρησιµοποιήσουµε το παραπάνω διπλό do-loop, δηλαδή do i=1,3 do j=1,4 print*, A(i,j) τότε ο υπολογιστής θα τυπώσει: 1 2 3.. 11 12 δηλαδή ένα στοιχείο σε κάθε γραµµη. Όµως αυτό δεν µας δίνει οπτικά την δυνατότητα να ελέγξουµε άµεσα τα στοιχεία του πίνακα. Ένας εναλλακτικός τρόπος

34 που µας δίνει αυτη τη δυνατότητα είναι το λεγόµενο έµµεσο do-loop. Πιο συγκεκριµένα, αν γράψουµε C do I=1,3 εµµεσο do-loop print*, (A(i,j), j=1,4) τότε το αποτέλεσµα θα είναι το επιθηµητό, δηλαδή 1 2 3 4 5 6 7 8 9 10 11 12 που σαφώς είναι καλύτερη παρουσίαση ενός διδιάστατου πίνακα. Με άλλα λόγια, το έµµεσο do-loop µας επιτρέπει να τυπώσουµε ένα συνόλο στοιχείων ενός πίνακα στην ίδια γραµµή. Στην πραγµατικότητα, σε κάθε γραµµή µπορούµε να τυπώσουµε µόνο τόσους αριθµούς όσους επιτρέπει ο συγκεκριµένος compiler που χρησιµοποιούµε. Αν οι αριθµοί που θέλουµε να εµφανίσουµε σε κάθε γραµµη είναι περισσότεροι από αυτούς που επιτρέπει ο compiler, τότε η εκτύπωση συνεχίζεται στην επόµενη γραµµή. Για να εκτυπώσουµε όσα δεδοµένα εµείς θέλουµε σε κάθε γραµµη, τότε πρέπει να χρησιµοποιήσουµε την εντολή format που θα µάθουµε παρακάτω. Για τη σύνταξη του διπλού έµµεσου do-loop βλ. σηµειώσεις µαθήµατος και την αναφορά [1] σελ 117 5.2 ΜΕΤΑΒΛΗΤΕΣ (ΜΕΡΟΣ ) 5.2.1 Πραγµατικοί αριθµοί διπλής αρκίβειας (double precision) Μέχρι στιγµής έχουµε µάθει να χρησιµοποιούµε πραγµατικούς αριθµούς µε ακρίβεια έως και το 8 ο δεκαδικό ψηφίο. Η FORTRAN 77 µας δίνει τη δυνατότητα να χρησιµοποιούµε και πραγµατικούς αριθµούς µε ακρίβεια 16 ου δεκαδικού ψηφίου. Οι µεταβλητές αυτές ονοµάζονται διπλής ακρίβειας (double precision) και δηλώνονται ως εξής: double precision x,y ή real*8 x,y Όταν θέλουµε να αποδώσουµε µία τιµή σ ένα πραγµατικό αριθµό διπλής ακρίβειας, τότε αυτός πρέπει πάντα να έχει την κατάληξη D0. Για παράδειγµα, τον αριθµό 1.321 πρέπει να τον γράψουµε ώς: X=1.321D0 Άλλοι τρόποι να γράψουµε τον παραπάνω αριθµό είναι: X=13.21D-1 ή x= 132.1D-2 ή Χ=0.1321D+1 ή x=0.01432d+2 κοκ

35 ηλαδή, όπως καταλάβατε, το ±n D ± n είναι ισοδύναµο µε το 10. ΠΡΟΣΟΧΗ: Αν δεν χρησιµοποιήσουµε την καταληξη D, τότε ο υπολογιστής θα τον αναγνωρίσει ώς πραγµατικό αριθµό απλής ακρίβειας. εν συµβαίνει όµως το ίδιο και όταν δίνουµε την τιµή από το πληκτρολόγιο. Αν έχουµε δηλώσει τη µεταβλητή που θέλουµε να διαβάσουµε ως double precision, τότε ο υπολογιστής θα µετατρέψει αυτόµατα τον αριθµό που του δίνουµε, είτε αυτός είναι ακέραιος (χώρις τελεία) είτε πραγµατικός απλής ακρίβειας (µε τελεία), σε πραγµατικό διπλής ακρίβειας ακόµα και όταν δεν χρησιµοποιήσουµε την κατάληξη D. Αν κάνουµε πράξεις µεταξύ πραγµατικών αριθµών απλής και διπλής ακρίβειας, τότε το λάθος της απόκοπής ψηφίου στον πραγµατικό αριθµό απλής ακρίβειας προστίθεται στο τελικό µας αποτέλασµα. Αυτός είναι ένας ακόµα λόγος για τον οποίο πρέπει να αποφεύγουµε πραξεις µεταξύ µεταβλητών διαφορετικού τύπου. Η µετατροπή ενός real αριθµού x σε double precision γινεται µε τη συνάρτηση Dble(x) 5.2.2 Μιγαδικοί αριθµοι (complex) Ένας µιγαδικός αριθµός w στα µαθηµατικά γραφεται ώς w=a+ib, όπου το a ονοµάζεται πραγµατικό µέρος και το b φανταστικό µέρος του µιγάδικού αριθµού. Στη FORTRAN 77 η δήλωση των µιγαδικών αριθµών γίνεται ως εξής: Complex w ή Complex*8 w Στην πρώτη περίπτωση έχουµε δηλώσει ένα µιγαδικό αριθµό w, όπου το πραγµατικό και το φανταστικό µέρος είναι απλής ακρίβειας, ενώ στη δεύτερη διπλής ακρίβειας. Αν, για παράδειγµα, θέλουµε να δώσουµε στον υπολογιστή το µιγαδικό αριθµό 2.1+3i γράφουµε το εξής: Complex w W=(2.1,3) Ο πρώτος αριθµός µέσα στις παρενθέσεις αντιστοιχεί στο πραγµατικό µέρος, ενώ ο δεύτερος στο φανταστικό. Με τον ίδιο τρόπο θα τυπωθεί και ένας µιγαδικός αριθµός µε την εντόλή print. Αν θέλουµε να αποµονώσουµε το πραγµατικό µέρος του µιγαδικού αριθµού w, γράφουµε Real(w) ενώ για το φανταστικό

36 Imag(w) Το µέτρο ενός µιγαδικού αριθµού w δίνεται απο τη συνάρτηση Abs(w) Στη FORTRAN 77 µπορουµε να κάνουµε και πράξεις µεταξύ µιγαδικών αριθµών χωρίς κανένα πρόβληµα. 5.3 ΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ Πολλες φορές µας παρουσιάζεται το πρόβληµα να πρέπει να διαβάσουµε από το πληκτρολόγιο ή να εµφανίσουµε στην οθόνη πάρα πολλά δεδοµένα. Σ αυτή την περίπτωση είναι πολύ πιο βολικό να χρησιµοποιούµε τη δυνατότητα που µας παρέχει η FORTRAN 77 να διαβάζουµε ή να αποθηκεύουµε δεδοµένα σ ενα αρχείο. Παρακάτω παρουσιάζουµε συνοπτικά τη διαδικασία που ακολουθείται για τη χρήση αρχείων σ ενα προγραµµα. 5.3.1 Open Η εντολή open µας δίνει την δυνατότητα να ανοίξουµε τα αρχεία. Ουσιαστικά υποδεικνύουµε στον υπολογιστή από ποιο αρχείο θα διαβάζει ή θα αποθηκεύσει τα δεδοµένα. Η πιο απλή συνταξη του open είναι: open (αριθµός, file = όνοµα αρχείου ). Στη θέση του αριθµού βάζουµε πάντα ενα θετικό ακέραιο, ο οποίος αντιστοιχει στο αρχείο που θέλουµε να ανοίξουµε, ενώ στο όνοµα αρχείου βάζουµε το όνοµα του αρχείου πάντα µέσα σε µονά εισαγωγικά. Ο ακέραιος αυτός χρησιµοποιείται απο τον υπολογιστή για να αναφέρεται στο συγκεκριµένο αρχείο στις εντολες write και read, όπως θα δούµε παρακάτω. Μερικα παραδειγµατα για την εντολή open: Open (1,file= data.in ) Open (33,file= outputs ) Σε κάθε πρόγραµµα FORTRAN µπορούµε να ανοίξουµε αρκετά αρχεία, αλλά κάθε ένα απο αυτά πρέπει να έχει ένα διαφορετικό αριθµό. Αν το αρχείο δεν υπαρχεί, τότε η υπολογιστής θα το δηµιουργήσει, ενώ αν υπάρχει θα το διαγράψει και θα δηµιουργήσει ένα αλλο µε το ίδιο όνοµα. Γι αυτό πρέπει να είστε προσεκτικοί ώστε να µη δίνετε ονόµατα αρχείων που σας είναι χρήσιµα. 5.3.2 Close Η εντολή close χρησιµποιείται για να κλείσουµε τα αρχεία που έχουµε ήδη ανοίξει, δίνοντας απλά τον αριθµό του αρχείου µέσα σε παρένθεση. Για παράδειγµα Close (1) Close (33) Αν κλείσουµε ένα αρχείο, τότε µπορούµε να χρησιµοποιήσουµε τον ίδιο αριθµό για ένα άλλο αρχείο που σκοπέυουµε να ανοιξουµε στη συνέχεια του πρόγραµµατος. Να

37 σηµειώσουµε ότι δεν είναι απαραίτητο να κλείνετε τα αρχεία. Όλα τα αρχεία τα κλείνει αυτόµατα ο υπολογιστής όταν τελειώσει το προγραµµα. Παρόλα αυτά ειναι καλύτερο να τα κλείνετε, όταν δεν τα χρειάζεστε πια, ιδιαίτερα σε περιπτώσεις όπου χρησιµποποιέιτε πόλλα αρχεία και υπάρχει µεγάλος κίνδυνος να µπερδέψετε τους αριθµούς τους. 5.3.3 Write Ένα άλλος τρόπος να τυπώσουµε τα δεδοµένα στην όθόνη, είναι µε την εντόλη write: Για παράδειγµα, το Write(*,*) Το εµβαδόν του κύκλου είναι,emvadon είναι ισοδύναµο µε το Print*, Το εµβαδόν του κύκλου είναι,emvadon To δεύτερο αστεράκι * στην σύνταξη του write είναι ισοδύναµο µε το * του print και αναφέρεται στο ότι ο υπολογιστής θα χρησιµοποιήσει ένα δικό τρόπο παρουσίασης των αποτελεσµατων. Αργότερα θα µάθουµε πως µπορούµε να υποδεικνύουµε εµείς στον υπολογιστή τον τρόπο µε τον οποίο να παρουσιάσει (ή και να διαβάσει) τα δεδοµένα του προγράµµατος (βλ. εντολή format). Tο πρώτο αστεράκι στο write σηµαίνει οτι ο υπολογιστής θα τυπώσει τα δεδοµένα στην οθόνη. Αν αντικαταστήσουµε το αστεράκι µε τον αριθµό ενός αρχείου που έχουµε ανοίξει, τότε τα αποτελέσµατα θα καταγραφούν στο συγκεκριµένο αρχείο. Για παράδειγµα, αν γράψουµε Open (1,file= data.out ) Write (1,*) Το εµβαδόν του κύκλου είναι,emvadon Close (1) τότε το αποτέλεσµα θα τυπωθεί στο αρχείο data.out 5.3.4 Read H εντολή read(*,*) είναι ισοδύναµη µε την read*, Όπως και στην εντολή write(*,*), έτσι και εδώ το δεύτερο αστεράκι αναφέρεται στο format που θα χρησιµποιήσουµε για να διαβάσουµε τα δεδοµένα, ενώ το πρώτο * υποδεικνύει ότι τα δεδοµένα θα δοθούν από το πληκτρολόγιο. Αν αντικαταστήσουµε το πρώτο * µε τον αριθµό ενος αρχειου, τότε ο υπολογιστής θα διαβάσει τα δεδόµένα απο το συγκεκριµένο αρχείο. ΠΑΡΑ ΕΙΓΜΑ 1 Υποθέστε ότι έχουµε δηµιουργήσει το αρχείο dadta.in και το οποίο περιέχει τους παρακάτω αριθµούς 11.0 3. 4. 0.1 8. 14. Αν θέλουµε να διαβάσουµε αυτούς τους αριθµούς και να δώσουµε τις τιµές του σε έξι διαφορετικές µεταβλητές, πρέπει να γράψουµε:

38 Real a,b,c,d,e,f Open(1,file= data.in ) Read(1,*) a,b,c Read(1,*) c, d, f και τότε οι µεταβλητές µας θα έχουν τις εξής τιµές: a=11.0 b= 3. c= 4. d= 0.1 e =8. f=14. ηλαδή, όπως καταλάβατε, κάθε φορά που χρησιµοποιούµε την εντολή read, ο υπολογιστής διαβάζει δεδοµένα από µία γραµµή µόνο. Αν γράφαµε Read(1,*) a,b Read(1,*) d, f τότε οι τιµές των µεταβλητών θα ήταν: a=11.0 b= 3. d= 0.1 f=8. ενώ οι c και e δεν θα είχαν τιµές (ο υπολογιστής θα αγνοούσε τον τρίτο αριθµό της κάθε γραµµής) ΠΑΡΑ ΕΙΓΜΑ 2 Έστω ότι έχετε ενα αρχείο µέ όνοµα input και το οποίο περιέχει 30 αριθµούς (ένα σε κάθε γραµµη). Για να διαβάσετε τους αριθµούς αυτούς και να αποδώσετε τις τιµές τους σ ενα µονοδιάστατο πίνακα πρέπει να γράψετε: Real A(30) Open (1,file= inputs ) Do I=1,30 Read(1,*) A(i) Enddo Close(1) ΠΑΡΑ ΕΙΓΜΑ 3 Ας υποθέσουµε ότι στο παραπάνω παράδειγµα δεν γνωρίζαµε το πλήθος το γράµµων. Μία διαφορέτική συνταξη του read µας δίνει τη δυνατότητα να διαβάζουµε δεδοµένα από ενα αρχείο µέχρι ο υπολογιστής να φτάσει στο τέλος του. Real A(1000) Integer I,Ν Open(1,file= inputs ) Ν=0 Do Read(1,*,END=10) A(i) Ν=Ν+1 Enddo 10 continue Στο παραπάνω πρόγραµµα ο υπολογιστής θα διαβάζει ένα αριθµό από κάθε γραµµή και µόλις συναντήσει το τέλος του αρχείου θα πάει στη εντολή continue. Ο µετρητής Ν τελικά µας δίνει το πλήθος των γραµµών του αρχείου. ΠΑΡΑ ΕΙΓΜΑ 2 Έστω ότι έχετε ένα αρχείο που περιέχει 15 αριθµούς τοποθετηµένους σε 3 γραµµές και 5 στήλες. Ένας τρόπος να διαβάσετε τους αριθµούς

39 αυτούς και να απόδώσετε τις τιµές τους σ ενα διδιάστατο πίνακα είναι µε τη χρήση έµµεσου do-loop Real A(3,5) Integer i,j Open (8,file= D2.in ) Do I=1,3 Read(8,*) (A(i,j),j=1,5) Enddo Close (8) ΕΝΤΟΛΕΣ character, format, data, common, και intrinsic, external functions Για τις παραπάνω σντολές µελετήστε τις σηµειώσεις του µαθήµατος και τις παρακάτω αναφορές character [1] σελ. 110 [2] σελ. 242 [3] σελ. 290, 316 format [2] σελ. 83 [3] σελ. 183 data [1] σελ. 131 [2] σελ.117 [3] σελ. 53, 124 common [1] σελ. 94 [2] σελ. 175 [3] σελ. 385 intrinsic, external functions [3] σελ. 408 ΒΙΒΛΙΟΓΡΑΦΙΑ [1] «Το πρώτο βιβλίο της FORTRAN 77», John Shelley, εκδόσεις Μ. Γκιούρδας. [2] «FORTRAN», Σωτήριος Περσίδης, εκδόσεις Ι ΕΑ [3] «FORTRAN 77 programming», T. M. R. Ellis, Addison-Wesley publishing company