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

29
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 5: Εντολές συνθήκης Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε.

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

Page 1: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

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

Page 2: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

2

Page 3: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

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

3

Page 4: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

4

Page 5: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

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

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

5

Page 6: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

6

Page 7: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

7

Page 8: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

8

Page 9: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

if (συνθήκη)

{

εντολές;

}

9

Page 10: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

Παράδειγμα με χρήση της 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

Page 11: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

if (συνθήκη)

{ εντολές1; }

else

{ εντολές2; }

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

11

Page 12: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

#include <stdio.h>

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

void main()

{

int x;

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

scanf("%d", &x);

12

Page 13: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

Παράδειγμα της 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

Page 14: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

if (συνθήκη1)

{ εντολές1; }

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

{ εντολές2; }

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

{ εντολές3; }

.………

else

{ εντολές; }

14

Page 15: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

Παράδειγμα της 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

Page 16: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

Παράδειγμα της 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

Page 17: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

17

Page 18: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

default

εντολές;

break; }

18

Page 19: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

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

19

Page 20: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

20

Page 21: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

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

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

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

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

21

Page 22: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

Page 23: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

Page 24: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

24

Page 25: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

Page 26: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

Page 27: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

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

27

Page 28: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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

• 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

Page 29: Προραμμανισμός Η/Υ 1 Ҭρασνήριοҭ · 2015. 7. 21. · Η ροή νοξ λέχοξ σνην C • Όπως σε κάθε γλώσσα προγραμματισμού,

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