ΕΛΕΓΧΟΣ ΡΟΗΣ ΜΑΘΗΜΑ 4
ΑΚΟΛΟΥΘΙΑΚΗ ΕΚΤΕΛΕΣΗ ΠΡΟΤΑΣΕΩΝ ΠΡΟΤΑΣΗ Α ΠΡΟΤΑΣΗ Β ΠΡΟΤΑΣΗ Γ ………………. ΠΡΟΤΑΣΗ n ΠΡΟΤΑΣΗ Α ΠΡΟΤΑΣΗ Β ΠΡΟΤΑΣΗ Γ ………………. ΠΡΟΤΑΣΗ n
ΚΑΤΑΣΚΕΥΕΣ Για την διαφοροποίηση από την ακολουθιακή εκτέλεση απαιτούνται ειδικές κατασκευές. Οι κατασκευές διακρίνονται σε δύο βασικές κατηγορίες. 1.την υπό συνθήκη διακλάδωση (conditional branching) 2.την επανάληψη (looping) Για την διαφοροποίηση από την ακολουθιακή εκτέλεση απαιτούνται ειδικές κατασκευές. Οι κατασκευές διακρίνονται σε δύο βασικές κατηγορίες. 1.την υπό συνθήκη διακλάδωση (conditional branching) 2.την επανάληψη (looping)
ΥΠΟ ΣΥΝΘΗΚΗ ΔΙΑΚΛΑΔΩΣΗ if (συνθήκη) { προτάσεις; } else { προτάσεις; } if (συνθήκη) { προτάσεις; } else { προτάσεις; }
ΤΜΗΜΑΤΑ ΤΗΣ if Η if αποτελείται από τρία τμήματα: Το τμήμα της συνθήκης που ακολουθεί την λέξη if. Το αληθές τμήμα που ακολουθεί την λέξη if και εκτελείται όταν η συνθήκη είναι αληθής. Το ψευδές τμήμα - εφόσον υπάρχει - που ακολουθεί την λέξη else και εκτελείται όταν η συνθήκη είναι ψευδής. Η if αποτελείται από τρία τμήματα: Το τμήμα της συνθήκης που ακολουθεί την λέξη if. Το αληθές τμήμα που ακολουθεί την λέξη if και εκτελείται όταν η συνθήκη είναι αληθής. Το ψευδές τμήμα - εφόσον υπάρχει - που ακολουθεί την λέξη else και εκτελείται όταν η συνθήκη είναι ψευδής.
ΠΑΡΑΤΗΡΗΣΕΙΣ Α. Μερικές φορές δεν υπάρχει else, δηλαδή ψευδές τμήμα: if(PSIGEIO_adeio==TRUE)gemise_PSIGEIO(); Εάν η συνθήκη είναι ψευδής δεν γίνεται καμία ενέργεια. Β. Εάν υπάρχουν περισσότερα από δύο τμήματα και απαιτούνται ένθετες προτάσεις if/else τότε το: else{ if(συνθήκη) {προτάσεις;}} Γίνεται: else if(συνθήκη) {προτάσεις;} Η μορφή αυτή ονομάζεται κλίμακα if-else- if. Α. Μερικές φορές δεν υπάρχει else, δηλαδή ψευδές τμήμα: if(PSIGEIO_adeio==TRUE)gemise_PSIGEIO(); Εάν η συνθήκη είναι ψευδής δεν γίνεται καμία ενέργεια. Β. Εάν υπάρχουν περισσότερα από δύο τμήματα και απαιτούνται ένθετες προτάσεις if/else τότε το: else{ if(συνθήκη) {προτάσεις;}} Γίνεται: else if(συνθήκη) {προτάσεις;} Η μορφή αυτή ονομάζεται κλίμακα if-else- if.
ΚΛΙΜΑΚΑ if-else-if if (συνθήκη) { προτάσεις; } else if (συνθήκη) { προτάσεις; }... else if (συνθήκη) { προτάσεις; } else { προτάσεις; } if (συνθήκη) { προτάσεις; } else if (συνθήκη) { προτάσεις; }... else if (συνθήκη) { προτάσεις; } else { προτάσεις; }
ΥΠΟΘΕΤΙΚΟΣ ΤΕΛΕΣΤΗΣ Υποθετικός τελεστής(?:). Υλοποιεί μία υποθετική πρόταση. Η έκφραση με υποθετικό τελεστή: εκφρ1 ? εκφρ2 : εκφρ3 Σημαίνει ότι η τιμή της πιο πάνω έκφρασης είναι η τιμή της εκφρ2 εάν η εκφρ1 είναι αληθής, αλλιώς είναι η τιμή της εκφρ3. Η εκφρ1 είναι η συνθήκη ελέγχου. Παράδειγμα: x>z ? x : z Σημαίνει ότι η έκφραση έχει τιμή x εάν το x>z είναι αληθές αλλιώς έχει την τιμή z. Ακολουθεί πρόγραμμα. Υποθετικός τελεστής(?:). Υλοποιεί μία υποθετική πρόταση. Η έκφραση με υποθετικό τελεστή: εκφρ1 ? εκφρ2 : εκφρ3 Σημαίνει ότι η τιμή της πιο πάνω έκφρασης είναι η τιμή της εκφρ2 εάν η εκφρ1 είναι αληθής, αλλιώς είναι η τιμή της εκφρ3. Η εκφρ1 είναι η συνθήκη ελέγχου. Παράδειγμα: x>z ? x : z Σημαίνει ότι η έκφραση έχει τιμή x εάν το x>z είναι αληθές αλλιώς έχει την τιμή z. Ακολουθεί πρόγραμμα.
ΥΠΟ ΣΥΝΘΗΚΗ ΔΙΑΚΛΑΔΩΣΗ switch switch(έκφραση) { case (σταθ.-έκφρ. 1): προτάσεις; break; case (σταθ.-έκφρ. 2): προτάσεις; break;... case (σταθ.-έκφρ. Ν): προτάσεις; break; default: προτάσεις; break; } switch(έκφραση) { case (σταθ.-έκφρ. 1): προτάσεις; break; case (σταθ.-έκφρ. 2): προτάσεις; break;... case (σταθ.-έκφρ. Ν): προτάσεις; break; default: προτάσεις; break; }
ΚΑΝΟΝΕΣ ΤΗΣ switch Κάθε case πρέπει να έχει μία int ή char σταθερά έκφραση. Δύο case δεν μπορούν να έχουν την ίδια τιμή. Οι προτάσεις κάτω από την ετικέτα default εκτελούνται όταν δεν ικανοποιείται καμία από τις case ετικέτες. Η default δεν είναι απαραίτητα η τελευταία ετικέτα. Κάθε case πρέπει να έχει μία int ή char σταθερά έκφραση. Δύο case δεν μπορούν να έχουν την ίδια τιμή. Οι προτάσεις κάτω από την ετικέτα default εκτελούνται όταν δεν ικανοποιείται καμία από τις case ετικέτες. Η default δεν είναι απαραίτητα η τελευταία ετικέτα.