3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

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

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

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

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

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

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

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

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

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

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

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

Σημειώσεις για πρόοδο στο εργαστήριο

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

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

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

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

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΧΕΙΜΕΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

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

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

EΒ ΟΜΑ Α 3 Η. Άλλοι τελεστές καταχώρησης: += -= *= /= %= x += 5; σηµαίνει x = x + 5; k *= 7; σηµαίνει k = k * 7; sum %= 15; σηµαίνει sum = sum % 15;

ΕΛΕΓΧΟΣ ΡΟΗΣ IF-ELSE

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

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

Λυμένα παραδείγματα με τις for, while, do-while

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

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

1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C

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

ΑΠΑΝΤΉΣΕΙΣ ΣΤΟ ΠΡΩΤΟ ΣΥΝΟΛΟ ΑΣΚΗΣΕΩΝ

Πρόβληµα : Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά?

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός II (Γλώσσα C)

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

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

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

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ. p: i: 3 p: i: 5

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

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

Ασκήσεις & παραδείγματα για επανάληψη

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

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

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Ασκήσεις 5ο Μάθημα - Λύσεις

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΠΡΟΓΡΑΜΜΑΤΑ ΕΡΓΑΣΤΗΡΙΟΥ

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

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

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

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

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

Transcript:

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? ) 3.1 Η εντολή switch case Στην περίπτωση που θέλουμε να εξετάσουμε πολλές διαφορετικές τιμές, θα αναγκαζόμασταν να φτιάξουμε ένα κώδικα που θα περιέχει πολλά else if, οπότε για να δομηθεί πιο σωστά το πρόγραμμα μας, χρησιμοποιούμε τη switch. Μπορείτε να έχετε τόσες περιπτώσεις όσες θέλετε, συμπεριλαμβανομένης μιας περίπτωσης προεπιλογής(default) που εκτελείται εάν καμία από τις προηγούμενες περιπτώσεις δεν ισχύει. Η γενική μορφή της εντολής switch... case είναι: switch ( metavliti ) case τιμή_1: σύνολο_εντολών_1; case τιμή_2: σύνολο_εντολών_2;...... σύνολο_εντολών_n; Αυτό θα ήταν αντίστοιχο με το να γραφεί ένα πρόγραμμα, όπως: if (metavliti==τιμή_1) σύνολο_εντολών_1; else if (metavliti==τιμή_2) σύνολο_εντολών_2; else σύνολο_εντολών_n; Το πλεονέκτημα της if είναι ότι μπορούμε να βάλουμε και συνθήκες που να έχουν να κάνουν με μεγαλύτερο ή μικρότερο και όχι μόνο ισότητες. 1

Παράδειγμα: int a; printf("dwse ena noumero apo to 1 mexri to 4:\n"); scanf("%d", &a); switch (a) case 1: printf("dialexes ton arithmo 1\n"); case 2: printf("dialexes ton arithmo 2\n"); case 3: printf("dialexes ton arithmo 3\n"); case 4: printf("dialexes ton arithmo 4\n"); printf("den edwses arithmo apo tous 1,2,3 i 4\n"); Στην οθόνη θα εμφανιστεί: Dwse ena noumero apo to 1 mexri to 4: Αν πατήσετε... 2 Θα εμφανιστεί: Dialexes ton arithmo 2 Οι case εντολές λειτουργούν απλά σαν ετικέτες (δηλαδή απλά δείχνουν στο πρόγραμμα από ποιό σημείο να συνεχίσει) Π.χ. Αν είναι 2 συνέχισε να εκτελείς το πρόγραμμα από το σημείο 2 και κάτω. Το αποτέλεσμα είναι ότι αφού ταιριάξει την case που έχει την τιμή εκτελεί όλες τις μεταβλητές από κει και πέρα. Γι' αυτό το λόγο, εισάγουμε την εντολή που λέει στο πρόγραμμα να βγει τελείως από τη switch και να συνεχίσει με τις επόμενες εντολές του προγράμματος (αν υπάρχουν) μετά το άγκιστρο που κλείνει τη switch. 2

Στο προηγούμενο παράδειγμα, αν είχαμε αφαιρέσει όλες τις break, και επιλέγαμε το 2, θα εμφανιζόντουσαν στην οθόνη όλα τα επόμενα: Dialexes ton arithmo 2 Dialexes ton arithmo 3 Dialexes ton arithmo 4 Den edwses arithmo apo tous 1,2,3 i 4 Αντίστοιχα, αν είχαμε αφήσει τη break που υπάρχει στην case 3, τότε το αποτέλεσμα που θα εμφανιζόταν θα ήταν: Dialexes ton arithmo 2 Dialexes ton arithmo 3 Για να καταλάβουμε, ποιός είναι ο λόγος που η switch συμπεριφέρεται έτσι, θα δούμε το παρακάτω παράδειγμα, όπου οι ίδιες εντολές εκτελούνται για διαφορετικές τιμές της μεταβλητής : Παράδειγμα: int a; printf("dwse ena noumero apo to 1 mexri to 4:\n"); scanf("%d", &a); switch (a) case 1: case 3: printf("epelexes mono noumero\n"); case 2: case 4: printf("epelexes zygo noumero\n"); printf("den edwses arithmo apo tous 1,2,3 i 4!\n"); Στην οθόνη θα εμφανιστεί: Dwse ena noumero apo to 1 mexri to 4: Αν πατήσετε... 2 Θα εμφανιστεί: Epelexes zygo noumero αφού εκτελεί τις εντολές από το case 2 μέχρι να βρει break ή να τελειώσει το switch. 3

3.2 Ο υπό όρους τελεστής «? :» (The Conditional Operator) Ο υπό όρους τελεστής (conditional operator) συμπεριφέρεται όπως μία απλή if... else δήλωση. Η διαφορά του είναι ότι ορίζεται ολόκληρος σε μια μόνο γραμμή: Συνθήκη? εντολή_1: εντολή_2; Ο μεταγλωττιστής εξετάζει αρχικά τη συνθήκη. Εάν η συνθήκη είναι αληθινή, εκτελεί την εντολή_1, διαφορετικά θα εκτελούσε εντολή_2. Για παράδειγμα, όταν σε ένα πρόγραμμα ζητούνται δύο αριθμοί από το χρήστη και θέλετε να τους συγκρίνετε, το ακόλουθο πρόγραμμα θα υπολογίσει ποιος από τους δύο αριθμούς είναι ο μεγαλύτερος. Η σύγκριση εκτελείται χρησιμοποιώντας τον υπό όρους τελεστή : long int Num1, Num2, Max; printf("dwse dyo noumera pou na xwrizontai metaxy tous me to keno:"); scanf("%d %d",&num1,&num2); Max = (Num1 < Num2)? Num2 : Num1; printf ( "\nto megalytero noumero apo ta %d kai %d einai to %d\n",num1,num2,max); Δηλαδή, στο σημείο που φράφουμε την εντολή Max = (Num1 < Num2)? Num2 : Num1; θα μπορούσαμε να είχαμε γράψει: if (Num1 < Num2) Max = Num2; else Max = Num1; 3.3 Ασκήσεις ΑΣΚΗΣΗ 1: Πληκτρολογείστε το παρακάτω πρόγραμμα: int menu, numb1, numb2, total; printf("dwse dyo noumera pou na xwrizontai metaxy tous me to keno:"); 4

scanf("%d %d", &numb1, &numb2 ); printf("enter in choice\n"); printf("1=prosthesi\n"); printf("2=afairesi\n"); scanf("%d", &menu ); switch( menu ) case 1: total = numb1 + numb2; printf("%d kai %d ison %d\n", numb1, numb2, total ); case 2: total = numb1 - numb2; printf("%d meion %d ison %d\n", numb1, numb2, total ); printf("invalid option selected\n"); Το παραπάνω πρόγραμμα να επεκταθεί ώστε να εκτελεί και τις τέσσερις βασικές πράξεις. ΑΣΚΗΣΗ 2: Πληκτρολογείστε το παρακάτω πρόγραμμα το οποίο είναι μια παραλλαγή του προηγούμενου προγράμματος. Στη συνέχεια, να επεκταθεί κι αυτό ώστε να κάνει και τις τέσσερις βασικές πράξεις. char op; float number1, number2, result; printf("grapste dyo noumera kai enan arithmo me tin parakatw morphi\n"); printf(" noumero1 (keno) telestis_praxis (keno) noumero2\n"); scanf("%f %c %f", &number1, &op, &number2); switch( op ) case '+' : result = number1 + number2; case '-' : result = number1 - number2; printf("%f %c %f is %f\n", number1, op, number2, result ); 5

ΑΣΚΗΣΗ 3: Να γραφεί πρόγραμμα που να δέχεται δύο πραγματικούς αριθμούς και να εκτελεί τις πράξεις του υπολοίπου της διαίρεσης, της ύψωσης σε δύναμη, του αθροίσματος και της διαφοράς των αντίστροφων τους. Υπόδειξη: Η ύψωση σε δύναμη γράφεται χρησιμοποιώντας και τη βιβλιοθήκη math.h, άρα στην αρχή του προγράμματος, εκτός της, θα πρέπει να γράψουμε και τη βιβλιοθήκη #include <math.h>, που περιέχει μαθηματικούς τύπους. Μετά θα μπορέσουμε να χρησιμοποιήσουμε μέσα στο πρόγραμμα μας τη συνάρτηση pow(a,b); που σημαίνει ο αριθμός με βάση το a υψωμένο στη δύναμη b. Ο αντίστροφος ενός αριθμού a είναι ο 1/a και λογικά, πρέπει να είναι δεκαδικός. Επίσης, για να δουλέψει το υπόλοιπο, πρέπει να έχουμε ακέραιους (παίρνοντας άλλες δύο μεταβλητές που θα είναι ίσες με τις αντίστοιχες δεκαδικές που μας έδωσε ο χρήστης) ή βάζοντας κατά την πράξη μπροστά από τις μεταβλητές το (int). ΑΣΚΗΣΗ 4: Να γραφεί πρόγραμμα που να εισάγει έναν αριθμό από το πληκτρολόγιο και να χρησιμοποιεί τις εντολές switch case που να εκτελεί τις ίδιες λειτουργίες με το παρακάτω εντολές if else : if (x == 10) printf( deka\n ); else if ( x == 20) printf( eikosi\n ); else if (x == 30) printf( trianta\n ); else printf( oute deka, oute eikosi, oute trianta\n ); 6