C# COMPLETE COURSE

image description

ΕΝΟΤΗΤΑ 6 - OPERATORS (PART 2)

INTRODUCTION

Σε αυτό το δωρεάν μάθημα C# θα συνεχίσουμε την αναφορά μας στους operator και πιο συγκεκριμένα θα αναλύσουμε τους logical operators, θα εξετάσουμε τον concatenation operator, θα δούμε την χρησιμότητα του ternary operator και θα καταλάβουμε ποια είναι η σειρά εκτέλεσης όλων αυτών των operators με βάση τη θεωρία του operator precedence. Κάθε μια από τις παραπάνω έννοιες θα αναλυθούν με την βοήθεια απλού και κατανοητού κώδικα. Για περισότερες πληροφορίες μπορείτε να αναφερθείτε στο documentation της C# (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/boolean-logical-operators)

LOGICAL OPERATORS

Οι logical operators μας επιτρέπουν να συνδυάσουμε πολλαπλά Boolean expressions έτσι ώστε να μπορέσουμε δημιουργήσουμε ακόμα πιο πολύπλοκα Boolean expressions. Το αποτέλεσμα που λαμβάνουμε από οποιοδήποτε συνδυασμό των logical operators είναι πάντα μια Boolean τιμή. Σαν logical operators ορίζουμε τα σύμβολα |, ||, &, && και το ^. Όσο αφορά τη διαφορά ανάμεσα στο σύμβολο | και το || αλλά και τη διαφορά ανάμεσα στο & και το && θα την αναλύσουμε πολύ γρήγορα. Ας δούμε λοιπόν κάθε ένα logical operator ξεχωριστά και ας καταλάβουμε σε ποιες καταστάσεις θα ταίριαζε καλύτερα η χρήση τους.

OR OPERATOR ( || )

Ας υποθέσουμε ότι έχουμε δημιουργήσει ένα πρόγραμμα μέσα από το οποίο ο χρήστης θα μπορέσει να σταματήσει την εκτέλεση του είτε γράφοντας την λέξη quit είτε πατώντας το Esc πλήκτρο. Για να μπορέσουμε να ενεργοποιήσουμε τις δύο αυτές επιλογές μπορούμε να χρησιμοποιήσουμε τον OR Operator ( || ). Ο OR || Operator αξιολογεί τις Boolean expressions που έχουμε ορίσει και μας επιστρέφει true εάν ένας από τους δύο όρους του είναι true.

Program.cs

Output

Δωρεάν Μαθήματα C#

Με τις διπλές κάθετες μπάρες || ο OR operator δεν είναι ανάγκη να αξιολογήσει και τους δύο όρους του. Αν για παράδειγμα ο πρώτος όρος είναι true τότε δεν ελέγχεται ο δεύτερος όρος αφού το αποτέλεσμα θα είναι true έτσι και αλλιώς. Αυτή είναι η βασική διαφορά σε σχέση με την μονή μπάρα | που κυρίως είναι για λόγους γρήγορης αξιολόγησης του expression. Αυτή η γρήγορη αξιολόγηση ονομάζεται short-circuit και ισχύει και για τον AND Operator ( && ).

AND OPERATOR ( && )

Ο Boolean AND operator ( && ) επιστρέφει true σαν αποτέλεσμα μόνο όταν και οι δύο όροι του είναι true. Εάν ένας από τους δύο όρους είναι false τότε ο δεύτερο όρος δεν αξιολογείται. Για άλλη μια φορά, με τη χρήση του short-circuit επιταχύνεται η εκτέλεση του κώδικα.

Program.cs

Output

Δωρεάν Μαθήματα C#

EXCLUSIVE OR OPERATOR ( ^ )

Ο Exclusive OR operator ( ^ ) επιστρέφει true μόνο όταν ένας όρος είναι true. Σε οποιαδήποτε άλλη περίπτωση (όπως για παράδειγμα αν και οι δύο όροι είναι true) επιστρέφει false. Επειδή πρέπει να ελεγχθούν και οι δύο όροι, ο Exclusive OR Operator είναι ο μοναδικός operator στον οποίο δεν εφαρμόζεται το short-circuit.

LOGICAL NEGATION OPERATOR ( ! )

Ο Logical Operator ( ! ) ή αλλιώς NOT Operator έχει την ικανότητα απλά να αντιστρέφει την τιμή ενός όρου. Αυτός ο operator ανήκει στην κατηγορία των unary operators οι οποίοι δέχονται μόνο έναν όρο.

Program.cs

Output

Δωρεάν Μαθήματα C#

CONCATENATION OPERATOR

Στο προηγούμενο παράδειγμα δείξαμε το αποτέλεσμα χρησιμοποιώντας την εντολή:

Console.WriteLine("What is the value of result? " + result);

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

Όταν χρησιμοποιούμε την WriteLine( ) μέθοδο συνήθως συνδυάζουμε λεκτικές προτάσεις με τις τιμές που περιέχουν οι μεταβλητές για να δώσουμε ένα ολοκληρωμένο και κατανοητό μήνυμα απάντησης στον τελικό χρήστη της εφαρμογής μας. Τα μηνύματα όπως ήδη γνωρίζουμε γράφονται μέσα σε διπλά quotes ( “ “ ) και ονομάζονται strings. Όταν λοιπόν προσπαθήσουμε να ενώσουμε ένα string μήνυμα με οποιοδήποτε άλλο είδος τιμών, η C# δεν θα εκτελέσει την πράξη την αλγεβρικής πρόσθεσης αλλά θα «κολλήσει» το string μήνυμα δίπλα στις υπόλοιπες πληροφορίες. Χρησιμοποιώντας λοιπόν το σύμβολο + με strings εκτελούμε στην πραγματικότητα την διαδικασία του concatenation. Αυτός είναι άλλωστε ο λόγος που στο προηγούμενο παράδειγμα αφήσαμε ένα κενό ανάμεσα στο ερωτηματικό της λέξης result και του quote έτσι ώστε όταν κολλήσει το αποτέλεσμα της μεταβλητής result δίπλα στο string να υπάρχει ένα κενό ανάμεσα στο μήνυμα και στην τιμή. Αν δεν είχαμε την δυνατότητα του concatenation θα έπρεπε να γράφαμε σε μια γραμμή το μήνυμα μας και σε μια δεύτερη γραμμή το αποτέλεσμα μας. Καταλαβαίνετε ότι με αυτό το τρόπο ο κώδικας μας θα μεγάλωνε σημαντικά αν είχαμε να δείξουμε πολλαπλά μηνύματα και αποτελέσματα στην ίδια εφαρμογή.

Δωρεάν Μαθήματα C#

Πριν δείξουμε ένα απλό παράδειγμα που χρησιμοποιεί concatenation, καλό είναι να αναφέρουμε ότι συνήθως δεν συνδυάζουμε τα μηνύματα μας μέσα στη WriteLine( ) μέθοδο αλλά αναθέτουμε το αποτέλεσμα πρώτα σε μια μεταβλητή και μετά σαν δεύτερο βήμα καλούμε να δούμε την τιμή της μεταβλητής εκτελώντας την WriteLine( ).

Program.cs

Output

Δωρεάν Μαθήματα C#

TERNARY CONDITIONAL OPERATOR

Ο Ternary Conditional Operator είναι μια σύντομη έκδοση της λογικής του if-else την οποία θα μάθουμε πολύ σύντομα σε επόμενο δωρεάν μάθημα C#. Ο μηχανισμός του ternary operator στηρίζεται στον έλεγχο που γίνεται σε μια αρχική συνθήκη. Αν το αποτέλεσμα της συνθήκης είναι true τότε θα επιστραφεί η τιμή που περιέχει ο πρώτος όρος του ternary operator που ορίζεται αμέσως μετά από το question mark ( ? ), ενώ αν η συνθήκη είναι false τότε θα επιστραφεί η τιμή που έχουμε ορίσει αμέσως μετά από το colon ( : ).

Δωρεάν Μαθήματα C#

Program.cs

Output

Δωρεάν Μαθήματα C#

OPERATOR PRECEDENCE

Έχουμε ήδη καλύψει αρκετούς από τους διαθέσιμους operator της C# αλλά τους έχουμε δει μεμονωμένα. Ας υποθέσουμε όμως τώρα ότι έχουμε την ανάγκη να χρησιμοποιήσουμε πολλαπλούς operators στην ίδια γραμμή κώδικα όπως για παράδειγμα να συνδυάσουμε πολλαπλασιασμό, διαίρεση και πρόσθεση. Πως θα ήταν δυνατόν να σιγουρευτούμε ότι οι πράξεις θα εκτελεστούν με την σωστή σειρά που επιθυμούμε;

Σε αυτό το σημείο θα ανατρέξουμε πάλι στο documentation της Microsoft (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/) οποίο μπορούμε να βρούμε έναν πίνακα που περιέχει όλους τους operators και την προτεραιότητα εκτέλεσης που έχουν μέσα στο κώδικα εάν και εφόσον υπάρχουν πολλαπλοί operators στο ίδιο statement.

Δωρεάν Μαθήματα C#

Στην ουσία ο πίνακας μας ενημερώνει ότι ο operator που έχει την υψηλότερη προτεραιότητα εκτελείται πρώτος, ενώ αν υπάρχουν operators που έχουν την ίδια προτεραιότητα τότε οι πράξεις εκτελούνται από τα αριστερά προς τα δεξιά. Αν θέλουμε να επηρεάσουμε την σειρά εκτέλεσης των πράξεων, μπορούμε να το κάνουμε περικλείοντας τις πράξεις μέσα σε παρένθεση. Η παρένθεση έχει την υψηλότερη προτεραιότητα από όλους τους operators που έχουμε αναλύσει.

Program.cs

Output

Δωρεάν Μαθήματα C#

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader