Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ...

Post on 25-Mar-2021

15 views 0 download

Transcript of Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ...

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

Ενότητα 5: Εντολές συνθήκης

Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή

Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε.

Άδειες Χρήσης

• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

2

Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια

του εκπαιδευτικού έργου του διδάσκοντα.

• Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και την Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού.

• Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

3

Σκοποί ενότητας

Σκοπός της ενότητας είναι να κατανοήσει ο φοιτητής τις εντολές συνθήκης if και switch της C με τις οποίες ελέγχουμε τη ροή ενός προγράμματος, καθώς κάποιες εντολές θα πρέπει να εκτελεστούν μόνο εάν ισχύουν κάποιες συνθήκες.

4

Περιεχόμενα ενότητας

•Εντολή if-Μορφή 1η.

•Η εντολή IF – Μορφή 2η.

•Η εντολή IF – Μορφή 3η.

•Η εντολή switch-case.

5

Η ροή του ελέγχου στην C

• Όπως σε κάθε γλώσσα προγραμματισμού, έτσι και στην C, υπάρχουν εντολές που επηρεάζουν τη ροή του ελέγχου στα προγράμματα (if, switch, while, for, κλπ.).

• Στις εντολές αυτές είναι πολύ συχνή η χρήση ενός μπλοκ εντολών.

6

Μπλοκ εντολών

• Ένα μπλοκ εντολών αποτελείται από εντολές που είναι κλεισμένες μέσα σε άγκιστρα ({ και }).

• Αν σ’ ένα μπλοκ εντολών περιέχεται μία μόνο εντολή, αυτή δεν είναι απαραίτητο να περικλείεται μέσα σε άγκιστρα.

7

Εντολές Συνθήκης

Με τις εντολές συνθήκης είναι δυνατό να επιλέξουμε ποιες εντολές του προγράμματος θα εκτελεστούν, θέτοντας προϋποθέσεις. Οι προϋποθέσεις εκφράζονται μέσω συνθηκών οι οποίες μπορεί να περιέχουν συγκριτικούς τελεστές. A. η εντολή if. B. η εντολή switch.

8

Εντολή if-Μορφή 1η

Η εντολή if χρησιμοποιείται για τον έλεγχο μιας λογικής παράστασης και ανάλογα με την τιμή (αληθής ή ψευδής) εκτελούνται οι αντίστοιχες εντολές.

Η εντολή if μπορεί να έχει διάφορες μορφές.

if (συνθήκη)

{

εντολές;

}

9

Παράδειγμα με χρήση της if #include <stdio.h> /*Πρόγραμμα με χρήση της if στην πρώτη μορφή

*/ void main() { int x; printf("Dose mia akeraih timh\n"); scanf("%d", &x); if( x > 0 ) { printf("O %d einai thetikos arithmos\n", x); } 10

Η εντολή IF – Μορφή 2η

if (συνθήκη)

{ εντολές1; }

else

{ εντολές2; }

Αν η ⟨συνθήκη⟩ είναι αληθής θα εκτελεσθεί το πρώτο ⟨μπλοκ εντολών⟩1, αλλιώς το ⟨μπλοκ εντολών⟩2.

11

Παράδειγμα της if στη 2η μορφή (1)

#include <stdio.h>

/*Πρόγραμμα με χρήση της if στη δεύτερη μορφή */

void main()

{

int x;

printf("Dose mia akeraih timh\n");

scanf("%d", &x);

12

Παράδειγμα της if στη 2η μορφή (2)

if( x > 0 ) { printf("O %d einai thetikos arithmos\n", x); } else { printf("O %d einai arnitikos arithmos i miden

\n\n", x); } }

13

Η εντολή IF – Μορφή 3η

if (συνθήκη1)

{ εντολές1; }

else if (συνθήκη2)

{ εντολές2; }

else if (συνθήκη3)

{ εντολές3; }

.………

else

{ εντολές; }

14

Παράδειγμα της if στην 3η μορφή (1)

#include <stdio.h>

/*Πρόγραμμα με χρήση της if στην τρίτη μορφή */

int main(void)

{

int x;

printf("Dose mia akeraih timh\n");

scanf("%d", &x);

if( x > 0 )

{

printf("O %d einai thetikos arithmos\n\n", x);

}

15

Παράδειγμα της if στην 3η μορφή (2)

else if(x<0)

{

printf("O %d einai arnitikos arithmos\n\n", x);

}

else

{

printf("O arithmos einai miden\n\n");

}

return 0;

}

16

Η εντολή switch-case (1)

• H εντολή switch-case ελέγχει αν η τιμή μιας ακεραίας παράστασης ισούται με συγκεκριμένες σταθερές.

• Η εντολή ελέγχου switch χρησιμοποιείται εναλλακτικά έναντι της if-else.

17

Η εντολή switch-case (2) switch (μεταβλητή) { case σταθερά1: εντολές;

break; (Η break δείχνει το τέλος μιας περίπτωσης και μεταφέρει τον έλεγχο στην αμέσως επόμενη πρόταση)

case σταθερά2: εντολές; break; …………..

default

εντολές;

break; }

18

Λειτουργία της switch

• Η ⟨μεταβλητή⟩ πρέπει να είναι ακέραια. Υπολογίζεται η τιμή της.

• Κάθε ⟨σταθερά⟩ πρέπει να είναι ακέραια σταθερά και δεν πρέπει να υπάρχουν δύο case με την ίδια σταθερά.

• Αν η τιμή που έχει η ⟨μεταβλητή⟩ ισούται με κάποια ⟨σταθερά⟩, τότε ο έλεγχος μεταϕέρεται στις ⟨εντολές⟩ κάτω από αυτή τη σταθερά. Αν όχι, ο έλεγχος μεταφέρεται στις ⟨εντολές⟩ μετά το default.

19

Η εντολή switch-case (3)

• H ύπαρξη της default περίπτωσης δεν είναι υποχρεωτική. Σε περίπτωση που δεν υπάρχει και η τιμή έκφρασης δεν είναι ίση με κάποια από τις τιμές των case σταθερών, τότε η εντολή switch τερματίζεται.

• Εάν λείπει η εντολή break το πρόγραμμα συνεχίζει με τις επόμενες case μέχρι να βρεθεί μία εντολή break.

20

Διαφορές με την if

• Η switch ελέγχει μόνο για ισότητες, δηλαδή αν η

μεταβλητή ισούται με κάποια από τις σταθερές.

• Οι σταθερές της switch, πρέπει οπωσδήποτε να είναι ακέραιοι αριθμοί ή σταθερές χαρακτήρα.

• Δύο σταθερές της switch δεν μπορούν να έχουν την ίδια τιμή.

• Η case ακολουθείται από μια σταθερά και άνω κάτω τελεία.

21

1ο Παράδειγμα (1)

#include <stdio.h> /*πρόγραμμα που χρησιμοποιεί την εντολή switch*/ int main(void) { int x; printf(«Δώσε στο x ακέραια τιμή από το 1 έως το 3\n"); scanf("%d", &x); switch (x) { case 1: printf(" H τιμή του x είναι 1.\n"); break;

22

1ο Παράδειγμα (2)

case 2: printf(" H τιμή του x είναι 2. \n"); break; case 3: printf(" H τιμή του x είναι 3. \n"); break; default: printf(«Έδωσες λάθος αριθμό. \n"); break; } return 0; }

23

2ο Παράδειγμα (1)

• Να γραφεί πρόγραμμα το οποίο διαβάζει έναν ακέραιο αριθμό που αντιστοιχεί σε κάποιο μήνα από το 1 έως το 12 και εμφανίζει την εποχή στην οποία ανήκει.

24

2ο Παράδειγμα (2) #include <stdio.h> #include <stdlib.h> int main(void) {int month; printf("Enter month [1-12]:"); scanf("%d",&month); switch (month) { case 1: case 2: case 12: printf("WINDER\n"); }

25

2ο Παράδειγμα (3) break; case 3: case 4: case 5: printf("SPRING\n"); break; case 6: case 7: case 8: printf("SUMMER\n"); break; case 9:

26

2ο Παράδειγμα (4)

case 10: case 11: printf("AUTUMN\n"); break; default: printf("WRONG MONTH \n"); break; } system("pause"); return 0; }

27

Βιβλιογραφία μαθήματος

• Kernighan, B. & Ritchie D. (1990). H Γλώσσα Προγραμματισμού C, Κλειδάριθμος, Αθήνα.

• Καρολίδης Δ. (2013). Μαθαίνετε εύκολα C. ISBN 978-960-93-5034-1.

• Τσελίκης Γ. & Τσελίκας, Ν. (2012).C Από τη θεωρία στην Εφαρμογή (β’ Έκδοση). ISBN: 978-960-93-1961-4.

• Χατζηγιαννάκης, Ν. (2012). Η γλώσσα C σε βάθος. Κλειδάριθμος, Αθήνα.

28

Τέλος Ενότητας