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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

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

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

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

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

Μικροβιολογία & Υγιεινή Τροφίμων

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

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

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

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

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

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

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

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

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό. Ενότητα: Εισαγωγικά μαθήματος και Δυαδική αναπαράσταση

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

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

Ειδικζσ Ναυπηγικζσ Καταςκευζσ και Ιςτιοφόρα κάφη (Ε)

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

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

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

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

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

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

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

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

Πληροφορική και Εκπαίδευση

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

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

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

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

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

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

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

Streams Input / Output in C++ George Kastrinis

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

Transcript:

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό Ενότητα: Εγγραφές, δομές και χρήση αρχείων Διδάσκων: Λέκτορας Xάρης Παπαδόπουλος Τμήμα: Μαθηματικών

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

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

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

Ενότθτα 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

Ανοικτά Ακαδημαϊκά Μαθήματα Πανεπιστήμιο Ιωαννίνων Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Σημειώματα Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Λέκτορας Χάρης Παπαδόπουλος «Εισαγωγή στον Προγραμματισμό». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1105. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.