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

Σχετικά έγγραφα
Η γλώσσα προγραμματισμού C

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

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι χρειάζεται η εντολή if ; Εντολή if. Παράδειγμα #1. Παράδειγμα #1

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

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

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

Ηλεκτρονικοί Υπολογιστές

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

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

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

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

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

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

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

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

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

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

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

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 8: Δημιουργία προγραμμάτων

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

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

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

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

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

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

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

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

Κεφάλαιο 4ο: Εντολές επιλογής

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

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

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

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

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

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

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

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

ΕΠΛ232: Εργαστήριο 2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

Ηλεκτρονικοί Υπολογιστές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 4 Ο. Δομή επανάληψης Επανάληψη με συνθήκη Ατέρμονη επανάληψη Πίνακας ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

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

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

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

Transcript:

Εργαστήριο 5 Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch. Προτεραιότητα τελεστών (συνέχεια): () παρενθέσεις +, - (πρόσημα), ++, -- *, /, % +, - <, >, <=, >= ==,!= && =, *=, /=, %=, +=, -= Στη C οι λογικές συνθήκες έχουν αριθμητικές τιμές: 0 (μηδέν) αν είναι ψευδής και 1 αν είναι αληθής. Η C όμως δέχεται και οποιεσδήποτε αριθμητικές παραστάσεις ως συνθήκες! Στη C μια τέτοια παράσταση ισχύει αν έχει μη μηδενική τιμή. Η παράσταση δεν ισχύει μόνο αν η τιμή της είναι μηδέν (βλέπε παρακάτω το πρόγραμμα που δοκιμάζει τις διακλαδώσεις if). Διακλαδώσεις (conditional statements) Υπάρχουν τριών ειδών διακλαδώσεις στη C : if, if else και switch. Διακλάδωση if. Στο πρόγραμμα γράφουμε : if (συνθήκη) {ομάδα εντολών if (i>0) { printf("positive"); Παρατήρηση. Όταν μέσα στην ομάδα εντολών υπάρχει μόνο μία εντολή τότε τα άγκιστρα δεν χρειάζονται. if (i>0) printf("positive");

if ( year%4 == 0 && year%100!= 0 ) printf("disekto"); if (i==0) { printf("zero, setting i=1"); i=1; Το λογικό διάγραμμα της if. Όταν το πρόγραμμα φτάνει στην εντολή if, υπολογίζει πρώτα την λογική τιμή της συνθήκης. Αν η συνθήκη ισχύει (έχει μη μηδενική τιμή), τότε εκτελείται ομάδα εντολών. Αν η συνθήκη δεν ισχύει, δεν γίνεται τίποτα. Στο τέλος (και στις δύο περιπτώσεις) το πρόγραμμα προχωράει προς την επόμενη εντολή του προγράμματος.

Παράδειγμα. Λογικές συνθήκες με if. #include <stdio.h> #include <stdlib.h> main(){ int a; a = 0; printf("%d\n", (a==1)); // 0 printf("%d\n", (a==0)); // 1 if (100) printf(" 100 ok\n"); // ΝΑΙ if (-100) printf("-100 ok\n"); // ΝΑΙ if (0.25) printf(" 0.25 ok\n"); // ΝΑΙ if (-0.25) printf("-0.25 ok\n"); // ΝΑΙ if (0) printf("0 ok\n"); // ΟΧΙ if (a==0) printf("a==0\n"); // ΝΑΙ if (a==1) printf("a==1\n"); // ΟΧΙ if (a=0) printf("a=0\n"); // ΟΧΙ! Γιατί; if (a=1) printf("a=1\n"); // ΝΑΙ! Γιατί; system("pause"); Διακλάδωση if else. Παρατηρήστε ότι το διάγραμμα της if δεν είναι συμμετρικό. Πολλές φορές, αν η συνθήκη δεν ισχύει, θέλουμε να εκτελέσουμε κάποιες άλλες εντολές. Αυτή τη δυνατότητα μας προσφέρει η διακλάδωση if else. Στο πρόγραμμα γράφουμε : if (Συνθήκη) Ομάδα Εντολών Α else Ομάδα Εντολών Β if ( i==0 ) printf("i is zero\n"); else printf("i is non zero\n"); if ( 1<=i && i<=5 ) printf("i is 1,2,3,4 or 5\n"); else printf(" i < 1 or i >5 \n");

Το λογικό διάγραμμα της if else. Όταν το πρόγραμμα φτάνει στην εντολή if else, υπολογίζει πρώτα την λογική τιμή της συνθήκης. Αν η συνθήκη ισχύει (έχει μη μηδενική τιμή), τότε εκτελείται η ομάδα εντολών A. Αν η συνθήκη ΔΕΝ ισχύει (έχει τιμή μηδέν), τότε εκτελείται η ομάδα εντολών Β. Στο τέλος (και στις δύο περιπτώσεις) το πρόγραμμα προχωράει προς την επόμενη εντολή του προγράμματος. Παράδειγμα. Υπολογισμός του min και max #include <stdio.h> #include <stdlib.h> main(){ int a,b,min,max; printf("give a b -> "); scanf("%d%d", &a, &b); if (a<b) min = a; else min = b; if (a<b) max = b; else max = a; printf("min = %d max = %d\n", min, max); system("pause");

Ένθετες (nested) εντολές if else. Οι ομάδες εντολών της if else είναι δυνατών να περιέχουν μέσα επίσης διακλαδώσεις. if (i>0) { if (i>3) i++; else i--; else { if (i<-4) i++; else i--; Παράδειγμα. Οι ρίζες της δευτεροβάθμιας εξίσωσης Ax 2 + Bx + C = 0 #include <stdio.h> #include <stdlib.h> #include <math.h> // sqrt main(){ float A,B,C,D,x1,x2; printf("give A B C -> "); scanf("%f%f%f", &A, &B, &C); D = B*B 4*A*C; if (D<0) printf("no real roots \n"); else { if (D>0){ x1 = (-B + sqrt(d))/(2*a); x2 = (-B sqrt(d))/(2*a); printf("roots : x1 = %f, x2 = %f \n", x1, x2); else { x2 = -B/(2*A); printf("double root : x = %f \n", x2); system("pause");

Διακλάδωση switch. Όταν χρειάζονται πολλές διακλαδώσεις στο πρόγραμμα, η χρήση των if else γίνεται δύσκολη στην πράξη. Πχ. μια επιλογή του χρήστη από μενού 10 δυνατοτήτων χρειάζεται 10 εντολές if else. Η εντολή switch οργανώνει καλύτερα τέτοιες περιπτώσεις. Έστω c μια μεταβλητή τύπου π.χ. int και c1, c2,..., cn διαφορές σταθερές τιμές της c που μας ενδιαφέρουν. Θέλουμε να διακλαδώσουμε το πρόγραμμά μας σε περιπτώσεις τύπου c = ci και να εκτελέσουμε κατάλληλες εντολές. Η εντολή switch χρησιμοποιείται ως εξής : switch (c) { case c1 : Ομάδα Εντολών 1 case c2 : Ομάδα Εντολών 2... case cn : Ομάδα Εντολών N default : Ομάδα Εντολών του default Για να καταλάβουμε τι ακριβός κάνει switch, ας δούμε πρώτα το λογικό διάγραμμά της.

Όπως βλέπουμε, switch συγκρίνει διαδοχικά την τιμή c με σταθερές ci και αν c=ci, τότε εκτελούνται όλες οι παρακάτω ομάδες εντολών, μαζί με την ομάδα του default. Η ομάδα του default εκτελείται πάντα, και εκτελείται ως τελευταία. Αυτή η συμπεριφορά της switch σπάνια είναι χρήσιμη. Συνήθως θέλουμε να εκτελεστεί μόνο μία ομάδα εντολών σε κάθε περίπτωση! Ευτυχώς, στις ομάδες εντολών της switch μπορούμε να χρησιμοποιήσουμε μια ειδική εντολή break. Η break προκαλεί άμεσο τερματισμό της switch, (μετακίνηση στο σημείο B στο διάγραμμα).

Παράδειγμα. Οργάνωση μενού με switch και getche. #include <stdio.h> #include <conio.h> // getche main(){ char ch; printf("menu :\n"); printf("1 Play \n"); printf("2 Work \n"); printf("3 EXIT \n"); printf("\n Your choice -> "); ch = getche(); printf("\n\n"); switch (ch) { case '1' : { printf("now playing... \n"); break; case '2' : { printf("now working... \n"); break; case '3' : { printf("bye... \n"); break; default : { printf("bad choice\n"); break;