Προτεραιότητα πράξεων
Η προτεραιότητα τέλεσης των πράξεων, όπως χρησιμοποιείται στα μαθηματικά και σε πολλές από τις γλώσσες προγραμματισμού είναι:
- εκφράσεις μέσα σε παρενθέσεις
- δυνάμεις και ρίζες
- πολλαπλασιασμοί και διαιρέσεις (με τη σειρά που εμφανίζονται στην έκφραση, αριστερά προς δεξιά)
- προσθέσεις και αφαιρέσεις (με τη σειρά που εμφανίζονται στην έκφραση, αριστερά προς δεξιά)
Η πιο πάνω σειρά σημαίνει ότι σε μια μαθηματική έκφραση υπολογίζονται πρώτα οι τελεστές που προηγούνται στη σειρά προτεραιότητας, άσχετα με την θέση στην οποία εμφανίζονται μέσα στην έκφραση. Οι ισότιμοι τελεστές (συνεχόμενες προσθέσεις ή συνεχόμενοι πολλαπλασιασμοί) μπορούν να υπολογίζονται με οποιαδήποτε σειρά, λόγω της προσεταιριστικής και της αντιμεταθετικής ιδιότητας της πρόσθεσης και του πολλαπλασιασμού. Ακόμα, σε αυτό το πλαίσιο, η αφαίρεση θεωρείται ειδική περίπτωση πρόσθεσης (πρόσθεση του αντίθετου αριθμού) και η διαίρεση ειδική περίπτωση πολλαπλασιασμού (πολλαπλασιασμός με το αντίστροφο του αριθμού).
Παραδείγματα
[Επεξεργασία | επεξεργασία κώδικα]Η οριζόντια γραμμή που διαχωρίζει το κλάσμα λειτουργεί ταυτόχρονα και ως ομαδοποίηση:
Για πιο εύκολη ανάγνωση της μαθηματικής έκφρασης, μερικές φορές χρησιμοποιούνται άγκιστρα { } ή αγκύλες [ ], για να αποφευχθεί η γραφή συνεχόμενων παρενθέσεων και να γίνει πιο σαφές το τέλος μιας ομαδοποίησης:
Διαφορετικές ερμηνείες
[Επεξεργασία | επεξεργασία κώδικα]Υπάρχουν περιπτώσεις στις οποίες διαφορετικές εφαρμογές της προτεραιότητας χρησιμοποιούν διαφορετικές συμβάσεις για τη χρήση του τελεστή αρνητικού αριθμού − (συνήθως διαβάζεται «πλην»). Στα μαθηματικά, η έκφραση −32 ερμηνεύεται ως −(32) = −9 αλλά σε μερικές εφαρμογές (για παράδειγμα στο Microsoft Excel) και σε μερικές γλώσσες προγραμματισμού (για παράδειγμα στη γλώσσα bc), ο τελεστής έχει ψηλότερη προτεραιότητα από τη δύναμη. Επομένως σε εκείνες τις περιπτώσεις το −32 ερμηνεύεται ως (−3)2 = 9.[1]
Παρόμοια ασάφεια προκύπτει κατά τη χρήση της καθέτου («/»). Η σειρά χαρακτήρων "1/2x" κατά τις πιο πάνω συμβάσεις ερμηνεύεται ως (1/2)x, ενώ μια άλλη ερμηνεία θα μπορούσε να είναι 1/(2x). Και στις δύο αυτές περιπτώσεις, η χρήση των παρενθέσεων μπορεί να αποσαφηνίσει την προτεραιότητα τέλεσης των πράξεων.
Γλώσσες προγραμματισμού
[Επεξεργασία | επεξεργασία κώδικα]Οι περισσότερες γλώσσες προγραμματισμού χρησιμοποιούν την πρότυπη προτεραιότητα για τους μαθηματικούς τελεστές, και προσθέτουν σε αυτήν τις δικές τους συμβάσεις για τους επιπλέον τελεστές που προσφέρει η κάθε γλώσσα. Εξαίρεση αποτελούν οι γλώσσες APL[2] και Smalltalk, στις οποίες η προτεραιότητα είναι απλά η σειρά στην οποία γράφονται οι τελεστές (δεξιά προς αριστερά, και αριστερά προς δεξιά, αντίστοιχα).
Στην γλώσσα C, και σε μερικές ακόμα που έχουν κληρονομήσει την προτεραιότητα τελεστών της C (όπως οι C++, Perl και PHP), η προτεραιότητα αλλάζει από δεξιά προς αριστερά και από αριστερά προς δεξιά για διαφορετικούς τελεστές,[3] κάτι το οποίο ο ίδιος ο δημιουργός της C χαρακτήρισε μη ικανοποιητικό.[4]
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ «Formula Returns Unexpected Positive Value». 15 Αυγούστου 2005. Ανακτήθηκε στις 9 Οκτωβρίου 2011.
- ↑ Bergquist, Gary A. (1999). «The future of APL in the insurance world». ACM SIGAPL APL Quote Quad (New York, N.Y.) 30 (1): 16–21. doi: . ISSN 0163–6006.
- ↑ «C Operator Precedence and Associativity». 2 Οκτωβρίου 2011. Ανακτήθηκε στις 9 Οκτωβρίου 2011.
- ↑ Ritchie, Dennis M. (1996). History of Programming Languages, 2nd ed. ACM Press. Αρχειοθετήθηκε από το πρωτότυπο στις 22 Ιουνίου 2013. Ανακτήθηκε στις 9 Οκτωβρίου 2011.