====== Άσκηση 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 **εμφανίστε** το αποτέλεσμα