ΓΛΩΣΣΑ: βασικές έννοιες
Κεφ. 7 · Αλφάβητο, τύποι, σταθερές, μεταβλητές, τελεστές, συναρτήσεις, εκχώρηση, δομή προγράμματος
Στις Πανελλαδικές όλες οι λύσεις γράφονται σε ΓΛΩΣΣΑ. Μια λάθος δήλωση μεταβλητής, ένα ξεχασμένο ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ή ένα 3 / 2 όπου ήθελες 3 DIV 2 μπορούν να σου κοστίσουν μονάδες σε ένα κατά τα άλλα σωστό πρόγραμμα.
Εδώ είναι η «γραμματική» της ΓΛΩΣΣΑΣ: από τι αποτελείται ένα πρόγραμμα και πώς γράφεται σωστά κάθε κομμάτι του.
Αλφάβητο, τύποι δεδομένων, σταθερές
Το αλφάβητο της ΓΛΩΣΣΑΣ περιλαμβάνει τα κεφαλαία και πεζά γράμματα του ελληνικού και του λατινικού αλφαβήτου, τα ψηφία 0–9 και ειδικούς χαρακτήρες (+ − * / = ^ ( ) . , ! & κ.ά.).
Η ΓΛΩΣΣΑ έχει τέσσερις τύπους δεδομένων:
- ΑΚΕΡΑΙΟΣ: θετικοί και αρνητικοί ακέραιοι και το 0 (π.χ. 12, -4).
- ΠΡΑΓΜΑΤΙΚΟΣ: αριθμοί με κλασματικό μέρος, με τελεία ως υποδιαστολή (π.χ. 3.14).
- ΧΑΡΑΚΤΗΡΑΣ: ένας χαρακτήρας ή σειρά χαρακτήρων, μέσα σε εισαγωγικά (π.χ. 'Αθήνα').
- ΛΟΓΙΚΟΣ: μόνο οι τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ.
Σταθερές είναι τιμές που δεν αλλάζουν κατά την εκτέλεση. Μπορούμε να τους δώσουμε όνομα στο τμήμα ΣΤΑΘΕΡΕΣ, π.χ. ΦΠΑ = 0.24.
Μεταβλητές και εκχώρηση
Η μεταβλητή είναι ένα όνομα που αντιστοιχεί σε μια θέση μνήμης, όπου αποθηκεύεται μια τιμή που μπορεί να αλλάζει. Κάθε μεταβλητή έχει τύπο, που δηλώνεται στο τμήμα ΜΕΤΑΒΛΗΤΕΣ, και δέχεται μόνο τιμές αυτού του τύπου.
Κανόνες ονομάτων: ξεκινούν με γράμμα, περιέχουν γράμματα, ψηφία και τον χαρακτήρα _ (π.χ. Μεσος_Ορος, x1) και δεν μπορεί να είναι δεσμευμένες λέξεις (ΑΝ, ΓΙΑ, ΑΡΧΗ…). Επειδή το αλφάβητο δεν περιλαμβάνει τονούμενα γράμματα, γράφουμε τα ονόματα χωρίς τόνους.
Η εντολή εκχώρησης γράφεται:
όνομα_μεταβλητής ← έκφραση
Υπολογίζεται η έκφραση δεξιά και η τιμή της αποθηκεύεται στη μεταβλητή αριστερά (η προηγούμενη τιμή χάνεται). Η τιμή της έκφρασης πρέπει να είναι συμβατού τύπου με τη μεταβλητή.
Τελεστές και συναρτήσεις
Αριθμητικοί τελεστές: + (πρόσθεση), − (αφαίρεση), * (πολλαπλασιασμός), / (διαίρεση — δίνει πραγματικό), ^ (ύψωση σε δύναμη), DIV (ακέραιο πηλίκο), MOD (υπόλοιπο ακέραιας διαίρεσης). Π.χ. 17 DIV 5 = 3 και 17 MOD 5 = 2.
Ιεραρχία πράξεων: 1. ^ · 2. *, /, DIV, MOD · 3. +, −. Πράξεις ίδιας προτεραιότητας εκτελούνται από αριστερά προς τα δεξιά· οι παρενθέσεις αλλάζουν τη σειρά.
Ενσωματωμένες συναρτήσεις:
- ΗΜ(x), ΣΥΝ(x), ΕΦ(x): ημίτονο, συνημίτονο, εφαπτομένη (x σε μοίρες)
- Τ_Ρ(x): τετραγωνική ρίζα
- ΛΟΓ(x): φυσικός λογάριθμος · Ε(x):
- Α_Μ(x): ακέραιο μέρος · Α_Τ(x): απόλυτη τιμή
Ποια είναι η τιμή της έκφρασης 20 - 10 DIV 3 * 2;
Παράδειγμα 1: Διάσπαση τριψήφιου σε ψηφία. Για x = 847:
εκ ← x DIV 100 δεκ ← (x MOD 100) DIV 10 μον ← x MOD 10
- εκ = 847 DIV 100 = 8
- x MOD 100 = 47, δεκ = 47 DIV 10 = 4
- μον = 847 MOD 10 = 7
Με την ίδια λογική μετατρέπεις δευτερόλεπτα: για 7384 δευτερόλεπτα, ώρες = 7384 DIV 3600 = 2, υπόλοιπο 7384 MOD 3600 = 184, λεπτά = 184 DIV 60 = 3, δευτερόλεπτα = 184 MOD 60 = 4. Δηλαδή 2 ώρες, 3 λεπτά, 4 δευτερόλεπτα.
Είσοδος, έξοδος και δομή προγράμματος
- ΔΙΑΒΑΣΕ λίστα_μεταβλητών: διαβάζει τιμές από το πληκτρολόγιο και τις εκχωρεί στις μεταβλητές.
- ΓΡΑΨΕ λίστα_στοιχείων: εμφανίζει σταθερές, τιμές μεταβλητών ή εκφράσεων, χωρισμένες με κόμμα.
Κάθε πρόγραμμα έχει την εξής δομή:
ΠΡΟΓΡΑΜΜΑ όνομα ΣΤΑΘΕΡΕΣ δηλώσεις σταθερών ΜΕΤΑΒΛΗΤΕΣ δηλώσεις μεταβλητών ΑΡΧΗ εντολές ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τα τμήματα ΣΤΑΘΕΡΕΣ και ΜΕΤΑΒΛΗΤΕΣ παραλείπονται αν δεν υπάρχουν σταθερές ή μεταβλητές. Οι μεταβλητές δηλώνονται ανά τύπο: ΑΚΕΡΑΙΕΣ:, ΠΡΑΓΜΑΤΙΚΕΣ:, ΧΑΡΑΚΤΗΡΕΣ:, ΛΟΓΙΚΕΣ:. Σχόλια ξεκινούν με το θαυμαστικό (!), ενώ το & στο τέλος μιας γραμμής σημαίνει ότι η εντολή συνεχίζεται στην επόμενη.
Παράδειγμα 2: Πλήρες πρόγραμμα: υπολογισμός τελικής τιμής προϊόντος με ΦΠΑ 24%.
ΠΡΟΓΡΑΜΜΑ Τιμη_Με_ΦΠΑ ΣΤΑΘΕΡΕΣ ΦΠΑ = 0.24 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: καθαρη, τελικη ΧΑΡΑΚΤΗΡΕΣ: προιον ΑΡΧΗ ΓΡΑΨΕ 'Δώσε προϊόν και καθαρή τιμή' ΔΙΑΒΑΣΕ προιον, καθαρη τελικη ← καθαρη * (1 + ΦΠΑ) ΓΡΑΨΕ 'Τελική τιμή για ', προιον, ': ', τελικη ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Για καθαρή τιμή 50 εμφανίζεται 62, αφού . Η ΦΠΑ είναι σταθερά: αν αλλάξει ο συντελεστής, αλλάζεις μόνο μία γραμμή.
Ποια δήλωση είναι σωστή σε ΓΛΩΣΣΑ;
Μέθοδος: μαθηματικός τύπος σε ΓΛΩΣΣΑ
- Γράψε κάθε πολλαπλασιασμό ρητά με * (το γίνεται 2 * α).
- Κλάσματα: βάλε παρενθέσεις σε αριθμητή και παρονομαστή: → (α + β) / (2 * γ).
- Ρίζες και απόλυτα με Τ_Ρ() και Α_Τ()· δυνάμεις με ^.
- Έλεγξε τον τύπο του αποτελέσματος: η / δίνει πάντα πραγματικό, άρα δεν εκχωρείται σε ακέραια μεταβλητή· για ακέραιο πηλίκο χρησιμοποίησε DIV.
- Έλεγξε με έναν αριθμό: υπολόγισε τον τύπο με το χέρι και την έκφραση με την ιεραρχία της ΓΛΩΣΣΑΣ.
Θέμα τύπου Πανελλαδικών: Να γραφούν σε ΓΛΩΣΣΑ οι εκφράσεις (α) και (β) , και να βρεθεί η τιμή της έκφρασης 2 + 3 * 4 ^ 2 / 8.
Λύση:
- (α) x ← (-β + Τ_Ρ(Δ)) / (2 * α)
- (β) y ← Α_Τ(α - β) ^ 3 + α / (β * γ)
Για την έκφραση: πρώτα η δύναμη , μετά από αριστερά 3 * 16 = 48 και 48 / 8 = 6, τέλος 2 + 6 = 8.
Συχνό λάθος στο (α): -β + Τ_Ρ(Δ) / 2 * α, που υπολογίζει . Στο (β), χωρίς παρένθεση το α / β * γ θα σήμαινε .
Ποια εντολή στρογγυλεύει έναν θετικό πραγματικό x στα δύο δεκαδικά ψηφία;
Στους υπολογιστές οι πραγματικοί αριθμοί αποθηκεύονται στο δυαδικό σύστημα, όπου το 0.1 δεν αναπαρίσταται ακριβώς (όπως το στο δεκαδικό). Γι' αυτό σε πολλές γλώσσες, όπως η Python, το 0.1 + 0.2 δίνει 0.30000000000000004 — και οι έμπειροι προγραμματιστές αποφεύγουν να ελέγχουν ισότητα πραγματικών με =.
Χωρίς ΑΝ, γράψε μία εντολή εκχώρησης που δίνει στη μεταβλητή π την τιμή 1 αν ο ακέραιος θετικός x είναι περιττός και 0 αν είναι άρτιος. Μετά, μία εντολή που δίνει το άθροισμα των ψηφίων ενός τριψήφιου x.
Δοκίμασε πρώτα μόνος σου — μετά δες τη λύση
Το υπόλοιπο της διαίρεσης με 2 είναι ακριβώς αυτό που ζητείται:
π ← x MOD 2
Για το άθροισμα ψηφίων:
σ ← x DIV 100 + (x MOD 100) DIV 10 + x MOD 10
Για x = 847: . Τα DIV και MOD εκτελούνται πριν από τις προσθέσεις και, μεταξύ τους, από αριστερά προς τα δεξιά. Έτσι η παρένθεση στο (x MOD 100) δεν είναι υποχρεωτική, αλλά κάνει την πρόθεση σαφή.
- Υποδιαστολή με κόμμα (3,14): στη ΓΛΩΣΣΑ είναι τελεία (3.14)· το κόμμα χωρίζει στοιχεία.
- Εκχώρηση α / β σε ακέραια μεταβλητή: η / δίνει πραγματικό· χρησιμοποίησε DIV.
- Ξεχνάς τα εισαγωγικά στις αλφαριθμητικές σταθερές: ΓΡΑΨΕ Αποτέλεσμα αντί για ΓΡΑΨΕ 'Αποτέλεσμα'.
- Χρήση του = για εκχώρηση: το = είναι σύγκριση (και ορισμός σταθεράς), η εκχώρηση γίνεται με ←.
- Τύποι: ΑΚΕΡΑΙΟΣ, ΠΡΑΓΜΑΤΙΚΟΣ (με τελεία), ΧΑΡΑΚΤΗΡΑΣ (σε εισαγωγικά), ΛΟΓΙΚΟΣ (ΑΛΗΘΗΣ/ΨΕΥΔΗΣ).
- Δομή: ΠΡΟΓΡΑΜΜΑ – ΣΤΑΘΕΡΕΣ – ΜΕΤΑΒΛΗΤΕΣ – ΑΡΧΗ – εντολές – ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
- Εκχώρηση με ←: πρώτα η έκφραση, μετά η αποθήκευση, με συμβατό τύπο.
- Ιεραρχία: ^ → *, /, DIV, MOD → +, − · από αριστερά προς τα δεξιά.
- DIV/MOD για ψηφία και μετατροπές μονάδων· Α_Μ, Α_Τ, Τ_Ρ, ΗΜ, ΣΥΝ, ΕΦ, ΛΟΓ, Ε οι ενσωματωμένες συναρτήσεις.