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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for for for for( . */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

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

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

Transcript:

Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch)

Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της ροής εκτέλεσης του προγράμματος, εξετάζοντας αν ισχύει ή όχι κάποια συνθήκη. Η συνθήκη μπορεί να είναι μια λογική έκφραση/πρόταση, μια έκφραση συσχετισμού, ένα αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή ή τιμή. Όταν η συνθήκη είναι αληθής τότε επιλέγεται να εκτελεστεί μια ενότητα (ομάδα-block) εντολών. Διαφορετικά (else) επιλέγεται μια άλλη ενότητα εντολών. Αποτελεί βασική δομή προγραμματισμού με την οποία αναπαριστούμε στα προγράμματα μας λήψεις αποφάσεων ανάλογα με τις συνθήκες που επικρατούν. 2

Η σύναξη της εντολής if-else Στην C η γενική σύνταξη της εντολής είναι: if (<ΣΥΝΘΗΚΗ>) else Ενότητα_Εντολών_Α Ενότητα_Εντολών_Β Οι Ενότητες Εντολών μπορεί να περιλαμβάνουν μια εντολή ή πολλές εντολές (block) που περικλείονται σε άγκιστρα ({,). Οι εντολές (ή η εντολή) της Ενότητας_Εντολών Α εκτελούνται αν η <ΣΥΝΘΗΚΗ> είναι αληθής, ενώ οι εντολές (ή η εντολή) της Ενότητας_Εντολών_Β εκτελούνται αν η <ΣΥΝΘΗΚΗ> είναι ψευδής. <ΣΥΝΘΗΚΗ> αληθής: διάφορη του μηδενός ( 0) <ΣΥΝΘΗΚΗ> ψευδής: ίση με μηδέν (=0) 3

Παρατηρήσεις Αν η ενότητα εντολών περιέχει μόνο μια εντολή, τότε τα άγκιστρα μπορούν να παραλειφθούν. if (a<b) max = b; Δεν βάζουμε το ελληνικό ερωτηματικό «;» στο τέλος της if ή της else εντολής. Το ερωτηματικό ουσιαστικά τερματίζει στο σημείο εκείνο την εντολή. Το else είναι προαιρετικό και όταν υφίσταται αναφέρεται στο πλησιέστερο προηγούμενο if που δεν έχει else. Αν δεν υπάρχει else και η συνθήκη είναι ψευδής, τότε η εντολή if δεν κάνει τίποτα και το πρόγραμμα προχωρά στην εκτέλεση των επόμενων εντολών. Κάθε ενότητα είναι δυνατόν να περικλείει και άλλες if-else ενότητες (blocks) εντολών (ένθετα nested if). Προσοχή ο τελεστής ελέγχου ισότητας == (διπλό ίσον) είναι διαφορετικός από τον τελεστή εκχώρησης = (μονό ίσον). 4

Γραφική αναπαράσταση της πλήρους δομής Πριν τη δομή τo πρόγραμμα έχει εκτελέσει τις προηγούμενες εντολές Συνθήκη 0 ΑΛΗΘΗΣ (έναρξη) Εντολές Προγράμματος ΣΥΝΘΗΚΗ Γίνεται εκτίμηση της συνθήκης ΨΕΥΔΗΣ Συνθήκη = 0 Εκτελούνται αν η ΣΥΝΘΗΚΗ είναι αληθής Ενότητα Εντολών Α Ενότητα Εντολών Β Εκτελούνται αν η ΣΥΝΘΗΚΗ είναι ψευδής Εντολές Προγράμματος (συνέχεια).. Μετά τη δομή τo πρόγραμμα προχωράει και εκτελεί τις επόμενες εντολές 5

Η ροή εκτέλεσης των εντολών στη πλήρη δομή Έλεγχος συνθήκης true false Ενότητα -Α Ενότητα -Β 6

Γραφική αναπαράσταση της δομής χωρίς το else Πριν τη δομή τo πρόγραμμα έχει εκτελέσει τις προηγούμενες εντολές Συνθήκη 0 ΑΛΗΘΗΣ (έναρξη) Εντολές Προγράμματος. ΣΥΝΘΗΚΗ Γίνεται εκτίμηση της συνθήκης Εκτελούνται αν η ΣΥΝΘΗΚΗ είναι αληθής Ενότητα Εντολών ΨΕΥΔΗΣ Συνθήκη = 0 Εντολές Προγράμματος (συνέχεια). Μετά τη δομή τo πρόγραμμα προχωράει και εκτελεί τις επόμενες εντολές 7

Η ροή εκτέλεσης των εντολών χωρίς το else Έλεγχος συνθήκης true false Ενότητα - Α 8

Παραδείγματα της δομής if printf( Δώστε έναν ακέραιο: ); scanf( %d, &a); if (a == 0) { printf (''o ακέραιος %d είναι μηδέν\n'',a); a++; if (a == 0) { printf (''o ακέραιος %d είναι μηδέν\n'',a); a++; else printf (''o ακέραιος %d δεν είναι μηδέν\n'',a); if (a<=0) a++; if (a<=0) a++; else a--; if (a<=0) { a=a+b; b--; else { a=a-b; b++; 9

Παραδείγματα προγραμμάτων με την if-else #include <stdio.h> main() { int a,b,min,max; printf("δώστε a:"); scanf("%d", &a); printf("δώστε b:"); scanf("%d", &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); int a,b; printf(''δώστε a:''); scanf(''%d'', &a); printf(''δώστε b:''); scanf(''%d'', &b); if (a <= b) { a = a+1; b = b/3; Ενότητες με πολλές else εντολές (με άγκιστρα) { a = a-1; b = b%3; printf(''a= %d, b= %d \n'', a,b); 10

Ένθετα (nested) if if (num == 2) printf("the num is now: 2\n"); if (num < 5) printf("the num is now %d, less than 5\n",num); else printf("the num is now %d, greater than 4\n",num); Έλεγχος της μεταβλητής num σε τι διαφέρουν? if (num = = 2) printf("the num is now: 2\n"); else if (num < 5) Ένθετο if printf("the num is now less than 5\n"); else printf("the num is now greater than 4\n"); 11

Εύρεση μεγαλύτερου από 3 αριθμούς int a,b,c;... if (a>b) if (a>c) Με ένθετα if printf ("max is a:%d", a); else printf ("max is c:%d", c); else if (b>c) printf ("max is b:%d",b); else printf("max is c:%d",c); int a,b,c;... if (a>b && a>c) printf ("max is a:%d", a); if (b>a && b > c) printf ("max is b:%d", b); if (c> a && c > b) Με λογικές προτάσεις printf ("max is c:%d",c); Πως συμπεριφέρονται αυτά τα προγράμματα αν a=b ή b=c; 12

Αριθμομηχανή char p; float x, y, result; int flag=1; scanf("%f %c %f", &x, &p, &y); if (p == '+') result = x + y; else if (p == '-') result = x - y; else if (p == '*') result = x * y; else if (p == '/') result = x / y; else flag=0; if (flag!=0) printf("%f %c %f = %f\n", x, p, y, result); else printf("λάθος τελεστής\n"); Λείπει ένα printf που θα εξηγεί τι πρέπει να εισάγει ο χρήστης Τι επέμβαση απαιτείται αν η y είναι ίση με μηδέν; 13

Περίεργες συνθήκες Η έκφραση if (1) είναι πάντα αληθής Η έκφραση if (0) είναι πάντα ψευδής Η έκφραση if (a) είναι ισοδύναμη με την if (a!=0) Η έκφραση if (!a) είναι ισοδύναμη με την if (a ==0) Η έκφραση if (a=-2) είναι αληθής Γενικά, η έκφραση a= <τιμή> είναι αληθής αν η τιμή είναι 0. Αν η τιμή που αναθέτουμε είναι 0 τότε η συνθήκη είναι ψευδής. 14

Η εντολή switch Η γενικευμένη μορφή της εντολής είναι η εξής: switch (έκφραση) { case σταθερά_1: Ενότητα εντολών -1; break; case σταθερά_2: default: Ενότητα εντολών _2 ; break; Ενότητα εντολών ; break; Εντολή που χρησιμοποιείται αντί της if-else εκτελούνται αν η σταθερά_1=έκφραση εκτελούνται αν η σταθερά_2=έκφραση εκτελούνται αν η έκφραση δεν είναι ίση με καμιά σταθερά των cases 15

Αριθμομηχανή με switch char p; float x, y, result; int flag=0; scanf("%f %c %f", &x, &p, &y); switch(p) { case '+': result = x + y; break; case '-': result = x - y; break; case '*': result = x * y; break; case '/': result = x / y; break; default: printf("λάθος τελεστής\n"); flag=1; if (flag==0) printf("%f %c %f = %f\n", x, p, y, result); Τι επέμβαση απαιτείται αν η y είναι ίση με μηδέν; 16

Ανάλυση της δομής switch Εκτελούνται οι εντολές των οποίων η σταθερά του case ταιριάζει με την τιμή της έκφρασης. H τιμή της έκφρασης στη switch και οι τιμές των σταθερών των cases πρέπει να είναι ακέραιοι ή χαρακτήρες. Η τιμή της έκφρασης συγκρίνεται διαδοχικά με τις σταθερές των cases. Αν η τιμή της έκφρασης ταιριάζει με τη σταθερά ενός case τότε εκτελούνται οι αντίστοιχες εντολές του case. Αν η τιμή της έκφρασης δεν ταιριάζει με καμία σταθερά, τότε εκτελείται η εντολή στο block της default (που είναι προαιρετικό). Η εκτέλεση του προγράμματος μέσα σε ένα switch συνεχίζεται στο επόμενο case, εκτός αν δεν μεσολαβεί κάποια από τις εντολές break, exit ή return. 17

Παρατηρήσεις επί της δομής switch Δεν χρησιμοποιούμε «;» στο τέλος των case και default, αλλά το «:». Όταν δεν υπάρχει default και η τιμή της έκφρασης δεν είναι ίση με τις σταθερές των case, τότε τερματίζεται η εντολή switch και εκτελούνται οι εντολές που ακολουθούν τη switch. Η default δεν μπαίνει απαραίτητα στο τέλος της switch. Προφανώς δεν μπορούν να έχουν την ίδια τιμή δύο σταθερές των cases. H εντολή break προκαλεί τον τερματισμό μιας εντολής switch (έξοδο) ή και μιας επαναληπτικής διαδικασίας (που θα δούμε στα επόμενα μαθήματα). Με την εντολή break εκτέλεση του προγράμματος συνεχίζεται μετά την εντολή switch ή την εντολή επανάληψης. 18

Αριθμομηχανή με switch άλλος τρόπος switch(p) { case '+': result = x + y; printf("%f %c %f = %f\n", x, p, y, result); break; case '-': result = x - y; printf("%f %c %f = %f\n", x, p, y, result); break; case '*': result = x * y; printf("%f %c %f = %f\n", x, p, y, result); break; case '/': if (y ==0) printf("διαίρεση με 0 \n"); else printf("%f %c %f = %f\n", x, p, y, x/y); break; default: printf("λάθος τελεστής\n"); 19