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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

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

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

Εισαγωγή στον Υπολογισμό - Τελεστές & Είσοδος/Έξοδος

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

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

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

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

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

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

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

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

Transcript:

0ι Λογικοί Τελεστές: Πρόκειται για τελεστές που μας επιτρέπουν να συνδυάσουμε απλές εκφράσεις συσχετισμού και να δημιουργήσουμε πιό πολύπλοκες λογικές εκφράσεις. Εχουμε λοιπόν: && Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0) Λογικό διαζευτικό "ή" (είτε - OR)! Λογική άρνηση (ΝΟΤ) Το αποτέλεσμα μιάς έκφρασης με λογικούς τελεστές είναι είτε μηδέν (ψευδές), είτε 1 (αληθές). ( x > 10 && x < 20) Η προτεραιότητα των τελεστών συσχέτισμού είναι μεγαλύτερη από αυτή των λογικών τελεστών ενώ η προτεραιότητα και των δύο (συσχετισμού και λογικών) είναι μικρότερη από αυτή των αριθμητικών τελεστών! ΠΑΡΑΔΕΙΓΜΑ:Να γραφεί πρόγραμμα που να υπολογίζει αν το έτος που δίνουμε είναι δίσεκτο η όχι void main() int year; do printf("give a year - positive integer number: "); scanf("%d",&year); while (year<0); /* Αμυντικός προγραμματισμός if ((year%4==0 && year%100!=0) (year%400==0)) printf("to etos %d einai disekto",year); printf("to etos %d den einai disekto",year); 1

υπενθύμιση Δίσεκτα έτη θεωρούνται όσα διαιρούνται ακριβώς με το 4 αλλά όχι με το 100. Εξαίρεση αποτελούν τα έτη που διαιρούνται ακριβώς με το 400, που θεωρούνται επίσης δίσεκτα. Αν το έτος λοιπόν είναι δεν είναι δίσεκτο τότε η λογική έκφραση επιστρέφει την τιμή 0 (ψευδής). ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΑΡ1: Δημιουργήστε ένα πρόγραμμα που θα ζητά από τον χρήστη δύο ακέραιους αριθμούς και θα εμφανίζει την λογική τους άρνηση ελέγχει αν κάποιος από αυτούς είναι αρνητικός ελέγχει αν και οι δύο είναι αρνητικοί ΠΡΟΓΡΑΜΜΑ int main(void) int k, m; printf("dwse ton prwto akeraio:\n"); scanf ("%d",&k); printf("dwse ton deytero akeraio:\n"); scanf ("%d",&m); printf("!%d = %d\n",k,!k); printf("!%d = %d\n",m,!m); printf("kapoios arithmos einai arnhtikos -> %d\n",((k<0) (m<0))); printf("kai oi dyo arithmoi einai arnhtikoi -> %d\n",((k<0)&&(m<0))); return 0; ΠΑΡ 2 :Δημιουργήστε ένα πρόγραμμα που θα ζητά από τον χρήστη δύο ακέραιους αριθμούς k (όπου 0<k<10) και m (όπου -10<m<0). Αν ο πρώτος αριθμός k βρίσκεται στο διάστημα 0<k<10 και ο δεύτερος αριθμός m βρίσκεται στο διάστημα -10<m<0 τότε θα εκτυπώνει το διπλάσιο του k και το τριπλάσιο του m. Σε διαφορετική περίπτωση θα τυπώνει το μήνυμα «Kapoios arithmos einai ektos oriwn». 2

ΠΡΟΓΡΑΜΜΑ int main(void) int k, m, n; printf("dwse ton prwto akeraio k, opou 0<k<10:\n"); scanf ("%d",&k); printf("dwse ton deytero akeraio m, opou -10<m<0:\n"); scanf ("%d",&m); if (k>0 && k<10 && m<0 && m>-10) printf("o k anhkei sto 0<k<10 kai to diplasio toy k einai %d\n",2*k); printf("o m anhkei sto -10<m<0 kai to diplasio toy m einai %d\n",2*m); printf("kapoios arithmos einai ektos oriwn"); return 0; ΠΑΡ 3 :Δίνεται το πιο κάτω λογικό κύκλωμα: K F a.δώστε την αντίστοιχη λογική συνάρτηση που περιγράφει τη λειτουργία του κυκλώματος. b.γράψτε πρόγραμμα σε γλώσσα προγραμματισμού C, το οποίο να διαβάζει τις τιμές των εισόδων A, B και C και να εμφανίζει στην οθόνη την τιμή της εξόδου F του λογικού κυκλώματος ΑΠΑΝΤΗΣΗ Έξοδος F = (A OR B OR C) AND ((NOT A) OR (NOT B) OR (NOT C)) L 3

Πρόγραμμα c int a, b, c, f; // χρησιμοποιούνται ακέραιοι για να αποθηκευτούν οι λογικές μεταβλητές main() do printf("\ntype valye of A (0-1): "); scanf("%d",&a); while ((a!=0) && (a!=1)); //ανάγνωση του a με έλεγχο αν η τιμή είναι 0 ή 1 do printf("\ntype value for B (0-1): "); scanf("%d",&b); while ((b!=0) && (b!=1)); //ανάγνωση του b με έλεγχο αν η τιμή είναι 0 ή 1 do printf("\ntype value for C(0-1): "); scanf("%d",&c); while ((c!=0) && (c!=1)); //ανάγνωση του c με έλεγχο αν η τιμή είναι 0 ή 1 f = (a b c) && (!a!b!c); printf("\nh exodos einai f = %d", f); // εμφάνιση της εξόδου f Οι τελεστές επιπέδου bit: Με την C μπορούμε να κάνουμε πράξεις σε επίπεδο bit με τους τελεστές: << Ολίσθηση (shift) προς αριστερά. Για παράδειγμα η εντολή i << j το i μετακινείται αριστερά j bits. Οι θέσεις των bits που αδειάζουν "γεμίζουν" με 0. Προσέξτε διότι δεν λαμβάνεται υπόψη το bit του προσήμου! >> Ολίσθηση (shift) προς δεξιά. Αν η μεταβλητή είναι unsigned τότε τα κενά bits "γεμίζουν" με 0. Αν η μεταβλητή έχει πρόσημο τότε τα bits που αδειάζουν, είτε παίρνουν το bit του προσήμου (0 ή 1 - θετική ή αρνητική μεταβλητή), είτε "γεμίζουν" με 0. Εξαρτάται από τον compiler. ~ Δυαδική άρνηση (όπου 1 μπαίνει 0 και όπου 0 μπαίνει 1 - one's complement). Υπάρχει ένας μόνο όρος & Δυαδικό "και" σε επίπεδο bit (συξευξη / AND). Δηλαδή η εντολή var = var & 0177, βάζει 0 σε όλα τα bits της μεταβλητής num, εκτός από τα 7 δεξιά bits αυτής. Προσέξτε ο τελεστής εδώ απαιτεί δύο όρους. Υπάρχει και ο τελεστής της διευθυνσης (&) με τον ίδιο συμβολισμό που όταν μπαίνει μπροστά σε μία μεταβλητή αναφέρεται στην διεύθυνση της. 4

Δυαδικό διαζευτικό "ή" σε επίπεδο bit (διάζευξη / OR). Η εντολή var = var ON, όπου υπάρχει 1 στις θέσεις των bits της ON, μπαίνει αντίστοιχα 1 στις θέσεις των bits της var. ^ Αποκλειστική διάζευξη "ή" (exclusive OR) σε επίπεδο bit. Δηλαδή, η εντολή var1 ^ var2 στις θέσεις που τα bits και των δύο μεταβλητών έχουν την ίδια τιμή μπαίνει 0, ενώ στις θέσεις που τα bits έχουν διαφορετική τιμή μπαίνει 1. Οι τελεστές αυξησης/μείωσης: Πρόκειται γιά τους τελεστές: + + που κάνει αύξηση μιας μεταβλητής κατά 1 μονάνδα π.χ i++; - - που κάνει μείωση μιας μεταβλητής κατά 1 π.χ i-- ; Εχει σημασία αν οι τελεστές αύξησης/μείωσης τεθούν πρίν (++i) ή μετά (i--) την μεταβλητή. ΠΑΡΑΔΕΙΓΜΑ main() int a=3, b=3; int syna, synb; syna=a++; synb=++b; printf ("a= %d, syna= %d, b= %d, synb=%d\n", a, syna, b, synb); το αποτέλεσμα που θα πάρουμε από την εντολή printf θα είναι: a=4, syna=3, b=4, synb=4 και αυτό διότι στην εντολή syna=a++; γίνεται χρήση της τιμής της μεταβλητής a, πριν γίνει η αύξηση κατά μία μονάδα, ενώ στην synb=++b; μετά την αύξηση της μεταβλητής b κατά μία μονάδα. Οι τελεστές εκχώρησης: += Πρόσθεση σε μεταβλητή. Παράδειγμα: x+=1; είναι το ιδίο όπως x=x+1 -= Αφαίρεση από μεταβλητή. Παράδειγμα: x-=1; (όπως x=x-1) *= Πολλαπλασιασμός μεταβλητής. Παράδειγμα: x*=3; (όπως x=x*3) 5

/= Διαίρεση μεταβλητής. Παράδειγμα: x/=2; (όπως x=x/2) %= Το υπόλοιπο. Παράδειγμα: alpha %=2 (οπως alpha=alpha %2) >>= Ολίσθηση δεξιά. Παράδειγμα: beta >>= 3 (τα bits της beta ολίσθησαν δεξιά κατα 3 θέσεις) <<= Ολίσθηση αριστερά. Παράδειγμα: beta <<= 3 (τα bits της beta ολίσθησαν αριστερά κατα 3 θέσεις) &= Σύζευξη (AND). Παράδειγμα:var &= 0177 (όπως var = var & 0177) = Διάζευξη (OR). Παράδειγμα: var = 0177 ^= Αποκλειστική διάζευξη (exclusive OR). Παράδειγμα: var = 0177 Ο τελεστής διευθυνσης (&): Μας δίνει την διευθύνση της μνήμης που αποθηκευεται μιά μεταβλητή. Αν για παράδειγμα έχω μία ακέραια μεταβλητή ALPHA ο συμβολισμός &ALPHA μας δίνει την διεύθυνση της μεταβλητής στην μνήμη. Ετσι αν η μετaβλητή ALPHA περιέχει τον αριθμό 32 (alpha=32) και αποθηκεύεται στην διεύθυνση 4294967246, τότε η εκτέλεση της εντολής: printf ("Value of ALPHA:%d, Address of ALPHA:%u \n", ALPHA, &ALPHA); θα μας δώσει: Value of ALPHA:32, Address of ALPHA:4294967246 Προσέξτε, για να εμφανιστεί σωστά η διεύθυνση χρησιμοποιήθηκε ο προσδιοριστής %u (χωρίς πρόσημο ακέραιος). Ο τελεστής συνθήκης η τριαδικός τελεστής : Γενική μορφή: έκφραση? εντολή-1 : εντολή-2 Αν η (λογική) έκφραση είναι αληθής τότε αναπτύσσεται η εντολή-1, διαφορετικά αναπτύσσεται η εντολή-2. Ουσιαστικά πρόκειται για μία συμπαγής μορφή της εντολής if-: if (έκφραση) εντολή-1 εντολή-2 ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΑΡ1. num = (x<=5)? 1 : 0; 6

Η μεταβλητή num θα πάρει την τιμή 1 αν το x είναι μικρότερο ή ίσο του 5, διαφορετικά θα πάρει την τιμή 0. ΠΑΡ2. #include<stdio.h> int main() int x=5,y=10,max; max = (x > y)? x : y; // στην μεταβλητή max θα εκχωρηθεί το y αφού είναι μεγαλύτερο του x printf("the maximum number is %d.\n",max); Προτεραιότητες μεταξύ των τελεστών της C: Ιεραρχία Τελεστές Φορά 1 ( ) [ ]. -> Από αριστερά πρός δεξιά 2! ~ ++ -- &(διεύθυνση) *(indirection) (type) sizeof Από δεξιά πρός αριστερά 3 *(πολλαπλασιασμός) / % Από αριστερά πρός δεξιά 4 + - Από αριστερά πρός δεξιά 5 << >> Από αριστερά πρός δεξιά 6 < <= > >= Από αριστερά πρός δεξιά 7 = =!= Από αριστερά πρός δεξιά 8 & (AND) Από αριστερά πρός δεξιά 9 ^ Από αριστερά πρός δεξιά 10 Από αριστερά πρός δεξιά 11 && Από αριστερά πρός δεξιά 12 Από αριστερά πρός δεξιά 13? : Από δεξιά πρός αριστερά 14 = += -= *= /= %= &= ^= = <<= >>= Από δεξιά πρός αριστερά 15, Από αριστερά πρός δεξιά 7

Η C υποστηρίζει τις παρακάτω δομές ελέγχου: Εντολή if-: Οι εντολές if και if- υπάρχουν σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιούνται για να ελέγξουν να ισχύει ή όχι κάποια συνθήκη. Στην C η γενική σύνταξη της εντολής είναι: if (<ΣΥΝΘΗΚΗ>) Ενότητα -Α Ενότητα-Β Η <ΣΥΝΘΗΚΗ> μπορεί να είναι λογική έκφραση, έκφραση συσχετισμού, αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή. Η Ενότητα-Α και η Ενότητα-Β μπορεί να περιλαμβάνουν μία εντολή ή πολλές εντολές (block) που περικλείονται σε άγκιστρα (,). Οι εντολές (ή η εντολή) της Ενότητας-Α εκτελούνται αν η <ΣΥΝΘΗΚΗ> είναι αληθής (όχι 0), ενώ οι εντολές (ή η εντολή) της Ενότητας-Β εκτελέιται αν η <ΣΥΝΘΗΚΗ> είναι ψευδής (0-μηδέν). Το είναι προαιρετικό και όταν υφίσταται αναφέρεται στο πλησιέστερο πριν από αυτό if που δεν έχει. Kάθε ενότητα είναι δυνατόν να περικλείει και άλλες if- ενότητες (blocks) εντολών. Παραδείγματα: Προγραμμα -Α Προγραμμα -Β int num;... if (num = = 2) printf("the num is now: 2\n"); if (num < 5) printf("the num is now %d, less than 5\n",num); printf("the num is now %d, greater than 4\n",num); int num;... Προγραμμα -Γ Προγραμμα -Δ int a,b,c;... if (a>b) if (a>c) printf ("max is a:%d", a); printf ("max is c:%d", c); if (b>c) printf ("max is b:%d",b); printf("max is c:%d",c); if (num = = 2) printf("the num is now: 2\n"); if (num < 5) printf("the num is now less than 5\n"); printf("the num is now greater than 4\n"); 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); 8

Εντολή switch: Η γενικευμένη μορφή της εντολής είναι: switch (έκφραση) case σταθερά1: εντολή1; case σταθερά2: εντολή2; default: εντολήν; Εκτελείται η εντολή της οποίας η σταθερά ταιριάζει με την τιμή της έκφρασης. Η εκτέλεση του προγράμματος μέσα σε ένα switch συνεχίζεται στο επόμενο case, εκτός αν δεν μεσολαβεί κάποια από τις εντολές break, exit ή return. Αν η τιμή δεν ταιριάζει με καμία σταθερά, τότε εκτελείται η εντολή στο block της default (που είναι προαιρετικό). main() int a; printf("enter an integer: "); scanf("%d", &a); /* Check values of a */ switch (a) case 1: puts("you entered 1"); case 2: puts("you entered 2"); case 3: puts("you entered 3"); case 4: puts("you entered 4"); case 5: puts("you entered 5"); case 6: puts("you entered 6"); default: puts("you enter an integer less than 1 or more than 6"); 9

ΠΑΡΑΔΕΙΓΜΑ Δημιουργήστε ένα πρόγραμμα που να υλοποιεί μια υποτυπώδη αριθμομηχανή που μπορεί να εκτελέσει τις πράξεις της πρόσθεσης, αφαίρεσης, πολλαπλασιασμού και διαίρεσης δύο πραγματικών αριθμών με χρήση της εντολής switch. ΠΡΟΓΡΑΜΜΑ int main(void) float num1, num2; char op; printf("menou EPILOGWN\n"); printf("dwse + gia thn prothsesi\n"); printf("dwse * gia thn pollaplasiasmo\n"); printf("dwse / gia diairesi\n"); printf("dwse - gia afairesi\n"); printf("dwse <arithmo1> praksi <arithmo2>: "); scanf("%f %c %f", &num1, &op, &num2 ); switch (op) case '+': case 'A': printf ( " = %f", num1 + num2 ); case '-': case 'B': printf ( " = %f", num1 - num2 ); case '*': case 'C': printf ( " = %f", num1 * num2 ); case '/': case 'D': printf ( " = %f", num1 / num2 ); default: printf ( "Lathos eisodos\n\n" ); return 0; 10

Εντολή break: H εντολή break προκαλεί τον τερματισμό μιάς εντολής switch ή και μιάς επανάληπτικής διαδικασίας (που προκλήθηκε με εντολή for ή την while - δείτε την επόμενη ενότητα). Η εκτέλεση του προγράμματος συνεχίζεται μετά την εντολή switch ή την ενολή επανάληψης. while(...)......... /* H εκτέλεση του προγράμματος συνεχίζεται μετά το break */ 11