Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Advertisements

1 Ολυμπιάδα Πληροφορικής Μάθημα 3. 2 Στόχοι μαθήματος Δομή Επανάληψης Εντολή while Εντολή for.
Παράδειγμα 1:Υπολογισμός αθροίσματος αριθμών με επαναληπτική εντολή : για...από...μέχρι(for ..to) Να βρεθεί και να εκτυπωθεί το άθροισμα των 100 ακεραίων.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Διδακτική Πληροφορικής
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
Δομές Δεδομένων και Αρχεία Ενότητα 4: Ευρετηριασμένα Αρχεία Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Δομές Δεδομένων και Αρχεία
Έλεγχος Ροής με την Εντολή Επανάληψης FOR 1/9
Δομές Δεδομένων και Αρχεία Ενότητα 8: Η δομή Ουρά Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Χρονικός Προγραμματισμός Έργων (Εργαστήριο) Ενότητα 5: Αναθέσεις σε πόρους Κλεάνθης Συρακούλης, Επίκουρος Καθηγητής, Τμήμα Διοίκησης Επιχειρήσεων, T.E.I.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Διοίκηση Ανθρωπίνων Πόρων Ενότητα 3: Προσέλκυση Ανθρώπινου Δυναμικού. Διδάσκων: Γεώργιος Ασπρίδης, Επίκουρος Καθηγητής. Τμήμα Διοίκησης Επιχειρήσεων.
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 12 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (ΙΙI) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Προγραμματισμός κινητών συσκευών
Τεχνολογία και Προγραμματισμός Υπολογιστών
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη. Αθήνα, 2015.
Αντικειμενοστραφής Προγραμματισμός Ι
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
Προγραμματισμός κινητών συσκευών
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
Ενισχυτική διδασκαλία
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
Προγραμματισμός Διαδικτύου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Ανάπτυξη Εκπαιδευτικού Λογισμικού
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
Ενότητα 5 : Δομές Ελέγχου της γλώσσας PHP Ιωάννης Τσούλος
Συστήματα Αυτομάτου Ελέγχου II
Ενότητα 4 : Τελεστές της γλώσσας PHP Ιωάννης Τσούλος
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επανάληψη.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Εισαγωγή στους Η/Υ Ενότητα 12: Το διάγραμμα ροής και η λειτουργία του
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΕνΟτητα # 8: Ms Word V CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
Ενότητα 3 : Παραδείγματα προγραμματισμού Ιωάννης Έλληνας Τμήμα Η/ΥΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(10)
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανάπτυξη Εκπαιδευτικού Λογισμικού
Προγραμματισμός & Εφαρμογές Η/Υ (Θ)
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
Ανάπτυξη Εκπαιδευτικού Λογισμικού
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
ΑΣΚΗΣΕΙΣ C.
ΑΣΚΗΣΕΙΣ.
Μεταγράφημα παρουσίασης:

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.

Άδειες χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην παρακάτω άδεια χρήσης Creative Commons (C C): Αναφορά δημιουργού (B Y), Μη εμπορική χρήση (N C), Μη τροποποίηση (N D), 3.0, Μη εισαγόμενο. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

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

Σκοποί ενότητας Ο αναγνώστης να μπορεί να: 1) διαχειρίζεται με ευχέρεια τις επαναληπτικές δομές της C. 2) δημιουργεί πιο σύνθετα προγράμματα. Επαναληπτικές Δομές4

Περιεχόμενα ενότητας 1) Η πρόταση while 2) Ο βρόγχος do-while 3) Η πρόταση for 4) Επιλογή επαναληπτικής δομής 5) Συνοπτικά Επαναληπτικές Δομές5

Γρήγορος πίνακας αναφοράς σύνταξης (1) ΕντολήΣύνταξηΠαραδείγματα if-elseif (λογική έκφραση) πρόταση (εις) (λογική έκφραση = ΑΛΗΘΉΣ); else πρόταση (εις) (λογική έκφραση = ΨΕΥΔΉΣ); if (a > b) { c = (a + b); printf(“\n c = %d”, c); } else printf (“\n Καμία ενέργεια”); switchswitch (τιμή ελέγχου) { case τιμή 1: πρόταση (εις); break; case τιμή 2: πρόταση (εις); break; default : πρόταση (εις); break; } switch (traffic_light) { case ‘Κ’: case ‘κ’: printf(“\n Κόκκινο-Σταματήστε”); break; case ‘Π’: case ‘π’: printf(“\n Πράσινο-Περάστε”); break; } Επαναληπτικές Δομές6

Η πρόταση while  Επιβάλει την επανάληψη μίας ή και περισσοτέρων προτάσεων, όσο η έκφραση ελέγχου παραμένει ΑΛΗΘΉΣ: Η σύνταξη της while είναι:  while (έκφραση ελέγχου)  { (άγκιστρο)  πρόταση 1;  πρόταση 2;  ……………  πρόταση N;  } (άγκιστρο) Επαναληπτικές Δομές7

Παράδειγμα με while  counter = 0; /* μετρητής */  while (counter < 11) {  a = counter * counter;  printf(“\n %d : %d”, counter, a);  counter++;  }  printf(“\n\n Ο μετρητής τώρα είναι %d \n”, counter); Επαναληπτικές Δομές8

Πρόγραμμα με while: Τρέχων άθροισμα  Γράψτε ένα πρόγραμμα, το οποίο να διαβάζει, ένα σύνολο αριθμών από το πληκτρολόγιο, και να εμφανίζει το τρέχων άθροισμά τους. Το πρόγραμμα να τερματίζει, όταν εισαχθεί ο αριθμός 0. Επαναληπτικές Δομές9

Λύση (με την while) #include int main() { int total = 0, num = 1; while (num != 0) { printf(“\n Παρακαλώ δώστε έναν αριθμό (0 για τέλος):”); scanf(“%d”, &num); total += num; printf(“\n Τρέχων άθροισμα %d”, total); } printf(“\n\n Το τελικό άθροισμα είναι %d \n\n”, total); return 0; } Επαναληπτικές Δομές10

Ο βρόγχος do-while  Παρόμοια με τον βρόγχο while, ο do-while βρόγχος, ελέγχει την έκφραση ελέγχου, μετά την εκτέλεση των προτάσεων που περιέχονται στον βρόγχο. Η σύνταξη της do-while, είναι:  do  { (άγκιστρο)  πρόταση 1;  πρόταση 2;  ……………  πρόταση N;  } (άγκιστρο) while (έκφραση ελέγχου); Επαναληπτικές Δομές11

Παράδειγμα με do-while  counter = 0; /* μετρητής */  do  {  a = counter * counter;  printf(“\n %d : %d”, counter, a);  counter++;  } while (counter < 11);  printf(“\n\n Ο μετρητής τώρα είναι %d \n”, counter); Επαναληπτικές Δομές12

Πρόγραμμα με do-while: Τρέχων άθροισμα  Γράψτε ένα πρόγραμμα, το οποίο να διαβάζει, ένα σύνολο αριθμών από το πληκτρολόγιο, και να εμφανίζει το τρέχων άθροισμά τους. Το πρόγραμμα να τερματίζει, όταν εισαχθεί ο αριθμός 0. Επαναληπτικές Δομές13

Λύση (με την do-while) #include int main() { int total = 0, num; do { printf(“\n Παρακαλώ δώστε έναν αριθμό (0 για τέλος):”); scanf(“%d”, &num); total += num; printf(“\n Τρέχων άθροισμα %d”, total); } while (num != 0); printf(“\n\n Το τελικό άθροισμα είναι %d \n\n”, total); return 0; } while (num != 0) { printf(“\n Παρακαλώ δώστε έναν αριθμό (0 για τέλος):”); scanf(“%d”, &num); total += num; printf(“\n Τρέχων άθροισμα %d”, total); } Επαναληπτικές Δομές14

Η πρόταση for  Εκτελεί μία ή περισσότερες προτάσεις για ένα προκαθορισμένο αριθμό επαναλήψεων. Η σύνταξη της for είναι:  for, (Αρχική έκφραση; Έκφραση συνέχισης; Έκφραση μεταβολής).  { (άγκιστρο)  πρόταση 1;  πρόταση 2;  ……………  πρόταση N;  } (άγκιστρο) Επαναληπτικές Δομές15

Παράδειγμα με for  for (counter=0; counter<11; counter++)  {  a = counter * counter;  printf(“\n %d : %d”, counter, a);  }  printf(“\n\n Ο μετρητής τώρα είναι %d \n”, counter); Επαναληπτικές Δομές16

Πρόγραμμα: Εμφάνιση πίνακα τετραγώνων και κύβων  printf(“\n Παρακαλώ εισάγετε έναν αριθμό:”);  scanf(“%d”, &n);  printf(“\n Αριθμός Τετράγωνο Κύβος”);  printf(“\n ”);  for (i=1; i<=n; i++)  {  s = i * i;  c = s * i;  printf(“\n %10d, %10d, %10d”, i, s, c);  } Επαναληπτικές Δομές17

Άσκηση: Αναμενόμενη έξοδος?  #include  int main()  {  int i, j = 5;  for (i=10; i>0; j*=2, i/=2)  printf(" %5d %5d \n", i, j);  printf("\n\n %5d %5d \n\n\n", i, j);  return 0;  } Επαναληπτικές Δομές18

Έξοδος ij Επαναληπτικές Δομές19

Άσκηση: Χρήση της for αντί while Να ξαναγράψετε το ακόλουθο με χρήση του βρόγχου for: total = 0; i = 0; while (i < 10) { scanf(“%d”, &n); total += n; i++; } /* for loop */ total = 0; for (i=0; i<10; i++) { scanf(“%d”, &n); total += n; } Επαναληπτικές Δομές20

Γρήγορος πίνακας αναφοράς σύνταξης (2) ΕντολήΣύνταξηΠαραδείγματα while while (έκφραση ελέγχου) { προτάσεις; } int i = 1; while (i < 100) { s = i * i; printf(“%d %d”, i, s); i++; } do-while do { προτάσεις; } while (έκφραση ελέγχου); int i = 1; do { s = i * i; printf(“%d %d”, i, s); i++; } while (i < 100); for for (Αρχική έκφραση; Έκφραση συνέχισης; Έκφραση μεταβολής) { προτάσεις; } int i ; for (i=1; i<100; i++) { s = i * i; printf(“%d %d”, i, s); } Επαναληπτικές Δομές21

Άσκηση: Μέση βαθμολογία (1 από 2) Ο κάθε φοιτητής, έχει πέντε μαθήματα ανά εξάμηνο. Σε κάθε μάθημα, η βαθμολογία κυμαίνεται από 0 έως 10. Γράψτε ένα C πρόγραμμα, το οποίο να υπολογίζει τον μέσο όρο του εξαμήνου. #include #define Courses 5 /* Συνολικός αριθμός μαθημάτων */ int main() { int i, g, sum = 0; float mo; for (i=1; i<=Courses; i++) { printf("\n Εισαγωγή του βαθμού του %d μαθήματος:", i); scanf("%d", &g); sum += g; } mo = (float) sum / Courses; printf("\n\n Μέση Βαθμολογία = %.2f \n\n", mo); return 0; } Επαναληπτικές Δομές22

Άσκηση: Μέση βαθμολογία (2 από 2) Να ξαναγραφεί το πρόγραμμα αλλά με χρήση της πρότασης while. #include #define Courses 5 /* Συνολικός αριθμός μαθημάτων */ int main() { int i = 1, g, sum = 0; float mo; while (i <= Courses) { printf("\n Εισαγωγή του βαθμού του %d μαθήματος:", i); scanf("%d", &g); sum += g; i++; } mo = (float) sum / Courses; printf("\n\n Μέση Βαθμολογία = %.2f \n\n", mo); return 0; } Επαναληπτικές Δομές23

Καλή πρακτική  Εισαγωγή αποδεκτής τιμής:  printf("\n Εισαγωγή του βαθμού (αποδεκτοί βαθμοί: 0, 1, 2, …, 10) : “); scanf("%d", &g);  do { printf("\n Εισαγωγή του βαθμού (αποδεκτοί βαθμοί: 0, 1, 2, …, 10) : “); scanf("%d", &g); } while (g 10); Επαναληπτικές Δομές24

Άσκηση: Μέση βαθμολογία Ξαναγράψτε το πρόγραμμα της μέσης βαθμολογίας, αλλά για ένα άγνωστο πλήθος μαθημάτων. #include int main() { int i=0, g, sum = 0; float mo; int cont = 0; do { printf("\n Εισαγωγή του βαθμού του %d μαθήματος: (ή -1 για τερματισμό): ", i+1); scanf("%d", &g); } while (g 4); if (g != -1) { sum += g; i++; } } while (g != -1); mo = (float) sum / i; printf("\n Αριθμός μαθημάτων : %d", i); printf("\n\n Μέση βαθμολογία =%.2f \n\n", mo); return 0; } Επαναληπτικές Δομές25

Επιλογή επαναληπτικής δομής (1 από 3)  While: Ο έλεγχος επανάληψης γίνεται στην αρχή. Εάν η συνθήκη επανάληψης είναι ψευδής, τότε η είσοδος στον βρόγχο δεν πραγματοποιείται. Έτσι, εάν υπάρχει το ενδεχόμενο, να μην πρέπει να εκτελεσθούν, ούτε μία φορά οι προτάσεις του βρόγχου, τότε πρέπει να χρησιμοποιηθεί η πρόταση while. scanf(“%d”, &x); while (x != τιμή ελέγχου) { scanf(“%d”, &x); } Επαναληπτικές Δομές26

Επιλογή επαναληπτικής δομής (2 από 3)  Do-while: Σε αντίθεση με την while, η do- while ελέγχει την συνθήκη επανάληψης, αφού εκτελεστεί μία φορά ο βρόγχος της επανάληψης. Πολύ χρήσιμη δομή, για έλεγχο τιμών εισόδου από το πληκτρολόγιο. /* Επαλήθευση τιμής */ do { printf(“Εισαγωγή αριθμού από 0 έως..10 : “); scanf(“%d”, &x); } while (x 10); Επαναληπτικές Δομές27

Επιλογή επαναληπτικής δομής (3 από 3)  Η εντολή for, χρησιμοποιείται συνήθως, για γνωστό αριθμό επαναλήψεων. for (i=1; i<100; i++) { s = pow (i, 2); c = pow (i, 3); q = pow (i, 4); printf(“%d %d %d %d”, i, s, c, q); } Επαναληπτικές Δομές28

Άσκηση 1: Τόκος καταθέσεων  Ας υποθέσουμε, ότι ανοίγουμε ένα λογαριασμό σε τράπεζα με συγκεκριμένο κεφάλαιο, και επιτόκιο 1.5% για κάθε τετράμηνο. Επίσης, ας υποθέσουμε, ότι δεν κάνουμε νέες καταθέσεις ούτε και αναλήψεις, αλλά θέλουμε να παρακολουθούμε την πορεία του κεφαλαίου μας, ανά τετράμηνο για κάποιο χρονικό διάστημα.  Αλγόριθμος: Είσοδος αρχικού κεφαλαίου και προσδοκώμενα έτη κατάθεσης. Εκτύπωση επικεφαλίδων. Υπολογισμός πλήθους τετραμήνων σε σχέση με τα έτη κατάθεσης. Για κάθε τετράμηνο:  Υπολογισμός τόκου.  Υπολογισμός νέου κεφαλαίου.  Εκτύπωση τόκου και νέου κεφαλαίου. Επαναληπτικές Δομές29

Τόκος καταθέσεων #include #define Epitokio int main() { float kefalaio, tokos; int xronia, tetramina, tel_tetramino; printf("\n Εισαγωγή αρχικού κεφαλαίου:"); scanf("%f", &kefalaio); printf("\n Εισαγωγή ετών κατάθεσης:"); scanf("%d", &xronia); /* Επικεφαλίδες */ printf("\n Τετράμηνο \t Τόκος \t Κεφάλαιο \n\n"); tel_tetramino = 3 * xronia; for (tetramina=1; tetramina<=tel_tetramino; tetramina++) { tokos = kefalaio * Epitokio; kefalaio += tokos; printf("\n %2d \t %6.2f \t\t %8.2f", tetramina, tokos, kefalaio); } printf("\n\n"); return 0; } Επαναληπτικές Δομές30

Άσκηση 2: Πλήθος λέξεων σε πρόταση  Ανάλυση: Υποθέτουμε ότι μόνο ένα κενό διαχωρίζει τις λέξεις, και ότι η πρόταση τελειώνει με τελεία.  Αλγόριθμος: 1) Αρχικοποίηση του μετρητή λέξεων στο μηδέν, 2) διάβασε ένα χαρακτήρα, 3) εφόσον ο χαρακτήρας δεν είναι τελεία, /* τέλος πρότασης */, α) εάν ο χαρακτήρας είναι διάστημα, αύξησε τον μετρητή κατά ένα, β) διάβασε τον επόμενο χαρακτήρα. 4) Τέλος του εφόσον, 5) αύξησε τον μετρητή λέξεων κατά ένα, 6) εκτύπωσε τον μετρητή λέξεων. Επαναληπτικές Δομές31

Πλήθος λέξεων σε πρόταση #include #define Teleia '.' #define Keno ' ' int main() { char c; int word_c = 0; printf("\n\n Εισάγετε μία πρόταση : "); c = getchar(); /*scanf("%c", &c); */ while (c != Teleia) { if (c == Keno) word_c++; c = getchar(); /*scanf("%c", &c);*/ } word_c++; printf("\n\n Το πλήθος των λέξεων στην πρόταση είναι: %d \n\n", word_c); return 0; } Επαναληπτικές Δομές32

Συνοπτικά  Οι προτάσεις που περιέχονται σε ένα βρόγχο while, εκτελούνται καμία ή περισσότερες φορές.  Οι προτάσεις που περιέχονται σε ένα βρόγχο do-while, εκτελούνται τουλάχιστον μία φορά.  Και οι δύο παραπάνω προτάσεις, χρησιμοποιούν μία συνθήκη για να ελέγξουν το πλήθος των επαναλήψεων.  Όλες οι προτάσεις που περιέχονται σε ένα βρόγχο, while ή do-while, εκτελούνται όσο η συνθήκη αληθεύει.  Η πρόταση for, αποτελεί μία γενικευμένη εντολή επανάληψης, και εμπεριέχει τρεις παραμέτρους (Αρχική έκφραση; Έκφραση συνέχισης; Έκφραση μεταβολής). Επαναληπτικές Δομές33

Άσκηση (1)  Να ξαναγραφεί ο παρακάτω κώδικας με for: x = 30; while (x >= 3) { printf(“%d \t”, x); x -= 3; } for (x=30; x>=3; x-=3) printf(“%d \t”, x); Επαναληπτικές Δομές34

Άσκηση (2)  Γράψτε ένα πρόγραμμα που να εκτυπώνει το μήνυμα, Hello World! δέκα φορές στην οθόνη. for (i=1; i<=10; i++) printf(“Hello World! \n”); i = 1; while (i <=10) { printf(“Hello World! \n”); i++; } Επαναληπτικές Δομές35

Άσκηση (3)  Ένα έτος είναι δίσεκτο, εάν ισχύει μία από τις ακόλουθες δύο συνθήκες: 1) εάν διαιρείται ακριβώς με το 4, αλλά όχι με το 100, ή 2) εάν διαιρείται ακριβώς με το 400. Να γραφεί ένα πρόγραμμα, το οποίο να προσδιορίζει όλα τα δίσεκτα χρόνια, από το 1 έως το Επαναληπτικές Δομές36

Δίσεκτα έτη #include #define Start 1 #define End 2020 int main() { int year, counter = 0; for (year=Start; year<=End; year++) if (year % 400 == 0) { counter++; printf("%d είναι δίσεκτο \n", year); } else if (year % 4 == 0 && year % 100 != 0) { counter++; printf("%d είναι δίσεκτο \n", year); } printf("\n\n\n Συνολικός αριθμός δίσεκτων %d \n\n", counter); return 0; } Επαναληπτικές Δομές37

Άσκηση (4)  Πρώτος αριθμός είναι ο φυσικός αριθμός (μη αρνητικός ακέραιος), ο οποίος έχει μόνο δύο διαιρέτες: το 1 και τον εαυτό του. Να γραφεί ένα πρόγραμμα, το οποίο να εξετάζει, εάν ένας δεδομένος αριθμός, είναι ή όχι πρώτος αριθμός. Επαναληπτικές Δομές38

Πρώτοι αριθμοί: Version 1 #include int main() { int number, i; int isprime = 1; printf("\n Εισαγωγή ενός φυσικού αριθμού: "); scanf("%d", &number); for (i=2; i<number; i++) if (number % i == 0) isprime = 0; if (isprime == 1) printf("\n\n Ο αριθμός %d είναι ΠΡΩΤΟΣ! \n\n", number); else printf("\n\n Ο αριθμός %d ΔΕΝ είναι ΠΡΩΤΟΣ! \n\n", number); return 0; } Επαναληπτικές Δομές39

Πρώτοι αριθμοί: Version 2 #include int main() { int number, i = 2; int isprime = 1; printf("\n Εισαγωγή ενός φυσικού αριθμού :"); scanf("%d", &number); while (i<=number/2 && isprime == 1) { if (number % i == 0) isprime = 0; i++; } if (isprime == 1) printf("\n\n Ο αριθμός %d είναι ΠΡΩΤΟΣ! \n\n", number); else printf("\n\n Ο αριθμός %d ΔΕΝ είναι ΠΡΩΤΟΣ! \n\n", number); return 0; } Επαναληπτικές Δομές40

Άσκηση (5)  Άθροισμα όλων των περιττών αριθμών, στο διάστημα 1 έως 99. #include int main() { int odd, s = 0; for (odd=1; odd<=99; odd+=2) s += odd; printf("\n\n Άθροισμα = %d \n\n", s); return 0; } Επαναληπτικές Δομές41

Ρολόι: Version 1  Να γραφεί πρόγραμμα, το οποίο να εμφανίζει όλες τις ώρες και τα λεπτά, σε εικοσιτετράωρη βάση, παράδειγμα, 0:01, 0:02, 0:03, …. 12:59, 13:00, 13:01, … 23:59 #include int main() { int hours, mins; for (hours=0; hours<24; hours++) { printf("\n"); /* Νέα γραμμή για κάθε ώρα */ for (mins=0; mins<60; mins++) printf("%2d: %2d \t", hours, mins); } printf("\n\n"); return 0; } Επαναληπτικές Δομές42

Ρολόι: Version 2  Τροποποιήστε το προηγούμενο πρόγραμμα, ώστε να εμφανίζεται η ώρα, σε δεκαπεντάλεπτα. #include int main() { int hours, mins; for (hours=0; hours<24; hours++) { printf("\n"); for (mins=0; mins<60; mins+=15) printf("%2d: %2d \t", hours, mins); } printf("\n\n"); return 0; } Επαναληπτικές Δομές43

Άσκηση (6)  Γράψτε ένα πρόγραμμα, που να εμφανίζει ένα πίνακα γινομένων, 10 επί 10 (προπαίδεια), με χρήση 2 for. Η εκτύπωση να είναι ως εξής:  ………..   1 |  2 | ……….  3 | ………..  …………………………… Επαναληπτικές Δομές44

Πίνακας γινομένων 10 επί 10 #include int main() { int i, j; /* Επικεφαλίδες */ printf("\n "); for (i=1; i<=10; i++) printf("%6d", i); printf("\n"); for (i=1; i<=65; i++) printf("-"); for (i=1; i<11; i++) { printf("\n %3d |", i); for (j=1; j<11; j++) { printf("%6d", i*j); } return 0; } Επαναληπτικές Δομές45

Έξοδος. Πίνακας γινομένων 10 επί 10 Επαναληπτικές Δομές46

Τέλος τέταρτης ενότητας