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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C-string Πίνακεσ από χαρακτιρεσ (τφπου char) Ζνασ χαρακτιρασ για κάκε μεταβλθτι τφπου char Ζνασ επιπλζον χαρακτιρασ '\0' καλείται null χαρακτιρασ ςθματοδοτεί το τζλοσ τθσ ςυμβολοςειράσ Ζχουμε ιδθ χρθςιμοποιιςει c-string Η φράςθ "Γεια" αποκθκεφεται ςε ζνα c-string: 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 = "Γεια"; int index = 0; Παραδείγματα while( outstring[index]!= '\0' ) { outstring[index] = 'X'; index++; } char outstring = "Γεια"; int index = 0; προκακοριςμζνθ ςτακερά ίςθ με το μζγιςτο μζγεκοσ του πίνακα while( (outstring[index]!= '\0') && (index < SIZE) ) { outstring[index] = 'X'; 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"); // ILLEGAL! 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

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

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Σημειώματα Σημείωμα Αναφοράς 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/.