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

Σχετικά έγγραφα
a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

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

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

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

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

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

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

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

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

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

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

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

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

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

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

2. Δήλωση μεταβλητών. #include <avr/io.h> #include <util/delay.h> unsigned char i=0xa0; register unsigned char i asm("r3");

7. Βασικά στοιχεία προγραµµατισµού.

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

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

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

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

for for for for( . */

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

του προγράμματος diagrama_rohs.zip )

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

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

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

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

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

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

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

Εντολές επιλογής Επαναλήψεις (if, switch, while)

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

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

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Transcript:

Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου Ο τελεστής εκχώρησης = Ο τελεστής = χρησιμοποιείται για την απόδοση τιμής (ή αλλιώς ανάθεση τιμής) σε μία μεταβλητή Π.χ. με την εντολή: a = 10; η τιμή της μεταβλητής a γίνεται 10 (μπορούμε επίσης να πούμε ότι στη μεταβλητή a εκχωρήθηκε η τιμή 10) ενώ με την εντολή: a = k; η τιμή της μεταβλητής a γίνεται ίση με την τιμή τη μεταβλητής k (μπορούμε επίσης να πούμε ότι στη μεταβλητή a εκχωρήθηκε η τιμή της μεταβλητής k) Αν ο τελεστής = χρησιμοποιείται πολλές φορές σε μία εντολή εκχώρησης, τότε η τελική τιμή εκχώρησης αποθηκεύεται σε όλες τις μεταβλητές (ο τελεστής εφαρμόζεται από δεξιά προς τα αριστερά) Π.χ. με την εντολή: int a,b,c; a = b = c = 10; οι τιμές των μεταβλητών a, b και c γίνονται ίσες με 10 2 1

Παρατηρήσεις ΠΡΟΣΟΧΗ!!! Τονίζουμε ότι ο τελεστής εκχώρησης = εφαρμόζεται από δεξιά προς τα αριστερά Συνεπώς, τί θα εμφανίσει το παρακάτω πρόγραμμα??? int a,b,c; a = b = 10 = c; printf("%d %d %d\n",a,b,c); Το πρόγραμμα δεν θα τρέξει, και ο compiler θα εντοπίσει συντακτικό λάθος (δεδομένου ότι γίνεται προσπάθεια εκχώρησης της τιμής της μεταβλητής c στην σταθερή τιμή 10... (πράγμα αδύνατον) Μην συγχέετε λοιπόν την ισότητα από τα μαθηματικά, με τον τελεστή ανάθεσης... 3 Αριθμητικοί τελεστές Οι μαθηματικοί τελεστές +, -, *, / χρησιμοποιούνται για την εκτέλεση των γνωστών μαθηματικών πράξεων Ο τελεστής % χρησιμοποιείται για τον υπολογισμό του υπολοίπου της διαίρεσης δύο ακεραίων αριθμών Π.χ. στο επόμενο παράδειγμα : int a,b; a = 11; b = 3; c = a%b; η τιμή της μεταβλητής c είναι 2 ΠΡΟΣΟΧΗ!!! Ο τελεστής % μπορεί να εφαρμοστεί μόνο μεταξύ ακεραίων αριθμών 4 2

Ο τελεστής αύξησης ++ Ο τελεστής αύξησης ++ μπαίνει πριν ή μετά από το όνομα μίας μεταβλητής Σε κάθε περίπτωση η τιμή της μεταβλητής αυξάνεται κατά ένα 5 Ο τελεστής αύξησης ++ στην εκχώρηση Όταν χρησιμοποιούμε τον τελεστή αύξησης ++ σε κάποια εντολή εκχώρησης, τότε: Αν ο τελεστής χρησιμοποιείται μετά το όνομα της μεταβλητής, τότε πρώτα χρησιμοποιείται η τρέχουσα τιμή της μεταβλητής και μετά αυτή αυξάνεται κατά ένα Αν ο τελεστής χρησιμοποιείται πριν το όνομα της μεταβλητής, τότε πρώτα αυξάνεται η τιμή της μεταβλητής κατά ένα και μετά αυτή χρησιμοποιείται Έξοδος: a = 5 b = 4 Έξοδος: a = 5 b = 5 6 3

Ο τελεστής μείωσης -- Ο τελεστής μείωσης -- μπαίνει πριν ή μετά από το όνομα μίας μεταβλητής Σε κάθε περίπτωση η τιμή της μεταβλητής μειώνεται κατά ένα Για τον τελεστή μείωσης ισχύουν ακριβώς οι ίδιοι κανόνες που παρουσιάστηκαν για τον τελεστή αύξησης 7 Τελεστές Σύγκρισης (Ι) Οι τελεστές σύγκρισης >, >=, <, <=,!=,==, χρησιμοποιούνται για τη σύγκριση των τιμών που έχουν δύο εκφράσεις Συνήθως χρησιμοποιούνται σε εντολές ελέγχου (π.χ. στην εντολή if) και σε επαναληπτικούς βρόχους (π.χ. στην εντολή for) Π.χ. 8 4

Τελεστές Σύγκρισης (ΙΙ) To αποτέλεσμα της έκφρασης στην οποία χρησιμοποιείται κάποιος τελεστής σύγκρισης είναι 1 (όταν η έκφραση είναι αληθής true) ενώ το αποτέλεσμα είναι 0 (όταν η έκφραση είναι ψευδής false) Π.χ. το αποτέλεσμα της έκφρασης (a > 10) είναι ένα (1) μόνο αν η τιμή της μεταβλητής a είναι μεγαλύτερη από το 10, αλλιώς είναι μηδέν (0) Ποια είναι η έξοδος του παρακάτω προγράμματος: 9 Συνδυαστικοί τελεστές Η έκφραση: exp1 op= exp2; όπου συνήθως ο τελεστής op είναι κάποιο από τα σύμβολα των μαθηματικών πράξεων +, -, *, %, / είναι ισοδύναμη με: Π.χ. η έκφραση: a += b; είναι ισοδύναμη με: a = a + b; exp1 = exp1 op (exp2) ενώ η έκφραση: a *= b; είναι ισοδύναμη με: a = a * b; 10 5

Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος: Έξοδος: Num = 2 11 Ο τελεστής! ######## SOS ######## Μία έκφραση χαρακτηρίζεται σαν αληθής (true), όταν η τιμή της είναι διαφορετική από το μηδέν Μία έκφραση χαρακτηρίζεται σαν ψευδής (false), όταν η τιμή της είναι ίση με το μηδέν Αν μία έκφραση exp είναι αληθής (δηλαδή έχει μη μηδενική τιμή), τότε το αποτέλεσμα της πράξης!exp είναι μηδέν (0) Αν μία έκφραση exp είναι ψευδής (δηλαδή έχει μηδενική τιμή), τότε το αποτέλεσμα της πράξης!exp είναι ένα (1) 12 6

Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος: Έξοδος: Num = 0 Ποια είναι η έξοδος του παρακάτω προγράμματος: Έξοδος: Num = 1 13 Παρατηρήσεις Συνήθως, ο τελεστής! χρησιμοποιείται σε συνθήκες ελέγχου στην εντολή if Π.χ. η εντολή: είναι ισοδύναμη με if(!a) if(a == 0) και η εντολή: είναι ισοδύναμη με if(a) if(a!= 0) 14 7

Λογικοί τελεστές Ο τελεστής && Η τιμή μίας έκφρασης που περιέχει τον τελεστή && είναι ένα (1), δηλαδή αληθής, μόνο αν όλοι οι όροι της έκφρασης είναι αληθείς η τιμή της έκφρασης που περιέχει τον τελεστή && είναι μηδέν (0), δηλαδή ψευδής, αν έστω και ένας όρος έχει ψευδή τιμή Ο τελεστής && εφαρμόζει δηλαδή τη λογική πράξη ΚΑΙ (λογική πράξη AND) μεταξύ των όρων στους οποίους εφαρμόζεται Ο τελεστής Μία έκφραση που περιέχει τον τελεστή είναι ένα (1), δηλαδή αληθής, αν έστω και ένας όρος της έκφρασης είναι αληθής Μία έκφραση που περιέχει τον τελεστή είναι μηδέν (0), δηλαδή ψευδής, αν κανένας όρος της έκφρασης δεν είναι αληθής Ο τελεστής εφαρμόζει δηλαδή τη λογική πράξη Ή (λογική πράξη OR) μεταξύ των όρων στους οποίους εφαρμόζεται 15 Παραδείγματα Η έκφραση (10 == 10) && (5 > 3) είναι αληθής, γιατί και οι δύο όροι της έκφρασης είναι αληθείς Αν γράφαμε: a = (10 == 10) && (5 > 3); τότε η τιμή της μεταβλητής a θα γινόταν ίση με 1 Η έκφραση (10 == 10) && (5 > 3) && (13 < 8) είναι ψευδής, γιατί υπάρχει ένας όρος που έχει ψευδή τιμή Αν γράφαμε: a = (10 == 10) && (5 > 3) && (13 < 8); τότε η τιμή της μεταβλητής a θα γινόταν ίση με 0 16 8

Παραδείγματα Η έκφραση (10 == 10) (3 > 5) είναι αληθής, γιατί ένας όρος της έκφρασης είναι αληθής Αν γράφαμε: a = (10 == 10) (3 > 5); τότε η τιμή της μεταβλητής a θα γινόταν ίση με 1 Η έκφραση (10!= 10) (3 > 5) είναι ψευδής, γιατί δεν υπάρχει κάποιος όρος που να είναι αληθής Αν γράφαμε: a = (10!= 10) (3 > 5); τότε η τιμή της μεταβλητής a θα γινόταν ίση με 0 17 Ο τελεστής, Ο τελεστής κόμμα (,) διαχωρίζει πολλές δευτερεύουσες εκφράσεις οι οποίες εκτελούνται διαδοχικά από αριστερά προς τα δεξιά Π.χ. Ο τελεστής κόμμα (,) όπως βλέπετε οδηγεί σε δυσανάγνωστο κώδικα και γι αυτό δεν χρησιμοποιείται Συνήθως χρησιμοποιείται στην ταυτόχρονη δήλωση πολλών μεταβλητών (ως διαχωριστικό) και στη δήλωση των παραμέτρων μίας συνάρτησης (επίσης ως διαχωριστικό) 18 9

Ο τελεστής? Η σύνταξη του τελεστή? είναι η ακόλουθη: exp1? exp2 : exp3; Σε μία εντολή με τον τελεστή? ο κανόνας είναι ότι αν η έκφραση exp1 είναι αληθής, τότε θα εκτελεστεί η έκφραση που ακολουθεί το ερωτηματικό? (δηλαδή η exp2), αλλιώς θα εκτελεστεί η έκφραση που ακολουθεί την άνω-κάτω τελεία : (δηλαδή η exp3) Π.χ. Ο τελεστής? χρησιμοποιείται συνήθως για να υποκαταστήσει την εντολή if, όταν αυτή έχει απλή μορφή 19 Ο τελεστής sizeof() Ο τελεστής sizeof() υπολογίζει τις οκτάδες που δεσμεύει στη μνήμη του υπολογιστή ο τύπος δεδομένων που δηλώνεται στις παρενθέσεις Π.χ. 20 10

Οι τελεστές bit Οι τελεστές bit χρησιμοποιούνται για το χειρισμό των bits μίας μεταβλητής τύπου char, int ή long Η τιμή ενός bit ως γνωστόν μπορεί να είναι 0 ή 1 Οι τελεστές bit είναι οι εξής: Ο τελεστής AND & Ο τελεστής OR Ο τελεστής XOR ^ Ο τελεστής NOT ~ 21 Ο τελεστής & Ο τελεστής & θέτει ένα bit στο 1 μόνο αν τα αντίστοιχα bits και στους δύο τελεστέους είναι 1, aλλιώς, το bit τίθεται στο 0 Πρόκειται ουσιαστικά για τη λογική πράξη ΚΑΙ, η οποία εκτελείται bit προς bit μεταξύ των δύο τελεστέων (bitwise AND) Για να βρούμε το αποτέλεσμα μίας πράξης με τον τελεστή & μετατρέπουμε τις τιμές των τελεστέων στο δυαδικό σύστημα και εφαρμόζουμε τον τελεστή & στα αντίστοιχα bits Π.χ. το αποτέλεσμα της πράξης 19 & 2 είναι 2 22 11

Ο τελεστής Ο τελεστής θέτει ένα bit στο 0 μόνο αν τα αντίστοιχα bits και στους δύο τελεστέους είναι 0, αλλιώς, το bit τίθεται στο 1 Πρόκειται ουσιαστικά για τη λογική πράξη Ή, η οποία εκτελείται bit προς bit μεταξύ των δύο τελεστέων (bitwise OR) Όπως και στην περίπτωση με τον τελεστή &, για να βρούμε το αποτέλεσμα μίας πράξης με τον τελεστή μετατρέπουμε τις τιμές των τελεστέων στο δυαδικό σύστημα και εφαρμόζουμε τον τελεστή στα αντίστοιχα bits Π.χ. το αποτέλεσμα της πράξης 19 6 είναι 23 23 Ο τελεστής ^ Ο τελεστής ^ θέτει ένα bit στο 1 μόνο αν τα αντίστοιχα bits και στους δύο τελεστέους είναι διαφορετικά μεταξύ των, αλλιώς, το bit τίθεται στο 0 Πρόκειται ουσιαστικά για τη λογική πράξη ΑΠΟΚΛΕΙΣΤΙΚΟ Ή, η οποία εκτελείται bit προς bit μεταξύ των δύο τελεστέων (bitwise ΧOR, δηλ. bitwise exclusive OR) Όπως και στις προηγούμενες περιπτώσεις μετατρέπουμε τις τιμές των τελεστέων στο δυαδικό σύστημα και εφαρμόζουμε τον τελεστή ^ στα αντίστοιχα bits Π.χ. το αποτέλεσμα της πράξης 19 ^ 6 είναι 21 24 12

Ο τελεστής ~ Ο τελεστής συμπληρώματος ~ εφαρμόζεται σε έναν τελεστέο και αντιστρέφει κάθε bit στον τελεστέο του, αλλάζοντας όλα τα 0 σε 1, και αντιστρόφως Πρόκειται ουσιαστικά για τη λογική πράξη ΔΕΝ, η οποία εκτελείται bit προς bit στον τελεστέο που εφαρμόζεται (bitwise NOT) Π.χ. σε ένα 32-bit σύστημα το αποτέλεσμα της πράξης ~19 είναι (2 32 1)- 19 25 Οι τελεστές ολίσθησης Οι τελεστές ολίσθησης (>> και <<) μετατοπίζουν τα bits μίας μεταβλητής τύπου char, int ή long κατά ένα συγκεκριμένο αριθμό θέσεων, όπως δείχνουν τα «νοητά βέλη» Ο τελεστής >> μετατοπίζει τα bits της μεταβλητής προς τα δεξιά, όπως δηλαδή δείχνουν τα «νοητά βέλη» Ο τελεστής << μετατοπίζει τα bits της μεταβλητής προς τα αριστερά, όπως δηλαδή δείχνουν τα «νοητά βέλη» 26 13

Ο τελεστής >> Η έκφραση i >> n μετατοπίζει τα bits της μεταβλητής i κατά n θέσεις δεξιά και τοποθετεί μηδενικά στα n υψηλότερης τάξης bits της μεταβλητής. Π.χ. το αποτέλεσμα της πράξης 143 >> 2 είναι 35 10001111 >> 2 = 00100011 Συγκεκριμένα, χάθηκαν τα τελευταία bits 1 και 1 του αρχικού αριθμού και τοποθετήθηκαν τα bits 0 και 0 στις θέσεις 7 και 8, αντίστοιχα 27 Ο τελεστής << Η έκφραση i << n μετατοπίζει τα bits της μεταβλητής i κατά n θέσεις αριστερά και τοποθετεί μηδενικά στα n χαμηλότερης τάξης bits της μεταβλητής. Π.χ. το αποτέλεσμα της πράξης 202 << 2 είναι 808 11001010 << 2 = 1100101000 Συγκεκριμένα, τα υψηλότερα bits 1 και 1 του αρχικού αριθμού μετακινήθηκαν κατά 2 θέσεις αριστερά και τοποθετήθηκαν τα bits 0 και 0 στις θέσεις 0 και 1, αντίστοιχα 28 14

Παρατηρήσεις Όταν χρησιμοποιείται ο τελεστής << και το αποτέλεσμα αποθηκεύεται σε μία μεταβλητή, ο τύπος δεδομένων της μεταβλητής πρέπει να είναι τέτοιος ώστε να μπορεί να αποθηκευτεί η τελική τιμή Π.χ. Ποια είναι η έξοδος του προγράμματος??? Περιμένατε να τυπωθεί: Value = 256 αλλά τυπώθηκε Value = 0 Γιατί??? 29 Προτεραιότητα Τελεστών Κάθε τελεστής χαρακτηρίζεται από μία προτεραιότητα Σε μία έκφραση που περιέχονται περισσότεροι του ενός τελεστές, οι πράξεις εκτελούνται σύμφωνα με τη σειρά προτεραιότητας του κάθε τελεστή Π.χ. το αποτέλεσμα της πράξης: 7 + 5 * 3 1 είναι 21, γιατί ο τελεστής * έχει μεγαλύτερη προτεραιότητα από τους τελεστές + και -, οπότε πρώτα εκτελείται η πράξη 5*3 = 15 και όχι οι πράξεις 7+5 ή 3-1 Αν μία έκφραση περιέχει διαδοχικούς τελεστές με την ίδια προτεραιότητα, τότε οι πράξεις εκτελούνται από αριστερά προς τα δεξιά Π.χ. το αποτέλεσμα της πράξης: 7 * 4 / 2 * 5 είναι 70, γιατί αφού οι τελεστές * και / έχουν την ίδια προτεραιότητα, τότε πρώτα εκτελείται ο πολλαπλασιασμός 7*4 = 28, μετά η διαίρεση 28/2 = 14 και μετά ο πολλαπλασιασμός 14*5 = 70 30 15

Πίνακας Προτεραιοτήτων 31 Παρατηρήσεις Όπως φαίνεται και στον πίνακα προτεραιοτήτων, μία έκφραση που περιβάλλεται από παρενθέσεις ( ) έχει τη μέγιστη προτεραιότητα, δηλαδή εκτελείται πάντα πρώτη Προτείνεται λοιπόν η χρήση παρενθέσεων ( ), ακόμα και όταν δεν χρειάζονται, έτσι ώστε ο κώδικας να είναι πιο ευανάγνωστος και να γίνεται σαφέστερη η σειρά εκτέλεσης των πράξεων Είναι πιο σαφές να γράψουμε: π.χ.1) a = 7+(5*3)-1; αντί a = 7+5*3-1; π.χ.2) if((i < 10) && (j > 20) && (k == 30)) αντί if(i < 10 && j > 20 && k == 30) π.χ.3) if((a >> 2) == 10) αντί if(a >> 2 == 10) Οι τελεστές [], ->,., &, * θα παρουσιαστούν σε επόμενες διαλέξεις (πίνακες/δείκτες/δομές) 32 16