Ενισχυτική διδασκαλία στα μαθήματα «Εισαγωγή στον προγραμματισμό» και «Αλγοριθμική»

Σχετικά έγγραφα
Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Ενότητα 3: «Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό: loops, subroutines, tables»

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Προγραμματισμός Ι. Ασκήσεις. Τζάλλας Αλέξανδρος, Καθηγητής Εφαρμογών. Τμ. Μηχανικών Πληροφορικής Τ.Ε.

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Pascal. 15 Νοεμβρίου 2011

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ


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

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

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

Pascal. 1 Γλώσσες προγραμματισμού. 21 Οκτωβρίου 2011

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

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

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

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

Εντολές ελέγχου ροής if, for, while, do-while

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

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

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

Αποτελέσματα προόδου

Σκοπός. Εργαστήριο 5 Εντολές Επιλογής

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

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

ΔΟΜΗ ΕΠΙΛΟΓΗΣ. Οι διάφορες εκδοχές της

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Χ=0 Ονομα1<> Κώστας Y>1000 Y<600 X+y >= d B^2-4*a*g <= 0

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

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

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

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 18/02/2013 ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α

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

ττιαογή και επανάληψη

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Εκχώρηση Τιμών

Μάριος Αγγελίδης

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ. Πως γίνεται ο ορισμός μιας διαδικασίας; Να δοθούν σχετικά παραδείγματα. ΑΡΧΗ Εντολές ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Εισαγωγή στον Προγραμματισμό

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

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

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

Γλώσσα Προγραμματισμού C

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

A3. Μονάδες 5 Α4. Μονάδες 10 ΘΕΜΑ B. Β1. writeln Περιεχόμενα Εντολή Αποτελέσματα Παραμέτρων Μονάδες 20 ΘΕΜΑ Γ.

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

Ψευδοκώδικας. November 7, 2011

Διδακτική της Πληροφορικής

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 2o Επαναληπτικό Διαγώνισμα Κεφ: 2 ο 7 ο 8 ο ΗΜΕΡΟΜΗΝΙΑ 21/ 10/ 2017

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

Pascal. 26 Οκτωβρίου 2011

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

Προγραμματισμός PASCAL

Γενικές εξετάσεις 2014 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Τεχνολογική Κατεύθυνση

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

8.4. Δραστηριότητες - ασκήσεις

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Transcript:

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

Ενισχυτική διδασκαλία στα μαθήματα «Εισαγωγή στον προγραμματισμό» και «Αλγοριθμική» (για σπουδαστές με προβλήματα ακοής, για σπουδαστές με μαθησιακές δυσκολίες κ.λπ.) χ. σκουρλάς 2015-16

Κεφάλαιο 1 Εισαγωγή στον προγραμματισμό Αρχή με απλά παραδείγματα προγράμματος ή «10 τρόποι για να χαιρετήσεις τον κόσμο!» Όταν θέλεις να μάθεις μία νέα γλώσσα προγραμματισμού αρχίζεις γράφοντας ένα απλό πρόγραμμα. Στα περισσότερα βιβλία που σου μαθαίνουν προγραμματισμό διαβάζεις συνήθως ένα πρόγραμμα που γράφει στην οθόνη του υπολογιστή την αγγλική φράση Hello, world! Η φράση αυτή σημαίνει στα ελληνικά Γειά σου κόσμε! Θα γράψουμε δέκα προγράμματα για να μάθουμε δέκα τρόπους να γράφουμε αυτή τη φράση. Τα προγράμματα αυτά ή άλλα τελείως ανάλογα υπάρχουν σε πολλές ιστοσελίδες στο διαδίκτυο ή σε παρουσιάσεις (powerpoint presentations) διαλέξεων για εισαγωγή στην αλγοριθμική και τον προγραμματισμό. Να το πρώτο μας πρόγραμμα! program Hello_01(output); writeln('hello, world!') Περιγραφή της σύνταξης του πρώτου προγράμματος Για κάθε πρόγραμμά μας πρέπει να διαλέξουμε ένα όνομα. Εδώ διάλεξα το όνομα Hello_01. Έτσι έγραψα στην πρώτη γραμμή, program Hello_01(output); Παρατηρήστε ότι η γραμμή αυτή τελειώνει με ερωτηματικό. Τι σημαίνει η λέξη output. Το πρόγραμμά μας θέλουμε να γράφει στην οθόνη του υπολογιστή το μήνυμα Hello, world! Έτσι δίπλα στο όνομα του προγράμματος γράφουμε σε παρενθέσεις την αγγλική λέξη output που σημαίνει στα ελληνικά έξοδος. Δηλαδή με αυτόν τον τρόπο λέμε στο πρόγραμμά μας ότι θα γράφει τις απαντήσεις (στην οθόνη). Η αγγλική λέξη input σημαίνει στα ελληνικά είσοδος. Αν γράφαμε program Hello_01(input, output); Αυτό σημαίνει ότι το πρόγραμμά μας θα διαβάζει στοιχεία που θα πληκτρολογούμε. Αυτά που πληκτρολογούμε φαίνονται στην οθόνη και τα διαβάζει το πρόγραμμα για να τα επεξεργαστεί. Το πρόγραμμα αρχίζει με την αγγλική λέξη που σημαίνει στα ελληνικά αρχή. Το πρόγραμμα τελειώνει με την αγγλική λέξη end που σημαίνει στα ελληνικά τέλος. Μετά τη λέξη end βάζουμε και τελεία. Ανάμεσα στις λέξεις, end γράφουμε τις εντολές μας δηλαδή γράφουμε αυτά που ζητάμε να κάνει ο υπολογιστής.

Τα ξαναλέμε: Μέχρι τώρα είδαμε ότι κάθε πρόγραμμα έχει ένα όνομα και αποτελείται από εντολές. Το πρόγραμμα Hello_01 έχει μία μόνο εντολή που πρέπει να εκτελέσει ο υπολογιστής την παρακάτω: writeln('hello, world!') Η εντολή αυτή γράφει στην οθόνη του υπολογιστή τη φράση Hello, world!' Στην εντολή αυτή μπορούσαμε να γράψουμε και ερωτηματικό στο τέλος writeln('hello, world!'); Να κάποιες σημαντικές παρατηρήσεις 1) Αν δεν προλαβαίνεις να δεις τα αποτελέσματα του προγράμματος στο περιβάλλον της Bloodsed Dev-Pascal τότε πρόσθεσε μία εντολή στο τέλος: program Hello_01(output); writeln('hello, world!'); 2) Στο πρόγραμμά μας χρησιμοποιούμε μερικές αγγλικές λέξεις. ΠΡΟΣΟΧΗ! ΚΑΘΕ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΧΡΗΣΙΜΟΠΟΙΕΙ ΤΙΣ ΔΙΚΕΣ ΤΗΣ! Κάθε μία από αυτές τις λέξεις έχει ένα ειδικό νόημα. Για παράδειγμα η λέξη Program δηλώνει ότι αυτό που ακολουθεί είναι το πρόγραμμά μας. Οι λέξεις αυτές λέγονται κρατημένες (reserved) επειδή τις κρατάμε και δεν τις χρησιμοποιούμε τυχαία. Για παράδειγμα, απαγορεύεται να χρησιμοποιήσουμε τη λέξη writeln σαν όνομα του προγράμματός μας. Η γλώσσα PASCAL έχει μερικές κρατημένες λέξεις όπως οι παρακάτω:

Reserved words Τι σημαίνει Επεξήγηση Κρατημένες λέξεις Program Πρόγραμμα Ακολουθείται από το όνομα του ρπογράμματος Begin Αρχή Αρχή προγράμματος ή μιας ομάδας εντολών End Τέλος Τέλος προγράμματος ή μιας ομάδας εντολών Var Μεταβλητή Θα μιλήσουμε αρκετά στη συνέχεια Const Σταθερά Θα μιλήσουμε στη συνέχεια Writeln Γράψε γραμμή Γράφει μία γραμμή που μπορεί να περιλαμβάνει κείμενα, τιμές μεταβλητών κ.λπ. Write Γράψε Γράφει κείμενα, τιμές μεταβλητών κ.λπ. χωρίς να αλλάζει γραμμή Readln Διάβασε γραμμή Διαβάζει μία γραμμή με τιμές μεταβλητών και σταθερών Read Διάβασε Διαβάζει τιμές μεταβλητών και σταθερών χωρίς να πάει στην επόμενη γραμμή For Για for i:= number1 to number2 do Do Κάνε πχ for i:= 1 to 10 do If Αν If then ; Then Τότε If then else if then else ; Else Αλλιώς If then else ; Input Είσοδος Μαθαίνουμε ότι το πρόγραμμα διαβάζει στοιχεία που πληκτρολογούμε Output Έξοδος Μαθαίνουμε ότι το πρόγραμμα γράφει τις απαντήσεις στην οθόνη Integer Ακέραιος αριθμός Άσκηση Δες το πρόγραμμα Hello_01 και γράψε ένα δικό σου που θα λέει ποιός είσαι. Μπορείς να γράψεις και ότι άλλο θέλεις. program Hello_01(output); writeln('hello, world!')

Να το νέο πρόγραμμά μου. program my_hello(output); writeln('my name is Christos.'); writeln('i feel good.'); writeln('hello, world!') Όταν το εκτέλεσα έγραψε στην οθόνη του υπολογιστή: My name is Christos. I feel good. Hello, world! Θα μπορούσα να γράψω ερωτηματικό και στην τελευταία εντολή writeln όπως βλέπεις στο παρακάτω πρόγραμμα. program my_hello(output); writeln('my name is Christos.'); writeln('i feel good.'); writeln('hello, world!'); ΘΥΜΗΣΟΥ ΟΤΙ ΜΠΟΡΕΙΣ ΝΑ ΠΑΡΑΛΕΙΨΕΙΣ ΤΟ ΕΡΩΤΗΜΑΤΙΚΟ ΜΟΝΟ ΣΤΗΝ ΤΕΛΕΥΤΑΙΑ ΕΝΤΟΛΗ! Επομένως, το παρακάτω πρόγραμμα έχει 2 λάθη program my_hello(output); writeln('my name is Christos.') writeln('i feel good.') writeln('hello, world!'); Να τα επόμενα παραδείγματα program Hello_02(output); writeln('hello, ','world!') Γράφω τις λέξεις της φράσης Hello world! μία μία με την εντολή writeln('hello, ','world!')

program Hello_03(output); write('hello, '); writeln('world!') Γράφω τη λέξη Hello και μετά γράφω world! με την εντολή writeln('world!') που τελειώνοντας αλλάζει και γραμμή program Hello_04(output); write('hello, world!'); writeln Γράφω τη φράση Hello world! και με την εντολή writeln αλλάζω και γραμμή program Hello_05(output); procedure hello; writeln('hello, world!') hello; hello; hello; hello Γράφω ένα υποπρόγραμμα με όνομα Hello. Το υποπρόγραμμα γράφει τη φράση 'Hello, world!'. Το κύριο πρόγραμμα καλεί 4 φορές το υποπρόγραμμα και το μήνυμα 'Hello, world!' γράφεται 4 φορές. program Hello_06(output); var i : integer; procedure hello; writeln('hello, world!') for i:=1 to 7 do hello Γράφω ένα υποπρόγραμμα με όνομα Hello. Το υποπρόγραμμα γράφει τη φράση 'Hello, world!'. Το κύριο πρόγραμμα καλεί 7 φορές το υποπρόγραμμα και το μήνυμα 'Hello, world!' γράφεται 7 φορές.

Πως ακριβώς δουλεύει το πρόγραμμα Χρησιμοποιώ μία εντολή for i:= number1 to number2 do δηλαδή μία εντολή επαναληπτικής εκτέλεσης ή εντολή βρόχου (loop). Λέγεται επαναληπτική εντολή ή εντολή βρόχου (loop) γιατί η εντολή αυτή κάνει την ίδια δουλειά πολλές φορές. Το i ορίζεται σαν μία ακέραια μεταβλητή και από την εντολή for θα πάρει διαδοχικά τιμές 1, 2, 3, 4, 5, 6, 7. Όταν πάρει τιμή 1 καλείται για πρώτη φορά το υποπρόγραμμα Hello και το υποπρόγραμμα γράφει τη φράση 'Hello, world!'. Μετά η μεταβλητή i θα πάρει τιμή 2 και καλείται για δεύτερη φορά το Υποπρόγραμμα Hello και το υποπρόγραμμα ξαναγράφει τη φράση 'Hello, world!'. Μετά η μεταβλητή i θα πάρει τιμή 3 και καλείται για Τρίτη φορά το Υποπρόγραμμα Hello και το υποπρόγραμμα ξαναγράφει τη φράση 'Hello, world!'. Με τον ίδιο τρόπο η μεταβλητή i θα πάρει τιμή 4, μετά 5, μετά 6 και μετά 7 και κάθε φορά θα καλείται το Υποπρόγραμμα Hello και το υποπρόγραμμα θα ξαναγράφει τη φράση 'Hello, world!'. Δηλαδή, χρησιμοποιήσαμε τη μεταβλητή σαν ένα μετρητή που θα πάρει διαδοχικά τις τιμές από 1 μέχρι 7 ώστε να καλέσουμε το υποπρόγραμμα 7 φορές και να τυπώσει 7 φορές το μήνυμα. program Hello_07(output); const n = 7; var i : integer; procedure num_hello; writeln(i,' Hello, world!') for i:= 1 to n do num_hello Χρησιμοποιώ πάλι μία εντολή for i:= number1 to number2 do δηλαδή μία εντολή επαναληπτικής εκτέλεσης ή εντολή βρόχου (loop) και μία μεταβλητή i, όπως και προηγουμένως. Εδώ, όμως, αντί της εντολής for i:=1 to 7 do hello χρησιμοποιώ την εντολή for i:=1 to n do hello. Για να ξέρει πόσες επαναλήψεις θα κάνει ορίζω τη σταθερά n, const n = 7;

program Hello_08(input,output); var i,n : integer; procedure hello; writeln('hello, world!') writeln('give number ', ' then press <enter>:'); read(n); for i:= 1 to n do hello Χρησιμοποιώ πάλι μία εντολή επαναληπτικής εκτέλεσης ή εντολή βρόχου (loop) την εντολή for i:= 1 to n do hello Εδώ, όμως, αντί να ορίσω τη σταθερά n, όπως προηγουμένως, θα κάνω κάτι άλλο. Δηλαδή αντί της δήλωσης const n = 7; δηλώνω την ακέραια μεταβλητή n ως εξής: var i,n : integer; Στο πρόγραμμα με την εντολή writeln('give number', ' then press <enter>:'); διατάζω τον υπολογιστή να γράψει στην οθόνη το μήνυμα: Give number then press <enter> Ο υπολογιστής αφού το γράψει περιμένει να του γράψουμε μία τιμή. Αυτό γιατί στο πρόγραμμά μας έχουμε γράψει την εντολή read(n); Μόλις πληκτρολογήσουμε μία τιμή ο υπολογιστής τη διαβάζει και τη γράφει στη μεταβλητή n. program Hello_09(input,output); var i,n : integer; procedure hello; writeln('hello, world!') writeln('give number ',' then press <enter>:'); readln(n); for i:= 1 to n do hello Ότι και προηγουμένως. Μόνο που στο προηγούμενο πρόγραμμα με τις εντολές read(n); το πρόγραμμα διάβασε πρώτα την τιμή της μεταβλητής n (εντολή read(n);) και μετά διάβασε μέχρι το υπόλοιπο της γραμμής (εντολή ). Το πρόγραμμα Hello_9 διαβάζει μία γραμμή και ότι τιμή έχουμε δώσει την αποθηκεύει στη μεταβλητή.

program Hello_10(input,output); var i,n : integer; procedure hello; writeln('hello, world!') writeln('give number ', ' then press <enter>:'); readln(n); if n < 0 then writeln('number is negative') else if n=0 then writeln('number is zero') else for i:= 1 to n do hello; readln Το πρόγραμμα ζητά να δώσουμε έναν αριθμό. Αν ο αριθμός που θα δώσουμε είναι αρνητικός Τότε ο υπολογιστής θα γράψει στην οθόνη το μήνυμα number is negative Αλλιώς Αν ο αριθμός που θα δώσουμε είναι μηδέν Τότε ο υπολογιστής θα γράψει στην οθόνη το μήνυμα 'number is zero' Αλλιώς θα εκτελέσει επαναληπτικά το υποπρόγραμμα και θα τυπώσει n φορές το μήνυμα Hello, world! Άσκηση Γράψτε πρόγραμμα που θα διαβάζει και θα τυπώνει τον αριθμό μητρώου σας, επώνυμο, όνομα και τηλέφωνο και το μήνυμα Hello world τρεις φορές. Αν δοθεί Αριθμός Μητρώου αρνητικός το πρόγραμμά σας θα τυπώνει το μήνυμα AM is a negative number! και θα σταματά. Χρησιμοποιήστε τους παραπάνω τρόπους που αναφέρονται στα προγράμματα της ενότητας αυτής.

Κεφάλαιο 2 Βασικές έννοιες προγραμματισμού και παραδείγματα «Θυμήσου ότι ο αλγόριθμος και το πρόγραμμα θέλουν προσπάθεια, υπομονή και επιμονή!» «Μη φανταστείς ότι θα μάθεις προγραμματισμό διαβάζοντας ένα καλό βιβλίο ή τις σημειώσεις αυτές στο κρεβάτι σου. Θα τα καταφέρεις μόνο αν διαβάζεις και είσαι δίπλα στον υπολογιστή σου και δοκιμάζεις κάθε πρόγραμμα που διάβασες. Μετά πρέπει να γράφεις άλλα προγράμματα δικά σου που αλλάζουν λίγο αυτά που διάβασες. Επομένως, εκτός από προσπάθεια, υπομονή και επιμονή χρειάζεσαι, ακόμη, χαρτί και υπολογιστή. Δηλαδή, πρέπει να γράφεις τα προγράμματά μας και τα δικά σου στο χαρτί και μετά να τα πληκτρολογείς στον υπολογιστή σου. Αν τα προγράμματα δεν εκτελούνται (δεν «τρέχουν» το λέμε) ή δεν κάνουν αυτό που θέλουμε τότε τα τυπώνουμε και τα «εκτελούμε» με το χέρι. Αν δε βρίσκουμε τα λάθη, βλέπουμε στα βιβλία και τις σημειώσεις παρόμοια προγράμματα και σκεφτόμαστε. Μετά από διάβασμα και σκέψη δοκιμάζουμε να διορθώσουμε τα προγράμματά μας πρώτα στο χαρτί και μετά στον υπολογιστή. Αν χρειαστεί ξαναδιαβάζουμε, σκεφτόμαστε και ξανασκεφτόμαστε. Αν δεν βρίσκουμε άκρη τότε στέλνουμε ένα e-mail: cskourlas@teiath.gr. Αν το ξέρει απαντά αμέσως, αν όχι βλέπουμε!» «Είναι απαραίτητο να συνεργάζεστε μεταξύ σας στα προγράμματά σας! Προγραμματιστής δε γίνεσαι μόνος σου! Άλλωστε θα έχεις ακούσει για τα προγράμματα ανοικτού κώδικα: Χιλιάδες εθελοντές προγραμματιστές σε όλο τον κόσμο συνεργάζονται στον ελεύθερο χρόνο τους για να βελτιώσουν διάφορα προγράμματα που διατίθενται δωρεάν όπως το Linux.» «Αν μάθεις προγραμματισμό και εξασκηθείς σε κάποια γλώσσα, όπως η Pascal, τότε εύκολα στο μέλλον θα μάθεις οποιαδήποτε άλλη γλώσσα θελήσεις.» «Και κάτι τελευταίο: Το να μάθεις να γράφεις προγράμματα δεν είναι πολύ δύσκολο. Το να γίνεις καλός προγραμμαστής είναι!» Ένα πολύ απλό πρόγραμμα στη γλώσσα Pascal αποτελείται από μία πρώτη γραμμή που έχει το όνομά του, μία δεύτερη γραμμή που έχει τη λέξη, μία τελευταία γραμμή που έχει τη λέξη end και μετά μία τελεία. Ανάμεσα σε και end έχουμε τις εντολές του προγράμματος. Κάθε εντολή τελειώνει με ; αλλά στην τελευταία εντολή μπορούμε να το παραλείψουμε. Το παρακάτω πρόγραμμα έχει όνομα Hello και 2 εντολές. program Hello(output); writeln('hello, world!');

Στον προγραμματισμό μέσα στο πρόγραμμά μας χρησιμοποιούμε κάποιες ομάδες - μπλοκς (blocks) εντολών, που κάνουν συγκεκριμμένες εργασίες. Θα εξετάσουμε τώρα ένα πρόγραμμα. program repeat_until_2_numbers_are_equal (output); var m, n : integer; m:=0; n:=0; repeat m:=m+5; if m>=8 then m:=m-8; n:=n+7; if n>=7 then n:=n-9; writeln('m=', m, ' n=', n) until m=n; Το πρόγραμμα όταν εκτελεστεί δείχνει στην οθόνη τα εξής: m=5 n=-2 m=2 n=5 m=7 n=3 m=4 n=1 m=1 n=-1 m=6 n=-6 Προς το παρόν δε θα χρειαστεί να καταλάβουμε τι ακριβώς κάνει. Αυτό θα το μάθουμε παρακάτω. Θα παρατηρήσουμε όμως, τώρα, μερικά χαρακτηριστικά του. Το πρόγραμμα είναι γραμμένο ώστε η μία εντολή να γράφεται μετά την άλλη: m:=0; (πρώτη εντολή) n:=0; (δεύτερη εντολή) Δηλαδή, όταν το γράφαμε ακολουθήσαμε τη «δομή της ακολουθίας», η μία εντολή ακολουθεί την άλλη και δεν πεταγόμαστε εδώ και εκεί από ένα μέρος του προγράμματος στο άλλο. Η Τρίτη εντολή του προγράμματος που ακολουθεί είναι σύνθετη και περιλαμβάνει μέσα της και άλλες εντολές: repeat m:=m+5; if m>=8 then m:=m-8; n:=n+7; if n>=7 then n:=n-9; writeln('m=', m, ' n=', n) until m=n; Δηλαδή, το πρόγραμμα repeat_until_2_numbers_are_equal αποτελείται από τέσσερις εντολές.

Εντολές προγράμματος Τύποι εντολών m:=0; Εντολή αντικατάστασης n:=0; Εντολή αντικατάστασης Repeat Εντολή επανάληψης m:=m+5; if m>=8 then m:=m-8; n:=n+7; if n>=7 then n:=n-9; writeln('m=', m, ' n=', n) until m=n; Εντολή ανάγνωσης Ακολουθούν παραδείγματα των 3 βασικών δομών. Απλώς να τα δεις και θα τα καταλάβεις στη συνέχεια. Δομές ελέγχου προγράμματος Επεξήγηση m:=0; n:=0; 1 εντολή ανάγνωσης if n < 0 then writeln('number is negative') else if n=0 then writeln('number is zero') else for i:= 1 to n do hello; for i:= 1 to n do hello; Repeat m:=m+5; if m>=8 then m:=m-8; n:=n+7; if n>=7 then n:=n-9; writeln('m=', m, ' n=', n) until m=n; Δομή ακολουθίας αποτελούμενη από 2 εντολές αντικατάστασης και Δομή επιλογής Δομές επανάληψης Ακολουθεί συστηματική περιγραφή των δομών ελέγχου: ακολουθία, επιλογή, επανάληψη. Δομή ακολουθίας Ακολουθεί πρόγραμμα σε ψευδογλώσσα. Το γράφουμε για να είναι πιό κατανοητές οι εντολές. ΠΡΟΓΡΑΜΜΑ Εκτύπωση_γινομένου_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: α, β, γ ΑΡΧΗ ΔΙΑΒΑΣΕ α, β γ <-- α * β ΓΡΑΨΕ α, β, γ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Εκτύπωση_γινομένου_αριθμών program deixe_ginomeno_arithmwn(output); var a, b, c: integer; readln(a, b); c:= a*b; writeln(c);

Να τι γίνεται κατά την εκτέλεση του προγράμματος: Βήμα 1. Ο Η/Υ περιμένει να του πληκτρολογήσουμε 2 αριθμούς για να τους διαβάσει. Αν πληκτρολογήσουμε το 4 και το 5 τότε ο υπολογιστής γράφει στη μεταβλητή a το 4 και στη μεταβλητή b το 5. Βήμα 2. Ο Η/Υ υπολογίζει το γινόμενο 4*5=20 και το γράφει στη μεταβλητή c. Βήμα 3. Ο υπολογιστής δείχνει 20. Θα αλλάξουμε λίγο το πρόγραμμά μας. program deixe_ginomeno_arithmwn(output); var a, b, c: integer; writeln('dwse tous 2 arithmous'); readln(a, b); c:= a*b; writeln('a*b=', a, '*', b, '=', c); Να τι γίνεται κατά την εκτέλεση του προγράμματος: Βήμα 1. Ο Η/Υ δείχνει το μήνυμα dwse tous 2 arithmous Βήμα 2. Ο Η/Υ περιμένει να του πληκτρολογήσουμε 2 αριθμούς για να τους διαβάσει. Αν πληκτρολογήσουμε 4 5 τότε ο υπολογιστής γράφει στη μεταβλητή a το 4 και στη μεταβλητή b το 5. Βήμα 3. Ο Η/Υ υπολογίζει το γινόμενο 4*5=20 και το γράφει στη μεταβλητή c. Βήμα 4. Ο υπολογιστής δείχνει a*b=4*5=20 Θα μπορούσαμε να διαβάζουμε τους αριθμούς σε ξεχωριστές γραμμές και μετά να υπολογίζουμε το γινόμενό τους. program deixe_ginomeno_arithmwn(output); var a, b, c: integer; writeln('dwse ton prwto arithmo'); readln(a); writeln('dwse to deftero arithmo'); readln(b); c:= a*b; writeln('a*b=', a, '*', b, '=', c); Στα παρακάτω αποτελέσματα της εκτέλεσης του προγράμματος οι ενέργειες του Η/Υ είναι υπογραμμισμένες. dwse ton prwto arithmo 4 dwse to deftero arithmo 5 a*b=4*5=20

Δομές Επιλογής - Χρήση Απλής δομής επιλογής Ακολουθεί Πρόγραμμα σε ψευδογλώσσα που υπολογίζει την απόλυτη τιμή ενός ακέραιου αριθμού. ΠΡΟΓΡΑΜΜΑ Εκτύπωση_απόλυτης_τιμής_αριθμού ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: α ΑΡΧΗ ΔΙΑΒΑΣΕ α ΑΝ α < 0 ΤΟΤΕ α <-- α *(-1) ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ α ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Εκτύπωση_απόλυτης_τιμής_αριθμού Να το πρόγραμμα σε Pascal program Ektypwsh_apolyths_timhs(input, output); var a: integer; writeln('dwse enan akeraio arithmo'); readln(a); if a < 0 then a:=a*(-1); writeln('h apoluth timh tou a einai ', a); και το αποτέλεσμα της εκτέλεσης dwse enan akeraio arithmo -10 h apoluth timh tou a einai 10 Άσκηση Υπολόγισε και δείξε το μέσο όρο τριών αριθμών αν όλοι είναι θετικοί.

Χρήση σύνθετης δομής επιλογής Να διαβάσετε 2 αριθμούς α, β. Αν ο αριθμός α είναι μικρότερος του β εκτυπώστε το άθροισμά τους αλλιώς το γινόμενό τους. Το πρόγραμμα σε ψευδογλώσσα ΠΡΟΓΡΑΜΜΑ Σύγκριση_Εκτύπωση_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: a, b, c ΑΡΧΗ ΔΙΑΒΑΣΕ a, b ΑΝ a < b ΤΟΤΕ c <-- a + b ΑΛΛΙΩΣ c <-- a * b ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ c ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Σύγκριση_Εκτύπωση_αριθμών program sygrish_ektypwsy_arithmwn(input, output); var a, b, c: integer; writeln('grapse 2 akeraious arithmous'); readln(a, b); if a<b then c:= a+b else c:= a*b; writeln('c=', c); Ακολουθούν δύο διαφορετικές εκτελέσεις του προγράμματος 1 η εκτέλεση grapse 2 akeraious arithmous 3 5 c=8 2 η εκτέλεση grapse 2 akeraious arithmous 5 3 c=15 Θα μπορούσαμε να χρησιμοποιήσουμε αντί της μεταβλητής c τις ακέραιες μεταβλητές sum (άθροισμα) και product (γινόμενο) ώστε το πρόγραμμά μας να είναι πιό ευανάγνωστο. Επίσης θα μπορούσαμε να τυπώσουμε τα αποτελέσματα καλύτερα.

program sygrish_ektypwsy_arithmwn(input, output); var a, b, sum, product: integer; writeln('grapse 2 akeraious arithmous'); readln(a, b); if a<b then sum:= a+b; writeln('sum=a+b=', a, '+', b, '=',sum); end else product:= a*b; writeln('product=a*b=', a, '*', b, '=',product) 1 η εκτέλεση grapse 2 akeraious arithmous 3 5 sum=a+b=3+5=8 2 η εκτέλεση grapse 2 akeraious arithmous 17 2 product=a*b=17*2=34 Να και ένας απλούστερος τρόπος να υπολογίσουμε το ίδιο program sygrish_ektypwsy_arithmwn(input, output); var a, b: integer; writeln('grapse 2 akeraious arithmous'); readln(a, b); if a<b then writeln('sum=a+b=', a, '+', b, '=',a+b) else writeln('product=a*b=', a, '*', b, '=',a*b); 1 η εκτέλεση grapse 2 akeraious arithmous 3 5 sum=a+b=3+5=8 2 η εκτέλεση grapse 2 akeraious arithmous 17 2 product=a*b=17*2=34 Άσκηση Υπολόγισε το μέσο όρο τριών αριθμών αν όλοι οι αριθμοί είναι θετικοί αλλιώς υπολόγισε το γινόμενό τους.

Χρήση Δομής Πολλαπλής Επιλογής- Αν... Αλλιώς_αν... Να διαβάσετε ένα θετικό ακέραιο αριθμό α. Αν α = 1 εκτυπώστε τη λέξη Δευτέρα, αν α=2 εκτυπώστε Τρίτη, αν α=3 εκτυπώστε τη λέξη Τρίτη κ.λπ. Αν α=7 εκτυπώστε τη λέξη Κυριακή. Διαφορετικά να τυπωθεί η φράση Δε δώσατε έναν από τους αριθμούς 1, 2, 3, 4, 5, 6, 7. Πρώτα το γράφουμε σε ψευδογλώσσα ΠΡΟΓΡΑΜΜΑ Αντιστοιχία_αριθμών_ημερών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: α ΑΡΧΗ ΓΡΑΨΕ Δώστε έναν από τους αριθμούς 1, 2, 3, 4, 5, 6, 7 ΔΙΑΒΑΣΕ α ΓΡΑΨΕ 'Έγραψες τον αριθμό ', α, που αντιστοιχεί σε ΑΝ α = 1 ΤΟΤΕ ΓΡΑΨΕ 'Δευτέρα' ΑΛΛΙΩΣ_ΑΝ α = 2 ΤΟΤΕ ΓΡΑΨΕ 'Τρίτη' ΑΛΛΙΩΣ_ΑΝ α = 3 ΤΟΤΕ ΓΡΑΨΕ 'Τετάρτη' ΑΛΛΙΩΣ_ΑΝ α = 4 ΤΟΤΕ ΓΡΑΨΕ 'Πέμπτη' ΑΛΛΙΩΣ_ΑΝ α = 5 ΤΟΤΕ ΓΡΑΨΕ 'Παρασκευή' ΑΛΛΙΩΣ_ΑΝ α = 6 ΤΟΤΕ ΓΡΑΨΕ 'Σαββάτο' ΑΛΛΙΩΣ_ΑΝ α = 7 ΤΟΤΕ ΓΡΑΨΕ 'Κυριακή' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Δε δώσατε έναν από τους αριθμούς 1, 2, 3, 4, 5, 6, 7' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Αντιστοιχία_αριθμών_ημερών program antistoixia_arithmwn_hmrwn(input, output); var a: integer; writeln('grapse enan apo tous arithmous 1, 2, 3, 4, 5, 6, 7'); readln(a); writeln('egrapses ton arithmo ', a, ' pou antistoiei se '); if a = 1 then writeln('deftera') else if a = 2 then writeln('trith') else if a = 3 then writeln('tetarth') else if a = 4 then writeln('pempth') else if a = 5 then writeln('paraskeui') else if a = 6 then writeln('savvato') else if a = 7 then writeln('kuriakh') else writeln('den egrapses enan apo tous arithmous 1, 2, 3, 4, 5, 6, 7 '); 1 η εκτέλεση Grapse enan apo tous arithmous 1, 2, 3, 4, 5, 6, 7 Egrapses ton arithmo 5 pou antistoiei se Paraskeui 2 η εκτέλεση Grapse enan apo tous arithmous 1, 2, 3, 4, 5, 6, 7 Egrapses ton arithmo a pou antistoiei se Den egrapses enan apo tous arithmous 1, 2, 3, 4, 5, 6, 7 Άσκηση Γράψτε πρόγραμμα που θα διαβάζει έναν αριθμό από 1 μέχρι 12 και θα γράφει τον αντίστοιχο μήνα πχ διαβάζει 1 και γράφει January.

Χρήση Δομής Πολλαπλής Επιλογής- Επίλεξε... Περίπτωση... Να διαβάσετε ένα ακέραιο αριθμό α που αντιστοιχεί στην κατηγορία βάρους που ανήκει το βάρος ενός ανθρώπου και να εκτυπώστε ανάλογο μήνυμα / συμβουλή. Πρώτα το γράφω σε ψευδογλώσσα. ΠΡΟΓΡΑΜΜΑ Εύρεση_ορίων_βάρους ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: κατηγορία_βάρους ΑΡΧΗ! οδηγίες για το χρήστη του προγράμματος ΓΡΑΨΕ 'Αν το βάρος σας είναι είναι λιγότερο από 30 κιλά γράψτε 1' ΓΡΑΨΕ 'Αν το βάρος σας είναι μεταξύ των 31 και 40 κιλών γράψτε 2' ΓΡΑΨΕ 'Αν το βάρος σας είναι μεταξύ των 41 και 50 κιλών γράψτε 3' ΓΡΑΨΕ 'Αν το βάρος σας είναι μεταξύ των 51 και 70 κιλών γράψτε 4' ΓΡΑΨΕ 'Αν το βάρος σας είναι μεταξύ των 71 και 90 κιλών γράψτε 5' ΓΡΑΨΕ 'Αν το βάρος σας είναι πάνω από 90 κιλά γράψτε 6' ΔΙΑΒΑΣΕ κατηγορία_βάρους ΓΡΑΨΕ 'Η κατηγορία βάρους σας είναι ', κατηγορία_βάρους ΕΠΙΛΕΞΕ κατηγορία_βάρους ΠΕΡΙΠΤΩΣΗ 0 ΓΡΑΨΕ 'Μα είναι αυτό βάρος ανθρώπου;' ΠΕΡΙΠΤΩΣΗ 1 ΓΡΑΨΕ 'Μήπως το παρακάνετε στη δίαιτα; Κινδυνεύετε!' ΠΕΡΙΠΤΩΣΗ 2 ΓΡΑΨΕ 'Πάρτε και μερικά κιλά!' ΠΕΡΙΠΤΩΣΗ 3 ΓΡΑΨΕ 'Καλά τα πάτε!' ΠΕΡΙΠΤΩΣΗ 4 ΓΡΑΨΕ 'Κάντε κάτι!' ΠΕΡΙΠΤΩΣΗ 5 ΓΡΑΨΕ 'Γρήγορα στο γιατρό σας!' ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Έπρεπε να δώσετε αριθμό από 0 έως 5!' ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Εύρεση_ορίων_βάρους

program euresh_oriwn_varous(input, output); var kathgoria_varous: integer; (* akolouthoun odhgies gia to xrhsth tou programmatos *) writeln( 'An to varos sou einai mikrotero apo 30 kila grapse 1'); writeln( 'An to varos sou einai metaxu twn 31 kai 40 kilwn grapse 2'); writeln( 'An to varos sou einai metaxu twn 41 kai 50 kilwn grapse 3'); writeln( 'An to varos sou einai metaxu twn 51 kai 70 kilwn grapse 4'); writeln( 'An to varos sou einai metaxu twn 71 kai 90 kilwn grapse 5'); writeln( 'An to varos sou einai panw apo 90 kila grapse 6'); writeln('grapse kathgoria varous'); readln(kathgoria_varous); writeln( 'H kathgoria varous sou einai ', kathgoria_varous); case kathgoria_varous of 1: writeln( 'Ma einai afto varos anthrwpou;'); 2: writeln( 'Mhpws to parakaneis sth diaita; Kindineueis!'); 3: writeln( 'Pare kaimerika kila!'); 4: writeln( 'Kala ta pas!'); 5: writeln( 'Kane kati!'); 6: writeln( 'Grhgora sto giatro sou!'); else writeln( 'Eprepe na dwseis arithmo apo 0 ews 5!') An to varos sou einai mikrotero apo 30 kila grapse 1 An to varos sou einai metaxu twn 31 kai 40 kilwn grapse 2 An to varos sou einai metaxu twn 41 kai 50 kilwn grapse 3 An to varos sou einai metaxu twn 51 kai 70 kilwn grapse 4 An to varos sou einai metaxu twn 71 kai 90 kilwn grapse 5 An to varos sou einai panw apo 90 kila grapse 6 Grapse kathgoria varous 6 H kathgoria varous sou einai 6 Grhgora sto giatro sou!

Εμφωλευμένες διαδικασίες Δηλαδή if then μέσα σε άλλο if then Διαβάστε το ύψος και το βάρος ενός άνδρα και εκτυπώστε την κατηγορία στην οποία ανήκει. Αλγόριθμος Κατηγορία_ύψους_βάρους Διάβασε ύψος, βάρος Διάβασε όνομα Αν βάρος < 70 τότε Αν ύψος < 1.60 τότε Εκτύπωσε ο κ., όνομα, είναι ευκίνητος αλλιώς Εκτύπωσε ο κ., όνομα, είναι ψηλόλιγνος Τέλος_αν Αλλιώς Αν ύψος < 1.60 τότε Εκτύπωσε ο κ., όνομα, δυσκίνητος αλλιώς Εκτύπωσε ο κ., όνομα, είναι βαρέων βαρών Τέλος_αν Τέλος_αν Τέλος Κατηγορία_ύψους_βάρους Στον παραπάνω αλγόριθμο σαν συνθήκες χρησιμοποιούμε απλές προτάσεις, όπως: Πρόταση Α: βάρος < 70 Πρόταση Β: ύψος < 1.60 Σε άλλες εφαρμογές χρειάζεται να χρησιμοποιήσουμε σύνθετες συνθήκες που κατασκευάζονται από απλές προτάσεις με τη βοήθεια λογικών πράξεων «και», «ή», «όχι». Για παράδειγμα, (ύψος < 1.70) και (βάρος > 110). Ο πίνακας δίνει τις τιμές των λογικών πράξεων για συνδυασμούς τιμών των προτάσεων. Πρόταση Α Πρόταση Β Α και Β Α ή Β όχι Α Αληθής Αληθής Αληθής Αληθής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Αληθής Αληθής Ψευδής Ψευδής Ψευδής Ψευδής Αληθής Και τώρα το αντίστοιχο πρόγραμμα σε ψευδογλώσσα

ΠΡΟΓΡΑΜΜΑ Κατηγορία_ύψους_βάρους ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: βάρος ΠΡΑΓΜΑΤΙΚΕΣ: ύψος ΧΑΡΑΚΤΗΡΕΣ: όνομα ΑΡΧΗ ΔΙΑΒΑΣΕ ύψος, βάρος ΔΙΑΒΑΣΕ όνομα ΑΝ βάρος < 70 ΤΟΤΕ ΑΝ ύψος < 1.60 ΤΟΤΕ ΓΡΑΨΕ 'ο κ. ', όνομα, 'είναι ευκίνητος!' ΑΛΛΙΩΣ ΓΡΑΨΕ 'ο κ. ', όνομα, 'είναι ψηλόλιγνος!' ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ ΑΝ ύψος < 1.60 τότε ΓΡΑΨΕ 'ο κ. ', όνομα, 'είναι δυσκίνητος!' ΑΛΛΙΩΣ ΓΡΑΨΕ 'ο κ. ', όνομα, 'είναι βαρέων βαρών!' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κατηγορία_ύψους_βάρους program kathgoria_ypsous_varous(input, output); var varos: integer; ypsos: real; onoma: string; writeln('grapse onoma'); readln(onoma); writeln('grapse varos, ypsos'); readln(varos, ypsos); if varos < 70 then if ypsos < 1.60 then writeln('o k. ', onoma, ' einai eukinhtos!') else writeln('o k. ', onoma, ' einai eukinhtos!') else if ypsos < 1.60 then writeln('o k. ', onoma, ' einai duskinhtos!') else writeln('o k. ', onoma, ' einai varewn varwn!'); grapse onoma Christos grapse varos, ypsos 90 1.80 o k. Christos einai varewn varwn!

Δομή επανάληψης while do ( Όσο... επανάλαβε) Να εμφανίσετε τους ακέραιους αριθμούς από 1 έως 20 ΠΡΟΓΡΑΜΜΑ Απαρίθμηση_από_1_έως_20 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι ΑΡΧΗ Ι <-- 1! το Ι πρέπει να έχει αρχική τιμή πριν από τη δομή όσο... επανάλαβε ΟΣΟ Ι <= 20 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ Ι Ι <-- Ι + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Απαρίθμηση_από_1_έως_20 program aparithmisi_apo_1_20(output); var i: integer; i:=1; while i <= 20 do writeln(i); i:= i+1 1 2 3 20 Άσκηση Υπολόγισε το γινόμενο 1*2*3*4*5*6*7*8*9 χρησιμοποιώντας while. do.

Δύο Δομές επανάληψης: while do («Όσο... επανάλαβε»), repeat until («Αρχή_επανάληψης») και η σύγκρισή τους. Δομή επανάληψης «Όσο... επανάλαβε» Επαναληπτική διαδικασία ανάγνωσης ακεραίων αριθμών ΠΡΟΓΡΑΜΜΑ Ανάγνωση_θετικών_ακεραίων_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι ΑΡΧΗ ΔΙΑΒΑΣΕ Ι! το Ι πρέπει να έχει αρχική τιμή πριν από τη δομή όσο... επανάλαβε ΟΣΟ Ι > 0 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ 'Πληκτολόγησες τον αριθμό ', Ι ΔΙΑΒΑΣΕ Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ανάγνωση_θετικών_ακεραίων_αριθμών program anagnwsh_akeraiwn_arithmwn(input, output); var i: integer; writeln('oso dineis thetiko arithmo tha synexizei'); writeln('dwse thetiko akeraio arithmo'); readln(i); while i > 0 do writeln('plhktrologhses ton arithmo ', i); readln(i) Άσκηση Διάβασε θετικούς αριθμούς και υπολόγισε το άθροισμά τους. Θα σταματήσεις αν διαβάσεις αρνητικό αριθμό ή μηδέν. Να χρησιμοποιήσεις while do.

Repeat until (Αρχή_επανάληψης Μέχρις_ότου). ΠΡΟΓΡΑΜΜΑ Ανάγνωση_θετικών_ακεραίων_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Ι ΓΡΑΨΕ 'Πληκτολόγησες τον αριθμό ', Ι ΜΕΧΡΙΣ_ΟΤΟΥ Ι < 0 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ανάγνωση_θετικών_ακεραίων_αριθμών program anagnwsh_thetikwn_akeraiwn_arithmwn(input, output); var i: integer; writeln('oso dineis thetiko arithmo tha synexizei'); repeat writeln('plhktrologhse arithmo '); readln(i); writeln('egrapses ton arithmo ', i); until i<=0; oso dineis thetiko arithmo tha synexizei plhktrologhse arithmo 5 egrapses ton arithmo 5 plhktrologhse arithmo 56 egrapses ton arithmo 56 plhktrologhse arithmo 0 egrapses ton arithmo 0 Άσκηση Διάβασε θετικούς αριθμούς και υπολόγισε το άθροισμά τους. Θα σταματήσεις αν διαβάσεις αρνητικό αριθμό ή μηδέν. Να χρησιμοποιήσεις repeat until. Στη συνέχεια θα προσπαθήσουμε να ξεκαθαρίσουμε που διαφέρουν οι επαναληπτικές δομές Όσο επανάλαβε, Αρχή_επανάληψης Μέχρις_ότου. Τα παρακάτω προγράμματα διαβάζουν θετικούς ακέραιους και τερματίζουν αν πληκτρολογηθεί αρνητικός αριθμός ή μηδέν ή αν ο χρήστης δώσει 5 αριθμούς. Όταν χρησιμοποιούμε τη δομή repeat until (Αρχή_επανάληψης Μέχρις_ότου) στο δεύτερο πρόγραμμα τότε αυτό τυπώνει το μήνυμα 'Πληκτολόγησες τον αριθμό ' και τον αρνητικό αριθμό που δίνουμε για να σταματήσουμε την εισαγωγή θετικών ακεραίων πριν πληκτρολογηθούν πέντε ακέραιοι. Πρώτα σε ψευδογλώσσα το πρόγραμμα με «όσο επανάλαβε».

ΠΡΟΓΡΑΜΜΑ Ανάγνωσης_θετικών_ακεραίων_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, Counter ΑΡΧΗ ΔΙΑΒΑΣΕ i Counter <-- 0 ΟΣΟ Counter < 4 ΚΑΙ i > 0 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ 'Πληκτολόγησες τον αριθμό ', i Counter <-- Counter + 1 ΔΙΑΒΑΣΕ i ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ανάγνωσης_θετικών_ακεραίων_αριθμών program anagnwsh_mexri_5_arithmwn(input, output); var i, counter: integer; writeln('plhktrologhse mexri 5 thetikous akeraious arithmous'); writeln('dwse arithmo'); readln(i); counter:=0; while ((counter<4)and(i>0)) do writeln('egrapses ton arithmo ', i); writeln('plhktrologhse enan arithmo'); readln(i); counter:=counter+1 writeln('egrapses ton arithmo ', i); 1 η εκτέλεση plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo 1 egrapses ton arithmo 1 plhktrologhse enan arithmo 3 egrapses ton arithmo 3 plhktrologhse enan arithmo 78 egrapses ton arithmo 78 plhktrologhse enan arithmo 34 egrapses ton arithmo 34 plhktrologhse enan arithmo 3 egrapses ton arithmo 3 2 η εκτέλεση plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo 1 egrapses ton arithmo 1 plhktrologhse enan arithmo 3 egrapses ton arithmo 3 plhktrologhse enan arithmo -3 egrapses ton arithmo -3

Τώρα το πρόγραμμα σε ψευδογλώσσα με ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΠΡΟΓΡΑΜΜΑ Ανάγνωσης_θετικών_ακεραίων_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, Counter ΑΡΧΗ! δε γράφουμε εντολή ΔΙΑΒΑΣΕ i πριν από τη δομή ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Counter <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ i ΓΡΑΨΕ 'Πληκτρολόγησες τον αριθμό ', i Counter <-- Counter + 1 ΜΕΧΡΙΣ_ΟΤΟΥ Counter > 4 Ή i < 0 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ανάγνωσης_θετικών_ακεραίων_αριθμών program anagnwsh_mexri_5_arithmwn(input, output); var i, counter: integer; writeln('plhktrologhse mexri 5 thetikous akeraious arithmous'); counter:=0; repeat writeln('dwse arithmo'); readln(i); writeln('egrapses ton arithmo ', i); counter:=counter+1; end until ((counter>4)or(i<0)); 1 η εκτέλεση plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo 1 egrapses ton arithmo 1 dwse arithmo 2 egrapses ton arithmo 2 dwse arithmo 3 egrapses ton arithmo 3 dwse arithmo 4 egrapses ton arithmo 4 dwse arithmo 5 egrapses ton arithmo 5 2 η εκτέλεση plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo -3 egrapses ton arithmo -3 Άσκηση Γράψε 2 προγράμματα που να διαβάζουν 10 θετικούς αριθμούς και να υπολογίζουν το γινόμενό τους. Χρησιμοποίησε στο ένα πρόγραμμα while και στο άλλο repeat.

Αν θέλουμε να μην τυπώνεται και ο αρνητικός αριθμός χρησιμοποιούμε και δομή απλής επιλογής μέσα στη δομή Αρχή_επανάληψης. ΠΡΟΓΡΑΜΜΑ Ανάγνωσης_θετικών_ακεραίων_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, Counter ΑΡΧΗ! δε γράφουμε εντολή ΔΙΑΒΑΣΕ i Counter <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ i ΑΝ i > 0 ΤΟΤΕ ΓΡΑΨΕ 'Πληκτολόγησες τον αριθμό ', i ΤΕΛΟΣ_ΑΝ Counter <-- Counter + 1 ΜΕΧΡΙΣ_ΟΤΟΥ Counter > 4 Ή i < 0 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ανάγνωσης_θετικών_ακεραίων_αριθμών program anagnwsh_mexri_5_arithmwn(input, output); var i, counter: integer; writeln('plhktrologhse mexri 5 thetikous akeraious arithmous'); counter:=0; repeat writeln('dwse arithmo'); readln(i); if i>0 then writeln('egrapses ton arithmo ', i); counter:=counter+1; end until ((counter>4)or(i<0)); Κατά την εκτέλεση στο προηγούμενο πρόγραμμα είδαμε plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo -3 egrapses ton arithmo -3 Κατά την εκτέλεση στο τελευταίο πρόγραμμα βλέπαμε plhktrologhse mexri 5 thetikous akeraious arithmous dwse arithmo -3

Δομή επανάληψης Για από μέχρι Να εκτυπωθεί το άθροισμα Sum = 1+2+3+ +n, όπου n = 100. ΠΡΟΓΡΑΜΜΑ Υπολογισμός_αθροίσματος_ακεραίων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Sum, I ΑΡΧΗ Sum <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100 Sum <-- Sum + Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Sum ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Υπολογισμός_αθροίσματος_ακεραίων program ypologismos_athroismatos_diadoxikwn_akeraiwn(output); var sum, i: integer; sum:=0; for i:=1 to 100 do sum:= sum+i; writeln('sum=1+2+3+...+100= ', sum); Να τι θα δείξει Sum=1+2+3+...+100=5050 Αν θέλουμε να διαβάζουμε το Ν και να υπολογίζουμε το άθροισμα 1+2+3+ +Ν μπορούμε να γράψουμε το επόμενο πρόγραμμα. ΠΡΟΓΡΑΜΜΑ Υπολογισμός_αθροίσματος_ακεραίων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Sum, I, Ν ΑΡΧΗ ΔΙΑΒΑΣΕ Ν Sum <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν Sum <-- Sum + Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1+2+...+Ν=',Sum ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Υπολογισμός_αθροίσματος_ακεραίων program ypologismos_athroismatos_diadoxikwn_akeraiwn(output); var sum, i, N: integer; writeln('grapse N'); readln(n); sum:=0; for i:=1 to N do sum:= sum+i; writeln('sum=1+2+3+...+100= ', sum); Να τι θα δείξει. grapse N 100 Sum=1+2+3+...+100=5050

Άσκηση Διάβασε 10 θετικούς αριθμούς και υπολόγισε το γινόμενό τους. Χρησιμοποίησε εντολή for. Χρήση λογικών μεταβλητών για την επίλυση προβλήματος απόφασης Διαβάστε έναν ακέραιο αριθμό που αντιστοιχεί σε κάποιο έτος μχ και εξετάστε αν είναι δίσεκτο ή όχι. Αλγόριθμος Δίσεκτο_έτος Διάβασε έτος! Αν το έτος είναι πολλαπλάσιο του 4 τότε είναι δίσεκτο.! Βέβαια, αν είναι και πολλαπλάσιο του 100 και δεν είναι και πολλαπλάσιο του 400! Τότε δεν είναι δίσεκτο.! Στην επόμενη απλή δομή επιλογής αν το έτος είναι πολλαπλάσιο του 4! τότε θα υποθέσουμε ότι είναι δίσεκτο.! Επειδή στη συνέχεια του αλγορίθμου θα εξετάσουμε αν το έτος! είναι πολλαπλάσιο του 100 δεν υπάρχει πρόβλημα Αν έτος mod 4 = 0 τότε Δίσεκτο < -- Αληθής Τέλος_αν! Στην επόμενη δομή επιλογής εξετάζουμε αν το έτος είναι πολλαπλάσιο του 100! και αν είναι τότε θεωρούμε ότι δεν είναι δίσεκτο.! Βέβαια, αμέσως μετά θα πρέπει να εξετάσουμε! αν το έτος είναι πολλαπλάσιο του 400 Αν έτος mod 100 = 0 τότε Δίσεκτο < -- Ψευδής Τέλος_αν! Αν το έτος είναι πολλαπλάσιο του 400 τότε σίγουρα είναι δίσεκτο Αν έτος mod 400 = 0 τότε Δίσεκτο < -- Αληθής Τέλος_αν! Εκτύπωση μηνύματος που απαντά στο χρήστη Αν Δίσεκτο = Αληθής τότε Εκτύπωσε το έτος που πληκτρολογήσατε είναι Δίσεκτο Αλλιώς Εκτύπωσε το έτος που πληκτρολογήσατε ΔΕΝ είναι Δίσεκτο Τέλος_αν Τέλος Δίσεκτο_έτος

ΠΡΟΓΡΑΜΜΑ Δίσεκτο_έτος ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: έτος ΛΟΓΙΚΕΣ: δίσεκτο ΑΡΧΗ ΔΙΑΒΑΣΕ έτος δίσεκτο <-- ΨΕΥΔΗΣ! Έστω ότι το έτος δεν είναι δίσεκτο ΑΝ (έτος MOD 4 = 0) ΤΟΤΕ δίσεκτο <-- ΑΛΗΘΗΣ! Αν το έτος είναι πολλαπλάσιο του 4 τότε είναι δίσεκτο! εκτός αν είναι και πολλαπλάσιο του 100! χωρίς να είναι και πολλαπλάσιο του 400 ΤΕΛΟΣ_ΑΝ ΑΝ (έτος MOD 100 = 0) ΤΟΤΕ δίσεκτο <-- ΨΕΥΔΗΣ! Αν το έτος είναι πολλαπλάσιο του 100! και δεν είναι πολλαπλάσιο του 400 τότε δεν είναι δίσεκτο ΤΕΛΟΣ_ΑΝ ΑΝ (έτος MOD 400 = 0) ΤΟΤΕ δίσεκτο <-- ΑΛΗΘΗΣ! Αν το έτος είναι πολλαπλάσιο του 400 τότε είναι σίγουρα δίσεκτο ΤΕΛΟΣ_ΑΝ ΑΝ (δίσεκτο = ΑΛΗΘΗΣ) ΤΟΤΕ ΓΡΑΨΕ 'Το έτος που εισάγατε είναι δίσεκτο' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Το έτος που εισάγατε δεν είναι δίσεκτο' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Δίσεκτο_έτος program disekto_etos(input, output); var etos: integer; disekto: Boolean; writeln('dwse etos'); readln(etos); disekto:= FALSE; (* estw oti to etos den einai disekto *) if (etos MOD 4 =0) then disekto:= TRUE; (* An to etos einai pollaplasio tou 4 tote einai disekto *) (* ektos an einai kai pollaplasio tou 100 *) (* xwris na einai kai pollaplasio tou 400 *) if (etos MOD 100 = 0) then disekto := FALSE; (* an to etos einai pollaplasio tou 100 *) (* kai den einai pollaplasio tou 400 tote einai disekto *) if (etos MOD 400 = 0) then disekto := TRUE; (* an to etos einai pollaplasio tou 400 tote einai sigoura disekto *) if (disekto = TRUE) then writeln('to etos pou egrapses einai disekto ') else writeln('to etos pou egrapses den einai disekto ');

Θα δοκιμάσουμε να γράψουμε το πρόγραμμα χρησιμοποιώντας συνθήκες. Πρώτα σε ψευδογλώσσα. ΠΡΟΓΡΑΜΜΑ Υπολογισμός_δίσεκτου_με_χρήση_συνθηκών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: έτος ΛΟΓΙΚΕΣ: δίσεκτο ΑΡΧΗ ΔΙΑΒΑΣΕ έτος ΑΝ (έτος MOD 4 = 0) ΚΑΙ ((έτος MOD 100 <> 0) Η (έτος MOD 400 = 0)) ΤΟΤΕ ΓΡΑΨΕ 'Το έτος που εισάγατε είναι δίσεκτο' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Το έτος που εισάγατε δεν είναι δίσεκτο' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Υπολογισμός_δίσεκτου_με_χρήση_συνθηκών Πως διαμορφώσαμε τη συνθήκη στη δομή επιλογής Αν (το έτος είναι πολλαπλάσιο του 400 ) τότε το έτος είναι Δίσεκτο Αν (το έτος είναι πολλαπλάσιο του 4) ΚΑΙ (το έτος δεν είναι πολλαπλάσιο του 100) (ακόμη και αν το έτος δεν είναι πολλαπλάσιο του 400) τότε το έτος είναι σίγουρα δίσεκτο. program disekto_etos(input, output); var etos: integer; disekto: Boolean; writeln('dwse etos'); readln(etos); if ((etos MOD 4 =0) and ((etos MOD 100 <> 0) or (etos Mod 400 = 0))) then writeln('to etos pou egrapses einai disekto ') else writeln('to etos pou egrapses den einai disekto '); Εκτέλεση του προγράμματος dwse etos 2008 to etos pou egrapses einai disekto

Κεφάλαιο 3 Εμπέδωση Αρχή με απλά παραδείγματα Θέλουμε να γράψουμε ένα απλό πρόγραμμα για την ανάγνωση και εκτύπωση αριθμών. program read_and_print_numbers(input, output); var a, b, c: integer; d, e, z, pi: real; a := 3; b:=a + 14; c:=a*b-20; a:=(c-a)div 3; b:=b MOD a; c:=c-(a+b); d:= 3.14; e:=2*d + 14.5; z:=(d*e)/(z + 3.2); writeln('a=', a, ' b=', b, ' c=', c); writeln('d=', d, ' e=', e, ' z=', z); pi:= 3.14; writeln('sin(pi/6)=', sin(pi/6)); writeln('cos(pi/3)=', cos(pi/3)); writeln('abs(-8)=', abs(-8)); writeln('sqrt(4)=', sqrt(4)); a=9 b=8 c=14 d=3.14 e=20.78 z=20.39 sin(pi/6)=0.499 cos(pi/3)=0.5 abs(-8)=8 sqrt(4)=2 Για τον έλεγχο προγράμματος με το χέρι χρησιμοποιούμε Πίνακα τιμών program pinakas_timwn(output); var x, y, z: integer; x:= 84; y:= x MOD 5; z:=4; x:= (x DIV 5 - y**2 + 1); z:= ((x + y)*2); y:= z - y; writeln(' x=', x, ' y=', y, ' z=', z);

x=1 y=6 z=10 Πίνακας Τιμών X y Z 84 4 4 1 4 4 1 4 10 1 6 10 Το ίδιο θα μπορούσε να γίνει από το ίδιο το πρόγραμμα program pinakas_timwn(output); var x, y, z: integer; writeln('pinakas timwn'); x:= 84; y:= x MOD 5; z:=4; writeln('x=', x, ' y=', y, ' z=', z); x:= (x DIV 5 - y**2 + 1); writeln('x=', x, ' y=', y, ' z=', z); z:= ((x + y)*2); writeln('x=', x, ' y=', y, ' z=', z); y:= z - y; writeln(' x=', x, ' y=', y, ' z=', z); Pinakas timwn x=84 y=4 z=4 x=1 y=4 z=4 x=1 y=4 z=10 x=1 y=6 z=10 Αριθμητικοί τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση ** ύψωση σε δύναμη Τελεστές σύγκρισης < > <= >= = <> διάφορο

Λογικοί τελεστές AND (ΚΑΙ) λογική σύζευξη OR (Ή) λογική διάζευξη NOT (ΟΧΙ) λογική άρνηση Για την κατασκευή εκφράσεων χρησιμοποιούμε και παρενθέσεις Μεταβλητές Αποδεκτά και μη αποδεκτά ονόματα μεταβλητών Όνομα Timh Timh-31 Timh_2 AstaNaPane Timh.4 TAXus A/a Timh 5 TRIXES End 25eths End_1 Αποδεκτό ΝΑΙ/ΟΧΙ ΝΑΙ ΟΧΙ ΝΑΙ ΝΑΙ ΟΧΙ ΝΑΙ ΟΧΙ ΟΧΙ ΝΑΙ ΟΧΙ ΟΧΙ ΝΑΙ Σχόλιο Τύποι μεταβλητών και τιμές που μπορούν να πάρουν Μεταβλητή Εκχώρηση τιμής Τύπος μεταβλητής A A:=66; Integer Ypsos Ypsos := 14 meter ; String condition_a Condition_a :=TRUE; Boolean Pi pi:= 3.14 ; String pi_r Pi_r:=3.14 ; Real varos Varos:= 150.150; Real condition_b Condition_b := TRUE ; String condition_c Condition_c :=FALSE; Boolean Pi_r1 Pi_r1:= 6.28; Real

program pinakas_timwn(output); var a:integer; ypsos: String; condition_a: Boolean; pi: String; pi_r: Real; varos: Real; condition_b: String; condition_c: Boolean; pi_r1: Real; a:=66; Ypsos:= '14 meter'; condition_a:=true; pi:='3.14'; pi_r:=3.14 ; Varos:= 150.150; condition_b:='true'; condition_c:=false; pi_r1:= 6.28; writeln('times metavlhtwn'); writeln('a=', a); writeln('ypsos=', ypsos); writeln('condition_a=', condition_a); writeln('pi=', pi); writeln('pi_r=', pi_r); writeln('varos=', varos); writeln('condition_b=', condition_b); writeln('condition_c=', condition_c); writeln('pi_r=', pi_r1); Ιεραρχία πράξεων program ierarxia_praxewn(output); var a, b, c: real; a:= 2*10-3*3 ** 2 + 3; writeln('2*10-3*3 ** 2+3 ','==== ',a); b:= ((2*10-3*3)**2)+ 3; writeln('((2*10-3*3)**2)+3 ','==== ', b); c:= 2*10-3*3 ** 2; writeln('2*10-3*3 ** 2 ','==== ',c); a=-4 b=124 c=-7 Χρησιμοποιήστε παρενθέσεις.

Εντολές εκχώρησης τιμής Εντολή Σχόλιο Timh:= επαρκής ποσότητα ; Σωστή αν η μεταβλητή timh είναι string (αλφαριθμητική) K + 2 < -- 6; Λάθος Synolo:= synolo + 10; Σωστή αν η μεταβλητή σύνολο είναι αριθμητική a:=b:=c; Λάθος Synolo:= 5 + 5; Λάθος Synolo:=(a*b)+c; Σωστή αν οι μεταβλητές synolo, a, b, c είναι αριθμητικές Synolo:= 15 * (synolo** 3) + 4; Σωστή αν η μεταβλητή synolo είναι integer Read_timh:= a+b+c; Σωστή αν οι μεταβλητές read_timh, a, b, c είναι αριθμητικές timh = 15; Λάθος timh = a+n; Λάθος a+ 2:=b+6; Λάθος Varos swmatos:= 12.5; Λάθος Varos_swmatos:= 12.5; Σωστή αν η μεταβλητή είναι αριθμητική Γράψτε την αντίστοιχη εντολή εκχώρησης τιμής για την αλγεβρική παράσταση Παράσταση A 3 2 5X 7X 234 2 9X 25 Εντολή Α := (5*(Χ**3) + 7 *( Χ**2) + 234) / (9*(Χ**2) -25)

Να υπολογίσετε το αποτέλεσμα των πράξεων Εντολή Αποτέλεσμα 24mod5 27mod4 1 2^3+3*(27mod(25mod7)) 17 25mod22div4 0 ((13+2)div2)/(7-4+1) 1.75 15div2 7 3div4 0 15mod3 0 Περισσότερα προγράμματα Διαβάστε τρεις αρίθμους και εμφανίστε το άθροισμα, το γινόμενο και το μέσο όρο τους program ypologismoi(input, output); var a, b, c, athroisma, ginomeno: integer; mesos_oros: real; writeln('dwse 3 akeraious arithmous'); readln(a, b, c); athroisma:= a+b+c; ginomeno:= a*b*c; mesos_oros:= (a+b+c)/3; (* epishs to idio an mesos_oros := athroisma/3; *) writeln('athroisma=', athroisma); writeln('ginomeno=', ginomeno); writeln('mesos oros=', mesos_oros);

Να υπολογίσετε την περίοδο του εκκρεμούς T 2 L g L=μήκος εκκρεμούς, g=επιτάχυνση της βαρύτητας Αλγόριθμος Περίοδος_εκκρεμούς Διάβασε L g < -- 10 π < -- 3.14 T <-- 2 * π * Τετραγωνική_Ρίζα (L / g) Εκτύπωσε Η περίοδος του εκκρεμούς είναι', Τ Τέλος Περίοδος_εκκρεμούς ΠΡΟΓΡΑΜΜΑ περίοδος_εκκρεμούς ΣΤΑΘΕΡΕΣ π = 3.14 g = 10 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: L, T ΑΡΧΗ ΔΙΑΒΑΣΕ L T <-- 2 * π * Τ_Ρ (L / g) ΓΡΑΨΕ 'Η περίοδος του εκκρεμούς είναι', Τ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ περίοδος_εκκρεμούς program periodos_ekkremous(input, output); const pi=3.14; g=10; var l, t: real; writeln('grapse to mhkos tou ekkremous'); readln(l); t:= 2 * pi * sqrt(l/g); writeln('h periodos tou ekkremous einai ', t); Αν Μήκος = 12 τότε η περίοδος είναι 6.88

Άσκηση 1. Υπολόγισε το εμβαδό S του τριγώνου αφού διαβάσεις την πλευρά του b και το αντίστοιχο ύψος του h. 2.Υπολόγισε το εμβαδό S του τριγώνου αφού διαβάσεις όλες τις πλευρές του από τον τύπο τουήρωνα. όπου s=(α+b+c)/2. Ο αριθμός s ονομάζεται ημιπερίμετρος του τριγώνου. 3. Υπολόγισε το εμβαδό τριγώνου από έναν από τους παρακάτω τύπους:

Κεφάλαιο 4 Περισσότερες Ασκήσεις Pascal Υπολογισμός περιμέτρου κύκλου program perimetros_kuklou(input, output); const pi = 3.14; var perimetros, aktina: real; writeln('dwse aktina'); readln(aktina); perimetros := 2*pi*aktina; writeln('perimetros = ', perimetros); Γράψτε πρόγραμμα που θα ελέγχει αν ο αριθμός που δίνει ο χρήστης είναι θετικός ακέραιος. Αν είναι στη συνέχεια να εξετάσετε αν είναι άρτιος ή περιττός. Αν είναι άρτιος προσθέστε του 10 ενώ αν είναι περιττός προσθέστε του 100. program artios_perittos(input, output); var arithmos: integer; writeln('dwse arithmo'); readln(arithmos); if arithmos <= 0 then writeln('prepei na dwseis akeraio > 0') else if arithmos MOD 2 = 0 then writeln('o arithmos ', arithmos, ' einai artios'); arithmos := arithmos+10; end else writeln('o arithmos ', arithmos, ' einai perittos'); arithmos := arithmos+100; end writeln('o telikos arithmos einai ', arithmos);

Γράψτε πρόγραμμα που θα διαβάζει βαθμούς σε πέντε εξετάσεις στο εργαστήριο και αν ο μέσος όρος είναι πάνω από 4.6 ο σπουδαστής να περνάει το εργαστήριο. program ergasthrio(input, output); var b1, b2, b3, b4, b5, mesos_oros: real; writeln('dwse bathmous gia tis 5 exetaseis'); readln(b1, b2, b3, b4, b5); if (b1<0)or (b2<0) or (b3<0) or (b4<0) or (b5<0)or (b1>10)or (b2>10) or (b3>10) or (b4>10) or (b5>10) then writeln('oi vathmoi prepei na einai >=0 kai <=10') else mesos_oros := (b1+b2+b3+b4+b5)/5; if mesos_oros >=4.6 then writeln('mesos_oros=', mesos_oros,' Pernaei') else writeln('mesos_oros=', mesos_oros,' Den Pernaei') Άσκηση Γράψτε πρόγραμμα που θα διαβάζει το βαθμό θεωρίας και βαθμούς σε πέντε εξετάσεις στο εργαστήριο. Αν ο βαθμός θεωρίας και ο μέσος όρος των εργαστηρίων είναι πάνω από 5 ο σπουδαστής να περνάει το μάθημα (θεωρία και εργαστήριο). Τι θα εμφανίσει το πρόγραμμα; program stars(input, output); var i, j: integer; for i:=1 to 5 do for j:=1 to 7 do write('*'); writeln; ******* ******* ******* ******* *******

program stars(input, output); var i, j: integer; for i:=1 to 5 do for j:=1 to i do write('*'); writeln; * ** *** **** ***** Άσκηση Γράψε πρόγραμμα που θα τυπώνει: * ** *** **** ***** ***** **** *** ** *

Υπολογίστε το άθροισμα 1+2+3+..+Ν χρησιμοποιώντας εντολή while. Πρέπει 1<=Ν<=10. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; writeln('dwse plhthos akeraiwn pou tha prostheseis'); readln(n); if (N<1) or (N>10) then writeln('dwse swsta to plhthos') else athroisma:=0; i:=1; while i<=n do athroisma:= athroisma +i; i:= i+1; writeln('athroisma =', athroisma); Υπολογίστε το άθροισμα 1+2+3+..+Ν χρησιμοποιώντας εντολή repeat. Πρέπει 1<=Ν<=10. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; writeln('dwse plhthos akeraiwn pou tha prostheseis'); readln(n); if (N<1) or (N>10) then writeln('dwse swsta to plhthos') else athroisma:=0; i:=1; repeat athroisma:= athroisma+i; i:= i+1; end until i>n; writeln('athroisma =', athroisma);

Στα δύο προηγούμενα προγράμματα δεν είναι απαραίτητο να γράψουμε, end μέσα στις δομές repeat, while. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; writeln('dwse plhthos akeraiwn pou tha prostheseis'); readln(n); if (N<1) or (N>10) then writeln('dwse swsta to plhthos') else athroisma:=0; i:=1; repeat athroisma:= athroisma+i; i:= i+1; until i>n; writeln('athroisma =', athroisma);

Κεφάλαιο 5 Παραδείγματα χρήσης εντολών επανάληψης for, while, repeat Υπολογίστε το άθροισμα 1+2+3+...+10 χρησιμοποιώντας εντολή for. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; N:=10; athroisma:=0; i:=1; for i:= 1 to N do athroisma:= athroisma+i; writeln('athroisma=1+2+3+4+5+6+7+8+9+10=', athroisma); Υπολογίστε το άθροισμα 1+2+3+...+10 χρησιμοποιώντας εντολή while. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; N:= 10; athroisma:=0; i:=1; while i<=n do athroisma:= athroisma +i; i:= i+1; writeln('athroisma=1+2+3+4+5+6+7+8+9+10=', athroisma); Υπολογίστε το άθροισμα 1+2+3+..+10 χρησιμοποιώντας εντολή repeat. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; N:=10; athroisma:=0; i:=1; repeat athroisma:= athroisma+i; i:= i+1 until i>n; writeln('athroisma=1+2+3+4+5+6+7+8+9+10=', athroisma); Άσκηση Τροποποιήστε τα 3 παραπάνω προγράμματα upologismos_athroismatos ώστε να υπολογίζουν το γινόμενο των αριθμών.

Τα δύο παρακάτω προγράμματα διαβάζουν τον αριθμό Ν, χρησιμοποιούν εντολή repeat και υπολογίζουν το άθροισμα 1+2+3+...+Ν. program upologismos_athroismatos(input, output); var i, N, athroisma: integer; writeln('dwse plhthos diadoxikwn akeraiwn pou tha prostheseis'); readln(n); if (N<1) or (N>10) then writeln('dwse swsta to plhthos') else athroisma:=0; i:=1; repeat athroisma:= athroisma+i; i:= i+1; until i>n; writeln('athroisma =', athroisma); Αποτελέσματα εκτέλεσης του προγράμματος dwse plhthos diadoxikwn akeraiwn pou tha prostheseis 5 15 (επειδή 1+2+3+4+5=15) Ξαναγράφουμε το ίδιο πρόγραμμα και παραλείπουμε τις δύο παρακάτω εντολές που δίνουν αρχικές τιμές στις μεταβλητές: athroisma:=0; i:=1; program upologismos_athroismatos(input, output); var i, N, athroisma: integer; writeln('dwse plhthos diadoxikwn akeraiwn pou tha prostheseis'); readln(n); if (N<1) or (N>10) then writeln('dwse swsta to plhthos') else repeat athroisma:= athroisma+i; i:= i+1; until i>n; writeln('athroisma =', athroisma); Τα αποτελέσματα εκτέλεσης του προγράμματος είναι τα ίδια.

Ακολουθούν παραδείγματα προγραμμάτων που χρησιμοποιούν while, repeat. Το πρόγραμμα διαβάζει και προσθέτει αριθμούς μεγαλύτερους από 0 και μικρότερους από 10. Για να σταματήσει το πρόγραμμα πληκτρολογείς είτε αριθμό αρνητικό ή 0 ή αριθμό μεγαλύτερο του 9. Δηλαδή για να το διατυπώσουμε και αλλιώς το πρόγραμμα συνεχίζει όσο πληκτρολογούμε αριθμό που ανήκει στο διάστημα [1, 10). Αν δώσουμε αριθμό που δεν ανήκει στο διάστημα [1, 10) τότε το πρόγραμμα σταματά. program upologismos_athroismatos(input, output); var arithmos, athroisma: integer; writeln('to programma tha diavazei kai tha prosthetei arithmous'); writeln('dwse arithmo <10 kai >0'); writeln('gia na stamathsei dwse arithmo pou den anhkei sto diasthma [1, 10)'); readln(arithmos); while (arithmos>=1) and (arithmos<10) do athroisma := athroisma+arithmos; writeln('dwse arithmo < 10 kai > 1'); readln(arithmos) writeln('athroisma =', athroisma); Αποτελέσματα εκτέλεσης του προγράμματος to programma tha diavazei kai tha prosthetei arithmous dwse arithmo <10 kai >0 1 dwse arithmo <10 kai >0 2 dwse arithmo <10 kai >0 3 dwse arithmo <10 kai >0 4 dwse arithmo <10 kai >0 5 athroisma =15 program upologismos_athroismatos(input, output); var arithmos, athroisma: integer; writeln('to programma tha diavazei kai tha prosthetei arithmous'); repeat writeln('dwse arithmo < 10 kai > 1'); athroisma := athroisma+arithmos; readln(arithmos); writeln('arithmos=', arithmos); until(arithmos<1)or(arithmos>=10); writeln('athroisma =', athroisma); Τα αποτελέσματα εκτέλεσης του προγράμματος είναι ίδια με τα προηγούμενα.

Άσκηση Τροποποιήστε τα 2 παραπάνω προγράμματα upologismos_athroismatos ώστε να υπολογίζουν το γινόμενο των αριθμών. Διαφορά for, while, repeat Θέλουμε το πρόγραμμά μας να διαβάζει ζευγάρια θετικών ακεραίων και να γράφει ποιούς αριθμούς δώσαμε. Αν ξέρουμε πόσα ζεύγη θα διαβάσει το πρόγραμμα (πχ 5 ζευγάρια) τότε χρησιμοποιούμε for: for i:= 1 to 5 do εντολές Ακολουθεί ολόκληρο το πρόγραμμα. program diavazw_zeugh(input, output); var i, arithmos1, arithmos2: integer; for i:= 1 to 5 do writeln('dwse 2 akeraious aritmous.'); readln(arithmos1, arithmos2); writeln('oi arithmoi pou edwses einai: ', arithmos1,', ', arithmos2); readln Αλλιώς χρησιμοποίησε while ή repeat. Τότε θα χρειαστείς μία συνθήκη πχ το πρόγραμμα θα σταματάει αν δώσουμε αριθμό 0 μέσα στο ζεύγος. Να πως διαμορφώνονται οι εντολές while, repeat: while (arithmos1 > 0) and (arithmos2 > 0) do εντολές repeat εντολές until (arithmos1 = 0) or (arithmos2 = 0); Ακολουθούν τα δύο προγράμματα. Παρατήρησε ότι πριν από το while χρειάζεται να διαβάσεις το πρώτο ζευγάρι αριθμών ενώ στο repeat δε χρειάζεται!