Η εντολή ανδιαφορετικά Σελίδα 1 από 8 Μάθημα 8 ο Η εντολή ανδιαφορετικά Μερικές φορές σε έναν αλγόριθμο κάποια βήματα πρέπει να εκτελεστούν μόνο αν αληθεύει μια συνθήκη, αλλιώς αν η συνθήκη δεν αληθεύει πρέπει να εκτελεστούν κάποια άλλα βήματα. Στη γλώσσα Logo, η εντολή που ελέγχει αν μια συνθήκη αληθεύει ή όχι και καθορίζει ποια βήματα του αλγορίθμου (= εντολές) θα εκτελεστούν είναι η εντολή ανδιαφορετικά. Η σύνταξη της εντολής ανδιαφορετικά ανδιαφορετικα συνθήκη [εντολή ή εντολές, που θα εκτελεστούν αν η συνθήκη ισχύει] [εντολή ή εντολές, που θα εκτελεστούν αν η συνθήκη δεν ισχύει] Παράδειγμα: Έχουμε υπ όψη μας τον ορισμό της απόλυτης τιμής για έναν πραγματικό αριθμό χ. x, αν χ 0 x = - χ, αν χ 0 Δημιουργούμε μια διαδικασία απόλυτητιμή, που επιστρέφει την απόλυτη τιμή ενός αριθμού, ο οποίος δίνεται κατά την εκτέλεση της διαδικασίας. για απολυτητιμη :χ ανδιαφορετικα :χ < 0 [ανακοίνωση (φρ [ η απόλυτη τιμή του χ είναι: ] (-1) * :χ)] [ανακοίνωση (φρ [η απόλυτη τιμή του χ είναι: ] :χ)]
Η εντολή ανδιαφορετικά Σελίδα 2 από 8 Επίλυση πρωτοβάθμιας Εξίσωσης Αχ + Β = 0 Η διαδικασία πρωτοβάθμια επιλύει την πρωτοβάθμια εξίσωση αχ+β=0. Η διαδικασία καλείται με το πάτημα ενός πλήκτρου που έχει όνομα «πρωτοβάθμια». Ο χρήστης πρέπει να δώσει τις τιμές των μεταβλητών α, β. Ο αλγόριθμος επίλυσης της εξίσωσης περιγράφεται από το ακόλουθο σχήμα (διάγραμμα ροής): α=0 ΟΧΙ Λύση: χ = - β / α ΝΑΙ β=0 ΟΧΙ Εξίσωση ΑΔΥΝΑΤΗ ΝΑΙ Εξίσωση ΑΟΡΙΣΤΗ για πρωτοβάθμια ανακοίνωση [Επίλυση πρωτοβάθμιας εξίσωσης αχ+β=0] ερώτηση [Δώσε το α] Κάνε "α απάντηση ερώτηση [Δώσε το β] Κάνε "β απάντηση ανδιαφορετικά :α = 0 [ανδιαφορετικά :β = 0 [ανακοίνωση [ Η εξίσωση είναι αόριστη]] [ανακοίνωση [Η εξίσωση είναι αδύνατη]]] [ανακοίνωση (φρ [Η λύση είναι χ = ] (-1) * :β / :α)] και ένα παιχνίδι: Έχουμε δημιουργήσει ένα κουμπί (στην οδηγία δίνουμε: παιχνίδι) και την αντίστοιχη διαδικασία:
Η εντολή ανδιαφορετικά Σελίδα 3 από 8 για παιχνίδι ερώτηση [πώς λένε το καλαμπόκι στα ελληνικά] ανδιαφορετικα ανήκει? απαντηση [αραβόσιτος αραβοσιτος ΑΡΑΒΟΣΙΤΟΣ] [ανακοίνωση [μπράβο!!!!]] [ανακοίνωση [κρίμα!]] Η εντολή ανδιαφορετικα με τη λέξη ανήκει? ελέγχει αν η απάντηση (απάντηση στην προηγούμενη ερώτηση) ανήκει στο σύνολο των σωστών απαντήσεων αραβόσιτος ή αραβοσιτος ή ΑΡΑΒΟΣΙΤΟΣ. Ένα άλλο παιχνίδι Μετρά πόσο χρόνο χρειάζεται ο χρήστης παίκτης να υπολογίσει το γινόμενο δύο τυχαίων ακεραίων αριθμών (1 100). Η διαδικασία είναι: για αντανακλαστικά αρχικοποίησηχρονιστή κάνε "αριθ1 1 + τυχαίο 100 κάνε "αριθ2 1 + τυχαίο 100 ερώτηση (φρ [Πόσο κάνει ] :αριθ1 [επί] :αριθ2 [?]) ανδιαφορετικά απάντηση = :αριθ1 * :αριθ2 [ανακοίνωση (φρ [Μπράβο! Ο χρόνος σου ήταν ] χρονιστής / 10 "δευτερόλεπτα! )] [ανακοίνωση [Λάθος απάντηση!]] Η εντολή αρχικοποίησηχρονιστή μηδενίζει και ξεκινά το χρονιστή (χρονόμετρο). Ο χρονιστής μετρά δέκατα του δευτερολέπτου. Η εντολή τυχαίο αριθμός επιστρέφει ένα μη αρνητικό ακέραιο (συμπεριλαμβανομένου του 0), μικρότερο από το αριθμός. Ο μέγιστος αριθμός είναι 9999.
Η εντολή ανδιαφορετικά Σελίδα 4 από 8 Τροποποιούμε την παραπάνω διαδικασία αντανακλαστικά, έτσι ώστε να παίζουν δύο παίκτες. Η διαδικασία συγκρίνει τους χρόνους των δύο παικτών και ανακοινώνει ως νικητή αυτόν με το μικρότερο χρόνο. για αντανακλαστικά αρχικοποίησηχρονιστή κάνε "αριθ1 1 + τυχαίο 100 κάνε "αριθ2 1 + τυχαίο 100 ερώτηση (φρ [Πόσο κάνει ] :αριθ1 [επί] :αριθ2 [?]) ανδιαφορετικά απάντηση = :αριθ1 * :αριθ2 [κάνε "τ1 χρονιστής / 10 ανακοίνωση (φρ [Μπράβο! Ο χρόνος σου ήταν ] :τ1 "δευτερόλεπτα! )] [κάνε "τ1 1000 ανακοίνωση [Λάθος απάντηση!]] αρχικοποίησηχρονιστή κάνε "αριθ1 1 + τυχαίο 100 κάνε "αριθ2 1 + τυχαίο 100 ερώτηση (φρ [Πόσο κάνει ] :αριθ1 [επί] :αριθ2 [?]) ανδιαφορετικά απάντηση = :αριθ1 * :αριθ2 [κάνε "τ2 χρονιστής / 10 ανακοίνωση (φρ [Μπράβο! Ο χρόνος σου ήταν ] :τ2 "δευτερόλεπτα! )] [κάνε "τ2 1000 ανακοίνωση [Λάθος απάντηση!]] ανδιαφορετικά :τ1 < :τ2 [ανακοίνωση [νίκησε ο παίκτης 1]] [ανδιαφορετικά :τ1 > :τ2 [ανακοίνωση [νίκησε ο παίκτης 2]] [ανακοίνωση [Ισοπαλία!!!!]]] Πώς μπορούμε να δείξουμε ένα σκύλο να τρέχει; Με τη βοήθεια των γραφικών στη θέση δύο «χελωνών» βάζουμε τα δύο σκυλάκια. Τις δύο χελώνες, που εξ ορισμού ονομάζονται χ1 και χ2 μετονομάζουμε σε σκ1 και σκ2.
Η εντολή ανδιαφορετικά Σελίδα 5 από 8 Σχεδιάζουμε ένα πλήκτρο (κουμπί) με το όνομα «κίνηση» (το ίδιο όνομα με τη διαδικασία). Πατώντας το πλήκτρο ξεκινά η κίνηση 1. Η διαδικασία είναι: για κίνηση κανε "χ 1 σκ1, θεσεθεση [360 180] σκ2, θεσεθεση [360 180] σκ1, θεσεκτθ 270 σκ2, θεσεκτθ 270 συνεχώς [ ανδιαφορετικα :χ = 1 [σκ1, εμχ σκ2, απχ κάνε "χ 2] [σκ1, απχ σκ2, εμχ κάνε "χ 1] περίμενε 2 σκ1, μπ 10 σκ2, μπ 10] Οι εντολές εμχ και απχ εμφανίζουν και αποκρύπτουν αντιστοίχως τη χελώνα. Έτσι η εντολή σκ1, εμχ εμφανίζει τη χελώνα (σκυλάκι 1) σκ1, ενώ η εντολή σκ2, απχ αποκρύπτει τη δεύτερη χελώνα (σκυλάκι 2). Ουσιαστικά δηλ., αν η μεταβλητή χ έχει πάρει την τιμή 1 εμφανίζεται το πρώτο σκυλάκι και αποκρύπτεται το δεύτερο. Αν η μεταβλητή χ έχει πάρει την τιμή 2 εμφανίζεται το 1 Για να είναι η κίνηση ευδιάκριτη, επιλέγουμε από τις διεργασίες το κίτρινο (αργά)
Η εντολή ανδιαφορετικά Σελίδα 6 από 8 δεύτερο σκυλάκι και αποκρύπτεται το πρώτο. Αυτό αν επαναλαμβάνεται συνεχώς και οι χελώνες μετακινούνται ταυτόχρονα προς μια κατεύθυνση δημιουργεί την αίσθηση κίνησης. Η συνεχής επανάληψη επιτυγχάνεται με την εντολή συνεχώς. Η εντολή αυτή εκτελεί την είσοδο συνεχώς, ως ανεξάρτητη παράλληλη διεργασία. Χρησιμοποιήστε την εντολή ακύρωση, το εργαλείο Διακοπή όλων, ή τα πλήκτρα Ctrl+Break για διακοπή της διεργασίας. Παράδειγμα: χ1, συνεχώς [μπ 5 / 4 δε 2] χ2, συνεχώς [μπ 1 δε 2] Η εντολή περίμενε αριθμός θέτει σε αναμονή την εκτέλεση ενός προγράμματος ή μιας οδηγίας, για όσο χρόνο αναφέρεται στο αριθμός. Ο χρόνος μετράται σε δέκατα του δευτερολέπτου. Η κίνηση ξεκινά με το πάτημα του πλήκτρου «κίνηση» και διακόπτεται πάλι με το πάτημα του πλήκτρου. Ο σκύλος κυνηγά τη γάτα Με τη βοήθεια των γραφικών στη θέση δύο «χελωνών» βάζουμε ένα σκύλο (με όνομα «σκύλος») και μια γάτα (με όνομα «γάτα»). Σχεδιάζουμε ένα πλήκτρο με το όνομα «κυνήγι» (όπως η αντίστοιχη διαδικασία). Πατώντας το πλήκτρο ξεκινά η κίνηση.
Η εντολή ανδιαφορετικά Σελίδα 7 από 8 Η διαδικασία είναι: για κυνήγι συνεχώς [ ανδιαφορετικά αγγίζει? "γάτα "σκύλος [ανακοίνωση [την πάτησες σ' 'έπιασα] σταμάτησέμε] [γάτα, μπ 7 δε 3 περίμενε 1 σκύλος, κοίταπρος "γάτα μπ 8]] Η λέξη αγγίζει είναι λέξη της Logo και παίρνει την τιμή «αληθής» αν οι δύο χελώνες (σκύλος και γάτα) έρθουν σε επαφή, αλλιώς έχει την τιμή «ψευδής». Η εντολή ΣταμάτησέΜε Διακόπτει τη διεργασία στην οποία εκτελέστηκε αυτή η εντολή Η εντολή κοίταπρος αλλάζει συνεχώς την κατεύθυνση της χελώνας «σκύλος», ώστε να κοιτά προς τη χελώνα «γάτα». Στην προηγούμενη άσκηση αν διαγραφεί η εντολή δε 3 η γάτα θα κοιτά συνεχώς προς μια κατεύθυνση.
Η εντολή ανδιαφορετικά Σελίδα 8 από 8 Επίσης σχεδιάζουμε δύο πλήκτρα Δ και Α. Όταν πατιούνται αυτά τα πλήκτρα ενεργοποιούνται αντίστοιχες διαδικασίες οι οποίες στρέφουν τη χελώνα «γάτα» 90 0, είτε προς τα δεξιά, είτε προς τα αριστερά. Οι αντίστοιχες διαδικασίες για τα δύο πλήκτρα Δ και Α είναι: για Δ γάτα, δε 90 για Α γάτα, αρ 90 Άσκηση: Να δημιουργήσετε μια διαδικασία με το όνομα εξέταση η οποία: Εμφανίζει στην οθόνη την ερώτηση: «τι σχήμα θέλεις να φτιάξεις» Αν η απάντηση είναι τετράγωνο ή ΤΕΤΡΑΓΩΝΟ τότε σχεδιάζει ένα τετράγωνο πλευράς 100 pixels και ακολούθως εμφανίζει το μήνυμα «ΤΕΤΡΑΓΩΝΟ» αλλιώς σχεδιάζει ένα εξάγωνο πλευράς 100 pixels και ακολούθως εμφανίζει το μήνυμα «ΕΞΑΓΩΝΟ»