====== Άσκηση 6 - Επιλογές - case ======
* Μεταξύ άλλων μέχρι στιγμής έχουμε δει μεταβλητές τύπου **string** και **integer** και πως ελέγχουμε **αν ισχύει** ή **όχι** κάτι με την **if .. then .. else** (2 περιπτώσεις).
* Στην νέα άσκηση θα δούμε επιπλέον τα εξής :
* Νέο τύπο μεταβλητής **char**
* Πως επιλέγουμε τι θα κάνουμε μεταξύ πολλών περιπτώσεων με την **case**
* Κάθε πρόγραμμα κάνει αρκετά πράγματα. Θα φτιάξουμε λοιπόν το πρώτο μας μενού επιλογών.
- **ΔΗΜΙΟΥΡΓΙΑ ΕΡΓΟΥ** : Θα δημιουργήσουμε το νέο έργο **epiloges**
* Κάνουμε όμοιες ενέργειες όπως στην Άσκηση1, όπου hello τώρα ο τίτλος είναι **epiloges**
- **ΕΝΤΟΛΕΣ**
* Το μενού μας θα είναι ως εξής :
1. Διαίρεση Ακεραίων
2. Διαίρεση Πραγματικών
3. Μονά/Ζυγά
0. Έξοδος
- Φτιάξτε το με εντολές εμφάνισης στην Οθόνη που γνωρίζετε.
- Αφήστε μία κενή γραμμή με μια **writeln(' ');** και ζητήστε από τον χρήστη να εισάγει επιλογή εμφανίζοντάς του στην Οθόνη το κατάλληλο μήνυμα.
- Διαβάστε ότι έγραψε ο χρήστης και αποθηκεύστε το σε μια μεταβλητή π.χ. **epilogi** (Τι τύπου είναι; Δηλώστε την..)
- Τώρα θα εισάγουμε τον κώδικα που θα χρησιμοποιήσει την τιμή της μεταβλητής **epilogi** και θα κάνει 4 διαφορετικά πράγματα.
case epilogi of
1: writeln('**ΔΙΑΙΡΕΣΗ ΑΚΕΡΑΙΩΝ**');
2: writeln('**ΔΙΑΙΡΕΣΗ ΠΡΑΓΜΑΤΙΚΩΝ**');
3: writeln('**ΜΟΝΑ/ΖΥΓΑ**');
0: writeln('Γεια..');
end {case}
* Η εντολή case λειτουργεί ως εξής. Όταν η τιμή της μεταβλητής είναι **1** θα εκτελέσει την εντολή δίπλα, δηλαδή **writeln('*Διαίρεση Ακεραίων*');**. Όταν είναι **2** αντίστοιχα κτλ
* Μετά το **end** έχουμε βάλει σε σχόλια **{case}** για να θυμόμαστε ότι είναι το **τέλος της case**.
* Η απλή σύνταξη της **case** είναι λοιπόν η εξής:
case {μεταβλητή} of
{τιμή μεταβλητής}: {εντολή ή εντολές μέσα σε begin .. end}
{άλλη τιμή μεταβλητής}: {εντολή ή εντολές μέσα σε begin .. end}
end
- **ΠΡΟΣΘΗΚΗ 1**
- Χειριζόμαστε τις τιμές **1,2,3,0**. Τι θα γίνει όμως αν ο χρήστης επιλέξει π.χ. **5**; Εκτελέστε το πρόγραμμα και δώστε σαν χρήστης επιλογή **5**.
- Το πρόγραμμα δεν πήγε σε καμία από τις περιπτώσεις **1,2,3,0** και δεν εμφάνισε κανένα μήνυμα. Λογικό. Θα ήταν πιο ωραίο να εμφανιζόταν ένα μήνυμα π.χ. **Λάθος επιλογή**. Πάνω από την **end** λοιπόν βάλτε **else writeln('Λάθος επιλογή');** και ξαναμεταγλωττίστε και εκτελέστε. Καλύτερο;
- **ΠΡΟΣΘΗΚΗ 2**
* Πολλές φορές θέλουμε η έξοδος να γίνεται από κάποιο γράμμα π.χ. **q** από το //**q**uit// (παραιτούμαι) ή **x** από το //e**x**it// και όχι το **0**.
* Όμως ορίσαμε την μεταβλητή **epilogi** ως **integer** να λαμβάνει δηλαδή ακεραίους. H **case** δέχεται και μοναδικούς χαρακτήρες που δηλώνονται ως **char**
- Αλλάξτε την δήλωση της μεταβλητής **epilogi** ώστε να είναι **char** (ένας μόνο χαρακτήρας).
- Αλλάξτε επίσης μέσα στην **case** τα **1, 2, 3** σε **'1', '2', '3'** γιατί τώρα τα χρησιμοποιούμε ως χαρακτήρες. Αλλάξτε επίσης το **0** σε **'x'**
{{ :el:school:lessons:programmatismos:pascal:epiloges6_flowchart.png?74x49 }}
----
* **ΕΠΕΚΤΑΣΗ 1 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ**
* Ζητήστε από τον χρήστη να σας δώσει **2 ακεραίους αριθμούς**.
* Δώστε του μια λίστα με επιλογές και **διαβάστε** την επιλογή που θα κάνει
1. Πρόσθεση
2. Αφαιρεση
3. Πολλαπλασιασμός
q. Έξοδος
* Με χρήση **case** και μία εντολή μόνο σε κάθε περίπτωση, κάντε την αντίστοιχη πράξη και αποθηκεύστε σε μια νέα μεταβλητή το **αποτέλεσμα**.
* Έξω από την case **εμφανίστε** το αποτέλεσμα