Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος"— Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

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

8 Παράδειγμα /* Δείχνει την προθεματική και επιθεματική μορφή του μοναδιαίου τελεστή */ #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; }

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

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

11 Παράδειγμα (συνέχεια)
/* Δείχνει τη χρήση του τελεστή υπολοίπου */ /* Εισάγουμε τον αριθμό δευτερολέπτων και μετατρέπει */ /* σε ώρες, λεπτά και δευτερόλεπτα. */ #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);

12 Παράδειγμα (συνέχεια)
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; }

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

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

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

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

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

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

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

20 Παράδειγμα /* Δείχνει τη χρήση του 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);

21 Παράδειγμα (συνέχεια)
/* Έλεγχος των τιμών και εκτύπωση αποτελεσμάτων */ 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; }

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

23 Παράδειγμα (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);

24 Παράδειγμα (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; }

25 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""); }

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

27 Παράδειγμα /* Υπολογισμός σχεσιακών εκφράσεων */
#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; }

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

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

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

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

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

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

34 Παράδειγμα #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; }

35 Παράδειγμα Προσοχή στον τελεστή άρνησης 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; }

36 Τελεστές Σύνθετης Εκχώρησης
Ισοδύναμο με 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)

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

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

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

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

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

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

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

44 Λίγα για πίνακες (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;

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

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

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

48 Δηλώσεις 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"); }

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

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

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

52 Δηλώσεις 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++]);

53 Δηλώσεις 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"); }

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

55 Δήλωση 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; }

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

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

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

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

60 Βρείτε το σφάλμα 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 */

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

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

63 Η εντολή 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) }

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


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google