8 FORTRAN 77/90/95/2003

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

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

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

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

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

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

Πρόβλημα 37 / σελίδα 207

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΘΕΜΑ Α. Λύση: 1. Σωστό, 2. Λάθος, 3. Σωστό, 4. Λάθος, 5. Λάθος. Ποια η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; Απάντηση:

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

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

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

Εισαγωγή στην Αριθμητική Ανάλυση

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Γ.Κονδύλη 1 & Όθωνος-Μαρούσι Τηλ. Κέντρο: ,

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ 2019 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ Α

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2006

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 24/04/2019

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

Α2. Δίνεται το επόμενο τμήμα προγράμματος σε ΓΛΩΣΣΑ:

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

ΘΕΜΑ Α. Μονάδες 10 Α2.

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2008

Προτεινόμενα Θέματα ΑΕΠΠ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2007

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Ένα περιοδικό για το ΑΕΠΠ Τεύχος Πανελλαδικών ΙΙ

Ανάπτυξη και Σχεδίαση Λογισμικού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 10/04/2018

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΣΑΒΒΑΤΟ 4 ΙΟΥΝΙΟΥ 2005

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2017 Β ΦΑΣΗ ÅÐÉËÏÃÇ

Συμβολικά ονόματα που δίνονται σε θέσεις μνήμης όπου αποθηκεύονται αριθμοί. ιεύθυνση

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

6. Σ 7. Λ 8. Λ 9. Λ 10. Λ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΡΟΟΔΟΣ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΟ ΜΑΘΗΜΑ Α.Ε.Π.Π. ΟΝΟΜΑ

Αριθμητική Ανάλυση & Εφαρμογές

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Απρίλης 2015

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Α2. Να αναφέρετε ονομαστικά: i) τα αλγοριθμικά κριτήρια ii) τους τρόπους αναπαράστασης αλγορίθμου. (μονάδες 10)

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

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

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Transcript:

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5. Η εκτέλεση ενός προγράμματος... 34 1.6. Λογικά λάθη προγραμμάτων... 36 1.7. Παράσταση των αριθμών... 40 ΚΕΦΑΛΑΙΟ 2: Αλγόριθμοι και Προγράμματα... 47 2.1. Εισαγωγή... 47 2.2. Περιγραφή και χαρακτηριστικά των αλγόριθμων... 49 2.3. Λογικό διάγραμμα... 51 2.4. Παραδείγματα... 56 2.5. Γλώσσες προγραμματισμού... 68 2.6. Ασκήσεις... 71 ΚΕΦΑΛΑΙΟ 3: FORTRAN... 73 3.1. Εισαγωγή... 73 3.2. Βασικές έννοιες... 78 3.3. Αριθμητικές σταθερές... 86 3.4. Μεταβλητές... 88 3.5. Αριθμητικές εκφράσεις... 90 3.6. Ασκήσεις... 96 ΚΕΦΑΛΑΙΟ 4: Ένα απλό πρόγραμμα... 99 4.1. Εντολή αντικατάστασης... 99 4.2. Αρχικές τιμές... 101 4.3. Εντολές εισόδου/εξόδου... 102 4.4. Τεχνικές εισόδου/εξόδου... 106 4.5. Βασικές εντολές ενός προγράμματος... 109 4.6. Παραδείγματα προγραμμάτων... 112 4.7. Ασκήσεις... 115

8 FORTRAN 77/90/95/2003 ΚΕΦΑΛΑΙΟ 5: Εντολές ελέγχου... 119 5.1. Εισαγωγή... 119 5.2. Εντολή απλής διακλάδωσης... 120 5.3. Διακλάδωση προς 3 διευθύνσεις... 121 5.4. Διακλάδωση προς 2 διευθύνσεις... 123 5.5. Διακλάδωση προς πολλές διευθύνσεις... 131 5.6. Εντολή ανακύκλωσης... 133 5.7. Ιδιαίτερα χαρακτηριστικά... 137 5.8. Παραδείγματα προγραμμάτων... 150 5.9. Ασκήσεις... 155 ΚΕΦΑΛΑΙΟ 6: Μεταβλητές με δείκτες... 159 6.1. Ορισμός... 159 6.2. Εντολή DIMENSION... 162 6.3. Είσοδος έξοδος πινάκων... 170 6.4. Νέες εντολές της Fortran 90/95... 172 6.5. Παραδείγματα προγραμμάτων... 178 6.6. Ασκήσεις... 184 ΚΕΦΑΛΑΙΟ 7: Eντολές τύπου... 187 7.1. Τύποι μεταβλητών... 188 7.2. Αριθμητικές εκφράσεις... 192 7.3. Υπολογισμός αριθμητικών εκφράσεων... 194 7.4. Λογικές μεταβλητές... 195 7.5. Μεταβλητές χαρακτήρων... 198 7.6. Εντολές αντικατάστασης... 204 7.7. Δημιουργία νέων τύπων δεδομένων... 205 7.8. Παραδείγματα προγραμμάτων... 209 7.9. Ασκήσεις... 214 ΚΕΦΑΛΑΙΟ 8: Είσοδος έξοδος... 217 8.1. Εισαγωγή... 218 8.2. Γενικοί τύποι για την είσοδο και έξοδο... 219 8.3. Προδιαγραφές του FORMAT... 222 8.4. Μεταβλητά FORMAT... 249 8.5. Ελεύθερο FORMAT... 253 8.6. Παραδείγματα... 255 8.7. Ασκήσεις... 260

ΠΕΡΙΕΧΟΜΕΝΑ 9 ΚΕΦΑΛΑΙΟ 9: Υποπρογράμματα... 263 9.1. Βασικές έννοιες... 264 9.2. SUBROUTINE... 268 9.3. FUNCTION... 271 9.4. Πως καλείται ένα υποπρόγραμμα... 273 9.5. Επικοινωνία υποπρογραμμάτων... 278 9.6. Δήλωση μιας συνάρτησης... 281 9.7. Νέες εντολές της Fortran 90/95... 283 9.8. Παραδείγματα προγραμμάτων... 298 9.9. Ασκήσεις... 305 ΚΕΦΑΛΑΙΟ 10: Αρχεία... 309 10.1. Γενικές έννοιες... 310 10.2. Κατηγορίες αρχείων... 315 10.3. Οργάνωση αρχείων... 318 10.4. Εντολές της FΟRΤRAN για την επεξεργασία αρχείων... 322 10.5. Παραδείγματα προγραμμάτων... 340 10.6. Ασκήσεις... 347 ΚΕΦΑΛΑΙΟ 11: Fortran 2003... 349 11.1. Εισαγωγή... 349 11.2. Αντικειμενοστραφής προγραμματισμός... 351 11.3. Είσοδος/έξοδος... 354 11.4. Ειδικές βελτιώσεις... 360 11.5. Συνεργασία με το λειτουργικό σύστημα... 365 11.6. Διαλειτουργικότητα με τη γλώσσα προγραμματισμού C... 370 11.7. Παραδείγματα προγραμμάτων... 378 ΠΑΡΑΡΤΗΜΑ Α: Εσωτερικές συναρτήσεις βιβλιοθήκης της FORTRAN 77... 385 ΠΑΡΑΡΤΗΜΑ Β: Στάνταρ συναρτήσεις βιβλιοθήκης της FORTRAN 77... 387 ΠΑΡΑΡΤΗΜΑ Γ: Συναρτήσεις της Fortran 90/95... 401 ΠΑΡΑΡΤΗΜΑ Δ: Μεταγλωττιστές της FORTRAN... 409 ΠΑΡΑΡΤΗΜΑ E: Περιεχόμενα του CD... 417 Βιβλιογραφία... 427 Ευρετήριο... 433

ΚΕΦΑΛΑΙΟ 6 ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 6.1 Ορισμός 6.2. Εντολή DIMENSION 6.3. Είσοδος-έξοδος πινάκων 6.4. Νέες εντολές της Fortran 90/95 6.5. Παραδείγματα προγραμμάτων 6.6. Ασκήσεις Σε πολλά επιστημονικά, και όχι μόνο, προβλήματα χρησιμοποιούμε συχνά πίνακες με δύο ή και περισσότερες διαστάσεις. Στον προγραμματισμό, ένας πίνακας είναι πολύ χρήσιμος για τη συστηματική επεξεργασία των δεδομένων. Στη γλώσσα FΟRΤRΑΝ κάθε μια διάσταση του πίνακα εκφράζει και μία μεταβλητή η οποία μπορεί να πάρει περισσότερες από μία τιμές. Επειδή χρειάζεται ιδιαίτερη προσοχή στη δήλωση, χρήση και επεξεργασία των πινάκων, γι' αυτό το λόγο σ' αυτό το κεφάλαιο θα μελετήσουμε αποκλειστικά τους πίνακες ή όπως συνήθως λέγονται στον προγραμματισμό των υπολογιστών, μεταβλητές με δείκτες. 6.1. Ορισμός Στον προγραμματισμό μια μεταβλητή χαρακτηρίζεται, από το συμβολικό της όνομα και από το ότι καταλαμβάνει μια μόνο θέση μνήμης του υπολογιστή ή όπως λέγεται μια "λέξη" μνήμης. Υπάρχει όμως, η δυνατότητα μ' ένα μόνο συμβολικό όνομα να ορίσουμε και μια συνεχή σειρά από θέσεις στη μνήμη. Σ' αυτή την περίπτωση το συμβολικό όνομα της μεταβλητής θα λέγεται πίνακας (Αrray). Έτσι, μία μεταβλητή η οποία καταλαμβάνει μία θέση μνήμης θα λέγεται απλή μεταβλητή και μία μεταβλητή η οποία καταλαμβάνει πολλές θέσεις μνήμης θα λέγεται μεταβλητή με δείκτες.

160 FORTRAN 77/90/95/2003 Οι δείκτες ορίζουν τις διαστάσεις του πίνακα και επιτρέπουν να βρίσκουμε το συγκεκριμένο στοιχείο του. Έτσι, η έκφραση Α(10) υποδεικνύει το δέκατο στοιχείο ενός μονοδιάστατου πίνακα και η έκφραση Β(3,5) υποδεικνύει το στοιχείο το οποίο βρίσκεται στη 3 η γραμμή και στη 5 η στήλη ενός διδιάστατου πίνακα. Όλες οι τιμές οι οποίες τοποθετούνται σ' ένα πίνακα, με οποιοδήποτε τρόπο, πρέπει να είναι ίδιου τύπου. Δηλαδή, όλες οι τιμές πρέπει να είναι ακέραιες ή οι όλες να είναι πραγματικές. Το όνομα μιας μεταβλητής με δείκτες (πίνακας), υπακούει στους ίδιους κανόνες της γλώσσας FORTRAN οι οποίο ισχύουν και για μία απλή μεταβλητή. Αν δεν οριστεί αναλυτικά, με μια δηλωτική εντολή, ο τύπος μιας μεταβλητής με δείκτες τότε, αν το όνομα αρχίζει μ ένα από τα έξι (6) γράμματα Ι, J, Κ, L, Μ, Ν, τα στοιχεία του πίνακα θα είναι ακέραιοι, διαφορετικά θα είναι πραγματικοί. Επίσης, μία μεταβλητή με δείκτη, μπορεί να αναπληρώσει μία απλή μεταβλητή παντού όπου την έχουμε συναντήσει μέχρι τώρα, εκτός από την περίπτωση των τριών παραμέτρων μιας εντολής DΟ. Μέχρι και την έκδοση της FORTRAN 77, δεν μπορούσαμε να γράψουμε τις εντολές: DΟ 10 Ι = Α(1), Α(10)................... 10 CΟΝΤΙΝUE αλλά έπρεπε να γράψουμε: Ι1 =Α(1) Ι2=Α(10) DΟ 10 Ι = Ι1, Ι2.......... 10 CΟΝΤΙΝUE Σημείωση : Ο περιορισμός αυτός δεν ισχύει στη Fortran 90/95 με την προϋπόθεση το βήμα να έχει ακέραια τιμή

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 161 Ο δείκτης ενός πίνακα μπορεί να είναι μια αριθμητική έκφραση, ακέραια ή πραγματική, η οποία αυτόματα θα πάρει την αμέσως μικρότερη ακέραια τιμή δηλαδή, γίνεται α- ποκοπή της τιμής (truncation). Π.χ. μπορούμε να γράφουμε : Κ(10), Μ(10+J), R(Α+Β-Χ), D(1+Α**2) Αν όμως, κάποιος δείκτης υπολογίζεται κατά τη διάρκεια των πράξεων του προγράμματος και πάρει τιμή εκτός των ορίων ορισμού του πίνακα τότε, θα μπορεί να συμβεί σοβαρό λάθος στην εκτέλεση των πράξεων και φυσικά, τα αποτελέσματα δεν θα είναι σωστά. Πολλές φορές, ένα παρόμοιο σφάλμα μπορεί να προκαλέσει διακοπή της εκτέλεσης των πράξεων του προγράμματος λόγω της επέμβασης σε μη επιτρεπτές περιοχές της μνήμης, ενώ άλλες φορές κάνουμε πράξεις με θέσεις μνήμης οι οποίες δεν αντιστοιχούν στον πίνακα τον οποίο έχουμε δηλώσει και άρα, ή χρησιμοποιούμε αυθαίρετες τιμές ή τοποθετούμε τιμές εκεί όπου δεν μπορούμε στη συνέχεια να τις χρησιμοποιήσουμε. Το πλήθος των δεικτών, καθώς και οι τιμές των διαστάσεων ενός πίνακα ορίζονται με τη δηλωτική εντολή DΙΜEΝSΙΟΝ. Σημείωση. Μέχρι την έκδοση της FORTRAN 66, η τιμή κάθε δείκτη έπρεπε να ήταν μεγαλύτερη ή ίση με τη μονάδα.

162 FORTRAN 77/90/95/2003 6.2. Εντολή DIMENSION Η εντολή DIΜEΝSΙΟΝ ανήκει στις εντολές προδιαγραφών, δεν εκτελείται, αλλά δηλώνει-ορίζει το μέγεθος ενός ή περισσοτέρων πινάκων. Δηλαδή, με την εντολή DIΜEΝSΙΟΝ ζητάμε να δεσμευτεί στη μνήμη μια ζώνη από συνεχόμενες θέσεις μνήμης οι οποίες θα έχουν όλες το ίδιο συμβολικό όνομα. Η εντολή DIΜEΝSΙΟΝ πρέπει να δηλώνεται πριν από την πρώτη χρήση της μεταβλητής με δείκτη (πίνακα). Έτσι, από συνήθεια και ομοιομορφία, συγκεντρώνουμε όλες τις εντολές DΙΜEΝSΙΟΝ στην αρχή του προγράμματος. Ο σκοπός αυτής της εντολής είναι να προειδοποιήσει το μεταγλωττιστή της γλώσσας FORΤRΑΝ για να δεσμεύσει τις απαραίτητες θέσεις στη μνήμη για τις δηλούμενες μεταβλητές. 6.2.1. Ορισμός της εντολής DIΜEΝSΙΟΝ Μέχρι και τη FORTRAN 77, η γενική μορφή της εντολής DΙΜEΝSΙΟΝ ήταν: DIMENSION όνομα μεταβλητής με δείκτες ( Χ : Υ ) Το Χ εκφράζει την κατώτερη τιμή την οποία μπορεί να λάβει ο δείκτης και όταν λείπει εννοείται η μονάδα. Το Υ εκφράζει την ανώτερη τιμή την οποία μπορεί να λάβει ο δείκτης και πρέπει να υπάρχει υποχρεωτικά. Ο τύπος των μεταβλητών με δείκτες ακολουθεί τους ίδιους κανόνες με μία απλή μεταβλητή. Επίσης, μπορούμε να δηλώσουμε ταυτόχρονα και περισσότερα ονόματα μεταβλητών με δείκτες χωρισμένα με υποδιαστολή. Π.χ. μπορούμε να γράψουμε : DΙΜEΝSΙΟΝ Α(15), Β(10, 10), C(-5 : 5), Κ(3, 2, 2) Η τιμή η οποία βρίσκεται ανάμέσα στις παρενθέσεις δηλώνει τον αριθμό των διαδοχικών θέσεων μνήμης οι οποίες θα δεσμευτούν. Όταν υπάρχουν περισσότερες τιμές, οι οποίες μπορεί να φθάσουν μέχρι τις 7, αυτό σημαίνει ότι ο πίνακας είναι περισσοτέρων διαστάσεων. Π.χ. Για τον πίνακα Α(15) κρατάμε 15 διαδοχικές θέσεις μνήμης. Για τον πίνακα Β(10,10) κρατάμε 10*10 = 100 διαδοχικές θέσεις μνήμης. Για τον πίνακα C(-5:5) κρατάμε συνολικά 11 θέσεις μνήμης. Για τον πίνακα Κ(3, 2, 2) κρατάμε συνολικά 3*2*2 = 12 θέσεις μνήμης.

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 163 Με τη Fortran 90/95 η γενική μορφή της εντολής DΙΜEΝSΙΟΝ γίνεται: Τύπος, DIMENSION (Χ :Υ) :: όνομα μεταβλητής με δείκτες Ο Τύπος, είναι ένας από τους γνωστούς και αποδεκτούς τύπους των μεταβλητών. Μπορούμε να δηλώσουμε ταυτόχρονα και περισσότερα ονόματα μεταβλητών με δείκτες, χωρισμένα με υποδιαστολή. Π.χ. μπορούμε να γράψουμε : REAL, DΙΜEΝSΙΟΝ (15) :: Α, Β, C(-5 : 5), Μ(7,7), Κ(3, 2, 2) Εδώ, όλοι οι πίνακες θα δέχονται μόνο πραγματικές τιμές, αλλά επιπλέον, οι μεταβλητές C, Μ και K δεν θα ακολουθούν τη γενική δήλωση. Δηλαδή, οι πίνακες Α και Β θα είναι μονοδιάστατοι και 15 θέσεων ο κάθε ένας, ενώ ο πίνακας C θα είναι μονοδιάστατος αλλά 11 θέσεων, ο πίνακας Μ διδιάστατος και ο πίνακας Κ τριδιάστατος. Επομένως, έχουμε την ευχέρεια να δηλώνουμε τους πίνακες με μεγάλη ευελιξία. Αν γράψουμε : INTEGER, DΙΜEΝSΙΟΝ (10, 10) :: Α, Β, C τότε, όλοι οι πίνακες θα είναι διδιάστατοι (10, 10) και θα δέχονται μόνο ακέραιες τιμές. Εναλλακτικά, μπορούμε να δηλώσουμε τους πίνακες χωρίς τη χρήση της εντολής DIMENSION, μέσω των γνωστών δηλωτικών εντολών. Π.χ. μπορούμε να γράψουμε τις ακόλουθες εντολές: REAL X(5,5), Y(5, 5) INTEGER TAB(100), PIN(10, 20) αντί για τις εντολές: REAL, DIMENSION (5,5) :: Χ, Y INTEGER, DIMENSION (100) :: TAB, PIN(10,20) Παρατήρηση. Συνιστάται η χρησιμοποίηση και της λέξης DIMENSION στη δήλωση των πινάκων επειδή παρέχει μεγαλύτερη ακρίβεια στη διατύπωση των εντολών του προγράμματος

164 FORTRAN 77/90/95/2003 6.2.2. Εισαγωγή τιμών σε πίνακα Όλες οι θέσεις μνήμης τις οποίες καταλαμβάνει ένας πίνακας ταυτόχρονα με τη δήλωσή του μηδενίζονται. Δηλαδή, οι αρχικές τιμές ενός πίνακα είναι πάντα μηδέν. Μπορούμε όμως, να δώσουμε τιμές σ ένα πίνακα στη FORTRAN με τους ακόλουθους τρεις τρόπους. Α τρόπος. Με τις εντολές της απλής αντικατάστασης. Αν έχουμε τον πίνακα Α(5) και θέλουμε να δώσουμε τις τιμές 10, 20, 30, 40, 50 μπορούμε να γράψουμε : INTEGER, DIMENSION (5) :: A Α(1) = 10 Α(2) = 20 Α(3) = 30 Α(4) = 40 Α(5) = 50 Μπορούμε να βελτιώσουμε αυτόν τον κώδικα με την χρήση της εντολής DO. Π.χ. INTEGER, DIMENSION (5) :: A DO I = 1, 5 Α(I) = I*10 ENDDO Μπορούμε να δώσουμε και σε μεμονωμένες θέσεις ενός πίνακα τιμές, δηλαδή μπορούμε να γράψουμε : Α(3) = 3055 Β τρόπος. Κατά τη διάρκεια εκτέλεσης του προγράμματος (Εντολές εισόδου). Αν θέλουμε να δώσουμε δυναμικά, κατά τη διάρκεια της εκτέλεσης του προγράμματος, τιμές οι οποίες θα τοποθετηθούν σε πίνακες, μπορούμε να χρησιμοποιήσουμε τις εντολές εισόδου της FORTRAN, δηλαδή μπορούμε να γράψουμε : INTEGER, DIMENSION (5) :: A PRINT *, "Πληκτρολογείστε πέντε τιμές" READ *, A

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 165 Οι πέντε τιμές (5) οι οποίες θα πρέπει να πληκτρολογηθούν, όταν εμφανιστεί το μήνυμα στην οθόνη, θα τοποθετηθούν στις πέντε (5) θέσεις του πίνακα Α. Γ τρόπος. Με τη βοήθεια της εντολής DATA. Όταν πρέπει να δώσουμε αρχικές τιμές σε ένα πρόγραμμα οι οποίες δεν θα αλλάζουν σε κάθε νέα εκτέλεση του προγράμματος ή κατά τη διάρκεια της εκτέλεσης πρέπει να πληκτρολογήσουμε ένα μεγάλο αριθμό γνωστών τιμών, θεωρείται άστοχο να τις πληκτρολογούμε σε κάθε νέα επανεκκίνηση του προγράμματος. Οι λόγοι της αποφυγής αυτής της μορφής απόδοσης τιμών είναι κυρίως δύο. Ο πρώτος λόγος είναι ότι προκαλείται καθυστέρηση στην έκδοση των αποτελεσμάτων, από τη χρονοβόρο διαδικασία της πληκτρολόγησης και ο δεύτερος, ίσως και ο πιο σημαντικός λόγος, είναι ότι μια λανθασμένη πληκτρολόγηση μπορεί να προκαλέσει λανθασμένα αποτελέσματα. Συνιστάται λοιπόν, η χρησιμοποίηση της εντολής DATA, η οποία επιτρέπει τη μαζική απόδοση τιμών σε απλές μεταβλητές και σε μεταβλητές με δείκτες. H γενική μορφή της εντολής DATA, είναι : DATA μεταβλητές / σταθερές τιμές Μπορούμε, στη θέση των μεταβλητών να τοποθετήσουμε μια σειρά από απλές μεταβλητές ή/και μεταβλητές με δείκτες του προγράμματος. Στη θέση των σταθερών τιμών γράφουμε τις αντίστοιχες τιμές των μεταβλητών. Π.χ. η συνέχεια των εντολών: REAL XYZ (4) DATA XYZ / 1.2, 15.5, 7.0, 14.1 / θα προκαλέσει αντικατάσταση των τεσσάρων αριθμητικών τιμών στις τέσσερεις θέσεις του πίνακα ΧYZ. Η συνέχεια των εντολών: INTEGER Χ(2, 2), Z DATA Χ, Z / 1, 2, 3, 4, 5 / θα προκαλέσει αντικατάσταση των 4 πρώτων τιμών (1, 2, 3, 4) στις 4 θέσεις του πίνακα Χ ως εξής : Χ(1, 1)=1, Χ(2, 1)=2, Χ(1, 2)=3 και Χ(2, 2)=4, και την τιμή 5 στην απλή μεταβλητή Ζ.

166 FORTRAN 77/90/95/2003 Η εντολή DATA μπορεί να βρίσκεται σε οποιοδήποτε σημείο του κώδικα, αλλά συνήθως τοποθετείται στην αρχή του προγράμματος και χρησιμεύει κυρίως για την απόδοση αρχικών ή σταθερών τιμών στις μεταβλητές. 6.2.3. Διαδικασία αποθήκευσης τιμών Ας εξετάσουμε τώρα τη διαδικασία αποθήκευσης στη μνήμη των τιμών ενός πίνακα. Για έναν πίνακα μιας διάστασης είναι απλό. Το στοιχείο π.χ. Α(3), βρίσκεται στην τρίτη κατά σειρά θέση (εικόνα 6.1.) Απόσπασμα Μνήμης Διεύθυνση Τιμή Α(1) 12345 00000101010100001 Α(2) 12346 00010001010001000 Α(3) 12347 00000101111101110 Εικόνα 6.1. Αποθήκευση ενός μονοδιάστατου πίνακα στη μνήμη Για έναν πίνακα δύο διαστάσεων, π.χ. Β(3, 2) οι θέσεις στη μνήμη βρίσκονται με την ακόλουθη διάταξη: Β(1,1) Β(2,1), Β(3,1) και στη συνέχεια Β(1,2), Β(2,2), Β(3,2) δηλαδή, οι πίνακες δύο διαστάσεων κρατούν τόσες θέσεις όσα τα στοιχεία τους, τα οποία είναι διατεταγμένα μέσα στη μνήμη, πρώτα όλα τα στοιχεία της πρώτης στήλης, κατόπιν όλα τα στοιχεία της δεύτερης στήλης και ούτω καθ' εξής μέχρι την τελευταία στήλη (εικόνα 6.2). Πιο απλά, πιο γρήγορα μεταβάλλεται ο πρώτος δείκτης (δείκτης γραμμών). Απόσπασμα Μνήμης Διεύθυνση Τιμή Β(1,1) 12345 00000101010100001 Β(2,1) 12346 00010001010001000 Β(3,1) 12347 00000101111101110 Β(1,2) 12348 00000101010100001 Β(2,2) 12349 00010001010001000 Β(3,2) 12350 00000101111101110 Εικόνα 6.2. Αποθήκευση ενός διδιάστατου πίνακα στη μνήμη

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 167 Εύκολα, μπορούμε να βρούμε τη σχέση η οποία μετατρέπει έναν πίνακα πολλών διαστάσεων σε μονοδιάστατο. Για έναν πίνακα δύο διαστάσεων, έστω Β(Ι, J), ο δείκτης Ν ο οποίος αντιστοιχεί στο στοιχείο Β(Κ, L) θα είναι: Ν = (L-1) * Ι + Κ π.χ. η μεταβλητή Β(7,2) του πίνακα Β(10,10) θα βρίσκεται στη (2-1)*10+7= 17 κατά σειρά θέση στη μνήμη. Απόσπασμα Μνήμης Διεύθυνση Τιμή D(1,1,1) 12345 00000101010100001 D(2,1,1) 12346 00010001010001000 D(3,1,1) 12347 00000101111101110 D(1,2,1) 12348 00000101010100001 D(2,2,1) 12349 00010001010001000 D(3,2,1) 12350 00000101111101110 D(1,1,2) 12351 00000101010100001 D(2,1,2) 12352 00010001010001000 D(3,1,2) 12353 00000101111101110 D(1,2,2) 12354 00000101010100001 D(2,2,2) 12355 00010001010001000 D(3,2,2) 12356 00000101111101110 Εικόνα 6.3. Αποθήκευση ενός τριδιάστατου πίνακα στη μνήμη Για έναν πίνακα τριών διαστάσεων, π.χ. D(3,2,2) οι θέσεις στη μνήμη κατά σειρά θα είναι: D(1,1,1), D(2,1,1), D(3,1,1,), D(1,2,1), D(2,2,1), D(3,2,1), D(1,1,2), D(2,1,2), D(3,1,2), D(1,2,2), D(2,2,2), D(3,2,2) Δηλαδή, πρώτα μεταβάλλεται ο πρώτος δείκτης, μετά ο δεύτερος και τελευταίος ο τρίτος δείκτης (εικόνα 6.3.).

168 FORTRAN 77/90/95/2003 Το στοιχείο (Κ, L, Μ) ενός πίνακα τριών διαστάσεων (Ι, J, R) όταν αυτός μετατραπεί σ' ένα ισοδύναμο μονοδιάστατο πίνακα, θα έχει τη θέση του δείκτη Ν, όπου Ν δίνεται από τη σχέση: Ν=((Μ -1) * J + L - 1) * Ι + Κ π.χ. η μεταβλητή της θέσης D(2, 1, 2) του πίνακα D(3, 2, 2) θα βρίσκεται στη ((2-1)*2+1-1)*3+2 = 8 θέση, όπως φαίνεται και στην εικόνα 6.3. 6.2.4. Απλά παραδείγματα Παράδειγμα 1. Αν πληκτρολογήσουμε 20 ακέραιους αριθμούς, να υπολογιστεί το ά- θροισμά τους. Χρησιμοποιώντας ένα μονοδιάστατο πίνακα, έστω Κ, διαβάζουμε και αποθηκεύουμε όλες τις τιμές στον πίνακα Κ και στη συνέχεια με μία εντολή DΟ υπολογίζουμε και εμφανίζουμε το άθροισμα των 20 ακεραίων (μεταβλητή L). Έτσι έχουμε το πρόγραμμα: PROGRAM ARRAY IMPLICIT NONE INTEGER K, L, I DIMENSION K(20) PRINT *, 'ΠΛΗΚΤΡΟΛΟΓΗΣΤΕ 20 ΤΙΜΕΣ '! Διαβάζουμε τις 20 τιμές και τις αποθηκεύουμε στον πίνακα Κ REΑD *, Κ! Υπολογίζουμε το άθροισμα των στοιχείων του πίνακα Κ L=0 DΟ 2 Ι = 1, 20 L=L+ Κ(Ι) 2 CΟΝΤΙΝUE! Εμφάνιση του αποτελέσματος PRINT *, 'Αποτέλεσμα = ', Κ SΤΟP EΝD

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 169 Παράδειγμα 2. Με τη βοήθεια των πινάκων, μπορούμε να γράψουμε το ακόλουθο πρόγραμμα για το παράδειγμα ε' του 2 ου Κεφαλαίου ( 2.4.6). PROGRAM BUBBLE IMPLICIT NONE REAL A, X, Y INTEGER N, K, I DIMENSION A(30) PRINT *, 'ΠΛΗΚΤΡΟΛΟΓΗΣΤΕ ΤΙΣ 30 ΤΙΜΕΣ'! Διαβάζουμε τις 30 τιμές οι οποίες τοποθετούνται στον πίνακα Α REΑD *, Α! Εμφανίζουμε τις αρχικές τιμές του πίνακα Α PRINT *, 'ΑΡΧΙΚΕΣ ΤΙΜΕΣ ΤΟΥ ΠΙΝΑΚΑ', A Ν=30! Ορισμός του πλήθους των τιμών του πίνακα Α! Εφαρμογή της μεθόδου φυσαλίδας (Bubble) DΟ 10 Ι=1, Ν-1 ΙF(Α(Ι).LE. Α(Ι+1)) GΟΤΟ 10 Χ=Α(Ι) A(Ι)=Α(Ι+1) Α(Ι+1)=Χ Κ=Ι DO WHILE (K.GT. 1) ΙF(Α(Κ- 1).LE. Α(Κ)) GΟΤΟ 10 Y=Α(Κ) Α(Κ)=Α(K-1) A(K-1)=Y K=K-1 ENDDO 10 CONTINUE! Εμφανίζουμε τις τελικές τιμές του πίνακα Α! (διατεταγμένες κατ αύξουσα τάξη μεγέθους) PRINT *, 'ΔΙΑΤΑΞΗ ΣΕ ΑΥΞΟΥΣΑ ΤΑΞΗ', A STOP END

170 FORTRAN 77/90/95/2003 6.3. Είσοδος - έξοδος πινάκων Στην προηγούμενη παράγραφο, για να διαβάσουμε ή για να εμφανίσουμε στην οθόνη τα στοιχεία του πίνακα Α του δευτέρου παραδείγματος, χρησιμοποιούμε μόνο το συμβολικό του όνομα. Έτσι, κάθε στοιχείο του πίνακα Α μεταφέρεται σύμφωνα με τη σειρά με την οποία πληκτρολογείται ή βρίσκεται στη μνήμη. Το ίδιο και για έναν πίνακα δύο διαστάσεων πρώτα θα πληκτρολογηθούν ή θα εμφανιστούν τα στοιχεία της πρώτης στήλης, κατόπιν της δεύτερης κ.λ.π. μέχρι την τελευταία στήλη του πίνακα. Π.χ. η συνέχεια των εντολών: DIMENSION T( 3, 4 ) DO 10 J = 1, 4 DO 10 I = 1, 3 10 READ *, T( I, J ) Μας δίνει ακριβώς η ίδια αποτελέσματα, με τη συνέχεια των εντολών: DIMENSION T( 3, 4 ) READ *, T Και με τις δύο συνέχειες των εντολών διαβάζουμε δώδεκα (12) τιμές τις οποίες αποθηκεύουμε στον πίνακα Τ. Στη πρώτη συνέχεια, η εντολή READ εκτελείται δώδεκα φορές (λόγω των δώδεκα επαναλήψεων των εντολών DO), ενώ στη δεύτερη συνέχεια, έ- χουμε εκτέλεση της εντολής READ μόνο μία φορά. Ακόμη μία λεπτομέρεια. Και στις δύο συνέχειες των εντολών έχουμε αυτόματα επανάληψη της διαδικασίας εισόδου, τόσες φορές, όσες χρειάζονται για να συμπληρωθούν όλες οι θέσεις του πίνακα Τ. Προσοχή, και για τις δύο συνέχειες εντολών τα δεδομένα πρέπει να πληκτρολογούνται με μία μόνον τιμή σε κάθε γραμμή (και μετά ENTER). Μπορούμε όμως, ν' αποφύγουμε την περίπτωση πληκτρολόγησης μιας μόνο τιμής σε κάθε γραμμή, όταν προσθέσουμε το κατάλληλο FORMAT. Η συνέχεια των εντολών: DIMENSION T( 3, 4 ) READ(*, 101) T 101 FORMAT( 3F3.1 )

ΚΕΦΑΛΑΙΟ 6: ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΕΣ 171 μας επιτρέπει να πληκτρολογούμε σε μια γραμμή τις τρεις τιμές κάθε μιας στήλης του πίνακα Τ, χωρισμένες μεταξύ τους είτε με μια υποδιαστολή είτε με ένα τουλάχιστον κενό διάστημα (space bar). Έτσι χρειαζόμαστε τέσσερεις γραμμές δεδομένων με τρεις τιμές σε κάθε μία γραμμή. Η συνέχεια των εντολών: DIMENSION T( 3, 4 ) READ(*, 102) T 102 FORMAT( 12F3.1 ) μας επιτρέπει να πληκτρολογήσουμε σε μία μόνο γραμμή όλες τις τιμές του πίνακα Τ, χωρισμένες μεταξύ τους είτε με μια υποδιαστολή είτε με ένα τουλάχιστον κενό διάστημα. Ιδιαίτερο ενδιαφέρον παρουσιάζεται κατά την εκτύπωση των τιμών ενός πίνακα επειδή, τις περισσότερες φορές, οι τιμές του πίνακα είναι τ αποτελέσματα της επεξεργασίας του προγράμματος και πρέπει να εμφανίζονται με την ανάλογη μορφή για την εύκολη ανάγνωσή τους. Π.χ. η συνέχεια των εντολών: DIMENSION T( 3, 4 ) WRITE(*, 200) T 200 FORMAT(3F3.1) θα μας εμφανίσει τις τιμές της κάθε στήλης στην ίδια γραμμή άρα, θα έχουμε στην οθόνη τέσσερεις γραμμές και σε κάθε γραμμή τρεις τιμές Εάν θέλουμε να εμφανιστούν οι τιμές κάθε γραμμής του πίνακα στην ίδια γραμμή της οθόνης θα πρέπει να γράψουμε τη συνέχεια των εντολών: DIMENSION T( 3, 4 ) DO 10 I = 1, 3 10 WRITE(*, 300) (T ( I, J ), J = 1, 4 )) 300 FORMAT( 4F3.1 ) Σημείωση: Περισσότερες λεπτομέρειες για τη σημασία και τη χρήση των εντολών εισόδου/εξόδου των πινάκων υπάρχουν στο 8 ο κεφάλαιο όπου πραγματοποιείται και λεπτομερής ανάπτυξη των εντολών FORMAT.