Εντολες Επιλογης (Selection)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κατηγορηματικός Λογισμός
Advertisements

Τύποι δεδομένων και τελεστές,
Προγραμματισμός Ι Προτάσεις ελέγχου ροής Ο πιο συνηθισμένος τρόπος εκτέλεσης είναι ο ακολουθιακός: δύο ή περισσότερες προτάσεις βρίσκονται διατεταγμένες.
Εντολές Διακλάδωσης ή Εντολές Υπό Συνθήκη
Δομές Διακλάδωσης Μην ελπίζεις ότι θα ξεφύγεις αν κάνεις κάποιο κακό. Γιατί κι αν ξεφύγεις απ’ τη προσοχή των άλλων, θα υποπέσεις στην αντίληψη της συνείδησής.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Τύποι πραγματικών αριθμών
Αλγόριθμοι Ταξινόμησης
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Δομές Διακλάδωσης.
Δρ. Παναγιώτης Συμεωνίδης
ΜΑΘ-3122/106 Γλώσσα Προγραμματισμού
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
Γενική μορφή προγράμματος Pascal
Τελεστές ανάθεσης (assignment)
Προγραμματισμός στο ΜatLab
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ενότητα Η Δομή Επανάληψης
ΕΛΕΓΧΟΣ ΡΟΗΣ ΜΑΘΗΜΑ 4. ΑΚΟΛΟΥΘΙΑΚΗ ΕΚΤΕΛΕΣΗ ΠΡΟΤΑΣΕΩΝ ΠΡΟΤΑΣΗ Α ΠΡΟΤΑΣΗ Β ΠΡΟΤΑΣΗ Γ ………………. ΠΡΟΤΑΣΗ n ΠΡΟΤΑΣΗ Α ΠΡΟΤΑΣΗ Β ΠΡΟΤΑΣΗ Γ ………………. ΠΡΟΤΑΣΗ n.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
Τελεστές (operators) – Εκφράσεις (expressions)
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
ΣΥΝΑΡΤΗΣΕΙΣ.
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Eντολες Επαναληψης - Βροχοι (repetition and loops)
Ενότητα Α.4. Δομημένος Προγραμματισμός
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακός Λογισμός.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Eντολες Επαναληψης - Βροχοι (repetition and loops)
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Συγγραφείς Α.Βακάλη Η. Γιαννόπουλος Ν. Ιωαννίδης Χ.Κοίλιας Κ. Μάλαμας Ι. Μανωλόπουλος Π. Πολίτης Γ΄ τάξη.
Δομή επανάληψης Η δομή επανάληψης είναι μια ολοκληρωμένη πρόταση η οποία περικλείει μια συνθήκη και μια ομάδα εντολών, οι οποίες εκτελούνται, όσο ικανοποιείται.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Μετατροπή Εκφράσεων σε C
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
2) Aν δανειστούμε ένα ποσό Α με επιτόκιο Τ=Ε% και υποχρεωθούμε να το ξεχρεώσουμε σε Ν χρόνια, τότε το ποσό της μηνιαίας δόσης Μ θα δίνεται από τον τύπο.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
Τελεστές και ή όχι Για την εκτέλεση αριθμητικών πράξεων
Δομή Επιλογής Μάθημα 4ο Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τάξη Γ Οικονομίας & Πληροφορικής Θετικών Σπουδών 2ο Γενικό Λύκειο Αλιβερίου |
ΒΙΒΛΙΟ ΠΛΗΡΟΦΟΡΙΚΗΣ Σελίδες 2ο Κεφάλαιο - Παράγραφο 2.7 ΔΟΜΗ ΕΠΙΛΟΓΗΣ
Τύποι δεδομένων και τελεστές,
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

Εντολες Επιλογης (Selection) Εντολες if, if-else, ? : nested if-else Εκφραση Συνθηκης Σχεσιακοι Τελεστες Λογικοι Τελεστες Εντολη switch (και το break)

Δομες Ελεγχου Ενα προγραμμα αποτελειται απο Ακολουθιες πχ { εντολη;εντολη;…} Εκλογη πχ if(){} Επαναληψη πχ while{}

Eντολη if if (εκφραση) εντολή; if (εκφραση){ εντολη; … }

Eντολη if-else if (εκφραση) εντολή; else if (εκφραση){ εντολη; ... }

Eντολη ? : Συνταξη: (εκφραση) ? εντοληΑ : εντοληΒ; Σημασια: Εαν η τιμη της εκφρασης ειναι διαφορη του μηδεν εκτελα την εντοληΑ αλλιως εκτελα την εντοληΒ, πχ: x = (y>100) ? y : 0;

if Σημασια: εαν η εκφραση(συνθηκη) παιρνει τιμη διαφορη του μηδεν τοτε εκτελουνται οι εξαρτομενες εντολες αλλιως συνεχισε με τις εντολες που ακολουθουν το if block if (length <= 0){ printf(‘‘error: length should be possitive\n’’); exit(0); }

if-else Σημασια: εαν η εκφραση(συνθηκη) παιρνει τιμη διαφορη του μηδεν τοτε εκτελουνται οι εντολες του if block αλλιως εκτελουνται οι εντολες του else block if (temp > 0){ printf(‘‘above freezing.\n’’); } else{ printf(‘‘freezing!\n’’);

Παραδειγμα if-else Γραψετε την συναρτηση min που παιρνει παραμετρους δυο ακεραιους αριθμους και επιστρεφει τον μικροτερο.

int min(int a, int b) { int minimum; if (a < b) minimum = a; else minimum = b; return minimum; }

int min(int a, int b) { int minimum; if (a < b) minimum = a; else minimum = b; return minimum; } int min(int a, int b) { if (a < b) return a; else return b; } int min(int a, int b) { if (a < b) return a; return b; } int min(int a, int b) { int minimum; minimum = b; if (a < b) minimum = a; return minimum; }

Παραδειγμα με Φωλιασμα (nested if-else) Γραψετε την συναρτηση min_three που παιρνει παραμετρους τρεις ακεραιους αριθμους και επιστρεφει τον μικροτερο.

int min_three(int a, int b, int c) { int minimum; if (a < b) if (a < c) minimum = a; else minimum = c; if (b < c) minimum = b; return minimum; }

int min_three(int a, int b, int c) { int minimum; if (a < b) minimum = a; else minimum = b; if (c < minimum) minimum = c; return minimum; }

Παραδειγμα nested if-else Γραψετε την συναρτηση detect που παιρνει μια ακεραια παραμετρο και επιστρεφει 1 εαν ειναι θετικη, 0 εαν ειναι 0 και -1 εαν ειναι αρνητικη

int detect(int number) { int code; if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; return code; }

int detect(int number) { int code; if (number > 0){ code = 1; } else{ if (number < 0){ code = -1; else{ /* number einai 0 */ code = 0; return code;

int detect(int number) { int code; if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; return code; }

Σχεσιακοί Τελεστές (Relational Operators) Δυαδικοι Τελεστες < μικρότερο από > μεγαλύτερο από <= μικρότερο ή ίσο με >= μεγαλύτερο ή ίσο με == ίσο με != διάφορο του Αποτιμουνται σε 0 (ψευδης) ή 1 (αληθης) Τυποι τελεσταιων int, char, float, double, *

Σχεσιακοί Τελεστές (Relational Operators) t = (x < y); k = (i >= 8); a = (b != b); (f == 2.3456) (‘a’ >= ‘b’) ‘a’<‘b’<..<‘z’ ‘A’<‘B’<..<‘Z’ ‘0’<‘1’<..<‘9’ d = (e <= ‘3’);

Λογικοί Τελεστές (Logical Operators) && σύζευξη, δυαδικός τελεστής (and)  διάζευξη, δυαδικός τελεστής (or) ! άρνηση, μοναδιαίος τελεστής (not) Αποτιμουνται σε 0 ή 1 0 (δεν ισχυει, ψευδης ή false) 1 (ισχυει, αληθης ή true) Tυποι τελεσταιων int, char

Eκφρασεις με Λογικους και Σχεσιακους Τελεστες (πεδιο) t = (A>=0 && A<=100); y = (s<10 || s>100); !(s<10 || s>100) (i<10 && j==1)

Λογικοι Τελεστες t = (A>=0 && A<=100); t1 = (A>= 0); t = (t1 && t2);

Πίνακες Αλήθειας για && τελεστέος1 τελεστέος2 && ΔΤ0 ΔΤ0 1 ΔΤ0 0 0 0 ΔΤ0 0 0 0 0 Oταν χρειαζεται να ελεγξουμε πως ολες οι υποεκφρασεις ισχυουν, πχ (a && b)

Πίνακες Αλήθειας για || τελεστέος1 τελεστέος2 || ΔΤ0 ΔΤ0 1 ΔΤ0 0 1 0 ΔΤ0 1 0 0 0 Oταν χρειαζεται να ελεγξουμε πως τουλαχιστο μια υποεκφραση ισχυει πχ (a || b)

Πινακας Αληθειας για ! τελεστέος ! ΔΤ0 0 0 1 τελεστέος ! ΔΤ0 0 0 1 Oταν χρειαζεται να ελεγξουμε πως ισχυει το αντιθετο μιας εκφρασης πχ !(a && b)

Συμπλήρωμα Συνθηκών – Complementing Conditions Το συμπλήρωμα μίας συνθήκης είναι η άρνησή της, π.χ. Συνθήκη Συμπλήρωμα 1 0 0 1 100345 1 item == SENT !(item == SENT) ή item != SENT item > SENT item <= SENT (n % 2) == 0 (n % 2) != 0

Κανόνες DeMorgan !(E1 && E2)  !E1  !E2 !(E1  E2)  !E1 && !E2 !(age > 25 && (status == S  status == D))  !(age > 25) || !(status == S || status == D)  age <= 25 || (status != S && status != D)

Προτεραιότητες κλησεις συναρτησεων υψηλοτερη κλησεις συναρτησεων υψηλοτερη ! +  & (μοναδιαίοι τελεστές) * / % +  < <= >= > == != &&  = χαμηλότερη

Αποτίμηση Λογικών Εκφράσεων Η αποτίμηση αρχίζει από τα αριστερά και προχωρεί μέχρι το σημείο που χρειάζεται να προχωρήσει (short-circuit evaluation), π.χ. 0 && Ε  0 η αποτίμηση της έκφρασης Ε δεν χρειάζεται 1  Ε  1

Σειρά Συνθηκών σε μία Λογική Έκφραση για λόγους αποδοτικότητας σειρά των συνθηκών σε μία λογική έκφραση, π.χ. (y / x) > 2 && x != 0 Εάν x ισούται με 0, run time error (λάθος). Όμως η ακόλουθη διατύπωση δεν έχει πρόβλημα x != 0 && (y / x) > 2

Σειρά Συνθηκών σε μία Λογική Έκφραση Γενικά σε μία σύζευξη, Ε1 && Ε2, η συνθήκη Ε1 πρέπει να αποτελεί τον αριστερό τελεστέο, εάν στην περίπτωση που αποτιμείται σε 0, τυχόν αποτίμηση της Ε2 θα οδηγήσει σε πρόβλημα. Με αυτή την σειρά αποτρέπεται η αποτίμηση της Ε2. Αναλογο για διαζευξη Ε1||Ε2

Μεταφραση Εκφρασεων σε C x και y μεγαλυτερα του z x ειναι ισο με το 2.5 ή με το 10.32 a ειναι στο πεδιο απο b μεχρι και c α ειναι εξω απο το πεδιο b μεχρι και c x να ειναι μικροτερο του 0 ή μεταξυ 10 και 1000 l να ειναι english character

Μεταφραση Εκφρασεων σε C x και y μεγαλυτερα του z (x>z && y>z) x ειναι ισο με το 2.5 ή με το 10.32 (x==2.5 || x==10.32) a ειναι στο πεδιο απο b μεχρι και c (a>=b && a<=c) α ειναι εξω απο το πεδιο b μεχρι και c !(a>=b && a<=c) ή (a<b || a>c)

Μεταφραση Εκφρασεων σε C x να ειναι μικροτερο του 0 ή μεταξυ 10 και 1000 (x<0) || (x>=10 && x<=1000) l να ειναι english character (l>=‘a’ && l<=‘z’) || (l<=‘A’ && l<=‘Z’)

Συνταξη Λογικης Εκφρασης <λογική_έκφραση> ::= <λογική_τιμή> <σχεσιακή_έκφραση> (<λογική_έκφραση>) !<λογική_έκφραση> <λογική_έκφραση>&&<λογική_έκφραση> |<λογική_έκφραση>  <λογική_έκφραση> <λογική_τιμή> ::= true(ΔΤ0)  false (0)

Εντολη switch switch (έκφραση_ελέγχου) { σύνολο_ετικεττών_1 εντολές_1 break; …………………….. σύνολο_ετικεττών_n εντολές_n default: εντολές_d }

Εντολη switch Η έκφραση_ελέγχου πρέπει να είναι βαθμωτού τύπου, π.χ. char ή int, αλλά όχι float ή double. εντολές_n εντολή; εντολή;…; Συνολο Ετικεττων case constant_expression: case constant_expression: ...

char letter_grade; int count_a, count_b, count_other; count_a = count_b = count_other = 0; …… switch(letter_grade){ case ‘A’: counta++; message_excelent(); break; case ‘B’: countb++; message_very_good(); case ‘C’: case ‘D’: case ‘F’: count_other++; message_other(); default: message_error(); }

Παραδειγμα Γραψε την συναρτηση convert_stream που παιρνει μια παραμετρο τυπου χαρακτηρα και επιστρεφει 0 εαν ο χαρακτηρας ειναι ασπρο διαστημα και 1 αλλιως Τι ειναι ασπρο διαστημα;

#define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1 int convert_stream(char c) { int code; if (c== ‘ ’ || c==‘\n’ || c==‘\t’) code = WHITE_SPACE; else code = NOT_WHITE_SPACE; return code; } 123 3#4%^&* asdf 001110111111110011110

Παράδειγμα Γραψετε διαδικασια display_grade_message που παιρνει μια παραμετρο, τον βαθμο ενος φοιτητη μεταξυ 0 και 100, και τυπωνει τα μυνηματα: πανω απο 85 Excellent 65-84 Very Good 50-64 Good κατω απο 50 Failure

void display_grade_message(int weighted_aver) { if (weighted_aver >= 85) printf(\nExcellent); else if (weighted_aver < 85 && weighted_aver >= 65) printf(\nVery Good); else if (weighted_aver < 65 && weighted_aver > 50) printf(\nGood); else printf(\nFailure); }

Παράδειγμα Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100, στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς και με το 400.

int is_leap (int year) { int disektos; if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) disektos = 1; else disektos = 0; return disektos; }

int is_leap (int year) { return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); }

int is_leap (int year) { int disektos; if (year % 4 == 0) if (year % 100 == 0) if (year % 400 == 0) disektos = 1; else disektos = 0; return disektos; }

Διακλάδωση μόνο στη κατεύθυνση του όχι Ο πιο συνηθισμένος τρόπος φωλιάσματος επιλογών (φυσικός τρόπο έκφρασης), είναι όταν η διακλάδωση γίνεται μόνο στην κατεύθυνση του όχι. Έτσι υπάρχει μία αλυσίδα επιλογών.

int is_leap (int year) { int disektos; if (year % 4 == 0) if (year % 100 != 0) disektos = 1; else if (year % 400 == 0) else disektos = 0; else disektos = 0; return disektos; }

Κοινα Λαθη = αντι == συνθηκη χωρις παρενθεση if (x=10) if (x==10) συνθηκη χωρις παρενθεση if x>4 if (x>4) Μεταφραση απο μαθηματικα σε C, απο 0 μεχρι 4: (0 <= x <= 4) αντι (0 <= x && x<= 4)

Λαθος αντιστοιχια if-else Λαθος: if (x > 0) sum = sum + x; printf(Greater than 0); else printf(Less than 0); Ορθο: if (x > 0){ }