SlideShare a Scribd company logo
H ΓΛΩΣΣΑ C
Μάθηµα 5:
∆οµές Επανάληψης
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Πίνακες
1. Εισαγωγή στους Πίνακες
1. Μονοδιάστατοι Πίνακες
2. Παράδειγµα
B. ∆οµές Επανάληψης
1. Γενικά
2. Η δοµή for
1. Συντακτικό της for
2. ∆ιάγραµµα Ροής Προγράµµατος
3. Παραδείγµατα Εκτέλεσης
3. Η δοµή do,while
1. Συντακτικό της do,while
2. ∆ιάγραµµα Ροής Προγράµµατος
3. Παραδείγµατα Εκτέλεσης
4. Αµυντικός Προγραµµατισµός
4. Η δοµή while
1. Συντακτικό της while
2. ∆ιάγραµµα Ροής Προγράµµατος
3. Παραδείγµατα Εκτέλεσης
4. Αµυντικός Προγραµµατισµός
2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
5. Συµπεράσµατα
1. Προτεινόµενη χρήση των δοµών
επανάληψης
2. Προσοµοίωση της for από την while και τη
do..while
Γ. Ασκήσεις
1. Άθροισµα και Γινόµενο Αριθµών
2. Εµφωλιασµένοι Βρόχοι: Εκτύπωση
Αθροισµάτων
3. Εµφωλιασµένοι Βρόχοι: Εκτύπωση
Παραλληλογράµµου
4. Εµφωλιασµένοι Βρόχοι: Εκτύπωση
Τριγώνου
5. Άθροισµα Αριθµών µε Χρήση Πίνακα
6. Γινόµενο Αριθµών µε Χρήση Πίνακα
7. Ελάχιστος από N αριθµούς
8. Μέσος Όρος Ν αριθµών
A. Πίνακες
1. Εισαγωγή στους Πίνακες
1. Μονοδιάστατοι Πίνακες
3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Ένας πίνακας είναι µια σειρά από µεταβλητές ίδιου τύπου αποθηκευµένες στην µνήµη.
Για παράδειγµα ένας πίνακας 10 ακεραίων είναι 10 ακέραιες µεταβλητές αποθηκευµένες στην
σειρα (η µία µετά την άλλη) στην µνήµη.
Ένας πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντόλη της µορφής:
Όπου:
Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα.
ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα.
ΠΛΗΘΟΣ (προσέξτε ότι είναι µέσα σε αγκύλες): Πόσες µεταβλητές θα περιέχει ο
πίνακας
Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ];
A. Πίνακες
1. Εισαγωγή στους Πίνακες
1. Μονοδιάστατοι Πίνακες
4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Για παράδειγµα µε την δήλωση:
∆ηλώνουµε έναν πίνακα µε 4 ακέραιες µεταβλητές.
Με την εντολή δήλωσης, δεσµεύεται στην µνήµη χώρος για τον πίνακα και είναι σηµαντικό
ότι οι θέσεις αυτές είναι σε µια σειρά.
Τα ονόµατα των 4µεταβλητών που κατασκευάσαµε είναι:
pin[0], pin[1], pin[2], pin[3]
Παρατηρούµε ότι η αρίθµηση ξεκινά από το 0 έως και ένα λιγότερο από τον αριθµό
που δηλώσαµε.
Άρα µετά την εντολή δήλωσης, έχουν δεσµευτεί 4 διαδοχικές (προσοχή!) θέσεις
στην µνήµη για να αποθηκεύσουν τιµές σε αυτές τις µεταβλητές:
int pin[4];
pin[0] pin[1] pin[2] pin[3]
,
A. Πίνακες
1. Εισαγωγή στους Πίνακες
2. Παράδειγµα
5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Μετά τη δήλωση του
πίνακα είναι σαν να
έχουµε 4 µεταβλητές που
µπορούµε να
χρησιµοποιήσουµε στο
πρόγραµµά µας.
∆είτε για παράδειγµα το
εξής απλό πρόγραµµα:
Οι µεταβλητές
διαχειρίζονται όπως οι
τυπικές ακέραιες
µεταβλητές
/* array.c: Aplo programma me pinaka */
#include <stdio.h>
int main()
{
int pin[3];
int sum;
pin[0]=1;
pin[1]=3;
pin[2]=4;
sum=pin[0]+pin[1]+pin[2];
printf("n%d+%d+%d=%d",pin[0],pin[1],pin[2],sum);
}
• Προσοχή, να µην γράψουµε αριθµό για όριο του πίνακα που είναι εκτός του επιτρεπτού. Π.χ. Αν
έχουµε δήλωση int pin[4]; και γράψουµε για όνοµα µεταβλητής pin[5] θα έχουµε σφάλµα όταν θα
εκτελέσουµε το πρόγραµµα!
• Περισσότερα για τους πίνακες θα δούµε σε επόµενο µάθηµα, όπου θα δούµε και
πολυδιάστατους πίνακες (διδιάστατους, τριδιάστατους κ.λπ.)
• Εδώ κάνουµε µια απλή αναφορά στους πίνακες για να τους χρησιµοποιήσουµε µε τη δοµή
επανάληψης στις ασκήσεις. Πολύ περισσότερα σε επόµενο µάθηµα.
B. ∆οµές Επανάληψης
1. Γενικά
6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Η εντολή επανάληψης είναι η σηµαντικότερη δοµή σε ένα πρόγραµµα.
...διότι µας επιτρέπει να εκτελέσουµε ένα τµήµα κώδικα πολλές φορές, το οποίο είναι το
κύριο χαρακτηριστικό του προγραµµατισµού.
Στη γλώσσα C που µαθαίνουµε, υπάρχουν τρεις τρόποι για να κάνουµε επανάληψη της
εκτέλεσης ενός τµήµατος κώδικα:
Η εντολή for ( ,; , ; ,) { , } στην οποία ρητά αναφέρουµε πόσες φορές θέλουµε να
εκτελεστεί ένα τµήµα κώδικα.
Η εντολή while(,) { , }
Η εντολή do{,} while(,);
Θα αναλύσουµε τους τρεις τρόπους επανάληψης και πότε χρησιµοποιούµε τον καθένα
Β. ∆οµές Επανάληψης
2. Η δοµή for
1. Συντακτικό της for
7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Το συντακτικό της εντολής for είναι:
∆είτε ότι αν τρέχουµε µία εντολή τότε δεν είµαστε αναγκασµένοι να χρησιµοποιήσουµε
άγκιστρα, αλλιώς αν τρέχουµε παραπάνω από µία εντολή πρέπει να βάλουµε τις εντολές
σε άγκιστρα (όπως στην if, ακολουθεί την for ένα µπλοκ κώδικα).
Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες:
1. Τρέχει η αρχική: είναι µια εντολή που τρέχει µία µόνο φορά στην αρχή. Αναφέρεται
και σαν εντολή αρχικοποίησης
2. Ελέγχεται η συνθήκη: συνήθως είναι µια σύγκριση τιµών.
2.1 Αν η συνθήκη είναι ψευδής, τότε βγαίνουµε από την for και πάµε στην
αµέσως επόµενη εντολή.
2.2. Αλλιώς αν η συνθήκη είναι αληθής, εκτελείται η εντολή αύξηση και
µεταβαίνουµε και πάλι στο βήµα 2.
for( αρχική; συνθήκη; βήµα)
εντολή;
for( αρχική; συνθήκη; βήµα)
{
(εντολές)
}
Β. ∆οµές Επανάληψης
2. Η δοµή for
2. ∆ιάγραµµα Ροής Προγράµµατος
8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 4: Μάθηµα 5: ∆οµές Επανάληψης
Και το διάγραµµα ροής προγράµµατος:
[προηγούµενες εντολές]
for( αρχική; συνθήκη; βήµα)
εντολή;
[επόµενες εντολές]
[προηγούµενες εντολές]
for( αρχική; συνθήκη; βήµα)
{
(εντολές)
}
[επόµενες εντολές]
συνθήκη
(εντολές)
ΟΧΙ
[προηγούµενες εντολές]
[επόµενες εντολές]
(αρχική)
βήµα
ΝΑΙ
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 1:
Τι κάνει το ακόλουθο τµήµα κώδικα;
Απάντηση:
Εκτελείται η εντολή i=1.
Ελέγχεται αν i<=5. Είναι αληθές (1<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η
αύξηση i++, άρα το i γίνεται 2.
Ελέγχεται αν i<=5. Είναι αληθές (2<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η
αύξηση i++, άρα το i γίνεται 3.
Ελέγχεται αν i<=5. Είναι αληθές (3<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η
αύξηση i++, άρα το i γίνεται 4.
Ελέγχεται αν i<=5. Είναι αληθές (4<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η
αύξηση i++, άρα το i γίνεται 5.
Ελέγχεται αν i<=5. Είναι αληθές (5<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η
αύξηση i++, άρα το i γίνεται 6.
Ελέγχεται αν i<=5. Είναι ψευδές (6<=5), άρα µεταβαίνουµε στην αµέσως επόµενη
εντολή µετά την for.
Άρα το τµήµα κώδικα τυπώνει 5 φορές στην οθόνη τη λέξη ΚΑΛΗΜΕΡΑ
for (i=1; i<=5; i++)
printf("nKalimera");
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Συνήθως στις εφαρµογές χρησιµοποιείται η τιµή της µεταβλητής που τροποποιείται στην
αύξηση. Είναι σηµαντικό ότι σε κάθε επανάληψη η τιµή της µεταβλητής είναι διαφορετική
Παράδειγµα 2:
Τι κάνει το ακόλουθο τµήµα κώδικα;
Απάντηση:
Εκτελείται η εντολή i=1.
Ελέγχεται αν i<=3. Είναι αληθές (1<=3), άρα τυπώνεται «1» και εκτελείται η αύξηση
i++, άρα το i γίνεται 2.
Ελέγχεται αν i<=3. Είναι αληθές (2<=3), άρα τυπώνεται «2» και εκτελείται η αύξηση
i++, άρα το i γίνεται 3.
Ελέγχεται αν i<=3. Είναι αληθές (3<=3), άρα τυπώνεται «3» και εκτελείται η αύξηση
i++, άρα το i γίνεται 4.
Ελέγχεται αν i<=3. Είναι ψευδές (4<=3), άρα µεταβαίνουµε στην αµέσως επόµενη
εντολή µετά την for.
Και το πρόγραµµα τερµατίζει
for (i=1; i<=3; i++)
printf("n%d“,i);
Συνήθως στις εφαρµογές χρησιµοποιείται η τιµή της µεταβλητής που τροποποιείται στην
αύξηση. Είναι σηµαντικό ότι σε κάθε επανάληψη η τιµή της µεταβλητής είναι διαφορετική
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 3:
Τι κάνει το ακόλουθο τµήµα κώδικα (οι j,x είναι ακέραιες µεταβλητες);
Απάντηση: Οι εντολές που περικλείονται ανάµεσα στα άγκιστρα εκτελούνται για τις
διαδοχικές τιµές της µεταβλητής. Άρα:
Εκτελείται η εντολή j=0.
Ελέγχεται αν j<2. Είναι αληθές (0<2), άρα υπολογίζεται x=0*0-1=-1 άρα
τυπώνεται «-1» και εκτελείται η αύξηση j++, άρα το j γίνεται 1.
Ελέγχεται αν j<2. Είναι αληθές (1<2), άρα υπολογίζεται x=1*1-1=0 άρα
τυπώνεται «0» και εκτελείται η αύξηση j++, άρα το j γίνεται 2.
Ελέγχεται αν j<2. Είναι ψευδές (2<2), άρα µεταβαίνουµε στην επόµενη εντολή µετά
τη for.
for (j=0; j<2; j++)
{
x=j*j-1;
printf("n%d",x);
}
Συνήθως, χρησιµοποιώντας την τιµή της µεταβλητής κάνουµε ακόµη και περίπλοκους
υπολογισµούς.
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 4:
Τι κάνει το ακόλουθο τµήµα κώδικα (οι j,x είναι ακέραιες µεταβλητές);
Απάντηση: Οι εντολές που περικλείονται ανάµεσα στα άγκιστρα εκτελούνται για τις
διαδοχικές τιµές της µεταβλητής. Άρα:
Εκτελείται η εντολή j=2.
Ελέγχεται αν j>=0. Είναι αληθές (2>=0), άρα υπολογίζεται x=2*2-1=3 άρα
τυπώνεται «3» και εκτελείται η µείωση j--, άρα το j γίνεται 1.
Ελέγχεται αν j>=0. Είναι αληθές (1>=0), άρα υπολογίζεται x=1*1-1=0 άρα
τυπώνεται «0» και εκτελείται η µείωση j--, άρα το j γίνεται 0.
Ελέγχεται αν j>=0. Είναι αληθές (0>=0), άρα υπολογίζεται x=0*0-1=0 άρα
τυπώνεται «-1» και εκτελείται η µείωση j--, άρα το j γίνεται -1.
Ελέγχεται αν j>=0. Είναι ψευδές (-1>=0), άρα µεταβαίνουµε στην επόµενη εντολή
µετά τη for.
for (j=2; j>=0; j--)
{
x=j*j-1;
printf("n%d",x);
}
Ας δούµε και ένα παράδειγµα που η µεταβλητή µειώνεται αντί να αυξάνεται.
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 5:
Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή);
Απάντηση:
Εκτελείται η εντολή i=0.
Ελέγχεται αν i<=6. Είναι αληθές (0<=6), υπολογίζεται 0*0=0 τυπώνεται «0»
και εκτελείται η αύξηση i+=2, άρα το i γίνεται 2.
Ελέγχεται αν i<=6. Είναι αληθές (2<=6), υπολογίζεται 2*2=4 τυπώνεται «4»
και εκτελείται η αύξηση i+=2, άρα το i γίνεται 4.
Ελέγχεται αν i<=6. Είναι αληθές (4<=6), υπολογίζεται 4*4=16 τυπώνεται «16»
και εκτελείται η αύξηση i+=2, άρα το i γίνεται 16.
Ελέγχεται αν i<=6. Είναι αληθές (6<=6), υπολογίζεται 6*6=36 τυπώνεται «36»
και εκτελείται η αύξηση i+=2, άρα το i γίνεται 8.
Ελέγχεται αν i<=6. Είναι ψευδές (8<=6), άρα µεταβαίνουµε στην επόµενη
εντολή µετά τη for.
for (i=0; i<=6; i+=2)
printf("n%d",i*i);
Μπορούµε να έχουµε και οποιοδήποτε βήµα αύξησης επιθυµούµε µε το κατάλληλο συντακτικό.
Β. ∆οµές Επανάληψης
2. Η δοµή for
3. Παραδείγµατα Εκτέλεσης
14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Αν και ο συνηθισµένος τρόπος χρήσης της for, είναι κάποιος από αυτούς που είδαµε,
έχουµε επιπλέον δικαίωµατα:
Να βάλουµε παραπάνω απο µία αρχικές εντολές (χωρισµένες µε κόµµα)
Να βάλουµε παραπάνω από µια εντολές αύξησης (χωρισµένες µε κόµµα)
Να έχουµε πιο σύνθετες συνθήκες (π.χ. και µε λογικό έλεγχο.)
Εκτελέστε το παρακάτω πρόγραµµα:
/* complex_for.c: Deixnei to olokliromeno sintaktiko tis for */
#include <stdio.h>
main()
{
int i,j;
for (i=0,j=0; i<5 && j<5; i++,j+=2)
printf("ni=%d,j=%d: ",i,j);
}
Β. ∆οµές Επανάληψης
3. Η δοµή do..while
1. Συντακτικό της do..while
15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Το συντακτικό της εντολής do`while (επανέλαβε`όσο) είναι:
Με την παρατήρηση ότι εδώ δεν µπορούµε να παραλείψουµε τα άγκιστρα!.
Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες:
1. Εκτελούνται οι εντολές
2. Ελέγχεται η συνθήκη: (την οποία έχουµε συντάξει µε λογικούς και σχεσιακούς
τελεστές)
2.1 Αν η απάντηση είναι ΑΛΗΘΗΣ (ισχύει η συνθήκη), τότε ξαναρχίζουµε από
την αρχή (πρώτη εντολή µετά από το do)
2.2 Αν η απάντηση είναι ΨΕΥ∆ΗΣ (δεν ισχύει η συνθήκη), τότε βγαίνουµε από
την επανάληψη και τρέχουµε την αµέσως επόµενη εντολή µετά τη while.
do
{
(Εντολές)
}
while (Συνθήκη);
Β. ∆οµές Επανάληψης
3. Η δοµή do..while
2. ∆ιάγραµµα Ροής Προγράµµατος
16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Και το διάγραµµα ροής προγράµµατος:
Παρατηρήστε ότι η συνθήκη ελέγχεται αφού
έχουν εκτελεστεί οι εντολές
συνθήκη
(εντολές)
ΟΧΙ
[προηγούµενες εντολές]
[επόµενες εντολές]
ΝΑΙ
[προηγούµενες εντολές]
do
{
(Εντολές)
}
while (Συνθήκη);
[επόµενες εντολές]
Β. ∆οµές Επανάληψης
3. Η δοµή do`while
3. Παραδείγµατα Εκτέλεσης
17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 1:
Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή);
Αρχικά i=0
Γίνεται επανάληψη:
Τίθεται i=0+1=1 και τυπώνεται «1»
Γίνεται έλεγχος συνθήκης. 1<3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε
Γίνεται επανάληψη:
Τίθεται i=1+1=2 και τυπώνεται «2»
Γίνεται έλεγχος συνθήκης. 2<3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε
Γίνεται επανάληψη:
Τίθεται i=2+1=3 και τυπώνεται «3»
Γίνεται έλεγχος συνθήκης. 3<3 είναι ΨΕΥ∆ΗΣ, άρα δεν θα επαναλαβουµε και
πηγαίνουµε στην επόµενη εντολή του κώδικα.
i=0;
do{
i=i+1;
printf("n%d",i);
} while(i<3);
Μπορούµε να χρησιµοποιήσουµε την do..while µε αντίστοιχο τρόπο µε την for.
Β. ∆οµές Επανάληψης
3. Η δοµή do`while
3. Παραδείγµατα Εκτέλεσης
18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 2: Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή);
Αρχικά i=5
Γίνεται επανάληψη:
Τίθεται i=5+1=6 και εκτυπώνεται «6»
Γίνεται έλεγχος συνθήκης. 6>3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε
Γίνεται επανάληψη:
Τίθεται i=6+1=7 και εκτυπώνεται «7»
Γίνεται έλεγχος συνθήκης. 7>3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε....
..... Θα τερµατίσει ποτέ το πρόγραµµα?
Η απάντηση είναι ΟΧΙ! Σε κάθε επανάληψη το i θα αυξάνεται, άρα ποτέ δεν θα γίνει <= 3!
i=5;
do{
i=i+1;
printf("n%d",i);
} while(i>3);
Και εδώ θα κάνουµε ένα από τα πιο συχνά λάθη! Θα πέσουµε σε ατέρµονα βρόχο!
Ατέρµων βρόχος (infinite loop) είναι µία (επανάληψη που δεν ολοκληρώνεται ποτέ)
Αποτελεί από τα συχνότερα προγραµµατιστικά λάθη!
Β. ∆οµές Επανάληψης
3. Η δοµή do`while
3. Παραδείγµατα Εκτέλεσης
19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Σχηµατικά:
i=0; <- Εντολή Αρχικοποίησης (την γράφουµε εµείς)
do{
(εντολή ή εντολές)
i=i+1; <- Εντολή αύξησης µεταβλητής (την γράφουµε εµείς)
} while (i<=3); <- Συνθήκη
Παρατήρηση:
Η σύνταξη της δοµής είναι αρκετά απλή, αλλά θα πρέπει εµείς, ως προγραµµατιστές να
συντάξουµε σωστά τις υπόλοιπες εντολές. Συγκεκριµένα:
Πρέπει να αρχικοποιήσουµε σωστά την µεταβλητή που θα έχουµε στην εντολή συνθήκης.
Έτσι πριν την do θα πρέπει να αρχικοποιήσουµε την µεταβλητή που θα
χρησιµοποιήσουµε (εντολή αρχικοποίησης)
Πρέπει η µεταβλητή που έχουµε στην εντολή αρχικοποίησης να επηρεάζεται στο σώµα της
επανάληψης (εντολή αύξησης µεταβλητής)
Β. ∆οµές Επανάληψης
3. Η δοµή do`while
4. Αµυντικός Προγραµµατισµός
20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Στην επόµενη διαφάνεια φαίνεται πως θα κάνουµε αµυντικό προγραµµατισµό για να
διαβάσουµε έναν αριθµό από 1 εώς 100.
Αν ξέρουµε πόσες φορές θέλουµε να τρέξει η επανάληψη, είναι προτιµότερο να
χρησιµοποιήσουµε for, γιατί στο συντακτικό της γράφουµε τις εντολές αρχικοποιήσης και
αύξησης, και έτσι ελαχιστοποιείται η πιθανότητα λάθους.
Ωστόσο η δοµή do..while είναι πολύ χρήσιµη όταν θέλουµε να διαβάσουµε µεταβλητές που
να έχουν συγκεκριµένες τιµές.
Π.χ. Αν θέλουµε να διαβάσουµε έναν ακέραιο µεταξύ 1 και 100 και πρέπει να αποφύγουµε
ο χρήστης να εισάγει µία λανθασµένη τιµή τότε εφαρµόζουµε αµυντικό προγραµατισµό
και κάνουµε έλεγχο αν η τιµή που εισήγαγε ο χρήστης είναι σωστή.
Έτσι τον αναγκάζουµε να επαναπληκτρολογήσει µέχρι να βάλει την σωστή τιµή.
Ο αµυντικός προγραµµατισµός είναι καλή προγραµµατιστική τακτική σε προγράµµατα που
ζητάµε είσοδο από τον χρήστη.
Β. ∆οµές Επανάληψης
3. Η δοµή do`while
4. Αµυντικός Προγραµµατισµός
21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
/* defensive.c: Amintikos Programmatismos gia to diavasma enos akeraioy
*/
#include <stdio.h>
main()
{
int i;
do {
printf("Dwste enan akeraio apo 1 ews 100: ");
scanf("%d",&i);
} while (i<1 || i>100);
printf("Eisagate arithmo mesa sta oria 1 ews 100: %d",i);
}
Β. ∆οµές Επανάληψης
4. Η δοµή while
1. Συντακτικό της while
22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Το συντακτικό της δοµής while (επανέλαβε) είναι ίδια µε την do..while µε την µόνη διαφορά ότι ο
έλεγχος γίνεται στην αρχή της επανάληψης και όχι στο τέλος της επανάληψης :
Και εδώ αν έχουµε µόνο µία εντολή µπορούµε να παραλείψουµε τα άγκιστρα!
Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες:
1. Ελέγχεται η συνθήκη: (την οποία έχουµε συντάξει µε λογικούς και σχεσιακούς
τελεστές)
1.1 Αν η απάντηση είναι ΑΛΗΘΗΣ (ισχύει η συνθήκη), τότε ξαναρχίζουµε από
την αρχή (πρώτη εντολή µετά από το do)
1.2 Αν η απάντηση είναι ΨΕΥ∆ΗΣ (δεν ισχύει η συνθήκη), τότε βγαίνουµε από
την επανάληψη και τρέχουµε την αµέσως επόµενη εντολή µετά τη while.
while(Συνθήκη)
{
(Εντολή ή Εντολές)
}
Β. ∆οµές Επανάληψης
4. Η δοµή while
2. ∆ιάγραµµα Ροής Προγράµµατος
23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Και το διάγραµµα ροής προγράµµατος:
Παρατηρήστε ότι η συνθήκη ελέγχεται πριν
εκτελεστούν οι εντολές
συνθήκη
(εντολές)
ΟΧΙ
[προηγούµενες εντολές]
[επόµενες εντολές]
ΝΑΙ
[προηγούµενες εντολές]
while(Συνθήκη)
{
(Εντολές)
}
[επόµενες εντολές]
Β. ∆οµές Επανάληψης
4. Η δοµή while
3. Παραδείγµατα Εκτέλεσης
24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Παράδειγµα 1:
Τι κάνει το ακόλουθο τµήµα κώδικα (οι k,l είναι ακέραιες µεταβλητές);
Απάντηση:
Αρχικοποιείται το k µε 5
Γίνεται ο έλεγχος συνθήκης (5<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα
l=2*5+1=11 και k=5+1=6. Τυπώνεται «11».
Γίνεται ο έλεγχος συνθήκης (6<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα
l=2*6+1=13 και k=6+1=7. Τυπώνεται «13».
Γίνεται ο έλεγχος συνθήκης (7<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα
l=2*7+1=15 και k=7+1=8. Τυπώνεται «15».
Γίνεται ο έλεγχος συνθήκης (8<8). Είναι ΨΕΥ∆ΕΣ, άρα τερµατίζει η επανάληψη.
k=5;
while(k<8)
{
l=2*k+1;
k=k+1;
printf("%d",l);
}
Ένα πρώτο παράδειγµα, για την αντιστοιχία µε τις άλλες δοµές επανάληψης
Β. ∆οµές Επανάληψης
5. Συµπεράσµατα
1. Προτεινόµενη Χρήση των ∆οµών Επανάληψης
25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Βλέπουµε ότι και οι 3 εντολές επανάληψης µε παρόµοιο τρόπο κάνουν τις ίδιες ενέργειες.
Η πιο συνηθισµένη δοµή είναι η for και την χρησιµοποιούµε όταν ξέρουµε ποιες τιµές θα
πάρει η µεταβλητή.
Αν δεν ξέρουµε ακριβώς ποιες τιµές θα πάρει ή µεταβλητή ή πόσες φορές πρέπει να γίνει
η επανάληψη, τότε χρησιµοποιούµε την δοµή while.
Η δοµή do,while χρησιµοποιείται πιο σπάνια, κυρίως για αµυντικό προγραµµατισµό σε
διάβασµα µεταβλητών.
Β. ∆οµές Επανάληψης
5. Συµπεράσµατα
2. Προσοµοίωση της for από την while και την do..while
26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Ενδιαφέρον επίσης έχει ότι η εντολή for µπορεί να προσοµοιωθεί από τις άλλες δύο ως
ακολούθως:
Με εντολή while
Με εντολή do`while
for (i=1; i<=10; i++)
{
(Εντολή ή εντολές)
}
i=1;
while(i<=10)
{
(Εντολή ή εντολές)
i=i+1;
}
i=1;
do{
(Εντολή ή εντολές)
i=i+1
}while(I<=10);
Γ. Ασκήσεις
Εφαρµογή 1 (Άθροισµα και Γινόµενο Αριθµών)
27∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
(α)Τι κάνει το ακόλουθο πρόγραµµα;
(β) Πως µπορούµε να τροποποιήσουµε το πρόγραµµά µας, έτσι ώστε να προστίθενται 10
αριθµοί αντί για 3.
(γ) Γράψτε το πρόγραµµα ask1_ginomeno.c που θα υπολογίζει το γινόµενο των 3 αριθµών που
διαβάζει από την είσοδο.
/* ask1.c */
#include <stdio.h>
main()
{
int i,sum,x;
sum=0;
for(i=1; i<=3; i++)
{
printf("nEisagete ton %d-o arithmo: ",i);
scanf("%d",&x);
sum=sum+x;
}
printf("nn%d",sum);
}
Γ. Ασκήσεις
Εφαρµογή 2 (Εµφωλιασµένοι Βρόχοι)
28∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Μεταγλωττίστε, εκτελέστε και µελετήστε το παρακάτω πρόγραµµα:
/* ask2.c */
#include <stdio.h>
main()
{
int i,j;
for(i=1; i<=4; i++)
{
for (j=1; j<=4; j++)
{
printf("n%d+%d=%d",i,j,i+j);
}
}
}
Σηµείωση: Επειδή έχουµε επανάληψη µέσα στην επανάληψη, η παραπάνω δοµή
χαρακτηρίζεται προγραµµατιστικά «εµφωλιασµένοι βρόχοι» (nested loops)
Γ. Ασκήσεις
Εφαρµογή 3 (Εµφωλιασµένοι Βρόχοι)
29∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
(α) Χωρίς να εκτελέσετε το πρόγραµµα,
υπολογίστε πόσα X θα εκτυπώσει το ακόλουθο
πρόγραµµα και µε ποια µορφή;
(β) Εκτελέστε το πρόγραµµα και τροποποιήστε
κατά βούληση το παραλληλόγραµµο που
εκτυπώνεται.
(γ) Μετατρέψτε το πρόγραµµα σε ένα
ισοδύναµο που χρησιµοποιεί την εντολή while,
αντί για την εντολή for.
/* ask3.c */
#include <stdio.h>
main()
{
int M,N;
int i,j;
M=10;
N=20;
for(i=0; i<=M; i++)
{
for (j=0; j<=N; j++)
{
printf("X");
}
printf("n");
}
}
Γ. Ασκήσεις
Εφαρµογή 4 (Εµφωλιασµένοι Βρόχοι)
30∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
(α) Χωρίς να εκτελέσετε το πρόγραµµα,
υπολογίστε πόσα X θα εκτυπώσει το ακόλουθο
προγραµµα και µε ποια µορφή;
(β) Εκτελέστε το πρόγραµµα και τροποποιήστε
κατά βούληση το “τρίγωνο” που εκτυπώνεται.
(γ) Μετατρέψτε το πρόγραµµα σε ένα
ισοδύναµο που χρησιµοποιεί την εντολή
do`while, αντί για την εντολή for.
/* ask4.c */
#include <stdio.h>
main()
{
int N;
int i,j;
N=10;
for(i=0; i<=N; i++)
{
for (j=i; j<=N; j++)
{
printf("X");
}
printf("n");
}
}
Γ. Ασκήσεις
Εφαρµογή 5 (Άθροισµα Αριθµών µε Πίνακα)
31∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Κατασκευάστε πρόγραµµα που:
Προτρέπει τον χρήστη να εισάγει 10 ακέραιους αριθµούς και τους αποθηκεύει σε έναν
µονοδιάστατο πίνακα 10 θέσεων.
Έπειτα υπολογίζει το άθροισµα τους και το τυπώνει στην οθόνη.
Γ. Ασκήσεις
Εφαρµογή 6 (Γινόµενο Αριθµών µε Πίνακα)
32∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Κατασκευάστε πρόγραµµα που:
Προτρέπει τον χρήστη να εισάγει 5 άκεραιους αριθµούς και τους αποθηκεύει σε έναν
µονοδιάστατο πίνακα 5 θέσεων. Επίσης να εφαρµόζεται αµυντικός προγραµµατισµός, έτσι
ώστε κάθε ακέραιος που εισάγει ο χρήστης να έχει τιµή από 1 εώς 8.
Έπειτα υπολογίζει το γινόµενό τους και το τυπώνει στην οθόνη.
Γ. Ασκήσεις
Εφαρµογή 7 (Ελάχιστος από Ν αριθµούς)
33∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Κατασκευάστε πρόγραµµα που:
Προτρέπει τον χρήστη να εισάγει έναν αριθµό Ν. Ο αριθµός Ν να είναι µεταξύ 1 και 20 µε
εφαρµογή αµυντικού προγραµµατισµού.
Έπειτα να διαβάζει από την είσοδο και να εισάγει Ν αριθµούς σε έναν µονοδιάστατο
πίνακα.
Τέλος, να βρίσκει και να τυπώνει τον ελάχιστο από τους Ν αριθµούς.
Υπόδειξη: Όταν δεν ξέρουµε εκ των προτέρων το µέγεθος του πίνακα που θα
χρησιµοποιήσουµε, δεσµεύουµε προκαταβολικά τον µέγιστο χώρο που µπορεί το πρόγραµµα
να χρησιµοποιήσει.
Για παράδειγµα σε αυτήν την άσκηση, θα πρέπει να κατασκευάσετε έναν πίνακα 20
θέσεων, παρόλο που το πρόγραµµα θα χρησιµοποιήσει τόσες θέσεις, όσο το Ν που θα
εισάγει ο χρήστης.
Σε επόµενο µάθηµα θα µάθουµε πως δεσµεύεται ο χώρος στην µνήµη δυναµικά. ∆ηλαδή
κατά τον χρόνο εκτέλεσης να δεσµεύεται ο χώρος µνήµης που απαιτείται.
Γ. Ασκήσεις
Εφαρµογή 8 (Μέσος όρος Ν αριθµών)
34∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης
Κατασκευάστε πρόγραµµα που:
Προτρέπει τον χρήστη να εισάγει έναν αριθµό Ν. Ο αριθµός Ν να είναι µεταξύ 1 και 20 µε
εφαρµογή αµυντικού προγραµµατισµού.
Έπειτα να διαβάζει από την είσοδο και να εισάγει Ν αριθµούς σε έναν µονοδιάστατο
πίνακα.
Τέλος, να βρίσκει και να τυπώνει τον µέσο όρο των Ν αριθµών.
Υπόδειξη: Όταν δεν ξέρουµε εκ των προτέρων το µέγεθος του πίνακα που θα
χρησιµοποιήσουµε, δεσµεύουµε προκαταβολικά τον µέγιστο χώρο που µπορεί το πρόγραµµα
να χρησιµοποιήσει.
Για παράδειγµα σε αυτήν την άσκηση, θα πρέπει να κατασκευάσετε έναν πίνακα 20
θέσεων, παρόλο που το πρόγραµµα θα χρησιµοποιήσει τόσες θέσεις, όσο το Ν που θα
εισάγει ο χρήστης.
Σε επόµενο µάθηµα θα µάθουµε πως δεσµεύεται ο χώρος στην µνήµη δυναµικά. ∆ηλαδή
κατά τον χρόνο εκτέλεσης να δεσµεύεται ο χώρος µνήµης που απαιτείται.

More Related Content

What's hot

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 

What's hot (20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
 

Similar to ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
Nikos Michailidis
 
AEPP_OEFE_2008
AEPP_OEFE_2008AEPP_OEFE_2008
AEPP_OEFE_2008
educast
 
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο ΑσκήσεωνΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
Nikos Michailidis
 
Tutorial xatzikyriakou-pascalby example
Tutorial xatzikyriakou-pascalby exampleTutorial xatzikyriakou-pascalby example
Tutorial xatzikyriakou-pascalby example
evaplyta
 
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο ΑσκήσεωνΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
Nikos Michailidis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
Dimitris Psounis
 
Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9
educast
 
ΟΕΦΕ 2009 Θέματα
ΟΕΦΕ 2009 ΘέματαΟΕΦΕ 2009 Θέματα
ΟΕΦΕ 2009 Θέματα
educast
 
ανάπτυξη 2006 απ
ανάπτυξη 2006 απανάπτυξη 2006 απ
ανάπτυξη 2006 απ
educast
 
04110700 g texn_aep 2010
04110700 g texn_aep 201004110700 g texn_aep 2010
04110700 g texn_aep 2010
educast
 
Διαγώνισμα Δομή Επανάληψης 2
Διαγώνισμα Δομή Επανάληψης 2Διαγώνισμα Δομή Επανάληψης 2
Διαγώνισμα Δομή Επανάληψης 2
educast
 

Similar to ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (20)

ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
 
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
 
AEPP_OEFE_2008
AEPP_OEFE_2008AEPP_OEFE_2008
AEPP_OEFE_2008
 
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο ΑσκήσεωνΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
 
Κεφ. 1.3 Δομή επιλογής
Κεφ. 1.3 Δομή επιλογήςΚεφ. 1.3 Δομή επιλογής
Κεφ. 1.3 Δομή επιλογής
 
Plir b
Plir bPlir b
Plir b
 
Tutorial xatzikyriakou-pascalby example
Tutorial xatzikyriakou-pascalby exampleTutorial xatzikyriakou-pascalby example
Tutorial xatzikyriakou-pascalby example
 
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο ΑσκήσεωνΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
 
Python Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή ΕπανάληψηςPython Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή Επανάληψης
 
Microworld[1]
Microworld[1]Microworld[1]
Microworld[1]
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
 
Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9
 
ΟΕΦΕ 2009 Θέματα
ΟΕΦΕ 2009 ΘέματαΟΕΦΕ 2009 Θέματα
ΟΕΦΕ 2009 Θέματα
 
ανάπτυξη 2006 απ
ανάπτυξη 2006 απανάπτυξη 2006 απ
ανάπτυξη 2006 απ
 
Bασικές έννοιες αλγορίθμων
Bασικές έννοιες αλγορίθμωνBασικές έννοιες αλγορίθμων
Bασικές έννοιες αλγορίθμων
 
04110700 g texn_aep 2010
04110700 g texn_aep 201004110700 g texn_aep 2010
04110700 g texn_aep 2010
 
Διαγώνισμα Δομή Επανάληψης 2
Διαγώνισμα Δομή Επανάληψης 2Διαγώνισμα Δομή Επανάληψης 2
Διαγώνισμα Δομή Επανάληψης 2
 
PROLOG - ΜΑΘΗΜΑ 4
PROLOG - ΜΑΘΗΜΑ 4PROLOG - ΜΑΘΗΜΑ 4
PROLOG - ΜΑΘΗΜΑ 4
 
ΠΛΗ30 ΜΑΘΗΜΑ 5.4
ΠΛΗ30 ΜΑΘΗΜΑ 5.4ΠΛΗ30 ΜΑΘΗΜΑ 5.4
ΠΛΗ30 ΜΑΘΗΜΑ 5.4
 

More from Dimitris Psounis

ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

More from Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 

Recently uploaded

Recently uploaded (20)

Μαθηματικά - Πανελλήνιες 2023: Αυτά τα θέματα έπεσαν - Οι απαντήσεις
Μαθηματικά - Πανελλήνιες 2023: Αυτά τα θέματα έπεσαν - Οι απαντήσειςΜαθηματικά - Πανελλήνιες 2023: Αυτά τα θέματα έπεσαν - Οι απαντήσεις
Μαθηματικά - Πανελλήνιες 2023: Αυτά τα θέματα έπεσαν - Οι απαντήσεις
 
Εκπαιδευτική επίσκεψη στο Σεισμολογικό Ινστιτούτο του ΑΠΘ.pptx
Εκπαιδευτική επίσκεψη στο Σεισμολογικό Ινστιτούτο του ΑΠΘ.pptxΕκπαιδευτική επίσκεψη στο Σεισμολογικό Ινστιτούτο του ΑΠΘ.pptx
Εκπαιδευτική επίσκεψη στο Σεισμολογικό Ινστιτούτο του ΑΠΘ.pptx
 
Έκθεση Τεχνολογίας Σχολικό Έτος 2023-24.pptx
Έκθεση Τεχνολογίας Σχολικό Έτος 2023-24.pptxΈκθεση Τεχνολογίας Σχολικό Έτος 2023-24.pptx
Έκθεση Τεχνολογίας Σχολικό Έτος 2023-24.pptx
 
YlhIstoriaA-2324.pdf. 56thJHS of Athens
YlhIstoriaA-2324.pdf.  56thJHS of AthensYlhIstoriaA-2324.pdf.  56thJHS of Athens
YlhIstoriaA-2324.pdf. 56thJHS of Athens
 
Εικόνες της Παναγίας που αποδίδονται στον Άγιο, Απόστολο και Ευαγγελιστή Λου...
Εικόνες της Παναγίας που αποδίδονται στον Άγιο, Απόστολο και  Ευαγγελιστή Λου...Εικόνες της Παναγίας που αποδίδονται στον Άγιο, Απόστολο και  Ευαγγελιστή Λου...
Εικόνες της Παναγίας που αποδίδονται στον Άγιο, Απόστολο και Ευαγγελιστή Λου...
 
Μαθαίνω ποια είναι τα γεωμετρικά σχήματα
Μαθαίνω ποια είναι τα γεωμετρικά σχήματαΜαθαίνω ποια είναι τα γεωμετρικά σχήματα
Μαθαίνω ποια είναι τα γεωμετρικά σχήματα
 
YlhNeaEllhnikaA-both-2324.pdf. 56thJHS of Athens
YlhNeaEllhnikaA-both-2324.pdf. 56thJHS of AthensYlhNeaEllhnikaA-both-2324.pdf. 56thJHS of Athens
YlhNeaEllhnikaA-both-2324.pdf. 56thJHS of Athens
 
Το βιβλιο του μηδέν.pdf για Α τάξη -μαθηματικά-αριθμός
Το βιβλιο του μηδέν.pdf για Α τάξη -μαθηματικά-αριθμόςΤο βιβλιο του μηδέν.pdf για Α τάξη -μαθηματικά-αριθμός
Το βιβλιο του μηδέν.pdf για Α τάξη -μαθηματικά-αριθμός
 
YlhBiologyC-2324.pdf SchoolYear: 2023-2024
YlhBiologyC-2324.pdf SchoolYear: 2023-2024YlhBiologyC-2324.pdf SchoolYear: 2023-2024
YlhBiologyC-2324.pdf SchoolYear: 2023-2024
 
Activate Communicate Think Democratically Conference Pieria
Activate Communicate Think Democratically Conference PieriaActivate Communicate Think Democratically Conference Pieria
Activate Communicate Think Democratically Conference Pieria
 
YlhEikastikaB-2324.pdf. 56th Junior High School of Athens.
YlhEikastikaB-2324.pdf. 56th Junior High School of Athens.YlhEikastikaB-2324.pdf. 56th Junior High School of Athens.
YlhEikastikaB-2324.pdf. 56th Junior High School of Athens.
 
Θέματα και Απαντήσεις - Νεοελληνική Γλώσσα 2024.pdf
Θέματα και Απαντήσεις - Νεοελληνική Γλώσσα 2024.pdfΘέματα και Απαντήσεις - Νεοελληνική Γλώσσα 2024.pdf
Θέματα και Απαντήσεις - Νεοελληνική Γλώσσα 2024.pdf
 
YlhArxaiwnB-both-2324.pdf. 56thJHS of Athens
YlhArxaiwnB-both-2324.pdf. 56thJHS of AthensYlhArxaiwnB-both-2324.pdf. 56thJHS of Athens
YlhArxaiwnB-both-2324.pdf. 56thJHS of Athens
 
Σ.Α.Ε.Κ. ΣΠΑΡΤΗΣ (ΗΜΕΡΙΔΑ - ΗΜΕΡΑ ΚΑΡΙΕΡΑΣ)
Σ.Α.Ε.Κ. ΣΠΑΡΤΗΣ (ΗΜΕΡΙΔΑ - ΗΜΕΡΑ ΚΑΡΙΕΡΑΣ)Σ.Α.Ε.Κ. ΣΠΑΡΤΗΣ (ΗΜΕΡΙΔΑ - ΗΜΕΡΑ ΚΑΡΙΕΡΑΣ)
Σ.Α.Ε.Κ. ΣΠΑΡΤΗΣ (ΗΜΕΡΙΔΑ - ΗΜΕΡΑ ΚΑΡΙΕΡΑΣ)
 
Οι μαθητές της Ε΄ ενδιαφέρονται για το περιβάλλον... στα Αγγλικά!.pptx
Οι μαθητές της Ε΄ ενδιαφέρονται για το περιβάλλον... στα Αγγλικά!.pptxΟι μαθητές της Ε΄ ενδιαφέρονται για το περιβάλλον... στα Αγγλικά!.pptx
Οι μαθητές της Ε΄ ενδιαφέρονται για το περιβάλλον... στα Αγγλικά!.pptx
 
Εκπαιδευτική επίσκεψη στο Μουσείο Δελφών.pdf
Εκπαιδευτική επίσκεψη στο Μουσείο Δελφών.pdfΕκπαιδευτική επίσκεψη στο Μουσείο Δελφών.pdf
Εκπαιδευτική επίσκεψη στο Μουσείο Δελφών.pdf
 
05. Λειτουργία συντήρηση Ομαδα Ε ΓΕΛ Νεσοποταμίας.pptx
05. Λειτουργία συντήρηση Ομαδα Ε ΓΕΛ Νεσοποταμίας.pptx05. Λειτουργία συντήρηση Ομαδα Ε ΓΕΛ Νεσοποταμίας.pptx
05. Λειτουργία συντήρηση Ομαδα Ε ΓΕΛ Νεσοποταμίας.pptx
 
ΥΛΙΚΟ για Σχολική Διαμεσολάβηση Οκτώβριος 2023-Μάιος 2024
ΥΛΙΚΟ για Σχολική Διαμεσολάβηση Οκτώβριος 2023-Μάιος 2024ΥΛΙΚΟ για Σχολική Διαμεσολάβηση Οκτώβριος 2023-Μάιος 2024
ΥΛΙΚΟ για Σχολική Διαμεσολάβηση Οκτώβριος 2023-Μάιος 2024
 
2023-24 ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΥ-F2xlsx1.pdf
2023-24 ΠΡΟΓΡΑΜΜΑ  ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΥ-F2xlsx1.pdf2023-24 ΠΡΟΓΡΑΜΜΑ  ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΥ-F2xlsx1.pdf
2023-24 ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΥ-F2xlsx1.pdf
 
3ο ΓΕΛ Καστοριάς Πρόγραμμα Υιοθεσία Βυζαντινού Μνημείου Άγιοι Ανάργυροι
3ο ΓΕΛ Καστοριάς Πρόγραμμα Υιοθεσία Βυζαντινού Μνημείου Άγιοι Ανάργυροι3ο ΓΕΛ Καστοριάς Πρόγραμμα Υιοθεσία Βυζαντινού Μνημείου Άγιοι Ανάργυροι
3ο ΓΕΛ Καστοριάς Πρόγραμμα Υιοθεσία Βυζαντινού Μνημείου Άγιοι Ανάργυροι
 

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ

  • 1. H ΓΛΩΣΣΑ C Μάθηµα 5: ∆οµές Επανάληψης ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Πίνακες 1. Εισαγωγή στους Πίνακες 1. Μονοδιάστατοι Πίνακες 2. Παράδειγµα B. ∆οµές Επανάληψης 1. Γενικά 2. Η δοµή for 1. Συντακτικό της for 2. ∆ιάγραµµα Ροής Προγράµµατος 3. Παραδείγµατα Εκτέλεσης 3. Η δοµή do,while 1. Συντακτικό της do,while 2. ∆ιάγραµµα Ροής Προγράµµατος 3. Παραδείγµατα Εκτέλεσης 4. Αµυντικός Προγραµµατισµός 4. Η δοµή while 1. Συντακτικό της while 2. ∆ιάγραµµα Ροής Προγράµµατος 3. Παραδείγµατα Εκτέλεσης 4. Αµυντικός Προγραµµατισµός 2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης 5. Συµπεράσµατα 1. Προτεινόµενη χρήση των δοµών επανάληψης 2. Προσοµοίωση της for από την while και τη do..while Γ. Ασκήσεις 1. Άθροισµα και Γινόµενο Αριθµών 2. Εµφωλιασµένοι Βρόχοι: Εκτύπωση Αθροισµάτων 3. Εµφωλιασµένοι Βρόχοι: Εκτύπωση Παραλληλογράµµου 4. Εµφωλιασµένοι Βρόχοι: Εκτύπωση Τριγώνου 5. Άθροισµα Αριθµών µε Χρήση Πίνακα 6. Γινόµενο Αριθµών µε Χρήση Πίνακα 7. Ελάχιστος από N αριθµούς 8. Μέσος Όρος Ν αριθµών
  • 3. A. Πίνακες 1. Εισαγωγή στους Πίνακες 1. Μονοδιάστατοι Πίνακες 3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Ένας πίνακας είναι µια σειρά από µεταβλητές ίδιου τύπου αποθηκευµένες στην µνήµη. Για παράδειγµα ένας πίνακας 10 ακεραίων είναι 10 ακέραιες µεταβλητές αποθηκευµένες στην σειρα (η µία µετά την άλλη) στην µνήµη. Ένας πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντόλη της µορφής: Όπου: Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα. ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα. ΠΛΗΘΟΣ (προσέξτε ότι είναι µέσα σε αγκύλες): Πόσες µεταβλητές θα περιέχει ο πίνακας Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ];
  • 4. A. Πίνακες 1. Εισαγωγή στους Πίνακες 1. Μονοδιάστατοι Πίνακες 4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Για παράδειγµα µε την δήλωση: ∆ηλώνουµε έναν πίνακα µε 4 ακέραιες µεταβλητές. Με την εντολή δήλωσης, δεσµεύεται στην µνήµη χώρος για τον πίνακα και είναι σηµαντικό ότι οι θέσεις αυτές είναι σε µια σειρά. Τα ονόµατα των 4µεταβλητών που κατασκευάσαµε είναι: pin[0], pin[1], pin[2], pin[3] Παρατηρούµε ότι η αρίθµηση ξεκινά από το 0 έως και ένα λιγότερο από τον αριθµό που δηλώσαµε. Άρα µετά την εντολή δήλωσης, έχουν δεσµευτεί 4 διαδοχικές (προσοχή!) θέσεις στην µνήµη για να αποθηκεύσουν τιµές σε αυτές τις µεταβλητές: int pin[4]; pin[0] pin[1] pin[2] pin[3] ,
  • 5. A. Πίνακες 1. Εισαγωγή στους Πίνακες 2. Παράδειγµα 5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Μετά τη δήλωση του πίνακα είναι σαν να έχουµε 4 µεταβλητές που µπορούµε να χρησιµοποιήσουµε στο πρόγραµµά µας. ∆είτε για παράδειγµα το εξής απλό πρόγραµµα: Οι µεταβλητές διαχειρίζονται όπως οι τυπικές ακέραιες µεταβλητές /* array.c: Aplo programma me pinaka */ #include <stdio.h> int main() { int pin[3]; int sum; pin[0]=1; pin[1]=3; pin[2]=4; sum=pin[0]+pin[1]+pin[2]; printf("n%d+%d+%d=%d",pin[0],pin[1],pin[2],sum); } • Προσοχή, να µην γράψουµε αριθµό για όριο του πίνακα που είναι εκτός του επιτρεπτού. Π.χ. Αν έχουµε δήλωση int pin[4]; και γράψουµε για όνοµα µεταβλητής pin[5] θα έχουµε σφάλµα όταν θα εκτελέσουµε το πρόγραµµα! • Περισσότερα για τους πίνακες θα δούµε σε επόµενο µάθηµα, όπου θα δούµε και πολυδιάστατους πίνακες (διδιάστατους, τριδιάστατους κ.λπ.) • Εδώ κάνουµε µια απλή αναφορά στους πίνακες για να τους χρησιµοποιήσουµε µε τη δοµή επανάληψης στις ασκήσεις. Πολύ περισσότερα σε επόµενο µάθηµα.
  • 6. B. ∆οµές Επανάληψης 1. Γενικά 6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Η εντολή επανάληψης είναι η σηµαντικότερη δοµή σε ένα πρόγραµµα. ...διότι µας επιτρέπει να εκτελέσουµε ένα τµήµα κώδικα πολλές φορές, το οποίο είναι το κύριο χαρακτηριστικό του προγραµµατισµού. Στη γλώσσα C που µαθαίνουµε, υπάρχουν τρεις τρόποι για να κάνουµε επανάληψη της εκτέλεσης ενός τµήµατος κώδικα: Η εντολή for ( ,; , ; ,) { , } στην οποία ρητά αναφέρουµε πόσες φορές θέλουµε να εκτελεστεί ένα τµήµα κώδικα. Η εντολή while(,) { , } Η εντολή do{,} while(,); Θα αναλύσουµε τους τρεις τρόπους επανάληψης και πότε χρησιµοποιούµε τον καθένα
  • 7. Β. ∆οµές Επανάληψης 2. Η δοµή for 1. Συντακτικό της for 7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Το συντακτικό της εντολής for είναι: ∆είτε ότι αν τρέχουµε µία εντολή τότε δεν είµαστε αναγκασµένοι να χρησιµοποιήσουµε άγκιστρα, αλλιώς αν τρέχουµε παραπάνω από µία εντολή πρέπει να βάλουµε τις εντολές σε άγκιστρα (όπως στην if, ακολουθεί την for ένα µπλοκ κώδικα). Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες: 1. Τρέχει η αρχική: είναι µια εντολή που τρέχει µία µόνο φορά στην αρχή. Αναφέρεται και σαν εντολή αρχικοποίησης 2. Ελέγχεται η συνθήκη: συνήθως είναι µια σύγκριση τιµών. 2.1 Αν η συνθήκη είναι ψευδής, τότε βγαίνουµε από την for και πάµε στην αµέσως επόµενη εντολή. 2.2. Αλλιώς αν η συνθήκη είναι αληθής, εκτελείται η εντολή αύξηση και µεταβαίνουµε και πάλι στο βήµα 2. for( αρχική; συνθήκη; βήµα) εντολή; for( αρχική; συνθήκη; βήµα) { (εντολές) }
  • 8. Β. ∆οµές Επανάληψης 2. Η δοµή for 2. ∆ιάγραµµα Ροής Προγράµµατος 8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 4: Μάθηµα 5: ∆οµές Επανάληψης Και το διάγραµµα ροής προγράµµατος: [προηγούµενες εντολές] for( αρχική; συνθήκη; βήµα) εντολή; [επόµενες εντολές] [προηγούµενες εντολές] for( αρχική; συνθήκη; βήµα) { (εντολές) } [επόµενες εντολές] συνθήκη (εντολές) ΟΧΙ [προηγούµενες εντολές] [επόµενες εντολές] (αρχική) βήµα ΝΑΙ
  • 9. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 1: Τι κάνει το ακόλουθο τµήµα κώδικα; Απάντηση: Εκτελείται η εντολή i=1. Ελέγχεται αν i<=5. Είναι αληθές (1<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η αύξηση i++, άρα το i γίνεται 2. Ελέγχεται αν i<=5. Είναι αληθές (2<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η αύξηση i++, άρα το i γίνεται 3. Ελέγχεται αν i<=5. Είναι αληθές (3<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η αύξηση i++, άρα το i γίνεται 4. Ελέγχεται αν i<=5. Είναι αληθές (4<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η αύξηση i++, άρα το i γίνεται 5. Ελέγχεται αν i<=5. Είναι αληθές (5<=5), άρα τυπώνεται «Καληµέρα» και εκτελείται η αύξηση i++, άρα το i γίνεται 6. Ελέγχεται αν i<=5. Είναι ψευδές (6<=5), άρα µεταβαίνουµε στην αµέσως επόµενη εντολή µετά την for. Άρα το τµήµα κώδικα τυπώνει 5 φορές στην οθόνη τη λέξη ΚΑΛΗΜΕΡΑ for (i=1; i<=5; i++) printf("nKalimera");
  • 10. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Συνήθως στις εφαρµογές χρησιµοποιείται η τιµή της µεταβλητής που τροποποιείται στην αύξηση. Είναι σηµαντικό ότι σε κάθε επανάληψη η τιµή της µεταβλητής είναι διαφορετική Παράδειγµα 2: Τι κάνει το ακόλουθο τµήµα κώδικα; Απάντηση: Εκτελείται η εντολή i=1. Ελέγχεται αν i<=3. Είναι αληθές (1<=3), άρα τυπώνεται «1» και εκτελείται η αύξηση i++, άρα το i γίνεται 2. Ελέγχεται αν i<=3. Είναι αληθές (2<=3), άρα τυπώνεται «2» και εκτελείται η αύξηση i++, άρα το i γίνεται 3. Ελέγχεται αν i<=3. Είναι αληθές (3<=3), άρα τυπώνεται «3» και εκτελείται η αύξηση i++, άρα το i γίνεται 4. Ελέγχεται αν i<=3. Είναι ψευδές (4<=3), άρα µεταβαίνουµε στην αµέσως επόµενη εντολή µετά την for. Και το πρόγραµµα τερµατίζει for (i=1; i<=3; i++) printf("n%d“,i); Συνήθως στις εφαρµογές χρησιµοποιείται η τιµή της µεταβλητής που τροποποιείται στην αύξηση. Είναι σηµαντικό ότι σε κάθε επανάληψη η τιµή της µεταβλητής είναι διαφορετική
  • 11. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 3: Τι κάνει το ακόλουθο τµήµα κώδικα (οι j,x είναι ακέραιες µεταβλητες); Απάντηση: Οι εντολές που περικλείονται ανάµεσα στα άγκιστρα εκτελούνται για τις διαδοχικές τιµές της µεταβλητής. Άρα: Εκτελείται η εντολή j=0. Ελέγχεται αν j<2. Είναι αληθές (0<2), άρα υπολογίζεται x=0*0-1=-1 άρα τυπώνεται «-1» και εκτελείται η αύξηση j++, άρα το j γίνεται 1. Ελέγχεται αν j<2. Είναι αληθές (1<2), άρα υπολογίζεται x=1*1-1=0 άρα τυπώνεται «0» και εκτελείται η αύξηση j++, άρα το j γίνεται 2. Ελέγχεται αν j<2. Είναι ψευδές (2<2), άρα µεταβαίνουµε στην επόµενη εντολή µετά τη for. for (j=0; j<2; j++) { x=j*j-1; printf("n%d",x); } Συνήθως, χρησιµοποιώντας την τιµή της µεταβλητής κάνουµε ακόµη και περίπλοκους υπολογισµούς.
  • 12. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 4: Τι κάνει το ακόλουθο τµήµα κώδικα (οι j,x είναι ακέραιες µεταβλητές); Απάντηση: Οι εντολές που περικλείονται ανάµεσα στα άγκιστρα εκτελούνται για τις διαδοχικές τιµές της µεταβλητής. Άρα: Εκτελείται η εντολή j=2. Ελέγχεται αν j>=0. Είναι αληθές (2>=0), άρα υπολογίζεται x=2*2-1=3 άρα τυπώνεται «3» και εκτελείται η µείωση j--, άρα το j γίνεται 1. Ελέγχεται αν j>=0. Είναι αληθές (1>=0), άρα υπολογίζεται x=1*1-1=0 άρα τυπώνεται «0» και εκτελείται η µείωση j--, άρα το j γίνεται 0. Ελέγχεται αν j>=0. Είναι αληθές (0>=0), άρα υπολογίζεται x=0*0-1=0 άρα τυπώνεται «-1» και εκτελείται η µείωση j--, άρα το j γίνεται -1. Ελέγχεται αν j>=0. Είναι ψευδές (-1>=0), άρα µεταβαίνουµε στην επόµενη εντολή µετά τη for. for (j=2; j>=0; j--) { x=j*j-1; printf("n%d",x); } Ας δούµε και ένα παράδειγµα που η µεταβλητή µειώνεται αντί να αυξάνεται.
  • 13. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 5: Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή); Απάντηση: Εκτελείται η εντολή i=0. Ελέγχεται αν i<=6. Είναι αληθές (0<=6), υπολογίζεται 0*0=0 τυπώνεται «0» και εκτελείται η αύξηση i+=2, άρα το i γίνεται 2. Ελέγχεται αν i<=6. Είναι αληθές (2<=6), υπολογίζεται 2*2=4 τυπώνεται «4» και εκτελείται η αύξηση i+=2, άρα το i γίνεται 4. Ελέγχεται αν i<=6. Είναι αληθές (4<=6), υπολογίζεται 4*4=16 τυπώνεται «16» και εκτελείται η αύξηση i+=2, άρα το i γίνεται 16. Ελέγχεται αν i<=6. Είναι αληθές (6<=6), υπολογίζεται 6*6=36 τυπώνεται «36» και εκτελείται η αύξηση i+=2, άρα το i γίνεται 8. Ελέγχεται αν i<=6. Είναι ψευδές (8<=6), άρα µεταβαίνουµε στην επόµενη εντολή µετά τη for. for (i=0; i<=6; i+=2) printf("n%d",i*i); Μπορούµε να έχουµε και οποιοδήποτε βήµα αύξησης επιθυµούµε µε το κατάλληλο συντακτικό.
  • 14. Β. ∆οµές Επανάληψης 2. Η δοµή for 3. Παραδείγµατα Εκτέλεσης 14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Αν και ο συνηθισµένος τρόπος χρήσης της for, είναι κάποιος από αυτούς που είδαµε, έχουµε επιπλέον δικαίωµατα: Να βάλουµε παραπάνω απο µία αρχικές εντολές (χωρισµένες µε κόµµα) Να βάλουµε παραπάνω από µια εντολές αύξησης (χωρισµένες µε κόµµα) Να έχουµε πιο σύνθετες συνθήκες (π.χ. και µε λογικό έλεγχο.) Εκτελέστε το παρακάτω πρόγραµµα: /* complex_for.c: Deixnei to olokliromeno sintaktiko tis for */ #include <stdio.h> main() { int i,j; for (i=0,j=0; i<5 && j<5; i++,j+=2) printf("ni=%d,j=%d: ",i,j); }
  • 15. Β. ∆οµές Επανάληψης 3. Η δοµή do..while 1. Συντακτικό της do..while 15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Το συντακτικό της εντολής do`while (επανέλαβε`όσο) είναι: Με την παρατήρηση ότι εδώ δεν µπορούµε να παραλείψουµε τα άγκιστρα!. Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες: 1. Εκτελούνται οι εντολές 2. Ελέγχεται η συνθήκη: (την οποία έχουµε συντάξει µε λογικούς και σχεσιακούς τελεστές) 2.1 Αν η απάντηση είναι ΑΛΗΘΗΣ (ισχύει η συνθήκη), τότε ξαναρχίζουµε από την αρχή (πρώτη εντολή µετά από το do) 2.2 Αν η απάντηση είναι ΨΕΥ∆ΗΣ (δεν ισχύει η συνθήκη), τότε βγαίνουµε από την επανάληψη και τρέχουµε την αµέσως επόµενη εντολή µετά τη while. do { (Εντολές) } while (Συνθήκη);
  • 16. Β. ∆οµές Επανάληψης 3. Η δοµή do..while 2. ∆ιάγραµµα Ροής Προγράµµατος 16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Και το διάγραµµα ροής προγράµµατος: Παρατηρήστε ότι η συνθήκη ελέγχεται αφού έχουν εκτελεστεί οι εντολές συνθήκη (εντολές) ΟΧΙ [προηγούµενες εντολές] [επόµενες εντολές] ΝΑΙ [προηγούµενες εντολές] do { (Εντολές) } while (Συνθήκη); [επόµενες εντολές]
  • 17. Β. ∆οµές Επανάληψης 3. Η δοµή do`while 3. Παραδείγµατα Εκτέλεσης 17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 1: Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή); Αρχικά i=0 Γίνεται επανάληψη: Τίθεται i=0+1=1 και τυπώνεται «1» Γίνεται έλεγχος συνθήκης. 1<3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε Γίνεται επανάληψη: Τίθεται i=1+1=2 και τυπώνεται «2» Γίνεται έλεγχος συνθήκης. 2<3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε Γίνεται επανάληψη: Τίθεται i=2+1=3 και τυπώνεται «3» Γίνεται έλεγχος συνθήκης. 3<3 είναι ΨΕΥ∆ΗΣ, άρα δεν θα επαναλαβουµε και πηγαίνουµε στην επόµενη εντολή του κώδικα. i=0; do{ i=i+1; printf("n%d",i); } while(i<3); Μπορούµε να χρησιµοποιήσουµε την do..while µε αντίστοιχο τρόπο µε την for.
  • 18. Β. ∆οµές Επανάληψης 3. Η δοµή do`while 3. Παραδείγµατα Εκτέλεσης 18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 2: Τι κάνει το ακόλουθο τµήµα κώδικα (η i είναι ακέραια µεταβλητή); Αρχικά i=5 Γίνεται επανάληψη: Τίθεται i=5+1=6 και εκτυπώνεται «6» Γίνεται έλεγχος συνθήκης. 6>3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε Γίνεται επανάληψη: Τίθεται i=6+1=7 και εκτυπώνεται «7» Γίνεται έλεγχος συνθήκης. 7>3 είναι ΑΛΗΘΗΣ, άρα θα επαναλαβουµε.... ..... Θα τερµατίσει ποτέ το πρόγραµµα? Η απάντηση είναι ΟΧΙ! Σε κάθε επανάληψη το i θα αυξάνεται, άρα ποτέ δεν θα γίνει <= 3! i=5; do{ i=i+1; printf("n%d",i); } while(i>3); Και εδώ θα κάνουµε ένα από τα πιο συχνά λάθη! Θα πέσουµε σε ατέρµονα βρόχο! Ατέρµων βρόχος (infinite loop) είναι µία (επανάληψη που δεν ολοκληρώνεται ποτέ) Αποτελεί από τα συχνότερα προγραµµατιστικά λάθη!
  • 19. Β. ∆οµές Επανάληψης 3. Η δοµή do`while 3. Παραδείγµατα Εκτέλεσης 19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Σχηµατικά: i=0; <- Εντολή Αρχικοποίησης (την γράφουµε εµείς) do{ (εντολή ή εντολές) i=i+1; <- Εντολή αύξησης µεταβλητής (την γράφουµε εµείς) } while (i<=3); <- Συνθήκη Παρατήρηση: Η σύνταξη της δοµής είναι αρκετά απλή, αλλά θα πρέπει εµείς, ως προγραµµατιστές να συντάξουµε σωστά τις υπόλοιπες εντολές. Συγκεκριµένα: Πρέπει να αρχικοποιήσουµε σωστά την µεταβλητή που θα έχουµε στην εντολή συνθήκης. Έτσι πριν την do θα πρέπει να αρχικοποιήσουµε την µεταβλητή που θα χρησιµοποιήσουµε (εντολή αρχικοποίησης) Πρέπει η µεταβλητή που έχουµε στην εντολή αρχικοποίησης να επηρεάζεται στο σώµα της επανάληψης (εντολή αύξησης µεταβλητής)
  • 20. Β. ∆οµές Επανάληψης 3. Η δοµή do`while 4. Αµυντικός Προγραµµατισµός 20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Στην επόµενη διαφάνεια φαίνεται πως θα κάνουµε αµυντικό προγραµµατισµό για να διαβάσουµε έναν αριθµό από 1 εώς 100. Αν ξέρουµε πόσες φορές θέλουµε να τρέξει η επανάληψη, είναι προτιµότερο να χρησιµοποιήσουµε for, γιατί στο συντακτικό της γράφουµε τις εντολές αρχικοποιήσης και αύξησης, και έτσι ελαχιστοποιείται η πιθανότητα λάθους. Ωστόσο η δοµή do..while είναι πολύ χρήσιµη όταν θέλουµε να διαβάσουµε µεταβλητές που να έχουν συγκεκριµένες τιµές. Π.χ. Αν θέλουµε να διαβάσουµε έναν ακέραιο µεταξύ 1 και 100 και πρέπει να αποφύγουµε ο χρήστης να εισάγει µία λανθασµένη τιµή τότε εφαρµόζουµε αµυντικό προγραµατισµό και κάνουµε έλεγχο αν η τιµή που εισήγαγε ο χρήστης είναι σωστή. Έτσι τον αναγκάζουµε να επαναπληκτρολογήσει µέχρι να βάλει την σωστή τιµή. Ο αµυντικός προγραµµατισµός είναι καλή προγραµµατιστική τακτική σε προγράµµατα που ζητάµε είσοδο από τον χρήστη.
  • 21. Β. ∆οµές Επανάληψης 3. Η δοµή do`while 4. Αµυντικός Προγραµµατισµός 21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης /* defensive.c: Amintikos Programmatismos gia to diavasma enos akeraioy */ #include <stdio.h> main() { int i; do { printf("Dwste enan akeraio apo 1 ews 100: "); scanf("%d",&i); } while (i<1 || i>100); printf("Eisagate arithmo mesa sta oria 1 ews 100: %d",i); }
  • 22. Β. ∆οµές Επανάληψης 4. Η δοµή while 1. Συντακτικό της while 22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Το συντακτικό της δοµής while (επανέλαβε) είναι ίδια µε την do..while µε την µόνη διαφορά ότι ο έλεγχος γίνεται στην αρχή της επανάληψης και όχι στο τέλος της επανάληψης : Και εδώ αν έχουµε µόνο µία εντολή µπορούµε να παραλείψουµε τα άγκιστρα! Με το παραπάνω συντακτικό γίνονται οι εξής ενέργειες: 1. Ελέγχεται η συνθήκη: (την οποία έχουµε συντάξει µε λογικούς και σχεσιακούς τελεστές) 1.1 Αν η απάντηση είναι ΑΛΗΘΗΣ (ισχύει η συνθήκη), τότε ξαναρχίζουµε από την αρχή (πρώτη εντολή µετά από το do) 1.2 Αν η απάντηση είναι ΨΕΥ∆ΗΣ (δεν ισχύει η συνθήκη), τότε βγαίνουµε από την επανάληψη και τρέχουµε την αµέσως επόµενη εντολή µετά τη while. while(Συνθήκη) { (Εντολή ή Εντολές) }
  • 23. Β. ∆οµές Επανάληψης 4. Η δοµή while 2. ∆ιάγραµµα Ροής Προγράµµατος 23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Και το διάγραµµα ροής προγράµµατος: Παρατηρήστε ότι η συνθήκη ελέγχεται πριν εκτελεστούν οι εντολές συνθήκη (εντολές) ΟΧΙ [προηγούµενες εντολές] [επόµενες εντολές] ΝΑΙ [προηγούµενες εντολές] while(Συνθήκη) { (Εντολές) } [επόµενες εντολές]
  • 24. Β. ∆οµές Επανάληψης 4. Η δοµή while 3. Παραδείγµατα Εκτέλεσης 24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Παράδειγµα 1: Τι κάνει το ακόλουθο τµήµα κώδικα (οι k,l είναι ακέραιες µεταβλητές); Απάντηση: Αρχικοποιείται το k µε 5 Γίνεται ο έλεγχος συνθήκης (5<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα l=2*5+1=11 και k=5+1=6. Τυπώνεται «11». Γίνεται ο έλεγχος συνθήκης (6<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα l=2*6+1=13 και k=6+1=7. Τυπώνεται «13». Γίνεται ο έλεγχος συνθήκης (7<8). Είναι ΑΛΗΘΕΣ, άρα γίνονται τα βηµατα l=2*7+1=15 και k=7+1=8. Τυπώνεται «15». Γίνεται ο έλεγχος συνθήκης (8<8). Είναι ΨΕΥ∆ΕΣ, άρα τερµατίζει η επανάληψη. k=5; while(k<8) { l=2*k+1; k=k+1; printf("%d",l); } Ένα πρώτο παράδειγµα, για την αντιστοιχία µε τις άλλες δοµές επανάληψης
  • 25. Β. ∆οµές Επανάληψης 5. Συµπεράσµατα 1. Προτεινόµενη Χρήση των ∆οµών Επανάληψης 25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Βλέπουµε ότι και οι 3 εντολές επανάληψης µε παρόµοιο τρόπο κάνουν τις ίδιες ενέργειες. Η πιο συνηθισµένη δοµή είναι η for και την χρησιµοποιούµε όταν ξέρουµε ποιες τιµές θα πάρει η µεταβλητή. Αν δεν ξέρουµε ακριβώς ποιες τιµές θα πάρει ή µεταβλητή ή πόσες φορές πρέπει να γίνει η επανάληψη, τότε χρησιµοποιούµε την δοµή while. Η δοµή do,while χρησιµοποιείται πιο σπάνια, κυρίως για αµυντικό προγραµµατισµό σε διάβασµα µεταβλητών.
  • 26. Β. ∆οµές Επανάληψης 5. Συµπεράσµατα 2. Προσοµοίωση της for από την while και την do..while 26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Ενδιαφέρον επίσης έχει ότι η εντολή for µπορεί να προσοµοιωθεί από τις άλλες δύο ως ακολούθως: Με εντολή while Με εντολή do`while for (i=1; i<=10; i++) { (Εντολή ή εντολές) } i=1; while(i<=10) { (Εντολή ή εντολές) i=i+1; } i=1; do{ (Εντολή ή εντολές) i=i+1 }while(I<=10);
  • 27. Γ. Ασκήσεις Εφαρµογή 1 (Άθροισµα και Γινόµενο Αριθµών) 27∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης (α)Τι κάνει το ακόλουθο πρόγραµµα; (β) Πως µπορούµε να τροποποιήσουµε το πρόγραµµά µας, έτσι ώστε να προστίθενται 10 αριθµοί αντί για 3. (γ) Γράψτε το πρόγραµµα ask1_ginomeno.c που θα υπολογίζει το γινόµενο των 3 αριθµών που διαβάζει από την είσοδο. /* ask1.c */ #include <stdio.h> main() { int i,sum,x; sum=0; for(i=1; i<=3; i++) { printf("nEisagete ton %d-o arithmo: ",i); scanf("%d",&x); sum=sum+x; } printf("nn%d",sum); }
  • 28. Γ. Ασκήσεις Εφαρµογή 2 (Εµφωλιασµένοι Βρόχοι) 28∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Μεταγλωττίστε, εκτελέστε και µελετήστε το παρακάτω πρόγραµµα: /* ask2.c */ #include <stdio.h> main() { int i,j; for(i=1; i<=4; i++) { for (j=1; j<=4; j++) { printf("n%d+%d=%d",i,j,i+j); } } } Σηµείωση: Επειδή έχουµε επανάληψη µέσα στην επανάληψη, η παραπάνω δοµή χαρακτηρίζεται προγραµµατιστικά «εµφωλιασµένοι βρόχοι» (nested loops)
  • 29. Γ. Ασκήσεις Εφαρµογή 3 (Εµφωλιασµένοι Βρόχοι) 29∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης (α) Χωρίς να εκτελέσετε το πρόγραµµα, υπολογίστε πόσα X θα εκτυπώσει το ακόλουθο πρόγραµµα και µε ποια µορφή; (β) Εκτελέστε το πρόγραµµα και τροποποιήστε κατά βούληση το παραλληλόγραµµο που εκτυπώνεται. (γ) Μετατρέψτε το πρόγραµµα σε ένα ισοδύναµο που χρησιµοποιεί την εντολή while, αντί για την εντολή for. /* ask3.c */ #include <stdio.h> main() { int M,N; int i,j; M=10; N=20; for(i=0; i<=M; i++) { for (j=0; j<=N; j++) { printf("X"); } printf("n"); } }
  • 30. Γ. Ασκήσεις Εφαρµογή 4 (Εµφωλιασµένοι Βρόχοι) 30∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης (α) Χωρίς να εκτελέσετε το πρόγραµµα, υπολογίστε πόσα X θα εκτυπώσει το ακόλουθο προγραµµα και µε ποια µορφή; (β) Εκτελέστε το πρόγραµµα και τροποποιήστε κατά βούληση το “τρίγωνο” που εκτυπώνεται. (γ) Μετατρέψτε το πρόγραµµα σε ένα ισοδύναµο που χρησιµοποιεί την εντολή do`while, αντί για την εντολή for. /* ask4.c */ #include <stdio.h> main() { int N; int i,j; N=10; for(i=0; i<=N; i++) { for (j=i; j<=N; j++) { printf("X"); } printf("n"); } }
  • 31. Γ. Ασκήσεις Εφαρµογή 5 (Άθροισµα Αριθµών µε Πίνακα) 31∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Κατασκευάστε πρόγραµµα που: Προτρέπει τον χρήστη να εισάγει 10 ακέραιους αριθµούς και τους αποθηκεύει σε έναν µονοδιάστατο πίνακα 10 θέσεων. Έπειτα υπολογίζει το άθροισµα τους και το τυπώνει στην οθόνη.
  • 32. Γ. Ασκήσεις Εφαρµογή 6 (Γινόµενο Αριθµών µε Πίνακα) 32∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Κατασκευάστε πρόγραµµα που: Προτρέπει τον χρήστη να εισάγει 5 άκεραιους αριθµούς και τους αποθηκεύει σε έναν µονοδιάστατο πίνακα 5 θέσεων. Επίσης να εφαρµόζεται αµυντικός προγραµµατισµός, έτσι ώστε κάθε ακέραιος που εισάγει ο χρήστης να έχει τιµή από 1 εώς 8. Έπειτα υπολογίζει το γινόµενό τους και το τυπώνει στην οθόνη.
  • 33. Γ. Ασκήσεις Εφαρµογή 7 (Ελάχιστος από Ν αριθµούς) 33∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Κατασκευάστε πρόγραµµα που: Προτρέπει τον χρήστη να εισάγει έναν αριθµό Ν. Ο αριθµός Ν να είναι µεταξύ 1 και 20 µε εφαρµογή αµυντικού προγραµµατισµού. Έπειτα να διαβάζει από την είσοδο και να εισάγει Ν αριθµούς σε έναν µονοδιάστατο πίνακα. Τέλος, να βρίσκει και να τυπώνει τον ελάχιστο από τους Ν αριθµούς. Υπόδειξη: Όταν δεν ξέρουµε εκ των προτέρων το µέγεθος του πίνακα που θα χρησιµοποιήσουµε, δεσµεύουµε προκαταβολικά τον µέγιστο χώρο που µπορεί το πρόγραµµα να χρησιµοποιήσει. Για παράδειγµα σε αυτήν την άσκηση, θα πρέπει να κατασκευάσετε έναν πίνακα 20 θέσεων, παρόλο που το πρόγραµµα θα χρησιµοποιήσει τόσες θέσεις, όσο το Ν που θα εισάγει ο χρήστης. Σε επόµενο µάθηµα θα µάθουµε πως δεσµεύεται ο χώρος στην µνήµη δυναµικά. ∆ηλαδή κατά τον χρόνο εκτέλεσης να δεσµεύεται ο χώρος µνήµης που απαιτείται.
  • 34. Γ. Ασκήσεις Εφαρµογή 8 (Μέσος όρος Ν αριθµών) 34∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 5: ∆οµές Επανάληψης Κατασκευάστε πρόγραµµα που: Προτρέπει τον χρήστη να εισάγει έναν αριθµό Ν. Ο αριθµός Ν να είναι µεταξύ 1 και 20 µε εφαρµογή αµυντικού προγραµµατισµού. Έπειτα να διαβάζει από την είσοδο και να εισάγει Ν αριθµούς σε έναν µονοδιάστατο πίνακα. Τέλος, να βρίσκει και να τυπώνει τον µέσο όρο των Ν αριθµών. Υπόδειξη: Όταν δεν ξέρουµε εκ των προτέρων το µέγεθος του πίνακα που θα χρησιµοποιήσουµε, δεσµεύουµε προκαταβολικά τον µέγιστο χώρο που µπορεί το πρόγραµµα να χρησιµοποιήσει. Για παράδειγµα σε αυτήν την άσκηση, θα πρέπει να κατασκευάσετε έναν πίνακα 20 θέσεων, παρόλο που το πρόγραµµα θα χρησιµοποιήσει τόσες θέσεις, όσο το Ν που θα εισάγει ο χρήστης. Σε επόµενο µάθηµα θα µάθουµε πως δεσµεύεται ο χώρος στην µνήµη δυναµικά. ∆ηλαδή κατά τον χρόνο εκτέλεσης να δεσµεύεται ο χώρος µνήµης που απαιτείται.