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

Σχετικά έγγραφα
Streams Input / Output in C++ George Kastrinis

Προγραµµατιστικές Τεχνικές

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

Οντοκεντρικός Προγραμματισμός

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

Προγραμματιστικές τεχνικές

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

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

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES)

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Η γλώσσα προγραμματισμού C

Διάλεξη 18η: Διαχείρηση Αρχείων

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στην πληροφορική

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι (ΗΥ120)

Η γλώσσα προγραμματισμού C

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

Ενδεικτική περιγραφή μαθήματος

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

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

Η γλώσσα προγραμματισμού C

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

test.txt #include <iostream> #include <fstream> int main()

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Στοιχειώδης προγραμματισμός σε C++

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

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

Προγραμματισμός Ι (ΗΥ120)

Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

10.1 Γενικά για τα streams

Εργαστήριο 1. Βαθμός ΑΜ Εργ1.2 Σχόλια Εργ1.3 Σχόλια (20)

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Προγραμματισμός Ι (ΗΥ120)

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομημένος Προγραμματισμός

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Transcript:

1

Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ Hdd, cd, dvd) με την μορφή αρχείων. Τα αρχεία είναι ένα σύνολο τιμών του ίδιου τύπου. Μήκος του αρχείου είναι ο αριθμός των στοιχείων του. Το κενό αρχείο έχει μήκος 0 (μηδέν) Παραδείγματα: 1. το (5, -3, 34, -23, 7) είναι ένα αρχείο τύπου int μήκους 5 και 2. το ( s, /, a, S, @, o, *, _ ) είναι τύπου char μήκους 8. 2

Μορφοποίηση Τα αρχεία που περιέχουν χαρακτήρες όπως το παράδειγμα 2 στην προηγούμενη διαφάνεια ονομάζονται αρχεία κειμένου ή μορφοποιημένα αρχεία και μπορούν να διαβαστούν εύκολα από έναν κειμενογράφο. Τα αρχεία που περιέχουν αριθμητικές τιμές όπως το παράδειγμα 1 που μπορεί να έχουν προκύψει από επεξεργασία τιμών και εκφράσεων από τον υπολογιστή ονομάζονται δυαδικά αρχεία ή μη μορφοποιημένα αρχεία. Τα αρχεία αυτά διαβάζονται από ειδικά προγράμματα. 3

Δημιουργία αρχείων 1/2 Για να δημιουργήσουμε ένα αρχείο πρέπει πρώτα να φτιάξουμε ένα ρεύμα (stream) από το αρχείο προς το πρόγραμμα και από το πρόγραμμα προς το αρχείο, κατόπιν να βρούμε την αρχή του αρχείου και τέλος να ανοίξουμε (open) το ρεύμα του αρχείου. Για το σκοπό αυτό χρησιμοποιούμε την κλάση fstream (file stream) του αρχείου κεφαλίδας fstream.h η οποία ανοίγει ρεύματα διπλής κατεύθυνσης και κληρονομεί χαρακτηριστικά από την κλάση iostream καθώς και από την υπερκλάση ios. 4

Δημιουργία αρχείων 2/2 Στην αρχή του κώδικα θα πρέπει να συμπεριλάβουμε το αρχείο κεφαλίδας fstream.h με την δήλωση: #include <fstream.h> Στο αρχείο κεφαλίδας fstream.h υπάρχουν επίσης και οι κλάσεις: ifstream (input file stream) για ρεύματα από το αρχείο προς το πρόγραμμα και ofstream (output file stream) για ρεύματα από το πρόγραμμα προς το αρχείο. 5

Εγγραφή σε αρχείο Για να γράψω σε ένα αρχείο χρησιμοποιώ τη δήλωση: ofstream συμβολικό_όνομα( όνομα_αρχείου.txt ); δηλαδή μπορώ να γράψω: ofstream my_input_file( test.txt ); κατόπιν ακολουθούν αυτά που θα γράψω στο αρχείο (π.χ μεταβλητές, συμβολοσειρές) χρησιμοποιώντας το συμβολικό όνομα και τον τελεστή εξαγωγής ροής << δηλαδή γράφω: my_input_file<<x; my_input_file<<char_array; 6

Ανάγνωση από αρχείο Για να διαβάσω από ένα αρχείο χρησιμοποιώ τη δήλωση: ifstream συμβολικό_όνομα( όνομα_αρχείου.txt ); δηλαδή μπορώ να γράψω: ifstream my_output_file( test.txt ); κατόπιν χρησιμοποιώ το συμβολικό όνομα και τον τελεστή εισαγωγής ροής >> δηλαδή γράφω: my_output_file>>x; my_output_file>>char_array; 7

Τέλος αρχείου (EOF) Όταν μία εντολή διαβάσει μετά την τελευταία καταχώρηση ενός αρχείου, τότε ο υπολογιστής θα επιστρέψει την δήλωση eof (end of file). Αυτό είναι ένα μήνυμα λάθους που επιστρέφεται από μία ροή εισόδου ή εξόδου και η τιμή του είναι 0. Σε αυτές τις περιπτώσεις ελέγχουμε το τέλος του αρχείου, χρησιμοποιώντας το συμβολικό του όνομα σε μια επανάληψη με συνθήκη αντίστροφης ισότητας και δεύτερο τελεστέο το EOF. Π.χ while(!my_file.eof()){ } για όσο δεν επιστρέφεται eof (δηλ. 0) εκτέλεσε τις προτάσεις του βρόχου. 8

Συναρτήσεις open και close Στα προηγούμενα είδαμε ταυτόχρονα δήλωση και άνοιγμα, καθώς και δήλωση και κλείσιμο ροής. Για να χρησιμοποιήσουμε συγκεκριμένες ιδιότητες της ροής, μας βοηθούν οι συναρτήσεις open και close της κλάσης fstream. Στην προκειμένη περίπτωση η δήλωση γίνεται σε διαφορετική εντολή και το άνοιγμα ή το κλείσιμο της ροής σε διαφορετική εντολή. Oι συναρτήσεις open και close χρησιμοποιούνται και με τις κλάσεις ifstream και ofstream. 9

Σύνταξη της open open (filename, mode, protection) όπου : filename: το όνομα του αρχείου, mode: σημαίες (flags) της ios που χωρίζονται με και protection: σημαίες του τύπου πρόσβασης που χωρίζονται με. 10

Flags mode της ios Σημαίες 1/2 ios::app άνοιγμα για εγγραφή στο τέλος του αρχείου, ios::ate άνοιγμα και τοποθέτηση του δείκτη αρχείου στο τέλος, ios::in άνοιγμα για ανάγνωση, ios::out άνοιγμα για εγγραφή, ios::trunc καταστροφή των περιεχομένων του αρχείου εάν αυτό υπάρχει ήδη, ios::nocreate δεν εκτελείται η open αν το αρχείο δεν υπάρχει, ios::noreplace δεν εκτελείται η open αν το αρχείο υπάρχει, ios::binary αρχείο για εγγραφή δυαδικών δεδομένων. 11

Flags για την protection Σημαίες 2/2 filebuf::sh_none αποκλειστική πρόσβαση, filebuf::sh_read επιτρέπεται η πολλαπλή πρόσβαση ανάγνωσης, filebuf:: sh_write επιτρέπεται η πολλαπλή πρόσβαση εγγραφής. 12

Άνοιγμα και κλείσιμο αρχείου Για να ανοίξω αρχείο στο οποίο θα γράψω τιμές πληκτρολογώ: fstream my_output_file; my_output_file.open( file.txt,ios::out); Για να το κλείσω πληκτρολογώ: my_output_file.close(); Εάν το αρχείο βρίσκεται σε άλλον φάκελο από αυτόν που βρίσκεται το πρόγραμμα τότε πρέπει να δηλώσεις όλη την διαδρομή στον δίσκο με την χρήση της διπλής καθέτου \\. Π.χ. my_output_file.open ( c:\\documents\\folder\\file.txt,ios::out); 13

Επαναχρησιμοποίηση του ρεύματος Για να ξαναχρησιμοποιήσουμε ένα ρεύμα για να ανοίξουμε ένα άλλο αρχείο προς επεξεργασία, θα πρέπει να έχει κλείσει σωστά από την προηγούμενη χρήση του. Δηλαδή πρέπει να υπάρχει επιστροφή eof και κλείσιμο με close(). Κατόπιν ξαναχρησιμοποιούμε το ρεύμα με την εντολή clear(). Π.χ my_output_file.close(); my_output_file.clear(); my_output_file.open( file_new.txt,ios::out); 14

Ανάγνωση & εγγραφή χαρακτήρων Για την ανάγνωση και εγγραφή χαρακτήρων χρησιμοποιούμε τις συναρτήσεις: get(ch) όπου ch η μεταβλητή χαρακτήρα που διαβάζεται από την ροή. η get(ch) διαβάζει έναν χαρακτήρα από την ροή. και put(ch) όπου ch η μεταβλητή χαρακτήρα που εγγράφεται στη ροή. η put (ch) εγγράφει έναν χαρακτήρα σε ροή. 15

Ανάγνωση & εγγραφή δυαδικών δεδομένων Για την ανάγνωση read(indata,num). Όπου indata είναι ομάδα δεδομένων που διαβάζεται ως char* και αποδίδεται στην διεύθυνση αντικειμένου ή μεταβλητής με τον τελεστή & και num τα bytes που διαβάζονται σε ακέραιη μορφή με την βοήθεια του τελεστή sizeof(). Για την εγγραφή Write(outdata,num). Όπου outdata είναι ομάδα δεδομένων που εγγράφεται στην ροή ως char* και num τα bytes που εγγράφονται σε ακέραιη μορφή με την βοήθεια του τελεστή sizeof(). 16