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



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

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

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

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

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

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

8 FORTRAN 77/90/95/2003

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

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

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

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

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

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

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

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

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

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

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

Εργαστήριο 9: Αρχεία

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

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

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

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

S, (5, -3, 34, -23, 7) ( *, _

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αρχιτεκτονική Υπολογιστών

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

ΘΕΜΑ : ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 22/1/ :11 Όνομα: Λεκάκης Κωνσταντίνος καθ. Τεχνολογίας

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Ένα πρώτο πρόγραμμα ΔΟΜΗ TOY ΠΡΟΓΡΑΜΜΑΤΟΣ. Τι σημαίνουν οι εντολές. Από τι αποτελείται ένα πρόγραμμα

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

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO. Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος.

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Πληροφορική 2. Δομές δεδομένων και αρχείων

Λειτουργικά Συστήματα (Λ/Σ)

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

SPSS Statistical Package for the Social Sciences

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Αριθμητικά Συστήματα. Επιμέλεια Διαφανειών: Δ.

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

- program p_name(input) - uses crt

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

Διαχείριση Βάσης Δεδομένων (dbadmin)

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

Ηλεκτρονικοί Υπολογιστές

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

Transcript:

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

Μορφοποίηση Η μορφοποίηση χρησιμοποιείται για Την ορθή παρουσίαση των αποτελεσμάτων Σωστή θέση και στοίχιση Επιθυμητή τάξη μεγέθους Επιθυμητή ακρίβεια Στον ακριβέστερο έλεγχο της εισόδου των δεδομένων Συνοδεύει τις εντολές READ WRITE, PRINT Μορφοποιητές: http://www.fortran.com/f77_std/rjcnf0001-sh-13.html

Σύνταξη Μορφοποίησης Η σύνταξη περιλαμβάνει την χρήση προκαθορισμένων μορφοποιητών Στις εντολές READ, WRITE και PRINT Σε συνδυασμό με την εντολή FORMAT ετικέτα FORMAT (λίστα μορφοποιητών) π.χ. Τα παρακάτω τμήματα κώδικα είναι ισοδύναμα, για x integer και y real: print (i3,2x,f10.2), x,y write(*, (i3,2x,f10.2) ) x,y print 100,x,y write(*,100) x,y 100 format (i3,2x,f10.2) 100 format (i3,2x,f10.2) To ίδιο και τα επόμενα τμήματα κώδικα: read (i5,e8.3), x,y read(*, (i5,e8.3) ) x,y read 200, x,y read(*,200) x,y 200 format (i5,e8.3) 200 format (i5,e8.3)

Βασικά Είδη Μορφοποιητών Iw[.m] ακέραιοι Fw.d πραγματικοί Ew.d[Ee] πραγματικοί με εκθέτη Lw λογικές τιμές A[w] αλφαριθμητικοί w: το μήκος του πεδίου σε χαρακτήρες m: ελάχιστο μήκος μη κενών θέσεων (συμπλήρωση με 0) d: αριθμός δεκαδικών ψηφίων e: αριθμός ψηφίων εκθέτη Στους μορφοποιητές Ι και F, αν w=0, τότε υπολογίζεται αυτόματα το μέγεθος του πεδίου ώστε να είναι το ελάχιστο δυνατό

Βασικά Είδη Μορφοποιητών EΝw.d[Ee] ESw.d[Ee] Gw.d[Ee] Dw.d Bw[.m] Ow[.m] Zw[.m] Πραγματικοί σε γραφή Μηχανικής Πραγματικοί σε επιστημονική γραφή Γενικός μορφοποιητής Πραγματικοί διπλής ακρίβειας Ακέραιοι σε δυαδικό, οκταδικό, δεκαεξαδικό σύστημα αρίθμησης w: το μήκος του πεδίου σε χαρακτήρες m: ελάχιστο μήκος μη κενών θέσεων (συμπλήρωση με 0) d: αριθμός δεκαδικών ψηφίων e: αριθμός ψηφίων εκθέτη

Είδη Μορφοποιητών Χρήση ΝX κενοί χαρακτήρες Τc, ΤLc, ΤRc μετατόπιση σε στήλη / αλλαγή γραμμής \, $ συνέχιση στην ίδια γραμμή : Διακοπή μορφοποίησης αν δεν υπάρχουν άλλα δεδομένα "abc " Εμφάνιση κειμένου kp κλιμάκωση κατά 10k Παρατηρήσεις: το 1 κενό το γράφουμε ως 1Χ και όχι ως Χ τo TRc έχει το ίδιο αποτέλεσμα με το cx, για κάποιο νούμερο c

Μορφοποιητής Ι - Παραδείγματα Integer:: x=346 Print (I5),x! bb346 Print (I3), x! 346 Print (I2), x! ** Print (I5.2), x! bb346 Print (I5.4), x! b0346 Print (I0), x! 346 Στα επόμενα το b σημαίνει κενό (blank)

Μορφοποιητής F - Παραδείγματα Στα επόμενα το b σημαίνει κενό (blank) Real :: x=34.126, y=-0.0000342 print '(F6.3)',x! 34.126 print '(F6.2)',x! b34.13 print '(F10.4)',x! bbb34.1260 print '(F5.2)',x! 34.13 print '(F4.2)',x! **** print '(F0.2)',x! 34.13 print '(F6.0)',x! bbb34. print '(F0.0)',x! ** print '(F12.7)',y! bb-0.0000342 print '(F12.5)',y! bbbb-0.00003 print '(F12.4)',y! bbbbbb0.0000

Μορφοποιητές E, D - Παραδείγματα Real :: x=34.126, y=-0.0000342 print '(E12.7)',x!.3412600E+02 print '(E12.5)',x! b0.34126e+02 print '(E12.4)',x! bb0.3413e+02 print '(E6.2)',x! ****** print '(E10.4)',x! 0.3413E+02 print '(E10.4E1)',x! b0.3413e+2 print '(E16.4E4)',x! bbbb0.3413e+0002 print '(E5.2)',x! ***** print '(E0.2)',x print '(E6.0)',x print '(E7.0)',x print '(E18.7)',y Στα επόμενα το b σημαίνει κενό (blank)! (κενή γραμμή)! 0.E+02! b0.e+02! bbbb-0.3420000e-04 Για τον μορφοποιητή D απλώς αντικαθιστούμε σε όλα τα παραδείγματα το E με το D, και στην εντολή, αλλά και στα αποτελέσματα. Π.χ. To Print (D12.7),x δίνει:.3412600d+02

Μορφοποιητές EN, ΕS - Παραδείγματα Στα επόμενα το b σημαίνει κενό (blank) Real:: x=34.126, y=-0.0000972, z=47325.214 print '(EN16.7)',x! bb34.1259995e+00 print '(EN16.7)',y! b-97.1999980e-06 print '(EN16.5)',z! bbbb47.32521e+03 print '(EN16.5E1)',z! bbbbb47.32521e+3 print '(ES16.7)',x! bbb3.4125999e+01 print '(ES16.7)',y! bb-9.7199998e-05 print '(ES14.5)',z! bbb4.73252e+04 print '(ES12.5E3)',z! 4.73252E+004

Μορφοποιητές Α, L - Παραδείγματα Character(7):: s= Volos Logical :: f=.true. print '(A)',s! Volosbb print '(A3)',s! Vol print '(A10)',s! bbbvolosbb print '(L1)',f! T print '(L3)',f! bbt Στα επόμενα το b σημαίνει κενό (blank) Στη μνήμη είναι: s= Volosbb γιατί το s είναι δηλωμένο με μέγεθος 7

Μορφοποιητής G - Παραδείγματα Integer:: n=126 Real:: x=48.452,y=0.23,z=0.00315 Character(5):: s= Volos Logical :: f=.true. print '(G4.0)',n!b126 print '(G10.3)',x!bb48.5bbbb print '(G16.5)',x!bbbbbb48.452bbbb print '(G10.3)',y!b0.230bbbb print '(G9.2)',z,!b0.32E-02 print '(G3.0)',s!Vol print '(G2.0)',f!bT Στα επόμενα το b σημαίνει κενό (blank) To G μπορεί να χρησιμοποιηθεί με όλους τους τύπους δεδομένων. Ειδικά για πραγματικούς το Gw.d λειτουργεί ως εξής: Αν ο αριθμός είναι <0.1 ή > 10 d τότε είναι σαν Ew.d διαφορετικά είναι σαν F(wd).(d-k) + 4 κενά στο τέλος (k είναι ένας συντελεστής κλίμακας)

Μορφοποιητής P- Παραδείγματα Στα επόμενα το b σημαίνει κενό (blank) Μπορεί να χρησιμοποιηθεί σε συνδυασμό μόνο με τους μορφοποιητές E,G,F real:: x=0.000343, y=456.3245 print '(E10.4,2X,E10.4)',x,y print '(2P,E10.4,2X,E10.4)',x,y print '(2P,E10.4,2X,0P,E10.4)',x,y print '(-2P,E10.4,2X,E10.4)',x,y! 0.3430E-03bb0.4563E+03! 34.300E-05bb45.632E+01! 34.300E-05bb0.4563E+03! 0.0034E-01bb0.0046E+05 Σε read με kp αν στα δεδομένα δεν υπάρχει δύναμη τότε αυτά διαιρούνται με 10 k read '(E8.2)',x! Data:18.63 -> Memory: 18.63 read '(3PE8.2)',x! Data:18.63 -> Memory: 0.01863 read '(3PE8.2)',x! Data:18.63E1 -> Memory: 186.3 read '(-3PE8.2)',x! Data:18.63 -> Memory: 18630.

Μορφοποιητές B, O, Z - Παραδείγματα integer:: n=46 Στα επόμενα το b σημαίνει κενό (blank) print '(B10)',n! bbbb101110 print '(B4)',n! **** print '(O4)',n print '(Z3)',n! bb56! b2e read '(B8)',n! Διαβάζει ένα δυαδικό αριθμό ενός Byte read '(O8)',n! Διαβάζει έναν οκταδικό αριθμό read '(Ζ8)',n! Διαβάζει έναν δεκαεξαδικό αριθμό

Μορφοποιητές Τc,TLc,TRc - Παραδείγματα integer:: i=4,j=3,k=5,l=23 Στα επόμενα το b σημαίνει κενό (blank) print '(T4,i2)',l print '(TR4,i2)',l print '(T4,i1,T2,i2)',i,j print '(T4,i1,Tr2,i1)',i,j print '(T4,i1,Tr2,i1,Tl1,i1)',i,j,k print '(T4,i1,Tr3,i1,Tl2,i1)',i,j,k!bbb23!bbbb23!bb34!bbb4bb3!bbb4bb5!bbb4bb53

Συνδυασμοί και επανάληψη μορφοποιητών Μπορούμε να συνδυάσουμε πολλούς μορφοποιητές χωρίζοντας τους με κόμμα (οι μορφοποιητές \,$,/,:,P δεν απαιτούν διαχωρισμό με κόμμα, αλλά καλό είναι να το χρησιμοποιούμε για αποφυγή παρερμηνειών) π.χ integer::x=5 real::y=534.2,z=451.542 print '(T10,I3,2x,f6.2,/,e10.3e1)', x,y,z To αποτέλεσμα φαίνεται στη συνέχεια: bbbbbbbbbbb5bb534.20 bb0.452e+3 Μπορούμε να επαναλαμβάνουμε όλους τους μορφοποιητές που έχουμε παρουσιάσει εκτός από τους Τ, ΤL, ΤR, P, \, $, : O τρόπος είναι να προσθέσουμε ένα νούμερο αριστερά από τον μορφοποιητή. π.χ. το (Ι4,Ι4,I4,F15.2,E8.3,E8.3) μπορεί να γραφεί ως (3I4,F15.2,2E8.3) Επίσης μπορούμε να επαναλάβουμε ολόκληρα τμήματα μορφοποιητών βάζοντας τα μέσα σε παρενθέσεις και τοποθετώντας ένα νούμερο μπροστά από τις παρενθέσεις π.χ. το (Ι3,3X,ΕΝ7.2,Ι3,3X,ΕΝ7.2,3Χ,Ι5) μπορεί να γραφεί ως (2(Ι3,3X,ΕΝ7.2),3Χ,Ι5)

Ειδικές Περιπτώσεις Όταν έχουμε περισσότερους μορφοποιητές δεδομένων από τα ίδια τα δεδομένα, τότε οι επιπλέον μορφοποιητές αγνοούνται. π.χ. integer::a=2,b=4,c=6 print '(5i2)', a,b,c! b2b4b6 print '(5(i2,","))', a,b,c! b2,b4,b6, Όταν έχουμε λιγότερους μορφοποιητές δεδομένων από τα ίδια τα δεδομένα, τότε μόλις αυτοί εξαντληθούν, αλλάζει γραμμή και συνεχίζει η εμφάνιση των επιπλέων δεδομένων χρησιμοποιώντας τους ίδιους μορφοποιητές ξανά από την αρχή (αρκεί ο τύπος των δεδομένων να ταιριάζει) π.χ. integer::a=2,b=4,c=6,d=8 character(5):: e= aaaaa print '(2(i3))', a,b,c! bb2bb4! bb6 print '(3(i4,","))', a,b,c,d! b2,b4,b6,! b8, print '(2(i3)), a,b,e! Σφάλμα: Δεν ταιριάζουν οι τύποι

Μερικές χρήσιμες εφαρμογές I Αποφυγή περιττών στοιχείων κατά την επανάληψη τμημάτων μορφοποίησης π.χ. Integer:: x=5,y=17,a=2,b=34 Print '(4(I3,","))', x,y,a,b! bb4,b17,bb2,b34, Παρατηρούμε ότι εμφανίζεται ένα επιπλέον κόμμα στο τέλος. Για να το αποφύγουμε αυτό, πρέπει να προσθέσουμε τον μορφοποιητή : χρησιμοποιώντας το ακόλουθο format Print '(4(I3,:,","))', x,y,a,b! bb4,b17,bb2,b34 Κατά την είσοδο των δεδομένων από το πληκτρολόγιο για την εμφάνιση του επεξηγηματικού μηνύματος μπορούμε να χρησιμοποιήσουμε το ακόλουθο format Print '(Α,\)', 'Dwste thn aktina tou kyklou: ' Read*,R Αυτό έχει σαν συνέπεια μετά την εκτύπωση του μηνύματος στην οθόνη, να μην γίνει μετακίνηση του δρομέα (cursor) στην επόμενη γραμμή για το read που ακολουθεί, με αποτέλεσμα μια πιο όμορφη εμφάνιση (στις περισσότερες περιπτώσεις) Παρατήρηση: Το ίδιο format γράφεται και ως '(A,$)' ή '(A\)' ή '(A$)'

Μερικές χρήσιμες εφαρμογές II Εμφάνιση αποτελεσμάτων μαζί με επεξηγηματικό μήνυμα Υπάρχουν 2 τρόποι για να εμφανίσουμε π.χ. το μήνυμα: To embado tou trigwnou einai XXX.XX t.m. Έστω ότι το εμβαδό βρίσκεται στην μεταβλητή Ζ. 1 ος τρόπος Το μήνυμα γράφεται ως σταθερά κειμένου μέσα στο Print Print '(A,F6.2,A)','To embado tou trigwnou einai ',Z,' t.m.' 2oς τρόπος To μήνυμα είναι τμήμα του Format Print '("To embado tou trigwnou einai ",F6.2," t.m.")', Z

Read με Μορφοποιητές Οι μορφοποιητές που χρησιμοποιούμε με το READ είναι συνήθως οι εξής: Για ακέραιους ο Ι Για πραγματικούς ο Ε (συμπεριλαμβάνει και την λειτουργικότητα του F) Για κείμενο ο A Επίσης χρησιμοποιούμε τον nx ή τον Τc για να μετακινηθούμε στη σωστή στήλη. Παραδείγματα χρήσης του Ε για ανάγνωση πραγματικών αριθμών Έστω η εντολή read(*, (E10.3) ) x και ότι επιθυμούμε να διαβάσουμε τον πραγματικό αριθμό -8.56. Τότε αυτόν μπορούμε π.χ. να τον δώσουμε με τους ακόλουθους τρόπους: -8.56e+00! Όταν υπάρχει υποδιαστολή στα δεδομένα, τότε αγνοείται το.3-0.856e+01-8.56e+0-8.56! Εδώ το Ε λειτουργεί σαν F -8560! Όταν δεν υπάρχει υποδιαστολή στα δεδομένα τότε εφαρμόζεται το.3 -.856+1! Το Ε μπορεί να παραληφθεί από τον εκθέτη. Αρκεί το πρόσημο. -8.56+0-85.6e-1-856.e-02-856.0e-02 Όλοι οι παραπάνω τρόποι εισόδου του -8.56 είναι ισοδύναμοι

ΑΡΧΕΙΑ Αρχείο είναι μία οργανωμένη συλλογή δεδομένων αποθηκευμένα στο δίσκο του Η/Υ Τα είδη των αρχείων που μπορεί να επεξεργαστεί η FORTRAN είναι τα: 1) Σειριακά Αρχεία 2) Αρχεία Άμεσης Προσπέλασης Στα πλαίσια του Μαθήματος θα μελετήσουμε μόνον τα Σειριακά Αρχεία Τα Σειριακά Αρχεία είναι αρχεία κειμένου και μπορούμε να τα ανοίξουμε με ένα κειμενογράφο μέσα από τα Windows. Μπορεί να έχουν οποιοδήποτε όνομα και επέκταση, αλλά βολεύει να δίνουμε σαν επέκταση το.txt

Χρήση Αρχείων (Λογικές μονάδες εισόδου/εξόδου) Η χρήση των λογικών μονάδων εισόδου / εξόδου περιλαμβάνει τρία στάδια Άνοιγμα ενός αρχείου (open) Αντιστοίχιση σε μια λογική μονάδα Ονομασία ενός αρχείου Ανάγνωση/Εγγραφή στη λογική μονάδα (read/write) Συσχέτιση με μια λογική μονάδα Λίστα μεταβλητών Κλείσιμο λογικής μονάδας (close) Συσχέτιση με μια λογική μονάδα

Αρχεία Η ταυτότητα ενός αρχείου καθορίζεται από Τη διαδρομή του αρχείου στον σκληρό δίσκο (path) Το όνομα του αρχείου Τον τύπο του αρχείου (που καθορίζεται από την επέκταση του αρχείου) π.χ C:\fortran\project1\results.txt Τα αρχεία προσδιορίζονται από τον χρήστη με την πλήρη τους ταυτότητα σαν αλφαριθμητικά δεδομένα Κάθε αρχείο αποτελείται από πεδία Το πεδίο είναι μια ακολουθία εκτυπώσιμων και μη χαρακτήρων Το τελευταίο πεδίο κάθε αρχείου είναι το EOF (μη εκτυπώσιμο)

Εντολή OPEN Συνδέει ένα αρχείο σε μια λογική μονάδα ή Δημιουργεί ένα νέο αρχείο και το συνδέει σε μια λογική μονάδα ή Αλλάζει συγκεκριμένες ιδιότητες μιας σύνδεσης ΣΥΝΤΑΞΗ OPEN ([UNIT=]io-unit [, FILE=name] [, ERR=label] [, IOSTAT=i-var], ) io-unit: ετικέτα λογικής μονάδας (ακέραια μεταβλητή) name: το όνομα (και η θέση) του αρχείου ( τύπου character) label: προσδιορισμός ενεργειών σε περίπτωση λάθους i-var: ετικέτα προσδιορισμού λάθους κατά την εκτέλεση

Σύνταξη της εντολής OPEN Απλή μορφή: Πλήρης μορφή: Χειρισμός σε περίπτωση σφάλματος open(10, file= data.txt, iostat=st) if (st /= 0) then print*, Sfalma kata to anoigma tou arxeiou! else.. end if Το άνοιγμα του αρχείου (εντολή open) πρέπει να συνοδεύεται από κλείσιμό του (εντολή close) όταν δεν πρόκειται να χρησιμοποιηθεί περεταίρω

Παραδείγματα open Απλό Άνοιγμα αρχείου Open(10,file= data.txt ) Άνοιγμα αρχείου με έλεγχο σφάλματος Open(10,file= data.txt,iostat=st) Άνοιγμα αρχείου με έλεγχο αν το αρχείο υπάρχει Open(10,file= data.txt,status= old,iostat=st) Άνοιγμα αρχείου με τοποθέτηση του εσωτερικού δείκτη στο τέλος του Open(10,file= data.txt,position= append )

Λογικές Μονάδες Εισόδου/Εξόδου Οι λογικές μονάδες εισόδου/εξόδου χωρίζονται σε δυο κατηγορίες Εσωτερικές: εικονικός χώρος που δεσμεύεται στη RAM Εξωτερικές: οθόνη, πληκτρολόγιο, αρχεία, συσκευές ΟΝΟΜΑ ΣΗΜΑΣΙΑ 0, 6 Οθόνη Η/Υ 5 Πληκτρολόγιο Η/Υ * Οθόνη Η/Υ (write), Πληκτρολόγιο Η/Υ (read) Θετικός ακέραιος αριθμός Συσχέτιση με κάποιο αρχείο (π.χ. 10, 102, ) Αλφαριθμητική μεταβλητή Καταχώρηση σε εσωτερική μονάδα

Παρατηρήσεις Κατά το άνοιγμα ενός αρχείου (εντολή open), δεσμεύεται ένας χώρος (buffer) στη μνήμη RAM και δημιουργείται μία συσχέτιση με το αρχείο στο δίσκο. Ότι γράφουμε στο αρχείο, γράφετε πρώτα στον buffer. Τα δεδομένα γράφονται αυτόματα στο πραγματικό αρχείο όταν ο buffer γεμίσει, ή όταν κλείσουμε το ανοικτό αρχείο. Αν θέλουμε να γράψουμε τα δεδομένα του buffer στο αρχείο σε οποιαδήποτε άλλη στιγμή, τότε καλούμε την: call flush(ν)! Ν=ο αριθμός της λογικής μονάδας του αρχείου Προσοχή: ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΤΑΙ ΑΠO ΤΗΝ FTN95 Κατά το κλείσιμο του αρχείου (εντολή close) αποδεσμεύονται οι δεσμευμένοι πόροι (διαγράφεται ο buffer αφού προηγουμένως έχουν σωθεί τα περιεχόμενά του στο αρχείο) Με το τέλος του προγράμματος, όλα τα ανοικτά αρχεία κλείνουν αυτόματα, παρόλα αυτά καλό είναι να τα κλείνουμε μόνοι μας με την εντολή close όταν δεν τα χρειαζόμαστε άλλο Το τέλος ενός αρχείου σημειώνεται με το κρυφό πεδίο EOF (end of file).

Μετακίνηση εσωτερικού δείκτη τρέχουσας γραμμής π.χ. Έστω ότι έχουμε κάνει open(10,file= data.txt ) Προς τα εμπρός μία γραμμή Read(10,*) Παρατήρηση: Κάθε εντολή read(10, ) ή write(10,..) μετακινεί τον εσωτερικό δείκτη μία γραμμή πιο κάτω Προς τα πίσω μία γραμμή Backspace(10) Στην αρχή του αρχείου Rewind(10) Κενό: Χωρίς να χρησιμοποιήσουμε κάποια μεταβλητή

Έλεγχος αν το αρχείο υπάρχει στο δίσκο Έλεγχος κατά το open π.χ. Integer::st open(10,file= data.txt, status='old',iostat=st) if (st/=0) then print*, To arxeio den yparxei else print*, To arxeio yparxei end if Έλεγχος με την εντολή inquire π.χ. logical::ex inquire(file='b.txt',exist=ex) if (.not. ex) then print*, To arxeio den yparxei else print*, To arxeio yparxei end if

Είδη σειριακών αρχείων Οριοθετημένα (με κενά, κόμμα κ.τ.λ.) π.χ. οριοθετημένα με κόμμα (csv: comma separated values) 133,2,532,54 1,34,5442,3 44,5236,32,2 Τα διαβάζουμε με ελεύθερο format Σταθερού πλάτους 133 2 532 54 1 34 5442 3 44 5236 32 2 Μπορούμε να τα διαβάσουμε με ελεύθερο format, εκτός αν υπάρχουν αλφαριθμητικά που περιέχουν κενά. Προτιμότερο είναι να τα διαβάζουμε με format.

Παραδείγματα Read οριοθετημένου αρχείου Έστω οι μεταβλητές: Integer::x; real::y,z; character(50)::s Tότε με την εντολή Read(10,*) x,y,z,s διαβάζονται τα οριοθετημένα αρχεία είτε με κόμμα: 3,554.34,53.E-2, Giwrgos Basileioy 21,4.435,64.3E+2, Giannis Argyropoulos 32,554.7,54.553E-5, Marina Papakwsta είτε με κενά: 3 554.34 53.E-2 Giwrgos Basileioy 21 4.435 64.3E+2 Giannis Argyropoulos 32 554.7 54.553E-5 Marina Papakwsta Τα εισαγωγικά είναι υποχρεωτικά μόνον αν το αλφαριθμητικό περιέχει κενά, όπως εδώ (ανάμεσα στο όνομα και το επώνυμο).

Παραδείγματα Read αρχείου σταθερού πλάτους στηλών Έστω οι μεταβλητές: Integer::x; real::y,z; character(50)::s Tότε με την εντολή Read(10, (Ι2,2Χ,F6.3,2X,E9.3,2X,A20) ) x,y,z,s διαβάζεται το αρχείο σταθερού πλάτους: 3 554.34 53.e-2 Giwrgos Basileioy 21 4.435 64.3E+2 Giannis Argyropoulos 32 554.7 54.553E-5 Marina Papakwsta Επίσης το ίδιο αρχείο διαβάζεται και με την εντολή Read(10,*) x,y,z,s αλλά τότε απαιτούνται τα εισαγωγικά στα αλφαριθμητικά που περιέχουν κενά. Δεν απαιτούνται εισαγωγικά όταν κάνουμε read με format

Διάβασμα μιας ολόκληρης γραμμής σε μία μεταβλητή Θα πρέπει να αποθηκεύσουμε την γραμμή σε μία μεταβλητή χαρακτήρα χρησιμοποιώντας read με format Α π.χ. Character(80)::s! Το 80 είναι ενδεικτικό Open(10,file= data.txt ) Read(10, (A) ) s

Διάβασμα μέχρι το τέλος ενός αρχείου, αν δεν γνωρίζουμε το πλήθος των γραμμών Έστω π.χ. ότι έχουμε ένα αρχείο με 3 ακεραίους ανά γραμμή, τότε: Integer::x,y,z,st open(10,file= data.txt ) Do read(10,*,iostat=st) x,y,z if (st==-1) exit <επεξεργασία των x,y,z> End do st==-1 σημαίνει ότι φτάσαμε στο EOF

Ειδική χρήση αρχείων για μετατροπή αριθμών σε αλφαριθμητικά Έστω ότι επιθυμούμαι να συνενώσουμε ένα αλφαριθμητικό με έναν ακέραιο (o οποίος βρίσκεται σε μια μεταβλητή). π.χ. το test με το 452 και στη συνέχεια με το -a, ώστε τελικά να πάρουμε: test452-a character(15)::s1= test',s2,s integer::n=452 write(s2,'(i5)') n s=trim(s1)//trim(adjustl(s2))// -a print*,s H Fortran επιτρέπει να χρησιμοποιήσουμε ένα αλφαριθμητικό αντί του αριθμού της λογικής μονάδας.

Δυναμική Δημιουργία Αρχείων Έστω ότι θέλουμε να δημιουργήσουμε 9 αρχεία με ονόματα: data_1.txt, data_2.txt,, data_9.txt character(10)::f Integer::n do n=1,9 f='data_' // achar(48+n) // '.txt' open(10*n,file=f)... close(10*n) end do 48 είναι ο ASCII κωδικός για τον χαρακτήρα 0 Τα write και read πρέπει να αναφέρονται στη λογική μονάδα 10*n