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

Σχετικά έγγραφα
Εισαγωγή στην πληροφορική

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

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

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

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

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

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

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

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

Streams Input / Output in C++ George Kastrinis

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

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

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

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

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

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

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

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

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

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

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

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

Περιγραφή αλγορίθµων. ιαγράµµατα ροής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

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

Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Αναφορές, είκτες και Αλφαριθμητικά

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

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

Εισαγωγή στους Υπολογιστές

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

char name[5]; /* define a string of characters */

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

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

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

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι χρειάζεται η εντολή if ; Εντολή if. Παράδειγμα #1. Παράδειγμα #1

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

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

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

Δομές Επανάληψης. Εισαγωγή στη C++

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

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

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

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

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

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

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Περιεχόµενα. I Βασικές Γνώσεις 1

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

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

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΜΟΝΤΕΛΟΠΟΙΗΣΗ Ε ΟΜΕΝΩΝ, ΚΛΑΣΙΚΑ ΜΟΝΤΕΛΑ Ε ΟΜΕΝΩΝ

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Είσοδος / έξοδος δεδοµένων από / προς αρχεία

Αρχεία Τα αλληλεπιδραστικά (interactive) προγράµµατα πραγµατοποιούν είσοδο δεδοµένων από το πληκτρολόγιο και έξοδο προς την οθόνη. Αυτή η ροή δεδοµένων απαιτεί παρουσία του χρήστη την ώρα εκτέλεσης (run time). Η χρήση δεδοµένων που βρίσκονται σε αρχεία (files), δηλαδή µόνιµα µέσα αποθηκευσης, προσφέρει σηµαντικά πλεονεκτήµατα: Τα δεδοµένα µπορούν να χρησιµοποιηθούν πολλές φορές, από το ίδιο ή άλλο πρόγραµµα, χωρίς να χρειάζεται να πληκτρολογηθούν ξανά. Η ενηµέρωση ή τροποποίηση των δεδοµένων είναι πολύ εύκολη Σε πολλές περιπτώσεις, ένα πρόγραµµα δηµιουργεί και καταγράφει µεγάλες ποσότητες δεδοµένων σε αρχείο χωρίς παρέµβαση του χρήστη. Ένα πρόγραµµα µπορεί να χρησιµοποιεί αρχεία για δύο σκοπούς: 1) είσοδο δεδοµένων (input) - αρχείο εισόδου 2) έξοδο δεδοµένων (output) - αρχείο εξόδου

Αρχεία κειµένου (text files) Ανάλογα µε τον τρόπο καταχώρησης των δεδοµένων, τα αρχεία διακρίνονται σε: Aρχεία κειµένου (text files), στα οποία τα δεδοµένα αποτελούν µια σειρά από κωδικοποιηµένους αλφαριθµητικούς χαρακτήρες (π.χ. ASCII), οργανωµένη σε εγγραφές (records). Το περιεχόµενο των αρχείων αυτών είναι κατανοητό όταν εµφανιστεί στην οθόνη και µπορεί να εκτυπωθεί. υαδικά αρχεία (binary files), στα οποία τα δεδοµένα καταχωρούνται µε την δυαδική αναπαράστασή τους. Θα ασχοληθούµε µε αρχεία κειµένου, που ο χρήστης µπορεί να δηµιουργήσει εύκολα µε ένα απλό συντάκτη κειµένου (text editor), όπως ο Notepad, ο SourceEdit κ.α. Προσοχή: σύνθετοι επεξεργαστές κειµένου (word processor), π.χ. Word, ΕΝ είναι κατάλληλοι για δηµιουργία αρχείων κειµένου, εκτός αν ζητηθεί αποθήκευση του κειµένου σε µορφή απλού αρχείου (.txt) Σ ένα αρχείο κειµένου, οι εγγραφές οριοθετούνται από τον χαρακτήρα end-of-line, ενώ το τέλος του αρχείου από τον χαρακτήρα end-of-file.

Η βιβλιοθήκη fstream Η διαχείρηση εισόδου (input) και εξόδου (output) δεδοµένων σε αρχεία γίνεται µε την χρήση ρευµάτων (streams). Γνωρίζουµε ήδη τα καθιερωµένα ρεύµατα (standard streams) που περιέχονται στην βιβλιοθήκη iostream: cin (καθιερωµένο ρεύµα εισόδου από το πληκτρολόγιο) cout (καθιερωµένο ρεύµα εξόδου προς την οθόνη) cerr (καθιερωµένο ρεύµα εξόδου για µηνύµατα σφαλµάτων στην οθόνη) Αντίστοιχα, η βιβλιοθήκη fstream περιέχει, µεταξύ άλλων, τις εξής κλάσεις ρευµάτων: ifstream = input file stream (ρεύµα εισόδου από αρχείο) ofstream = output file stream (ρευµα εξόδου προς αρχείο) fstream = file stream (ρεύµα αρχείου, χρήσιµο για είσοδο και έξοδο προς το ίδιο αρχείο) Για την χρήση αρχείων εισόδου / εξόδου είναι απαραίτητη η άναφορά στην βιβλιοθήκη fstream: #include <fstream>

Ρεύµατα εισόδου από αρχεία Για την είσοδο δεδοµένων από ένα αρχείο: 1) δηλώνεται ένα ρεύµα τύπου ifstream, µε κάποιο συγκεκριµένο όνοµα 2) το ρεύµα αυτό συσχετίζεται µε ένα αρχείο (µε θέση και όνοµα που ακολουθούν τους κανόνες του λειτουργικού συστήµατος). 3) Η µεταφορά δεδοµένων είναι δυνατή µόνο αφού το αρχείο έχει ανοιχτεί Παράδειγµα: ήλωση ρεύµατος: ifstream temps; Σύνδεση µε αρχείο: temps.open( temperatures.txt, ios::in); // ταυτόχρονο άνοιγµα του αρχείου Η διαδικασία µπορεί να ενοποιηθεί σε µια µόνο εντολή: ifstream temps ( temperatures.txt, ios::in); // προαιρετικά Η εκχώρηση τιµών, που βρίσκονται στο αρχείο, σε µεταβλητές του προγράµµατος γίνεται µε τρόπο αντίστοιχο µε είσοδο από το πληκτρολόγιο. Η εντολή: temps >> tval; εκχωρεί στην µεταβλητή tval την τιµή που βρίσκεται στο αρχείο temperatures.txt µέσω του ρεύµατος εισόδου temps.

Ρεύµατα εξόδου προς αρχεία Εντελώς αντίστοιχα µε τα ρεύµατα εισόδου, ορίζονται και χρησιµοποιούνται τα ρεύµατα εξόδου προς αρχεία. Παράδειγµα: ήλωση ρεύµατος: ofstream results; Σύνδεση µε αρχείο: results.open( areas.txt, ios::out); Η διαδικασία µπορεί να ενοποιηθεί σε µια µόνο εντολή: ofstream results ( areas.txt, ios::out); // προαιρετικά Προσοχή: αν το αρχείο που συνδέεται δεν υπάρχει, τότε δηµιουργείται µε την εντολή αυτή. Αν το αρχείο υπάρχει ήδη, τα περιεχόµενά του διαγράφονται και ετοιµάζεται να δεχθεί τις νέες εγγραφές. Η καταγραφή τιµών µεταβλητών του προγράµµατος στο αρχείο γίνεται µε τρόπο αντίστοιχο µε την έξοδο προς την οθόνη. Η εντολή: results << Area of triangle = << Et << endl; κατγράφει στο αρχείο areas.txt το αλφαριθµητικό και την τιµή της µεταβλητής Et µέσω του ρεύµατος εξόδου results.

Προσάρτηση εγγραφών σε αρχείο Σε πολλές περιπτώσεις είναι αναγκαίο να γίνουν εγγραφές σε ένα αρχείο χωρίς να διαγραφούν τα περιεχόµενα που ήδη έχει. Για το σκοπό αυτό το άνοιγµα του αρχείου γίνεται µε την µεθοδο της προσάρτησης (append mode): ofstream newvals ( data.txt, ios::app); // υποχρεωτικά! Προφανώς, στην περίπτωση αυτή το αρχείο πρέπει να υπάρχει ήδη. Οι νέες εγγραφές προστίθενται στο τέλος του αρχείου (µετά τις υπάρχουσες).

Συναρτήσεις που σχετίζονται µε τα ρεύµατα προς αρχεία Πρίν από κάθε χρήση ρεύµατος εισόδου ή εξόδου είναι χρήσιµο να γίνεται έλεγχος για την επιτυχία της σύνδεσης µε το αρχείο. Το όνοµα του ρεύµατος (π.χ. streamname µπορεί να χρησιµοποιηθεί ως λογική έκφραση για τον έλεγχο αυτό: αν ο έλεγχος: if (streamname) είναι αληθής (true), τότε η σύνδεση µε το αρχείο που έχει συσχετιστεί είναι επιτυχής. Επιπλέον, διάφορες συναρτήσεις εξυπηρετούν ειδικές ανάγκες. Παραδείγµατα: streamname.is_open() - επιστρέφει τιµή true αν το ρεύµα είναι ανοικτό (ενεργό) streamname.fail() - επιστρέφει τιµή true αν το ρεύµα βρεθεί σε κατάσταση σφάλµατος (π.χ. ανεπιτυχής σύνδεση µε αρχείο ή ανάγνωση δεδοµένων διαφορετικού τύπου από τον αναµενόµενο κλπ.). Στην κατάσταση αυτή ΕΝ µπορεί να γίνει οποιαδήποτε µεταφορά δεδοµένων από το ρεύµα µέχρι να εκτελεστεί η συνάρτηση streamname.clear(). streamname.eof() - επιστρέφει τιµή true αν το ρεύµα (εισόδου) προσπαθήσει να διαβάσει µετά το τέλος του αρχείου εισόδου. streamname.close() - διακόπτει την σύνδεση του ρεύµατος µε το αρχείο που είχε συσχετισθεί, µε ταυτόχρονο κλείσιµο του αρχείου. Τώρα, το ίδιο ρεύµα µπορεί να συνδεθεί µε άλλο αρχείο, µε την συνάρτηση: streamname.open( filename, ios::mode)

Παραδείγµατα Στο διαδικτυακό τόπο του µαθήµατος βρίσκονται µερικά αρχεία µε παραδείγµατα. Το αρχείο pt_lect2_ex1.cpp είναι µια απλή επίδειξη των βασικών µεθόδων χρήσης αρχείων εισόδου / εξόδου. Το αρχείο pt_lect2_ex2.cpp περιλαµβάνει µια πιο σύνθετη εφαρµογή διαχείρισης γεωµετρικών οντοτήτων, που χρειάζεται το αρχείο εισόδου quad_vertex.txt (βρίσκεται επίσης στον διαδικτυακό τόπο). Το αρχείο αυτό περιέχει τις ορθογώνιες συντεταγµένες (x i, y i ) των 4 κορυφών ενός πλήθους τετραπλεύρων (8 συντεταγµένες ανά γραµµή) Η εφαρµογή διαβάζει τα δεδοµένα, υπολογίζει τα µήκη των πλευρών, την περίµετρο και το εµβαδόν κάθε τετραπλεύρου και, τέλος, γράφει όλα τα αποτελέσµατα στο αρχείο quad_results.txt

Παράδειγµα 2