343 Ειςαγωγι ςτον Ρρογραμματιςμό

Σχετικά έγγραφα
343 Ειςαγωγι ςτον Ρρογραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Ρρογραμματιςμό

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

343 Ειςαγωγι ςτον Προγραμματιςμό

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

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

17. Πολυδιάςτατοι πίνακεσ

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

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

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

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

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

343 Ειςαγωγι ςτον Προγραμματιςμό

16. Πίνακεσ και Συναρτήςεισ

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

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

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

343 Ειςαγωγι ςτον Προγραμματιςμό

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

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

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

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

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

343 Ειςαγωγι ςτον Προγραμματιςμό

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

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

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

343 Ειςαγωγι ςτον Προγραμματιςμό

Φροντιςτήριο. Linked-List

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Κλάσεις και αντικείμενα #include <iostream.h<

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Εργαςτιριο Βάςεων Δεδομζνων

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Streams Input / Output in C++ George Kastrinis

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

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

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

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

Γομέρ Γεδομένων (Data Structures) Χαπμανδάπηρ Δςάγγελορ, Τμήμα Δθαπμοζμένων Μαθημαηικών, Δαπινό Δξάμηνο 2010/11. Διζαγωγή: Σύνηομη Δπιζκόπηζη ηηρ C++

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

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

Δομζσ Δεδομζνων Πίνακεσ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

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

Γενικά Μαθηματικά ΙΙ

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

343 Ειςαγωγι ςτον Ρρογραμματιςμό

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

ΥΡΟΝΣΙΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣΗ» ΔΙΑΓΩΝΙΜΑ ΘΕΜΑΣΑ Β ΛΤΚΕΙΟΤ ΥΕΒΡΟΤΑΡΙΟ 2018 ΑΕΠΠ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

343 Ειςαγωγι ςτον Ρρογραμματιςμό

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

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

8 ΥΜΒΟΛΟΕΙΡΕ - STRINGS

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

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

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

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

Προγραμματιςμόσ Συςτημάτων

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

Πωσ δθμιουργώ φακζλουσ;

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

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

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

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

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη

Γενικά Μαθηματικά ΙΙ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Transcript:

343 Ειςαγωγι ςτον Ρρογραμματιςμό Τμιμα Μακθματικϊν Ρανεπιςτιμιο Ιωαννίνων Ακαδθμαϊκό Ζτοσ 2016-2017 Χάρθσ Ραπαδόπουλοσ 207δ, B όροφοσ e-mail: charis@cs.uoi.gr Ωρεσ Γραφείου: Ρζμπτθ 11-13

Θ: διάλεξη (θεωρία) Ε: Εργαστήριο Q: Σεστ quiz Οκτώβριος 2016 Δ Σ Σ Π Π 3 4 5 6 7 Θ 10 11 12 13 14 Θ 17 18 19 20 21 Θ 24 Ε 25 Ε 26 27 28 Νοέμβριος 2016 Δ Σ Σ Π Π 1 2 3 4 Θ 7 Ε 8 Ε 9 10 11 Θ 14 Ε 15 16 17 18 Θ 21 Σ 22 23 24 25 Θ 28 Ε 29 Ε 30 Δεκέμβριος 2016 Δ Σ Σ Π Π 1 2 Θ 5 E 6 Ε 7 8 9 Θ 12 Q 13 14 15 16 Θ 19 20 Ε 21 22 23 Ιανουάριος 2017 Δ Σ Σ Π Π 2 3 4 5 6 9 10 11 12 13 Θ Ημερολόγιο Μακιματοσ Εβδομάδα Θζματα Ύλη βιβλιογραφίας Πα, 7 Οκτωβρίου Εισαγωγικά μαθήματος & Δυαδική *1+: 1.1, Ραράρτθμα 3 αναπαράσταση *2+: Κεφ. 1, Β, Δ Πα, 14 Οκτωβρίου Είσοδος/Έξοδος δεδομένων, τύποι δεδομένων & *1+: 1.2, 1.3, 1.4, 1.5, Ραράρτθμα 1 μεταβλητών *2+: Κεφ. 2, Γ Πα, 21 Οκτωβρίου Προεπεξεργαστής, αριθμητικοί και λογικοί *1+: 2.1, Ραράρτθμα 2 τελεστές *2+: 4.11, 4.12, Α, ΣΤ Δε, Σρ, 24-25 Οκτ 1 ο Εργαστήριο Πα, 4 Νοεμβρίου Ροή ελέγχου: if/else, switch, for, while, do-while [1]: 2.2, 2.3 και ροή ελέγχου if/else *2+: Κεφ. 4, Κεφ. 5 Δε, Σρ, 7-8 Νοε 2 ο Εργαστήριο Πα, 11 Νοεμβρίου υναρτήσεις, εμβέλεια μεταβλητών και [1]: 3.1, 3.2, 3.3, 4.1, 4.2, 13.1, 13.2 αναδρομή *2+: Κεφ. 6 Δε, Σρ, 14-15 Νοε 3 ο Εργαστήριο Πα, 18 Νοεμβρίου Επανάληψη Εργαστηρίου [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, 21 Νοε 1 ο Test (Ανάπτυξη κώδικα) Πα, 25 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, Σρ, 28-29 Νοε 4 ο Εργαστήριο Πα, 2 Δεκεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) *1+: Ραράρτθμα 4, 9.1, 9.2, 9.3 *2+: 6.7, 6.8, Κεφ. 18 Δε, Σρ, 5-6 Δεκ 5 ο Εργαστήριο Πα, 9 Δεκεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση *1+: Ραράρτθμα 4, 9.1, 9.2, 9.3 στοιχείων *2+: 6.7, 6.8, Κεφ. 18 Δε, 12 Δεκ 2 ο Quiz (Ερωτήσεις πολλαπλών επιλογών) Πα, 16 Δεκεμβρίου υμβολοσειρές, εγγραφές, δομές και χρήση [1]: 6.1, 5.3, 12.1, 12.2, 12.4, 13.3 αρχείων *2+: Κεφ. 21, 7.7, 7.8, 17.1-17.10, 19 Δε, 19 Δεκ 6 ο Εργαστήριο (Προαιρετικό) Πα, 13 Ιανουαρίου Επανάληψη

Θ: διάλεξη (θεωρία) Ε: Εργαστήριο Q: Σεστ quiz Οκτώβριος 2016 Δ Σ Σ Π Π 3 4 5 6 7 Θ 10 11 12 13 14 Θ 17 18 19 20 21 Θ 24 Ε 25 Ε 26 27 28 Νοέμβριος 2016 Δ Σ Σ Π Π 1 2 3 4 Θ 7 Ε 8 Ε 9 10 11 Θ 14 Ε 15 16 17 18 Θ 21 Σ 22 23 24 25 Θ 28 Ε 29 Ε 30 Δεκέμβριος 2016 Δ Σ Σ Π Π 1 2 Θ 5 E 6 Ε 7 8 9 Θ 12 Q 13 14 15 16 Θ 19 20 Ε 21 22 23 Ιανουάριος 2017 Δ Σ Σ Π Π 2 3 4 5 6 9 10 11 12 13 Θ Ημερολόγιο Μακιματοσ Εβδομάδα Θζματα Ύλη βιβλιογραφίας Πα, 7 Οκτωβρίου Εισαγωγικά μαθήματος & Δυαδική *1+: 1.1, Ραράρτθμα 3 αναπαράσταση *2+: Κεφ. 1, Β, Δ Πα, 14 Οκτωβρίου Είσοδος/Έξοδος δεδομένων, τύποι δεδομένων & *1+: 1.2, 1.3, 1.4, 1.5, Ραράρτθμα 1 μεταβλητών *2+: Κεφ. 2, Γ Πα, 21 Οκτωβρίου Προεπεξεργαστής, αριθμητικοί και λογικοί *1+: 2.1, Ραράρτθμα 2 τελεστές *2+: 4.11, 4.12, Α, ΣΤ Δε, Σρ, 24-25 Οκτ 1 ο Εργαστήριο Πα, 4 Νοεμβρίου Ροή ελέγχου: if/else, switch, for, while, do-while [1]: 2.2, 2.3 και ροή ελέγχου if/else *2+: Κεφ. 4, Κεφ. 5 Δε, Σρ, 7-8 Νοε 2 ο Εργαστήριο Πα, 11 Νοεμβρίου υναρτήσεις, εμβέλεια μεταβλητών και [1]: 3.1, 3.2, 3.3, 4.1, 4.2, 13.1, 13.2 αναδρομή *2+: Κεφ. 6 Δε, Σρ, 14-15 Νοε 3 ο Εργαστήριο Πα, 18 Νοεμβρίου Επανάληψη Εργαστηρίου [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, 21 Νοε 1 ο Test (Ανάπτυξη κώδικα) Πα, 25 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 5.1, 5.2, 5.4 *2+: Κεφ. 7 Δε, Σρ, 28-29 Νοε 4 ο Εργαστήριο Πα, 2 Δεκεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) *1+: Ραράρτθμα 4, 9.1, 9.2, 9.3 *2+: 6.7, 6.8, Κεφ. 18 Δε, Σρ, 5-6 Δεκ 5 ο Εργαστήριο Πα, 9 Δεκεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση *1+: Ραράρτθμα 4, 9.1, 9.2, 9.3 στοιχείων *2+: 6.7, 6.8, Κεφ. 18 Δε, 12 Δεκ 2 ο Quiz (Ερωτήσεις πολλαπλών επιλογών) Πα, 16 Δεκεμβρίου υμβολοσειρές, εγγραφές, δομές και χρήση [1]: 6.1, 5.3, 12.1, 12.2, 12.4, 13.3 αρχείων *2+: Κεφ. 21, 7.7, 7.8, 17.1-17.10, 19 Δε, 19 Δεκ 6 ο Εργαστήριο (Προαιρετικό) Πα, 13 Ιανουαρίου Επανάληψη

Ενότθτα 24 ΔΟΜΕΣ 10-4

Δομζσ 2 θ ομαδοποιθμζνθ δομι δεδομζνων: struct Θυμίηουμε: "ομαδοποίθςθ" Ρίνακεσ: ςυλλογι από τιμζσ ίδιου τφπου Δομι: ςυλλογι από τιμζσ διαφορετικϊν τφπων Τισ χειριηόμαςτε ωσ ζνα αντικείμενο, όπωσ τουσ πίνακεσ Βαςικι διαφορά: Ρρζπει πρϊτα να "ορίςουμε" τθν δομι Ρριν από τθν διλωςθ οποιαςδιποτε μεταβλθτισ 10-5

Τφποι δομϊν Ορίηουμε τθν δομι κακολικά (ςυνικωσ) Δεν δεςμεφουμε μνιμθ Απλά δίνουμε ζναν "τφπο" για το πϊσ θ δομι κα μοιάηει Οριςμόσ: struct CDAccountV1 double balance; double interestrate; int term; }; όνομα τθσ νζασ δομισ (ετικζτα) ονόματα για τα μζλθ 10-6

Διλωςθ μεταβλθτϊν δομισ struct CDAccountV1 double balance; double interestrate; int term; }; Με τον οριςμό τθσ δομισ μποροφμε τϊρα να ορίςουμε νζεσ μεταβλθτζσ αυτοφ του τφπου: CDAccountV1 account; Ακριβϊσ όπωσ δθλϊνουμε για απλοφσ τφπουσ Η μεταβλθτι account τϊρα είναι τφπου CDAccountV1 Ρεριζχει "τιμζσ για τα μζλθ" Για κάκε "τμιμα" τθσ δομισ 10-7

Ρρόςβαςθ ςτα μζλθ τθσ δομισ Ο τελεςτισ τελεία. ζχει πρόςβαςθ ςτα μζλθ: account.balance account.interestrate account.term struct CDAccountV1 double balance; double interestrate; int term; }; CDAccountV1 account; Καλοφνται "μεταβλθτζσ για τα μζλθ" Τα "τμιματα" τθσ μεταβλθτισ δομισ Διαφορετικζσ δομζσ μποροφν να ζχουν το ίδιο όνομα για τισ μεταβλθτζσ για τα μζλθ Δεν ζχουμε ςφγκρουςθ 10-8

#include <iostream> using namespace std; struct CDAccountV1 double balance; double interestrate; int term; }; } void getdata(cdaccountv1& theaccount); int main( ) CDAccountV1 account; getdata(account); void getdata(cdaccountv1& theaccount) cout << "Δώσε λογαριασμό: "; cin >> theaccount.balance; cout << "Δώσε επιτόκιο "; cin >> theaccount.interestrate; cout << "Δώσε αριθμό μηνών"; cin >> theaccount.term; } double ratefraction, interest; ratefraction = account.interestrate/100.0; interest = account.balance*(ratefraction*(account.term/12.0)); account.balance = account.balance + interest; cout << "When your CD matures in " << account.term << " months,\n" << "it will have a balance of $" << account.balance << endl; 10-9

Ραραδείγματα struct StudentRecord int studentnumber; char grade; }; int main() StudentRecord yourrecord; yourrecord.studentnumber = 10002; yourrecord.grade = 'A'; } struct Automobile int year; int doors; double horsepower; char model[30]; }; int main() Automobile my; my.year = 2004; my.doors = 2; my.horsepower = 122; strcpy(my.model,"mini"); } 10-10

Ραράλειψθ ερωτθματικοφ ςτο τζλοσ Δεν επιτρζπεται θ παράλειψθ ερωτθματικοφ ςτο τζλοσ struct WeatherData double temperature; double windvelocity; }; Είναι απαραίτθτο γιατί μπορείτε να δθλϊςετε μεταβλθτζσ δομισ ςτο ςθμείο αυτό struct WeatherData double temperature; double windvelocity; } high, low; 10-11

Χριςθ ιεραρχικϊν δομϊν struct Date int day; int month; int year; }; struct PersonInfo double height; double weight; Date birthdate; }; Δομζσ που μπορεί τα μζλθ να είναι μικρότερεσ δομζσ Ζχει ςθμαςία θ ςειρά που δθλϊνουμε τισ δομζσ πρϊτα δθλϊνεται θ μικρότερθ δομι Αν ζχουμε μια μεταβλθτι: PersonInfo person1; Τότε εμφανίηουμε ςτθν ζξοδο: cout << person1.birthdate.day; 10-12

Οι δομζσ ςε ορίςματα ςε ςυναρτιςεισ Τα περνάμε όπωσ τα απλά δεδομζνα Ραράμετροσ με τιμι Ραράμετροσ με αναφορά Ή ςυνδυαςμόσ Μποροφν επίςθσ να είναι ο επιςτρεφόμενοσ τφποσ μιασ ςυνάρτθςθσ Επιςτρεφόμενοσ Τφποσ είναι μια δομι Η εντολι return ςτον οριςμό τθσ ςυνάρτθςθσ ςτζλνει μια μεταβλθτι δομισ ςε αυτόν που τθν κάλεςε 10-13

Απόδοςθ αρχικϊν τιμϊν ςε δομζσ Μποροφν να αρχικοποιθκοφν κατά τθ διλωςθ struct Date int day; int month; int year; }; Date duedate = 12, 31, 2003}; Η διλωςθ παρζχει αρχικά δεδομζνα ςε όλα τα τρία μζλθ τθσ δομισ 10-14

Ραραδείγματα struct Shoetype char style; double price; }; Shoetype shoe1, shoe2; shoe1.style = 'A'; shoe1.price = 9.99; cout << shoe1.style << shoe1.price << endl; shoe2 = shoe1; shoe2.price = shoe2.price / 9; cout << shoe2.style << shoe2.price << endl; Shoetype discount(shoetype oldshoe) Shoetype temp; temp.style = oldshoe.style; temp.price = 0.9 * oldshoe.price; return temp; } void readshoetype(shoetype& newshoe1) cout << "Δώσε στυλ:"; cin >> newshoe1.style; cout << "Δώσε τιμή:"; cin >> newshoe1.price; } 10-15

Ενότθτα 25 ΧΡΗΣΗ ΑΡΧΕΙΩΝ 10-16

οζσ (streams) Τυπικά: διαβάηουμε δεδομζνα από το πλθκτρολόγιο και εκτυπϊνουμε ςε ζνα τερματικό παράκυρο. Ωςτόςο: Μποροφμε να διαβάηουμε από αρχεία Μποροφμε να εκτυπϊνουμε ςε αρχεία Stream: Μια ροι από χαρακτιρεσ οι ειςόδου (Input stream) Μπορεί να ζρκει από το πλθκτρολόγιο Μπορεί να ζρκει από αρχείο οι εξόδου (Output stream) Μπορεί να ςταλκεί ςτθν οκόνθ Μπορεί να ςταλκεί ςε αρχείο 10-17

Ήδθ χρθςιμοποιοφμε ροζσ cin cout Χριςθ οϊν Η ροι ειςόδου ενϊνεται με το πλθκτρολόγιο Η ροι εξόδου ενϊνεται με τθν οκόνθ Μποροφμε να ορίςουμε άλλεσ ροζσ Από ι προσ αρχεία Ραρόμοια χριςθ όπωσ με τα cin, cout 10-18

Θεωρείςτε: Χριςθ ροϊν όπωσ με cin, cout Το πρόγραμμα ορίηει μια ροι (stream) instream που ζρχεται από κάποιο αρχείο: int thenumber; instream >> thenumber; Διαβάηει τιμι από τθν ροι stream, και τθν ανακζτει ςτο thenumber Το πρόγραμμα ορίηει μια ροι (stream) outstream που ςτζλνεται ςε κάποιο αρχείο outstream << "thenumber is " << thenumber; Γράφει τθν τιμι ςτθ ροι stream, που πάει ςε κάποιο αρχείο 10-19

Αρχεία Θα χρθςιμοποιιςουμε αρχεία text Διάβαςμα από αρχείο Πταν το πρόγραμμα δζχεται κάποια είςοδο Εγγραφι ςε αρχείο Πταν το πρόγραμμα ςτζλνει κάποια ζξοδο Ξεκινάει από τθν αρχι του αρχείου και καταλιγει προσ το τζλοσ του αρχείου Υπάρχουν και άλλοι τρόποι Θα επεκτακοφμε ςτο τζλοσ ςε άλλουσ τρόπουσ προςπζλαςθσ 10-20

Σφνδεςθ με αρχείο Ρρϊτα πρζπει να ςυνδζςουμε το αρχείο με μια ροή Για είςοδο: Αρχείο ifstream αντικείμενο Για ζξοδο: Αρχζιο ofstream αντικείμενο Οι κλάςεισ ifstream και ofstream Ορίηονται ςτθ βιβλιοκικθ <fstream> #include <fstream> 10-21

Βιβλιοκικεσ αρχείων Ε/Ε Για να επιτρζψουμε τόςο για είςοδο από αρχείο όςο και για ζξοδο ςε αρχείο : #include <fstream> using namespace std; ι #include <fstream> using std::ifstream; using std::ofstream; 10-22

Διλωςθ ροϊν Η ροι πρζπει πρϊτα να δθλωκεί όπωσ μια τυπικι μεταβλθτι: ifstream instream; ofstream outstream; Μετά πρζπει να ςυνδεκεί με το αρχείο: instream.open("infile.txt"); Καλείται "άνοιγμα αρχείου" Χρθςιμοποιεί τθν ςυνάρτθςθ open Μποροφμε να ορίςουμε τθν ακριβι διαδρομι του αρχείου 10-23

Χριςθ οϊν Μόλισ δθλωκεί χρθςιμοποιείται κανονικά! int onenumber, anothernumber; instream >> onenumber >> anothernumber; Η ροι εξόδου γίνεται παρόμοια: ofstream outstream; outstream.open("outfile.txt"); outstream << "onenumber = " << onenumber << " anothernumber = " << anothernumber; Στζλνει τα αντικείμενα ςτο αρχείο εξόδου "outfile.txt" 10-24

Ονοματολογία αρχείων Ρρογράμματα και αρχεία Τα αρχεία ζχουν δφο ονόματα ςτα προγράμματά μασ Εξωτερικό όνομα αρχείου Επίςθσ καλείται "φυςικό όνομα" Ππωσ το "infile.txt" Μερικζσ φορζσ λζγεται και "πραγματικό όνομα" Χρθςιμοποιείται μόνο μια φορά (ςτο άνοιγμα/ςφνδεςθ) Πνομα ροισ Καλείται επίςθσ και "λογικό όνομα" instream.open("infile.txt"); Το πρόγραμμα χρθςιμοποιεί το όνομα αυτό για όλα τα αρχεία που επεξεργάηεται ifstream instream; ofstream outstream; 10-25

Κλείςιμο αρχείων Τα αρχεία που ανοίγουν πρζπει να κλείνουν Πταν το πρόγραμμα ςταματάει να δζχεται είςοδο ι να ςτζλνει ςτθν ζξοδο Απελευκερϊνει τθ ροι από το αρχείο ifstream instream; ofstream outstream; instream.close(); outstream.close(); Δεν παίρνουν ορίςματα Τα αρχεία κλείνουν αυτόματα όταν το πρόγραμμα τερματίηει Ωςτόςο πρζπει εμείσ να τα κλείνουμε για να αποφεφγουμε λάκθ εγγραφισ/ανάγνωςθσ 10-26

Η ςυνάρτθςθ flush() Η ζξοδοσ ςυνικωσ "ενταμιεφεται (buffered)" αποκθκεφεται προςωρινά πριν τθν εγγραφι τθσ ςε αρχείο Η εγγραφι γίνεται ςε "ομάδεσ" Συχνά μπορεί να κζλουμε να εξαναγκάςουμε τθν εγγραφι: outstream.flush(); Η ςυνάρτθςθ flush, για όλεσ τισ ροζσ εξόδου Πλα τα δεδομζνα εξόδου (buffered) γράφονται Πταν κλείνουμε το αρχείο τότε καλείται αυτόματα θ ςυνάρτθςθ flush() 10-27

#include <fstream> using namespace std; int main( ) ifstream instream; ofstream outstream; instream.open("infile.txt"); outstream.open("outfile.txt"); infile.txt 1 2 3 4 outfile.txt The sum of the first 3 numbers in infile.txt is 6 } int first, second, third; instream >> first >> second >> third; outstream << "The sum of the first 3\n" << "numbers in infile.txt\n" << "is " << (first + second + third) << endl; instream.close( ); outstream.close( ); return 0; 10-28

Ρροςάρτθςθ ςε αρχείο Ο τυπικόσ τρόποσ που ανοίγουμε αρχείο ξεκινάνει με κενό αρχείο Ακόμα και όταν το αρχείο υπάρχει ιδθ τα δεδομζνα χάνονται Άνοιγμα για προςάρτθςθ: ofstream outstream; outstream.open("important.txt", ios::app); Αν το αρχείο δεν υπάρχει το δθμιουργεί Αν το αρχείο υπάρχει προςαρτά ςτο τζλοσ το 2 ο όριςμα είναι θ κλάςθ ios που ορίηεται ωσ ςτακερά ςτθ βιβλιοκικθ <iostream>, std namespace 10-29

Εναλλακτικόσ τρόποσ για άνοιγμα αρχείου Μποροφμε να δθλϊςουμε το όνομα του αρχείου ςτθ διλωςθ Το περνάμε ωσ ζνα όριςμα ifstream instream; instream.open("infile.txt"); Ιςοδφναμο με: ifstream instream("infile.txt"); 10-30

Ραράδειγμα #include <fstream> #include <iostream> using namespace std; int main( ) cout << "Opening data.txt for appending.\n"; ofstream fout; fout.open("data.txt", ios::app); data.txt (πριν) 1 2 bucket my shoe. 3 4 shut the door. data.txt (μετά) 1 2 bucket my shoe. 3 4 shut the door. 5 6 pick up sticks. 7 8 ain t C++ great! fout << "5 6 pick up sticks.\n" << "7 8 ain t C++ great!\n"; fout.close( ); cout << "End of appending to file.\n"; } return 0; 10-31

Ζλεγχοσ για φπαρξθ αρχείου Το άνοιγμα αρχείου μπορεί να μθν λειτουργιςει Αν το αρχείο ειςόδου δεν υπάρχει Δεν υπάρχει άδεια εγγραφισ ςτο αρχείο εξόδου Άγνωςτα αποτελζςματα Η ςυνάρτθςθ fail() Κάλεςμα τθσ fail() για ζλεγχο ςωςτό ροϊν instream.open("stuff.txt"); if (instream.fail()) cout << "File open failed.\n"; exit(1); } 10-32

Ζλεγχοσ για το τζλοσ αρχείου (EOF) Χριςθ βρόχου για επεξεργαςία ζωσ ότου το τζλοσ αρχείου Συνικθσ πρακτικι Δφο τρόποι για ζλεγχο ΕΟF: Η ςυνάρτθςθ eof() Διαβάηει κάκε χαρακτιρα ζωσ EOF eof() ςυν/ςθ επιςτρζφει bool Η διαδικαςία διαβάςματοσ επιςτρζφει bool τιμι! (instream >> next) Η ζκφραςθ επιςτρζφει true αν το διάβαςμα ζγινε επιτυχϊσ Επιςτρζφει false αν επιχειριςει να διαβάςει πζρα από το τζλοσ του αρχείου instream.get(next); while (!instream.eof()) cout << next; instream.get(next); } double next, sum = 0; while (instream >> next) sum = sum + next; cout << "sum:" << sum; 10-33

Τα ονόματα αρχείων ωσ μεταβλθτζσ Η διαδικαςία ανοίγματοσ ροισ Το όριςμα ςτθ ςυνάρτθςθ open() είναι τφπου string Μπορεί να είναι ςτακερά " " ι μεταβλθτι char filename[16]; ifstream instream; cout << "Enter file name: "; cin >> filename; instream.open(filename); Ραρζχει περιςςότερθ ευελιξία ςτο πρόγραμμα 10-34

#include <fstream> #include <iostream> #include <cstdlib> //for exit using namespace std; int main( ) ifstream instream; ofstream outstream; instream.open("infile.txt"); if (instream.fail( )) cout << "Error.\n"; exit(1); } outstream.open("outfile.txt"); if (outstream.fail( )) cout << " Error.\n"; exit(1); } int first, second, third; instream >> first >> second >> third; outstream << "The sum of the first 3\n" << "numbers in infile.txt\n" << "is " << (first + second + third) << endl; instream.close( ); outstream.close( ); } 10-35

#include <fstream> #include <iostream> #include <cstdlib> //for exit using namespace std; void addplusplus(ifstream& instream, ofstream& outstream); int main( ) cad.txt ifstream fin; ofstream fout; } fin.open("cad.txt"); if (fin.fail( )) cout << "Error.\n"; exit(1); } fout.open("cppad.txt"); if (fout.fail( )) cout << " Error.\n"; exit(1); } addplusplus(fin, fout); fin.close( ); fout.close( ); void addplusplus( ifstream& instream, ofstream& outstream ) char next; } instream.get(next); while (! instream.eof( )) if (next == 'C') outstream << "C++"; else outstream << next; } C is one of the world s most modern programming languages. There is no language as versatile as C, and C is fun to use. instream.get(next); 10-36

Σφνοψθ Οι ροζσ ςυνδζονται με αρχεία με τθν λειτουργία open() H ςυνάρτθςθ fail() ελζγχει για επιτυχθμζνθ ανάγνωςθ/εγγραφι Οι τφποι ροϊν μποροφν να είναι παράμετροι ςε ςυναρτιςεισ Ρρζπει να είναι παράμετροι με αναφορά 10-37

Βιβλιογραφία Καλι Μελζτθ [1] W. Savitch, Ρλιρθσ C++, Εκδόςεισ Τηιόλα, 2011 [2+ Η. Deitel and P. Deitel, C++ Ρρογραμματιςμόσ 6θ Εκδοςθ, Εκδόςεισ Μ. Γκιοφρδασ, 2013 Ύλη βιβλιογραφίας [1]: 6.1, 12.1, 12.2, 12.4 [2]: Κεφ. 21, 17.1-17.10 10-38