Πράξεις και συγκρίσεις

Τέσσερις φίλοι σε μια ταβέρνα, λογαριασμός 87 ευρώ. Κάποιος βγάζει το κινητό, διαιρεί με το 4 και λέει «21,75 ο καθένας». Ένα πρόγραμμα κάνει την ίδια πράξη με μία γραμμή, αρκεί να ξέρεις πώς γράφονται οι πράξεις και με ποια σειρά τις εκτελεί.
Πρόβλεψε
print(10 + 20 / 2)

Τι τυπώνει;

Διάλεξε μία

Οι τέσσερις πράξεις

Πρόσθεση +, αφαίρεση -, πολλαπλασιασμός *, διαίρεση /. Ο πολλαπλασιασμός γράφεται με αστερίσκο, γιατί το x είναι γράμμα και θα μπορούσε να είναι όνομα μεταβλητής. Τα σύμβολα αυτά λέγονται αριθμητικοί τελεστές και είναι ίδια σχεδόν σε κάθε γλώσσα προγραμματισμού.
Το / δίνει πάντα float. Το 10 / 2 είναι 5.0, όχι 5. Σε άλλες γλώσσες η διαίρεση δύο ακεραίων δίνει ακέραιο. Στην Python όχι. Με το +, το - και το * ανάμεσα σε δύο int, το αποτέλεσμα μένει int.
Δες τον λογαριασμό της ταβέρνας. Τρέξε τον και μετά πρόσθεσε στο σύνολο 10 ευρώ φιλοδώρημα πριν από τη διαίρεση, στην ίδια γραμμή με το print.
python
Αν έγραψες total + 10 / people, πήρες 89.5: η Python διαίρεσε μόνο το 10 με το 4 και πρόσθεσε το 2.5 στο 87. Η σωστή γραμμή έχει παρενθέσεις, (total + 10) / people, που δίνει 24.25. Οι παρενθέσεις κάνουν αυτό που έκαναν και στο σχολείο: ό,τι βρίσκεται στις παρενθέσεις υπολογίζεται πρώτο.

Πηλίκο και υπόλοιπο

Δύο ακόμα τελεστές δεν τους έχεις στο κομπιουτεράκι. Το // δίνει το ακέραιο πηλίκο μιας διαίρεσης και το % το υπόλοιπο. Το 7 χωράει στο 2 τρεις φορές και περισσεύει 1, οπότε 7 // 2 δίνει 3 και 7 % 2 δίνει 1. Σε άλλες γλώσσες το πηλίκο γράφεται αλλιώς, αλλά το % για το υπόλοιπο είναι σχεδόν παντού ίδιο.
Μια ταινία διαρκεί 135 λεπτά και θέλεις να το γράψεις σε ώρες και λεπτά. Προχώρα βήμα βήμα:
Βήμα προς βήμα
Βήμα 1 από 4
minutes = 135
hours = minutes // 60
rest = minutes % 60
print(hours, "ώρες και", rest, "λεπτά")
Μεταβλητές

minutes = 135

Τα λεπτά της ταινίας.

Το % απαντάει και σε ερωτήσεις που δε μοιάζουν με διαίρεση. Ένας αριθμός είναι ζυγός όταν το υπόλοιπο της διαίρεσής του με το 2 είναι 0: το 18 % 2 δίνει 0, το 17 % 2 δίνει 1.
Οι κυριότεροι τελεστές μαζί, με τους ίδιους δύο αριθμούς:
Οι βασικοί τελεστές με παράδειγμα Πίνακας τελεστών με τους αριθμούς 7 και 2: το + δίνει 9, το * δίνει 14, το / δίνει 3.5, το // δίνει 3, το % δίνει 1 που είναι το υπόλοιπο, το == δίνει False, το != δίνει True, το > δίνει True. ΤΕΛΕΣΤΗΣ ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΤΕΛΕΣΜΑ + 7 + 2 9 * 7 * 2 14 / 7 / 2 3.5 // 7 // 2 3 % 7 % 2 1 == 7 == 2 False != 7 != 2 True > 7 > 2 True

Συγκρίσεις

Οι τρεις τελευταίες γραμμές του πίνακα δε δίνουν αριθμό. Δίνουν True ή False, δηλαδή ένα bool. Μια σύγκριση είναι μια ερώτηση με απάντηση ναι ή όχι και οι τελεστές της λέγονται συγκριτικοί τελεστές:
ΤελεστήςΕρώτηση
==Είναι ίσα;
!=Είναι διαφορετικά;
<Είναι το αριστερό μικρότερο;
>Είναι το αριστερό μεγαλύτερο;
<=Μικρότερο ή ίσο;
>=Μεγαλύτερο ή ίσο;
Η ισότητα γράφεται με δύο ίσον. Το ένα = είναι ανάθεση: το age = 18 βάζει το 18 στη μεταβλητή. Το age == 18 ρωτάει αν η μεταβλητή έχει ήδη την τιμή 18 και δεν αλλάζει τίποτα. Αν μπερδέψεις τα δύο, θα αλλάξεις μια τιμή ενώ ήθελες να την ελέγξεις. Τρέξε το παρακάτω, και μετά άλλαξε την πρώτη γραμμή σε age = 21 και ξανατρέξε.
python
Ένας συνδυασμός από τιμές και τελεστές, όπως το 2 + 3 * 4 > 10, λέγεται έκφραση. Η Python υπολογίζει κάθε έκφραση βήμα βήμα, μέχρι να μείνει μία τιμή. Όταν μια έκφραση έχει και πράξεις και σύγκριση, η Python υπολογίζει πρώτα τους αριθμούς και στο τέλος τους συγκρίνει:
Πώς η Python υπολογίζει μια έκφραση Η έκφραση 2 + 3 * 4 > 10 υπολογίζεται σε βήματα. Πρώτα ο πολλαπλασιασμός δίνει 2 + 12 > 10. Μετά η πρόσθεση δίνει 14 > 10. Στο τέλος η σύγκριση δίνει True. 2 + 3 * 4 > 10 2 + 12 > 10 14 > 10 True πρώτα το * μετά το + στο τέλος το > ΜΙΑ ΕΚΦΡΑΣΗ ΓΙΝΕΤΑΙ ΜΙΑ ΤΙΜΗ
Ένα κατάστημα δίνει δωρεάν μεταφορικά για παραγγελίες από 40 ευρώ και πάνω. Τρέξε τον έλεγχο με διάφορα ποσά και πρόσθεσε μια γραμμή που ελέγχει αν το ποσό είναι ακριβώς 40.
python

Το ίδιο σε ψευδοκώδικα

Η ταινία των 135 λεπτών σε ψευδοκώδικα:
ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ ΤΑΙΝΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΛΕΠΤΑ, ΩΡΕΣ, ΥΠΟΛΟΙΠΟ
ΑΡΧΗ
  ΛΕΠΤΑ ← 135
  ΩΡΕΣ ← ΛΕΠΤΑ DIV 60
  ΥΠΟΛΟΙΠΟ ← ΛΕΠΤΑ MOD 60
  ΓΡΑΨΕ ΩΡΕΣ, 'ώρες και', ΥΠΟΛΟΙΠΟ, 'λεπτά'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Για το ακέραιο πηλίκο γράφεις DIV αντί για // και για το υπόλοιπο MOD αντί για %. Το DIV και το MOD δουλεύουν μόνο με ακέραιους, ενώ το // και το % της Python δέχονται και δεκαδικούς: το 7.5 // 2 δίνει 3.0. Στις συγκρίσεις η διαφορά είναι μεγαλύτερη. Η ΓΛΩΣΣΑ κάνει την εκχώρηση με ←, οπότε το απλό = σημαίνει «είναι ίσα;», εκεί που η Python γράφει ==. Για το «είναι διαφορετικά;» γράφεις <> αντί για !=.

Γιατί το 0.1 + 0.2 δεν κάνει 0.3

Τρέξε αυτές τις δύο γραμμές πριν διαβάσεις παρακάτω.
python
Η πρώτη τυπώνει 0.30000000000000004 και η δεύτερη False.
Δεν είναι λάθος της Python. Ο υπολογιστής κρατάει τους δεκαδικούς στο δυαδικό σύστημα. Εκεί το 0.1 δεν μπορεί να γραφτεί ακριβώς, όπως το 1/3 στο δεκαδικό γράφεται 0.333... και τα τριάρια δεν τελειώνουν ποτέ. Ο υπολογιστής κρατάει μια πολύ κοντινή τιμή. Στην πρόσθεση οι μικρές αποκλίσεις φαίνονται. Το ίδιο αποτέλεσμα θα πάρεις σε σχεδόν κάθε γλώσσα.
Για τα περισσότερα προγράμματα η απόκλιση δεν έχει σημασία. Στα χρήματα έχει. Γι' αυτό πολλά συστήματα πληρωμών μετράνε σε ακέραια λεπτά: 10 λεπτά και 20 λεπτά είναι int. Το 10 + 20 == 30 δίνει True χωρίς εκπλήξεις. Για τον ίδιο λόγο, μη συγκρίνεις δύο float με == περιμένοντας ακρίβεια μέχρι το τελευταίο ψηφίο.

Σύνοψη

  • Οι τελεστές +, -, *, / κάνουν τις τέσσερις πράξεις. Το / δίνει πάντα float, ακόμα και στο 10 / 2.
  • Πολλαπλασιασμός και διαίρεση γίνονται πριν από πρόσθεση και αφαίρεση. Με παρενθέσεις ορίζεις εσύ τη σειρά.
  • Το // δίνει το ακέραιο πηλίκο και το % το υπόλοιπο. Με αυτά μετατρέπεις λεπτά σε ώρες ή ελέγχεις αν ένας αριθμός είναι ζυγός.
  • Οι συγκρίσεις ==, !=, <, >, <=, >= δίνουν bool. Σε μια έκφραση με πράξεις, η σύγκριση γίνεται τελευταία.
  • Το = βάζει τιμή σε μεταβλητή, το == ρωτάει αν δύο τιμές είναι ίσες.
  • Στον ψευδοκώδικα γράφεις το πηλίκο με DIV, το υπόλοιπο με MOD, την ισότητα με = και το «διαφορετικά» με <>.
  • Οι δεκαδικοί είναι κατά προσέγγιση σε κάθε γλώσσα: 0.1 + 0.2 δίνει 0.30000000000000004. Τα χρήματα μετριούνται συχνά σε ακέραια λεπτά.

Θες να συνεχίσεις;

Το course είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου.