τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

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

Download "τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε"

Transcript

1 Κεφάλαιο 9: Αναδρομή Ο τρόπος με τον οποίο σκεφτήκαμε και σχεδιάσαμε τις συναρτήσεις στο προηγούμενο κεφάλαιο ακολουθούσε τη φιλοσοφία του προγραμματισμού που είχαμε αναπτύξει σε όλο το προηγούμενο βιβλίο. Και πώς θα μπορούσε να μην ήταν έτσι άλλωστε; Στο κεφάλαιο αυτό θα αναζητήσουμε κάτι διαφορετικό. Θα δούμε έναν τρόπο να υλοποιούμε συναρτήσεις χρησιμοποιώντας αναδρομή (recursion). Η αναδρομή είναι κάτι το οποίο έχουμε δει στα μαθηματικά στο σχολείο. Θυμηθείτε τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε τον πρώτο όρο της ακολουθίας και τον ν-οστό όρο με βάση τον (ν-1)-οστό όρο. Το ίδιο θα κάνουμε και εδώ, μελετώντας και περιγράφοντας λειτουργίες που μπορούν να γραφούν αναδρομικά με έναν αρκετά διαφορετικό και ιδιαίτερα ενδιαφέροντα τρόπο. Το πρώτο πράγμα που θα αναρωτηθεί κανείς είναι γιατί να το κάνουμε αυτό. Είναι καλύτερος τρόπος προγραμματισμού; Είναι γρηγορότερος ο κώδικας που παράγεται; Είναι ευκολότερος ο κώδικας που αναπτύσσουμε; Οι απαντήσεις προφανώς δεν μπορούν να δοθούν μονολεκτικά ή έστω σύντομα. Ένα μπορεί να ειπωθεί σύντομα: είναι κάτι διαφορετικό και έχει τα πλεονεκτήματά του και τα μειονεκτήματά του. Αν μη τι άλλο, είναι ένας πολύ πρωτότυπος τρόπος να γράφεις κώδικα. Ας τον μελετήσουμε με προσοχή. 9.1 Αναδρομικές συναρτήσεις και μαθηματικά Στα μαθηματικά υπάρχουν πολλές περιγραφές που μπορούν να γίνουν με τρόπο αναδρομικό. Να ξεκινήσουμε με τις αναδρομικές ακολουθίες που αναφέραμε και πιο πάνω. Ας υποθέσουμε ότι θέλουμε να περιγράψουμε την ακολουθία των ακέραιων αριθμών που διαιρούνται ακριβώς με το 3. Θα πρέπει 139

2 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 140 να ορίσουμε τον πρώτο όρο της ακολουθίας, ο οποίος θα είναι το 3 (ή το 0 αν προτιμάτε να ξεκινήσουμε από εκεί), καθώς και να περιγράψουμε το πώς προκύπτει ο κάθε επόμενος όρος από τον προηγούμενό του. Ο κάθε επόμενος όρος, λοιπόν, προκύπτει αν προσθέσουμε στον προηγούμενό του το 3. Έτσι, με έναν πιο μαθηματικό συμβολισμό, η ακολουθία δίνεται από τους ορισμούς: α 1 = 3 α v = α v Ένα παράδειγμα προβλήματος που έχουμε εξετάσει και που μπορεί να περιγραφεί αναδρομικά είναι ο υπολογισμός του παραγοντικού. Το παραγοντικό ενός αριθμού i προκύπτει αν το παραγοντικό του προηγούμενού του αριθμού, του i-1, το πολλαπλασιάσουμε με το i. Χρειάζεται να ορίσουμε και το παραγοντικό του πρώτου όρου της σειράς, του 0 στη συγκεκριμένη περίπτωση. Το παραγοντικό του 0 ορίζεται ως 1 Έτσι, το πρόβλημα ολοκληρωμένο με μαθηματικούς συμβολισμούς περιγράφεται ως εξής: f 0 = 1 f v = f v 1 v Ένα παρόμοιο παράδειγμα είναι και η ύψωση σε δύναμη, όπου ο κάθε επόμενος όρος προκύπτει με τον πολλαπλασιασμό του προηγούμενου όρου με τη βάση, τον αριθμό δηλαδή που υψώνουμε σε δύναμη. Θα δούμε παρακάτω μια ταινία γι αυτό. Ας δούμε όμως πρώτα ένα ακόμα μαθηματικό πρόβλημα που η αναδρομική του υλοποίηση παρουσιάζει μεγάλο ενδιαφέρον: την ακολουθία Fibonacci. Στην ακολουθία Fibonacci κάθε όρος προκύπτει ως το άθροισμα των δύο προηγούμενών του όρων. Δεν θα δυσκολευτεί κανείς να φανταστεί ότι, για να οριστεί η ακολουθία, δεν αρκεί να ορίσουμε τον πρώτο της όρο μόνο, αλλά είναι απαραίτητο να ορίσουμε τους δύο πρώτους όρους. Ένας εύκολος τρόπος να καταλάβουμε γιατί είναι να σκεφτούμε ότι, αν δεν ορίσουμε τους δύο πρώτους όρους, δεν είναι δυνατόν να υπολογίσουμε τον τρίτο, ο οποίος βασίζεται, όπως και κάθε άλλος, στους δύο προηγούμενους. Συνήθως ορίζουμε τον πρώτο όρο σε 0 ή 1 και τον δεύτερο σε Απόδειξη με επαγωγή Στα σχολικά μας χρόνια είχαμε μάθει να αποδεικνύουμε θεωρήματα με επαγωγή. Η φιλοσοφία της απόδειξης με επαγωγή πάλι είναι πολύ κοντινή σε ό,τι

3 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 141 συζητούμε, είναι μάλλον οι δύο όψεις του ίδιου νομίσματος. Θα χρησιμοποιήσω ένα απλοποιημένο πρόβλημα στο οποίο θα αποδείξουμε επαγωγικά ότι όλα τα ντόμινο που τοποθετούμε σε σειρά το ένα μετά το άλλο θα πέσουν κάτω! Και δεν θα το κάνω μόνο επειδή μου αρέσει να βλέπω ντόμινο να πέφτουν με τάξη κάτω το ένα μετά το άλλο, αλλά και γιατί με τον τρόπο αυτόν λειτουργεί μια αναδρομική συνάρτηση σαν αυτές που θα υλοποιήσουμε σε λίγο. Τι κάνουμε λοιπόν όταν τοποθετούμε τα ντόμινο; Βάζουμε κάθε ντόμινο τόσο μακριά από το προηγούμενό του έτσι ώστε να είμαστε σίγουροι ότι, αν πέσει το προηγούμενο ντόμινο, τότε θα πέσει και αυτό. Αν το εξασφαλίσουμε αυτό, είμαστε σίγουροι ότι, αν εμείς ρίξουμε το πρώτο ντόμινο, τότε θα πέσουν όλα ανεξαιρέτως τα ντόμινο. Το ίδιο ακριβώς κάνουμε και στην απόδειξη με επαγωγή. Δεχόμαστε ότι κάτι ισχύει για ν και με αυτό δεδομένο αποδεικνύουμε ότι ισχύει και για ν+1. Πρέπει πάλι να ρίξουμε το πρώτο ντόμινο, να εξετάσουμε τι γίνεται για ν=1 (ή για κάποιο άλλο ν που έχει νόημα για το πρόβλημα που πάμε να λύσουμε). Θα δείξουμε λοιπόν ότι: v = Έστω ότι ονομάζουμε T(v) το άθροισμα: v(v + 1) T (v) = v Τότε διπλασιάζοντας τα δύο μέλη της εξίσωσης μπορούμε να έχουμε: T (v) = (v 1) + v + v + (v 1) + (v ) Προσθέτοντας τους όρους του δεξιού μέλους της εξίσωσης που απέχουν v όρους μεταξύ τους παίρνουμε: T (v) = (v + 1) + (v + 1) (v + 1) = v(v + 1) και άρα: T (v) = v(v + 1) Ας το δείξουμε τώρα και αναδρομικά. Για v=1 έχουμε: 1 = 1 άρα ισχύει. Έστω ότι ισχύσει για v, θα δείξουμε ότι ισχύει και για v+1, ότι δηλαδή: = 1

4 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 14 Πράγματι έχουμε: v + (v + 1) = v + (v + 1) = = v(v + 1) + (v + 1) άρα η αρχική μας υπόθεση ισχύει. = (v + 1)(v + ) v(v + 1) (v + 1)(v + ) + (v + 1) = 9.3 Αναδρομικές συναρτήσεις στην Πληροφορική Πώς θα μπορούσε η Πληροφορική να διαφέρει από τα μαθηματικά; Με τρόπο ανάλογο με ό,τι είδαμε παραπάνω, σε πολλές γλώσσες προγραμματισμού, σχεδόν σε όλες που υποστηρίζουν το διαδικασιακό μοντέλο, ο προγραμματιστής μπορεί να υλοποιήσει κάποιους υπολογισμούς αναδρομικά. Η φιλοσοφία φυσικά δεν αλλάζει. Θα αλλάξουμε λίγο τη διατύπωση που κάναμε παραπάνω με μία ισοδύναμη. Αντί να λέμε ότι θεωρούμε ότι κάτι ισχύει για ν και πάμε να αποδείξουμε με βάση αυτό ότι ισχύει και για v+1, θα πούμε ότι θα φτιάξουμε μία συνάρτηση που να υπολογίζει κάτι για την τιμή ν, θεωρώντας ότι η συνάρτηση λειτουργεί για ν-1. Αυτό είναι πιο κοντά στη διατύπωση που είχαμε κάνει στα ντόμινο, ότι, αν πέσει το προηγούμενο, πρέπει να πέσει και το επόμενο. Να μην να ξεχάσουμε ότι πρέπει να πέσει και το πρώτο ντόμινο και ότι αυτό πρέπει να γίνει με διαφορετικό τρόπο από ό,τι θα πέσουν τα υπόλοιπα ντόμινο. Αντίστοιχα, πρέπει να γράψουμε τη συνάρτηση ώστε να λειτουργεί και για ν=1 (ή κάτι άλλο, ανάλογα με το πρόβλημα), ξεχωριστά από τα υπόλοιπα ν. Η συνταγή λοιπόν έχει ως εξής: Φτιάχνουμε τη συνάρτηση να λειτουργεί για μια αρχική τιμή. Υποθέτουμε ότι (με κάποιο μαγικό τρόπο) η συνάρτηση λειτουργεί αν κληθεί με παράμετρο το ν-1. Υλοποιούμε τη συνάρτηση ώστε να λειτουργεί αν κληθεί με παράμετρο ν, επιτρέποντας να καλέσουμε μέσα σε αυτήν τη συνάρτηση με παράμετρο ν-1. Μένει να δούμε λίγο το μαγικό κομμάτι, αλλά θα το κάνουμε αργότερα. Πριν χαλάσουμε τη μαγεία, ας δούμε λίγες αναδρομικές συναρτήσεις με τη βοήθεια της Python.

5 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ Το παραγοντικό και η ύψωση σε δύναμη ως αναδρομικές συναρτήσεις Η μαθηματική αναδρομική περιγραφή του παραγοντικού ορίζει τον πρώτο όρο n=0, το οποίο εξ ορισμού είναι ίσο με 1, ενώ κάθε άλλο όρο τον ορίζει σαν το γινόμενο του παραγοντικού του προηγούμενου όρου και του n. Είδαμε παραπάνω τον μαθηματικό ορισμό. Το ίδιο ακριβώς κάνει και ο κώδικας του Σχήματος 9.1. Σχήμα 9.1: Συνάρτηση που υπολογίζει το παραγοντικό ενός αριθμού. Στην πρώτη γραμμή ορίζεται το όνομα της συνάρτησης, ας την πούμε factorial. Το κυρίως σώμα της συνάρτησης αποτελείται από μία εντολή απόφασης η οποία διαχωρίζει δύο περιπτώσεις: αν το n είναι ίσο με μηδέν και αν το n δεν είναι ίσο με μηδέν. Στην πρώτη περίπτωση επιστρέφει το 1 σαν αποτέλεσμα, ενώ στη δεύτερη χρησιμοποιεί την κλήση factorial(n-1), για την οποία έχουμε δεχτεί ότι λειτουργεί, υπολογίζει το παραγοντικό του n-1, το πολλαπλασιάζει με το n και βρίσκει το παραγοντικό του n, το οποίο και επιστρέφει σαν αποτέλεσμα. Σχήμα 9.: Ολοκληρωμένη συνάρτηση για το παραγοντικό. Αν θέλουμε να είμαστε περισσότερο σωστοί ως προγραμματιστές, πρέπει να κάνουμε κάτι για την περίπτωση που η συνάρτηση κληθεί με αρνητικό αριθμό σαν όρισμα. Δεν είναι δύσκολο, η δομή απόφασης πρέπει να έχει τώρα

6 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 144 τρία σκέλη, ένα για n<0, οπότε θα επιστρέφει μήνυμα λάθους, και τα άλλα δύο για n=0 και n>0 (else), τα οποία δεν αλλάζουν. Στο Σχήμα 9. φαίνεται ο ολοκληρωμένος κώδικας. Για την ύψωση ενός αριθμού σε δύναμη παρακολουθήστε την Ταινία 9.1. Ο κώδικάς της φαίνεται στο Σχήμα 9.3. Ταινία 9.1: Ύψωση αριθμού σε δύναμη. Σχήμα 9.3: Ύψωση αριθμού σε δύναμη. 9.5 Η ακολουθία των αριθμών Fibonacci Κάθε όρος της ακολουθίας των αριθμών Fibonacci αποτελείται από το άθροισμα των δύο προηγούμενων όρων. Φυσικά, για να έχει νόημα κάτι τέτοιο πρέπει να οριστούν ξεχωριστά οι δύο πρώτοι όροι. Έτσι, αν ο πρώτος όρος είναι το 0 και ο δεύτερος το 1, τότε η μαθηματική περιγραφή της ακολουθίας Fibonacci είναι η ακόλουθη: fib 0 = 0 fib 1 = 1 fib v = fib v 1 + fib v

7 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 145 Θα ξεκινήσουμε με μία επαναληπτική υλοποίηση της ακολουθίας. Ας υποθέσουμε λοιπόν ότι θέλουμε να φτιάξουμε μία συνάρτηση που επιστρέφει τον ν-οστό όρο της ακολουθίας Fibonacci. Μία πρώτη προσέγγιση θα ήταν να χρησιμοποιήσουμε μία λίστα όπου και θα αποθηκεύουμε τους όρους της ακολουθίας. Αυτό δεν είναι δύσκολο. Ο κώδικας φαίνεται στο Σχήμα 9.4. Οι δύο πρώτοι όροι επιστρέφονται χωρίς να χρειαστεί κάποιος υπολογισμός, ενώ, αν ζητείται όρος μεγαλύτερος από τον δεύτερο, τότε οι δύο πρώτοι όροι τοποθετούνται στην αρχή μίας λίστας. Για τον τρίτο έως και τον ν-οστό όρο, κάθε όρος υπολογίζεται σαν το άθροισμα των δύο προηγούμενων όρων στη λίστα και τοποθετείται στη θέση του στο τέλος της λίστας για να χρησιμοποιηθεί σε υπολογισμούς που θα ακολουθήσουν ή να επιστραφεί με τη return, αν είναι ο τελευταίος όρος που υπολόγισε ο βρόχος, δηλαδή το ζητούμενο αποτέλεσμα. Σχήμα 9.4: Αριθμοί Fibonacci με χρήση λίστας. Η λύση αυτή είναι εύκολη και φαντάζομαι αρκετά κατανοητή. Έχει όμως ένα σημαντικό μειονέκτημα: αποθηκεύει όλους τους αριθμούς της ακολουθίας, χωρίς κάτι τέτοιο να είναι απαραίτητο. Η επόμενή μας προσέγγιση, η οποία φαίνεται στο Σχήμα 9.5, δεν απαιτεί τη χρήση λίστας. Χρησιμοποιεί τρεις μεταβλητές, μία για τον όρο που θα υπολογιστεί τώρα, μία για τον προηγούμενό του (αυτόν που υπολογίστηκε στην προηγούμενη επανάληψη) και μία για τον προ-προηγούμενό του. Πρέπει φυσικά να φροντίσουμε ώστε, όταν ένας όρος υπολογιστεί, για να είμαστε έτοιμοι για τον υπολογισμό του επόμενου

8 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 146 όρου, ο μέχρι τώρα προηγούμενος όρος πρέπει να πάρει τη θέση του προπροηγούμενου και ο νέος όρος πρέπει να πάρει τη θέση του προηγούμενου. Σχήμα 9.5: Αριθμοί Fibonacci με τη χρήση τριών μεταβλητών. Σχήμα 9.6: Αριθμοί Fibonacci με τη χρήση δύο μεταβλητών. Αν το καταλάβαμε ως εδώ πήγαμε πολύ καλά. Αν θέλετε να το προχωρήσετε λίγο περισσότερο προσπαθήστε να καταλάβετε τον κώδικα του Σχήματος 9.6, όπου εμφανίζεται μία παραλλαγή της προηγούμενης λύσης στην

9 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 147 οποία απαιτούνται μόνο δύο μεταβλητές, αντί για τρεις, για να κρατηθούν οι απαραίτητοι όροι της ακολουθίας. Ο σκοπός της υποενότητας αυτής είναι να φτάσουμε στην αναδρομική υλοποίηση. Είχαν όμως τόσο ενδιαφέρον οι παραπάνω μη αναδρομικές υλοποιήσεις που δεν μπόρεσα να αντισταθώ στο να τις αναλύσω λίγο περισσότερο. Η αναδρομική υλοποίηση προκύπτει φυσικά από τον μαθηματικό αναδρομικό ορισμό. Ο κώδικας φαίνεται στο Σχήμα 9.7. Αρχικά φροντίζουμε ώστε η συνάρτηση να επιστρέφει σωστό αποτέλεσμα για τους δύο πρώτους όρους. Για κάθε άλλο όρο η συνάρτηση καλεί αναδρομικά δύο φορές τον εαυτό της και εκφράζει τον νέο όρο σαν άθροισμα των δύο προηγούμενων όρων. Σχήμα 9.7: Αναδρομικός υπολογισμός της ακολουθίας Fibonacci. Δεν ξέρω ποιος κώδικας από τους τέσσερις σας δυσκόλεψε περισσότερο. Εμένα πιο εύκολος μου φαίνεται ο τελευταίος. Αλλά, όπως θα δούμε παρακάτω στην υποενότητα 9.7, η ευκολία αυτή δεν είναι χωρίς τίμημα. 9.6 Εκτέλεση μια αναδρομικής συνάρτησης βήμα προς βήμα Επειδή, δυστυχώς, μαγεία υπάρχει μόνο στον κόσμο των παραμυθιών, πρέπει κάπου εδώ να απομυθοποιήσουμε το γιατί η υπόθεση ότι η συνάρτηση υπολογίζει σωστά κάποιους προηγούμενους όρους μάς επιτρέπει να υπολογίζουμε σωστά τον επόμενο όρο. Θα το δούμε καλύτερα με τη βοήθεια της Ταινίας 9., αλλά ας παρακολουθήσουμε την εκτέλεση ενός παραδείγματος υπολογισμού του παραγοντικού αναδρομικά. Έστω ότι θέλουμε να υπολογίσουμε το παραγοντικό του 5. Έχουμε λοιπόν: factorial(5)=5*factorial(4)

10 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 148 σύμφωνα με τον αναδρομικό ορισμό και τον κώδικα που γράψαμε, αφού η συνάρτηση θα καλέσει αναδρομικά τον εαυτό της για να υπολογίσει το factorial(4) και ό,τι βρει θα το πολλαπλασιάσει με το 5. Όμως η factorial(4), πάλι για να υπολογιστεί, θα καλέσει την factorial(3). Έτσι έχουμε: factorial(5)=5*factorial(4)=5*4*factorial(3)= =5*4*3*factorial()=5*4*3**factorial(1)=%*4*3**1*factorial(0) Όμως, η factorial(0) ορίζεται με διαφορετικό τρόπο και δεν απαιτείται αναδρομική κλήση για να εκτελεστεί, αφού στον κώδικα της συνάρτησης έχει οριστεί να επιστρέφει 1. Αν στην παραπάνω σχέση αντικαταστήσουμε το factorial(0) με το 1, έχουμε φτάσει στο αποτέλεσμά μας (το οποίο εδώ είναι το 10). Παρακολουθήστε την Ταινία 9., όπου τα παραπάνω αναπαρίστανται με τον τρόπο που πραγματικά γίνονται οι υπολογισμοί μέσα στον υπολογιστή με τη χρήση της στοίβας εκτέλεσης. Ταινία 9.: Εκτέλεση μιας αναδρομικής συνάρτησης βήμα προς βήμα Οι επιπτώσεις της αναδρομής στον χρόνο εκτέλεσης Είμαι σίγουρος ότι κατάφερα τουλάχιστον να σας πείσω ότι η αναδρομή είναι ένας τελείως διαφορετικός τρόπος να γράφουμε συναρτήσεις. Σίγουρα δεν σας έπεισα για την αναγκαιότητα να γράφουμε κώδικα με αυτόν τον τρόπο. Από την άλλη, είμαι σίγουρος ότι δεν έχετε καμία αμφιβολία ότι, αν έχουμε τον ορισμό ενός προβλήματος με τρόπο αναδρομικό, είναι πολύ εύκολο να γράψουμε την αναδρομική συνάρτηση που το υλοποιεί. Σε κάποιες περιπτώσεις, όπως στους αριθμούς Fibonacci, ίσως να το θεωρήσατε και εσείς πιο εύκολο. Πιστέψτε με όμως, υπάρχουν παραδείγματα που η αναδρομική υλοποίηση είναι τόσο ευκολότερη από μία μη αναδρομική, που δεν διανοούμαστε καν να πληρώσουμε το κόστος. Τέτοιοι αλγόριθμοι είναι ο αλγόριθμος γρήγορης ταξινόμησης (quicksort), που θα δούμε σε επόμενο κεφάλαιο, αλλά και διάφορες

11 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 149 λειτουργίες πάνω σε δέντρα, οι οποίες όμως δεν αποτελούν αντικείμενο αυτού του βιβλίου. Πληροφορίες γύρω από τα δέντρα αλλά και κώδικες που υλοποιούν λειτουργίες σε αυτά μπορείτε να αναζητήσετε σε κάποιο βιβλίο δομών δεδομένων. Τα πράγματα, όπως στις περισσότερες περιπτώσεις, έχουν περισσότερες από μία πλευρές. Για την ευκολία που μας παρέχει πολλές φορές η αναδρομή, πληρώνουμε τίμημα: η αναδρομή είναι αρκετά ακριβή διαδικασία και ο κώδικας που παράγεται είναι πολύ πιο αργός από μια αντίστοιχη επαναληπτική υλοποίηση. Ενώ σε μία επαναληπτική υλοποίηση κάθε βήμα είναι απλά μερικές πράξεις μέσα σε έναν βρόχο, στην αναδρομική υλοποίηση κάθε βήμα αποτελεί και μία κλήση συνάρτησης, κάτι που φυσικά είναι πολύ πιο ακριβό. Όσοι είδατε την Ταινία 9. ίσως να συνειδητοποιείτε περισσότερο το απαιτούμενο κόστος. Αν παρατηρήσουμε, μάλιστα, καλύτερα τον υπολογισμό των αριθμών Fibonacci, θα δούμε ότι εμφανίζεται ακόμα ένας λόγος που κάνει την εκτέλεση της συνάρτησης ακόμα πιο αργή. Ας δούμε τα πρώτα βήματα του υπολογισμού του Fibonacci(10): Fibonacci(10)=Fibonacci(9)+Fibonacci(8)= =Fibonacci(8)+Fibonacci(7)+Fibonacci(7)+Fibonacci(6)=... To Fibonacci(10) απαιτεί τον υπολογισμό του Fibonacci(9) και Fibonacci(8). To Fibonacci(9) θα εκκινήσει τον υπολογισμό του Fibonacci(8) και Fibonacci(7). Άρα το Fibonacci(8) θα υπολογιστεί δύο φορές. Αν πάμε χαμηλότερα στο δέντρο που δημιουργείται, θα δούμε ότι κάποιοι αριθμοί Fibonacci θα υπολογιστούν πολλές φορές από διαφορετικές κλήσεις της συνάρτησης. Η επίδραση που έχει αυτό στην ταχύτητα είναι καταστροφική. Δοκιμάστε αν θέλετε να συγκρίνετε τους χρόνους εκτέλεσης των συναρτήσεων στα Σχήματα 9.4 έως 9.7. Μη βάλετε μεγάλες τιμές στην αναδρομική συνάρτηση, δοκιμάστε να τις αυξήσετε σιγά σιγά. Γύρω στο 30 με 40 αρχίζει να αποκτάει το πείραμα μεγάλο ενδιαφέρον. Λύσεις βέβαια υπάρχουν, όπως το να θυμόμαστε τους αριθμούς που έχουν ήδη υπολογιστεί και να κάνουμε μία διαφορετική υλοποίηση που να μην απαιτεί τον επανυπολογισμό τους. Αυτό όμως που θέλω να σας δείξω είναι ότι σε κάθε περίπτωση υπάρχει ένα τίμημα το οποίο, ανάλογα με την εφαρμογή και τις απαιτήσεις μας, πρέπει να αποφασίσουμε αν θέλουμε να το πληρώσουμε ή όχι. Περισσότερο υλικό σχετικό με αναδρομή μπορείτε να διαβάσετε στο κεφάλαιο 5 του βιβλίου [1], στο κεφάλαιο 4 του βιβλίου [], στο κεφάλαιο 15 του βιβλίου [3] και στο κεφάλαιο 8 του βιβλίου [4].

12 ΚΕΦΑΛΑΙΟ 9. ΑΝΑΔΡΟΜΗ 150 Ασκήσεις που μπορείτε να κάνετε μόνοι σας Υλοποιήστε αναδρομικά τον υπολογισμό του αθροίσματος: v = (v + 1)/ Υλοποιήστε αναδρομικά το άθροισμα των στοιχείων μιας λίστας. Σκεφτείτε ότι το άθροισμα των στοιχείων μιας λίστας είναι το άθροισμα του πρώτου στοιχείου της λίστας και το άθροισμα των υπόλοιπων στοιχείων της λίστας. Φτιάξτε ένα διάγραμμα που να συγκρίνει τον χρόνο εκτέλεσης για τους τέσσερις κώδικες των Σχημάτων 9.4 έως 9.7. Προσπαθήστε να γράψετε μία αναδρομική συνάρτηση που να υπολογίζει τον ν-οστο όρο Fibonacci, χωρίς όμως να χρειάζεται να επαναλαμβάνει υπολογισμούς. Βάλτε και αυτήν τη συνάρτηση στο διάγραμμα της προηγούμενης άσκησης. Γράψτε έναν αναδρομικό αλγόριθμο για τον υπολογισμό του μέγιστου κοινού διαιρέτη δύο αριθμών. Βιβλιογραφία 1. Allen B. Downey (01). Think Python. Publisher: O Reilly Media.. John Guttag (015). Υπολογισμοί και Προγραμματισμός Με Την Python. Μετάφραση: Παναγιώτης Καναβός, Επιμέλεια: Γεώργιος Μανής, Εκδόσεις Κλειδάριθμος. 3. Brian Heinold (01). Introduction to Programming Using Python. Publisher: Mount St. Mary s University, Ηλεκτρονικό βιβλίο, ελεύθερα διαθέσιμο. 4. Cody Jackson (011). Learning to Program Using Python. Ηλεκτρονικό βιβλίο, ελεύθερα διαθέσιμο.

Κεφάλαιο 7: Συναρτήσεις

Κεφάλαιο 7: Συναρτήσεις Κεφάλαιο 7: Συναρτήσεις 7.1 Κάτι σαν κοινός παρονομαστής Ας ξεκινήσουμε δικαιολογώντας τον τίτλο κοινός παρονομαστής. Φανταστείτε ότι έχετε ένα μεγάλο πρόγραμμα στο οποίο σε διαφορετικά του σημεία γίνεται

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης ΕΠ.1 Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τους διψήφιους άρτιους ακέραιους. Η άσκηση στην ουσία θα πρέπει να εκτυπώσει του αριθμούς 10, 12, 14,.,96, 98. Μεμιαπρώτηματιάθαμπορούσαμενατηνλύσουμεμετοναπροσπελάσουμετιςτιμές

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

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

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

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

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

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

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

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ; Εντολή επανάληψης Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή Πρόβλημα Πώς θα υπολογίσουμε το άθροισμα των ακέραιων 1 5000; Ισοδύναμοι υπολογισμοί του Ισοδύναμοι υπολογισμοί του Ισοδύναμοι υπολογισμοί

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

Κεφάλαιο 8: Προγραμματίζοντας αλγορίθμους έξυπνα και δημιουργικά

Κεφάλαιο 8: Προγραμματίζοντας αλγορίθμους έξυπνα και δημιουργικά Κεφάλαιο 8: Προγραμματίζοντας αλγορίθμους έξυπνα και δημιουργικά Η συνεχής βελτίωση του υλικού (hardware) τις τελευταίες δεκαετίες έχει σαν αποτέλεσμα την ύπαρξη πολύ ισχυρών επεξεργαστών. Αν και σε λίγα

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

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Αλγόριθμος (algorithm) λέγεται μία πεπερασμένη διαδικασία καλά ορισμένων βημάτων που ακολουθείται για τη λύση ενός προβλήματος. Το διάγραμμα ροής

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Τα δεδομένα που επεξεργαζόμαστε, καθώς και ο κώδικας που τρέχουμε, βρίσκονται αποθηκευμένα στη μνήμη RAM (Random Access Memory) του υπολογιστή. Τα δεδομένα

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

5.1. Προσδοκώμενα αποτελέσματα

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

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

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

Ενότητα 4. Επίλυση μαθηματικών προβλημάτων με το ΒΥΟΒ

Ενότητα 4. Επίλυση μαθηματικών προβλημάτων με το ΒΥΟΒ Ενότητα 4: Επίλυση μαθηματικών προβλημάτων -1- Ενότητα 4. Επίλυση μαθηματικών προβλημάτων με το ΒΥΟΒ α. Υπολογισμός δύναμης ακεραίων Σε προηγούμενη ενότητα, είδαμε ότι το ΒΥΟΒ δεν γνωρίζει την πράξη της

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

Σημειωματάριο μαθήματος 1ης Νοε. 2017

Σημειωματάριο μαθήματος 1ης Νοε. 2017 Σημειωματάριο μαθήματος 1ης Νοε. 2017 Παραδείγματα συναρτήσεων. Αναδρομικές συναρτήσεις. Ξεκινήσαμε πακετάροντας παλαιότερό μας κώδικα για τον υπολογισμό των διαιρετών ενός φυσικού αριθμού σε συνάρτηση.

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ ΚΕΦΑΛΑΙΟ 7 Ο ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ 1. Όταν μπροστα" (αριστερα") απο" ε"ναν αριθμο" γραφει" το συ"μβολο + το"τε ο αριθμο"ς

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

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

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

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

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

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

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

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

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO. Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος.

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO. Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος. ΥΠΟΛΟΓΙΣΤΕΣ Ι Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος. Τετριμμένο παράδειγμα: Κατασκευάστε πρόγραμμα που θα εμφανίζει

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

Κεφάλαιο 2: Τα πρώτα βήματα

Κεφάλαιο 2: Τα πρώτα βήματα Κεφάλαιο 2: Τα πρώτα βήματα Και τώρα ας κάνουμε το πρώτο μας βήμα. Για εσάς, που νιώθετε ότι αυτό είναι πραγματικά το πρώτο βήμα στον προγραμματισμό, ίσως να είναι και το πιο σημαντικό. Θα δούμε πώς σκεφτόμαστε

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος Μορφές αποδείξεων Μαθηματικά Πληροφορικής ο Μάθημα Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης.

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

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

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

, ο αριθμός στον οποίο αντιστοιχεί ο 2 καλείται δεύτερος όρος της ακολουθίας και τον συμβολίζουμε συνήθως με

, ο αριθμός στον οποίο αντιστοιχεί ο 2 καλείται δεύτερος όρος της ακολουθίας και τον συμβολίζουμε συνήθως με 5. ΑΚΟΛΟΥΘΙΕΣ Γενικά ακολουθία πραγματικών αριθμών είναι μια αντιστοίχιση των φυσικών αριθμών,,,...,ν,... στους πραγματικούς αριθμούς. Ο αριθμός στον οποίο αντιστοιχεί ο καλείται πρώτος όρος της ακολουθίας

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

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

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

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

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

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

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

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

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 3 Εκφράσεις, τελεστές, σχόλια Σύνοψη Στο κεφάλαιο αυτό εισάγουμε τον τρόπο τέλεσης πράξεων μεταξύ μεταβλητών και σταθερών, εκφράσεις μεταξύ αυτών καθώς και το σχολιασμό της λογικής ενός προγράμματος.

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

Πειραματιζόμενοι με αριθμούς στο περιβάλλον του Microworlds Pro: διαθεματική προσέγγιση περί «πολλαπλασίων και διαιρετών»

Πειραματιζόμενοι με αριθμούς στο περιβάλλον του Microworlds Pro: διαθεματική προσέγγιση περί «πολλαπλασίων και διαιρετών» Πειραματιζόμενοι με αριθμούς στο περιβάλλον του Microworlds Pro: διαθεματική προσέγγιση περί «πολλαπλασίων και διαιρετών» μια Νίκος Δαπόντες Φυσικός Δευτεροβάθμιας Εκπαίδευσης Το περιβάλλον Microworlds

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

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

ΚΕΦΑΛΑΙΟ 5 ΑΚΟΛΟΥΘΙΕΣ ΑΡΙΘΜΗΤΙΚΗ ΓΕΩΜΕΤΡΙΚΗ ΠΡΟΟΔΟΣ ΑΛΓΕΒΡΑ Β ΛΥΚΕΙΟΥ ΚΕΦΑΛΑΙΟ 5 ΑΚΟΛΟΥΘΙΕΣ ΑΡΙΘΜΗΤΙΚΗ ΓΕΩΜΕΤΡΙΚΗ ΠΡΟΟΔΟΣ ΓΙΑΝΝΗΣ ΠΑΤΕΡΑΣ ΜΑΘΗΜΑΤΙΚΟΣ ΑΛΓΕΒΡΑ Β ΛΥΚΕΙΟΥ ΑΚΟΛΟΥΘΙΕΣ ΚΕΦΑΛΑΙΟ 5 ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ ΑΠΑΡΑΙΤΗΤΕΣ ΓΝΩΣΕΙΣ ΘΕΩΡΙΑΣ Ακολουθία ονομάζουμε

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

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

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

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

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Σημειωματάριο Δευτέρας 30 Οκτ. 2017 Σημειωματάριο Δευτέρας 30 Οκτ. 2017 Συναρτήσεις (functions) Μια συνάρτηση στην Python είναι κομμάτι κώδικα που φέρει το δικό του όνομα (ακολουθεί τη λέξη κλειδί def στον ορισμό της συνάρτησης, έχει τα

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

5 ΠΡΟΟΔΟΙ 5.1 ΑΚΟΛΟΥΘΙΕΣ. Η έννοια της ακολουθίας

5 ΠΡΟΟΔΟΙ 5.1 ΑΚΟΛΟΥΘΙΕΣ. Η έννοια της ακολουθίας 5 ΠΡΟΟΔΟΙ 5.1 ΑΚΟΛΟΥΘΙΕΣ Η έννοια της ακολουθίας Ας υποθέσουμε ότι καταθέτουμε στην τράπεζα ένα κεφάλαιο 10000 ευρώ με ανατοκισμό ανά έτος και με επιτόκιο 2%. Αυτό σημαίνει ότι σε ένα χρόνο οι τόκοι που

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

2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί. q Z, a = b q + r.

2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί. q Z, a = b q + r. Κεφάλαιο 2 Θεωρία Αριθμών Κύριες βιβλιογραφικές αναφορές για αυτό το Κεφάλαιο είναι οι Hardy and Wright 1979 και Graham, Knuth, and Patashnik 1994. 2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί Θεώρημα 2.1 Αν

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

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

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

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

a n = 3 n a n+1 = 3 a n, a 0 = 1

a n = 3 n a n+1 = 3 a n, a 0 = 1 Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ Μαθηματικά Πληροφορικής 2ο Μάθημα Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης.

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

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

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

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

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες Σκοπός της 3ης άσκησης είναι να μάθουμε να φτιάχνουμε και να προσπελαύνουμε λίστες, να δούμε τι διαφορά έχουν από τα tuples και επίσης πώς μπορούμε

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

ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ

ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ Εισαγωγή Οι αριθμοί που εκφράζουν το πλήθος των στοιχείων ανά αποτελούν ίσως τους πιο σημαντικούς αριθμούς της Συνδυαστικής και καλούνται διωνυμικοί συντελεστές διότι εμφανίζονται

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

Μαθηματικά Γ Γυμνασίου

Μαθηματικά Γ Γυμνασίου Α λ γ ε β ρ ι κ έ ς π α ρ α σ τ ά σ ε ι ς 1.1 Πράξεις με πραγματικούς αριθμούς (επαναλήψεις συμπληρώσεις) A. Οι πραγματικοί αριθμοί και οι πράξεις τους Διδακτικοί στόχοι Θυμάμαι ποιοι αριθμοί λέγονται

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

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης; 10. Τι ονομάζουμε Ευκλείδεια διαίρεση και τέλεια διαίρεση; Όταν δοθούν δύο φυσικοί αριθμοί Δ και δ, τότε υπάρχουν δύο άλλοι φυσικοί αριθμοί π και υ, έτσι ώστε να ισχύει: Δ = δ π + υ. Ο αριθμός Δ λέγεται

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

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

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

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

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» 2 ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβλήματα ελάχιστης συνεκτικότητας δικτύου Το πρόβλημα της ελάχιστης

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

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

Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Απρίλης 2015 ΘΕΜΑ Α Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Απρίλης 2015 Α1.Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα να σημειώσετε

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

1 Arq thc Majhmatik c Epagwg c

1 Arq thc Majhmatik c Epagwg c Μαθηματικός Λογισμός Ι Φθινόπωρο 0 Σημειώσεις 7-0- Μ. Ζαζάνης Arq thc Majhati c Epagwg c Θα συμβολίζουμε το σύνολο των ϕυσικών αριθμών, {,,,...} με το σύμβολο N. Το σύνολο των ϕυσικών αριθμών, συμπεριλαμβανομένου

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012 ΘΕΜΑ Α Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: 1. Κάθε βρόγχος που υλοποιείται με την εντολή Για μπορεί να

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

Χρησιμοποιώντας συναρτήσεις

Χρησιμοποιώντας συναρτήσεις Τετράδιο μαθητή ΘΕ18: Συναρτήσεις Όνομα(τα): Όνομα Η/Υ: Τμήμα: Ημερομηνία: Χρησιμοποιώντας συναρτήσεις Ξεκινήστε το Χώρο Δραστηριοτήτων, επιλέξτε τη θεματική ενότητα: ΘΕ18: Συναρτήσεις και επιλέξτε την

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

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

Κεφάλαιο 6: Οι δομές ελέγχου ροής

Κεφάλαιο 6: Οι δομές ελέγχου ροής Κεφάλαιο 6: Οι δομές ελέγχου ροής Κάθε γλώσσα προγραμματισμού έχει τις δικές της προγραμματιστικές δομές. Οι βασικές όμως προγραμματιστικές δομές δεν διαφέρουν σημαντικά από γλώσσα σε γλώσσα. Κατά την

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

Σχέδιο Μαθήματος - "Ευθεία Απόδειξη"

Σχέδιο Μαθήματος - Ευθεία Απόδειξη Σχέδιο Μαθήματος - "Ευθεία Απόδειξη" ΤΑΞΗ: Α Λυκείου Μάθημα: Άλγεβρα Τίτλος Ενότητας: Μέθοδοι Απόδειξης - Ευθεία απόδειξη Ώρες Διδασκαλίας: 1. Σκοποί Να κατανοήσουν οι μαθητές την διαδικασία της ευθείας

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

Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών

Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών Λογισμικό Υπολογιστών Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

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

1. ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

1. ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΑΔΑΜΑΝΤΙΟΣ ΣΧΟΛΗ ΤΑΞΗ Δ ΟΝΟΜΑ α. Αντιμεταθετική ιδιότητα 1. ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ Π Ρ Ο Σ Θ Ε Σ Η Α. ΙΔΙΟΤΗΤΕΣ ΤΗΣ ΠΡΟΣΘΕΣΗΣ 8 + 7 = 15 ή 7 + 8 = 15 346 ή 517 ή 82 + 517 + 82 + 346 82 346 517 945 945

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

Κεφάλαιο 4: Μεταβλητές και εκφράσεις

Κεφάλαιο 4: Μεταβλητές και εκφράσεις Κεφάλαιο 4: Μεταβλητές και εκφράσεις Έχουμε ήδη μία αίσθηση του τι είναι μεταβλητή. Τις έχουμε ήδη χρησιμοποιήσει στο παράδειγμα του τριωνύμου ώστε να κρατήσουμε τις τιμές για τα α, β και γ, και έχουμε

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

Δυναμικός προγραμματισμός για δέντρα

Δυναμικός προγραμματισμός για δέντρα ΘΕ5 Ιδιότητες Δέντρων και Αναδρομή για Δέντρα Δυναμικός προγραμματισμός για δέντρα Έστω ότι, για k=1,..., m, το γράφημα Γ k = (V k, E k ) είναι δέντρο. Έστω w V 1... V m, z k V k, για k=1,..., m. Συμβολίζουμε

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

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

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

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

Κεφάλαιο 11: Οι πίνακες ως δομή δεδομένων

Κεφάλαιο 11: Οι πίνακες ως δομή δεδομένων Κεφάλαιο 11: Οι πίνακες ως δομή δεδομένων Οι πίνακες (arrays) είναι μία πολύτιμη δομή δεδομένων, ένα πολύ χρήσιμο εργαλείο το οποίο συναντά κανείς σε οποιαδήποτε γλώσσα προγραμματισμού έχει νόημα να το

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

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

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

2. Να γράψετε έναν αριθμό που είναι μεγαλύτερος από το 3,456 και μικρότερος από το 3,457.

2. Να γράψετε έναν αριθμό που είναι μεγαλύτερος από το 3,456 και μικρότερος από το 3,457. 1. Ένα κεφάλαιο ενός βιβλίου ξεκινάει από τη σελίδα 32 και τελειώνει στη σελίδα 75. Από πόσες σελίδες αποτελείται το κεφάλαιο; Αν το κεφάλαιο ξεκινάει από τη σελίδα κ και τελειώνει στη σελίδα λ, από πόσες

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

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

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

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

Βασικές Έννοιες Υπολογιστών

Βασικές Έννοιες Υπολογιστών Άδεια Χρήσης Creative Commons, Αναφορά Προέλευσης 3.0 Ελλάδα 2009-2010, Βουρλάκος Μιχαήλ Βασικές Έννοιες Υπολογιστών Οι Ηλεκτρονικοί Υπολογιστές στις μέρες μας, μας βοηθούν να κάνουμε πάρα πολλές εργασίες

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

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

Επαναληπτικές Διαδικασίες Επαναληπτικές Διαδικασίες Οι επαναληπτικές δομές ( εντολές επανάληψης επαναληπτικά σχήματα ) χρησιμοποιούνται, όταν μια ομάδα εντολών πρέπει να εκτελείται αρκετές- πολλές φορές ανάλογα με την τιμή μιας

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

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών TINΑ ΒΡΕΝΤΖΟΥ www.ma8eno.gr www.ma8eno.gr Σελίδα 1 Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Στους πραγματικούς αριθμούς ορίστηκαν οι

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

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

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

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

Ακολουθίες ΕΝΟΤΗΤΑ. Στην ενότητα αυτή θα μάθουμε: Να ορίζουμε την ακολουθία. Να ορίζουμε τι είναι όρος ακολουθίας.

Ακολουθίες ΕΝΟΤΗΤΑ. Στην ενότητα αυτή θα μάθουμε: Να ορίζουμε την ακολουθία. Να ορίζουμε τι είναι όρος ακολουθίας. ΕΝΟΤΗΤΑ Ακολουθίες Στην ενότητα αυτή θα μάθουμε: Να ορίζουμε την ακολουθία. Να ορίζουμε τι είναι όρος ακολουθίας. Να αναπαριστούμε τις ακολουθίες με διάφορους τρόπους. Να βρίσκουμε τον επόμενο όρο ή τον

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

Αλγόριθμοι για αυτόματα

Αλγόριθμοι για αυτόματα Κεφάλαιο 8 Αλγόριθμοι για αυτόματα Κύρια βιβλιογραφική αναφορά για αυτό το Κεφάλαιο είναι η Hopcroft, Motwani, and Ullman 2007. 8.1 Πότε ένα DFA αναγνωρίζει κενή ή άπειρη γλώσσα Δοθέντος ενός DFA M καλούμαστε

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

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ ΜΑΘΗΜΑΤΙΚΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΣΠΟΥΔΩΝ ΚΑΙ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ (Α ΜΕΡΟΣ: ΣΥΝΑΡΤΗΣΕΙΣ) Επιμέλεια: Καραγιάννης Ιωάννης, Σχολικός Σύμβουλος Μαθηματικών

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

Υπολογισμός αθροισμάτων

Υπολογισμός αθροισμάτων Υπολογισμός αθροισμάτων Τα αθροίσματα θα τα δημιουργούμε σαν συναρτήσεις και θα τα αποθηκεύουμε σε αρχείο (m-file) με την ίδια ονομασία με τη συνάρτηση. Για να δημιουργήσουμε ένα άθροισμα ξεκινάμε μηδενίζοντας

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων ΕΠΛ 1 Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 009 Κατ οίκον Εργασία 1 Σκελετοί Λύσεων Άσκηση 1 Αρχικά θα πρέπει να υπολογίσουμε τον αριθμό των πράξεων που μπορεί να εκτελέσει ο υπολογιστής σε μια ώρα,

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

Πρόβλημα 37 / σελίδα 207

Πρόβλημα 37 / σελίδα 207 Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση

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

Α.2.1 Η ΕΝΝΟΙΑ ΤΟΥ ΚΛΑΣΜΑΤΟΣ

Α.2.1 Η ΕΝΝΟΙΑ ΤΟΥ ΚΛΑΣΜΑΤΟΣ ΚΕΦΑΛΑΙΟ Ο ΚΛΑΣΜΑΤΑ Α.. Η ΕΝΝΟΙΑ ΤΟΥ ΚΛΑΣΜΑΤΟΣ ΜΕΘΟΔΟΛΟΓΙΑ ΣΥΓΚΡΙΣΗ ΚΛΑΣΜΑΤΟΣ ΜΕ ΤΟ Αν ο αριθμητής ενός κλάσματος είναι μεγαλύτερος από τον παρανομαστή, τότε το κλάσμα είναι μεγαλύτερο από το. Αν ο αριθμητής

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4» 1. Τι φαντάζεστε ότι θα κάνει η παρακάτω εντολή: print("καλημέρα.") εκτελέστε την στο περιβάλλον Python Shell 2. γράψτε μια παρόμοια π.χ. print("το όνομα μου είναι Μποντ.") 3. Γράψτε μία εντολή που να

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

4.2 ΔΙΑΙΡΕΣΗ ΠΟΛΥΩΝΥΜΩΝ

4.2 ΔΙΑΙΡΕΣΗ ΠΟΛΥΩΝΥΜΩΝ 4 ΔΙΑΙΡΕΣΗ ΠΟΛΥΩΝΥΜΩΝ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΘΕΩΡΗΜΑ (ΤΑΥΤΟΤΗΤΑ ΤΗΣ ΔΙΑΙΡΕΣΗΣ) Για κάθε ζεύγος πολυωνύμων ( και ( με ( 0 υπάρχουν δυο μοναδικά πολυώνυμα ( και (, τέτοια ώστε : ( ( όπου το ( ή είναι το μηδενικό

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

ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης.

ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης. ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, 17-10-13 Μ. Παπαδημητράκης. 1 Την προηγούμενη φορά αναφέραμε (και αποδείξαμε στην περίπτωση n = 2) το θεώρημα που λέει ότι, αν n N, n 2, τότε για κάθε y 0 υπάρχει μοναδική μηαρνητική

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

Κεφάλαιο 13: Φτιάχνοντας παιχνίδια

Κεφάλαιο 13: Φτιάχνοντας παιχνίδια Κεφάλαιο 13: Φτιάχνοντας παιχνίδια Σε αυτό το κεφάλαιο θα διασκεδάσουμε λίγο. Όχι ότι περάσαμε άσχημα στα προηγούμενα, αλλά νομίζω ότι εδώ θα περάσουμε ακόμα καλύτερα. Θα συνδυάσουμε το τερπνόν μετά του

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

Προγραμματιστικό Περιβάλλον

Προγραμματιστικό Περιβάλλον Προγραμματιστικό Περιβάλλον Προγραμματίζοντας τις βασικές αριθμητικές πράξεις 2 ο Γυμνάσιο Παλλήνης Καθηγήτρια: Ευφροσύνη Σκιαδά Πρόσθεση Αφαίρεση Πολλαπλασιασμός Σύμβολα αριθμητικών πράξεων Διαίρεση Τι

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

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο. Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο. Πού χρειάζεται; Πολλές μαθηματικές συναρτήσεις ορίζονται αναδρομικά. Δεν είναι

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