Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Σχετικά έγγραφα
Προγραμματισμός Ι. Θεματική ενότητα 3: Tελεστές. εκφράσεις

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Ανάπτυξη και Σχεδίαση Λογισμικού

Διαδικασιακός Προγραμματισμός

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό

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

Ε Π Ι Μ Ε Λ Η Τ Η Ρ Ι Ο Κ Υ Κ Λ Α Δ Ω Ν

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Δομημένος Προγραμματισμός

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην Πληροφορική

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

5 &6. Τύποι δεδομένων, τελεστές και

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

a = 10; a = k; int a,b,c; a = b = c = 10;

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στη γλώσσα προγραμματισμού C++

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Ι (ΗΥ120)

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Ανάπτυξη και Σχεδίαση Λογισμικού

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Προγραμματισμός Ι (HY120)

Προγραμματισμός I (Θ)

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

8. Συνθήκες ελέγχου, λογικοί τελεστές

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Δομημένος Προγραμματισμός

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Βασικές Αρχές Προγραμματισμού

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στη γλώσσα προγραμματισμού C++14

Περιεχόμενα. Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6) Τύποι Δεδομένων. Τελεστές. Αριθμητικές εκφράσεις

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΗΥ-150. Προγραμματισμός

Εισαγωγή στον δομημένο προγραμματισμό

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

Δομημένος Προγραμματισμός

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΗΥ-150. Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Τύποι δεδομένων, τελεστές, μεταβλητές

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Βασικές έννοιες προγραμματισμού

Εισαγωγή στον Προγραμματισμό

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Εκχώρηση Τιμών

Βασικά στοιχεία της Java

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Δομημένος Προγραμματισμός (ΤΛ1006)

Δεδομένα, τελεστές, είσοδος/έξοδος

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα

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

Transcript:

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1

Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός λύσης (Αλγόριθμο) 3. Μεταφορά Αλγορίθμου σε Κώδικα (πηγαίο) 4. Μεταγλώττιση πηγαίου κώδικα 5. Παραγωγή του αντικείμενου κώδικα 6. Σύνθεση του αντικείμενου κώδικα 7. Εκτέλεση προγράμματος 2

Στάδια Υλοποίησης Προγράμματος Μεταφορά αλγόριθμου ΟΧΙ Μελέτη Προβλήματος και Σχεδιασμός Αλγορίθμου Σχεδιασμός πηγαίου κώδικα με βάση τον αλγορίθμο & πληκτρολόγηση με επεξεργαστή Κειμένου Εκτελέσιμο.EXE εκτέλεση ΟΧΙ Κλήση ΝΑΙ Λάθος Βιβιοθήκες Επιτεύχθει Σωστή/ Λογική Λύση ; Compiler ΝΑΙ Linker κλήση Αντικείμενο Κώδικας.OBJ Τέλος Προγράμματος Συντακτικά Λάθη; 3 ΟΧΙ

Τι είναι μεταβλητή; Μεταβλητή είναι μια περιοχή στην μνήμη του υπολογιστή στην οποία μπορούμε να αποθηκεύσουμε μια τιμή και να την ανακτήσουμε. Το όνομα μιας μεταβλητής είναι άμεσα συνδεδεμένο με την διεύθυνση με την οποία είναι αποθηκευμένο το δεδομένο. Την μνήμη του υπολογιστή μπορούμε να την φανταστούμε σαν μια σειρά άδεια κελιά τα οποία είναι στοιχισμένα σε μια διαδοχική σειρά. Το κάθε κελί ή θέση μνήμης αριθμείτε σειριακά. Αυτοί οι αριθμοί είναι γνωστοί ως διευθύνσεις μνήμης. 4

Κ Υ Κ Λ Ο Σ Ζ Ω Η Σ Μ Ε Τ Α Β Λ Η Τ Η Σ Α Ν Α Γ Κ Η Χ Ρ Η Σ Η Σ Μ Ε Τ Α Β Λ Η Τ Η Σ Ε Π ΙΛ Ο Γ Η Ο Ν Ο Μ Α Τ Ο Σ Σ χ η μ α τ ισ μ ό Ο ν ό μ α τ ο ς α π ό Γ ρ ά μ μ α τ α τ ο υ Α λ φ α β ή τ ο υ ψ η φ ία 0 9 χ α ρ α κ τ ή ρ α υ π ο γ ρ ά μ μ ισ η ς Ξ ε κ ιν α μ ε γ ρ ά μ μ α ή χ α ρ α κ τ ή ρ α υ π ο γ ρ ά μ μ ισ η ς Ο χ ι δ ε σ μ ε υ μ έ ν η λ έ ξ η Μ έ γ ε θ ο ς μ έ χ ρ ι 3 1 γ ρ ά μ μ α τ α Ε ν δ ε ικ τ ικ ό μ ε τ η ν ιδ ιό τ η τ α ή τ ο υ τ ύ π ο υ π ο υ α ν τ ιπ ρ ο σ ω π ε ύ ε ι Ε Π ΙΛ Ο Γ Η Τ Υ Π Ο Υ Β α θ μ ο τ ός ή Σ υ να θρ οισ τ ικ ό ς Β α θ μ ο τ ός Β α θ μ ω τ ώ ν Τ ύ π ω ν i n t κ ω δ ικ ή λ έ ξ η γ ια α κ ε ρ α ίο υ ς ( in te g e r s ) f l o a t κ ω δ ικ ή λ έ ξ η γ ια π ρ α γ μ α τ ικ ο ύ ς ( re a l ) d o u b l e κ ω δ ικ ή λ έ ξ η γ ια α ρ ιθ μ ο ύ ς δ ιπ λ ή ς α κ ρ ίβ ε ια ς c h a r γ ια χ α ρ α κ τ ή ρ α ( c h a r a c te r ) Δ ε ίκ τ ε ς ( p o in te r s ) Α π α ρ ιθ μ η τ ικ ό τ ύ π ο e n u m (e n u m e ra te d ) Σ υ να θρ οισ τ ικ ό ς Σ υ ν α θ ρ ο ι σ τ ι κ ώ ν Τ ύ π ω ν Π ί ν α κ ε ς ( A r ra y ) Δ ο μ έ ς (S tru c t) Ε ν ώ σ ε ι ς ( U n i o n ) Δ Η Λ Ω Σ Η Μ ε π ρ ό τ α σ η ο ρ ισ μ ο ύ η ο π ο ία τ ε λ ε ιώ ν ε ι μ ε ; Η μ ο ρ φ ή δ ή λ ω σ η ς ε ίν α ι : κ ω δ ι κ ή _ λ έ ξ η _ τ ύ π ο υ ό ν ο μ α _ μ ε τ α β λ η τ ή ς ; i n t κ ω δ ικ ή λ έ ξ η γ ια α κ ε ρ α ίο υ ς (i n te g e rs ) f l o a t κ ω δ ικ ή λ έ ξ η γ ια π ρ α γ μ α τ ικ ο ύ ς (r e a l) d o u b l e κ ω δ ικ ή λ έ ξ η γ ια α ρ ιθ μ ο ύ ς δ ιπ λ ή ς α κ ρ ίβ ε ια ς c h a r γ ια χ α ρ α κ τ ή ρ α (c h a ra c te r) Δ η λ ώ ν ε τ α ι σ τ η ν α ρ χ ή μ ια ς σ υ ν ά ρ τ η σ η ς Μ ε τ ά τ ο ε ισ α γ ω γ ικ ό ά γ κ ισ τ ρ ο Ο π ω σ δ ή π ο τ ε π ρ ίν α π ο τ η ν χ ρ ή σ η Α Ρ Χ ΙΚ Η Τ ΙΜ Η Δ ίν ε τ α ι α μ έ σ ω ς μ ε τ ά τ η ν δ ή λ ω σ η ή π ρ ίν α π ο τ η ν π ρ ώ τ η χ ρ ή σ η τ η ς. Ισ χ ύ ε ι μ έ χ ρ ι τ η ν π ρ ώ τ η α λ λ α γ ή τ ιμ ή ς ε ν τ ό ς π ρ ο γ ρ ά μ μ α τ ο ς Κ ρ ίν ε τ α ι α ν α γ κ α ία γ ια τ η ν σ ω σ τ ή λ ε ιτ ο υ ρ γ ία τ ο υ π ρ ο γ ρ ά μ μ α τ ο ς Ε ξ υ π η ρ ε τ ε ί σ τ η ν τ ο π ο θ έ τ η σ η μ α ζ ικ ώ ν τ ιμ ώ ν κ α ι δ ο κ ιμ ώ ν Α Ν Α Θ Ε Τ Η Σ Η Τ ΙΜ Ω Ν Χ Ρ Η Σ Η Π ά ν τ ο τ ε ε ν τ ό ς τ η ς σ υ ν ά ρ τ η σ η ς Ό σ ε ς φ ο ρ έ ς κ ρ ίν ε τ α ι α ν α γ κ α ίο Χ ρ ή σ η ώ ς π ρ ο ς α ν ά κ τ η σ η τ ιμ ή ς α π ο θ η κ ε υ μ έ ν η ς τ ιμ ή ς Χ ρ ή σ η ώ ς π ρ ο ς τ ο π ο θ έ τ η σ η ν έ α ς τ ιμ ή ς 5 Α Π Ε Λ Ε Υ Θ Ε Ρ Ω Σ Η

Τελεστές Τελεστέοι Τελεστές (operators) Σύμβολα ή λέξεις που αναπαριστούν συγκεκριμένες διεργασίες, οι οποίες εκτελούνται επί ενός ή περισσότερων δεδομένων. Τελεστέοι (operands) Δεδομένα τα οποία βρίσκονται σε μεταβλητές, σταθερές ή κλήσεις συναρτήσεων Χρήση Τελεστών για το σχηματισμό Εκφράσεων Μια έκφραση στον προγραμματισμό μπορεί να αποτελείται από έναν ή περισσότερους τελεστέους και από έναν ή περισσότερους τελεστές. Π.χ η εντολή >x = x + 1; Τελεστέως Τελεστέως Διεργασία πρόσθεσης δύο τελεστέων 6

Τελεστές & Ταξινόμηση Ταξινόμηση ανάλογα με : A. τον αριθμό των τελεστέων στους οποίους δρουν 1. Μοναδιαίους (unary) 2. Δυαδικούς (binary) 3. Τριαδικούς (ternary) B. Την διεργασία που εκτελούν Κατηγορία Ενδεικτικοί τελεστές Αριθμητικοί + * / Λογικοί &&! Συσχετιστικοί > >= ==!= Διαχείριση bits >> &! ^ Διαχείριση μνήμης & []. > 7

Σύμβολα δυαδικών τελεστών Δυαδικός Τελεστής Σύμβολο Μικρότερο Μικρότερο ή ίσο Ίσο Διάφορο Μεγαλύτερο Μεγαλύτερο ή ίσο Πρόσθεση Αφαίρεση Πολλαπλασιασμός Διαίρεση πραγματικών Πηλίκο διαίρεσης ακεραίων Υπόλοιπο διαίρεσης ακεραίων < <= ==!= > >= + * / / % 8

Σημειογραφία Τελεστών και C Η θέση του τελεστή ανάμεσα σε τελεστέους παρουσιάζει διαφορετική σημειογραφία κάθε φορά. Ένθετου τελεστή a+b (μεταξύ τελεστέων) Προπορευόμενου τελεστή +ab (πρίν από τελεστέους) Παρελκόμενου τελεστή ab+. (μετά από τους τελεστέους) 1. Αποφυγή χρήσης τελεστών ανάμεσα σε μεικτούς τύπους τελεστέων 2. Υπάρχει διάκριση ανάμεσα στην διαίρεση ακεραίων και διαίρεση αριθμών Κινητής υποδιαστολής. Συνεπώς, η διαίρεση 7/2 θα δώσει το πηλίκο που είναι 3 Και όχι το 3.5. Για την επίτευξη σωστού αποτελέσματος πρέπει ο ένας από τους Δύο τελεστέους να είναι αριθμός κινητής υποδιαστολής. (7.0/2 = 3.5) 9

Γλώσσα C Κατηγορίες Εκφράσεων Σταθερές (περιέχουν μόνο σταθερές τιμές) Ακέραιες και Κινητής υποδιαστολής (μετά από άμεσες και έμμεσες μετατροπές τύπων δίνουν αποτέλεσμα τύπου ακεραίου ή κινητής υποδιαστολής) Εκφράσεις Δείκτη (Εκφράσεις με τιμή μία διεύθυνση. Εκφράσεις με περιεχόμενο μεταβλητές τύπου δείκτη, τελεστή διεύθυνσης (&), αλφαριθμητικές σταθερές και ονόματα πινάκων) 10

Προτεραιότητα & Προσεταιριστικότητα Τελεστών Σχηματισμός ένθετων εκφράσεων με την χρήση παρενθέσεων (((n+5)<=a)&&q) Η διαδοχική παράθεση τελεστών 5*6 4 Α. (5*6) 4 = 26 Β. 5*(6 4)=10 Προς αποφυγή των παραπάνω δυσχερειών οι τελεστές ταξινομούνται σε επίπεδα προτεραιότητας με τον κανόνα ότι οι τελεστές υψηλού επιπέδου δρουν επί των τελεστέων πριν από τους τελεστές χαμηλότερου επιπέδου Η ύπαρξη περισσότερων τελεστών στο ίδιο επίπεδο προτεραιότητας επιβάλλει τον προσδιορισμό κατεύθυνσης εφαρμογής από αριστερά προς τα δεξιά Πχ. 8 5 2 = 1 Τελεστές +,,*,/ είναι αριστερής προσεταιριστικότητα Τελεστής = (ανάθεσης) δεξιά προσεταιριστικότητα 11

Πίνακας προτεραιότητας & προσεταιριστικότητας Τελεστές Προσεταιριστικότητα () [] > Από αριστερά προς τα δεξιά! ~ ++ + * & (τύπος) sizeof * / % (αριθμητικοί τελεστές) + (αριθμητικοί τελεστές) << >> < <= > >= ==! = & ^ &&?: = += = *= &= ^= = <<= >>= Από αριστερά προς τα δεξιά Από αριστερά προς τα δεξιά Από δεξιά προς τα αριστερά 12

Τελεστές αύξησης και μείωσης Τελεστής αύξησης (increment operator) συμβολίζεται με ++ Π.χ num = num + 1; ισοδυναμεί με num++; Αντίστοιχα, Τελεστής μείωσης (decrement operator) συμβολίζεται με Πχ. num = num 1; Ισοδυναμεί με num ; Οι τελεστές αύξησης και μείωσης μπορούν να δυσκολέψουν την κατανόηση πράξεων κυρίως όταν παρουσιάζονται ως προπορευόμενοι ή παρελκόμενοι Π.χ. y= x + y; ή z= ++x + y; 13

Τελεστές αύξησης και μείωσης & προτεραιότητα Σε περίπτωση προπορευόμενου τελεστή το σύστημα πρώτα εκτελεί την αύξηση ή μείωση και μετά χρησιμοποιεί την νέα τιμή της μεταβλητής στην έκφραση Παραδείγματα z=++x + y; Αντιθέτως, στην περίπτωση του παρελκόμενου τελεστή το σύστημα πρώτα χρησιμοποιεί την τιμή της μεταβλητής για τον υπολογισμό της τιμής της έκφρασης και μετά εκτελεί την αύξηση ή μείωση της τιμής της μεταβλητής Παραδείγματα z= x++ +y; 14

Τελεστές ανάθεσης Σκοπός αυτών είναι να εκτελούν κάποια πράξη ανάμεσα στους τελεστέους και να εκχωρούν το αποτέλεσμα σε έναν από τους τελεστέους Πχ. x*=10 ισοδυναμεί με x=x*10; Στην κατηγορία των τελεστών ανάθεσης έχουμε και τους τελεστές διαχείρισης δυαδικών ψηφίων (bitwise operator) >>= <<= &= ^= = 15

Συσχετιστικοί Τελεστές (relational operators) Συγκρίνουν δύο τελεστέους Το αποτέλεσμα της έκφρασης με συσχετιστικούς τελεστές είναι ΑΛΗΘΕΣ(1) ή ΨΕΥΔΕΣ (0) Π.χ 3<2 επιστρέφει 0 Π.χ. 2 == 2 επιστρέφει 1 Συσχετιστικοί Τελεστές Δράση < > <= >= ==!= Μικρότερο Μεγαλύτερο από Μικρότερο ή ίσον από Μεγαλύτερο ή ίσον από Ίσο Διάφορο Εξετάζοντας του αριθμητικούς τελεστές με τους συσχετιστικούς παρατηρούμε ότι και οι δύο δρουν αριθμητικές εισόδους με την διαφορά ότι οι συσχετιστικοί έχουν 16 μια δίτιμη έξοδο

Λογικοί Τελεστές Δρουν επι ενός ή δύο τελεστέων Έχουν σαν βάση την δίτιμη άλγεβρα Boole Οι είσοδοι και έξοδοι μπορούν να λάβουν μόνο δύο τιμές TRUE και FALSE Τελεστής Δράση && Λογικό AND Λογικό OR! Λογικό NOT p q p&&q p q!p T T T T F T F F T F F T T T Π.Χ (10+5)<(12+8) >15<20 > TRUE Πχ (10>5) ( 8>10) > true false > true F F F F 17

Μετατροπές τύπων Όταν έχουμε τελεστέους διαφορετικών τύπων αυτοί μετατρέπονται σε ενιαίο (α) Με αυτόματο τρόπο (Υπονοούμενη) (β) Με ρητή εντολή του προγραμματιστή Α. Υπονοούμενη 3.0+ ½ >3.0 και όχι 3.5 Όταν έχουμε δύο τύπους δεδομένων, ο στενότερος μετατρέπεται στον ευρύτερο χωρίς απώλεια Οι τύποι της γλώσσας ταξινομούνται ανάλογα με το μέγεθος μνήμης που απαιτούν για αποθήκευση Char < int < long < float < double Στην γλώσσα C οι αριθμητικές εκφράσεις μετατρέπουν αυτόματα τον τύπο char σε int και το float σε double 18

Παράδειγμα υπονοούμενων μετατροπών # include <stdio.h> main() { char ch; int i; float fl; fl=i=ch= A ; //(1) printf( ch=%c, i=%d, fl=%2.2f,\n,ch,i,fl); ch=ch+1; i=fl+2*ch; printf( ch=%c, i=%d, fl=%2.2f,\n,ch,i,fl); } 19

Β. Ρητές μετατροπές Μετατροπή μιας τιμής σε διαφορετικό τύπο κατόπιν εντολής του προγραμματιστή Η διαδικασία ονομάζεται προσαρμογή Ο τελεστής μετατροπής είναι μοναδιαίος και έχει την μορφή (τύπος δεδομένων) Τοποθετείται μπροστά από μια έκφραση για να μετατρέψει την τιμή της στον περικλειόμενο σε παρενθέσεις τύπο 5/2 > 2 (float) 5 / (float) 2 > 2.5 20

Τελεστές sizeof Επιστρέφει τον αριθμό των bytes που η τιμή της έκφρασης ή ο τύπος δεδομένων καταλαμβάνει στη μνήμη Ενεργεί επάνω σε εκφράσεις sizeof(x+y) Το σύστημα δεν υπολογίζει την τιμή της έκφρασης (βλέπε παράδειγμα) Και σε τύπο δεδομένων πχ. sizeof(int) #include <stdio.h> #include <conio.h> main() { int x,y; Το πρόγραμμα επιστρέφει x=4 y=4 x+y=4 } printf("x=%d",sizeof(x)); printf("\ny=%d",sizeof(y)); printf("\nx+y=%d",sizeof(x+y)); getch(); 21