ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ



Σχετικά έγγραφα
Κεφάλαιο 5ο: Εντολές Επανάληψης

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ιαφάνειες παρουσίασης #3

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. i. Η συνθήκη α > β ή α <= β α) είναι πάντα Αληθής β) είναι πάντα Ψευδής γ) δεν υπολογίζεται δ) τίποτα από τα προηγούμενα

Εισαγωγή στην πληροφορική

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

3. Να γραφεί πρόγραμμα που θα διαβάζει 100 ακεραίους αριθμούς από το πληκτρολόγιο και θα υπολογίζει το άθροισμά τους.

Ασκή σεις στή δομή επανα λήψής

Διάγραμμα Ροής. Σελίδα 1 από 10

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Εισαγωγή στην πληροφορική

ιαφάνειες παρουσίασης #3

ιαφάνειες παρουσίασης #4

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

ÏÌÉÊÑÏÍ ÖÑÏÍÔÉÓÔÇÑÉÏ ÊÏÑÄÅËÉÏ

ιαφάνειες παρουσίασης #2

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ÅÐÉËÏÃÇ

Στην εντολή while η επανάληψη συνεχίζεται όσο η λογική έκφραση έχει τιμή false.

for for for for( . */

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΕΠΠ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ / Γ3 Γ4 ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΝΟΕΜΒΡΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : ΕΞΙ (6)

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

Γ ΤΑΞΗ ΗΜΕΡΗΣΙΟΥ ΕΠΑ.Λ ΜΑΘΗΜΑ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΚΦΩΝΗΣΕΙΣ

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. i. Η συνθήκη α > β ή α <= β α) είναι πάντα Αληθής β) είναι πάντα Ψευδής γ) δεν υπολογίζεται δ) τίποτα από τα προηγούμενα

Β ΛΥΚΕΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

Δομημένος Προγραμματισμός

ιαφάνειες παρουσίασης #4

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

- program p_name(input) - uses crt

Παρατηρήσεις για την δομή Όσο..επανάλαβε( ΣΟΣ)

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ΕΚΦΩΝΗΣΕΙΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

Β ΛΥΚΕΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΑΪΟΣ 2018

α. Λογικό διάγραμμα είναι η μέθοδος που χρησιμοποιεί απλά σχήματα που υποστηρίζονται με απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών.

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Επαναληπτικές Διαδικασίες

ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΡΟΟΠΤΙΚΗ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2012 ÈÅÌÅËÉÏ ΕΚΦΩΝΗΣΕΙΣ

Υπολογισμός - Εντολές Επανάληψης

Pascal, απλοί τύποι, τελεστές και εκφράσεις

ΓΕΝΙΚΟ ΛΥΚΕΙΟ ΚΑΡΠΕΝΗΣΙΟΥ ΙΩΡΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ 16/12/2008. Τµήµα ΓΤ2 Όνοµα:...

ΔΙΑΓΩΝΙΣΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ:- Γ ΛΥΚΕΙΟΥ ΤΜΗΜΑΤΑ: ΓΟ4 ΓΟ7 (ΖΩΓΡΑΦΟΥ) ΓΟ5 ΓΟ6 (ΧΟΛΑΡΓΟΣ) HM/NIA: 15/1/2017

ιαφάνειες παρουσίασης #5

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Να περιγραφεί η δομή επανάληψης Αρχή_επανάληψης Μέχρις_ότου

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

Μιχάλης Αρταβάνης κλάδου Πληροφορικής ΠΕ19

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

2.2.3 Η εντολή Εκτύπωσε

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ 2012

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Παλλατίδειο ΓΕΛ Σιδηροκάστρου

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ. ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i

ΙΑΓΩΝΙΣΜΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΛΥΚΕΙΟΥ

οµές Επανάληψης Π1. Να αναπτύξετε αλγόριθµο που θα εκτυπώνει τους αριθµούς από το 1 ως το 10.

4. Επιλογή και Επανάληψη

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΚΕΦΑΛΑΙΑ & 8.2 (ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ) ΘΕΩΡΙΑ

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10)

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: ΘΕΜΑ Α

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

Δομές Επανάληψης. Όσο μέχρις ότου για. 22/11/08 Ανάπτυξη εφαρμογών 1


ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΣΑΒΒΑΤΟ 4 ΙΟΥΝΙΟΥ 2005

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

Να γράψετε τα αποτελέσματα αυτού του αλγόριθμου για Χ=13, Χ=9 και Χ=22. Και στις 3 περιπτώσεις το αποτέλεσμα του αλγορίθμου είναι 1

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΙΑΧΕΙΡΙΣΗ Ε ΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ (Β ΕΞΑΜΗΝΟ) ιδάσκων: Επ. Καθηγητής Γρηγόρης Χονδροκούκης ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL (ΤΕΥΧΟΣ 2) Περιέχει: Η οµή for to do (Επιπλέον Ασκήσεις) Η οµή while do (Θεωρία & Ασκήσεις) Η οµή repeat... until... (Θεωρία & Ασκήσεις) ΠΕΙΡΑΙΑΣ ΜΑΪΟΣ 2003

Γ2. Η οµή Επανάληψης while do Χρησιµοποιείται όταν το πλήθος των επαναλήψεων ΕΝ είναι εκ των προτέρων γνωστό. Μπορεί όµως να χρησιµοποιηθεί ακόµα και όταν γνωρίζουµε το πλήθος των επαναλήψεων. while Συνθήκη_Συνέχειας do Οµάδα_Εντολών_της_While ; End Όπου: Συνθήκη_Συνέχειας είναι µία συνθήκη η οποία καθορίζει εάν θα εκτελεστεί η Οµάδα_Εντολών της δοµής ή όχι. Πιο συγκεκριµένα, εάν η τιµή της Συνθήκης_Συνέχειας είναι true (δηλαδή ισχύει) τότε εκτελείται η Οµάδα_Εντολών της δοµής και στη συνέχεια, το πρόγράµµα επιστρέφει στη γραµµή που περιέχει τη Συνθήκη_Συνέχειας. Αυτή η διαδικασία επαναλαµβάνεται µέχρις ότου η Συνθήκη_Συνέχειας λάβει την τιµή false. Εάν η τιµή της Συνθήκης_Συνέχειας είναι false (δηλαδή δεν ισχύει) η δοµή αυτόµατα τερµατίζεται και το πρόγραµµα µεταβαίνει στις γραµµές που ακολουθούν µετά τη δοµή. Οµάδα_Εντολών_της_While είναι οι εντολές που περιέχει η δοµή επανάληψης. Ο τρόπος µε τον οποίο λειτουργεί η συγκεκριµένη δοµή αλλά και η αναγκαιότητα χρήσης της κατά την ανάπτυξη δοµηµένων προγραµµάτων παρουσιάζεται στα επόµενα παραδείγµατα. Παράδειγµα 13: Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο πραγµατικούς αριθµούς και στη συνέχεια να τους εµφανίζει στην οθόνη. Το πρόγραµµα τερµατίζεται όταν εισαχθεί από το πληκτρολόγιο ο αριθµός µηδέν. Από την παραπάνω εκφώνηση είναι προφανές ότι δεν µπορούµε να χρησιµοποιήσουµε τη οµή Επανάληψης For to do, διότι το πλήθος των επαναλήψεων δεν είναι εκ των προτέρων γνωστό. ηλαδή το πρόγραµµα ενδεχοµένως να διαβάσει και περισσότερους από 10 πραγµατικούς αριθµούς ή είναι πιθανόν να διαβάσει και λιγότερους από 10 πραγµατικούς αριθµούς. Η αµφιβολία που έχουµε ως προς το πλήθος των αριθµών οι οποίοι αρχικά θα διαβαστούν και εν συνεχεία θα εµφανιστούν στην οθόνη µπορεί να εκφραστεί σε όρους προγραµµατισµού χρησιµοποιώντας τη δοµή επανάληψης While do. Το πρόγραµµα του παραδείγµατος 13 παρουσιάζεται στον επόµενο πίνακα: Program PARADEIGMA_13; Var Α: real; BEGIN Write( ώστε πραγµατικό αριθµό - 0 για τέλος: ); Readln(A); While Α <> 0 do Writeln( Ο αριθµός είναι ο:, A); Write( ώστε πραγµατικό αριθµό - 0 για τέλος: ); Readln(Α) END. 32

Π Α Ρ Α Τ Η Ρ Η Σ Ε Ι Σ Από την εκφώνηση γνωρίζουµε ότι το πρόγραµµα θα τερµατιστεί όταν διαβάσει το µηδέν. Όµως εµείς δεν γνωρίζουµε πότε θα εισάγει ο χρήστης την τιµή µηδέν. ηλαδή υπάρχει η "οριακή" περίπτωση όπου ο χρήστης για διάφορους λόγους (λανθασµένη επιλογή προγράµµατος, έλλειψη χρόνου, κλπ) επιθυµεί να δώσει το µηδέν στην αρχή (δηλαδή ο πρώτος πραγµατικός αριθµός που θα διαβαστεί να είναι το µηδέν). Για να καλύψουµε αυτή την περίπτωση τοποθετούµε την εντολή readln(α) αµέσως µετά την λέξη BEGIN και πριν από τη δοµή While. Αν ο πρώτος αριθµός που διαβάσει το πρόγραµµα δεν είναι µηδέν, τότε η Συνθήκη_ Συνέχειας θα επιτρέψει την εκτέλεση της Οµάδας_Εντολών της δοµής. ηλαδή το πρόγραµµα θα εµφανίσει στην οθόνη αυτόν τον αριθµό και στη συνέχεια θα εµφανίσει στην οθόνη ένα µήνυµα το οποίο προτρέπει τον χρήστη να εισάγει (ξανά) έναν πραγµατικό αριθµό. Προσέξτε το 0 για τέλος σε αυτό το µήνυµα. Πληροφορεί τον χρήστη ότι µπορεί να τερµατίσει την εισαγωγή και εµφάνιση πραγµατικών αριθµών οποιαδήποτε στιγµή αρκεί να δώσει την τιµή µηδέν. Παρατηρήστε τη δεύτερη εντολή readln(a) η οποία έχει τοποθετηθεί σε τέτοιο σηµείο εντός του προγράµµατος (είναι η τελευταία της Οµάδας_Εντολών) ώστε να αποφευχθεί η εµφάνιση του αριθµού µηδέν. Αυτό επιτυγχάνεται µε τη βοήθεια της Συνθήκης_Συνέχειας η οποία ελέγχει τις τιµές της µεταβλητής Α προτού αυτή εµφανιστεί στην οθόνη. Παρατηρήστε ότι στο συγκεκριµένο πρόγραµµα δεν χρειάστηκε να δηλωθεί και να χρησιµοποιηθεί κάποιος µετρητής. Αυτό συµβαίνει διότι µας ενδιαφέρει να αναπτύξουµε ένα πρόγραµµα για την ανάγνωση και την εµφάνιση µη µηδενικών πραγµατικών αριθµών. ηλαδή το πλήθος των επαναλήψεων είναι σχεδόν απεριόριστο (µόνο όταν αναγνώσει το πρόγραµµα το µηδέν, τότε πρέπει να σταµατά). Στο επόµενο παράδειγµα θα χρειαστεί να δηλωθεί µετρητής. Παράδειγµα 14: Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο το πολύ 10 µη µηδενικούς πραγµατικούς αριθµούς και στη συνέχεια να τους εµφανίζει στην οθόνη. Το πρόγραµµα θα πρέπει να τερµατίζεται αµέσως όταν (κατά την διάρκεια της εκτέλεσής του) εισαχθεί από το πληκτρολόγιο ο αριθµός µηδέν. Program PARADEIGMA_14; Var Α: real; Ι: integer; BEGIN Ι := 1 ; Write( ώστε πραγµατικό αριθµό - 10 συνολικά, 0 για τέλος: ); Readln(Α) ; While (Ι <= 10) and (Α <> 0) do Writeln( Ο αριθµός είναι:, Α); Ι := Ι + 1 ; Write( ώστε πραγµατικό αριθµό - 10 συνολικά, 0 για τέλος: ); Readln(Α) END. Π Α Ρ Α Τ Η Ρ Η Σ Ε Ι Σ Από την εκφώνηση προκύπτει ότι υπάρχουν 2 βασικοί περιορισµοί. Ο πρώτος περιορισµός είναι η ανάγνωση και η εµφάνιση το πολύ 10 µη µηδενικών πραγµατικών αριθµών. Ο δεύτερος 33

περιορισµός είναι ότι το πρόγραµµα τερµατίζεται µόλις διαβάσει το µηδέν. Θα πρέπει να βρεθεί ένας τρόπος ώστε οι 2 παραπάνω περιορισµοί να παρουσιαστούν στο πρόγραµµα µας. Αυτό πραγµατοποιείται µε σύζευξη 2 λογικών συνθηκών. Η πρώτη συνθήκη είναι η Ι <= 10. Χρησιµοποιούµε δηλαδή έναν µετρητή (τον Ι) ο οποίος φροντίζει ώστε να µην εισαχθούν περισσότεροι από 10 µη µηδενικοί πραγµατικοί αριθµοί. Η αρχική τιµή του Ι είναι 1 και τοποθετήθηκε αµέσως µετά την λέξη BEGIN (βλέπε εντολή Ι := 1). Η επιλογή της θέσης δεν είναι τυχαία. Πριν το πρόγραµµα διαβάσει τον πρώτο πραγµατικό αριθµό (βλ. πρώτη εντολή readln(a) ο µετρητής Ι έχει ήδη λάβει τιµή. Η δεύτερη συνθήκη είναι η Α <> 0. Η συνθήκη αυτή περιγράφει τον δεύτερο βασικό περιορισµό που υπάρχει στο συγκεκριµένο παράδειγµα. Η Συνθήκη_Συνέχειας είναι η εξής: (Ι <= 10) and (Α <> 0). Όµως κάποιος θα µπορούσε να ισχυριστεί ότι αντί σύζευξης θα µπορούσαµε να χρησιµοποιήσουµε διάζευξη, δηλαδή (Ι <= 10) or (Α <> 0). Ο λόγος για τον οποίο χρησιµοποιούµε σύζευξη και όχι διάζευξη στο συγκεκριµένο παράδειγµα είναι ο ακόλουθος: γνωρίζουµε ότι η οµάδα εντολών της οµής Επανάληψης While εκτελείται όσο η Συνθήκη_Συνέχειας είναι αληθής. Στην περίπτωση µας δεν επιθυµούµε το πρόγραµµα να αναγνώσει και να εµφανίσει περισσότερους από 10 µη µηδενικούς πραγµατικούς αριθµούς αλλά ούτε και να διαβάσει και να εµφανίσει το µηδέν. Έτσι χρησιµοποιώντας σύζευξη συνθηκών διασφαλίζουµε ότι ο χρήστης του προγράµµατος επιτρέπεται να δώσει µέχρι και 10 πραγµατικούς αριθµούς (βλέπε Ι <= 10) αρκεί αυτοί να είναι διάφοροι του µηδενός (βλέπε Α <> 0). Για να ελέγξουµε εάν η σύζευξη ανταποκρίνεται στις απαιτήσεις της εκφώνησης του συγκεκριµένου παραδείγµατος, αρκεί να µελετήσουµε την "συµπεριφορά" της στις παρακάτω 2 περιπτώσεις: Αν ο χρήστης έχει ήδη δώσει 10 µη µηδενικούς πραγµατικούς αριθµούς (δηλαδή και για τους 10 αριθµούς ικανοποιείται η συνθήκη Α <> 0) και θελήσει να δώσει άλλον έναν τουλάχιστον (µη µηδενικό), τότε η συνθήκη Ι <= 10 θα του απαγορεύσει να δώσει επιπλέον αριθµό. Παρατηρήστε ότι το πρόγραµµα θα απαγορεύσει την εκτέλεση της οµάδας εντολών της δοµής διότι µόνο όταν και οι δύο συνθήκες είναι αληθείς τότε και µόνο τότε επιτρέπεται η εκτέλεση της Οµάδας_Εντολών. Εάν είχαµε χρησιµοποιήσει διάζευξη, τότε η Συνθήκη_Συνέχειας θα επέτρεπε την εκτέλεση της Οµάδας_Εντολών. Η εκτέλεσή της θα σταµατούσε µόνο όταν ο χρήστης έδινε το µηδέν. Όµως τότε το πρόγραµµα θα είχε διαβάσει και θα είχε εµφανίσει τουλάχιστον 10 µη µηδενικούς πραγµατικούς αριθµούς, ενώ η εκφώνηση ορίζει το πολύ 10. Έστω ότι το πρόγραµµα έχει ήδη διαβάσει και εµφανίσει 2 µη µηδενικούς πραγµατικούς αριθµούς και δίνει τον τρίτο πραγµατικό αριθµό ο οποίος όµως είναι µηδέν. Σε αυτή την περίπτωση αν και η συνθήκη Ι <= 10 ικανοποιείται, το πρόγραµµα δεν θα επιτρέψει την εκτέλεση της Οµάδας_Εντολών (εντός της οποίας υπάρχει, µεταξύ άλλων, και η εµφάνιση του) διότι η συνθήκη Α <> 0 δεν ικανοποιείται. 34

Γ3. Η οµή Επανάληψης Repeat until Χρησιµοποιείται όταν το πλήθος των επαναλήψεων ΕΝ είναι εκ των προτέρων γνωστό. Repeat Οµάδα_Εντολών_της_repeat until Συνθήκη_Τέλους; Όπου: Συνθήκη_Τέλους είναι µία συνθήκη η οποία καθορίζει εάν θα συνεχίζει να εκτελείται η οµάδα εντολών της δοµής ή όχι. Πιο συγκεκριµένα αν η τιµή της Συνθήκης_Τέλους είναι fasle (δηλαδή δεν ισχύει) τότε συνεχίζεται η εκτέλεση της Οµάδας_Εντολών της δοµής. Εάν η τιµή της είναι true (δηλαδή ισχύει) τότε τερµατίζεται η εκτέλεση της δοµής. Οµάδα_Εντολών_της_repeat είναι οι εντολές που περιέχει η δοµή επανάληψης. Από τα παραπάνω είναι προφανής η διαφορά που υπάρχει µεταξύ της δοµής While και της δοµής Repeat. Στην µεν πρώτη, η Οµάδα_Εντολών εκτελείται µόνο όσο η Συνθήκη_Συνέχειας είναι αληθής, ενώ στη δεύτερη δοµή η Οµάδα_Εντολών εκτελείται µέχρις ότου η Συνθήκη_Τέλους να γίνει αληθής (ή ισοδύναµα µπορούµε να πούµε ότι η οµάδα εντολών εκτελείται όσο η Συνθήκη_Συνέχειας είναι ψευδής). ηλαδή στη δοµή While, ο έλεγχος για την εκτέλεση ή µη της Οµάδας_Εντολών πραγµατοποιείται στην αρχή (δηλαδή προτού ξεκινήσει η εκτέλεση της) ενώ στη δοµή Repeat ο έλεγχος πραγµατοποιείται στο τέλος (δηλαδή αφού έχει εκτελεστεί για µία τουλάχιστον φορά η Οµάδα_Εντολών). Με απλά λόγια µπορούµε να πούµε ότι η Συνθήκη_Τέλους είναι η αντίθετη της Συνθήκης_Συνέχειας. Στη οµή Επανάληψης repeat, η Οµάδα_Εντολών της εκτελείται τουλάχιστον µία φορά. ηλαδή είναι αδύνατον να αποτρέψουµε την ύπαρξη τουλάχιστον µίας επανάληψης. Στη οµή Επανάληψης while, η Οµάδα_Εντολών της µπορεί να µην εκτελεστεί ποτέ. ηλαδή µπορούµε να αποτρέψουµε την ύπαρξη επανάληψης. Αξίζει να σηµειωθεί ότι η δοµή repeat µπορεί να εφαρµοστεί και σε προβλήµατα δοµηµένου προγραµµατισµού όπου το πλήθος των επαναλήψεων είναι εκ των προτέρων γνωστό. Ο τρόπος µε τον οποίο λειτουργεί η συγκεκριµένη δοµή αλλά και η αναγκαιότητα χρήσης της κατά την ανάπτυξη δοµηµένων προγραµµάτων παρουσιάζεται στα επόµενα παραδείγµατα. Το πρώτο παράδειγµα το οποίο θα χρησιµοποιηθεί θα είναι το παράδειγµα 14. Το παράδειγµα αυτό χρησιµοποιείται σκοπίµως για να καταδείξει την µεγάλη (και παράλληλα ουσιαστική) διαφορά που υπάρχει µεταξύ της δοµής while και της δοµής repeat σχετικά µε τον έλεγχο που πραγµατοποιούν ως προς την εκτέλεση της οµάδας εντολών. Το πρόγραµµα του παραδείγµατος 14 µε χρήση της δοµής επανάληψης repeat... until... είναι ο ακόλουθος: 35

program PARADEIGMA_14Β; Var Α: real; Ι: integer; BEGIN Ι:= 1; {Αρχικοποίηση του µετρητή Ι} Repeat Write( ώστε πραγµατικό αριθµό - 10 συνολικά, 0 για τέλος: ); Readln(Α); Writeln('Ο αριθµός είναι ο:, A:2:2); Ι := Ι + 1 until (Ι > 10) and (Α= 0); END. Π Α Ρ Α Τ Η Ρ Η Σ Ε Ι Σ Η Συνθήκη_Τέλους προκύπτει και αυτή από σύζευξη 2 λογικών συνθηκών. Όµως αυτές οι λογικές συνθήκες είναι διαφορετικές σε σχέση µε εκείνες που υπήρχαν στο παράδειγµα 1 (στο οποίο χρησιµοποιήθηκε η δοµή while). Η πρώτη συνθήκη είναι η Ι > 10 ενώ η δεύτερη συνθήκη είναι η Α=0. ηλαδή η εκτέλεση της οµάδας εντολών της δοµής repeat... until... θα επαναλαµβάνεται µέχρις ότου ο µετρητής Ι λάβει τιµές µεγαλύτερες του 10 και η τιµή της µεταβλητής Α γίνει αριθµητικά ίση µε το µηδέν. Λαµβάνοντας υπόψη το γεγονός ότι η µεταβλητή Ι έχει δηλωθεί ως integer, αυτό σηµαίνει ότι η οµάδα εντολών της δοµής θα εκτελείται µέχρι και την στιγµή όπου ο µετρητής Ι λάβει την τιµή 10 (το 10 είναι ο τελευταίος ακέραιος ο οποίος ικανοποιεί την συνθήκη Ι > 10) µε την προϋπόθεση φυσικά ότι εν τω µεταξύ δεν θα έχει λάβει η µεταβλητή Α την τιµή µηδέν. Εάν ο χρήστης θελήσει να δώσει ως πρώτο πραγµατικό αριθµό το µηδέν, τότε το πρόγραµµα δεν θα τερµατιστεί (βάσει όµως της εκφώνησης θα έπρεπε να τερµατιστεί αµέσως) αλλά θα εµφανιστεί ο αριθµός µηδέν και στη συνέχεια θα τερµατιστεί διότι η Συνθήκη_Τέλους θα γίνει αληθής (διότι η µεταβλητή Α θα έχει λάβει την τιµή, (δηλαδή θα ισχύει ότι Α= 0). Η παρατήρηση αυτή επαληθεύει τον προηγούµενο ισχυρισµό (βλέπε παρατηρήσεις στις προηγούµενες σελίδες) ότι στη δοµή επανάληψης repeat... until..., η οµάδα εντολών της εκτελείται τουλάχιστον µία φορά. Από τα παραπάνω συµπεραίνουµε ότι για τις απαιτήσεις του συγκεκριµένου παραδείγµατος το µόνο "πλήρες" πρόγραµµα είναι εκείνο στο οποίο χρησιµοποιείται η δοµή επανάλήψης while. Παράδειγµα 15: Να γραφεί πρόγραµµα το οποίο να δέχεται από το πληκτρολόγιο τις ηλικίες 100 το πολύ ατόµων και στη συνέχεια να υπολογίζει και να εµφανίζει το άθροισµα των ηλικιών τους. Να ληφθεί υπόψη ότι σε περίπτωση όπου ο χρήστης του προγράµµατος εισάγει από το πληκτρολόγιο (λανθασµένα ή σκοπίµως) µηδενική ηλικία, η εισαγωγή των ηλικιών θα πρέπει να παύεται και το πρόγραµµα θα πρέπει να εµφανίζει το άθροισµα των ηλικιών των ατόµων (επιτρέπεται η εµφάνιση µηδενικής τιµής του αθροίσµατος) µέχρι την στιγµή της παύσης και στη συνέχεια να τερµατίζει. Το παράδειγµα 15 αποτελεί ένα ενδεικτικό παράδειγµα στο οποίο η εκφώνησή του µας επιτρέπει να αναπτύξουµε το πρόγραµµα είτε χρησιµοποιώντας τη δοµή while είτε τη δοµή repeat. 36

Το πρόγραµµα του παραδείγµατος 15 παρουσιάζεται στους επόµενους πίνακες. Ο πρώτος πίνακας περιέχει το πρόγραµµα µε χρήση της δοµής while, ενώ ο δεύτερος πίνακας περιέχει το πρόγραµµα χρησιµοποιώντας τη δοµή repeat. Program PARADEIGMA_15A; Var ΗLIKIA, S, Ι: integer; BEGIN S:= 0 {Αρχικοποίηση αθροιστή} Ι:= 1 {Αρχικοποίηση µετρητή} Write( ώστε ηλικία 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA); While (Ι <= 100) and (ΗLIKIA >= 0) do S:= S + ΗLIKIA; {Υπολογισµός του αθροίσµατος} Ι:= Ι + 1 ; Write( ώστε ηλικία - 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA) Writeln( Άθροισµα ηλικιών:, S) END. Program PARADEIGMA_15B; Var ΗLIKIA, S, Ι: integer; BEGIN S:= 0 {Αρχικοποίηση αθροιστή} Ι:= 1 {Αρχικοποίηση µετρητή} repeat Write( ώστε ηλικία 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA); S S + ΗΛΙΚΙΑ Ι Ι + 1 until (Ι > 100) and (ΗLIKIA < 0) ; Writeln( Άθροισµα ηλικιών:, S) END. Π Α Ρ Α Τ Η Ρ Η Σ Ε Ι Σ Στο πρόγραµµα PARADEIGMA_15B, η τιµή του S που τελικά θα εµφανιστεί θα περιέχει και το µηδέν. Αν και στο συγκεκριµένο παράδειγµα έχουµε υπολογισµό και εµφάνιση αθροίσµατος ηλικιών και το µηδέν (ως γνωστόν) είναι ουδέτερο στοιχείο, ο συνυπολογισµός του στην τελική τιµή του S ουδεµία επίπτωση δεν επιφέρει ως προς την εξαγωγή της τελικής τιµής του αποτελέσµατος. Όµως σε άλλες κατηγορίες προβληµάτων δοµηµένου προγραµµατισµού ο συνυπολογισµός του προκαλεί αλλοίωση των αποτελεσµάτων. Αντίθετα, στο πρόγραµµα PARADEIGMA_15A δεν συνυπολογίζεται στο τελικό αποτέλεσµα (λόγω της ύπαρξης της Συνθήκης_Συνέχειας). Η µοναδική περίπτωση όπου η τιµή S που θα εµφανιστεί στην οθόνη να είναι το µηδέν, είναι όταν δοθεί ως πρώτη ηλικία. ηλαδή αν η πρώτη τιµή της µεταβλητής ΗLIKIA είναι µεγαλύτερη του µηδενός (αρνητική ή µηδενική ηλικία δεν υπάρχει!!!), τότε το πρόγραµµα θα συνυπολογίσει αυτή την τιµή στο S. Αν η επόµενη είναι αρνητική ή ίση του µηδενός, τότε περατώνεται η εκτέλεση της οµάδας εντολών και το πρόγραµµα εµφανίζει την τιµή του αθροίσµατος που έχει υπολογιστεί µέχρι και εκείνη την στιγµή. 37

Εάν υποθέσουµε ότι η εκφώνηση του παραδείγµατος δεν επέτρεπε την εµφάνιση µηδενικής τιµής για το άθροισµα, τότε θα πρέπει να συµπληρώσουµε τα 2 προηγούµενα προγράµµατα µε µία δοµή if, η συνθήκη της οποίας θα ελέγχει εάν η τιµή του S είναι διάφορη του µηδενός. Μόνο όταν το S είναι διάφορο του µηδενός, θα πρέπει να εµφανίζεται η τιµή του. ιαφορετικά, το πρόγραµµα θα πρέπει να τερµατίζεται. Program PARADEIGMA_15C; Var ΗLIKIA, S, Ι: integer; BEGIN S:= 0 {Αρχικοποίηση αθροιστή} Ι:= 1 {Αρχικοποίηση µετρητή} Write( ώστε ηλικία 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA); While (Ι <= 100) and (ΗLIKIA >= 0) do S:= S + ΗLIKIA; {Υπολογισµός του αθροίσµατος} Ι:= Ι + 1 ; Write( ώστε ηλικία - 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA) If S <> 0 then writeln( Άθροισµα ηλικιών:, S); END. Program PARADEIGMA_15D; Var ΗLIKIA, S, Ι: integer; BEGIN S:= 0 {Αρχικοποίηση αθροιστή} Ι:= 1 {Αρχικοποίηση µετρητή} repeat Write( ώστε ηλικία 100 συνολικά, 0 για τέλος: ); Readln(HLIKIA); S S + ΗΛΙΚΙΑ Ι Ι + 1 until (Ι > 100) and (ΗLIKIA < 0) ; If S <> 0 then writeln( Άθροισµα ηλικιών:, S); END. 38

ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ 1. Να γραφεί πρόγραµµα το οποίο να διαβάζει το βάρος (σε kg) για κάθε ένα από 500 χαρτοκιβώτια και στη συνέχεια να υπολογίζει και να εµφανίζει το συνολικό βάρος εκείνων των κιβωτίων που ήταν άνω των 3 kg. 2. Σε µία τάξη υπάρχουν 20 µαθητές. Κάθε ένας από αυτούς έχει κάποιο ποσό χρηµάτων στην τσέπη του. Να γραφεί πρόγραµµα το οποίο να διαβάζει τα χρήµατα κάθε µαθητή και στη συνέχεια να βρίσκει και να εµφανίζει πόσοι µαθητές είχαν περισσότερα από 15. 3. Να γραφεί πρόγραµµα το οποίο να διαβάζει 500 πραγµατικούς αριθµούς και στην συνέχεια: Α) Να βρίσκει και να εµφανίζει πόσοι από αυτούς ήταν µεγαλύτεροι του 550. Β) Να βρίσκει και να εµφανίζει πόσοι από αυτούς ήταν µεγαλύτεροι του 200 και µικρότεροι ή ίσοι του 550. Γ) Να βρίσκει και να εµφανίζει πόσοι από αυτούς ήταν µικρότεροι/ ίσοι του 200. ) Να βρίσκει και να εµφανίζει τον µέσο όρο των 500 αριθµών. 4. Να γραφεί πρόγραµµα το οποίο να εµφανίζει όλους τους ακέραιους αριθµούς από το 0 µέχρι και το 1000 οι οποίοι διαιρούνται ακριβώς µε το 2, διαιρούνται ακριβώς µε το 3 αλλά δεν διαιρούνται ακριβώς µε τον αριθµό 4. 5. Να γραφεί πρόγραµµα το οποίο να διαβάζει 5 ακέραιους αριθµούς και στη συνέχεια να υπολογίζει και να εµφανίζει το άθροισµα των τετραγώνων τους αν ήταν όλοι θετικοί, διαφορετικά να υπολογίζει και να εµφανίζει τη διπλάσια τιµή του αθροίσµατος τους. 6. Να γραφεί πρόγραµµα το οποίο να διαβάζει 150 ακέραιους αριθµούς και στη συνέχεια να βρίσκει και να εκτυπώνει πόσοι από αυτούς ήταν πρώτοι και πόσοι από αυτούς δεν ήταν πρώτοι. Πρώτος ονοµάζεται ένας αριθµός όταν οι µονοί διαιρέτες του είναι ο ίδιος ο αριθµός και η µονάδα. 15. Να γραφεί πρόγραµµα το οποίο να διαβάζει για µία (τουλάχιστον) φορά το όνοµα, επώνυµο και το έτος γέννησης ενός ατόµου και στη συνέχεια να εκτυπώνει το επώνυµο, το όνοµα και την ηλικία του. Το πρόγραµµα σταµατάει όταν διαβάσει ως επώνυµο την ακολουθία χαρακτήρων ZZZZ (ως τρέχον έτος να θεωρηθεί το έτος 2003). 16. Να γραφεί πρόγραµµα το οποίο να διαβάζει µία σειρά µετρήσεων ακέραιων µη µηδενικών αριθµών και στη συνέχεια να υπολογίζει και να εκτυπώνει το άθροισµα και το µέσο όρο τους. Το πρόγραµµα τελειώνει όταν διαβάσει την τιµή 0. 39

17. ίνεται το παρακάτω τµήµα προγράµµατος: Αρχή_Επανάληψης Α 0 Για Ι από 1 µέχρι 5 Α Α 1 Τέλος_Επανάληψης Εκτύπωσε Α Μέχρις_ότου Α = 0 Πόσες φορές θα εκτελεστεί η παρακάτω επανάληψη; 18. ίνεται το παρακάτω τµήµα προγράµµατος: Α 10 Όσο Α < > 0 επανάλαβε Για Ι από 1 µέχρι 5 Α Α 1 Τέλος_Επανάληψης Εκτύπωσε Α Τέλος_Επανάληψης Α) Πόσες φορές θα εκτελεστεί η εντολή εκτύπωσε Α ; Β) Να κατασκευαστεί το διάγραµµα ροής του. 19. ίνεται το παρακάτω τµήµα προγράµµατος: Ζ:=2 ; Χ:= 1; Ι:= 1; repeat Υ:= Χ * Ι; if (Υ mod 2 = 0) then Χ:= Χ + 2; Ζ:= Ζ + Υ else Χ:= Χ + 1; Ζ:= Ζ * Υ; Writeln(S); Ι:= Ι + 1 until (Χ > 7); Ποιες είναι οι τιµές της µεταβλητής Ζ που θα εµφανιστούν κατά την εκτέλεση του παραπάνω τµήµατος προγράµµατος; 40

20. Να συµπληρωθούν τα κενά ώστε οι επόµενες εντολές να εκτυπώνουν το άθροισµα των αριθµών από το 100 µέχρι και το 200. Κ:=. ; S:=.. ; repeat S:= S + K; K:= K + 1 ; until. ; writeln(s); 21. Τι εκτυπώνει το παρακάτω τµήµα προγράµµατος: Readln(Χ); Υ:= 1; Ν:= 0; While Υ <= 100 do Ν:= Ν + 1; Υ:= 2 * Υ ; Writlen(Y); 22. Ένας ιδιώτης αποφάσισε να κατεβάσει (download) από το ιαδίκτυο σε έναν από τους σκληρούς του δίσκους διάφορα κοµµάτια από τα αγαπηµένα συγκροτήµατα του. Αν γνωρίζετε ότι ο διαθέσιµος ελεύθερος χώρος στον δίσκο είναι 500 MB, να γραφεί πρόγραµµα το οποίο να διαβάζει την χωρητικότητα (σε Mega Βyte) για κάθε ένα από τα µουσικά κοµµάτια και στη συνέχεια να βρίσκει και να εµφανίζει τον αριθµό των κοµµατιών που τελικά αποθηκεύτηκαν. 23. Έστω το παρακάτω τµήµα ενός ορθού προγράµµατος: X:= 10; while X > 0 do Χ:= Χ 3 Writlen(Χ); Α) Ποία θα είναι η τιµή του X που θα εµφανιστεί; Β) Πόσες φορές θα εκτελεστεί η οµάδα εντολών της δοµής; Γ) Να γραφεί ξανά το παραπάνω τµήµα προγράµµατος κατά τρόπο τέτοιον ώστε να εµφανίζει και την τιµή της Χ και το πλήθος των επαναλήψεων. 41

24. ίνεται το παρακάτω τµήµα προγράµµατος: Sum:= 0 ; I:= 3 ; While I <= 7 do Sum:= Sum + I ; I:=I + 2 Writeln(I); Writeln(Sum); Μετά την εκτέλεση του παρακάτω τµήµατος προγράµµατος, ποιες θα είναι οι τιµές των µεταβλητών I, SUM που θα εµφανιστούν; 25. Έστω ότι κατά την εκτέλεση του παρακάτω τµήµατος προγράµµατος δόθηκαν διαδοχικά από το πληκτρολόγιο οι ακόλουθες τιµές: 10 5 2-5 Sum:= 0; Positive:= true ; While Positive do Readln(X); if Χ < 0 then Positive:= false else Sum:= Sum + X Writeln(Sum); Ποία θα είναι η τιµή της Sum η οποία θα εµφανιστεί µετά την εκτέλεση του; 26. Έστω ότι κατά την εκτέλεση του παρακάτω τµήµατος προγράµµατος δόθηκαν διαδοχικά από το πληκτρολόγιο οι ακόλουθες τιµές: 10 20 30 0 Sum:= 0; I:= 0 ; Readln(X); While Χ > 0 do I:= I + 1; Sum:= Sum + X; Readln(Χ) Wrtieln(Sum, Ι, Χ); Ποίες θα είναι οι τιµές των Sum, Ι, Χ οι οποίες θα εµφανιστούν µετά την εκτέλεση του συγκεκριµένου τµήµατος προγράµµατος; 42

27. Για το παρακάτω τµήµα προγράµµατος, απαντήστε στα ακόλουθα: Ι) Ποία θα είναι η τιµή της µεταβλητής Sum που θα εµφανιστεί; ΙΙ) Πόσες φορές θα εκτελεστεί η οµάδα εντολών της δοµής; ΙΙΙ) Να γραφεί ξανά χρησιµοποιώντας τις υπόλοιπες δοµές επανάληψης. Sum:= 3;, I:= 12; While I > 5 do Sum:= Sum + I; I := I 2; Writeln(Sum); 28. Για το παρακάτω τµήµα προγράµµατος, πόσες φορές θα εκτελεστεί η εντολή Writeln(Α); Α:= 0; repeat For Ι:= 1 to 5 do Α:= Α + 1; Writeln(Α) until (Α >= 25); 29. Τι θα εµφανίσει το παρακάτω τµήµα προγράµµατος ; Η:= 15; While H > 5 do For Ι:= 1 to 4 do Η:= Η 2; Writeln(H); 30. Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο πραγµατικούς µη µηδενικούς αριθµούς και στη συνέχεια: Ι) Να βρίσκει και να εµφανίζει το πλήθος των αριθµών που τελικά πληκτρολογήθηκαν. ΙΙ) Να υπολογίζει και να εµφανίζει το άθροισµα τους. ΙΙΙ) Να υπολογίζει και να εµφανίζει τον µέσο όρο τους. IV) Να βρίσκει και να εµφανίζει πόσοι από τους αριθµούς ήταν θετικοί. Σηµείωση: Η διαδικασία εισαγωγής των αριθµών θα πρέπει να σταµατά όταν το πρόγραµµα διαβάσει τον αριθµό µηδέν. 43

31. Μετά την εκτέλεση του παρακάτω τµήµατος προγράµµατος: Α) Ποίες θα είναι οι τιµές των µεταβλητών I, SUM που θα εµφανιστούν; Β) Πόσες φορές θα εκτελεστεί η οµάδα εντολών της δοµής; Γ) Να γραφεί ξανά µε τις υπόλοιπες δοµές επανάληψης. Sum:= 0; I:= 3; while I > 7 do Sum:= Sum + I; I:= I + 2 Writeln(I); Writeln(Sum); 32. ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών βιβλίων (απροσδιόριστο το πλήθος τους). Να γραφεί πρόγραµµα εύρεσης και εµφάνισης του πλήθους των κιβωτίων που θα δοθούν έτσι ώστε το µέσο βάρος τους να µη ξεπερνά τα 200 Kg. Σηµείωση: το πρόγραµµα θα πρέπει να σταµατά όταν διαβάσει βάρος ίσο µε το 0. 33. Μία βιοµηχανία θέλει να στείλει διάφορα δείγµατα στους πελάτες εσωτερικού και εξωτερικού που έχει. Άν το κάθε κιβώτιο κρασιών χρεώνεται µε 10.5 για το εξωτερικό και 5.2 για το εσωτερικό, να γραφεί πρόγραµµα το οποίο να υπολογίζει και να εµφανίζει τα χρηµατικά ποσά που πρέπει να δοθούν για δέµατα εσωτερικού, για δέµατα εξωτερικού όπως επίσης και το συνολικό χρηµατικό ποσό µε το οποίο θα επιβαρυνθεί η βιοµηχανία. Για κάθε αποστολή δίνονται οι ακόλουθες πληροφορίες: Α) Κωδικός αριθµός πελάτη (τριψήφιος ακέραιος αριθµός). Β) Κωδικός αποστολής (1=εσωτερικό, 2=εξωτερικό). Γ) Αριθµός κιβωτίων. Σηµείωση: Το πλήθος των αποστολών δίδεται από τον χρήστη κατά την διάρκεια εκτέλεσης του προγράµµατος. 44