Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

Προγραμματισμός Ι Προτάσεις ελέγχου ροής Ο πιο συνηθισμένος τρόπος εκτέλεσης είναι ο ακολουθιακός: δύο ή περισσότερες προτάσεις βρίσκονται διατεταγμένες.
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Τύποι πραγματικών αριθμών
Εντολες Επιλογης (Selection)
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Προγραμματισμός στο ΜatLab
ΤΕΛΕΣΤΕΣ - ΕΚΦΡΑΣΕΙΣ ΜΑΘΗΜΑ 4.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
ΤΕΛΕΣΤΕΣ II ΜΑΘΗΜΑ 5.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
Δηλαδή οι σημαντικοί δεν ασχολούνται με μικροπράγματα.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΜΑΘ 3122/106 – Γλώσσα Προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ-3122/106 Γλώσσα Προγραμματισμού Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
Διαφάνειες παρουσίασης #2
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Βασικές έννοιες προγραμματισμού Κεφάλαιο 7 ο. Βασικές έννοιες προγραμματισμού Αλφάβητο και τύποι δεδομένων Σταθερές και μεταβλητές Τελεστές, συναρτήσεις.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΚΕΦΑΛΑΙΟ 2ο - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Αντικειμενοστραφής Προγραμματισμός Ι
Δεδομένα, μεταβλητές, υπολογισμοί
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Βασικές Έννοιες Εισόδου-Εξόδου Πίνακες και Δείκτες
Δομές.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τύποι Μεταβλητών.
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Οι διάφορες εκδοχές της
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Εισαγωγή στον Προγ/μό Υπολογιστών
Τελεστές και ή όχι Για την εκτέλεση αριθμητικών πράξεων
ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Εντολές και δομές αλγορίθμου
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Κυριάκου Νικόλαος Πληροφορικής ΠΕ-20
Τύποι δεδομένων και τελεστές,
Είσοδος/έξοδος χαμηλού επιπέδου
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος

Προτάσεις Εντολή (Πρόταση): μια πλήρης οδηγία προς τον υπολογιστή. Η εντολή τελειώνει με ; Ο μεταγλωττιστής δεν λαμβάνει υπόψη τα κενά διαστήματα και τους χαρακτήρες στηλοθέτη (tabs), εκτός από συμβολοσειρές. Τι συμβαίνει με την ακόλουθη δήλωση; printf( "Καλημέρα" );

Σύνθετες Προτάσεις Σύνθετη πρόταση (ενότητα ή μπλοκ): ομάδα προτάσεων της C μέσα σε άγκιστρα { } Παράδειγμα: { printf("Καλημέρα\n"); printf("Καληνύχτα"); }

Προσοχή Κρατήστε το στυλ γραφής σταθερό Διατηρείστε τη στοίχιση σε μια ενότητα Μην απλώνετε μια απλή πρόταση σε πολλές γραμμές

Εκφράσεις Έκφραση: οτιδήποτε υπολογίζει μια αριθμητική τιμή x = 5; x = y * 2; z = y * 2; x = z = y * 2; x = 5 * (y + 20);

Τελεστές Τελεστής εκχώρησης (=) Μαθηματικοί τελεστές Σχεσιακοί τελεστές Λογικοί τελεστές

Μαθηματικοί Τελεστές Μοναδιαίοι Μαθηματικοί Τελεστές ++, -- : Αυξάνει/μειώνει κατά ένα τον τελεστέο προθεματικά: τροποποιούν τον τελεστέο πριν χρησιμοποιηθεί επιθεματικά: τροποποιούν τον τελεστέο αφού χρησιμοποιηθεί

Παράδειγμα /* Δείχνει την προθεματική και επιθεματική μορφή του μοναδιαίου τελεστή */ #include <stdio.h> int main(void) { int a, b; /* Θέσε a και b ίσους με 5 */ a = b = 5; /* Εκτύπωσε τους μειώνοντας κατά ένα κάθε φορά */ /* Προθεματική μορφή για b, επιθεματική για a */ printf("\n%d %d", a--, --b); return 0; }

Μαθηματικοί Τελεστές Δυαδικοί μαθηματικοί τελεστές Πρόσθεση + Πρόσθεση + Αφαίρεση - Πολλαπλασιασμός * Διαίρεση / Υπόλοιπο διαίρεσης (modulo) %

Παράδειγμα Να γραφεί ψευδοκώδικας και το αντίστοιχο πρόγραμμα σε C το οποίο θα διαβάζει από το πληκτρολόγιο αριθμό δευτερολέπτων (μέχρι 65000) και θα επιστρέφει τον αριθμό σε ώρες, λεπτά και δευτερόλεπτα.

Παράδειγμα (συνέχεια) /* Δείχνει τη χρήση του τελεστή υπολοίπου */ /* Εισάγουμε τον αριθμό δευτερολέπτων και μετατρέπει */ /* σε ώρες, λεπτά και δευτερόλεπτα. */ #include <stdio.h> /* Ορισμός σταθερών */ #define SECS_PER_MIN 60 #define SECS_PER_HOUR 3600 int main(void) { unsigned seconds, minutes, hours, secs_left, mins_left; /* Εισαγωγή αριθμού δευτερολέπτων */ printf("Enter number of seconds (< 65000): "); scanf("%d", &seconds);

Παράδειγμα (συνέχεια) hours = seconds / SECS_PER_HOUR; minutes = seconds / SECS_PER_MIN; mins_left = minutes % SECS_PER_MIN; secs_left = seconds % SECS_PER_MIN; printf("%u seconds is equal to ", seconds); printf("%u h, %u m, and %u s", hours, mins_left, secs_left); return 0; }

Παράδειγμα (συνέχεια) Έστω ότι δίνουμε 10000 δευτερόλεπτα hours = seconds / SECS_PER_HOUR = 10000 / 3600 = 2 minutes = seconds / SECS_PER_MIN = 10000/60 = 166; mins_left = minutes % SECS_PER_MIN = 166 % 60 = 46 ; Ισοδύναμο με το (10000 - 2* 3600) / 60 secs_left = seconds % SECS_PER_MIN = 10000 % 60 = 40;

Προτεραιότητα τελεστών x = 4 + 5 * 3; Ποιο είναι το αποτέλεσμα; Σειρά εκτέλεσης: ++, -- * / % + - Συντελεστές στο ίδιο επίπεδο: από αριστερά στα δεξιά

Προσοχή Χρησιμοποιείτε παρενθέσεις! Βοηθούν στην αναγνωσιμότητα των εκφράσεων Προτιμήστε να διασπάσετε μια έκφραση σε δύο ή περισσότερες εντολές

Σχεσιακοί τελεστές Ίσο == Μεγαλύτερο > Μικρότερο < Ίσο == Μεγαλύτερο > Μικρότερο < Μεγαλύτερο ή ίσο >= Μικρότερο ή ίσο <= Άνισο (διαφορετικό) !=

Παράδειγμα Τι αποτέλεσμα έχουν οι ακόλουθες εκφράσεις; 5 == 1 5 > 1 5 != 2 (5 + 10) == (3 * 5)

Η εντολή if if (έκφραση) εντολή; if (έκφραση) { εντολή1; εντολή2; … εντολήΝ; }

Παράδειγμα Να γραφεί ψευδοκώδικας και το αντίστοιχο πρόγραμμα σε C το οποίο θα διαβάζει από το πληκτρολόγιο δύο αριθμούς χ και ψ και θα τυπώνει ποιος είναι μεγαλύτερος (ή αν είναι ίσοι!)

Παράδειγμα /* Δείχνει τη χρήση του if */ #include <stdio.h> int main(void) { int x, y; /* Εισαγωγή των αριθμών */ printf("\nInput an integer value for x: "); scanf("%d", &x); printf("\nInput an integer value for y: "); scanf("%d", &y);

Παράδειγμα (συνέχεια) /* Έλεγχος των τιμών και εκτύπωση αποτελεσμάτων */ if (x == y) printf("x is equal to y"); if (x > y) printf("x is greater than y"); if (x < y) printf("x is smaller than y"); return 0; }

Εάν .. αλλιώς if (έκφραση) { εντολές } else {

Παράδειγμα (1/2) /* Παράδειγμα χρήσης if .. else */ #include <stdio.h> int main(void) { int x, y; /* Εισαγωγή αριθμών */ printf("\nInput an integer value for x: "); scanf("%d", &x); printf("\nInput an integer value for y: "); scanf("%d", &y);

Παράδειγμα (2/2) /* Έλεγχος τιμών και εκτύπωση αποτελεσμάτων */ if (x == y) printf("x is equal to y"); else if (x > y) printf("x is greater than y"); printf("x is smaller than y"); return 0; }

if … else ... Το else συσχετίζεται με το πλησιέστερο if if (sex == 'M') if (age >= 18) printf("Must join the army\n"); else printf("Women don't have to join the army\n"); Για διαφορετική αντιστοίχιση χρησιμοποιήστε αγκύλες if (sex == 'M'){ printf(""Must join the army\n""); }

Υπολογισμός Σχεσιακών Εκφράσεων Οι εκφράσεις με σχεσιακούς τελεστές δίνουν αποτέλεσμα! 0 -> ψευδής μη μηδενικό (συνήθως 1) -> αληθής Δείτε το επόμενο παράδειγμα και υπολογίστε τα αποτελέσματα

Παράδειγμα /* Υπολογισμός σχεσιακών εκφράσεων */ #include <stdio.h> int main(void) { int a; a = (5 == 5); /* Τι αποτέλεσμα δίνει; */ printf("\na = (5 == 5)\na = %d", a); a = (5 != 5); /* Τι αποτέλεσμα δίνει; */ printf("\na = (5 != 5)\na = %d", a); a = (12 == 12) + (5 != 1); /* Τι αποτέλεσμα δίνει;*/ printf("\na = (12 == 12) + (5 != 1)\na = %d", a); return 0; }

Συνηθισμένα λάθη Χρήση τελεστή ανάθεσης αντί του τελεστή ισότητας if (x = 7) printf("x είναι ίσο με 7"); και αντίστροφα x == 7;

Προτεραιότητες… Οι μαθηματικοί τελεστές έχουν μεγαλύτερη προτεραιότητα από τους σχεσιακούς τελεστές Οι τελεστές < <= > >= έχουν προτεραιότητα μεγαλύτερη των != == Πώς θα υπολογισθεί η ακόλουθη έκφραση: x == y > z

Προσοχή Μη βάζετε εντολές εκχώρησης σε προτάσεις if Μη χρησιμοποιείτε τελεστή ανισότητας σε εντολή if else Προτιμήστε το if (a == 1) … else … έναντι του if (a != 1) … else … Προσοχή στις συγκρίσεις ισότητας με πραγματικούς αριθμούς if (100.0 + 100.0 * 0.08 == 108.0) printf("Equal\n"); Ο έλεγχος ισότητας των a και b πρέπει να γράφεται ως if (fabs(a - b) < 0.0001)

Λογικοί Τελεστές AND && OR || NOT ! Τι αποτελέσματα θα δώσουν οι ακόλουθες εκφράσεις; (5 == 5) && (6 != 2) (5 > 1) || (6 < 1) (2 == 1) && (5 == 5) !(5 == 4)

Προσοχή Μια τιμή μηδέν αναπαριστά το ψευδές Μια μη μηδενική τιμή αναπαριστά το αληθές Τι θα συμβεί κατά την εκτέλεση της επόμενης έκφρασης; x = 128; if (x) printf("%d", x);

Και άλλες προτεραιότητες… Η προτεραιότητες τελεστών είναι: τελεστής άρνησης (!) μαθηματικοί τελεστές σχεσιακοί τελεστές && || ΄Δείτε το ακόλουθο παράδειγμα

Παράδειγμα #include <stdio.h> /* Αρχικοποίηση μεταβλητών. Σημειώστε ότι η c δεν είναι μικρότερη της d, συνθήκη που εξετάζουμε */ int main(void){ int a = 5, b = 6, c = 5, d = 1; int x; /* Εξέταση της έκφρασης χωρίς παρενθέσεις */ x = a < b || a < c && c < d; printf("\n Without parentheses the expression evaluates as %d", x); /* Εξέταση της έκφρασης με παρενθέσεις */ x = (a < b || a < c) && c < d; printf("\n With parentheses the expression evaluates as %d", x); return 0; }

Παράδειγμα Προσοχή στον τελεστή άρνησης int main(void){ int a = 5, b = 6; int x; /* Εξέταση της έκφρασης χωρίς παρενθέσεις */ x = ! a < b; printf("\n Without parentheses the expression evaluates as %d", x); x = ! (a < b); printf("\n With parentheses the expression evaluates as %d", x); return 0; }

Τελεστές Σύνθετης Εκχώρησης Ισοδύναμο με x *= y x = x * y y -= y x = x - y a /= b a = a / b a += 1 a = a + 1 y %= 5 y = y % 5 x += y / 8 x = x + (y / 8)

Τελεστής συνθήκης έκφραση1 ? έκφραση2 : έκφραση 3 εάν έκφραση1 αληθής τότε όλη η έκφραση παίρνει την τιμή της έκφραση2 αλλιώς παίρνει την τιμής της έκφραση3 Π.χ. z = (x > y)? x : y; Ποια είναι η αντίστοιχη έκφραση με if .. else; Η προτεραιότητά του είναι μικρότερη απ’ όλους τους τελεστές, εκτός από αυτούς της εκχώρησης και σύνθετης εκχώρησης

Τελεστής Κόμμα x = (a++, b++); Υπολογίζονται και οι δύο εκφράσεις από αριστερά στα δεξιά Ολόκληρη η έκφραση αποτιμάται στην τιμή της δεξιάς έκφρασης Έχει τη χαμηλότερη προτεραιότητα απ’ όλους τους τελεστές

Τελεστές επιπέδου bit Σύζευξη επιπέδου bit (bitwise AND) & Εφαρμόζονται σε ακέραιες ποσότητες (char, short, int, long, long long) Σύζευξη επιπέδου bit (bitwise AND) & Διάζευξη επιπέδου bit (bitwise OR) | Αποκλειστική διάζευξη επιπέδου bit (xor) ^ Συμπλήρωμα ως προς 1 ~

Τελεστές επιπέδου bit Παραδείγματα 22 & 5 = 0001 0110 & 0000 0101 = 0000 0100 = 4 22 | 5 = 0001 0110 | 0000 0101 = 0001 0111 = 23 22 ^ 5 = 0001 0110 ^ 0000 0101 = 0001 0011 = 19 ~ 22 = ~ 0001 0110 = 1110 1001 = 233 (unsigned) -23 (signed) ΠΡΟΣΟΧΗ: Στο if ΠΑΝΤΑ χρησιμοποιούμε τους λογικούς τελεστές (&&, ||, !) ΟΧΙ τους τελεστές επιπέδου bit

Προσοχή! ΜΗΝ συγχέετε τους λογικούς τελεστές &&, ΙΙ και ! με τους τελεστές επιπέδου bit &, | και ~ 9 && 6  αληθές 9 & 6  ψευδές ! 1 = ψευδές ~1 = αληθές (-2)

Λίγα για πίνακες (1/3) Πίνακας (διάταξη): μια ομάδα στοιχείων ιδίου τύπου Τα στοιχεία διαχωρίζονται μεταξύ τους με χρήση δείκτη Πίνακας: μια ή περισσότερες διαστάσεις Ορισμός: int data[1000]; Ορίζει έναν πίνακα με 1000 θέσεις ακεραίων Το πρώτο στοιχείο βρίσκεται στη θέση data[0]

Λίγα για πίνακες (2/3) Μπορούμε να δώσουμε τιμή σε μια θέση του πίνακα: data[10] = 12; ή εάν έχουμε ορίσει int count = 10; data[count] = 12; Ποιος είναι ο δείκτης του τελευταίου στοιχείου του πίνακα data[] ;

Λίγα για πίνακες (3/3) Ο πίνακας μπορεί να έχει πάνω από μία διαστάσεις char crossword[15][15]; πίνακας χαρακτήρων 15 γραμμών και 15 στηλών int a[50][100]; πίνακας ακεραίων με 50 γραμμές και 100 στήλες double b[10][20][30]; Αναφερόμαστε σε ένα στοιχείο του πίνακα παραθέτοντας δείκτες για όλες τις διαστάσεις crossword[3][5] = 'A'; b[2][7][9] = 7.2;

Δομές επανάληψης Επανάληψη εντολών (for, while και do .. while)

Η εντολή while Αποτιμάται η συνθήκη Εάν είναι αληθής εκτελείται η εντολή (ή οι εντολές) Η εκτέλεση επιστρέφει στο βήμα 1

Δηλώσεις while count = 1; while (count <= 20) { printf("%d\n", count); count++; } int choice = 0; while (choice != 99) scanf("%d", &choice);

Δηλώσεις while int values[100]; int counter = 0; int choice = 0; while (counter < 100 && choice != 99) { printf("Enter the %d number ", counter + 1); scanf("%d", &choice); values[counter] = choice; counter++; printf("\n"); }

Δηλώσεις while while (number < 1 || number > 10) { printf("Enter a number between 1 and 10"); scanf("%d", &number); printf("\n"); }

For H for έχει τη δομή: for (αρχική έκφραση; συνθήκη; αύξηση) { σώμα επανάληψης; /* εντολές */ } Αποτιμάται η αρχική έκφραση Αποτιμάται η συνθήκη Εάν είναι ψευδής τερματίζεται η εκτέλεση της επανάληψης και συνεχίζεται το πρόγραμμα με την επόμενη εντολή που ακολουθεί την επανάληψη Εάν είναι αληθής εκτελείται το σώμα της επανάληψης Εκτελείται η αύξηση Η εκτέλεση επιστρέφει στο βήμα 2

Παράδειγμα /* Δείχνει μια απλή πρόταση for */ #include <stdio.h> int main(void){ int count; /* Εκτυπώνει τους αριθμούς 1 μέχρι 20 */ for (count = 1; count <= 20; count++) printf("%d\n", count); return 0; }

Δηλώσεις for for (count = 100; count > 0; count--) int count = 1; for ( ; count <= 20; count++) count = 1; for (printf("Επανάληψη…."); count <= 20; count++) for (count = 0; count < 1000 && array[count] !=0; count++) printf("%d\n", array[count]); for (count = 0; count < 1000 && array[count]; ) printf("%d\n", array[count++]);

Δηλώσεις for int choice = 1; for ( ; choice != 99; ) scanf("%d", &choice); /**************/ /* nested for */ for (row = 10; row > 0; row--){ for (col = 35; col > 0; col--) printf("X"); printf("\n"); }

Η εντολή do .. while Εκτελείται η εντολή Αποτιμάται η συνθήκη Εάν είναι αληθής επιστρέφει στο βήμα 1

Δήλωση do .. while int get_menu_choice(void) { int choice = 0; do { printf("\n************************\n"); printf("1. Add a Record\n"); printf("2. Change a Record\n"); printf("3. Delete a Record\n"); printf("4. Quit\n"); printf("\nEnter your choice: "); scanf("%d", &choice); } while (choice < 1 || choice > 4) return choice; }

Προσοχή Μη φτιάχνετε τεράστιες προτάσεις for χρησιμοποιώντας τον τελεστή , Προτιμήστε το while (x != 0) αντί του while (x) Χρησιμοποιείτε τη for αντί της while αν θέλετε να δώσετε αρχικές τιμές και την αύξηση σε ένα βρόχο

Ένθεση Επαναλήψεων Επιτρέπεται η ένθεση βρόχων Πρέπει ο εξωτερικός να περιλαμβάνει τον εσωτερικό εξ ολοκλήρου for (count =1; count < 100; count++) { do { printf("test"); scanf("%d", &x); } /* Τέλος του for */ } while (x != 0); /* Τέλος του while */

Ένθεση Επαναλήψεων for (count =1; count < 100; count++) { do { printf("test"); scanf("%d", &x); } while (x != 0); /* Τέλος του while */ } /* Τέλος του for */

Ερωτήσεις Ποια πρόταση επιλέγουμε μεταξύ των for, while και do .. while; Μπορούμε να ενθέσουμε διαφορετικές εντολές επανάληψης; Ποια είναι η τιμή του δείκτη του πρώτου στοιχείου ενός πίνακα;

Βρείτε το σφάλμα do { printf("Enter a number\n"); printf("Enter 0 to terminate \n"); printf("You Entered %d \n", x); if (x) printf("I Quit … \n"); } while (x != 0); /* Τέλος του while */

Βρείτε το σφάλμα for (count = 1; count < MAXVALUES; count++); printf("Counter = %d\n", count);

Η εντολή switch switch (συνθήκη) { case πρότυπο1: εντολές; break; ….. default: εντολές; }

Η εντολή switch printf("Enter season number (1-4): "); scanf("%d\n", &season); switch (season) { case 1: printf("Winter\n"); break; case 2: printf("Spring\n"); case 3: printf("Summer\n“); case 4: printf("Autumn\n"); default: printf("Wrong season number (%d)\n“, season) }

Η εντολή switch switch (choice) { case 1: { addRecord(); break; } changeRecord(); case 3: { deleteRecord(); case 4: { quitProgram(); default: printErrorMessage();