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

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

Eντολες Επαναληψης - Βροχοι (repetition and loops) while(){} for(){} do{ }while() τελεστες postfix/prefix (++, --,...) και συνθετοι τελεστες break (εξοδος.

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


Παρουσίαση με θέμα: "Eντολες Επαναληψης - Βροχοι (repetition and loops) while(){} for(){} do{ }while() τελεστες postfix/prefix (++, --,...) και συνθετοι τελεστες break (εξοδος."— Μεταγράφημα παρουσίασης:

1 Eντολες Επαναληψης - Βροχοι (repetition and loops) while(){} for(){} do{ }while() τελεστες postfix/prefix (++, --,...) και συνθετοι τελεστες break (εξοδος απο βροχο) –break και continue βιβλιοθηκη

2 Δομες Ελεγχου Ενα προγραμμα αποτελειται απο –Ακολουθιες πχ {εντολη;εντολη;…} –Εκλογηπχ if(){} –Επαναληψηπχ while{}

3 Χρηση Βροχων Για επαναληψη λειτουργικοτητας –μετρητης (counter) επαναλαβε εαν μετρητης μικροτερος(μεγαλυτερος) μια τιμης –σημαια (sentinel, flag) επανελαβε εαν διαφορο του EOF, -1 κτλ –συνθηκη/ελεγχος(conditional) επαναλαβε εφοσον συνθηκη δεν ισχυει –συνδυασμος (με χρηση λογικων τελεστων)

4 while Συνταξη: while (εκφραση) εντολη; while (εκφραση){ εντολη; ….. }

5 while (συν) Σημασια: οσον η τιμη της εκφρασης (συνθηκης) ειναι διαφορη του μηδεν εκτελα τις εξαρτομενες εντολες αλλιως συνεχισε με τις εντολες που ακουλουθουν το while block

6 while με μετρητη int x; x=0; while(x<5){ printf(“%d\n”,x); ++x; } αρχικοποιηση συνθηκη επαναληψης μεταβλητη που χρησιμοπoιειται για ελεγχο επαναληψης(control/ induction variable) ενημερωσης επομενο βημα

7 Tελεστες προ-σημειογραφική (prefix) ++i; i = i + 1; --i; i = i - 1; μετα-σημειογραφική(postfix) i++; i = i + 1; i--; i = i - 1;

8 Prefix vs Postfix i = 5; x = ++i; y = i++; x ειναι 6, y ειναι 6 και το i ειναι 7 Χρησιμοποιητε σε απλες εκφρασεις

9 Συνθετοι Τελεστες Αναθεσης i+=k; i = i + k; i*=k; i = i * k; iop= k; i = i op (k);

10 Shift/Bitwise Operators (appendix C) Βitwise: –Δυαδικοι: & | ^ (and, or, exclusive-or) 0x0ffff & 0x0ffa00030x3 –Μοναδιαιος: ~(complement) ~ 0x0000ffff0xffff0000 Shift –Δυαδικοι: > (shift left, shift right) 5 >> 1 (101)2 (10) 6<<2 (110)24 (11000)

11 while με σημαια Aθροισμα σειρας απροσδιοριστου μεγεθους που τερματιζεται με 0 int number, sum=0; scanf(“%d”,&number); /* diabase prwto stoixeio */ while(number != 0){ /*sinthiki epanalipsis*/ sum +=number; /*sum=sum+number */ scanf(“%d”,&number); /* διαβασε επομενο στοιχειο */ } printf(“To athroisma tis seiras einai %d\n”,sum);

12 while με συνθηκη Διαβασμα τιμης μεχρι να ικανοποιηθει συνθηκη (αργοτερα do-while) int number; printf(“Enter a possitive value: ”); scanf(“%d”,&number); /* diabase timh */ while(number<= 0){ /*sinthiki epanalipsis*/ printf(“Enter a possitive value: ”); scanf(“%d”,&number); /* διαβασε timi xana */ }

13 Nested while (φωλιασμενα) int i=0,j; while(i<5){ j=0; while(j<5){ printf(“%d-%d”,i,j); ++j; } printf(“\n”); ++i; }

14 Nested while (φωλιασμενα) int i=0,j; while(i<5){ j=0; while(j<=i){ printf(“%d-%d”,i,j); ++j; } printf(“\n”); ++i; }

15 Συνταξη for for(αρχικοποιηση; συνθηκη επαναληψης ; ενημερωση) εντολη; for(αρχικοποιηση; συνθηκη επαναληψης; ενημερωση){ εντολη; ….. }

16 Σημασια for for(Αρχικοποιηση; Συνθηκη επαναληψης ; Ενημερωση) εντολη; Αρχικοποιηση Συνθηκη εντολη Ενημερωση Συνθηκη εντολη Ενημερωση Συνθηκη

17 Παραδειγμα με for int x; for(x=0;x<5;++x){ printf(“%d\n”,x); } x x<5 εξοδος

18 Ομοιοτητα for με while int x; x=0; while(x<5){ printf(“%d\n”,x); ++x; } int x; for( x=0;x<5 ;++x){ printf(“%d\n”,x); } Οποιoδηποτε for μπορει να γραφει με while και οποιoδηποτε while με for

19 Παραδειγμα Γραψετε ενα προγραμμα που υπολογιζει και τυπωνει την τιμη του e x βαση της ακολουθηςεκφρασης- n ειναι ο αριθμος ορων 1 + x/1! + x 2 /2! + x 3 /3! +…+ x n /n! Το προγραμμα διαβαζει τις τιμες x και n απο τον χρηστη. Νοte: x 0 /0! + x 1 /1! + x 2 /2! + x 3 /3! +…+ x n /n!

20 Υπολογισμος Τι πρεπει να γινει? –Δημιουργια n+1 ορων (0 μεχρι n) –Aθροισμα των ορων

21 exp term(0,x) float term(int n, float x) term(1,x)term(2,x)term(3,x) exp

22 Δημιουργια Ορου ν Συναρτηση float term(n,x) επιστρεφει τον n ορο της σειρας για την τιμη x

23 Υπολογισμος float exp; int ith_term; exp =0; ith_term = 0; while(ith_term <= n){ exp += term(ith_term,x); ++ith_term; }

24 term(n,x) - x n /n! Πως πρεπει να γινει? –υπολογισμος δυναμης –υπολογισμος παραγωντικου Χρησιμες Συναρτησεις –x n float pow(x,n); –n! int factorial(n); n! = n n-1 … 3 2, 0!=1!=1 Οριζεται στην math.h Need user definition

25 float term (int n, float x) { return pow(x,n)/factorial(n); }

26 factorial * * * float factorial(int n)

27 float factorial (int n) { int i; float f; f=1; i=2;/* if i=0 or 1 return 1*/ while(i<=n){ f *= i; ++i; } return f; }

28 Trace Table for Factorial Για n: 0,1,2 … 5

29 float factorial (int n) { int i; float f; /* if i=0 or 1 return 1*/ for(f=1,i=2;i<=n;++i){ f *= i; } return f; }

30 float factorial (int n) { int i; float f; /* if i=0 or 1 return 1*/ for(f=1,i=2;i<=n;f*=i,++i); return f; }

31 do-while συνταξη do εντολη; while(συνθηκη); do{ εντολη; }while(συνθηκη);

32 do-while σημασια Εκτελα το σωμα Εφοσον η συνθηκη ισχυει επανελαβε την εκτελεση των εντολων στο σωμα του βροχου for και while το σωμα μπορει να μην εκτελεστει, ενω στο do-while εκτελειται τουλαχιστο μια φορα

33 Παραδειγμα int a,b; do{ printf(  Enter values for A and B where A < B:  ); scanf(  %d%d , &a, &b); } while (a >= b);

34 Παραδειγμα int number; printf(“Enter a possitive value: ”); scanf(“%d”,&number); while(number<= 0){ printf(“Enter a possitive value: ”); scanf(“%d”,&number); } int number; do{ printf(“Enter a possitive value: ”); scanf(“%d”,&number); while(number<= 0);

35 Απειροι Βροχοι –while(1){} –while(x=1){} –for(;i=1;){} –do{}while(x=13); –Μη ή λανθασμενη ενημερωση της μεταβλητης ελεγχου int i = 0, n= 10; while(i

36 Κοινα Λαθη Σύγχυση ανάμεσα στις εντολές if και while: if (συνθήκη) εντολή while (συνθήκη) εντολή while, do-while: παράλειψη παρενθέσεων γύρω από τις συνθήκες for: παράλειψη του χαρακτήρα ; Σωμα συναρτησης: while(x<0) count +=x; ++x; printf(“%d\n”,x);

37 Κοινα Λαθη Συνθετοι τελεστες:a*=b+c;σημαίνει a = a*(b + c); όχι a = a * b + c; Χρήση ++, , και σύνθετης ανάθεσης (+= κτλ) σε σύνθετες εκφράσεις Χρήση του τελεστή != με τιμες τύπου float και double πρέπει να αποφεύγεται, π.χ. –while (balance != 0.0){}

38 Αριθμος Λεξεων Γραψετε ενα προγραμμα που διαβαζει ενα κειμενο απο την εισοδο και υπολογιζει και τυπωνει τον αριθμο λεξεων.

39 39 Αριθμος Λεξεων Τι πρεπει να γινει: –Διαβασμα ακολουθιας χαρακτηρων –Μετρηση Γεγονοτος: Λεξης Τι ειναι λεξη:συνεχομενη σειρα χαρακτηρων Τα αλλα τι ειναι? ‘\n’, ‘\t’, ‘ ’ Μετασχηματισμος σε διαστημα ή χαρακτηρα –Μετρουμε: μετακινηση απο ασπρο διαστημα σε λεξη (ή απο λεξη σε ασπρο διαστημα) Που ειμαστε προηγουμενως/τωρα:διαστημα ή λεξη- εννοια σημαίας (flag)

40 int main() { /* xρηση δυο σημαιων -πριν, τωρα (διαστημα η λεξη)*/ /* πριν = διαστημα --- αρχικοποιηση*/ /* διαβασε καθε χαρακτηρα απο εισοδο μεχρι ΕΟF καθε φορα επαναλαβε τα πιο κατω*/ /* που ειμαστε τωρα (λεξη ή διαστημα) */ /* εαν πριν σε διαστημα και τωρα σε λεξη τοτε μετρα λεξη*/ /*πριν παιρνει τιμη του τωρα */ return 0; }

41 /* convert stream returns WHITE_SPACE gia ‘\n’ ‘\t’ kai ‘ ’ gia oles tis alles periptwsis NON_WHITE_SPACE */ int main() {int c, nw; int where_before, where_now; /* simaies */ where_before = WHITE_SPACE; nw = 0; while((c=getchar()) != EOF){ where_now = convert_stream(c); if ( where_before == WHITE_SPACE && where_now == NON_WHITE_SPACE) nw = nw + 1; where_before = where_now; } printf(“The number of words in the input is %3d.\n”,nw); return 0; }

42 break (προωρη εξοδος) while(count


Κατέβασμα ppt "Eντολες Επαναληψης - Βροχοι (repetition and loops) while(){} for(){} do{ }while() τελεστες postfix/prefix (++, --,...) και συνθετοι τελεστες break (εξοδος."

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


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