Προγραμματισμός Ι (HY120)

Σχετικά έγγραφα
Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (ΗΥ120)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Δομές ελέγχου ροής προγράμματος

Η γλώσσα προγραμματισμού C

Υπολογισμός - Εντολές Επανάληψης

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Παίρνοντας Αποφάσεις 1

Η γλώσσα C. Προγραµµατισµός Ι 1

Υπολογισμός - Εντολές Ελέγχου

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή στον Προγραμματισμό

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραμματισμό

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Η γλώσσα προγραμματισμού C

8. Συνθήκες ελέγχου, λογικοί τελεστές

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

Προγραμματισμός I (Θ)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Διάλεξη 5η: Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Κεφάλαιο : Επαναλήψεις (for, do-while)

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Συναρτήσεις και διαδικασίες

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης

Αρχές Προγραμματισμού

Προγραμματισμός Ι (HY120)

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 4

Διαδικαστικός Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

10. Εντολές επανάληψηςκαι οι εντολές

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ιαδικαστικός Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Β' Περιόδου Θέµα 1. (α')

Αντικειµενοστρεφής Προγραµµατισµός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

Δομημένος Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

Προγραμματισμός Ι. Θεματική ενότητα 4: Έλεγχος ροής Προτάσεις υπό συνθήκη διακλάδωσης

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Εντολές ελέγχου ροής if, for, while, do-while

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 3 Εντολές Επιλογής. Γιώργος Λαμπρινίδης Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

οµές Επιλογής Εντολές if και switch

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός Ι (HY120)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

Προγραμματισμός Ι (ΗΥ120)

Δομές Ελέγχου και Επανάληψης

Προγραμματισμός Ι (ΗΥ120)

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Εισαγωγή στον δομημένο προγραμματισμό

Γλώσσα Προγραμματισμού C

for for for for( . */

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Ενδεικτικές λύσεις και στατιστικά

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΑΣΚΗΣΗ 4: ΟΜΕΣ ΒΑΣΙΚΩΝ ΒΡΟΧΩΝ

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Ι (ΗΥ120)

Transcript:

Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης

Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς μια και από πάνω προς τα κάτω Η ροή εκτέλεσης είναι προκαθορισμένη Θα εκτελεστούν όλες οι εντολές που έχουμε γράψει και ακριβώς με την σειρά που τις έχουμε γράψει 2 Σπύρος Λάλης

Δομές/εντολές ελέγχου ροής εκτέλεσης Μπορούμε να φτιάξουμε προγράμματα στα οποία η ροή εκτέλεσης δεν είναι προκαθορισμένη Αυτό γίνεται με τις δομές ελέγχου ροής εκτέλεσης Το ίδιο το πρόγραμμα παίρνει αποφάσεις σχετικά με την εκτέλεση (ή μη) κάποιων εντολών Οι αποφάσεις λαμβάνονται την ώρα της εκτέλεσης συνήθως με βάση τις τιμές που έχουν οι μεταβλητές του προγράμματος Κλασικές δομές ελέγχου εκτέλεση υπό συνθήκη (διακλάδωση) εκτέλεση σε επανάληψη 3 Σπύρος Λάλης

γραμμική εκτέλεση εντολή 1 εντολή 2 εντολή 3 εντολή 4 εντολή 5 εντολή 6 εντολή 7 εντολή 8 εντολή 9 εντολή 10 εκτέλεση με διακλάδωση εντολή 1 εντολή 2 εντολή 3 εντολή 4 εντολή 5 εντολή 6 εντολή 7 εντολή 8 εντολή 9 εντολή 10 εκτέλεση με επανάληψη εντολή 1 εντολή 2 εντολή 3 εντολή 4 εντολή 5 εντολή 6 εντολή 7 εντολή 8 εντολή 9 εντολή 10 4 Σπύρος Λάλης

Εκτέλεση υπό συνθήκη: if-else if (<lexpr>) <body1> else <body2> lexpr false body2 true body1 Αποτιμάται η λογική συνθήκη <lexpr> αν είναι αληθής (!=0), η εκτέλεση συνεχίζεται με το <body1> διαφορετικά, η εκτέλεση συνεχίζεται με το εναλλακτικό <body2> Το εναλλακτικό σκέλος else είναι προαιρετικό αν δεν υπάρχει else και η συνθήκη <lexpr> αποτιμηθεί σε 0, παρακάμπτεται το <body1> και η εκτέλεση συνεχίζεται μετά το if 5 Σπύρος Λάλης

/* απόλυτη τιμή ακεραίου */ #include <stdio.h> int main(int argc, char *argv[]) { int i, abs; scanf("%d", &i); if (i >= 0) { abs = i; else { /* i < 0 */ abs = -i; printf("%d\n", abs); return(0); 6 Σπύρος Λάλης

/* τετραγωνική ρίζα ακεραίου με έλεγχο εισόδου */ #include <stdio.h> #include <math.h> μετάφραση με lm στο τέλος int main(int argc, char *argv[]) { int x,res; printf("enter non-negative integer: "); res = scanf("%d", &x); if ((res!= 1) (x < 0)) { printf("wrong input\n"); else { printf("sqrt(%d)=%lf\n",x,sqrt(x)); return(0); 7 Σπύρος Λάλης

/* μέγιστη τιμή τριών ακεραίων */ #include <stdio.h> int main(int argc, char *argv[]) { int i1, i2, i3, max; scanf("%d %d %d", &i1, &i2, &i3); if (i1 > i2) { if (i1 > i3) { max = i1; else { /* i1 <= i3 */ max = i3; else { /* i2 >= i1 */ if (i2 > i3) { max = i2; else { /* i2 <= i3 */ max = i3; printf("%d\n", max); return(0); 8 Σπύρος Λάλης

/* μέγιστη τιμή τριών ακεραίων */ #include <stdio.h> int main(int argc, char *argv[]) { int i1, i2, i3, max; scanf("%d %d %d", &i1, &i2, &i3); max = i1; if (max < i2) { max = i2; if (max < i3) { max = i3; printf("%d\n", max); return(0); 9 Σπύρος Λάλης

Σώμα εντολών Το σώμα μιας εντολής ελέγχου (π.χ. του if-else) δίνεται υποχρεωτικά ανάμεσα σε { όταν αυτό αποτελείται από πολλές εντολές Οι { είναι προαιρετικές μόνο όταν το σώμα αποτελείται από μια εντολή ένας άπειρος προγραμματιστής καλό είναι να χρησιμοποιεί πάντα {, ακόμα και για σώματα που περιέχουν μια εντολή Η χρήση { και η μορφοποίηση του κειμένου του προγράμματος με κενούς χαρακτήρες και κατανομή σε ξεχωριστές γραμμές είναι θέμα «γούστου» αλλά επηρεάζει σαφώς την αναγνωσιμότητα 10 Σπύρος Λάλης

/* απόλυτη τιμή ακεραίου */ #include <stdio.h> int main(int argc, char *argv[]) { int i, abs; scanf("%d", &i); if (i >= 0) { abs = i; else { /* in < 0 */ abs = -i; printf("%d\n", abs); return(0); 11 Σπύρος Λάλης

/* απόλυτη τιμή ακεραίου */ #include <stdio.h> int main(int argc, char *argv[]) { int i, abs; scanf("%d", &i); if (i >= 0) abs = i; else /* in < 0 */ abs = -i; printf("%d\n", abs); return(0); 12 Σπύρος Λάλης

/* εκτύπωση ημέρας με βάση κωδικό */ #include <stdio.h> int main(int argc, char *argv[]) { int day; scanf("%d", &day); if (day == 1) { printf("mon\n"); else if (day == 2) { printf("tue\n"); else if (day == 3) { printf("wed\n"); else if (day == 4) { printf("thu\n"); else if (day == 5) { printf("fri\n"); else if (day == 6) { printf("sat\n"); else if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); return(0); 13 Σπύρος Λάλης

δυσανάγνωστο if (day == 1) { printf("mon\n"); else if (day == 2) { printf("tue\n"); else if (day == 3) { printf("wed\n"); else if (day == 4) { printf("thu\n"); else if (day == 5) { printf("fri\n"); else if (day == 6) { printf("sat\n"); else if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); 14 Σπύρος Λάλης

δυσανάγνωστο if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); 15 Σπύρος Λάλης

σαφώς καλύτερα if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); 16 Σπύρος Λάλης

έμφαση στην δομή όχι απαραίτητα πιο ευανάγνωστο if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); 17 Σπύρος Λάλης

if (day == 1) { printf("mon\n"); else { if (day == 2) { printf("tue\n"); αυτό αρχίζει και γίνεται else { «βαρύ» και δυσανάγνωστο if (day == 3) { printf("wed\n"); else { if (day == 4) { printf("thu\n"); else { if (day == 5) { printf("fri\n"); else { if (day == 6) { printf("sat\n"); else { if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); 18 Σπύρος Λάλης

Εκτέλεση υπό συνθήκη: switch-case switch (<iexpr>) { case <v1>: <body1> case <v2>: <body2> case <vn>: <bodyn> default: <bodyd> iexpr==v1 false iexpr==v2 false iexpr==vn false true true true body1 body2 bodyn bodyd break break break Υπολογίζεται η ακέραια αριθμητική έκφραση iexpr και επιλέγεται προς εκτέλεση το σώμα της πρώτης περίπτωσης με την ίδια τιμή αν το σώμα δεν περιέχει break η εκτέλεση συνεχίζεται με το επόμενο σώμα Το σκέλος default είναι προαιρετικό επιλέγεται αν δεν επιλεγεί άλλη περίπτωση 19 Σπύρος Λάλης

/* εκτύπωση ημέρας με βάση κωδικό */ #include <stdio.h> int main(int argc, char *argv[]) { int day; χωρίς την εντολή break το πρόγραμμα θα συνέχιζε την εκτέλεση με το σώμα scanf("%d", &day); της επόμενης περίπτωσης switch (day) { case 1: { printf("mon\n"); break; case 2: { printf("tue\n"); break; case 3: { printf("wed\n"); break; case 4: { printf("thu\n"); break; case 5: { printf("fri\n"); break; case 6: { printf("sat\n"); break; case 7: { printf("sun\n"); break; default:{ printf("wrong day code %d\n",day); return(0); 20 Σπύρος Λάλης

switch (day) { case 1: { printf("mon\n"); εναλλακτική μορφοποίηση break; (ιδίως αν τα σώματα των περιπτώσεων αποτελούνται case 2: { από πολλές εντολές) printf("tue\n"); break; case 3: { printf("wed\n"); break; case 7: { printf("sun\n"); break; default:{ printf("wrong day code %d\n",day); 21 Σπύρος Λάλης