Σημειώσεις για την Pascal

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σημειώσεις για την Pascal"

Transcript

1 Σημειώσεις για την Pascal 10 Νοεμβρίου Γλώσσες προγραμματισμού Οι σύγχρονοι μικροεπεξεργαστές μπορούν μεταξύ άλλων να εκτελούν αριθμητικές και λογικές πράξεις και να διαβάζουν και γράφουν στη μνήμη του υπολογιστή. Για να γίνει αυτό πρέπει να τους δωθούν οι ανάλογες εντολές. Οι εντολές είναι κωδικοποιημένες ως αριθμοί. Για παράδειγμα οι παρακάτω εντολές βάζουν σε μια θέση μνήμης τον αριθμό 5, σε μια άλλη τον αριθμό 7, προσθέτουν τους δύο αριθμούς και αποθηκεύουν το αποτέλεσμα σε μια τρίτη θέση μνήμης (για έναν επεξεργαστή Pentium). 457f 464c d e5 10ec 45c7 05fc 0000 c700 f b 8bf8 fc55 048d 8902 f445 00b c900 00c a e 2f75 694c 616e 6f e 342e 312d e e34 2e e d e e e e e e 6d6f 656d 746e 2e00 6f6e e 554e 732d b Είναι προφανώς ακατανόητο. Ο λόγος δεν είναι απλώς ότι οι εντολές είναι κωδικοποιημένες ως αριθμοί αλλά και ότι πρέπει να τοποθετούνται σε μια συγκεκριμένη σειρά σε σχέση με τις παραμέτρους τους, να εκτελούνται κάποιες προπαρασκευαστικές λειτουργίες πριν εκτελεστούν αυτές καθαυτές οι εντολές κτλ. Για να απλουστεύσουν τα πράγματα οι κατασκευαστές μικροεπεξεργαστών αναθέτουν σε κάθε εντολή ένα μνημονικό (mnemonic) και έτσι μπορεί κανείς να καταλάβει ευκολότερα το παρακάτω 1 movl $5, -4(% ebp) 2 movl $7, -8(% ebp) 3 movl -8(%ebp), %eax 4 movl -4(%ebp), %edx 5 leal (%edx,%eax), %eax 1

2 6 movl %eax, -12(%ebp) σε σχέση με το προηγούμενο. Συνεχίζει όμως να μην είναι ευανάγνωστο και αυτό είναι ένα σημαντικό μειονέκτημα. Άλλο μειονέκτημα είναι ότι το πρόγραμμα αυτό θα ισχύει μόνο για μικροεπεξεργαστές ενός συγκεκριμένου τύπου. Όταν αναπόφευκτα αυτοί αποσυρθούν θα πρέπει και το πρόγραμμα να επικαιροποιηθεί. Προκειμένου να αντιμετωπίσουν τα παραπάνω προβλήματα, οι επιστήμονες πληροφορικής ανέπτυξαν γλώσσες προγραμματισμού δηλαδή γλώσσες με συγκεκριμένη σημασιολογία, ανεξάρτητες από συγκεκριμένο τύπο επεξεργαστή οι οποίες όμως θα μπορούσαν με κάποιο μηχανικό και σαφή τρόπο να μετατραπούν σε εντολές εκτελέσιμες από κάποιο μικροεπεξεργαστή. Έτσι, ένα πρόγραμμα μιας κάποιας γλώσσας προγραμματισμού θα σήμαινε κάποια συγκεκριμένα πράγματα ανεξάρτητα από τον επεξεργαστή στον οποίο τελικά θα εκτελείτο. Για να δουλέψει το παραπάνω σχήμα χρειάζονται κάποια προγράμματα τα οποία θα κάνουν αυτοματοποιημένα κάποιες απαραίτητες μετατροπές. Για παράδειγμα, το παραπάνω πρόγραμμα πρόσθεσης του 5 και του 7, στην Pascal θα γραφόταν ως εξής: 1 a := 5; 2 b := 7; 3 c := a + b; Στην ορολογία των γλωσσών προγραμματισμού, εντολές σαν τις παραπάνω, γραμμένες σε κάποια γλώσσα προγραμματισμού ονομάζονται πηγαίος κώδικας (source code). Οι παραπάνω εντολές είναι προφανώς πιο ευανάγνωστες από τον κώδικα μηχανής ή την assembly. Δεν μπορούν όμως να εκτελεστούν από κάποιον επεξεργαστή. Οπότε πρέπει να υπάρξει ένα πρόγραμμα το οποίο να μετατρέπει τις παραπάνω εντολές σε κώδικα μηχανής. Το πρόγραμμα αυτό ονομάζεται μεταγλωττιστής (compiler). Ένας μεταγλωττιστής προορίζεται για μία συγκεκριμένη γλώσσα προγραμματισμού. Επίσης, αφού ο ίδιος ο μεταγλωττιστής είναι πρόγραμμα αποτελείται από εντολές που εκτελούνται από έναν συγκεκριμένο τύπο επεξεργαστή και όχι από άλλους. Για κάθε συνδυασμό γλώσσας προγραμματισμού και τύπου επεξεργαστή, χρειαζόμαστε διαφορετικό μεταγλωττιστή¹. Ένας μεταγλωττιστής γενικά διαβάζει ένα κομμάτι πηγαίου κώδικα και το μετατρέπει σε αριθμητικές εντολές για ένα συγκεκριμένο τύπο επεξεργαστή. Οι εντολές αυτές ονομάζονται αντικειμενικός κώδικας (objective code). Επιπρόσθετα, εκτός από τη μεταγλώττιση κάποιων εντολών μιας γλώσσας προγραμματισμού, κατά κανόνα χρειάζεται και η συνένωση του αντικειμενικού κώδικα με διάφορα άλλα κομμάτια αντικειμενικού κώδικα, π.χ. βιβλιοθήκες κώδικα. Αυτή τη δουλειά την κάνει ο λεγόμενος linker. Ο linker διαβάζει διάφορα κομμάτια αντικειμενικού κώδικα και τα συνενώνει σε ένα εκτελέσιμο πρόγραμμα (executable program) ή απλώς πρόγραμμα. Τελικά, η διαδικασία έχει ως εξής: Ένας προγραμματιστής γράφει ένα πρόγραμμα σε πηγαίο κώδικα για κάποια γλώσσα προγραμματισμού. Δεν έχει σημασία ο τύπος επεξεργαστή στον οποίο εργάζεται. Με το μεταγλωττιστή και το linker δημιουργεί ένα πρόγραμμα το οποίο μπορεί να δώσει σε οποιονδήποτε χρησιμοποιεί το ίδιο λειτουργικό σύστημα σε ίδιο ή συμβατό τύπο μικροεπεξεργαστή. Ο πηγαίος κώδικας γίνεται κατανοητός με τον ίδιο τρόπο από οποιονδήποτε προγραμματιστή ¹Είναι όμως εφικτό ένας μεταγλωττιστής που προορίζεται να τρέξει σε ένα συγκεκριμένο τύπο μικροεπεξεργαστή να παράξει κώδικα μηχανής για κάποιον άλλο τύπο μικροεπεξεργαστή 2

3 τον διαβάζει. Αν και από μόνος του δεν είναι εκτελέσιμος, μπορεί να μετατραπεί σε ένα εκτελέσιμο πρόγραμμα από οποιονδήποτε διαθέτει κατάλληλο μεταγλωττιστή. 2 Εισαγωγή στον προγραμματισμό σε Pascal ² Για κάθε γλώσσα προγραμματισμού το πιο διάσημο πρόγραμμα είναι εκείνο που τυπώνει στην οθόνη το μήνυμα Hello, world!. Στην Pascal ένα τέτοιο πρόγραμμα θα ήταν κάπως έτσι: 1 program hello; 2 begin 3 writeln('hello, world!'); 4 end. Αν κανείς μεταγλωττίσει τον πηγαίο κώδικα και τρέξει το εκτελέσιμο θα δει στην οθόνη του το μήνυμα Hello, world!. Το παραπάνω αν και μικρό μας δείχνει μερικά στοιχεία τα οποία θα βρίσκουμε σχεδόν σε κάθε πρόγραμμα Pascal: Η δεσμευμένη λέξη program στην πρώτη γραμμή του προγράμματος. Αν και δεν είναι κανόνας, τα περισσότερα προγράμματα με τα οποία θα ασχοληθούμε ξεκινούν με αυτήν τη δεσμευμένη λέξη, μετά το όνομα του προγράμματος (το οποίο δεν είναι κατ' ανάγκη ίδιο με το όνομα του αρχείου στο οποίο θα σώσουμε το πρόγραμμα) και στο τέλος το ελληνικό ερωτηματικό. Στις γραμμές 2 και 4 υπάρχουν οι δεσμευμένες λέξεις begin και end. Στην Pascal κάθε εκτελέσιμο πρόγραμμα πρέπει να έχει ένα μπλοκ (block) εντολών το οποίο να ξεκινάει με ένα begin και να τελειώνει με ένα end. Η εκτέλεση του προγράμματος ξεκινάει από την πρώτη εντολή αυτού του μπλοκ και συνεχίζεται με τις επόμενες μέχρις να φτάσει στην τελευταία εντολή πριν το αντίστοιχο end όπου ολοκληρώνεται η εκτέλεση του προγράμματος. Ενώ οι εντολές της Pascal συνήθως ακολουθούνται από το ελληνικό ερωτηματικό, μετά το end που ορίζει το τέλος του προγράμματος ακολουθεί η τελεία, όπως στη γραμμή 4 παραπάνω. Ένας καλός πρακτικός κανόνας είναι ότι μετά από κάθε εντολή της Pascal ακολουθεί το ελληνικό ερωτηματικό όπως στις γραμμές 1 και 3 παραπάνω. Αυτό δεν είναι απόλυτα αληθές γιατί στην πραγματικότητα το ελληνικό ερωτηματικό είναι ο χαρακτήρας διαχωρισμού και όχι τερματισμού εντολών. Στην πραγματικότητα δηλαδή το ελληνικό ερωτηματικό πρέπει να μπαίνει ανάμεσα από οποιεσδήποτε δύο εντολές της Pascal και όχι μετά από κάθε μία. Μερικές παρατηρήσεις σχετικά με αυτό το σημείο είναι χρήσιμο να γίνουν: Η λέξη begin στη γραμμή 2 δεν είναι εντολή. Απλώς σηματοδοτεί την αρχή μιας ομάδας εντολών που ξεκινάει από το begin και τελειώνει με το αντίστοιχο end. Η Pascal θεωρεί όλο αυτόν τον κώδικά ως μία σύνθετη εντολή. Οπότε δεν τίθεται θέμα να μπει ερωτηματικό μετά το begin γιατί η σύνθετη εντολή που ξεκινάει με αυτό δεν τελειώνει εκεί αλλά τελειώνει στο end. Μια άλλη παρατήρηση είναι ότι το ερωτηματικό στο τέλος της γραμμής 3 θα μπορούσε να παραληφθεί. Αναφέραμε ότι το ερωτηματικό είναι ο χαρακτήρας διαχωρισμού εντολών, δηλαδή χωρίζει μία εντολή από την επόμενή της. Στη συγκεκριμένη περίπτωση δεν υπάρχει άλλη εντολή από την writeln ²Οι παρούσες σημειώσεις δεν έχουν σκοπό να αποτελέσουν ένα πλήρη και εξαντλητικό εγχειρίδιο της Pascal αλλά να λειτουργήσουν ως βοήθημα στο εργαστηριακό μάθημα 3

4 της γραμμής 3 μέσα στο μπλοκ που ορίζεται από τα begin-end οπότε το ερωτηματικό δεν είναι απαραίτητο. 3 Μεταβλητές Είναι απαραίτητο στον προγραμματισμό να μπορούμε να αναφερθούμε σε θέσεις μνήμης του υπολογιστή στις οποίες να μπορούμε να αποθηκεύσουμε αποτελέσματα ή να διαβάσουμε τα περιεχόμενά τους. Οι θέσεις μνήμης σε κάθε υπολογιστή είναι διατεταγμένες (οπότε και αριθμημένες). Είναι πρακτικά δύσκολο για έναν προγραμματιστή να αναφέρεται σε θέσεις μνήμης βάσει του αύξοντα αριθμού τους. Οι άνθρωποι θυμούνται ονόματα ευκολότερα από ότι αριθμούς. Επίσης είναι πιο εύκολο να γράψει κανείς λανθασμένα έναν αριθμό από ότι ένα όνομα. Για αυτούς τους λόγους κάθε γλώσσα προγραμματισμού δίνει τη δυνατότητα ορισμού μεταβλητών (variables). Ο προγραμματιστής χρησιμοποιεί μεταβλητές απλώς αναφέροντας το όνομά τους. Ο μεταγλωττιστής αναλαμβάνει να αντιστοιχίσει τις μεταβλητές σε θέσεις μνήμης. Έτσι όποτε ο προγραμματιστής γράφει το όνομα μιας μεταβλητής ο μεταγλωττιστής δημιουργεί κώδικα μηχανής που αναφέρεται στη θέση μνήμης που αντιστοίχισε στη μεταβλητή χωρίς ο προγραμματιστής να ασχολείται με τις τεχνικές λεπτομέρειες. Στην Pascal πρέπει πριν χρησιμοποιήσουμε μια μεταβλητή να τη δηλώσουμε (declare). Αυτό γίνεται όπως στο παρακάτω πρόγραμμα στη γραμμή 3. Μία δήλωση μεταβλητής έχει τη μορφή onoma_metavlitis: typos_metavlitis;. Ως όνομα μπορούμε να χρησιμοποιήσουμε οποιοδήποτε νόμιμο όνομα (identifier) δηλαδή μια ακολουθία γραμμάτων ή/και αριθμών η οποία δεν ξεκινάει με αριθμό. Μετά ακολουθεί μία άνω-κάτω τελεία και τέλος ο τύπος της μεταβλητής που στην Pascal μπορεί να είναι integer, real, boolean ή char ³. Στο τέλος μπαίνει το ελληνικό ερωτηματικό. Όλες οι δηλώσεις πρέπει να είναι γραμμένες πριν από το begin με το οποίο ξεκινάει το πρόγραμμα. Πριν από τις δηλώσεις πρέπει να υπάρχει η δεσμευμένη λέξη var. Μπορεί κανείς να δηλώσει τις μεταβλητές που θα χρησιμοποιηθούν σε κάποιο πρόγραμμα είτε μία-μία είτε περισσότερες χωρισμένες με κόμματα αρκεί να είναι ίδιου τύπου: i, j, k: integer. Στο παράδειγμά μας στη γραμμή 7 βλέπουμε επίσης πώς μπορούμε να τυπώσουμε την τιμή μιας μεταβλητής χρησιμοποιώντας την `εντολή' writeln⁴. Η writeln ακολουθείται από ένα ζευγάρι παρενθέσεων μέσα στο οποίο βάζουμε ότι θέλουμε να τυπωθεί στην οθόνη. Μπορούμε να βάλουμε ονόματα μεταβλητών είτε μηνύματα μέσα σε μονά εισαγωγικά. Επίσης μπορούμε να βάλουμε περισσότερα από ένα ορίσματα στις παρενθέσεις αρκεί να τα χωρίζουμε με κόμματα. Στη γραμμή 6 του παραδείγματός μας βλέπουμε πώς μπορούμε να δώσουμε σε μία μεταβλητή την τιμή που θα δώσει ο χρήστης του προγράμματος στο πληκτρολόγιο. Η εντολή readln συντάσσεται όπως και η writeln δηλαδή ακολουθείται από ένα ζευγάρι παρενθέσεων μέσα στο οποίο αναφέρονται τα ορίσματά της δηλαδή οι μεταβλητές που θα πάρουν τιμή από το πληκτρολόγιο. Και σε αυτήν την περίπτωση μπορούμε να χρησιμοποιήσουμε περισσότερα από ένα ορίσματα χωρισμένα με κόμματα αλλά προς το παρόν στα παραδείγματά μας θα χρησιμοποιούμε ένα και μόνο όνομα μεταβλητής. Τέλος, στη γραμμή 8 φαίνεται πώς μπορούμε να δώσουμε μία τιμή σε κάποια μεταβλητή. Ο τελεστής απόδοσης τιμής := συντάσσεται ως εξής: Στα αριστερά του μπαίνει το όνομα της μεταβλητής στην οποία θα δοθεί τιμή. Στα δεξιά του μπαίνει οποιαδήποτε παράσταση δίνει απότέλεσμα ίδιου τύπου ³Θα δούμε στη συνέχεια ότι υπάρχουν και άλλες δυνατότητες πέρα από αυτούς τους βασικούς τύπους ⁴Στην πραγματικότητα η writeln δεν είναι εντολή αλλά διαδικασία. Θα δούμε λεπτομέρειες στη συνέχεια. 4

5 με τη μεταβλητή. Στο παράδειγμά μας όπου η μεταβλητή i είναι ακέραια, πρέπει και η έκφραση δεξιά από το := να είναι ακέραια. Η λειτουργία της είναι η εξής: Πρώτα υπολογίζεται η τιμή της παράστασης δεξιά από το :=. Η παράσταση μπορεί να περιέχει και την ίδια τη μεταβλητή. Όταν τελειώσουν οι υπολογισμοί, το αποτέλεσμα που προκύπτει αποθηκεύεται στη μεταβλητή αριστερά από το :=. 1 program var1; 2 var 3 i: integer; 4 begin 5 write(' Dose tin timi tis i: '); 6 readln(i); 7 writeln('h timi poy edoses einai ', i); 8 i := i + 5; 9 writeln('an tou pros8eseis to 5 givetai ', i); 10 end. 4 Εντολές της Pascal 4.1 Εντολή if Μία άλλη συνηθισμένη δομή στον προγραμματισμό είναι η εκτέλεση εντολών υπο συνθήκη. Δηλαδή κάποιες εντολές εκτελούνται αν ισχύει κάποια συγκεκριμένη προϋπόθεση. Στην Pascal η απλή μορφή αυτής της εντολής είναι η παρακάτω 1 if synthiki then 2 entoli; 3... που Ο τρόπος λειτουργίας είναι ο εξής: Αρχικά υπολογίζεται η τιμή της συνθήκης της γραμμής 1. Αν είναι αληθής τότε εκτελείται η εντολή⁵ της γραμμής 2 και η εκτέλεση του προγράμματος συνεχίζεται στη γραμμή 3. Αν η συνθήκη δεν είναι αληθής, τότε η εντολή της γραμμής 2 παρακάμπτεται και η εκτέλεση του προγράμματος συνεχίζεται με τη γραμμή 3. Ως λογική συνθήκη μπορεί να χρησιμοποιηθεί οποιαδήποτε έκφραση μπορεί να αποτιμηθεί ως αληθής ή ψευδής, π.χ. 7 > 5, i <= 10, i > j ⁶. Στη δεύτερή της μορφή η εντολή if δίνει τη δυνατότητα εκτέλεσης μιας εναλλακτικής εντολής στην περίπτωση που η συνθήκη δεν ισχύει. 1 if synthiki then 2 entoli 3 else 4 entoli2; ⁵Η εντολή μπορεί να είναι μία απλή εντολή ή μια ομάδα εντολών μέσα σε ένα begin-end μπλοκ. Η ίδια παρατήρηση ισχύει για το σύνολο των σημειώσεων. ⁶Θα δούμε στη συνέχεια αναλυτικά όλα τα είδη τελεστών που μπορούν να χρησιμοποιηθούν σε τέτοιου είδους εκφράσεις. 5

6 5... Σε αυτήν τη μορφή αν η συνθήκη ισχύει τότε εκτελείται η εντολή της γραμμής 2 και η εντολή μετά το else παρακάμπτεται οπότε η εκτέλεση του προγράμματος προχωράει με τη γραμμή 5. Αν όμως η συνθήκη δεν ισχύει τότε παρακάμπτεται η εντολή της γραμμής 2 και εκτελείται εκείνη της γραμμής 4. Και σε αυτήν την περίπτωση η εκτέλεση συνεχίζεται από τη γραμμή 5. Είναι σημαντικό να παρατηρήσετε ότι στην δεύτερη περίπτωση δεν μπαίνει ερωτηματικό μετά την εντολή της γραμμής 2. Επίσης πρέπει να πούμε ότι συντακτικά η Pascal θεωρεί ολόκληρο το σχήμα των γραμμών 1 και 2 στο πρώτο παράδειγμα ή το σχήμα των γραμμών 1 έως 4 στο δεύτερο ως μία (σύνθετη) εντολή. Οπότε μία if μπορεί να χρησιμοποιηθεί όπου θα έμπαινε μια απλή εντολή μέσα σε μια άλλη if. Δείτε το παρακάτω παράδειγμα υπολογισμού φόρου στο οποίο υπολογίζεται η φορολογία κάποιου σύμφωνα με τους εξής κανόνες: Αν έχει εισόδημα κάτω από 5 χιλιάδες ευρώ δεν πληρώνει τίποτα, αν έχει από 5 έως 12 πληρώνει το 10 τοις εκατό του ποσού πάνω από 5000 και αν έχει περισσότερα πληρώνει επιπλέον 20 τοις εκατό για το ποσό πάνω από 12 χιλιάδες. 1 program foros1; 2 var 3 eisodima, foros: real; 4 5 begin 6 write(' Dose to etisio eisodima sou: '); 7 readln( eisodima); 8 9 if ( eisodima <= 5000) then 10 foros := 0 11 else 12 if ( eisodima <= 12000) then 13 foros := ( eisodima ) * else 15 foros := 7000 * ( eisodima ) * 0.2; 16 writeln('tha pliroseis foro ', foros :0:2); 17 end. Στο προηγούμενο χρησιμοποιήσαμε μεταβλητές τύπου real προκειμένου να μπορέσουμε να πραγματοποιήσουμε πράξεις κινητής υποδιαστολής (με δεκαδικά ψηφία). Παρατηρήστε ότι μετά το else της γραμμής 11, δεν ακολουθεί μια απλή εντολή όπως στη γραμμή 10 αλλά μία δεύτερη if. Επίσης παρατηρήστε ότι τόσο στη γραμμή 10 όσο και στη γραμμή 13 οι εντολές δεν ακολουθούνται από ερωτηματικό γιατί βρίσκονται ακριβώς πριν από ένα else. 4.2 Εντολή for Μια άλλη απαραίτητη δομή στον προγραμματισμό είναι και αυτή της επανάληψης. Παρουσιάζεται η ανάγκη να επαναληφθούν κάποιες εντολές. Ο αριθμός των επαναλήψεων μπορεί να είναι εκ των προτέρων γνωστός μπορεί ομως και όχι. Στην Pascal δίνονται τρεις διαφορετικές εναλλακτικές για αυτό το σκοπό. Η απλούστερη είναι η for που μας δίνει τη δυνατότητα να εκτελέσουμε ένα αριθμό επαναλήψεων, εκ των προτέρων γνωστό. Συντάσσεται όπως εδώ: 6

7 1 for variable := start to end do 2 entoli; Σε κάθε εντολή for χρειάζεται μια μεταβλητή ελέγχου (control variable) η οποία θα διατρέξει ένα σύνολο τιμών όπως η variable παραπάνω. Αυτή διατρέχει τις τιμές από start μέχρι end διαδοχικά δηλαδή πραγματοποιούνται end-start+1 επαναλήψεις. Σε κάθε επανάληψη εκτελείται η entoli. Στο παραπάνω παράδειγμα δηλαδή αρχικά η μεταβλητή ελέγχου variable παίρνει την τιμή start και εκτελείται η entoli. Μετά η μεταβλητή παίρνει την τιμή start+1 και εκτελείται η entoli, και ούτω καθεξής μέχρι η μεταβλητή να πάρει την τιμή end (συμπεριλαμβανομένης). Αν η τιμή start είναι μεγαλύτερη από την end δεν εκτελείται καμία επανάληψη. Σε αυτήν την περίπτωση μπορούμε αντί για τη λέξη to στη γραμμή 1 να χρησιμοποιήσουμε τη λέξη downto ώστε η μεταβλητή ελέγχου να προχωράει με βήμα -1 αντί για βήμα +1. Μια εντολή επανάληψης όπως η for παραπάνω στον προγραμματισμό ονομάζεται βρόχος (loop). Η εντολή που επαναλαμβάνεται ονομάζεται σώμα (body) του βρόχου. Το παρακάτω πρόγραμμα εκτελεί μια τέτοια επανάληψη για τις τιμές από 1 μέχρι και n όπου το n δίνεται από το χρήστη, προκειμένου να υπολογίσει το άθροισμα των n όρων μιας αριθμητικής προόδου με πρώτο όρο το 1 και βήμα 1. 1 program progression; 2 var 3 total, i, n: integer; 4 5 begin 6 write('dose to n: '); 7 readln(n); 8 9 total := 0; 10 for i := 1 to n do 11 total := total + i; writeln('to a8roisma tvn orwv eivai: ', total); 14 end. 4.3 Εντολή while-do Μια άλλη εντολή με την οποία πραγματοποιούνται επαναλήψεις είναι η while-do. Συντάσσεται όπως εδώ: 1 while synthiki do 2 entoli; 3... Η συνθήκη είναι όπως και στην εντολή if. Η λειτουργία της while είναι η εξής: Αρχικά εκτιμάται η συνθήκη. Αν είναι αληθής τότε εκτελείται η εντολή μία φορά και η ροή του προγράμματος επανέρχεται στη while, ξαναεκτιμάται η συνθήκη και ούτω καθεξής. Η διαδικασία σταματάει όταν κάποια στιγμή η συνθήκη πάψει να ισχύει οπότε η while τερματίζεται και η εκτέλεση του προγράμματος 7

8 συνεχίζει από την επόμενη εντολή (στη γραμμή 3 στο παραπάνω). Η εντολή που εκτελείται σε κάθε επανάληψη ονομάζεται και αυτή σώμα του βρόχου while όπως και στην περίπτωση της for παραπάνω. Παρατηρήστε ότι υπάρχει περίπτωση το σώμα της while να μην εκτελεστεί ούτε μία φορά αν στην πρώτη φορά που υπολογιστεί η συνθήκη είναι ψευδής. Η while χρησιμοποιείται σε περιπτώσεις που ο αριθμός των επαναλήψεων που θα πραγματοποιηθούν δεν είναι εκ των προτέρων γνωστός αλλά είναι γνωστή μία συνθήκη τερματισμού. Δείτε και το παρακάτω παράδειγμα υπολογισμού όρων της ακολουθίας Fibonacci. Προσέξτε ότι επειδή στην περίπτωση αυτή χρειάζεται να επαναλαμβάνονται περισσότερες από μία εντολές τις περικλείνουμε σε ένα μπλοκ (block) begin-end. Μέσα στο μπλοκ μπορούμε να έχουμε οσεσδήποτε εντολές. Συντακτικά όμως η Pascal θεωρεί όλο το μπλοκ ως μία εντολή. 1 program fib; 2 var 3 a, b, c: integer; 4 limit: integer; 5 6 begin 7 write(' Dose to ano fragma twv orwv poy 8a ypologistouv: '); 8 readln(limit); 9 10 a := 1; 11 b := 1; 12 write(a, ' '); while b < limit do 15 begin 16 write(b, ' '); 17 c := a + b; 18 a := b; 19 b := c; 20 end; 21 end. 4.4 Εντολή repeat-until Ακόμα μια εντολή επανάληψης στην Pascal είναι η repeat-until. Η σύνταξή της είναι όπως παρακάτω: 1 repeat 2 entoli1; 3 entoli2; until synthiki; Η λειτουργία είναι η ακόλουθη: Οι εντολές που βρίσκονται από το repeat μέχρι το until εκτελούνται διαδοχικά. Στη συνέχεια υπολογίζεται η τιμής της συνθήκης. Αν η συνθήκη δεν είναι αληθής 8

9 τότε η ροή εκτέλεσης του προγράμματος μεταφέρεται πάλι στην αρχή του βρόχου, οι εντολές επαναλαμβάνονται διαδοχικά και ούτω καθεξής. Με άλλα λόγια ο βρόχος επαναλαμβάνεται μέχρι να ισχύσει η συνθήκη οπότε και τερματίζεται. Μια παρατήρηση σχετικά με αυτήν τη μορφή επανάληψης σε σχέση με το βρόχο while-do είναι ότι σε αυτήν την περίπτωση οι εντολές του βρόχου θα εκτελεστούν τουλάχιστον μία φορά. Μία δεύτερη παρατήρηση είναι ότι δεν χρειάζεται οι εντολές του βρόχου να κλειστούν μέσα σε ένα begin-end. Δείτε το πρόγραμμα υπολογισμού όρων της ακολουθίας Fibonacci με χρήση της repeat-until. 1 program fib; 2 var 3 a: integer; 4 b, c: integer; 5 limit: integer; 6 7 begin 8 a := 1; 9 b := 1; 10 write(' Dose to orio'); 11 readln( limit); repeat 14 c := a + b; 15 a := b; 16 b := c; 17 write(c, ' '); 18 until a + b > limit; writeln; 21 end. 4.5 Εντολή case Έχουμε δει ότι μπορούμε να σχηματίσουμε `αλυσίδες' από if και else εντολές προκειμένου να καλύψουμε πολλές διαφορετικές εναλλακτικές ενός ενδεχόμενου. Υποθέστε ότι πρέπει να γράψουμε ένα πρόγραμμα που εμφανίζει στην οθόνη το επίδομα παιδιών που παίρνει ένας υπάλληλος. Υποθέστε ότι η νομοθεσία λέει ότι ένας υπάλληλος με ένα παιδί παίρνει 50 ευρώ, με δύο 75, με τρία 100 και από κει και πέρα 50 ευρώ επιπλέον για κάθε παιδί. Αν χρησιμοποιούσαμε if θα έπρεπε να γράψουμε 1 if paidia = 0 then writeln ('0 euro') 2 else if paidia = 1 then writeln('50 euro') 3 else if paidia = 2 then writeln('75 euro') 4 else if paidia = 3 then writeln('100 euro') 5 else writeln (100 + (paidia -3) * 50, ' euro); Το παραπάνω είναι επιρρεπές σε λάθη. Για τέτοιες περιπτώσεις μπορούμε να χρησιμοποιήσουμε την εντολή case. Η συνταξή της είναι η ακόλουθη: 9

10 1 case expression of 2 value1: commands1; 3 value2: commands2; valuen: commandsn; 6 else commands; 7 end; Εκτελείται ως εξής: Εξετάζεται η τιμή της έκφρασης expression (μπορεί να είναι απλώς μία μεταβλητή ή και μία συνθετότερη έκφραση). Η έκφραση πρέπει να είναι βαθμωτού τύπου, δηλαδή integer, boolean ή char. Αν η τιμή της έκφρασης είναι ίση με value1 τότε εκτελούνται οι εντολές της γραμμής 2, αν είναι ίση με value2 εντολές της γραμμής 3, κτλ. Αν δεν ισχύει τίποτα από αυτά, τότε εκτελούνται οι εντολες της γραμμής 6, μετά το else. Το κομάτι του else δεν είναι υποχρεωτικό να υπάρχει. Αν σε κάποια περίπτωση υπάρχουν περισσότερες από μία εντολές που θέλουμε να εκτελεστούν θα πρέπει να τις περικλείσουμε σε ένα begin-end μπλοκ. Τελικά, το παράδειγμα με τα επιδόματα θα μπορούσε να γραφεί με μία case όπως παρακάτω: 1 case paidia of 2 1: writeln('50 euro'); 3 2: writeln('75 euro'); 4 3: writeln('100 euro'); 5 else writeln (100 + ( paidia - 3) * 50, ' euro'); 6 end; 5 Βασικοί τύποι στην Pascal Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το μέχρι και το 32767, real: παριστάνει αριθμούς κινητής υποδιαστολής από το μέχρι το τόσο θετικούς όσο και αρνητικούς, boolean: παριστάνει τις δύο τιμές της άλγεβρας Boole δηλαδή true και false, και char: παριστάνει χαρακτήρες π.χ. 'a', 'b', 'F' κτλ. Επίσης υπάρχουν και οι παρακάτω αριθμητικοί τελεστές: + Πρόσθεση, - αφαίρεση, / διαίρεση, * πολλαπλασιασμός, div ακέραια διαίρεση, 10

11 mod ακέραιο υπόλοιπο. οι οποίοι όταν εφαρμόζονται κατάλληλα παράγουν αριθμητικές εκφράσεις. Οι αριθμητικές εκφράσεις μπορούν να συγκριθούν με τους συσχετιστικούς τελεστές: < μικρότερο, > μεγαλύτερο, <= μικρότερο ή ίσο, >= μεγαλύτερο ή ίσο, = ίσο, <> διάφορο. Το απότελεσμα που προκύπτει είναι μια λογική τιμή true ή false, δηλαδή οι συσχετιστικοί τελεστές παράγουν τις λογικές τιμές ναι ή όχι. Οι λογικές τιμές true και false ή εκφράσεις που μπορούν να αποτιμηθούν ως true ή false μπορούν να συνδυαστούν με λογικούς τελεστές για να παράξουν πιο σύνθετες λογικές εκφράσεις. Αυτοί είναι: and Λογική σύζευξη, or λογική διάξευξη, not λογική άρνηση, xor λογική αποκλειστική διάζευξη. Παρακάτω θα δούμε αναλυτικά τα χαρακτηριστικά κάθε τύπου καθώς και το πώς μπορούν να χρησιμοποιηθούν μαζί με τελεστές για να προκύψουν εκφράσεις. 5.1 Ο τύπος integer Ο τύπος integer παριστάνει ακέραιους αριθμούς από το μέχρι και το Η ανάθεση άλλου τύπου τιμών σε ακέραιες μεταβλητές δεν επιτρέπεται. Δεν μπορεί κανείς δηλαδή να δηλώσει μία μεταβλητή a: integer και να της δώσει την τιμή 1.2, true ή 'c'. Ο μεταγλωττιστής μπορεί να εντοπίσει τέτοιου είδους λάθη και έτσι μπορούν να διορθωθούν πριν την εκτέλεση του προγράμματος. Είναι ευθύνη του προγραμματιστή όμως να ελέγχει ότι οι τιμές που αποθηκεύονται σε μία integer μεταβλητή είναι εντός ορίων, δηλαδή ανάμεσα στα και π.χ. οι εντολές του listing 1 1 a := 256 * 64; writeln(a); 2 a := a * 2; writeln(a); τυπώνουν στην οθόνη το εξής: Listing 1: Υπολογισμός εκτός ορίων 11

12 Ο λόγος είναι ότι το 256 * 64 κάνει όντως αλλά το επί 2 κάνει 32768, τιμή που είναι εκτός ορίων. Με τις ακέραιες μεταβλητές δεν μπορούμε να χρησιμοποιήσουμε τον τελεστή διαίρεσης / ο οποίος στην Pascal δίνει πάντα αποτέλεσμα σε δεκαδική μορφή⁷. Μεταξύ ακεραίων επιτρέπεται η χρήση του τελεστή ακέραιας διαίρεσης div ο οποίος επιστρέφει το ακέραιο πηλίκο μιας διαίρεσης. Αντίστοιχα ο τελεστής υπολοίπου mod επιστρέφει το υπόλοιπο της ακέραιας διαίρεσης. Υπενθυμίζουμε ότι για δύο ακέραιους αριθμούς a και b το πηλίκο c και το υπόλοιπο d της ακέραιας διαίρεσης του a με το b είναι τέτοια ώστε να ισχύει a = c b + d με το d τέτοιο ώστε 0 d < b. 5.2 Ο τύπος real Οποτεδήποτε θέλουμε να πραγματοποιήσουμε υπολογισμούς με ποσότητες οι οποίες δεν είναι κατ' ανάγκη ακέραιες (π.χ. τιμές σε ευρώ, βάρη ανθρώπων σε κιλά κτλ.) ή είναι τέτοιες που οι υπολογισμοί με αυτές θα μπορούσαν να υπερβαίνουν τα όρια των integer πρέπει να χρησιμοποιήσουμε real. Με τις real μεταβλητές μπορούμε να χρησιμοποιήσουμε όλους τους αριθμητικούς τελεστές εκτός από τους mod και div. Η εσωτερική αναπαράσταση μίας μεταβλητής real είναι κινητής υποδιαστολής και έτσι τυπώνεται στην οθόνη ή και αλλού όταν ζητηθεί. Π.χ. το listing 2 τυπώνει E E a := 42; writeln(a); 2 a := 420; writeln(a); Listing 2: Εκτύπωση real Αν θέλουμε να αλλάξουμε αυτήν τη μορφή μπορούμε να γράψουμε ως όρισμα της writeln αντί για το όνομα της μεταβλητής, το όνομα της μεταβλητής ακολουθούμενο από έναν προσδιοριστή της μορφής :x ή :x:y. Στη δεύτερη περίπτωση, η σημασιολογία είναι ότι θέλουμε να εκτυπωθεί η μεταβλητή με y δεκαδικά ψηφία και τουλάχιστον x ψηφία στο σύνολο. Για παράδειγμα το listing 3 τυπώνει Listing 3: Εκτύπωση real 1 a := 42; writeln(a:2:2); 2 a := 420; writeln(a:2:2); 3 a := 0.42; writeln(a:2:2); 4 a := 0.042; writeln(a:2:2); ⁷ακόμα και σε εκφράσεις που έχουν ακέραιο αποτέλεσμα όπως π.χ. 4/2. 12

13 Σημειώστε ότι μπορούμε να δηλώσουμε αριθμητικές σταθερές κινητής υποδιαστολής και να τις αναθέσουμε σε real μεταβλητές είτε με το γνωστό τρόπο `ακέραιες μονάδες-υποδιαστολή-δεκαδικά ψηφία' π.χ , είτε σε μορφή `βάση-e-εκθέτης' π.χ. 12e47 που σημαίνει , 0.1e-12 που σημαίνει κτλ. 5.3 Αριθμητικοί και συσχετιστικοί τελεστές σε integer και real Για να συνοψίσουμε σχετικά με τους αριθμητικούς τελεστές: Οι τελεστές +, - και * εφαρμόζονται τόσο σε integer όσο και real. Το αποτέλεσμα που δίνουν είναι integer αν και τα δύο ορίσματα είναι integer αλλιώς είναι real. Οι τελεστές div και mod εφαρμόζονται μόνο σε integer και δίνουν αποτέλεσμα πάντα integer. Ο τελεστής / εφαρμόζεται και σε integer και σε real αλλά το αποτέλεσμά του είναι πάντα real. Οι τελεστές σύγκρισης μπορούν να εφαρμοστούν σε δύο integer ή real αλλά και μεταξύ ενός integer και ενός real. Το αποτέλεσμα που προκύπτει είναι μία λογική τιμή, true ή false. Χρειάζεται ιδιαίτερη προσοχή όταν συγκρίνουμε δύο μεταβλητές τύπου real. Γνωρίζουμε ότι η αναπαράσταση μη-ακέραιων αριθμών στην Pascal αλλά και στους υπολογιστές γενικότερα είναι εκείνη της κινητής υποδιαστολής. Το πλήθος των αριθμών που μπορούν να αναπαρασταθούν είναι πεπερασμένο. Οπότε προφανώς δεν μπορούμε να αναπαραστήσουμε σε έναν υπολογιστή ούτε καν τους ρητούς αριθμούς από το 0 μέχρι το 1 οι οποίοι είναι άπειροι. Οπότε πρακτικά οι αριθμοί στρογγυλεύονται σε κάποιον κοντινό τους με αρκετά μεγάλη ακρίβεια ώστε αυτό να μη δημιουργεί πρόβλημα στις περισσότερες εφαρμογές. Δείτε για παράδειγμα το παρακάτω πρόγραμμα: 1 program compare; 2 var 3 a, b, c: real; 4 begin 5 a := 100; 6 c := 100; 7 b := 1e-24; 8 a := a + b; 9 if a = c then 10 writeln('a equals c'); 11 end. Το πρόγραμμα δίνει στις μεταβλητές a και c την τιμή 100. Μετά προσθέτει στην a την τιμή και στη συνέχεια ελέγχει αν οι δύο μεταβλητές είναι ίσες. Αν τρέξετε το πρόγραμμα θα δείτε ότι θεωρεί τις δύο μεταβλητές ίσες. Στην πράξη δεν πρέπει να χρησιμοποιούμε τον τελεστή = για να συγκρίνουμε μεταβλητές τύπου real παρόλο που αυτό είναι νόμιμο (και καλά κάνει και είναι) στην Pascal. Θα δούμε παρακάτω έναν πρακτικό τρόπο για να ελέγχουμε αν δύο αριθμοί είναι `ίσοι'. 5.4 Ο τύπος boolean Οι μεταβλητές τύπου boolean μπορούν να αναπαριστούν τις δύο τιμές της άλγεβρας Boole: true και false. Σε μεταβλητές αυτού του τύπου δεν μπορεί να χρησιμοποιηθεί κανένας από τους αριθμητικούς τελεστές. Μπορούν όμως να χρησιμοποιηθούν οι συσχετιστικοί τελεστές όπου θεωρείται 13

14 ότι false < true. Οι αριθμητικοί τελεστές εφαρμόζονται σε αριθμητικές ποσότητες και δίνουν ως αποτέλεσμα νέες αριθμητικές ποσότητες. Με τον ίδιο τρόπο εφαρμόζονται και στις λογικές τιμές οι λογικοί τελεστές and (και, σύζευξη), or (ή, διάζευξη) και not (όχι, άρνηση). Τα αποτελέσματα είναι και αυτά λογικές τιμές. Οι πράξεις and και or παίρνουν δύο ορίσματα, ενώ η not μόνο ένα. Ορίζονται ως εξής: Το αποτέλεσμα της a and b είναι true αν και μόνο αν είναι true και το a και το b (αν δηλαδή έστω ένα από τα a ή b είναι false τότε και το αποτέλεσμα είναι false). Το αποτέλεσμα της a or b είναι false αν και μόνο αν και τα δύο ορίσματα είναι false (αν έστω και ένα είναι true τότε και το αποτέλεσμα είναι true). Το αποτέλεσμα της not a είναι το αντίθετο της τιμής a. Τα παραπάνω συνοψίζονται στον παρακάτω πίνακα αληθείας: a b a and b a or b not a true true true true false true false false true false false true false true true false false false false true Θυμίζουμε ότι οι λογικές τιμές μπορούν να χρησιμοποιούνται όποτε το συντακτικό της Pascal αναμένει μία συνθήκη, δηλαδή στις εντολές if, repeat-until και while-do. 5.5 Ο τύπος char Οι μεταβλητές τύπου char μπορούν να αποθηκεύουν έναν και μόνο εκτυπώσιμο χαρακτήρα. Με τον ίδιο τρόπο που μπορούμε να δηλώσουμε μία μεταβλητή π.χ. τύπου integer και να της αναθέσουμε τιμή κάπως έτσι 1 var i: integer; 2 begin 3 i := 5; μπορούμε να δηλώσουμε μία μεταβλητή τύπου char και να της αναθέσουμε ως τιμή έναν χαρακτήρα, π.χ. κάπως έτσι: 1 var a: char; 2 begin 3 a := 'j'; Στο συγκεκριμένο παράδειγμα το όνομα της μεταβλητής είναι a και της ανατίθεται η τιμή 'j'. Αν τυπώσουμε τη μεταβλητή a του παραπάνω παραδείγματος με την εντολή writeln(a); στην οθόνη θα εμφανιστεί ο χαρακτήρας j (χωρίς εισαγωγικά). Τα μονά εισαγωγικά που χρησιμοποιήθηκαν στην εντολή ανάθεσης a := 'j' δεν είναι μέρος της τιμής της μεταβλητής αλλά χρησιμοποιούνται για να μπορέσει η Pascal να καταλάβει ότι πρόκειται για έναν χαρακτήρα και όχι για όνομα μεταβλητής. Αν δηλαδή λέγαμε απλώς a := j; τότε η Pascal θα θεωρούσε ότι θέλουμε να αναθέσουμε στη μεταβλητή a την τιμή της μεταβλητής j. Δείτε επίσης και το παράδειγμα που ακολουθεί: 1 program char1; 2 var 3 a,b: char; 4 begin 14

15 5 a := 'a'; 6 writeln('h metavliti a exei timn ', a); 7 b:= 'c'; 8 writeln('h metavliti v exei timn ', b); 9 end. Στις γραμμές 5 και 6 ανατίθεται η τιμή 'a' στη μεταβλητή a και στη συνέχεια τυπώνεται ένα μήνυμα 'H metavliti a exei timn ' και τέλος η τιμή της μεταβλητής a. Αυτό που πρέπει να γίνει κατανοητό είναι το όνομα της μεταβλητής, η τιμή που αυτή παίρνει και το μήνυμα που τυπώνεται στην οθόνη είναι τρία διαφορετικά πράγματα. Στις γραμμές 6 και 7 έχουμε τη μεταβλητή b η οποία όμως παίρνει την τιμή 'c'. Στη γραμμή 7 κατά λάθος το μήνυμα που εκτυπώνεται είναι 'H metavliti v exei timn ' αντί για 'H metavliti b exei timn ' αλλά αυτό δεν επηρεάζει την εκτέλεση του προγράμματος γιατί πρόκειται απλώς για ένα μήνυμα το οποίο η Pascal δεν ερμηνεύει ούτε ελέγχει. Τελικά η έξοδος του παραπάνω προγράμματος είναι H metavliti a exei timn a H metavliti v exei timn c Όπως είπαμε οι μεταβλητές τύπου char αποθηκεύουν χαρακτήρες, έτσι αν κάποια μεταβλητή a είναι τύπου char μπορούμε να δώσουμε την παρακάτω εντολή a:='e' αλλά όχι a:=101. Αυτό μπορεί να είναι άβολο καθώς γνωρίζουμε ότι οι χαρακτήρες αποθηκεύονται ως αριθμοί στη μνήμη του υπολογιστή σύμφωνα με τον κώδικα ASCII. Δηλαδή, η εντολή a:='e' έχει ως αποτέλεσμα την αποθήκευση της τιμής 101 στη θέση μνήμης που αντιστοιχεί στη μεταβλητή a παρόλο που δεν μπορούμε να αναθέσουμε απευθείας την τιμή 101 στην a με την εντολή a:=101. Η Pascal μας δίνει τη δυνατότητα να 'μετατρέψουμε' έναν χαρακτήρα στον αντίστοιχο αριθμό και το αντίστροφο. Συγκεκριμένα η συνάρτηση ord(x) παίρνει ως παράμετρο έναν χαρακτήρα και επιστρέφει τον κωδικό που αντιστοιχεί σε αυτόν. Αντίστροφα, η συνάρτηση chr(x) παίρνει ως παράμετρο έναν αριθμό και επιστρέφει τον χαρακτήρα που αντιστοιχεί σε αυτόν. Έτσι θα μπορούσαμε να γράψουμε ένα βρόχο που τυπώνει όλα τα κεφαλαία γράμματα του αγγλικού αλφαβήτου κάπως έτσι: 1 program example; 2 var 3 a: char; 4 begin 5 a := 'A'; 6 repeat 7 write(a); 8 a := chr(ord(a) + 1); 9 until a > 'Z'; Η εντολή της γραμμής 8 αναθέτει στη μεταβλητή a τον χαρακτήρα που βρίσκεται αμέσως μετά στον πίνακα ASCII από εκείνον που είχε στην τελευταία επανάληψη. Για παράδειγμα αν η a έχει το χαρακτήρα E (με κωδικό 69), αρχικά εκτελείται η ord(a) που επιστρέφει την τιμή 69. Στη συνέχεια προστίθεται σε αυτήν το 1 και προκύπτει 70. Οπότε εκτελείται η chr(70) που επιστρέφει το χαρακτήρα F. Μπορεί κανείς να παρατηρήσει ότι οι συναρτήσεις chr και ord είναι αντίστροφες δηλαδή για οποιοδήποτε χαρακτήρα σε μια μεταβλητή a η εντολή chr(ord(a)) επιστρέφει τον ίδιο 15

16 χαρακτήρα και ανάλογα για οποιοδήποτε αριθμό n μέσα στα όρια η εντολή ord(chr(n)) επιστρέφει τον ίδιο τον αριθμό. Ένα άλλο ζευγάρι αντίστροφων συναρτήσεων είναι οι succ και pred. Και οι δύο παίρνουν ως παράμετρο ένα χαρακτήρα και επιστρέφουν έναν άλλον. Η succ επιστρέφει τον επόμενο χαρακτήρα ενώ η pred τον προηγούμενο. 5.6 Ενσωματωμένες (built-in) συναρτήσεις της Pascal Η Pascal παρέχει κάποιες έτοιμες συναρτήσεις στους προγραμματιστές ώστε να κάνει τη ζωή τους ευκολότερη. Οι συναρτήσεις αυτές δέχονται μία παράμετρο και επιστρέφουν μία τιμή. Στον πίνακα 1 αναγράφονται μερικές από αυτές (οι λεγόμενες αριθμητικές) και η λειτουργία που εκτελούν. Όλες δέχονται ως παραμέτρους τόσο real όσο και integer. Οι abs και sqr επιστρέφουν είτε real είτε integer ανάλογα με τον τύπο που τους δόθηκε ως παράμετρος. Όλες οι άλλες επιστρέφουν real. abs(x) sqr(x) sin(x) cos(x) exp(x) ln(x) sqrt(x) arctan(x) Πίνακας 1: Αριθμητικές συναρτήσεις Απόλυτη τιμή της ποσότητας x Το x στο τετράγωνο Ημίτονο του x Συνημίτονο του x Ο αριθμός e υψωμένος στη x-οστή δύναμη Φυσικός λογάριθμος του x Τετραγωνική ρίζα του x Τόξο εφαπτομένης του x Επίσης υπάρχουν και οι συναρτήσεις μεταφοράς trunc(x) και round(x). Αυτές δέχονται ορίσματα τύπου real και επιστρέφουν integer. Η πρώτη είναι η λεγόμενη συνάρτηση ακέραιου μέρους, δηλαδή επιστρέφει τον αριθμό που της δίνεται ως όρισμα χωρίς τα δεκαδικά ψηφία. Π.χ. η trunc(3.5) επιστρέφει 3, η trunc(2.9) επιστρέφει 2, η trunc(-3.7) επιστρέφει -3. Η δεύτερη στρογγυλεύει το όρισμά της στον πλησιέστερο ακέραιο. Π.χ. η round(3.7) επιστρέφει 4, η round(3.2) επιστρέφει 3 και η round(-3.7) επιστρέφει -4. Οι τιμές που είναι στη μέση στρογγυλεύονται προς το μεγαλύτερο ακέραιο κατ' απόλυτη τιμή, δηλαδή η round(3.5) επιστρέφει 4 και η round(-3.5) επιστρέφει Σύνθετοι τύποι Οι τύποι που είδαμε μέχρι τώρα ονομάζονται απλοί. Αυτοί παρέχονται από την Pascal και δε γίνεται να αναλυθούν σε απλούστερους. Εκτός από αυτούς υπάρχουν και οι λεγόμενοι σύνθετοι οι οποίοι προκύπτουν με κάποιο συνδυασμό άλλων τύπων. Σύνθετοι τύποι είναι οι πίνακες, οι συμβολοσειρές (strings), τα σύνολα, οι εγγραφές (records)⁸. Θα δούμε λίγο πιο αναλυτικά τους πίνακες και τα strings. ⁸Υπάρχουν και οι δείκτες με τους οποίους δε θα ασχοληθούμε 16

17 6.1 Πίνακες (arrays) Ένας πίνακας είναι μια γραμμική διάταξη ομοειδών μεταβλητών. Μέχρι στιγμής είδαμε ότι για κάθε μεταβλητή που θέλουμε να χρησιμοποιήσουμε πρέπει να δηλώσουμε το όνομά της και τον τύπο της. Αυτό δεν είναι πρακτικά δυνατό όταν πρέπει να χειριστούμε μεγάλο αριθμό τέτοιων μεταβλητών. Οι πίνακες μας δίνουν τη δυνατότητα να δεσμεύσουμε χώρο μνήμης για όσες μεταβλητές θέλουμε με μία μόνο δήλωση. Σε αυτή τη δήλωση δίνουμε και το όνομα του πίνακα το οποίο χρησιμοποιούμε για να αναφερόμαστε σε αυτόν. Για να προσπελάσουμε ένα συγκεκριμένο από τα πολλά στοιχεία του πίνακα δίνουμε τον αύξοντα αριθμό του μέσα σε αγκύλες. Μία δήλωση πίνακα θα μπορούσε να είναι αυτή: var p: array[1..10] of integer; η οποία δηλώνει έναν πίνακα p με δέκα ακέραιους ή αυτή: var r: array[30..40] of real η οποία δηλώνει έναν πίνακα r ο οποίος περιέχει πραγματικούς αριθμούς με αύξοντες από 30 έως και 40. Στη γενική της μορφή μία δήλωση πίνακα έχει τη μορφή 1 name: array[a.. b] of typename; όπου name είναι το όνομα του πίνακα, a είναι ο αύξοντας αριθμός του πρώτου στοιχείου του πίνακα, b είναι ο αύξοντας του τελευταίου και περιέχει στοιχεία τύπου typename. Το παρακάτω παράδειγμα δηλώνει έναν πίνακα 10 ακεραίων, ζητάει από το χρήστη να δώσει τιμή στον κάθε έναν από αυτούς με ένα βρόχο και στη συνέχεια βρίσκει το μικρότερο από αυτούς. 1 program example; 2 var 3 p: array [1..10] of integer; 4 i: integer; 5 mik: integer; 6 7 begin 8 for i := 1 to 10 do 9 begin 10 write('dose ton #', i, ' ari8mo: '); 11 readln(p[i]); 12 end; mik := p[1]; 15 for i := 2 to 10 do 16 begin 17 if p[i] < mik then 18 mik := p[i] 19 end; 20 writeln('o mikroteros eivai o ', mik); 21 readln; 22 end. Στο βρόχο των γραμμών 8 έως 11 η μεταβλητή i παίρνει διαδοχικά τις τιμές από 1 έως και 10 και σε κάθε επανάληψη δίνεται από το χρήστη με τη readln της γραμμής 11 μία τιμή στη μεταβλητή p[1], p[2], κοκ. Δηλαδή χρησιμοποιούμε τα p[i] όπως θα χρησιμοποιούσαμε οποιοδήποτε όνομα ακέραιας μεταβλητής. 17

18 Στην πράξη, δε χρησιμοποιούμε δηλώσεις πινάκων της μορφής p: array[a..b] of typename αλλά ορίζουμε ένα νέο όνομα τύπου όπως παρακάτω: 1 type 2 myarray = array [1..10] of integer; 3 mybigarray = array [ ] of real; Τα ονόματα που βρίσκονται αριστερά από το ίσον είναι νέα ονόματα τύπων. Η περιγραφή τους είναι αυτό που βρίσκεται δεξιά από το ίσον. Δηλαδή στο παραπάνω παράδειγμα λέμε ότι το όνομα myarray είναι ένας πίνακας ακεραιών με δείκτες από 1 έως και 10 και το mybigarray είναι ένας πίνακας αριθμών κινητής υποδιαστολής με δείκτες από 1 έως και Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε τα νέα ονόματα τύπων σε δηλώσεις μεταβλητών όπως χρησιμοποιούμε και τα ονόματα των ενσωματωμένων τύπων της Pascal (integer, boolean κτλ.). Γράφουμε δηλαδή 1 var 2 p: myarray; 3 q: myarray; 4 r: mybigarray; 5 i, j, k: integer; για να πούμε ότι ο p και ο q είναι πίνακες 10 ακεραιών, ενώ ο r είναι πίνακας 1000 κινητής υποδιαστολής. 6.2 Strings Γνωρίζουμε ότι ένας χαρακτήρας μπορεί να αποθηκευτεί σε ένα byte με κατάλληλη κωδικοποίηση και αυτό ακριβώς κάνει ο τύπος char της Pascal. Συνήθως βέβαια η επεξεργασια κειμένου σε έναν υπολογιστή αφορά πολυπληθή σύνολα χαρακτήρων διατεταγμένων γραμμικά. Προκειμένου να παραστήσουμε κέιμενα θα μπορούσαμε να χρησιμοποιήσουμε πίνακες χαρακτήρων. Επειδή αυτή είναι μια πολύ συνηθισμένη εφαρμογή, στις γλώσσες προγραμματισμού συναντάμε σύνθετους τύπους που βοηθούν στην αποθήκευση σειρών χαρακτήρων, ή αλλιώς συμβολοσειρών. Στην Pascal ο ανάλογος τύπος είναι ο string. Οι μεταβλητές τύπου string μπορούν να πάρουν ως τιμές χαρακτήρες κλεισμένους μέσα σε μονά εισαγωγικά, π.χ. s := 'This is a string'. Μπορούμε να δηλώσουμε μεταβλητές τύπου string όπως τους άλλους τύπους: var s:string;. Στην standard Pascal ο τύπος string είναι συνήθως ένας πίνακας χαρακτήρων και συγκεκριμένα κάτι σαν αυτό: array[0..255] of char αν και γενικά εξαρτάται από την υλοποίηση. Από τους 256 χαρακτήρες που υπάρχουν στην παραπάνω δομή ο πρώτος που βρίσκεται στη θέση 0, παριστάνει το μήκος της συμβολοσειράς και οι υπόλοιποι από τη θέση 1 και έπειτα, παριστάνουν τον αντίστοιχο χαρακτήρα της συμβολοσειράς. Για παράδειγμα το πρόγραμμα 4 θα τύπωνε στην οθόνη το παρακάτω: Mikos: 6 Xaraktiras 1: H Xaraktiras 2: e Το 6 είναι το μήκος της συμβολοσειράς 'Hello.'. Παρατηρήστε ότι είναι αποθηκευμένο στη θέση s[0], την πρώτη θέση του array. Θυμηθείτε από την ενότητα για τους χαρακτήρες ότι δε θα αρκούσε στη γραμμή 5 να τυπώσουμε το s[0] γιατί αυτό είναι τύπου char οπότε η Pascal δε 18

19 1 program strex1; 2 var s: string; 3 begin 4 s := 'Hello.'; 5 writeln('mikos: ', ord(s[0])); 6 writeln('xaraktiras 1: ', s[1]); 7 writeln('xaraktiras 2: ', s[2]); 8 end. Listing 4: Παράδειγμα string θα τύπωνε τον αριθμό 6 αλλά το χαρακτήρα με ASCII κωδικό 6. Για να πάρουμε το s[0] ως αριθμό θα πρέπει να χρησιμοποιήσουμε τη συνάρτηση ord. Επίσης παρατηρήστε ότι ο πρώτος χαρακτήρας του string είναι ο s[1], ο δεύτερος ο s[2] κοκ. Μπορούμε να επεξεργαστούμε τις συμβολοσειρές πραγματοποιώντας τους χειρισμούς που επιτρέπονται στους επιμέρους χαρακτήρες τους. Για παράδειγμα μπορούμε να μετατρέψουμε τους κεφαλαίους χαρακτήρες μιας συμβολοσειράς σε πεζούς με μία εντολή σαν αυτήν: 1 for i := 1 to length(s) do 2 if (s[i] >= 'A') and (s[i] <= 'Z') then 3 s[i] := chr(ord(s[i]) - ord('a') + ord('a')); Επειδή πολλές τέτοιου τύπου πράξεις είναι συνηθισμένες στον προγραμματισμό, συνήθως οι υλοποιήσεις της Pascal δίνουν βιβλιοθήκες με τέτοιες συναρτήσεις. Ενδεικτικά αναφέρουμε κάποιες που ειναι διαθέσιμες στη FreePascal. length(s) Επιστρέφει το μήκος της συμβολοσειράς s. pos(sub, str) Επιστρέφει τη θέση στην οποία η συμβολοσειρά sub εμφανίζεται μέσα στην str ή 0 αν δεν περιέχεται. Για παράδειγμα η pos('is', 'This looks good'); επιστρέφει 3. copy(s, i, c) Επιστρέφει το κομμάτι της συμβολοσειράς s που ξεκινάει από την i-οστή θέση της και έχει μήκος c χαρακτήρες. Π.χ. η copy('the magic wand', 5, 3) επιστρέφει 'mag'. Κατά κανόνα θα πρέπει να ανατρέξετε στην τεκμηρίωση των βιλιοθηκών της συγκεκριμένης υλοποίησης του μεταγλωττιστή σας για να βρείτε τις συναρτήσεις και διαδικασίες που διατίθενται. Για παράδειγμα η FreePascal δίνει αυτές που φαίνονται στην ιστοσελίδα docs-html/ rtl/ sysutils/ stringfunctions.html (εδώ). 6.3 Records Είδαμε ότι με τους ενσωματωμένους βασικούς τύπους της Pascal μπορούμε να αναπαραστήσουμε διάφορους τύπους δεδομένων. Δεν έχουμε δει όμως μέχρι στιγμής αν υπάρχει η δυνατότητα να συσχετίσουμε κάποιους μεταξύ τους ώστε να αποτελούν μία οντότητα. Ας υποθέσουμε, για παράδειγμα, ότι θέλουμε να χειριστούμε καρτέλες σπουδαστών μίας σχολής. Θα χρειαζόμασταν ένα string για το επώνυμο, ένα για το όνομα, ένα για τη διεύθυνση, ένα πίνακα ακεραίων που να αποθηκεύονται οι 19

20 βαθμοί του σπουδαστή για κάθε μάθημα κοκ. Αν είχαμε πολλά τέτοια στοιχεία, θα έπρεπε να τα αποθηκεύσουμε σε αντίστοιχους πίνακες. Και αν θέλαμε να τους ταξινομήσουμε με τον αλγόριθμο της φυσαλίδας σε αλφαβητική σειρά θα μπορούσαμε να συγκρίνουμε τα αντίστοιχα επώνυμα. Στην περίπτωση όμως που θα έπρεπε να γίνει ανταλλαγή μεταξύ δύο γειτονικών επωνύμων, θα έπρεπε για να διατηρηθεί η σωστή σειρά και στους υπόλοιπους πίνακες (με το όνομα, τη διεύθυνση κτλ.) να κάνουμε την αντίστοιχη ανταλλαγή σε κάθε έναν από αυτούς. Όσο περισσότερα ήταν αυτά τα στοιχεία τόσο περισσότερες επιπλέον πράξεις θα έπρεπε να κάνουμε. Αυτό θα ήταν και κουραστικό αλλά και επιρρεπές σε λάθη. Θα ήταν ολικό αν μπορούσαμε να ομαδοποιήσουμε όλα τα στοιχεία που είχαν να κάνουν με μία καρτέλα σε έναν τύπο. Αυτή τη δυνατότητα δίνεται με τη χρήση των record στην Pascal. Δείτε το listing 5. 1 program recex; 2 type 3 kartela = record 4 eponymo: string; 5 onoma: string; 6 xronologia: integer; 7 end; Listing 5: Παράδειγμα record 8 9 var 10 a, b: kartela; 11 begin 12 a. eponymo := 'Karamanlis'; 13 a. onoma := 'Konstantinos'; 14 a. xronologia := 1975; 15 writeln(a. eponymo); 16 writeln(a. onoma); 17 writeln(a. xronologia); b := a; 20 writeln(b. eponymo); 21 writeln(b. onoma); 22 writeln(b. xronologia); 23 end. Στις γραμμές 3-7, στο τμήμα type του προγράμματος δηλώνουμε έναν νέο σύνθετο τύπο τον οποίο ονομάζουμε kartela. Αυτός ο τύπος είναι ένα record (εγγραφή) η οποία αποτελείται από τρία επιμέρους στοιχεία: δύο strings με ονόματα eponymo και onoma και έναν integer με όνομα χρονολογία. Στο εξής μπορούμε να δηλώνουμε μεταβλητές τύπου kartela όπως και κάνουμε στη γραμμή 10 που δηλώνεται η μεταβλητή a. Για να προσπελάσουμε τα επιμέρους στοιχεία μιας μεταβλητής τύπου record γράφουμε το όνομα της μεταβλητής, μία τελεία και μετά το όνομα του επιμέρους στοιχείου που θέλουμε να προσπελάσουμε όπως στις γραμμές και Το πλεονέκτημα της χρήσης records φαίνεται στη γραμμή 19, όπου με μία εντολή b := a; η μεταβλητή b παίρνει την τιμή της μεταβλητής a με την έννοια ότι όλα τα επιμέρους στοιχεία της b παίρνουν την ίδια τιμή με τα 20

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

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

Pascal. 1 Γλώσσες προγραμματισμού. 21 Οκτωβρίου 2011 Pascal 21 Οκτωβρίου 2011 1 Γλώσσες προγραμματισμού Οι μικροεπεξεργαστές των υπολογιστών μπορούν μεταξύ άλλων να εκτελούν αριθμητικές και λογικές πράξεις και να διαβάζουν και γράφουν στη μνήμη του υπολογιστή.

Διαβάστε περισσότερα

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

Pascal. 26 Οκτωβρίου 2011 Pascal 6 Οκτωβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

Διαβάστε περισσότερα

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

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΟΔΗΓΙΕΣ: ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΣΕ ΟΛΕΣ ΤΙΣ ΕΡΩΤΗΣΕΙΣ. Το εξεταστικό δοκίμιο αποτελείται από δύο Ενότητες Α και Β. ΕΝΟΤΗΤΑ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ορθή απάντηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

Διαβάστε περισσότερα

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

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL Δυνατότητα ανάπτυξης, μεταγλώττισης και εκτέλεσης προγραμμάτων στη PASCAL. Κατανόηση της σύνταξης των προτάσεων της PASCAL. Κατανόηση της εντολής εξόδου για

Διαβάστε περισσότερα

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL ΓΕΝΙΚΗ ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Program Ονομα_προγραμματος; «πρόγραμμα» Πρόγραμμα 1 Program Lesson1_Program1; Write('Hello World!!!'); {σχόλια} Επεξήγηση Προγράμματος Program Lesson1_Program1;

Διαβάστε περισσότερα

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE ΕΡΓΑΣΤΗΡΙΟ 7 Ο Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE Βασικές Έννοιες: Δομή Επανάληψης, Εντολές Επανάληψης (For, While do, Repeat until), Αλγόριθμος, Αθροιστής, Μετρητής, Παράσταση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα: ΠΛΗΡΟΦΟΡΙΚΗ Ημερομηνία και ώρα εξέτασης: Τρίτη, 6 Ιουνίου 2006 07:30 10:30

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

Διαβάστε περισσότερα

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

Διαβάστε περισσότερα

Κεφάλαιο 1. Τι θα μάθουμε σήμερα: -AND, OR, NOT. -Ενσωματωμένες συναρτήσεις. -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD. -Προτεραιότητα πράξεων

Κεφάλαιο 1. Τι θα μάθουμε σήμερα: -AND, OR, NOT. -Ενσωματωμένες συναρτήσεις. -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD. -Προτεραιότητα πράξεων Κεφάλαιο 1 Αρχή ήμισυ παντός. Πλάτων, 427-347 π.χ., Φιλόσοφος Τι θα μάθουμε σήμερα: -AND, OR, NOT -Ενσωματωμένες συναρτήσεις -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD -Προτεραιότητα πράξεων 1 Λογικές

Διαβάστε περισσότερα

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α Σπυρόπουλος Α Μπουντουβής Αθήνα, 2015 v13_061015 Στον οδηγό αυτό θα χρησιμοποιηθούν

Διαβάστε περισσότερα

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ ΘΕΜΑ Α Α.1 Να χαρακτηρίσετε σωστή (Σ) ή λανθασμένη (Λ) καθεμία από τις παρακάτω προτάσεις (Μονάδες 10) 1. Ένας αλγόριθμος μπορεί να έχει άπειρα βήματα

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

Διαβάστε περισσότερα

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ Το αναλυτικό πρόγραμμα στο οποίο βασίζεται η εξέταση είναι το αναλυτικό πρόγραμμα του Μαθήματος Κατεύθυνσης Πληροφορική Επιστήμη Η.Υ της Γ Ενιαίου Λυκείου Γενικός Σκοπός Το μάθημα κατεύθυνσης της στη Γ'

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού Strange

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

Διαβάστε περισσότερα

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 26-01-2014 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 26-01-2014 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό, αν είναι

Διαβάστε περισσότερα

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός PASCAL Προγραμματισμός PASCAL 1 PASCAL Η PASCAL σχεδιάστηκε από τον Worth το 1968 στη Ζυρίχη, αρχικά σαν εργαλείο για τη διδασκαλία προγραμματισμού. Είναι γλώσσα για σειριακό προγραμματισμό. 2 Απλή και εύκολη

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

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

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος Παραδείγματα αλγορίθμων: Η παρασκευή ενός κέικ Η εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών Η εκκίνηση ενός αυτοκινήτου Η πρωινή προετοιμασία για το

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση τη

Διαβάστε περισσότερα

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας

Διαβάστε περισσότερα

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες.

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες. ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 Μάθημα: ΠΛΗΡΟΦΟΡΙΚΗ Ημερομηνία και ώρα εξέτασης: Τετάρτη, 4 Ιουνίου 2008 07:30

Διαβάστε περισσότερα

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

Διαβάστε περισσότερα

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

ιαδικαστικός Προγραμματισμός

ιαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ιαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 2 ο : Εντολές ελέγχου > εντολές υπό συνθήκη Στόχοι μαθήματος Να κατανοήσετε τη σχέση μεταξύ εντολών και παραστάσεων. Να αναγνωρίζετε

Διαβάστε περισσότερα

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ Ι ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ Τύποι δεδομένων Οι παρακάτω τύποι δεδομένων υποστηρίζονται από τη γλώσσα προγραμματισμού Fortran: 1) Ακέραιοι αριθμοί (INTEGER). 2) Πραγματικοί αριθμοί απλής ακρίβειας

Διαβάστε περισσότερα

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 5 η Έλεγχος Προγράμματος Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

Διαβάστε περισσότερα

Βασικές έννοιες προγραμματισμού

Βασικές έννοιες προγραμματισμού Βασικές έννοιες προγραμματισμού Αλφάβητο Γράμματα Κεφαλαία Ελληνικά ( Α Ω ) Πεζά Ελληνικά ( α ω ) Κεφαλαία Λατινικά ( A Z ) Πεζά Ελληνικά ( a z) Ψηφία 0-9 Ειδικοί χαρακτήρες ( +, -, *,/, =,.,,!, κενό )

Διαβάστε περισσότερα

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

α. Λογικό διάγραμμα είναι η μέθοδος που χρησιμοποιεί απλά σχήματα που υποστηρίζονται με απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (Α ΟΜΑΔΑ) & ΜΑΘΗΜΑΤΑ ΕΙΔΙΚΟΤΗΤΑΣ ΣΑΒΒΑΤΟ 16/04/2016 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΑΠΟΦΟΙΤΟΙ) ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις

Διαβάστε περισσότερα

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ ΚΑΙ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΑ Α Β ) ΣΑΒΒΑΤΟ 28 ΜΑΪΟΥ 2016 ΕΞΕΤΑΖΟΜΕΝΟ

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007 Μάθημα: ΠΛΗΡΟΦΟΡΙΚΗ Ημερομηνία και ώρα εξέτασης: Παρασκευή, 8 Ιουνίου 2007 07:30

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Pascal Βασικοί τύποι δεδοµένων

Pascal Βασικοί τύποι δεδοµένων Pasal Βασικοί τύποι δεδοµένων «ΜΗ ΕΝ ΠΟΛΛΟΙΣ ΟΛΙΓΑ ΛΕΓΕ, ΑΛΛ ΕΝ ΟΛΙΓΟΙΣ ΠΟΛΛΑ» Σηµαίνει: "Μη λες πολλά χωρίς ουσία, αλλά λίγα που να αξίζουν πολλά" (Πυθαγόρας) Κουλλάς Χρίστος www.oullas.om oullas 2 Στόχοι

Διαβάστε περισσότερα

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με: Αλγόριθμοι 2.2.1. Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά εντολών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Τα κυριότερα χρησιμοποιούμενα

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΤΕΤΑΡΤΗ 08/04/2015 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΟΚΤΩ (8) ΘΕΜΑ Α ΑΠΑΝΤΗΣΕΙΣ Α1. Α2. α-

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΕΞΕΤΑΣΕΙΣ ΓΙΑ ΤΑ ΑΝΩΤΕΡΑ ΚΑΙ ΑΝΩΤΑΤΑ ΕΚΠΑΙΔΕΥΤΙΚΑ ΙΔΡΥΜΑΤΑ 2005 ΠΛΗΡΟΦΟΡΙΚΗ ΛΥΣΕΙΣ 1 ΜΕΡΟΣ Α 1. Αρχή Διάβασε

Διαβάστε περισσότερα

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

Προγραμματισμός PASCAL Προγραμματισμός PASCAL 1 Εντολές Διακλάδωσης Εντολή IF/THEN Eντολή IF/THEN/ELSE Ένθετη Διακλάδωση Πολλαπλή Διακλάδωση 2 Εντολή IF-THEN (2) READLN (X,Y); IF X>Y THEN WRITELN( Η MΕΤΑΒΛΗΤΗ Χ ΕΙΝΑΙ ΜΕΓΑΛΥΤΕΡΗ

Διαβάστε περισσότερα

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

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

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή. ΜΑΘΗΜΑ / ΤΑΞΗ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ/Γ' ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 17-1-2016 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ-Χ.ΠΑΠΠΑ-Α.ΚΑΤΡΑΚΗ ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα

Διαβάστε περισσότερα

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΕΥΤΕΡΑ 16 ΙΟΥΝΙΟΥ 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

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

4. Επιλογή και Επανάληψη Σελίδα 53 4. Επιλογή και Επανάληψη 4.1 Η Εντολή Επιλογής if.. then Η εντολή If.. Then.. χρησιμοποιείται για την λήψη λογικών αποφάσεων σε ένα πρόγραμμα. Η εντολή αυτή έχει διάφορες μορφές σύνταξης οι οποίες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα.

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. 1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. ΑΠΑΝΤΗΣΗ Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 1 ο ΣΥΝΟΛΟ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΕΞΕΤΑΣΕΙΣ ΓΙΑ ΤΑ ΑΝΩΤΕΡΑ ΚΑΙ ΑΝΩΤΑΤΑ ΕΚΠΑΙΔΕΥΤΙΚΑ ΙΔΡΥΜΑΤΑ Μάθημα: Πληροφορική Ημερομηνία και ώρα εξέτασης:

Διαβάστε περισσότερα

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

Διαβάστε περισσότερα

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

Διαβάστε περισσότερα

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ ΘΕΜ 1.. Χαρακτηρίστε τις προτάσεις που ακολουθούν ως Σωστό, αν οι προτάσεις είναι σωστές και ως Λάθος αν οι προτάσεις είναι λάθος. 1.Είναι πάντα δυνατή η μετατροπή της εντολής WHILE DO σε FOR DO. 2. Στην

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

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

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α A1. ΚΥΡΙΑΚΗ 16/04/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΔΕΚΑΠΕΝΤΕ (15) ΑΠΑΝΤΗΣΕΙΣ 1-Σωστό

Διαβάστε περισσότερα

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

Αποτελέσματα προόδου ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://courses.softlab.ntua.gr/progintro/ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Δημήτρης Φωτάκης (fotakis@cs.ntua.gr)

Διαβάστε περισσότερα

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός Εργαστήριο 10 Πίνακες Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός 10.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ Σ αυτή την άσκηση, εξετάζουμε μία βασική δομή του προγραμματισμού, το πίνακα. Στις μέχρι τώρα

Διαβάστε περισσότερα

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα