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

Σχετικά έγγραφα
Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

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

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

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

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

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

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

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

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

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

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

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

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

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

Συµβολοσειρές - Strings

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

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

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Ιδιότθτεσ πεδίων Γενικζσ.

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

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

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

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

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

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

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

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

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

Ειδικά Θζματα Βάςεων Δεδομζνων

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

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

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

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

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

ςυςτιματα γραμμικϊν εξιςϊςεων

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

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

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

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

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

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

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΕΝΟΤΘΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 6: Θ «Βοικεια» ςτον Υπολογιςτι

Modellus 4.01 Συ ντομοσ Οδηγο σ

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

Multi Logo. Προγραμματιςμόσ Η/Υ με Multi Logo. Σχεδίαςη και ανάπτυξη εφαρμογήσ κίνηςησ αντικειμζνου

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

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

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

Βάςεισ Δεδομζνων Λ. Ενότθτα 8: SQL Γλώςςα χειριςμοφ δεδομζνων. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικών Πλθροφορικισ ΣΕ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

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

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

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

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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 Ιανουαρίου Επανάληψη

Ενότθτα 20 ΑΛΦΑΡΙΘΜΗΣΙΚΑ (C-STRING) 9-4

Αλφαρικμθτικά και υμβολοςειρζσ Δφο ειδϊν ςυμβολοςειρζσ: C-string: πίνακασ από χαρακτιρεσ (char) το τζλοσ τθσ ςυμβολοςειράσ μαρκάρεται με το ςφμβολο '\0' κλαςικόσ τρόποσ και ςτθν απλι C χρθςιμοποιεί ζτοιμεσ βιβλιοκικεσ Η τυποποιθμζνθ κλάςθ string: χρθςιμοποιεί ζτοιμεσ βιβλιοκικεσ με περιςςότερεσ δυνατότθτεσ 9-5

C-string Πίνακεσ από χαρακτιρεσ (τφπου char) Ζνασ χαρακτιρασ για κάκε μεταβλθτι τφπου char Ζνασ επιπλζον χαρακτιρασ '\0' (κάθετος μηδζν) καλείται null χαρακτιρασ ςθματοδοτεί το τζλοσ τθσ ςυμβολοςειράσ Ζχουμε ιδθ χρθςιμοποιιςει C-string Η φράςθ "Γεια" αποκθκεφεται ςε ζνα C-string s: char s[10] = "Γεια"; 9-6

C-string μεταβλθτι Πίνακασ από χαρακτιρεσ: char s[10]; Δθλϊνει μια C-string μεταβλθτι για να αποκθκεφςει μζχρι 9 χαρακτιρεσ + ζναν null χαρακτιρα Συπικά είναι "μερικϊσ ςυμπλθρωμζνοσ" πίνακασ Δθλϊνουμε αρκετά μεγάλο μζγεκοσ για να αποκθκεφςουμε μζχρι το μζγιςτο μικοσ ςυμβολοςειράσ θματοδοτοφμε το τζλοσ με null Η μοναδικι διαφορά με τουσ κλαςικοφσ πίνακεσ: Πρζπει να περιζχουν null χαρακτιρεσ 9-7

Ζνασ κλαςικόσ πίνακασ: char s[10]; Αποκικευςθ C-string Αν το s περιζχει τθν ςυμβολοςειρά " Hi Mom!", αποκθκεφεται ωσ: 9-8

Αρχικοποίθςθ Αρχικοποίθςθ C-string: char mymessage[20] = "Hi there."; Δεν χρειάηεται να γεμίςουμε ολόκλθρο τον πίνακα Η αρχικοποίθςθ τοποκετεί το '\0' ςτο τζλοσ (αυτόματα) Μποροφμε να αποφφγουμε το μζγεκοσ του πίνακα: char shortstring[] = "abc"; Αυτόματα μετατρζπει το μζγεκοσ +1 από το μζγεκοσ τθσ ςυμβολοςειράσ μζςα ςε " " ΔΕΝ είναι το ίδιο με: char shortstring[] = {'a', 'b', 'c'}; 9-9

Δείκτεσ ςε C-string Ζνα C-string ΕΙΝΑΙ ζνασ πίνακασ Πρόςβαςθ ςτισ δεικτοδοτοφμενεσ μεταβλθτζσ: char ourstring[5] = "Hi"; ourstring[0] είναι 'H' ourstring[1] είναι 'i' ourstring[2] είναι '\0' ourstring[3] είναι άγνωςτο ourstring[4] είναι άγνωςτο 9-10

Χειριςμόσ δεικτϊν C-string Μποροφμε να χειριςτοφμε δεικτοδοτοφμενεσ μεταβλθτζσ char happystring[7] = "DoBeDo"; happystring[6] = 'Z'; Θζλει προςοχι!! Εδϊ, το '\0' (null) αντικαταςτάκθκε από ζνα 'Z'! Αν το null αντικακίςταται, τότε το C-string δεν "ςυμπεριφζρεται" ωσ C-string! Άγνωςτα αποτελζςματα! 9-11

char outstring[5] = "Γεια"; int index = 0; Παραδείγματα while( outstring[index]!= '\0' ) { outstring[index] = 'A'; index++; } char outstring[5] = "Γεια"; int index = 0; προκακοριςμζνθ ςτακερά ίςθ με το μζγιςτο μζγεκοσ του πίνακα while( (outstring[index]!= '\0') && (index < SIZE) ) { outstring[index] = 'A'; index++; } 9-12

Διλωςθ C-strings Βιβλιοκικεσ Δεν απαιτεί κάποια C++ βιβλιοκικθ Τπάρχει ςτθν standard C++ Χειριςμοί: Απαιτεί τθν βιβλιοκικθ <cstring> #include <cstring> υνικωσ τθν καλοφμε όταν χρθςιμοποιοφμε C-strings Όταν κζλουμε να τισ χειριςτοφμε με μεγάλθ ευκολία 9-13

"=" και "==" με C-strings Σα C-strings δεν λειτουργοφν όπωσ άλλεσ μεταβλθτζσ Δεν μποροφμε να ανακζςουμε ι να ςυγκρίνουμε: char astring[10]; astring = "Hello"; Χριςθ του "=" ΜΟΝΟ ςτθ διλωςθ του C-string! Πρζπει να χρθςιμοποιιςουμε ςυναρτιςεισ από βιβλιοκικεσ για ανάκεςθ: char astring[10]; strcpy(astring, "Hello"); // ΛΑΘΟΣ!! strcpy: υνάρτθςθ ςτθ βιβλιοκικθ <cstring> Θζτει τθν τιμι του astring ίςθ με "Hello" ΔΕΝ ελζγχει για μζγεκοσ! Ο ζλεγχοσ γίνεται από τον προγραμματιςτι, όπωσ ςτουσ υπόλοιπουσ πίνακεσ! 9-14

φγκριςθ C-strings Επίςθσ δεν μποροφμε να κάνουμε χριςθ του τελεςτι == char astring[10] = "Hello"; char anotherstring[10] = "Goodbye"; if( astring == anotherstring ) // NOT allowed! {... } Πρζπει να κάνουμε χριςθ ςυνάρτθςθσ: char astring[10] = "Hello"; char anotherstring[10] = "Goodbye"; if ( strcmp(astring, anotherstring) ) cout << "Strings NOT same."; else cout << "Strings are same."; 9-15

Η βιβλιοκικθ <cstring> (1/2) 9-16

Η βιβλιοκικθ <cstring> (2/2) 9-17

Η ςυνάρτθςθ strlen() Επιςτρζφει το μικοσ τθσ ςυμβολοςειράσ Είναι ςυχνά χριςιμο να γνωρίηουμε το μζγεκοσ: και για να μθν ξεφεφγουμε από τα όρια του πίνακα char mystring[10] = "dobedo"; cout << strlen(mystring); Επιςτρζφει το πλικοσ των χαρακτιρων Χωρίσ να περιζχει τον null ('\0') χαρακτιρα Σο πάνω αποτζλεςμα κα είναι: 6 9-18

strcat(s1,s2) Η ςυνάρτθςθ strcat() ςυνενϊνει τθν ςυμβολοςειρά s2 ςτο τζλοσ τθσ s1 char stringvar[20] = "The rain"; strcat(stringvar, "in Spain"); το αποτζλεςμα: θ stringvar τϊρα κα είναι "The rainin Spain" Χρειάηεται προςοχι: Χριςθ των κενϊν! Δεν επιβεβαιϊνει αν θ s1 είναι αρκετά μεγάλθ για να δεχκεί τθν s2 9-19

Παράμετροι και Ορίςματα των C-strings Θυμθκείτε: το C-string είναι πίνακασ Επομζνωσ ωσ παράμετροσ C-string είναι παράμετροσ πίνακα Σα C-strings που περνάμε ςτισ ςυναρτιςεισ μποροφν να αλλάξουν τιμι (παράμετροι με αναφορά)! Όπωσ ςτουσ πίνακεσ, ςυνικωσ ςτζλνουμε και το μζγεκοσ του πίνακα Η ςυν/ςθ "μπορεί" να κάνει χριςθ του '\0' για να βρει το τζλοσ Δθλαδι το μζγεκοσ δεν είναι απαραίτθτο αν θ ςυνάρτθςθ δεν αλλάηει τθν παράμετρο C-string Χριςθ του "const" για προςταςία των οριςμάτων C-string 9-20

Παραδείγματα Ποια είναι ιςοδφναμα μεταξφ τουσ; char stringvar[10] = "Γεια"; char stringvar[10] = {'Γ', 'ε', 'ι', 'α', '\0'}; char stringvar[10] = {'Γ', 'ε', 'ι', 'α'}; char stringvar[5] = "Γεια"; char stringvar[] = "Γεια"; Τπάρχει κάποιο λάκοσ; char stringvar[] = "Γεια"; strcat(stringvar," και ανηίο."); cout << stringvar ; Ποιο είναι το αποτζλεςμα: char song[10] = "I did it "; char fsong[20]; strcpy(fsong,song); strcat(fsong,"my way!"); cout << fsong << endl ; 9-21

Ενότθτα 21 ΕΙΟΔΟ/ΕΞΟΔΟ ΜΕ ΑΛΦΑΡΙΘΜΗΣΙΚΑ (C-STRING) 9-22

Ζξοδοσ με C-string Μποροφμε να τα εκτυπϊςουμε με τον τελεςτι ειςαγωγισ << Ήδθ το χρθςιμοποιοφμε: cout << news << " Γεια.\n"; Όπου news είναι μια μεταβλθτι C-string Προςοχι ςτον τελεςτι << : ςαν να ςυνενϊνουμε C-strings! 9-23

Είςοδοσ με C-string Μποροφμε να ειςάγουμε με τον τελεςτι εξαγωγισ >> Ωςτόςο υπάρχουν οριςμζνα κζματα Σο κενό " " κεωρείται ωσ "τζλοσ διαβάςματοσ" τθλοκζτθσ, κενό, ειςαγωγι γραμμισ: "παραλείπονται" Σο διάβαςμα ςτθν είςοδο ςταματά ςτο "τζλοσ διαβάςματοσ" Προςοχι ςτο μζγεκοσ του C-string Πρζπει να είναι μεγάλο ϊςτε να μπορεί να αποκθκεφςει τθν ςυμβολοςειρά που ειςάγεται! Η C++ δεν δίνει κάποια "προειδοποίθςθ" ςε τζτοια κζματα! 9-24

Παράδειγμα ειςαγωγισ char a[80], b[80]; cout << "Δώζηε κάποια είζοδο: \n"; cin >> a >> b; cout << a << b << "ΤΕΛΟΣ ΕΙΣΟΔΟΥ\n"; Παράδειγμα Δώζηε κάποια είζοδο: Γεια και ταρά ζοσ! ΓειακαιΤΕΛΟΣ ΕΙΣΟΔΟΥ! Η C-string a αποκθκεφει: "Γεια" Η C-string b αποκθκεφει: "και" 9-25

Διάβαςμα ολόκλθρθσ γραμμισ Μποροφμε να αποκθκεφςουμε ολόκλθρθ γραμμι (με κενά) ςε ζνα C-string Χριςθ του getline(): μια προκακοριςμζνθ ςυνάρτθςθ ςτθν κλάςθ cin το δεφτερο όριςμα : μζγιςτο αρικμό χαρακτιρων που κα διαβάςει char a[80]; cout << "Δώζηε κάποια είζοδο: \n"; cin.getline(a, 80); cout << a << "ΤΕΛΟΣ ΕΙΣΟΔΟΥ\n"; Παράδειγμα1 Δώζηε κάποια είζοδο: Γεια και ταρά ζοσ! Γεια και ταρά ζοσ!τελοσ ΕΙΣΟΔΟΥ! 9-26

Περιςςότερα για τθν getline() Μπορεί να αναφζρει το πλικοσ των χαρακτιρων που κζλει να διαβάςει: char a[5]; cout << "Δώζηε κάποια είζοδο: \n"; cin.getline(a, 5); cout << a << "ΤΕΛΟΣ ΕΙΣΟΔΟΥ\n"; Παράδειγμα2 Δώζηε κάποια είζοδο: Γειαταρά ΓειαΤΕΛΟΣ ΕΙΣΟΔΟΥ! Αναγκάηει ΣΕΕΡΙ χαρακτιρεσ μόνο να διαβάςει Θυμθκείτε τθν ανάγκθ για τον null ('\0') χαρακτιρα! 9-27

Παραδείγματα char a[80], b[80]; cout << "Δώζηε κάποια είζοδο: \n"; cin >> a >> b; cout << a << b << "ΤΕΛΟΣ ΕΙΣΟΔΟΥ\n"; Παράδειγμα1 Δώζηε κάποια είζοδο: Έθηαζε η ώρα!????????????????????????? char mystring[80]; cout << "Δώζηε κάποια είζοδο: \n"; cin.getline(mystring,6); cout << mystring << "ΤΕΛΟΣ ΕΙΣΟΔΟΥ\n"; Παράδειγμα2 Δώζηε κάποια είζοδο: Όζα δε θέρνει ο τρόνος,????????????????????????? 9-28

Ενότθτα 22 ΧΕΙΡΙΜΟΙ ΧΑΡΑΚΣΗΡΩΝ 9-29

Χαρακτιρεσ Ε/Ε Είςοδοσ και Ζξοδοσ δεδομζνων ΟΛΑ τα χειριηόμαςτε ωσ δεδομζνα χαρακτιρων π.χ., ο αρικμόσ 10 εκτυπϊνεται ωσ '1' και '0' Η μετατροπι γίνεται αυτόματα Χρθςιμοποιεί χαμθλοφ-επιπζδου χαρακτθριςτικά Μποροφμε να χρθςιμοποιιςουμε χαμθλοφεπιπζδου ςτοιχεία 9-30

Η ςυνάρτθςθ get() Διαβάηει ζναν χαρακτιρα (char) τθ φορά Είναι ςυνάρτθςθ του αντικειμζνου cin: char nextsymbol; cin.get(nextsymbol); Διαβάηει τον επόμενο χαρακτιρα και τον ανακζτει ςτθ μεταβλθτι nextsymbol Σο όριςμα πρζπει να είναι τφπου char ΌΧΙ "ςυμβολοςειρά"! 9-31

Η ςυνάρτθςθ put() Εκτυπϊνει ζναν χαρακτιρα τθ φορά Ανικει ςτο αντικείμενο cout : cout.put('a'); Εκτυπϊνει το γράμμα "a" char mystring[10] = "Hello"; cout.put(mystring[1]); Εκτυπϊνει το γράμμα "e" 9-32

Παράδειγμα (1/2) cout << "Δώζηε μια γραμμή ειζόδου: \n"; char symbol; do { cin.get(symbol); cout << symbol; } while( symbol!= '\n'); Παράδειγμα Δώζηε μια γραμμή ειζόδοσ: Τρα λα λα 1 2 22 Τρα λα λα 1 2 22 9-33

#include <iostream> using namespace std; void newline( ); void getint(int& number); int main( ) { int n; } getint(n); cout << n "; return 0; Παράδειγμα Εnter input: 57 57 correct? (yes/no): no no! Εnter input: 75 75 correct? (yes/no): yes 75 Παράδειγμα (2/2) void newline( ) { char symbol; do { cin.get(symbol); } while (symbol!= '\n'); } void getint(int& number) { char ans; do { cout << "Enter input: "; cin >> number; cout <<number<<" correct? (yes/no):"; cin >> ans; newline( ); } while ((ans == 'N') (ans == 'n')); } 9-34

Περιςςότερεσ ςυν/ςεισ χαρακτιρων putback() Όταν διαβάηει τοποκετεί πάλι τον χαρακτιρα ςτθν είςοδο cin.putback(lastchar); peek() Επιςτρζφει τον επόμενο χαρακτιρα που κα διαβαςτεί, αλλά τον αφινει ςτθν είςοδο peekchar = cin.peek(); ignore() Παράλειψθ τθσ ειςόδου, μζχρι ζναν ςυγκεκριμζνο χαρακτιρα cin.ignore(1000, "\n"); Παραλείπει το πολφ 1000 χαρακτιρεσ μζχρι "\n" 9-35

υναρτιςεισ χειριςμοφ χαρακτιρων (1/3) Βρίςκονται ςτθν βιβλιοκικθ cctype: #include <cctype> 9-36

υναρτιςεισ χειριςμοφ χαρακτιρων (2/3) 9-37

υναρτιςεισ χειριςμοφ χαρακτιρων (3/3) 9-38

Παραδείγματα char next; do { cin.get(next); if( isspace(next) ) cout << '-'; else cout << next; } while( next!= '.'); Παράδειγμα Εεεεε γεια και ταρά ζας. Εεεεε--γεια-και-ταρά-ζας. char next; do { cin.get(next); cout << next; } while(!isdigit(next) && (next!='\n') ); Παράδειγμα Θα ζε δω ζηις 10:30μμ.????????????????????????? char next; do { cin.get(next); if(!isupper(next) ) cout << next; } while( next!= '\n'); 9-39

Ενότθτα 23 Η ΚΛΑΗ STRING 9-40

Η κλαςικι string ςτθ C++ Ορίηεται ςτθ βιβλιοκικθ: #include <string> using namespace std; Μεταβλθτζσ τφπου String και εκφράςεισ Όπωσ οι απλοί τφποι μεταβλθτϊν Μπορεί να ανακζτει, να ςυγκρίνει, να προςκζτει: string s1, s2, s3; s3 = s1 + s2; //ςυνζνωςθ s3 = "Hello Mom!" //ανάκεςθ θμειϊςτε ότι το C-string "Hello Mom!" μετατρζπεται αυτόματα ςε τφπου string! 9-41

#include <iostream> #include <string> using namespace std; int main( ) { string phrase; Παράδειγμα Αρχικοποιείται ςτο κενό αλφαρικμθτικό string adjective("ηηγανιηά"), noun("μυρμήγκια"); string wish = "Bon appetite!"; Δφο ιςδφναμοι τρόποι για απόδοςθ αρχικϊν τιμϊν phrase = "Μ αρέζοουν " + adjective + " " + noun + "!"; cout << phrase << endl << wish << endl; } return 0; Παράδειγμα Μ' αρέζοσν ηα ηηγανιηά μσρμήγκια! Bon appetite! 9-42

Ε/Ε με τθν κλάςθ String Ακριβϊσ όπωσ και ςε άλλουσ τφπουσ! string s1, s2; cin >> s1; cin >> s2; Αποτζλεςμα: Ο χριςτθσ πλθκτρολογεί: May the hair on your toes grow long and curly! Η εξαγωγι ακόμα παραβλζπει κενά: s1 ζχει τιμι "May" s2 ζχει τιμι "the" 9-43

getline() με τθν κλάςθ String Για ολόκλθρεσ γραμμζσ: string line; cout << "Enter a line of input: "; getline(cin, line); cout << line << "END OF OUTPUT"; Παράδειγμα Enter a line of input: Γεια και ταρά ζοσ!! Γεια και ταρά ζοσ!!end OF OUTPUT Ακριβϊσ όπωσ θ getline() του C-string 9-44

Άλλεσ εκδόςεισ τθσ getline() Μποροφμε να ορίςουμε χαρακτιρα τζλουσ: string line; cout << "Enter input: "; getline(cin, line, "?"); Διαβάηει τθν είςοδο μζχρι να εμφανιςτεί το "?" 9-45

Προςοχι ςτον ςυνδυαςμό Προςοχι όταν αναμειγνφουμε cin >> var και getline() int n; string line; cin >> n; getline(cin, line); Αν θ είςοδοσ είναι: 42 Hello hitchhiker. Η μεταβλθτι n ζχει τιμι 42 Η line είναι θ κενι ςυμβολοςειρά!!!!! cin >> n παραλείπει κενοφσ χαρακτιρεσ, αφινοντασ τον χαρακτιρα "\n" ςτθν είςοδο για τθν getline()! 9-46

Επεξεργαςία μεταβλθτϊν τφπου string Κδιεσ λειτουργίεσ με τισ C-strings και παραπάνω! Περιςςότερεσ από 100 ςυναρτιςεισ τθσ κλάςθσ string Οριςμζνεσ ςυναρτιςεισ:.length() επιςτρζφει το μικοσ τθσ ςυμβολοςειράσ.at(i) επιςτρζφει αναφορά ςτον χαρακτιρα τθσ κζςθσ i 9-47

υναρτιςεισ τθσ κλάςθσ string (1/2) 9-48

υναρτιςεισ τθσ κλάςθσ string (2/2) 9-49

Μετατροπι από C-string ςε string Αυτόματεσ μετατροπζσ τφπων Από C-string ςε string : char acstring[] = "My C-string"; string stringvar; stringvar = acstring; Ζγκυρο και κατάλλθλο!! acstring = stringvar; ΜΗ ΝΟΜΙΜΟ! Δεν μπορεί να μετατραπεί αυτόματα ςε C-string Πρζπει να κάνουμε χριςθ μετατροπϊν: strcpy(acstring, stringvar.c_str()); 9-50

φνοψθ Η μεταβλθτι C-string είναι "πίνακασ από χαρακτιρεσ" Με επιπλζον τον κενό χαρακτιρα '\0' Σα C-strings ςυμπεριφζρονται όπωσ οι πίνακεσ Δεν μποροφν να ανακζςουν, να ςυγκρίνουν όπωσ οι απλζσ μεταβλθτζσ Οι βιβλιοκικεσ <cctype> & <string> ζχουν χριςιμεσ ςυν/ςεισ χειριςμοφ cin.get() διαβάηει τον επόμενο χαρακτιρα getline() επιτρζπουν διάβαςμα ολόκλθρθσ γραμμισ Σα αντικείμενα string ςυμπεριφζρονται καλφτερα από τα απλά C-strings 9-51

Βιβλιογραφία Καλι Μελζτθ [1] W. Savitch, Πλιρθσ C++, Εκδόςεισ Σηιόλα, 2011 [2+ Η. Deitel and P. Deitel, C++ Προγραμματιςμόσ 6θ Εκδοςθ, Εκδόςεισ Μ. Γκιοφρδασ, 2013 Ύλη βιβλιογραφίας [1]: 9.1, 9.2, 9.3 *2+: 6.7, 6.8, Κεφ. 18 9-52