Η κρυπτογραφική C |
Υπάρχουν ορισμένες εκφράσεις στη C που σίγουρα στη πρώτη επαφή ξενίζουν τους γνώστες γλωσσών προγραμματισμού τύπου Basic, Cobol, Fortran, Pascal. Η καταγωγή αυτών των εκφράσεων βρίσκεται κυρίως στη στενή σχέση της C με το Unix και τη γλώσσα assembly του συστήματος όπου αναπτύχθηκαν και τα δύο, του PDP-11. Πρόκειται όμως γιά εκφράσεις που με το πέρασμα του χρόνου καθιερώθηκαν στη C αφού απέδειξαν οτι παράγουν πιό συμπαγή αλλά και πιό αποτελεσματικό κώδικα. Σίγουρα, βέβαια δεν παράγουν πιό ευανάγνωστο κώδικα, ίσως όμως είναι και αυτός σημαντικός παράγοντας στην καθιέρωσή τους. Σημασία έχει οτι είτε μας αρέσουν είτε όχι, είτε υπάρχουν εναλλακτικοί και ευανάγνωστοι τρόποι να πεί κανείς το ίδιο πράγμα είτε όχι, οι εκφράσεις αυτές υπάρχουν και πρέπει κανείς να τις μάθει καλά. Ο λόγος είναι οτι ανεξάρτητα από το αν εσείς θα χρησιμοποιήσετε ή όχι αυτές τις εκφράσεις, πολύ συχνά θα βρεθείτε στη θέση να θέλετε να χρησιμοποιήσετε δημόσια προγράμματα ή βιβλιοθήκες, άρα να διαβάσετε τον κώδικα κάποιου άλλου. Και τότε η συνάντηση με αυτές τις εκφράσεις είναι αναπόφευκτη. |
Αύξηση και μείωση |
Η πρώτη κρυπτογραφική έκφραση αναφέρεται στην αύξηση κατά 1 της τιμής μιάς ακέραιας μεταβλητής, συνήθως ενός μετρητή επανάληψης. Η πρώτη ομάδα προτάσεων αναφέρεται ακριβώς σε αυτή την έκφραση, τη λεγόμενη και αυτο- αύξηση. Η πρώτη πρόταση στην ομάδα αυτή είναι η κλασσική πρόταση αύξησης κατά ένα. Οι δύο επόμενες εκφράσεις, x++ και ++x, έχουν το ίδιο αποτέλεσμα με την πρώτη και χαρακτηρίζονται ως μετα-αυτο-αύξηση και προ-αυτο-αύξηση. Η διαφορά τους γίνεται εμφανής στις δύο τελευταίες εκφράσεις της ομάδας: στη μετα-αυτο-αύξηση η άυξηση συμβαίνει μετά την εκτέλεση των άλλων πράξεων (π.χ. εδώ της εκχώρησης) εκτός και αν παρενθέσεις αλλάζουν τη σειρά εκτέλεσης. Αντίθετα στη προ-αυτο-αύξηση η αύξηση εκτελείται πρίνα από την εκχώρηση. Ακριβώς ο ίδιος σχολιασμός ισχύει και γιά τη δεύτερη ομάδα προτάσεων που αναφέρεται στην αυτο-μείωση με τις δύο εκδοχές της την προ-αυτο-μείωση και την μετα-αυτο-μείωση. |
Σύνθετες εκχωρήσεις |
Η επόμενη ομάδα προτάσεων παρουσιάζει τις σύνθετες εκχωρήσεις. Οι σύνθετες εκχωρήσεις μπορούν να θεωρηθούν σαν μιά γενίκευση της λογικής της αυτο- αύξηση και αυτο-μείωσης και αναφέρονται σε προτάσεις που χρησιμοποιούνται γιά τη τροποποίηση της τιμής μιάς μεταβλητής κατά μιά σταθερή ή μεταβλητή ποσότητα ή και μιά ολόκληρη έκφραση. Η γενική μορφή μιάς τέτοιας πρότασης είναι μεταβλητή1 = μεταβλητή1 τελεστής έκφραση η οποία μπορεί να ξαναγραφεί ως μεταβλητή1 τελεστής= έκφραση Παρακάτω δίνεται ένας κατάλογος των τελεστών συνθέτων εκχωρήσεων += -= *= /= %= >>= <<= &= ^= |= μερικοί τελεστές εξηγούνται αμέσως και οι υπόλοιποι θα εξηγηθούν οταν συζητηθούν οι εκφράσεις σε επίπεδο bit. Διαπιστώνουμε επομένως οτι η αύξηση κατά 1 μιάς ακέραιας μεταβλητής μπορεί να γραφεί ισοδύναμα ως a = a + 1; a++; a += 1; Σημειώνεται οτι οι προτάσεις που παρουσιάζονται στα παραδείγματα είναι απλές. Στη πράξη το δεξιό τμήμα της σύνθετης εκχώρησης θα μπορούσε να είναι μιά αρκετά περίπλοκη έκφραση. |
Έκφραση υπό συνθήκη |
Η τελευταία ομάδα προτάσεων εξετάζει την έκφραση υπο συνθήκη. Αποτελείται από τρείς εκφράσεις που χωρίζονται με αγγλικό ερωτηματικό και άνω-κάτω τελεία. Αυτό το σύνολο περικλείεται από παρενθέσεις. (συνθήκη ? έκφραση1 : έκφραση2); Η συνθήκη είναι μιά έκφραση που υλοποιεί μιά λογική συνθήκη. Εάν η συνθήκη είναι αληθής, δηλαδή η έκφραση έχει ακέραιο μη-μηδενικό εξαγόμενο, τότε εκτελείται η έκφραση1 αλλοιώς εκτελείται η έκφραση2. Ουσιαστικά δηλαδή πρόκειται γιά μιά συμπυκνωμένη πρόταση if-else, όπως φαίνεται και από τις δύο πρώτες προτάσεις της τελευταίας ομάδας. Η πυκνότητα και αποτελεσματικότητα της έκφρασης υπό συνθήκη φαίνεται στις δύο τελευταίες προτάσεις όπου εκχωρείται ο μέγιστος ή ο ελάχιστος δύο μεταβλητών σε μία τρίτη. |
![]() |
![]() |
![]() |