5 ο Εργαστήριο Λογικοί Τελεστές, Δομές Ελέγχου Λογικοί Τελεστές > μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό Οι λογικοί τελεστές χρησιμοποιούνται για να ελέγξουμε την τιμή μιας μεταβλητής και ανάλογα με την τιμή της το πρόγραμμα να εκτελεί διαφορετικά μονοπάτια. x > 20 αυτή τη στιγμή είναι η τιμή της x μικρότερη από 20; true ή false y == 5 αυτή τη στιγμή είναι η τιμή της y ίση με 5; true ή false z <= 33 αυτή τη στιγμή είναι η τιμή της z μικρότερη ή ίση με 33; true ή false Δομές Ελέγχου If, else, else if Η σύνταξη της if. if (λογική έκφραση) { // κώδικας που θα εκτελεστεί αν η λογική έκφραση είναι αληθής (true) Η δομή της if μπορεί να επεκταθεί με την λέξη else για να συμπεριλάβουμε κώδικα που εκτελεστεί αν η λογική έκφραση είναι ψευδής (false). if (λογική έκφραση) { // κώδικας που θα εκτελεστεί αν η λογική έκφραση είναι αληθής (true) else { // κώδικας που θα εκτελεστεί αν η λογική έκφραση είναι ψευδής (false) Μπορούμε επίσης να ελέγχουμε και πολλές συνθήκες με την χρήση της else if. Όταν χρησιμοποιούμε την else if οι συνθήκες ελέγχου υπολογίζονται με την σειρά που γράφονται. Μόλις βρεθεί μια συνθήκη ελέγχου που είναι αληθής, τότε το αντίστοιχο μέρος κώδικα εκτελείται και οι υπόλοιπες συνθήκες ελέγχου αγνοούνται. 1
if (λογική έκφραση 1) { // κώδικας που θα εκτελεστεί αν η λογική έκφραση 1 είναι αληθής else if (λογική έκφραση 2) { // κώδικας που θα εκτελεστεί αν η λογική έκφραση 2 είναι αληθής else if (λογική έκφραση 3) { // κώδικας που θα εκτελεστεί αν η λογική έκφραση 3 είναι αληθής else { // κώδικας που θα εκτελεστεί αν καμία από τις παραπάνω // λογικές εκφράσεις είναι αληθής (true) Παράδειγμα Αν ο δείκτης του ποντικιού είναι στην αριστερή πλευρά της οθόνης, τότε σχεδίασε ένα άσπρο τετράγωνο στην αριστερή πλευρά της οθόνης. if (mousex < width/2) { fill(255); rect(0,0,width/2,height); Αν ο δείκτης του ποντικιού είναι στην αριστερή πλευρά της οθόνης, τότε σχεδίασε άσπρο φόντο αλλιώς σχεδίασε μαύρο φόντο. if (mousex < width/2) { background(255); else { background(0); Αν ο δείκτης του ποντικιού είναι στην αριστερό 1/3 μέρος της οθόνης τότε σχεδίασε άσπρο φόντο, αν είναι στο μεσαίο 1/3 μέρος της οθόνης σχεδίασε γκρι φόντο, αλλιώς σχεδίασε μαύρο φόντο. if (mousex < width/3) { background(255); else if (mousex < 2*width/3) { background(127); else { background(0); 2
Άσκηση Πληροφορική: Εισαγωγή στον Προγραμματισμό και την Τεχνολογία των Υπολογιστών Θεωρείστε ένα σύστημα βαθμολόγησης όπου οι αριθμοί 0 έως 100 μετατρέπονται σε γράμματα Α έως F. Συμπληρώστε τα παρακάτω κενά στον κώδικα για την μετατροπή αυτή. float grade = random(0,100); if ( ) { println( "Assign letter grade A. "); else if ( ) { println ( ); else if ( ) { println( ); else if ( ) { println( ); else { println( ); 90 έως 100 Α 70 έως 89 Β 60 έως 69 C 50 έως 59 D μικρότερος του 50 E Άσκηση Εξετάστε τα παρακάτω δύο τμήματα κώδικα και προσδιορίστε τι θα εμφανιστεί στην οθόνη. Αν και η σύνταξη είναι σωστή τι πρόβλημα υπάρχει στον κώδικα της δεύτερης στήλης; 3
Παράδειγμα Η λογική του παρακάτω προγράμματος περιγράφεται από τα βήματα: Βήμα 1: Δήλωσε μεταβλητές για τις τιμές του κόκκινου, μπλε και πράσινου με ονόματα r, g, και b. Βήμα 2: Σχεδίαζε συνεχώς το φόντο με βάση αυτές τις τιμές χρωμάτων Βήμα 3: Αν ο δείκτης του ποντικιού είναι στην δεξιά πλευρά, αύξησε την τιμή του r, αν είναι στην αριστερή πλευρά μείωσε την τιμή του r. Βήμα 4: Περιόρισε την τιμή του r μεταξύ 0 και 255. Για τον περιορισμό της τιμής της r θα μπορούσε να αντικατασταθεί η if else με την χρήση της συνάρτησης της Processing constrain() η οποία έχει ακριβώς το ίδιο αποτέλεσμα. 4
Παράδειγμα Επέκταση του προηγούμενου παραδείγματος ώστε να αλλάζουν οι τιμές και των τριών χρωμάτων με βάση τη θέση του ποντικιού. 5
Άσκηση Πληροφορική: Εισαγωγή στον Προγραμματισμό και την Τεχνολογία των Υπολογιστών Μετακίνηση ενός τετραγώνου στο παράθυρο εξόδου αυξάνοντας την τιμή μιας μεταβλητής. Ξεκινήστε το σχήμα με συντεταγμένη x ίση με 0 και χρησιμοποιήστε μια if για να φτάνει η x συντεταγμένη έως το 100. Εναλλακτικά μπορείτε να χρησιμοποιήσετε την constrain() για να μην γίνεται η συντεταγμένη x μεγαλύτερη του 100. 6
Λογικοί Τελεστές && Λογικό ΚΑΙ (AND)! Λογικό H (OR) Λογική άρνηση (NOT) Άσκηση Υπολογίστε αν οι παρακάτω εκφράσεις είναι true ή false. Θεωρείστε ότι x = 5 και y =6. Αν και η σύνταξη είναι σωστή, τι είναι λάθος στην παρακάτω έκφραση; 7
Άσκηση Πληροφορική: Εισαγωγή στον Προγραμματισμό και την Τεχνολογία των Υπολογιστών Συμπληρώστε το παρακάτω πρόγραμμα ενός απλού rollover. Δηλαδή, αν το ποντίκι είναι πάνω από το τετράγωνο, τότε αλλάζει το χρώμα του. 8
Παράδειγμα Setup: 1. Δημιουργία παραθύρου 200 x 200 pixels. Draw: 1. Σχεδίασε άσπρο φόντο. 2. Σχεδίασε οριζόντιες και κάθετες γραμμές για να χωριστεί το παράθυρο στα τέσσερα. 3. Αν το ποντίκι είναι στην πάνω αριστερή γωνία, σχεδίασε ένα μαύρο τετράγωνο στην πάνω αριστερή γωνία. 4. Αν το ποντίκι είναι στην πάνω δεξιά γωνία, σχεδίασε ένα μαύρο τετράγωνο στην πάνω δεξιά γωνία. 5. Αν το ποντίκι είναι στην κάτω αριστερή γωνία, σχεδίασε ένα μαύρο τετράγωνο στην κάτω αριστερή γωνία. 6. Αν το ποντίκι είναι στην κάτω δεξιά γωνία, σχεδίασε ένα μαύρο τετράγωνο στην κάτω δεξιά γωνία. void setup() { size(200,200); void draw() { background(255); stroke(0); line(100,0,100,200); line(0,100,200,100); // Fill a black color nostroke(); fill(0); if (mousex < 100 & & mousey < 100) { rect(0,0,100,100); else if (mousex > 100 & & mousey < 100) { rect(100,0,100,100); else if (mousex < 100 & & mousey > 100) { rect(0,100,100,100); else if (mousex > 100 & & mousey > 100) { rect(100,100,100,100); 9
Παράδειγμα Προσομοίωση κουμπιού συνδεδεμένο με φως που ανάβει μόνο όταν το κουμπί είναι πατημένο. Πρέπει να ελέγξουμε αν το κουμπί πατήθηκε όσο το ποντίκι ήταν πάνω από το σχεδιασμένο τετράγωνο. Παράδειγμα Επέκταση του παραπάνω παραδείγματος ώστε να μην χρειάζεται να είναι πατημένο το κουμπί για να ανάβει το φως αλλά να λειτουργεί σαν διακόπτης. 10
Άσκηση Πληροφορική: Εισαγωγή στον Προγραμματισμό και την Τεχνολογία των Υπολογιστών Γιατί ο παρακάτω κώδικας του προηγούμενου παραδείγματος δεν θα δουλεύει σωστά αν τον μετακινήσουμε στην draw(); Άσκηση Συμπληρώστε το παρακάτω παράδειγμα ώστε ο κύκλος να ξεκινήσει να κινείται μόνο όταν έχει πατηθεί το κουμπί του ποντικιού. 11
Παράδειγμα Bouncing Ball 12
Παράδειγμα Ένα τετράγωνο ακολουθεί τις άκρες του παραθύρου εξόδου 13
Παράδειγμα Προσομοίωση Βαρύτητας 14