Μάθημα : ΠΛΗΡΟΦΟΡΙΚΗ - Γ4
Κωδικός : 1727010241
-
Θεματικές Ενότητες
-
Ενότητα 1 - Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
-
Μάθημα 1 - Τι είναι πρόβλημα - Επίλυση προβλήματος - Αλγόριθμος
-
Μάθημα 2 - Πρόγραμμα - Γλώσσες Προγραμματισμού - Μεταφραστές
-
Ενότητα 2 - Ο Προγραμματισμός στην Πράξη
-
Μάθημα 3 - Το περιβάλλον προγραμματισμού MicroWorlds Pro - Βασικές εντολές κίνησης χελώνας
-
Μάθημα 4 - Δομή Επανάληψης
-
Μάθημα 5 - Διαδικασίες - Υπερδιαδικασίες
-
Μάθημα 6 - Εντολή εμφάνισης (εξόδου) και αριθμητικές πράξεις
-
Μάθημα 7 - Εντολές Εισόδου - Εξόδου
-
Μάθημα 8 - Μεταβλητές - Εντολή εκχώρησης τιμής
-
Μάθημα 9 - Επίλυση Απλών Αριθμητικών Προβλημάτων
-
Μάθημα 10 - Παραμετρικές Διαδικασίες
-
Μάθημα 11 - Δομή Επιλογής
-
Ενότητα 1 - Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
Μάθημα 11 - Δομή Επιλογής
Η Δομή Επιλογής
Με τον όρο δομή επιλογής χαρακτηρίζουμε μια σειρά από εντολές που αρχίζουν με τον έλεγχο μιας συνθήκης, αν ισχύει δηλαδή κάτι, και ακολουθούνται από 1 ή 2 ομάδες εντολών. Στη γλώσσα Logo η δομή επιλογής υλοποιείτε με τις εντολές αν και ανΔιαφορετικά.
Εντολή αν
Η εντολή αν η οποία λέγετε εντολή απλής επιλογής ακολουθείτε από μια συνθήκη π.χ. α > 10, και μια ομάδα εντολών μέσα σε αγκύλες:
αν συνθήκη [ομάδα εντολών]
Αν η συνθήκη ισχύει εκτελούνται οι εντολές που βρίσκονται μέσα στις αγκύλες. Αν δεν ισχύει η συνθήκη δεν εκτελούνται οι εντολές αυτές αλλά το πρόγραμμα τις προσπερνάει και πηγαίνει στην αμέσως επόμενη εντολή.
Παράδειγμα
Έστω ότι θέλουμε να δούμε αν ο αριθμός 12 είναι θετικός και να το εμφανίσουμε στο κέντρο εντολών. Για να ελέγξουμε αν ένας αριθμός είναι θετικός αρκεί να δούμε αν είναι μεγαλύτερος από το 0, άρα μπορούμε να χρησιμοποιήσουμε την εντολή αν με τη συνθήκη 12 > 0 και μια εντολή δείξε μέσα στις αγκύλες όπως φαίνεται παρακάτω:
εντολή | εμφάνιση στην οθόνη |
αν 12 > 0 [δείξε "Θετικός]
|
Θετικός
|
Αν εκτελέσουμε την παραπάνω εντολή θα εμφανιστεί στο κέντρο εντολών η λέξη Θετικός επειδή το 12 είναι μεγαλύτερο του 0. Αν στην παραπάνω εντολή ελέγχαμε τη συνθήκη -7 > 0 τότε δεν θα εμφανιζόταν τίποτα στο κέντρο εντολών επειδή το -7 είναι μικρότερο του 0.
Συνήθως στη συνθήκη σε μια εντολή αν ελέγχουμε την τιμή κάποιας μεταβλητής και ανάλογα εκτελούμε τις εντολές μέσα στις αγκύλες ή όχι. Έστω ότι ζητάμε από το χρήστη να δώσει έναν αριθμό και εμείς να εμφανίσουμε στην οθόνη αν είναι θετικός. Μπορούμε να χρησιμοποιήσουμε μια εντολή ερώτηση για να πάρουμε την είσοδο από το χρήστη, μια εντολή αν με συνθήκη απάντηση > 0 για να ελέγξουμε αν ο αριθμός που μας έδωσε και βρίσκεται στη μεταβλητή απάντηση είναι μεγαλύτερος από το 0 και μια εντολή ανακοίνωση μέσα στις αγκύλες τις εντολής αν για να εμφανίσουμε οτι ο αριθμός είναι θετικός αν αληθεύει η συνθήκη.
εντολές | εμφάνιση στην οθόνη |
|
|
Όπως βλέπετε παραπάνω, ο χρήστης έδωσε τον αριθμό 12, αυτός ο αριθμός αποθηκεύεται στη μεταβλητή απάντηση την οποία ελέγχουμε με τη συνθήκη απάντηση > 0 και αφού η συνθήκη ισχύει εκτελείτε η εντολή ανακοίνωση μέσα στις αγκύλες. Αν ο αριθμός που μας έδινε ο χρήστης ήταν μικρότερος του 0 τότε δεν θα εκτελούνταν η εντολή ανακοίνωση.
Εντολή ανΔιαφορετικά
Η εντολή ανΔιαφορετικά η οποία λέγετε εντολή σύνθετης επιλογής ακολουθείτε από μια συνθήκη π.χ. α > 10, και δυο ομάδες εντολών μέσα σε αγκύλες:
ανΔιαφορετικά συνθήκη [ομάδα εντολών 1] [ομάδα εντολών 2]
Αν η συνθήκη ισχύει εκτελούνται οι εντολές της πρώτης ομάδας. Αν δεν ισχύει η συνθήκη εκτελούνται οι εντολές της δεύτερης ομάδας. Η συνθήκη που ελέγχεται για να επιλεχτεί ποιες εντολές θα εκτελεστούν και ποιες όχι μπορεί να είναι απλή π.χ. β < 0, ή σύνθετη χρησιμοποιώντας τους λογικούς τελεστές ΟΧΙ, ΚΑΙ, Η, π.χ. ΚΑΙ (α > 0) (α < 20).
Χρήση Λογικών Τελεστών |
Αποτέλεσμα |
ΟΧΙ (συνθήκη) |
αντιστρέφει το αποτέλεσμα της αρχικής συνθήκης |
ΚΑΙ (συνθήκη1) (συνθήκη2) |
ισχύει μόνο αν ισχύουν και οι δυο επιμέρους συνθήκες |
Η (συνθήκη1) (συνθήκη2) |
ισχύει αν τουλάχιστον μια από τις δυο συνθήκες ισχύει |
Παράδειγμα
Σε συνέχεια του προηγούμενου παραδείγματος ας δούμε τώρα αν οι αριθμοί 12 και -7 είναι θετικοί ή αρνητικοί και να εμφανίσουμε ανάλογο μήνυμα στο κέντρο εντολών κάθε φορά. Θα χρησιμοποιήσουμε αυτή τη φορά την εντολή ανΔιαφορετικά με τη τις συνθήκες 12 > 0 και -7 > 0 και δυο εντολές δείξε μέσα στις αγκύλες κάθε φορά όπως φαίνεται παρακάτω:
εντολή | εμφάνιση στην οθόνη |
ανΔιαφορετικά 12 > 0 [δείξε "Θετικός] [δείξε "Αρνητικός]
|
Θετικός
|
ανΔιαφορετικά -7 > 0 [δείξε "Θετικός] [δείξε "Αρνητικός]
|
Αρνητικός
|
Στην πρώτη εντολή επειδή η συνθήκη 12 > 0 ισχύει εκτελείτε η εντολή στην πρώτη αγκύλη και εμφανίζεται η λέξη Θετικός, ενώ στη δεύτερη εντολή επειδή η συνθήκη -7 > 0 δεν ισχύει εκτελείτε η εντολή στη δεύτερη αγκύλη και εμφανίζεται η λέξη Αρνητικός.
Μπορούμε να φτιάξουμε τώρα μια νέα "εντολή" στη Logo, μια διαδικασία δηλαδή, η οποία θα ελέγχει αν ένας αριθμός είναι θετικός ή αρνητικός και θα εμφανίζει τον αντίστοιχο χαρακτηρισμό στην οθόνη. Ο κώδικας για αυτή τηνδιαδικασία με όνομα "ΘετικόςΑρνητικός" θα ήταν:
για ΘετικόςΑρνητικός
|
Στη διαδικασία αυτή χρησιμοποιούμε το λογικό τελεστή Η για να ελέγξουμε τη σύνθετη συνθήκη Η (απάντηση > 0) (απάντηση = 0) ώστε να πάρουμε ως θετική και την περίπτωση ο αριθμός που θα δώσει ο χρήστης να είναι 0. Θυμίζω ότι όταν χρησιμοποιείτε ο λογικός τελεστής Η, η σύνθετη συνθήκη ισχύει αν μια τουλάχιστον από τις επιμέρους συνθήκες ισχύει.
Μετατρέποντας την παραπάνω διαδικασία σε παραμετρική μπορούμε αντί να περιμένουμε το χρήστη να δώσει έναν αριθμό για να τον ελέγξουμε, να τον δίνουμε μετά το όνομα της διαδικασίας κατά την κλήση της ως παράμετρο. Θα έχουμε τότε:
για ΘετικόςΑρνητικός :αριθμός
|
Τη θέση της μεταβλητής απάντηση την πήρε το όνομα της μεταβλητής που χρησιμοποιούμε ως παράμετρο, η μεταβλητή αριθμός. Προσέξτε ότι χρησιμοποιούμε άνω-κάτω τελεία πριν από το όνομα της μεταβλητής αριθμός γιατί θέλουμε να διαβάσουμε την τιμή της. Αν θέλουμε να χρησιμοποιήσουμε την παραμετρική διαδικασία ΘετικόςΑρνητικός μπορούμε να την καλέσουμε μέσα στο πρόγραμμα ή στο κέντρο ελέγχου δίνοντας δίπλα τον αριθμό που θέλουμε να ελέγξουμε, για παράδειγμα:
ΘετικόςΑρνητικός 12 |
Με τις εντολές αν και ανΔιαφορετικά δίνεται η δυνατότητα κατά την εκτέλεση του προγράμματος να αποφασιστεί να εκτελεστεί μια ομάδα εντολών και να μην εκτελεστεί κάποια άλλη. Αυτό μας επιτρέπει να γράφουμε προγράμματα ποιο γενικού σκοπού που θα ικανοποιούν διαφορετικά ζητούμενα κάθε φορά τα οποία επιτρέπουν στο χρήστη ανάλογα τα δεδομένα που θα δώσει να κάνει διαφορετικά πράγματα.
Περισσότερες πληροφορίες για τις εντολές αν και ανΔιαφορετικά καθώς και για τους λογικούς τελεστές και τη σύνταξη των συνθηκών ελέγχου μπορείτε να βρείτε στο βίντεο "Εντολές: αν, ανΔιαφορετικα".