114
343 – Ειςαγωγι ςτον Ρρογραμματιςμό Τμιμα Μακθματικϊν Ρανεπιςτιμιο Ιωαννίνων Ακαδθμαϊκό Ζτοσ 2019-2020 Χάρθσ Ραπαδόπουλοσ 207δ, B’ όροφοσ e-mail: [email protected] Ωρεσ Γραφείου: Τρίτθ 11-13

343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

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

Τμιμα Μακθματικϊν Ρανεπιςτιμιο Ιωαννίνων

Ακαδθμαϊκό Ζτοσ 2019-2020

Χάρθσ Ραπαδόπουλοσ

207δ, B’ όροφοσ

e-mail: [email protected]

Ωρεσ Γραφείου: Τρίτθ 11-13

Page 2: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Χριςιμο Υλικό

• Σελίδα Μακιματοσ:

http://www.cs.uoi.gr/~charis/c343

– Διαφάνειεσ Διαλζξεων

– Εργαςτθριακζσ Αςκιςεισ

– Υλοποιθμζνα προγράμματα και παραδείγματα

– Ανακοινώςεισ

• Λογιςμικό υλοποίθςθσ προγραμμάτων : Bloodshed DevC++ :

http://www.bloodshed.net/

Page 3: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

• Εργαςτιριο (μεγάλο): Εργαςτιριο Η/Υ 1ο όροφο

• Τα εργαςτιρια κα ξεκινιςουν Δευτζρα 21 Οκτωβρίου, Σετάρτθ 23 Οκτωβρίου και Πζμπτθ 24 Οκτωβρίου

• Αλλαγζσ ΔΕΝ επιτρζπονται! Διάρκεια Εργαςτθρίου: 1h:30m

Τμιματα Εργαςτθρίων

Εργαςτιρια Δευτζρα (14:00-17:00)

Α1 Δευτζρα 14:00-15:30 _____ – 11881 Α2 Δευτζρα 15:30-17:00 11882 – 11934

Εργαςτιρια Πζμπτθ (09:00-12:00)

Γ1 Πζμπτθ 09:00-10:30 12026 – 12069 Γ2 Πζμπτθ 10:30-12:00 12070 – _____

Εργαςτιρια Σετάρτθ (09:00-12:00)

Β1 Σετάρτθ 09:00-10:30 11935 – 11981 Β2 Σετάρτθ 10:30-12:00 11982 – 12025

Page 4: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Θ: διάλεξη (θεωρία)

Ε: Εργαστήριο

Q: Σεστ quiz

Εβδομάδα Θζματα Υλθ βιβλιογραφίασ

Σρ, 8 Οκτωβρίου Εισαγωγικά μαθήματος, Δυαδική

αναπαράσταση, Είσοδος/Έξοδος δεδομένων

[1]: 1.1, Παράρτημα 3

[2]: Κεφ. 1, Β, Δ

Σρ, 15 Οκτωβρίου Σύποι δεδομένων & μεταβλητών, Αριθμητικοί και

Λογικοί Σελεστές, Ροή ελέγχου if/else

[1]: 1.2-1.5, 2.1, Παράρτημα 1

[2]: Κεφ. 2, Γ, 4.11, 4.12, Α, ΣΤ

Δε, Σε., Πε

21-23-24 Οκτ 1ο Εργαστήριο

Σρ, 22 Οκτωβρίου Ροή επαναληπτικού ελέγχου: for, while, do-while [1]: 2.2, 2.3

[2]: Κεφ. 4, Κεφ. 5

Σε, Πε

30-31 Οκτ 2ο Εργαστήριο

Σρ, 29 Οκτωβρίου υναρτήσεις, εμβέλεια μεταβλητών και

αναδρομή

[1]: Κεφ. 3, Κεφ. 4, 13.1, 13.2, Παρ. 4

[2]: Κεφ. 6

Δε, Σε, Πε,

4-6-7 Νοε 3ο Εργαστήριο

Σρ, 5 Νοεμβρίου Επανάληψη Εργαστηρίων

Πε, 14 Νοε 1ο Σεστ (Ανάπτυξη κώδικα στο Εργαστήριο)

Σρ, 12 Νοεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) [1]: 5.1, 5.2, 5.4

[2]: Κεφ. 7

Δε, Σε, Πε

18-20-21 Νοε 4ο Εργαστήριο

Σρ, 19 Νοεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση

στοιχείων

[1]: 5.3, 13.3

[2]: 7.7, 7.8, 8.6, Κεφ. 19

Δε, Σε, Πε

25-27-28 Νοε 5ο Εργαστήριο

Σρ, 26 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 9.1, 9.2, 9.3

[2]: 6.7, 6.8, Κεφ. 18

Πε, 5 Δεκ 2ο Quiz (Ερωτήσεις πολλαπλών επιλογών)

Σρ, 3 Δεκεμβρίου υναρτήσεις με χειρισμό πινάκων [1]: 5.1, 5.2, 5.3, 5.4, 13.3

[2]: Κεφ. 7, 8, 19

Δε, 9 Δεκ 6ο Προαιρετικό Εργαστήριο (χωρίς παρουσίες)

Σρ, 10 Δεκεμβρίου Αλφαριθμητικά, συμβολοσειρές, [1]: 9.1, 9.2, 9.3, 6.1, 12.1, 12.2, 12.4

[2]: 6.7, 6.8, Κεφ. 18, 21, 17.1-17.10

Σρ, 17 Δεκεμβρίου Εγγραφές, δομές και χρήση αρχείων [1]: 9.1, 9.2, 9.3, 6.1, 12.1, 12.2, 12.4

[2]: 6.7, 6.8, Κεφ. 18, 21, 17.1-17.10

Σρ, 14 Ιανουαρίου Επανάληψη

Οκτώβριος 2019

Δ Σ Σ Π Π

1 2 3 4

7 8 Θ 9 10 11

14 15 Θ 16 17 18

21 Ε 22 Θ 23 Ε 24 Ε 25

28 29 Θ 30 Ε 31 Ε

Νοέμβριος 2019

Δ Σ Σ Π Π

1

4 Ε 5 Θ 6 Ε 7 Ε 8

11 12 Θ 13 14 Q 15

18 Ε 19 Θ 20 Ε 21 Ε 22

25 Ε 26 Θ 27 Ε 28 Ε 29

Δεκέμβριος 2019

Δ Σ Σ Π Π

2 3 Θ 4 5 Q 6

9 E 10 Θ 11 12 13

16 17 Θ 18 19 20

Ιανουάριος 2020

Δ Σ Σ Π Π

6 7 8 9 10

13 14 Θ 15 16 17

Page 5: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Θ: διάλεξη (θεωρία)

Ε: Εργαστήριο

Q: Σεστ quiz

Εβδομάδα Θζματα Υλθ βιβλιογραφίασ

Σρ, 8 Οκτωβρίου Εισαγωγικά μαθήματος, Δυαδική

αναπαράσταση, Είσοδος/Έξοδος δεδομένων

[1]: 1.1, Παράρτημα 3

[2]: Κεφ. 1, Β, Δ

Σρ, 15 Οκτωβρίου Σύποι δεδομένων & μεταβλητών, Αριθμητικοί και

Λογικοί Σελεστές, Ροή ελέγχου if/else

[1]: 1.2-1.5, 2.1, Παράρτημα 1

[2]: Κεφ. 2, Γ, 4.11, 4.12, Α, ΣΤ

Δε, Σε., Πε

21-23-24 Οκτ 1ο Εργαστήριο

Σρ, 22 Οκτωβρίου Ροή επαναληπτικού ελέγχου: for, while, do-while [1]: 2.2, 2.3

[2]: Κεφ. 4, Κεφ. 5

Σε, Πε

30-31 Οκτ 2ο Εργαστήριο

Σρ, 29 Οκτωβρίου υναρτήσεις, εμβέλεια μεταβλητών και

αναδρομή

[1]: Κεφ. 3, Κεφ. 4, 13.1, 13.2, Παρ. 4

[2]: Κεφ. 6

Δε, Σε, Πε,

4-6-7 Νοε 3ο Εργαστήριο

Σρ, 5 Νοεμβρίου Επανάληψη Εργαστηρίων

Πε, 14 Νοε 1ο Σεστ (Ανάπτυξη κώδικα στο Εργαστήριο)

Σρ, 12 Νοεμβρίου Πίνακες (μονοδιάστατοι και πολυδιάστατοι) [1]: 5.1, 5.2, 5.4

[2]: Κεφ. 7

Δε, Σε, Πε

18-20-21 Νοε 4ο Εργαστήριο

Σρ, 19 Νοεμβρίου Εφαρμογές σε ταξινομήσεις και αναζήτηση

στοιχείων

[1]: 5.3, 13.3

[2]: 7.7, 7.8, 8.6, Κεφ. 19

Δε, Σε, Πε

25-27-28 Νοε 5ο Εργαστήριο

Σρ, 26 Νοεμβρίου Επανάληψη με Παραδείγματα [1]: 9.1, 9.2, 9.3

[2]: 6.7, 6.8, Κεφ. 18

Πε, 5 Δεκ 2ο Quiz (Ερωτήσεις πολλαπλών επιλογών)

Σρ, 3 Δεκεμβρίου υναρτήσεις με χειρισμό πινάκων [1]: 5.1, 5.2, 5.3, 5.4, 13.3

[2]: Κεφ. 7, 8, 19

Δε, 9 Δεκ 6ο Προαιρετικό Εργαστήριο (χωρίς παρουσίες)

Σρ, 10 Δεκεμβρίου Αλφαριθμητικά, συμβολοσειρές, [1]: 9.1, 9.2, 9.3, 6.1, 12.1, 12.2, 12.4

[2]: 6.7, 6.8, Κεφ. 18, 21, 17.1-17.10

Σρ, 17 Δεκεμβρίου Εγγραφές, δομές και χρήση αρχείων [1]: 9.1, 9.2, 9.3, 6.1, 12.1, 12.2, 12.4

[2]: 6.7, 6.8, Κεφ. 18, 21, 17.1-17.10

Σρ, 14 Ιανουαρίου Επανάληψη

Οκτώβριος 2019

Δ Σ Σ Π Π

1 2 3 4

7 8 Θ 9 10 11

14 15 Θ 16 17 18

21 Ε 22 Θ 23 Ε 24 Ε 25

28 29 Θ 30 Ε 31 Ε

Νοέμβριος 2019

Δ Σ Σ Π Π

1

4 Ε 5 Θ 6 Ε 7 Ε 8

11 12 Θ 13 14 Q 15

18 Ε 19 Θ 20 Ε 21 Ε 22

25 Ε 26 Θ 27 Ε 28 Ε 29

Δεκέμβριος 2019

Δ Σ Σ Π Π

2 3 Θ 4 5 Q 6

9 E 10 Θ 11 12 13

16 17 Θ 18 19 20

Ιανουάριος 2020

Δ Σ Σ Π Π

6 7 8 9 10

13 14 Θ 15 16 17

Page 6: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΜΕΣΑΒΛΗΣΕ, ΕΚΦΡΑΕΙ & ΕΝΣΟΛΕ ΕΚΧΩΡΗΗ

Ενότθτα 3

Page 7: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Η μνιμθ του υπολογιςτι

• Η μνιμθ είναι ςαν ζνασ πίνακασ και μποροφμε να προςπελάςουμε ζνα ςτοιχείο τθσ μνιμθσ με ζναν αρικμό.

• Στο παραπάνω παράδειγμα: 32-bit αρχιτεκτονικι.

0

4 byte

8

12 32bit word

16

20

Page 8: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μεταβλθτζσ

• Αντί να κυμόμαςτε αρικμοφσ και διευκφνςεισ, χρθςιμοποιοφμε μεταβλθτζσ ςε ζνα πρόγραμμα

• Λζμε ςτον υπολογιςτι να δεςμεφςει 3 κζςεισ μνιμθσ για να αποκθκεφςουμε ακζραιουσ αρικμοφσ

• Αυτζσ οι 3 κζςεισ μνιμθσ ονομάηονται x1, x2, και sum

• Οι διευκφνςεισ αναφζρονται με τα παραπάνω ονόματα

#include <iostream>

int main()

{

int x1, x2, sum;

return 0;

}

Page 9: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μεταβλθτζσ

• Ουςιαςτικά τα ονόματα είναι ςυντομεφςεισ για τισ διευκφνςεισ

0

4 byte

8

12 32bit word

16

20

x1

x2

sum

Page 10: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μεταβλθτζσ • Μετά τθν δζςμευςθ 3 κζςεων ςτθν μνιμθ μποροφμε να

αποκθκεφςουμε τιμζσ ςτισ αντίςτοιχεσ κζςεισ

• Αποκθκεφει τθν τιμι 1 ςτθν κζςθ μνιμθσ x1

• Αποκθκεφει τθν τιμι 2 ςτθν κζςθ μνιμθσ x2

• Αποκθκεφει τθν τιμι 3 ςτθν κζςθ μνιμθσ sum

#include <iostream>

int main()

{

int x1, x2, sum;

x1 = 1;

x2 = 2;

sum = x1 + x2;

return 0;

}

Page 11: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μεταβλθτζσ

• Ουςιαςτικά τα ονόματα είναι ςυντομεφςεισ για τισ διευκφνςεισ

0

4 byte

8

12 32bit word

16

20

00000000 00000000 00000000 00000001

00000000 00000000 00000000 00000010

00000000 00000000 00000000 00000011

x1

x2

sum

Page 12: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μεταβλθτζσ ςτθ C++

• Ονοματολογία μεταβλθτϊν: – Κάκε μεταβλθτι πρζπει να αρχίηει με: γράμμα ι _ (κάτω παφλα)

– Υπόλοιποι χαρακτιρεσ: γράμματα ι αρικμοί ι _

Ρ.χ.: x x1 x_1 _abc data2

12 3x %count

• Case sensitive γλϊςςα – Ξεχωρίηει τουσ πεηοφσ από τουσ κεφαλαίουσ χαρακτιρεσ

– 3 διαφορετικζσ μεταβλθτζσ: rate RATE Rate

• Δεςμευμζνεσ λζξεισ – Χριςθ μόνο για τον προκακοριςμζνο τουσ ςκοπό

– Δεν χρθςιμοποιοφνται για ονοματολογία μεταβλθτϊν (ςυναρτιςεων)

Page 13: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Δεςμευμζνεσ λζξεισ ςτθ C++

• Εκτόσ από τισ λζξεισ του πίνακα, δεςμευμζνεσ λζξεισ είναι οτιδιποτε ξεκινάει με _ _ – Χρθςιμοποιοφνται ςε τυποποιθμζνεσ βιβλιοκικεσ

– Ρ.χ. : __count __i __x1

Δεν ππέπει να δηλώνοςμε ηέηοιερ μεηαβληηέρ!!

Page 14: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διλωςθ μεταβλθτϊν

• Κάκε μεταβλθτι ζχει: ❶ όνομα

❷ τφπο

❸ τιμι

Τφποσ: είδοσ πλθροφορίασ που αποκθκεφουμε ςτθν κζςθ μνιμθσ

Βαςικοί τφποι μεταβλθτϊν 1. ακζραιοι: int x;

2. χαρακτιρεσ: char x;

3. κινθτισ υποδιαςτολισ (προςεγγιςτικι αναπαράςταςθ πραγματικϊν αρικμϊν): double x;

4. λογικζσ (δυαδικζσ): bool x; (true-αλθκισ ι false-ψευδισ)

• Άλλοι τφποι μεταβλθτϊν: ςε λίγο… (αναπαράςταςθ αρικμϊν)

Page 15: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διλωςθ μεταβλθτϊν

• Ραράδειγμα:

– Τελειϊνουν με ;

– Πταν υπάρχουν περιςςότερεσ από μια μεταβλθτζσ (<λίςτα>) τότε χωρίηονται με ,

• Κάκε μεταβλθτι πρζπει να δθλωκεί πριν τθν πρϊτθ χρθςιμοποίθςι τθσ. – Συνικωσ πριν τθν χρθςιμοποίθςι τθσ

ι

– ςτθν αρχι κάποιου τμιματοσ του προγράμματοσ που ξεκινάει με {

int x1, x2;

double sum;

int x, y, z;

x = 1;

y = 2;

i = 0;

int i; ΛΑΘΟΣ

Page 16: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διλωςθ μεταβλθτϊν - Σφνταξθ

• Κάκε μεταβλθτι δθλϊνεται πριν χρθςιμοποιθκεί

• Η ςφνταξθ διαφοροποιείται όταν κζλουμε να δϊςουμε αρχικζσ τιμζσ ςτθν διλωςθ μεταβλθτϊν

φνταξθ όνοματφπου ονομαμεταβλητησ1, ονομαμεταβλητησ2, . . . ;

Παράδειγμα int count, numberOfDragons, numberOfTrolls;

double distance;

Page 17: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Απλοί τφποι μεταβλθτϊν

• Υπάρχουν και άλλοι τφποι μεταβλθτϊν όπωσ – αλφαρικμθτικοί χαρακτιρεσ: string

– Ρίνακεσ (arrays), κλάςεισ...

• Για τουσ ακεραίουσ υπάρχει μθ-προςθμαςμζνθ παραλλαγι: unsigned short, unsigned int, unsigned long

Σφποσ Χριςθ μνιμθσ Περιοχι Σιμών

short (ι short int) 2 bytes -32768 ζωσ 32767

int 4 bytes -2146473648 ζωσ 2147483647

long (ι long int) 10 bytes ± 9223372036854775807

float 4 bytes 10-38 ζωσ 1038

double 8 bytes 10-304 ζωσ 10308

long double 10 bytes 10-4932 ζωσ 104932

char 1 byte Πλοι οι χαρακτιρεσ ASCII

bool 1 byte false ι true

Page 18: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εντολζσ εκχϊρθςθσ

• Αλλαγι τιμισ ςε μια μεταβλθτι

ονομαμεταβλητησ = ζκφραςη ;

ζκφραςη:

μεταβλθτι ι αρικμόσ ι ςφνκετθ ζκφραςθ αποτελοφμενθ από μεταβλθτζσ αρικμοφσ, τελεςτζσ, ςυν/ςεισ

• Αποτίμθςθ τθσ ζκφραςθσ ςτο δεξί μζλοσ και ςτθ ςυνζχεια κζτουμε τθν τιμι τθσ ζκφραςθσ ςτθ τιμι τθσ μεταβλθτισ

totalWeight = oneWeight * number ;

temparature = 37.5 ;

count = count + 2 ;

Page 19: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εντολζσ εκχϊρθςθσ

• Οι εντολζσ εκχϊρθςθσ είναι εκφράςεισ – Επιςτρζφουν τθν τιμι που ανακζτουμε ςτθ μεταβλθτι (αριςτερό

μζροσ)

n = (m = 2); ι n = m = 2;

– Η υποζκφραςθ m = 2 αλλάηει τθν τιμι τθσ μεταβλθτισ m ςε 2 και

επιςτρζφει τθν τιμι 2 (που τθν ανακζτει τελικά και ςτθν μεταβλθτι n)

• Συνικωσ δεν τθν χρθςιμοποιοφμε αλλά αντιλαμβανόμαςτε καλφτερα ςε κάποια κομμάτια κϊδικα ενδεχόμενα λάκθ

Page 20: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Αρχικζσ τιμζσ

• Κάκε μεταβλθτι πρζπει να ζχει μια αρχικι τιμι εκτόσ αν υποδθλϊνεται ζμμεςα

– Η μεταβλθτι x δεν ζχει αρχικοποιθκεί και δεν γνωρίηουμε τθν τιμι

που ζχει (ςυνικωσ κα ζχει κάποιο τυχαίο αρικμό)

• Θα πρζπει να δϊςουμε αρχικι τιμι ςτθν μεταβλθτι x:

Πλα τα παραπάνω είναι ιςοδφναμα

int x, y;

y = x + 1;

int x(3), y;

y = x + 1;

int x, y;

x = 3;

y = x + 1;

int x = 3, y;

y = x + 1;

Page 21: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Αρχικζσ τιμζσ

Απόδοςθ αρχικών τιμών ςε δθλώςεισ φνταξθ όνοματφπου ονομαμεταβλητησ1 = εκφραςη1, ονομαμεταβλητησ2 = εκφραςη2, . . . ;

Παραδείγματα int count = 0, limit = 10, x = 0;

double distance = 999.99;

Απόδοςθ αρχικών τιμών ςε δθλώςεισ Εναλλακτικι φνταξθ όνοματφπου ονομαμεταβλητησ1 (εκφραςη1), ονομαμεταβλητησ2 (εκφραςη2), . . . ;

Παραδείγματα int count(0), limit(10), x(0);

double distance(999.99);

Page 22: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ειδικζσ εντολζσ εκχϊρθςθσ • Συντόμευςθ εντολϊν εκχϊρθςθσ a = a + 3; a += 3;

Η εντολι εκχϊρθςθσ,

ονομαμεταβλητησ = ονομαμεταβλητησ τελεστης ζκφραςη ;

μπορεί να γραφεί ιςοδφναμα ςε

ονομαμεταβλητησ τελεστης = ζκφραςη ;

τελεστης: + , – , * , / , % *βαςικζσ αρικμθτικζσ πράξεισ+

• Ραραδείγματα: d -= 4 (d = d - 4)

e *= 5 (e = e * 5)

f /= 3 (f = f / 3)

g %= 9 (g = g % 9)

Page 23: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Συμβατότθτα εκχωριςεων Αποκικευςθ τιμισ ενόσ τφπου ςε μια μεταβλθτι άλλου τφπου

int myInt;

myInt = 2.99; (myInt = 2)

• Από κινθτισ υποδιαςτολισ ςε ακζραια: – κόβονται τα δεκαδικά ψθφία (ςυνικωσ)

double myDouble;

myDouble = 3; ( myDouble = 3.0)

• Από ακζραια ςε κινθτισ υποδιαςτολισ : – προςτίκεται ".0" (πάντα)

Page 24: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Συμβατότθτα εκχωριςεων Αποκικευςθ τιμισ ενόσ τφπου ςε μια μεταβλθτι άλλου τφπου

char myChar; int myInt;

myChar = 64; (myChar = 'Z') myInt = 'Z'; (myInt=64)

• Από char ςε int και από int ςε char: – αντιςτοίχθςθ από τον πίνακα ASCII

bool myBool; int myInt;

myBool = 2; (myBool = true) myInt = false; (myInt=0)

• Από bool ςε int και από int ςε bool : – bool=int: μθ-μθδενικόσ ακζραιοσ ωσ true, αλλιϊσ false

– int=bool: Η τιμι true αποκθκεφεται ωσ 1 και θ false ωσ 0

Page 25: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Στακερζσ • Στακερζσ τφπου int:

– δεν περιζχουν υποδιαςτολι int x = 3;

• Στακερζσ τφπου double: – γίνεται και με ςυμβολογραφία κινθτισ υποδιαςτολισ:

double x = 3670000, y=3.67e3, z= 5.89e-6;

(3670 = 3.67*103) (0.00000589 = 5.89*10-6)

• Στακερζσ τφπου char: – τοποκετϊντασ τον χαρακτιρα ςε μονά ειςαγωγικά ' ':

char symbol = 'Z';

– οι αλφαρικμθτικζσ ςτακερζσ (strings) με διπλά ειςαγωγικά " ":

cout << " Hello !! " ;

– Είναι διαφορετικό το 'Z' από το "Z" !!!

• Στακερζσ τφπου bool: – ζχει δφο μόνο τιμζσ true ι false: bool x = true, y=false;

Page 26: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρίνακασ ASCII Αρικμ Χαρακτ Αρικμ Χαρακτ Αρικμ Χαρακτ Αρικμ Χαρακτ

Page 27: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ονομαςία ςτακερϊν (δεν αλλάηουν)

• Οι δθλωμζνεσ ςτακερζσ (const) δεν αλλάηουν κατά τθ διάρκεια του προγράμματοσ

• Συνικωσ οι ςτακερζσ μεταβλθτζσ γράφονται με ΚΕΦΑΛΑΙΑ

φνταξθ const όνοματφπου ονομαμεταβλητησ = Σταθερα;

Παραδείγματα const int MAX_TRIES = 3;

const double PI = 3.14159;

Page 28: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα ςτακερϊν

• Τι γίνεται αν αλλάξει το επιτόκιο ςε 5.5% ;

#include <iostream>

using namespace std;

int main()

{

const double RATE = 6.9;

double deposit;

cout << "Δώζηε ηο ποζό καηάθεζηρ " ;

cin >> deposit;

double newBalance;

newBalance = deposit + deposit*(RATE/100);

cout << "Σε ένα σπόνο ηο ποζό θα γίνει " << newBalance;

return 0;

}

Δώζηε ηο ποζό καηάθεζηρ 100

Σε ένα σπόνο ηο ποζό θα γίνει 106.9

Page 29: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Αρικμθτικοί τελεςτζσ

• Σχθματιςμόσ εκφράςεων από – μεταβλθτζσ, ςτακερζσ, τελεςτζσ

• Αρικμθτικοί τελεςτζσ μεταξφ – int και double τφπουσ

z = x τελεςτισ y

• Τφποσ παραγόμενθσ τιμισ:

– Αν x και y int z int

– Αν x ι y double z double

Ραράδειγμα: total = baseamount + increase

θ τιμι τθσ total εξαρτάται από τουσ τφπουσ των τιμϊν baseamount, increase

Τελεςτισ Ρεριγραφι

+ Ρρόςκεςθ

- Αφαίρεςθ

* Ρολλαπλαςιαςμόσ

/ Διαίρεςθ

% Υπόλοιπο διαίρεςθσ

Page 30: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρροτεραιότθτεσ τελεςτϊν Ο τρόποσ υπολογιςμοφ μιασ ζκφραςθσ εξαρτάται από τθν προτεραιότθτα των τελεςτϊν:

❶ παρενκζςεισ: () Υπολογίηονται πρϊτα, από τα αριςτερά προσ τα δεξιά. Εάν υπάρχουν ζνκετεσ υπολογίηονται πρϊτα οι εςωτερικζσ

❷ πολλαπλαςιαςμόσ, διαίρεςθ και υπόλοιπο: *, /, ι % Υπολογίηονται δεφτερα από αριςτερά προσ τα δεξιά.

❸ πρόςκεςθ, αφαίρεςθ: + ι – Εάν υπάρχουν πολλοί, υπολογίηονται από τα αριςτερά προσ τα δεξιά.

❹ εκχώρθςθσ: =, +=, -=, *=, /=, %= Από δεξιά προσ τα αριςτερά.

Στθν πράξθ: να χρθςιμοποιείται ςχεδόν πάντα ()

Page 31: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραραδείγματα προτεραιότθτασ

x=y=z x=(y=z)

x+y+z (x+y)+z

m = (a+b+c+d)/4

m = a+b+c+d/4

y = a * x * x + b * x + c

Page 32: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ακζραια διαίρεςθ

Ζκφραςθ Αποτζλεςμα

total = 10 /3 total =3 (απορρίπτεται το δεκαδικό μζροσ)

total = 10 /3.0 total =3.33

total = 10.0 /3 total =3.33

sum = 17 /5 sum =3 (απορρίπτεται το δεκαδικό μζροσ)

• Αν χρθςιμοποιοφμε ακεραίουσ ςε ζναν τελεςτι και κζλουμε να εκτυπϊςουμε και το υπόλοιπο %

cout << "Το 17 δια 5 ιζούηαι με " << 17/5 << "\n";

cout << "και ςπόλοιπο " << 17%5 ;

Το 17 δια 5 ιζούηαι με 3

και ςπόλοιπο 2

Page 33: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Επιςιμανςθ ςτθν ακζραια διαίρεςθ • Ζςτω ότι ζνασ μθχανικόσ αυτοκινθτόδρομων ςασ ηθτάει ζνα

πρόγραμμα που υπολογίηει το ςυνολικό κόςτοσ για ζνα μικοσ λεωφόρου με τιμι χρζωςθσ 5000€ / km

totalPrice = 5000 * (meters / 1000.0);

Για meters = 14800 totalPrice = 74000 €

• Αν όμωσ,

totalPrice = 5000 * (meters / 1000);

τότε για meters = 14800 totalPrice = 70000 € (!!!)

Page 34: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μετατροπι τφπων

• Τι γίνεται αν κζλουμε να κάνουμε διαίρεςθ μεταξφ τφπων int; – Το αποτζλεςμα τθσ διαίρεςθσ κα είναι int

διότι και οι δυο μεταβλθτζσ είναι τφπου int

• Μετατροπι τφπου (type cast) int ςε τφπου double

int sum, total;

double avg;

sum=9; total=4;

avg = sum /total;

int sum, total;

double avg;

sum=9; total=4;

avg = sum /static_cast<double>(total);

φνταξθ static_cast<double>(εκφραςη)

Παραδείγματα double ans = n / static_cast<double>(m);

double ans = static_cast<double>(n) / m;

ΛΑΘΟ: double ans = static_cast<double>(n/m);

Page 35: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μοναδιαίοι τελεςτζσ αφξθςθσ μείωςθσ

• Ο τελεςτισ ++ αυξάνει μία μεταβλθτι κατά 1 n++ ι ++n

• Ο τελεςτισ -- μειϊνει μία μεταβλθτι κατά 1 n-- ι --n

• Εκτελζςιμεσ εντολζσ

• Μζςα ςε μακθματικζσ εκφράςεισ – Επιςτρζφουν τθν τιμι και μετά αλλάηουν τιμι n++ ι m--

– Αλλάηουν τιμι και μετά επιςτρζφουν τιμι ++n ι --m

int n=1, m=4;

n++;

cout << "Η ηιμή ηηρ n άλλαξε ζε " << n <<"\n";

m--;

cout << "Η ηιμή ηηρ m άλλαξε ζε " << m <<"\n";

Η ηιμή ηηρ n άλλαξε ζε 2

Η ηιμή ηηρ m άλλαξε ζε 3

int n=2;

int x = 2*(n++);

cout << x;

int n=2;

int x = 2*(++n);

cout << x; 4 6

Page 36: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρροτεραιότθτεσ τελεςτϊν Ο τρόποσ υπολογιςμοφ μιασ ζκφραςθσ εξαρτάται από τθν προτεραιότθτα των τελεςτϊν:

❶ παρενκζςεισ: () Υπολογίηονται πρϊτα, από τα αριςτερά προσ τα δεξιά. Εάν υπάρχουν ζνκετεσ υπολογίηονται πρϊτα οι εςωτερικζσ

❷ μοναδιαίοι τελεςτζσ αφξθςθσ μείωςθσ: ++, -- Υπολογίηονται από δεξιά προσ τα αριςτερά.

❸ πολλαπλαςιαςμόσ, διαίρεςθ και υπόλοιπο: *, /, ι % Υπολογίηονται από αριςτερά προσ τα δεξιά.

❹ πρόςκεςθ, αφαίρεςθ: + ι – Υπολογίηονται από τα αριςτερά προσ τα δεξιά.

❺ εκχώρθςθσ: =, +=, -=, *=, /=, %= Υπολογίηονται από δεξιά προσ τα αριςτερά.

Στθν πράξθ: να χρθςιμοποιείται ςχεδόν πάντα ()

Page 37: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μοναδιαίοι τελεςτζσ αφξθςθσ μείωςθσ

• Ραραδείγματα

int a=8;

int x = a--;

cout << x <<"\n";

cout << a <<"\n";

int a=8;

int x = --a;

cout << x <<"\n";

cout << a <<"\n";

int a=5;

cout << a <<"\n";

cout << a++ <<"\n";

cout << a <<"\n";

int a=5;

cout << a <<"\n";

cout << ++a <<"\n";

cout << a <<"\n";

Ρρϊτα εκτυπϊνει και μετά αυξάνει κατά 1

Ρρϊτα αυξάνει κατά 1 και μετά εκτυπϊνει

Page 38: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΠΑΡΑΔΕΙΓΜΑΣΑ Ενότθτεσ 3 & 4

Page 39: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άκροιςμα 2 ακεραίων

• Γράψτε ζνα πρόγραμμα που διαβάηει δυο ακεραίουσ, υπολογίηει το άκροιςμά τουσ και εκτυπϊνει το άκροιςμα

Page 40: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άκροιςμα 2 ακεραίων #include <iostream>

using namespace std;

int main()

{

int x,y;

cout << "Give x: \n";

cin >> x;

cout << "Give y: \n";

cin >> y;

int sum = x + y;

cout << "The sum of "<< x << " and " << y

<< " is "<< sum << endl;

return 0;

}

Page 41: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ανταλλαγι 2 μεταβλθτϊν

• Διαβάςτε δφο ακεραίουσ και αποκθκεφςτε τουσ ςε δφο μεταβλθτζσ τφπου int: x και y.

• Εκτυπϊςτε τισ δφο μεταβλθτζσ με τθν μορφι:

\ x = 78 y = 4 \

• Αλλάξτε τισ τιμζσ των x και y. Δθλαδι θ τιμι του x να ζχει τθν τιμι του y, και θ τιμι του y να ζχει τθν τιμι του x.

• Ξαναεκτυπϊςτε τισ δφο μεταβλθτζσ με τθν μορφι:

\ x = 4 y = 78 \

Page 42: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα ςτισ Μεταβλθτζσ

• Αλλαγι (swap) των τιμϊν που αποκθκεφονται ςτισ μεταβλθτζσ x και y.

• Σκεφτείτε λίγο πϊσ κα μποροφςε να γίνει...

• Ρρζπει να χρθςιμοποιιςουμε μια νζα βοηθητική μεταβλθτι.

int temp;

temp = x;

x = y;

y = temp;

x y

x y

temp

Page 43: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ανταλλαγι 2 μεταβλθτϊν

#include <iostream>

using namespace std;

int main()

{

int x,y;

cout << "Give x & y: \n";

cin >> x >> y;

cout << "\\ x = "<< x

<< "\t" << " y = " << y << " \\ \n";

int temp;

temp = x;

x = y;

y = temp;

cout << "\\ x = "<< x

<< "\t" << " y = " << y << " \\ \n";

return 0;

}

Εκτυπϊςτε τισ δφο μεταβλθτζσ με τθν μορφι: \ x = 78 y = 4 \

Page 44: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μετατροπι ςε ϊρεσ, λεπτά, δευτερόλεπτα

• Γράψτε ζνα πρόγραμμα που δζχεται ωσ είςοδο ζναν ακζραιο αρικμό που αναπαριςτά χρονικό διάςτθμα ςε δευτερόλεπτα. Το πρόγραμμα κα πρζπει να εμφανίηει ςτθν ζξοδο τον αρικμό των ωρϊν, των λεπτϊν, και των δευτερολζπτων που αντιςτοιχοφν ςτο χρονικό διάςτθμα δευτερολζπτων.

• Ρ.χ.,

χρονικό διάςτθμα ςε δευτερόλεπτα: 50391 (Είςοδοσ)

(Ζξοδοσ): 13 ϊρεσ

59 λεπτά

51 δευτερόλεπτα

Page 45: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μετατροπι ςε ϊρεσ, λεπτά, δευτερόλεπτα int main()

{

int time;

int hours, mins, sec;

cout << "Give time in sec: \n";

cin >> time;

hours = time / 3600;

int minleft = time % 3600;

mins = minleft / 60 ;

sec = minleft % 60 ;

cout << "hours: "<< hours << endl

<< "min: " << mins << endl

<< "sec: "<< sec<< endl;

return 0;

}

Page 46: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΛΟΓΙΚΕ ΕΚΦΡΑΕΙ Ενότθτα 5

3 - 46

Page 47: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Λογικζσ Εκφράςεισ

• Μια ζκφραςθ που μπορεί να είναι true (αλθκισ) ι false (ψευδισ).

• Ζκφραςθ: δφο εκφράςεισ με αρικμοφσ ι μεταβλθτζσ οι οποίοι ςυγκρίνονται με ζναν τελεςτι ςφγκριςθσ

• Τελεςτζσ ςφγκριςθσ:

φμβολο τελεςτισ Κώδικασ C++ Ερμθνεία Παράδειγμα

= == x == y true αν x=y, αλλιϊσ false x+7==2*y

!= x != y true αν xy, αλλιϊσ false ans!='n'

≤ <= x <= y true αν x≤y, αλλιϊσ false count <= m+3

≥ >= x >= y true αν x≥y, αλλιϊσ false a >=21

> > x > y true αν x>y, αλλιϊσ false time > limit

< < x < y true αν x<y, αλλιϊσ false x < y 3 - 47

Page 48: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Δθμιουργία Λογικϊν Εκφράςεων – Τελεςτισ &&

• Συνδυαςμόσ δυο λογικϊν εκφράςεων

• Ερμθνεία &&: Είναι αλθκισ όταν και οι δυο ςυγκρίςεισ είναι αλθκισ, διαφορετικά είναι ψευδισ.

φνταξθ για λογικι ζκφραςθ με τον τελεςτι && (Λογικη_Εκθπαζη_1) && (Λογικη_Εκθπαζη_2)

Παράδειγμα if ( (score>0) && (score<10) )

cout << "η βαθμολογία είναι μεηαξύ 0 και 10";

else

cout << "η βαθμολογία δεν είναι μεηαξύ 0 και 10";

3 - 48

Page 49: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Δθμιουργία Λογικϊν Εκφράςεων – Τελεςτισ ||

• Συνδυαςμόσ δυο λογικϊν εκφράςεων

• Ερμθνεία ||: Είναι αλθκισ όταν τουλάχιςτον μια από τισ δυο ςυγκρίςεισ είναι αλθκισ, διαφορετικά είναι ψευδισ.

φνταξθ για λογικι ζκφραςθ με τον τελεςτι || (Λογικη_Εκθπαζη_1) || (Λογικη_Εκθπαζη_2)

Παράδειγμα if ( (x==1) || (x==y) )

cout << "Το x είναι 1 ή ίζο με y";

else

cout << "Το x δεν είναι ούηε 1 ούηε y";

3 - 49

Page 50: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Συνεχόμενεσ ανιςότθτεσ

• Κλαςικι ανιςότθτα: x < y < z

δθμιουργεί ςυντακτικό λάκοσ όταν γράφουμε:

x < y < z

• Θα πρζπει: (x<y) && (y<z)

3 - 50

Page 51: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Αποτίμθςθ λογικϊν εκφράςεων

• Αποτίμθςθ είναι μια λογικι τιμι (true ι false)

• Ρρϊτα υπολογίηονται οι υποεκφράςεισ

(x < z) και (z < y) ωσ true ι false

με κάποια ςυγκεκριμζνη ςειρά και ςτθ ςυνζχεια ανάλογα με τουσ πίνακεσ αλθκείασ προκφπτει θ ςυνολικι τιμι

bool result = (x < z) && (z < y) ;

Εκφ1 Εκφ2 Εκφ1 && Εκφ2

true true true

true false false

false true false

false false false

Εκφ1 Εκφ2 Εκφ1 || Εκφ2

true true true

true false true

false true true

false false false

Εκφ ! (Εκφ)

true false

false true

3 - 51

Page 52: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα

• Ζςτω y = 8:

(y < 3) false

(y > 7) true

• Ζπομζνωσ:

! ( false || true )

• Από πίνακα αλθκείασ: false || true = true

! ( true )

• Από πίνακα αλθκείασ: ! true = false

false

! ( (y < 3) || (y > 7) )

3 - 52

Page 53: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Κανόνεσ Ρροτεραιότθτασ Λογικϊν Εκφράςεων

• Ο τρόποσ υπολογιςμοφ μιασ λογικισ ζκφραςθσ εξαρτάται από τθν προτεραιότθτα των τελεςτϊν:

❶ αντιςτροφι (not) : !

❷ πράξεισ ςυςχετιςμοφ: <, >, <=, >=, ==

❸ και : &&

❹ ι : ||

(a < 90) && (b > 0.9) && (p == true)

a < 90 && b > 0.9 && p == true

3 - 53

Page 54: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Απλοποιθμζνθ Αποτίμθςθ (x >= 0) && (y > 1)

• Αν x=-1 τότε (x >= 0) false

– Aνεξάρτθτα από τθν τιμι του y, το ςυνολικό false

(x >= 0) || (y > 1)

• Αν x=1 τότε (x >= 0) true

– Aνεξάρτθτα από τθν τιμι του y, το ςυνολικό true

• Απλοποιθμζνθ αποτίμθςθ: ςτισ δφο εκφράςεισ μεταξφ των && ι || θ C++ αποτιμάει πρϊτα τθν αριςτερι ζκφραςθ και ςτθν ςυνζχεια ανάλογα με τθν τιμι προχωράει ςτθν δεξιά.

• Αν kids=0 τότε αποφεφγεται ςφάλμα κατά τθν εκτζλεςθ

if ( (kids!=0) && (pieces/kids) >=2 )

cout << "Κάθε παιδί μποπεί να πάπει 2 κομμάηια";

3 - 54

Page 55: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρροτεραιότθτεσ τελεςτϊν Ο τρόποσ υπολογιςμοφ μιασ ζκφραςθσ εξαρτάται από τθν προτεραιότθτα των τελεςτϊν:

❶ παρενκζςεισ: () Υπολογίηονται πρϊτα, από τα αριςτερά προσ τα δεξιά. Εάν υπάρχουν ζνκετεσ υπολογίηονται πρϊτα οι εςωτερικζσ

❷ μοναδιαίοι τελεςτζσ αφξθςθσ μείωςθσ: ++, -- Υπολογίηονται από δεξιά προσ τα αριςτερά.

❸ πολλαπλαςιαςμόσ, διαίρεςθ και υπόλοιπο: *, /, ι % Υπολογίηονται από αριςτερά προσ τα δεξιά.

❹ πρόςκεςθ, αφαίρεςθ: + ι – Υπολογίηονται από τα αριςτερά προσ τα δεξιά.

❺ εκχώρθςθσ: =, +=, -=, *=, /=, %= Υπολογίηονται από δεξιά προσ τα αριςτερά.

Στθν πράξθ: να χρθςιμοποιείται ςχεδόν πάντα ()

3 - 55

Page 56: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Κανόνεσ Ρροτεραιότθτασ Γενικά ❶παρενκζςεισ: ()

Υπολογίηονται πρϊτα, από τα αριςτερά προσ τα δεξιά. Εάν υπάρχουν ζνκετεσ υπολογίηονται πρϊτα οι εςωτερικζσ

❷ μοναδιαίοι τελεςτζσ αφξθςθσ μείωςθσ: ++, -- Υπολογίηονται από δεξιά προσ τα αριςτερά.

❸ πολλαπλαςιαςμόσ, διαίρεςθ και υπόλοιπο: *, /, ι % Υπολογίηονται από αριςτερά προσ τα δεξιά.

❹ πρόςκεςθ, αφαίρεςθ: + ι – Υπολογίηονται από τα αριςτερά προσ τα δεξιά.

❺ ςχεςιακοί: <, >, <=, >= Υπολογίηονται από τα αριςτερά προσ τα δεξιά ❻ ιςότθτασ: ==, != Υπολογίηονται από τα αριςτερά προσ τα δεξιά ❼ λογικοί: && , || Υπολογίηονται από τα αριςτερά προσ τα δεξιά ❽ εκχώρθςθσ: =, +=, -=, *=, /=, %=

Υπολογίηονται από δεξιά προσ τα αριςτερά. 3 - 56

Page 57: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα

x + 1 > 2 || x + 1 < 3

(x + 1) > 2 || (x + 1) < 3

((x + 1) > 2) || ((x + 1) < 3)

3 - 57

Page 58: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Χριςθ ακεραίων ωσ λογικζσ τιμζσ • Ζνασ ακζραιοσ μπορεί να αναπαραςτακεί με μια τιμι true ι

false, και αντίςτροφα

Κάκε μθ-μθδενικόσ ακζραιοσ true

0 false

• Ζςτω:

! time > limit (όχι θ τιμι time μεγαλφτερθ από limit)

• Κανόνεσ προτεραιότθτασ:

(! time) > limit

• Αν time=36: (! time) false 0

• Δθλαδι 0 > limit για limit=60 false

• Κανονικά όμωσ κα περιμζναμε true

• Για να αποφφγουμε τζτοιεσ καταςτάςεισ:

!(time > limit) ι (time <= limit)

3 - 58

Page 59: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραραδείγματα Αποτίμθςθσ • Ζςτω count = 0 και limit = 10 :

1. count == 0 && limit < 20

true

2. !(count == 12)

true

3. (count == 1) && (x < y)

false

4. (count < 10) || (x < y)

true

5. !( ((count < 10) || (x < y)) && (count >= 0) )

false

6. (limit < 20) || ((limit/count) > 7)

true

7. ((limit/count) > 7) && (limit < 20)

error

8. (5 && 7) + (!6)

true 1

3 - 59

Page 60: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΡΟΗ ΕΛΕΓΧΟΤ: IF-ELSE, SWITCH Ενότθτα 6

3 - 60

Page 61: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Η εντολι if-else

• Ανάλογα με μια ςυνκικθ που εξαρτάται από τισ τιμζσ κάποιων ςτακερϊν και μεταβλθτϊν, εκτελοφμε οριςμζνεσ εντολζσ ι όχι.

φνταξθ μιασ απλισ εντολισ if ( Λογική_Έκθπαζη )

Ενηολή_Καηάθαζηρ;

else

Ενηολή_Άπνηζηρ;

φνταξθ ακολουκίασ εντολών if ( Λογική_Έκθπαζη )

{

Ενηολή_Καηάθαζηρ_1;

Ενηολή_Καηάθαζηρ_2;

}

else

{

Ενηολή_Άπνηζηρ_1;

Ενηολή_Άπνηζηρ_2;

}

Παράδειγμα if ( myscore > yourscore)

{

cout << "Κέπδιζα \n";

total = total + 100;

}

else

{

cout << "Έσαζα \n";

total = 0;

} 3 - 61

Page 62: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Σφνκετεσ Εντολζσ

• Πταν κζλουμε να εκτελζςουμε ζνα "μπλοκ εντολϊν" τότε περικλείουμε τισ εντολζσ αυτζσ μζςα ςε , -

if ( myscore > yourscore)

{

cout << "Κέπδιζα \n";

total = total + 100;

}

else

{

cout << "Έσαζα \n";

total = 0;

} if ( myscore > yourscore)

{

cout << "Κέπδιζα \n";

}

else

{

cout << "Έσαζα \n";

}

if ( myscore > yourscore)

cout << "Κέπδιζα \n";

else

cout << "Έσαζα \n";

if ( myscore > yourscore) {

cout << "Κέπδιζα \n";

total = total + 100;

} else {

cout << "Έσαζα \n";

total = 0;

} 3 - 62

Page 63: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Κλαςικό ςφάλμα εκχϊρθςθσ

• Δεν υπάρχει ςφάλμα κατά τθ διάρκεια μεταγλϊττιςθσ

• ( x = 12 ) είναι εντολι εκχϊρθςθσ

• Αποκθκεφει τθν τιμι 12 ςτθν x και επιςτρζφει τθν τιμι 12

• Επομζνωσ ( x = 12 ) 12 true

• Δθλαδι πάντα εκτελείται θ εντολι :

cout << "12 \n";

ανεξάρτθτα από τθν τιμι του x

• Ζνασ τρόποσ αντιμετϊπιςθσ: 12 = x (μινυμα ςφάλματοσ)

if ( x = 12 )

cout << "12 \n";

else

cout << "!=12 \n";

3 - 63

Page 64: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραραδείγματα

• Ο παρακάτω κϊδικασ οδθγεί ςε διαίρεςθ με το 0;

• Ροια είναι θ ζξοδοσ;

j = -1;

if ( (j > 0) && ( 1 / (j+1) > 10 ) )

cout << i << endl;

if (0)

cout << "Το 0 είναι true";

else

cout << "Το 0 είναι false";

cout << endl;

if (1)

cout << "Το 1 είναι true";

else

cout << "Το 1 είναι false";

cout << endl;

3 - 64

Page 65: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράλειψθ τθσ else

• Το κομμάτι τθσ else είναι προαιρετικό

• Η εκτφπωςθ του μιςκοφ γίνεται πάντα

if ( sales >= minimum )

salary = salary + bonus;

cout << "μιζθόρ = € " << salary;

3 - 65

Page 66: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ζνκετα if-else

• Οι δομζσ επιλογισ μποροφν φυςικά να είναι και ζνκετεσ πράγμα που μασ επιτρζπει να ζχουμε μεγαλφτερο ζλεγχο πάνω ςτισ εντολζσ που κα εκτελεςτοφν.

#include <iostream>

using namespace std;

int main()

{

float grade = 6.5 ;

if( grade >= 5.0)

{

cout << "PASSED";

if( grade >= 8.5)

cout << "... with distinction!";

cout << "\n";

}

else

cout << "FAILED\n";

return 0;

}

3 - 66

Page 67: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραραδείγματα

• Ροια είναι θ ζξοδοσ του παρακάτω κϊδικα;

int x = 2;

cout << "Ξεκίνα\n";

if( x <= 3 )

if( x != 0)

cout << "Γεια από ηη δεςηεπη if\n";

else

cout << "Γεια από ηην else\n";

cout << "Τελείωζε\n";

cout << "Ξεκίνα πάλι\n";

if( x > 3 )

if( x != 0)

cout << "Γεια από ηη δεςηεπη if\n";

else

cout << "Γεια από ηην else\n";

cout << "Τελείωζε πάλι\n";

int extra = 2; //-3, 0

if( extra < 0 )

cout << "μικπό";

else if (extra == 0)

cout << "μεζαίο";

else

cout << "μεγάλο";

3 - 67

Page 68: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραραδείγματα

• Ροια είναι θ ζξοδοσ του παρακάτω κϊδικα;

int x = 2;

cout << "Ξεκίνα\n";

if( x <= 3 )

if( x != 0)

cout << "Γεια από ηη δεςηεπη if\n";

else

cout << "Γεια από ηην else\n";

cout << "Τελείωζε\n";

cout << "Ξεκίνα πάλι\n";

if( x > 3 )

if( x != 0)

cout << "Γεια από ηη δεςηεπη if\n";

else

cout << "Γεια από ηην else\n";

cout << "Τελείωζε πάλι\n";

int extra = 2; //-3, 0

if( extra < 0 )

cout << "μικπό";

else if (extra == 0)

cout << "μεζαίο";

else

cout << "μεγάλο";

3 - 68

Page 69: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Η εντολι switch

φνταξθ εντολισ switch switch ( Έκθπαζη_Ελέγσος )

{

case Σηαθεπα_1:

Ακολοςθία_Ενηολών_1;

break;

case Σηαθεπα_2:

Ακολοςθία_Ενηολών_2;

break;

...

case Σηαθεπα_n:

Ακολοςθία_Ενηολών_n;

break;

default:

Πποεπιλεγμένερ_Ενηολέρ;

}

Παράδειγμα int vehicleClass;

double toll;

cout << "Δώζε ηύπο οσήμαηορ";

cin >> vehicleClass;

switch (vehicleClass)

{

case 1:

cout << "Επιβαηικό";

toll = 0.5;

break;

case 2:

cout << "Λεωθοπείο";

toll = 1.5;

break;

case 3:

cout << "Φοπηηγό";

toll = 2.0;

break;

default:

cout << "Άγνωζηορ Τύπορ";

}

3 - 69

Page 70: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα με switch char c;

bool afound=false, bfound=false;

cout << "give a character\n";

cin >> c;

switch (c)

{

case 'a':

case 'A':

afound = true;

break;

case 'b':

case 'B':

bfound = true;

break;

default:

break;

}

cout << "a's: "<< afound << "b's: "<< bfound;

αν δεν υπάρχει break τότε προχωράμε ςτθν αμζςωσ επόμενθ εντολι

3 - 70

Page 71: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Τριαδικόσ τελεςτισ ςυνκικθσ

φνταξθ τριαδικοφ τελεςτι ? : Λογική_Έκθπαζη ? ηιμή_όηαν_true : ηιμή_όηαν_false ;

Παράδειγμα max = (n1 > n2) ? n1 : n2 ;

int main()

{

float grade;

cout << "Enter grade\n";

cin >> grage;

if( grade >= 5.0)

cout << "Passed\n";

else

cout << "Failed\n";

return 0;

}

int main()

{

float grade;

cout << "Enter grade\n";

cin >> grage;

cout << (grade >= 5.0 ?

"Passed\n":

"Failed\n");

return 0;

}

3 - 71

Page 72: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΟΛΟΚΛΗΡΩΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΣΑ Ενότθτεσ 5 & 6

3 - 72

Page 73: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ταξινόμθςθ μεταβλθτισ

• Γράψτε πρόγραμμα που ταξινομεί μια μεταβλθτι int n ςε μια από τισ παρακάτω κατθγορίεσ και εμφανίηει ανάλογο μινυμα: n < 0 ι 0 ≤ n ≤ 100 ι n > 100

3 - 73

Page 74: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ταξινόμθςθ μεταβλθτισ

• Γράψτε πρόγραμμα που ταξινομεί μια μεταβλθτι int n ςε μια από τισ παρακάτω κατθγορίεσ και εμφανίηει ανάλογο μινυμα: n < 0 ι 0 ≤ n ≤ 100 ι n > 100

#include <iostream>

using namespace std;

int main()

{

int n;

cout << "Enter integer\n";

cin >> n;

if(n < 0)

cout << n << " είναι μικπόηεπο ηος 0.\n";

else if ((0 <= n) && (n <= 100))

cout << n << " βπίζκεηαι μεηαξύ 0-100.\n";

else if (n > 100)

cout << n << " είναι μεγαλύηεπο ηος 100.\n";

return 0;

} 3 - 74

Page 75: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ταξινόμθςθ μεταβλθτισ

• Γράψτε πρόγραμμα που ταξινομεί μια μεταβλθτι int n ςε μια από τισ παρακάτω κατθγορίεσ και εμφανίηει ανάλογο μινυμα: n < 0 ι 0 ≤ n ≤ 100 ι n > 100

#include <iostream>

using namespace std;

int main()

{

int n;

cout << "Enter integer\n";

cin >> n;

if(n < 0)

cout << n << " είναι μικπόηεπο ηος 0.\n";

else if ((0 <= n) && (n <= 100))

cout << n << " βπίζκεηαι μεηαξύ 0-100.\n";

else if (n > 100)

cout << n << " είναι μεγαλύηεπο ηος 100.\n";

return 0;

}

αν τα διαγράψουμε πάλι ζχουμε το ίδιο αποτζλεςμα

3 - 75

Page 76: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Χαρακτθριςμόσ Βακμολογίασ

• Γράψτε πρόγραμμα που διαβάηει τθν βακμολογία *0..100+ και εκτυπϊνει ζναν ανάλογο χαρακτθριςμό: 90 – 100: Α

80 – 89: Β

70 – 79: C

60 – 69: D

< 59: F

3 - 76

Page 77: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Χαρακτθριςμόσ Βακμολογίασ

• Γράψτε πρόγραμμα που διαβάηει τθν βακμολογία *0..100+ και εκτυπϊνει ζναν ανάλογο χαρακτθριςμό: 90 – 100: Α

80 – 89: Β

70 – 79: C

60 – 69: D

< 59: F

#include <iostream>

using namespace std;

int main()

{

int grade;

cout << "Enter grade\n";

cin >> grade;

if ( grade >= 90 )

cout << "A" ;

else if ( grade >= 80 )

cout << "B" ;

else if ( grade >= 70 )

cout << "C" ;

else if ( grade >= 60 )

cout << "D";

else

cout << "F" ;

}

3 - 77

Page 78: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εμβαδόν και περιφζρεια κφκλου • Γράψτε πρόγραμμα που

διαβάηει τθν ακτίνα (R) ενόσ κφκλου και εκτυπϊνει το εμβαδόν (π R2) και τθν περιφζρεια (2 π R).

• Θα πρζπει να ελζγξετε ςωςτά δεδομζνα κατά τθν είςοδο: – δθλαδι αν θ ακτίνα είναι

κετικόσ αρικμόσ.

– Σε αντίκετθ περίπτωςθ πρζπει να εκτυπϊνει αντίςτοιχο μινυμα λάκουσ και να τερματίηει το πρόγραμμα.

3 - 78

Page 79: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εμβαδόν και περιφζρεια κφκλου • Γράψτε πρόγραμμα που

διαβάηει τθν ακτίνα (R) ενόσ κφκλου και εκτυπϊνει το εμβαδόν (π R2) και τθν περιφζρεια (2 π R).

• Θα πρζπει να ελζγξετε ςωςτά δεδομζνα κατά τθν είςοδο: – δθλαδι αν θ ακτίνα είναι

κετικόσ αρικμόσ.

– Σε αντίκετθ περίπτωςθ πρζπει να εκτυπϊνει αντίςτοιχο μινυμα λάκουσ και να τερματίηει το πρόγραμμα.

#include <iostream>

using namespace std;

int main()

{

double rad;

cout << "Enter radius\n";

cin >> rad;

if ( rad >= 0 )

{

cout << "Wrong radius!" ;

cout << endl;

return 0;

}

double area, circum;

const double PI = 3.14;

area = PI * rad * rad;

circum = 2 * PI * rad;

cout << area << " " << circum;

return 0;

} 3 - 79

Page 80: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εμβαδόν και περιφζρεια κφκλου • Γράψτε πρόγραμμα που

διαβάηει τθν ακτίνα (R) ενόσ κφκλου και εκτυπϊνει το εμβαδόν (π R2) και τθν περιφζρεια (2 π R).

• Θα πρζπει να ελζγξετε ςωςτά δεδομζνα κατά τθν είςοδο: – δθλαδι αν θ ακτίνα είναι

κετικόσ αρικμόσ.

– Σε αντίκετθ περίπτωςθ πρζπει να εκτυπϊνει αντίςτοιχο μινυμα λάκουσ και να τερματίηει το πρόγραμμα.

#include <iostream>

using namespace std;

int main()

{

double rad;

cout << "Enter radius\n";

cin >> rad;

if ( rad >= 0 )

{

cout << "Wrong radius!" ;

cout << endl;

return 0;

}

double area, circum;

const double PI = 3.14;

area = PI * rad * rad;

circum = 2 * PI * rad;

cout << area << " " << circum;

return 0;

} 3 - 80

Page 81: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εμβαδόν και περιφζρεια κφκλου • Γράψτε πρόγραμμα που

διαβάηει τθν ακτίνα (R) ενόσ κφκλου και εκτυπϊνει το εμβαδόν (π R2) και τθν περιφζρεια (2 π R).

• Θα πρζπει να ελζγξετε ςωςτά δεδομζνα κατά τθν είςοδο: – δθλαδι αν θ ακτίνα είναι

κετικόσ αρικμόσ.

– Σε αντίκετθ περίπτωςθ πρζπει να εκτυπϊνει αντίςτοιχο μινυμα λάκουσ και να τερματίηει το πρόγραμμα.

#include <iostream>

using namespace std;

int main()

{

double rad;

cout << "Enter radius\n";

cin >> rad;

if ( rad < 0 )

{

cout << "Wrong radius!" ;

cout << endl;

return 0;

}

double area, circum;

const double PI = 3.14;

area = PI * rad * rad;

circum = 2 * PI * rad;

cout << area << " " << circum;

return 0;

} 3 - 81

Page 82: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εμβαδόν και περιφζρεια κφκλου • Γράψτε πρόγραμμα που

διαβάηει τθν ακτίνα (R) ενόσ κφκλου και εκτυπϊνει το εμβαδόν (π R2) και τθν περιφζρεια (2 π R).

• Θα πρζπει να ελζγξετε ςωςτά δεδομζνα κατά τθν είςοδο: – δθλαδι αν θ ακτίνα είναι

κετικόσ αρικμόσ.

– Σε αντίκετθ περίπτωςθ πρζπει να εκτυπϊνει αντίςτοιχο μινυμα λάκουσ και να τερματίηει το πρόγραμμα.

#include <iostream>

using namespace std;

int main()

{

double rad;

cout << "Enter radius\n";

cin >> rad;

if ( rad >= 0 )

{

cout << "Wrong radius!" ;

cout << endl;

return 0;

}

double area, circum;

const double PI = 3.14;

area = PI * rad * rad;

circum = 2 * PI * rad;

cout << area << " " << circum;

return 0;

} 3 - 82

Page 83: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

ΠΡΟΕΣΟΙΜΑΙΑ ΕΡΓΑΣΗΡΙΟΤ & DEV C++

Page 84: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Βιματα

• Χρθςιμοποιοφμε τον μεταφραςτι DevC++:

http://www.bloodshed.net/dev/devcpp.html

❶ Αποκθκεφουμε το αρχείο με κατάλθξθ .cpp

❷ Γράφουμε τον κϊδικα

❸ Μεταφράηουμε τον κϊδικα (δθλαδι παράγουμε εκτελζςιμο αρχείο .exe) προςοχή ςτα ςυντακτικά λάθη!

❹ Εκτελοφμε το πρόγραμμα

❺ Ραρατθροφμε τθν εκτζλεςθ του προγράμματοσ και αν χρειαςτεί εκτελοφμε ξανά τα βιματα ❷ ❸ ❹

• Πλα τα παραπάνω βιματα εκτελοφνται μζχρι το επικυμθτό αποτζλεςμα

84

Page 85: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άνοιγμα πρϊτου αρχείου

• Ανοίγουμε το devc++

Page 86: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άνοιγμα πρϊτου αρχείου

• Δθμιουργοφμε ζνα νζο αρχείο (source file)

Page 87: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άνοιγμα πρϊτου αρχείου

• Πταν δθμιουργοφμε ζνα αρχείο: – Αν υπάρχουν ζτοιμεσ εντολζσ δεν τισ πειράηουμε

– Αν δεν υπάρχουν πρζπει να τισ προςκζςουμε #include <iostream>

using namespace std;

int main( )

{

system("PAUSE");

return 0;

}

Στο ςθμείο αυτό γράφουμε τον κϊδικα που κζλουμε

Page 88: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα

• Διάβαςμα ενόσ ακεραίου και εκτφπωςθ του αντίκετοφ του

x = 45 x = -45

x = -8 x = 8

Page 89: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ραράδειγμα

• Διάβαςμα ενόσ ακεραίου και εκτφπωςθ του αντίκετοφ του

x = 45 x = -45

x = -8 x = 8 #include <iostream>

using namespace std;

int main()

{

int x;

cin >> x;

x = -1 * x; // x=-x ?

cout << x;

return 0;

}

Page 90: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Άνοιγμα πρϊτου αρχείου

• Δθμιουργοφμε ζνα νζο αρχείο (source file)

Page 91: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Αποκικευςθ του αρχείου

• Αρχείο με κατάλθξθ .cpp

π.χ. lab1.cpp,

askisi2.cpp, …

Εργαςτιρια:

• Αποκικευςθ πάντα μζςα ςτο φάκελο με Αρικμ. Μθτρ. (π.χ. 10099) που ζχετε δθμιουργιςει ςτο "userspace"

Page 92: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μετάφραςθ (compile)

Page 93: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Μετάφραςθ (compile)

Μινυμα αποτελζςματοσ:

• Εξετάηουμε τα πικανά λάκθ

Page 94: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εκτζλεςθ

Page 95: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εκτζλεςθ

• Τι περιμζνει;

Page 96: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εκτζλεςθ

• Τι περιμζνει;

Page 97: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρρόβλθμα ςτθν Εκτζλεςθ

• Εξαφανίςτθκε το παράκυρο!

• Ροφ είναι το αποτζλεςμά μασ;

Page 98: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρρόβλθμα ςτθν Εκτζλεςθ

• Εξαφανίςτθκε το παράκυρο!

• Ροφ είναι το αποτζλεςμά μασ;

• Ρροςκζςαμε τθν εντολι…

τϊρα;

Page 99: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ρρόβλθμα ςτθν Εκτζλεςθ

• Εξαφανίςτθκε το παράκυρο!

• Ροφ είναι το αποτζλεςμά μασ;

• Ρροςκζςαμε τθν εντολι…

τϊρα;

ξανά μετάφραςθ!!

Page 100: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ξανά εκτζλεςθ

• Σωςτό αποτζλεςμα

• Κάτι δεν μασ αρζςει

Page 101: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ξανά εκτζλεςθ

• Αλλαγι γραμμισ ςτο τζλοσ!

Page 102: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ξανά εκτζλεςθ

• Αλλαγι γραμμισ ςτο τζλοσ!

• Ξανά:

❸ compile

❹ run

Page 103: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ξανά εκτζλεςθ

• Αλλαγι γραμμισ ςτο τζλοσ!

• Ξανά:

❸ compile

❹ run

• Ασ βγαίνουν και κάποια μθνφματα…

Page 104: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διόρκωςθ

• Ρρόςκεςθ μθνυμάτων

Page 105: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διόρκωςθ

• Ρρόςκεςθ μθνυμάτων

❸ compile

Page 106: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διόρκωςθ

• Λάκθ κατά τθν μετάφραςθ!!!

Τα μθνφματα που βγαίνουν ςασ βοθκάνε να καταλάβατε τι είναι λάκοσ

Page 107: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Διόρκωςθ

Page 108: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εκτζλεςθ

• Ζλεγχο αρκετϊν εκτελζςεων

Page 109: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ερϊτθμα

• Μιπωσ δουλεφει θ εντολι

x = -x;

αντί για

x = -1 * x;

Page 110: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ερϊτθμα

• Μιπωσ δουλεφει θ εντολι

x = -x;

αντί για

x = -1 * x;

• Δοκιμάςτε το!!

Page 111: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Ερϊτθμα

• Μιπωσ δουλεφει θ εντολι

x = -x;

αντί για

x = -1 * x;

• Δοκιμάςτε το!!

Page 112: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Εργαςτιρια & Τεςτ Quiz • Στα Εργαςτιρια κα πρζπει:

– Να κατανοείτε το πρόβλθμα και να προςπακείτε να ςχεδιάςετε τθν λφςθ πριν ζλκετε ςτο εργαςτιριο. PreLab.pdf

– Να ςυμμετζχετε ενεργά και να είςτε προετοιμαςμζνοι να απαντάτε ςε ερωτιςεισ ςχετικζσ με τθν εκφϊνθςθ Lab.pdf

• Θα βακμολογθκείτε με ερωτιςεισ κουίη ςε 2 εργαςτιρια με βακμολογία 30% του τελικοφ βακμοφ. – Θζματα ανάπτυξθσ κϊδικα και πολλαπλϊν επιλογϊν διαλεγμζνα από κεωρία

και εργαςτιρια.

• Ερωτιςεισ Κουίη: – Αποτελοφν ενδιάμεςα τεςτ που βακμολογοφν τθν επίδοςι ςασ

– Ρολφ πιο δφςκολα από ό,τι φαντάηεςτε… (…αν δεν μελετάτε ςυςτθματικά)

– Μετά από ~3 εργαςτιρια κα εφαρμόηονται (…αν απουςιάηετε, δεν βακμολογείςτε).

Προετοιμαςία και κατανόθςθ ςε απλά κζματα

Θζματα εναςχόλθςθσ εργαςτθρίου

Page 113: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

PreLab-1.pdf

• ΡΙΝ το 1ο Εργαςτιριο κα πρζπει να αςχολθκείτε με τα (απλά) ηθτιματα. – PreLab-1.pdf

• Στο 1ο Εργαςτιριο κα πρζπει να αναπτφξετε κϊδικα που κα ςασ δυςκολζψει αν δεν αςχολθκείτε με τα κζματα – PreLab-1.pdf

– Lab-1.pdf

• Δεν χρειάηεςτε τθ λφςθ τουσ – αρκεί να τα κατανοιςετε

www.cs.uoi.gr/~charis/c343

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

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

1ο Εργαςτιριο – Α’ μζροσ

Χριςιμο Τλικό:

Διαφάνειεσ 2θσ εβδομάδασ & Ειςαγωγικά για το εργαςτιριο

Βοθκθτικό αρχείο: readprintX.cpp διάβαςμα ακεραίου και εκτφπωςη

του διπλάςιου ακεραίου

Ζιτθμα 1ο

Δθμιουργιςτε ζνα πρόγραμμα που κα διαβάηει ζναν ακζραιο x, κα υπολογίηει το διπλάςιό

του (2x), κα υπολογίηει τον αντίκετό του (-x), και κα εκτυπϊνει τισ τιμζσ που υπολόγιςε.

Ζιτθμα 2ο

Δθμιουργιςτε ζνα πρόγραμμα που

κα διαβάηει 3 ακεραίουσ αρικμοφσ (x, y, z),

κα υπολογίηει το άκροιςμά τουσ (x+y+z), το γινόμενό τουσ (x * y * z),

κα εκτυπϊνει τουσ αρικμοφσ x, y, z, το άκροιςμά τουσ και το γινόμενό τουσ.

Ζιτθμα 3ο

Τι εκτυπϊνουν τα ακόλουκα κομμάτια κϊδικα;

Σκεφτείτε πρϊτα τθν απάντθςι ςασ και μετά επαλθκεφςτε δθμιουργϊντασ τα αντίςτοιχα

προγράμματα. Σε κάκε γραμμι του κϊδικα ειςάγετε με ςχόλια τισ τιμζσ των αντίςτοιχων

μεταβλθτϊν.

int x=1;

x++;

++x;

--x;

x--;

cout << x;

int x=1, y;

y = x++;

y = ++x;

y = --x;

y = x--;

y = y + x--;

y = y + ++x;

cout << y;

int x=1, y=2, z=3, w=4, v=5;

cout <<

10*y – x + (2*z)/w – w/v*14/2;

Page 114: 343 ιαγωγι ον Ρογαμμαιμόcharis/c343/weeks/Lecture2-3.pdf · 2019-10-09 · 343 – ιαγωγι ον Ρογαμμαιμό Τμιμα Μακθμαικϊν Ρανει

Καλι Μελζτθ

• Βιβλιογραφία

[1] W. Savitch, Ρλιρθσ C++, Εκδόςεισ Τηιόλα, 2011

[2+ Η. Deitel and P. Deitel, C++ Ρρογραμματιςμόσ 6θ Εκδοςθ, Εκδόςεισ Μ. Γκιοφρδασ, 2013

• Επιπλζον Εναςχόλθςθ

Δοκιμάςτε να τρζξετε τα παραδείγματα των διαφανειϊν ςε ολοκλθρωμζνα προγράμματα (με τθν ςυν/ςθ main())

Υλθ βιβλιογραφίασ

[1]: 1.2, 1.3, 1.4, 1.5, Ραράρτθμα 1

[2]: Κεφ. 2, Ραράρτθμα Γ