Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

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

Download "Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων"

Transcript

1 Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων Παράδοση 4/1/019, Νίκος Παπασπύρου. Εξερεύνηση χώρου καταστάσεων (συνέχεια) 1. Συνεχίζουμε το γρίφο του λύκου, της κατσίκας και του λάχανου που αρχίσαμε στην προηγούμενη παράδοση. Έχουμε μοντελοποιήσει τις καταστάσεις του προβλήματος και τώρα είμαστε έτοιμοι να εξερευνήσουμε τον χώρο των καταστάσεων για να βρούμε τη λύση του γρίφου. Ξεκινώντας από την αρχική κατάσταση, βρήκαμε ποιες καταστάσεις είναι προσβάσιμες μετά από δύο μετακινήσεις του ανθρώπου: left: wolf & goat, right: cabbage & man left: cabbage & wolf & man & goat, right: left: wolf & man & goat, right: cabbage left: cabbage & goat, right: wolf & man left: cabbage & wolf & man & goat, right: left: cabbage & man & goat, right: wolf left: cabbage & goat & wolf, right: man left: cabbage & goat & man & wolf, right: left: cabbage & wolf, right: goat & man left: cabbage & goat & man & wolf, right: left: cabbage & man & wolf, right: goat. Το αποτέλεσμα αυτό μας επισημαίνει τα εξής: Δεν έχουμε μοντελοποιήσει κανένα χαρακτηρισμό των καταστάσεων. καταστάσεων είναι οι εξής: Δύο ενδιαφέρουσες περιπτώσεις Η τελική κατάσταση, στην οποία όλοι οι πρωταγωνιστές του γρίφου βρίσκονται στη δεξιά όχθη. Μη ασφαλείς καταστάσεις, στις οποίες είτε ο λύκος και η κατσίκα είτε η κατσίκα και το λάχανο βρίσκονται στη μία όχθη του ποταμού, ενώ ο άνθρωπος βρίσκεται στην άλλη. Δεν έχουμε κάποιο συστηματικό τρόπο εξερεύνησης των καταστάσεων. Δε θα πρέπει να σταματάμε μετά από δύο κινήσεις αλλά να εξερευνούμε οσοδήποτε μεγάλο πλήθος κινήσεων, μέχρι να φτάσουμε στην τελική κατάσταση. Κάποιες κινήσεις είναι άσκοπες. Π.χ. στις πρώτες δύο γραμμές της εκτύπωσης, ο άνθρωπος μεταφέρει το λάχανο στη δεξιά όχθη και στη συνέχεια επιστρέφει με αυτό στην αριστερή όχθη. Ο συνδυασμός των δύο αυτών κινήσεων είναι άσκοπος γιατί η κατάσταση που προκύπτει ως αποτέλεσμα είναι η αρχική. Κατά τη διάρκεια της εξερεύνησης, πρέπει να θυμόμαστε ποιες καταστάσεις έχουμε ήδη επισκεφθεί. 3. Πρώτα θα ορίσουμε τη μέθοδο success που θα επιστρέφει True αν μία κατάσταση είναι τελική. def success(self): return not self.left Η μέθοδος ελέγχει αν δεν υπάρχει κανείς στην αριστερή όχθη. Από αυτό συμπεραίνουμε ότι (εφόσον οι κινήσεις που γίνονται είναι νόμιμες) όλοι οι πρωταγωνιστές του γρίφου βρίσκονται στη δεξιά όχθη. 4. Στη συνέχεια θα ορίσουμε τη μέθοδο safe που θα επιστρέφει True αν μία κατάσταση είναι ασφαλής. def safe(self): def tragic(bank): BAD = [('cabbage', 'goat'), ('wolf', 'goat')] return 'man' not in bank and \ any(frozenset(pair) <= bank for pair in BAD) return not tragic(self.left) and not tragic(self.right) Εδώ ελέγχουμε αν συμβαίνει κάτι τραγικό (συνάρτηση tragic) είτε στην αριστερή είτε στη δεξιά όχθη του ποταμού. Το τραγικό θα είναι ο άνθρωπος να μη βρίσκεται σε αυτή την όχθη αλλά να βρίσκεται εκεί ένα από τα κακά ζευγάρια του γρίφου, δηλαδή είτε η κατσίκα και το λάχανο είτε ο λύκος και η κατσίκα. Προσέξτε τον τελεστή <= που συμβολίζει τη σχέση υποσυνόλου ( ), όταν εφαρμόζεται σε σύνολα. 1

2 5. Τώρα μπορούμε να συνδυάσουμε τις δύο αυτές μεθόδους με την εξερεύνηση δύο κινήσεων που γράψαμε, για να αποφύγουμε τις μη ασφαλείς καταστάσεις και για να σταματήσουμε αν η εξερεύνηση μάς οδηγήσει στην τελική κατάσταση (που δυστυχώς δε θα συμβεί τόσο εύκολα). for s in init.accessible(): if not s.safe(): continue print(s) for t in s.accessible(): if not t.safe(): continue print(" ", t) if t.success(): print("we're finished!") Το αποτέλεσμα του παραπάνω θα είναι τώρα το εξής: left: cabbage & wolf, right: goat & man left: goat & cabbage & man & wolf, right: left: cabbage & man & wolf, right: goat Αυτό σημαίνει ότι η πρώτη κίνηση είναι υποχρεωτική: ο άνθρωπος πρέπει να μεταφέρει την κατσίκα στη δεξιά όχθη. Στη συνέχεια μπορεί είτε να επιστρέψει με την κατσίκα (αργότερα θα αποκλείσουμε αυτή την κίνηση ως άσκοπη) ή να επιστρέψει μόνος του. 6. Προτού προχωρήσουμε στην πιο συστηματική εξερεύνηση του χώρου των καταστάσεων, θα χρειαστεί να ασχοληθούμε με τη σχέση ισότητας των καταστάσεων. Πότε δύο καταστάσεις είναι ίσες; Οι καταστάσεις είναι αντικείμενα στην Python και την απάντηση σε αυτή την ερώτηση πρέπει να τη δούμε γενικότερα. Αν x και y είναι δύο αντικείμενα, ο έλεγχος ισότητας x!= y καλεί αυτόματα την ειδική μέθοδο eq του αντικειμένου x, περνώνας ως παράμετρο το αντικείμενο y. (Το ίδιο συμβαίνει και με τους άλλους τελεστές σύγκρισης, που έχουν αντίστοιχες μεθόδους.) Για τα προκαθορισμένα αντικείμενα της Python (π.χ. int, str, λίστες, σύνολα, κ.λπ.), η μέθοδος αυτή είναι ορισμένη να συμπεριφέρεται όπως κανείς περιμένει (π.χ. δύο σύνολα είναι ίσα όταν έχουν ακριβώς τα ίδια στοιχεία). Για αντικείμενα που ορίζουμε εμείς, όπως αυτά της κλάσης state παραπάνω, η default μέθοδος eq κάνει κάτι πολύ απλό: συγκρίνει το id των αντικειμένων (δηλαδή τη διεύθυνσή τους) στη μνήμη. Επομένως, αν έχουμε: init1 = state(['man', 'cabbage', 'goat', 'wolf'], []) init = state(['man', 'cabbage', 'goat', 'wolf'], []) print("init1 has id", id(init1)) print("init has id", id(init)) print(init1 == init) το αποτέλεσμα της σύγκρισης θα είναι False γιατί πρόκειται για δύο διαφορετικά αντικείμενα (δηλαδή δύο αντικείμενα που κατασκευάστηκαν με δύο διαφορετικές κλήσεις του κατασκευαστή): init1 has id init has id False Αυτό φυσικά δεν μας εξυπηρετεί, γιατί στο μυαλό μας οι δύο καταστάσεις init1 και init είναι ίσες, εφόσον οι πρωταγωνιστές του γρίφου βρίσκονται στις ίδιες θέσεις και στις δύο. 7. Για να το διορθώσουμε αυτό, ορίζουμε την ειδική μέθοδο eq της κλάσης state ως εξής: def eq (self, other): return self.left == other.left Δύο καταστάσεις είναι ίσες αν και μόνο αν τα σύνολα όσων βρίσκονται στην αριστερή όχθη είναι ίσα. Το αποτέλεσμα της παραπάνω σύγκρισης τώρα θα είναι True, παρότι τα id των δύο αντικειμένων θα είναι διαφορετικά. 8. Προσέξτε ότι στην Python, εν αντιθέσει με τις γλώσσες που διαθέτουν στατικό σύστημα τύπων, οποιαδήποτε δύο αντικείμενα μπορούν να συγκριθούν μεταξύ τους, π.χ. το αποτέλεσμα της έκφρασης [3] == "hello" είναι False. Η μέθοδος eq που ορίσαμε παραπάνω θα οδηγήσει σε εξαίρεση, αν το δεύτερο αντικείμενο (other) δεν είναι κατάσταση (για την ακρίβεια, αν δε διαθέτει πεδίο left). Για να επιτρέπουμε τη σύγκριση και με αντικείμενα άλλων κλάσεων, θα ήταν καλύτερα να ορίσουμε την eq ως εξής:

3 def eq (self, other): return isinstance(other, state) and self.left == other.left Η συνάρτηση isinstance ελέγχει αν η πρώτη παράμετρος είναι ένα αντικείμενο προερχόμενο από την κλάση που δίνεται στη δεύτερη παράμετρο. 9. Για τη συστηματική εξερεύνηση του χώρου των καταστάσεων θα εφαρμόσουμε την τεχνική της αναζήτησης κατά πλάτος (breadth-first search, BFS). Η βασική ιδέα είναι ότι χρησιμοποιούμε μία ουρά, στην οποία αρχικά τοποθετούμε την αρχική κατάσταση. Στη συνέχεια, όσο η ουρά δεν είναι άδεια, αφαιρούμε το πρώτο στοιχείο της ουράς, βρίσκουμε τις καταστάσεις που είναι προσβάσιμες από αυτήν και τις προσθέτουμε στο τέλος της ουράς. Με τον τρόπο αυτό εξασφαλίζουμε ότι θα επισκεφθούμε όλες τις καταστάσεις με τις ελάχιστες δυνατές κινήσεις, ξεκινώντας από την αρχική. Ορίζουμε μία συνάρτηση solve που εφαρμόζει τον αλγόριθμο του BFS όπως παραπάνω. Για την υλοποίηση της ουράς, χρησιμοποιεί την κλάση deque που ορίζεται στο module collections της βιβλιοθήκης της Python. Η συνάρτηση solve θα επιστρέψει την τελική κατάσταση, αν τη βρει. Αν αντίθετα η ουρά αδειάσει χωρίς να φτάσουμε στην τελική κατάσταση, τότε η συνάρτηση θα επιστρέψει χωρίς κάποια τιμή (δηλαδή θα επιστρέψει την τιμή None). from collections import deque def solve(): init = state(['man', 'cabbage', 'goat', 'wolf'], []) Q = deque([init]) while Q: s = Q.popleft() for t in s.accessible(): if t.success(): return t if t.safe(): Q.append(t) print(solve()) Το πρόγραμμά μας τώρα είναι σε θέση να βρει την τελική κατάσταση. Εκτυπώνει: left:, right: goat & man & wolf & cabbage 10. Στη συστηματική αναζήτηση του χώρου των καταστάσεων έχουμε παραβλέψει μία σημαντική λεπτομέρεια. Το παραπάνω πρόγραμμα επισκέπτεται την ίδια κατάσταση πολλές φορές. Για παράδειγμα, με δύο κινήσεις μπορεί να προκύψει και πάλι η αρχική κατάσταση αν ο άνθρωπος φύγει με την κατσίκα στην πρώτη κίνηση και επιστρέψει μαζί της στη δεύτερη. Αυτό έχει ως αποτέλεσμα να εξερευνούμε πολλές φορές τις ίδιες καταστάσεις η εύρεση της λύσης καθυστερεί πολύ. Ο μόνος λόγος που το πρόγραμμά μας λειτουργεί σωστά είναι ότι για αυτόν το γρίφο ο χώρος καταστάσεων είναι πολύ μικρός (όλες οι δυνατές καταστάσεις είναι 16 και οι ασφαλείς είναι μόνο 10). Για να περιορίσουμε την αναζήτηση έτσι ώστε να επισκεπτόμαστε κάθε κατάσταση ακριβώς μία φορά, πρέπει να προσθέτουμε όλες τις καταστάσεις που έχουν προστεθεί στην ουρά (ανεξαρτήτως αν έχουν αργότερα αφαιρεθεί) σε ένα σύνολο seen και να μην ξαναπροσθέτουμε στην ουρά κάποια κατάσταση που ανήκει ήδη στο σύνολο seen. Η προσθήκη του συνόλου των καταστάσεων που έχουμε επισκεφθεί είναι βασικό συστατικό του αλγορίθμου BFS. def solve(): init = state(['man', 'cabbage', 'goat', 'wolf'], []) Q = deque([init]) seen = set([init]) while Q: s = Q.popleft() for t in s.accessible(): if t.success(): return t if t.safe() and t not in seen: Q.append(t) seen.add(t) 3

4 11. Δυστυχώς το πρόγραμμά μας τώρα δεν τρέχει. Αποτυγχάνει με το εξής μήνυμα: Traceback (most recent call last): File "./.py", line 58, in <module> print(solve()) File "./.py", line 48, in solve seen = set([init]) TypeError: unhashable type: 'state' Το μήνυμα αυτό λέει ότι το αντικείμενο init που ανήκει στην κλάση state δεν μπορεί να τοποθετηθεί στο σύνολο seen γιατί ο τύπος (η κλάση) state δεν είναι hashable. Τα σύνολα στην Python υλοποιούνται με πίνακες κατακερματισμού (hash tables), δομές δεδομένων που εξασφαλίζουν σχεδόν σταθερό κόστος αναζήτησης, εισαγωγής και διαγραφής. Για να μπορεί κάποιο στοιχείο να εισαχθεί σε έναν πίνακα κατακερματισμού θα πρέπει να ορίζεται για αυτό η τιμή κάποιας συνάρτησης κατακερματισμού (hash function), που θα επιστρέφει για αυτό το στοιχείο έναν ακέραιο αριθμό. Στην Python, αυτό μπορεί να γίνει ορίζοντας για την κλάση state την ειδική μέθοδο hash, π.χ. ως εξής: def hash (self): return 4 # this is a very bad idea! Με τον τρόπο αυτό, η τιμή της συνάρτησης κατακερματισμού για κάθε κατάσταση είναι ίδια και ίση με 4. Αυτό δουλεύει μεν, αλλά είναι πολύ κακή ιδέα.¹ Η συνάρτηση κατακερματισμού είναι καλό να επιστρέφει διαφορετικές τιμές για διαφορετικές καταστάσεις. Ο ευκολότερος τρόπος να την ορίσουμε σωστά στην Python είναι να χρησιμοποιήσουμε την προκαθορισμένη συνάρτηση hash που ορίζεται για όλους τους βασικούς τύπους της Python και να την καλέσουμε για το πεδίο left της κατάστασης (ένα frozenset). Δεν είναι τυχαίο ότι επιλέξαμε ακριβώς αυτό το πεδίο που συμμετέχει στον έλεγχο ισότητας καταστάσεων. def hash (self): return hash(self.left) Τώρα, το πρόγραμμα θα έχει το ίδιο αποτέλεσμα με το προηγούμενο, δηλαδή οδηγείται στην τελική κατάσταση και την εκτυπώνει. Όμως, επειδή αποφεύγει να επισκέπτεται ξανά καταστάσεις που έχει ήδη δει, τοποθετεί στην ουρά συνολικά μόνο 9 καταστάσεις, αντί 113 καταστάσεων του προηγούμενου προγράμματος! Σε κάποιο πρόβλημα με μεγαλύτερο χώρο καταστάσεων, η διαφορά θα ήταν τεράστια και το πρώτο πρόγραμμα πρακτικά δε θα τερμάτιζε ποτέ. 1. Το τελευταίο μας θέμα, τώρα που υλοποιήσαμε σωστά το BFS, είναι ότι το πρόγραμμά μας εκτυπώνει την τελική κατάσταση, δε μας λέει όμως με ποια σειρά κινήσεων οδηγηθήκαμε εκεί, δηλαδή δε μας δίνει τη λύση του προβλήματος. Για πάρουμε τη λύση του προβλήματος πρέπει να γνωρίζουμε για κάθε κατάσταση την οποία επισκεπτόμαστε ποια ήταν η προηγούμενή της, δηλαδή ποια κίνηση μας οδήγησε σε αυτήν. Υπάρχουν (τουλάχιστον) δύο τρόποι να αποθηκεύσουμε αυτή την πληροφορία: Να την προσθέσουμε μέσα στις καταστάσεις: κάθε κατάσταση θα περιέχει ως επιπλέον πεδία την προηγούμενη κατάσταση (ή None, στην περίπτωση της αρχικής) και πιθανώς την κίνηση που μας οδήγησε εκεί (αν και θα μπορούσαμε εύκολα να την υπολογίζουμε). Να μετατρέψουμε το σύνολο seen σε ένα λεξικό, το οποίο για κάθε κατάσταση που έχουμε επισκεφθεί θα μας δίνει την προηγούμενή της κατάσταση. Στην παράδοση αποφασίσαμε να υλοποιήσουμε τη δεύτερη προσέγγιση. (Στη σελίδα του μαθήματος μπορείτε να δείτε το πλήρες πρόγραμμα και για την πρώτη προσέγγιση.) Η συνάρτηση solve και η κλήση της γίνονται τώρα: def solve(): init = state(['man', 'cabbage', 'goat', 'wolf'], []) Q = deque([init]) seen = {init: None} def solution(s): t = seen[s] ¹Αν διαβάσετε πώς λειτουργεί ένας πίνακας κατακερματισμού, θα καταλάβετε ότι με αυτή τη συνάρτηση όλες οι καταστάσεις θα προστίθενται στο ίδιο κελί του πίνακα και άρα αντί για σύνολο θα έχουμε στην πραγματικότητα μία λίστα το κόστος αναζήτησης, εισαγωγής και διαγραφής θα είναι γραμμικό, αντί σχεδόν σταθερό. 4

5 if t is None: return [s] return solution(t) + [s] while Q: s = Q.popleft() for t in s.accessible(): if t.success(): seen[t] = s return solution(t) if t.safe() and t not in seen: Q.append(t) seen[t] = s for s in solve(): print(s) Η εντολή seen = {init: None} ορίζει την αρχική τιμή του λεξικού. Περιέχει μόνο το κλειδί init (δηλαδή την αρχική κατάσταση), η οποία δεν έχει προηγούμενη (η τιμή που της αντιστοιχεί είναι None). Όταν επισκεφτόμαστε μία νέα κατάσταση, προσθέτουμε στο λεξικό την προηγούμενή της με την εντολή seen[t] = s. Προσέξτε τον έλεγχο t not in seen, που επιστρέφει True αν η κατασταση t δεν υπάρχει ως κλειδί στο λεξικό seen. Η συνάρτηση solution(s) αναλαμβάνει να επιστρέψει τη λίστα των καταστάσεων που οδηγούν στην κατάσταση s ξεκινώντας από την αρχική. Χρησιμοποιεί τις τιμές που έχουν αποθηκευθεί στο λεξικό seen και είναι αναδρομική. Τη γράφουμε έτσι γιατί γνωρίζουμε ότι η λίστα των κινήσεων είναι σχετικά μικρή αν ήταν μεγαλύτερη θα έπρεπε να τη γράψουμε αποδοτικότερα. Το πρόγραμμά μας τώρα εκτυπώνει τη σειρά των καταστάσεων από την αρχική μέχρι και την τελική: left: goat & man & cabbage & wolf, right: left: cabbage & wolf, right: goat & man left: man & cabbage & wolf, right: goat left: wolf, right: goat & man & cabbage left: goat & man & wolf, right: cabbage left: goat, right: man & cabbage & wolf left: goat & man, right: cabbage & wolf left:, right: goat & man & cabbage & wolf NumPy 1. Το NumPy είναι μία εξαιρετική βιβλιοθήκη της Python για επιστημονικούς υπολογισμούς. Μεταξύ άλλων υποστηρίζει: έναν αποδοτικό τύπο για N-διάστατους πίνακες δυνατότητα ενσωμάτωσης συναρτήσεων γραμμένων σε C/C++ ή Fortran χρήσιμες συναρτήσεις και αλγορίθμους (γραμμική άλγεβρα, μετασχηματισμός Fourier, γεννήτρια τυχαίων αριθμών, κ.λπ.). Για να το χρησιμοποιήσουμε, βεβαιωνόμαστε πρώτα ότι υπάρχει εγκατεστημένο στον υπολογιστή μας (το numpy δεν είναι πακέτο της βασική βιβλιοθήκης της Python). Συνήθως, το κάνουμε import και το μετονομάζουμε σε κάτι συντομότερο, π.χ. np, για διευκόλυνσή μας. import numpy as np 3. To NumPy υποστηρίζει ομογενείς πολυδιάστατους πίνακες (arrays), πολύ αποδοτικότερους από τις λίστες της Python. Παρακάτω φαίνεται εν τάχει ο τρόπος ορισμού και η βασική τους χρήση. Πρώτα ένας μονοδιάστατος πίνακας (διάνυσμα): >>> a = np.array([1,, 3]) >>> print(a) [1 3] >>> print(type(a)) <class 'numpy.ndarray'> 5

6 >>> print(a.ndim) 1 >>> print(a.shape) (3,) >>> print(a[1]) Προσέξτε ότι τα arrays είναι mutable και ότι η αρίθμηση των στοιχείων ξεκινάει από το μηδέν: >>> a[1] = 4 >>> print(a) [ 1 4 3] Στη συνέχεια ένας διδιάστατος πίνακας: >>> b = np.array([[1,, 3], [4, 5, 6]]) >>> print(b) [[1 3] [4 5 6]] >>> print(type(b)) <class 'numpy.ndarray'> >>> print(b.ndim) >>> print(b.shape) (, 3) >>> print(b[0][1]) >>> print(b[0, 1]) >>> b[0, 1] = 17 >>> print(b) [[ ] [ 4 5 6]] Τα πεδία ndim και shape των arrays μας δίνουν το πλήθος των διαστάσεων και το μέγεθος των πινάκων, αντίστοιχα. Προσέξτε ότι στον διδιάστατο πίνακα, τα b[0][1] και b[0, 1] είναι ισοδύναμα αναφέρονται στο δεύτερο στοιχείο της πρώτης γραμμής. Για την ακρίβεια, το b[0] αναφέρεται στην πρώτη γραμμή του πίνακα b: >>> print(b[0]) [ ] >>> print(b[0].shape) (3,) 4. Οι πίνακες λειτουργούν ως iterables: >>> for x in a:... print(x) Προσέξτε όμως ότι σε πολυδιάστατους πίνακες, το iterable αυτό διατρέχει μόνο την πρώτη διάσταση: >>> for x in b:... print(x)... [ ] [4 5 6] 6

7 δηλαδή τα δύο στοιχεία που τυπώθηκαν ήταν η πρώτη και η δεύτερη γραμμή αντίστοιχα. Μπορούμε να διατρέξουμε όλα τα στοιχεία ενός πολυδιάστατου πίνακα ως εξής: >>> for x in b.flat:... print(x) Οι πίνακες είναι ομογενείς δηλαδή όλα τους τα στοιχεία είναι του ίδιου τύπου. Αυτό είναι διαφορετικό από τη φιλοσοφία της Python, π.χ. οι λίστες της μπορούν να περιέχουν στοιχεία διαφορετικών τύπων. Το πεδίο dtype ενός πίνακα μας δείχνει το data type των στοιχείων του. >>> print(b.dtype) int64 To np.int64 είναι ο τύπος των 64-bit ακέραιων αριθμών. Είναι διαφορετικός από τον τύπο των ακεραίων στην Python (int), ο οποίος υποστηρίζει αριθμούς οσοδήποτε μεγάλους (bignums). Εξίσου χρήσιμος, αν όχι χρησιμότερος, είναι ο τύπος np.float64. >>> c = np.array([3.14,.78]) >>> print(c) [ ] >>> print(c.dtype) float64 6. Πίνακες με ιδιαίτερη μορφή και περιεχόμενο. Ο μηδενικός πίνακας: >>> z = np.zeros((3, 3)) >>> print(z) [[ ] [ ] [ ]] Προσέξτε ότι o πίνακας αυτός έχει στοιχεία με τύπο np.float64. Αν θέλαμε να έχουμε ακέραια μηδενικά, μπορούμε να δώσουμε τιμή στην (προαιρετική) παράμετρο dtype: >>> print(np.zeros((3, 3), dtype=np.int64)) [[0 0 0] [0 0 0] [0 0 0]] Το ίδιο ακριβώς μπορούμε να πάρουμε με dtype=int ο τύπος ακεραίων της Python αυτόματα μετατρέπεται σε np.int64 σε αυτή την περίπτωση. Ένας πίνακας γεμάτος με άσους, ή οποιοδήποτε άλλη σταθερά: >>> n = np.ones((3, 3)) >>> print(n) [[ ] [ ] [ ]] >>> f = np.full((3, 3), 4) >>> print(f) [[4 4 4] [4 4 4] [4 4 4]] 7

8 Μοναδιαίος πίνακας: >>> i = np.eye(3) >>> print(i) [[ ] [ ] [ ]] Πίνακες που αντιστοιχεί σε κάποιο range: >>> print(np.arange(10)) [ ] >>> print(np.arange(4, 10)) [ ] >>> print(np.arange(4, 10, )) [4 6 8] Πίνακας με τυχαίους αριθμούς, στο διάστημα [0, 1). >>> r = np.random.random((3, 3)) >>> print(r) [[ ] [ ] [ ]] 7. Slicing: Μία από τις χρησιμότερες λειτουργίες που υποστηρίζει το NumPy είναι η δυνατότητα να κόβουμε φέτες (slicing) πινάκων. Αυτό γίνεται με παρόμοια σύνταξή όπως αυτή που χρησιμοποιούμε π.χ. για φέτες λιστών στην Python >>> s = i[:, 1:3] >>> print(s) [[0. 0.] [1. 0.]] >>> print(s[1, 0]) 1.0 Εν αντιθέσει όμως με τις φέτες λιστών στην Python (που κάθε φέτα κατασκευάζει αντίγραφο των στοιχείων της αρχικής λίστας), στο NumPy οι φέτες είναι απλές όψεις (views) μέρους ενός πίνακα. Αυτό γίνεται αντιληπτό με το παρακάτω παράδειγμα, στο οποίο αλλάζουμε ένα στοιχείο της φέτας s και παρατηρούμε ότι αλλάζει και το αντίστοιχο στοιχείο του αρχικού πίνακα i: >>> s[1, 0] = 4 >>> print(s) [[ 0. 0.] [4. 0.]] >>> print(i) [[ ] [ ] [ ]] Αν θέλουμε να αντιγράψουμε μια φέτα (η οποιονδήποτε άλλο πίνακα) μπορούμε να χρησιμοποιήσουμε τη μέθοδο copy: >>> c = i[:, 1:3].copy() >>> c[1, 0] = 17 >>> print(c) [[ 0. 0.] [17. 0.]] >>> print(i) [[ ] [ ] [ ]] 8

9 Οι φέτες μπορούν να περιορίζονται και σε συγκεκριμένα στοιχεία μίας διάστασης. Προσέξτε τη διαφορά ανάμεσα στα παρακάτω: >>> print(i[, 1:3]) [0. 1.] >>> print(i[:3, 1:3]) [[0. 1.]] Το πρώτο είναι ένας μονοδιάστατος πίνακας, ενώ το δεύτερο ένας διδιάστατος πίνακας Mass indexing: Mπορούν να χρησιμοποιηθούν πίνακες ως indices σε έναν πίνακα. Δείτε το παρακάτω παράδειγμα: >>> i = np.eye(3) >>> print(i) [[ ] [ ] [ ]] >>> x = np.arange(3) >>> print(x) [0 1 ] >>> y = np.array([, 0, 1]) >>> print(y) [ 0 1] Χρησιμοποιώντας τα x και y ως indices στον πίνακα i παίρνουμε μία μονοδιάστατη όψη των στοιχείων i[0,], i[1,0] και i[,1] (δηλαδή των στοιχείων i[x[j], y[j]] for j in range(3)). >>> print(i[x, y]) [ ] Η όψη αυτή είναι mutable: >>> i[x, y] += 5 >>> print(i) [[ ] [ ] [ ]] 9. Boolean indexing: Μπορεί επίσης να χρησιμοποιηθεί ένας πίνακας μέσα σε μία λογική παράσταση. Στην περίπτωση αυτή, τα στοιχεία του πίνακα συμμετέχουν ένα προς ένα στη λογική παράσταση και κατασκευάζεται ένας πίνακας με τις λογικές τιμές: >>> j = i > 0 >>> print(j) [[ True False False] [False [False False True False] True]] Ο πίνακας j έχει ίδιες διαστάσεις με τον i και περιέχει True στις θέσεις όπου το αντίστοιχο στοιχείο του i είναι μεγαλύτερο του μηδέν. Τέτοιοι πίνακες όπως ο j μπορούν επίσης να χρησιμοποιηθούν για mass indexing: >>> print(i[j]) [ ] >>> print(i[i == 5]) [ ] >>> i[i==5] = 4 >>> print(i) [[ ] [ ] [ ]] 9

10 10. Αριθμητική πινάκων: Οι πίνακες μπορούν να χρησιμοποιηθούν σε αριθμητικές πράξεις και στην περίπτωση αυτή οι πράξεις εφαρμόζονται στα στοιχεία τους ένα προς ένα: >>> print(x) [0 1 ] >>> print(y) [ 0 1] >>> print(x+y) [ 1 3] >>> print(x*y) [0 0 ] Προσέξτε ότι στην τελευταία εντολή υπολογίζεται το γινόμενο των επιμέρους στοιχείων των πινάκων x και y, που προφανώς είναι διαφορετικό τόσο από το γινόμενο πινάκων όσο και από το εσωτερικό γινόμενο. Αν θέλουμε το εσωτερικό γινόμενο των διανυσμάτων x και y μπορούμε να χρησιμοποιήσουμε τη συνάρτηση np.dot ή τον >>> print(np.dot(x, y)) >>> y) Πολλές ακόμη συναρτήσεις ορίζονται στο NumPy, π.χ. >>> print(np.sqrt(x)) [ ] Ο ανάστροφος ενός πίνακα κατασκευάζεται με τη συνάρτηση np.transpose ή με την εξής συντομοτραφία: >>> print(np.transpose(i)) [[ ] [ ] [ ]] >>> print(i.t) [[ ] [ ] [ ]] Προσέξτε ότι και ο ανάστροφος είναι απλά μία όψη του πίνακα: >>> i.t[0, 1] = 17 >>> i.t array([[ 1., 17., 0.], [ 0., 1., 4.], [4., 0., 1.]]) >>> i array([[ 1., 0., 4.], [17., 1., 0.], [ 0., 4., 1.]]) 11. Tiling: Έστω ότι έχουμε ένα διδιάστατο πίνακα x και έναν μονοδιάστατο πίνακα v: >>> x = np.array([[1,,3], [4,5,6], [7,8,9], [10, 11, 1]]) >>> print(x) [[ 1 3] [ 4 5 6] [ 7 8 9] [ ]] >>> v = np.array([1, 0, 1]) >>> print(v) [1 0 1] 10

11 Θέλουμε να κατασκευάσουμε έναν πίνακα y προσθέτοντας τον πίνακα v σε κάθε γραμμή του x. Για να το κάνουμε αυτό, μπορούμε πρώτα να κατασκευάσουμε έναν άδειο πίνακα με τις ίδιες διαστάσεις όπως ο x και στη συνέχεια να αναθέσουμε το σωστό άθροισμα σε κάθε γραμμή του: >>> y = np.empty_like(x) >>> for i in range(4):... y[i] = x[i] + v... >>> print(y) [[ 4] [ 5 5 7] [ ] [ ]] Είναι όμως πολύ αποδοτικότερο, αντί να χρησιμοποιήσουμε ένα for loop, να μεγαλώσουμε τον πίνακα v αντιγράφοντάς τον σε τέσσερις γραμμές και κατασκευάζοντας έτσι ένα διδιάστατο πίνακα 4 3: >>> z = np.tile(v, (4, 1)) >>> print(z) [[1 0 1] [1 0 1] [1 0 1] [1 0 1]] Στη συνέχεια, μπορούμε να προσθέσουμε τους πίνακες x και z και να πάρουμε το ίδιο αποτέλεσμα με πριν: >>> y = x + z >>> print(y) [[ 4] [ 5 5 7] [ ] [ ]] Ένα ακόμη παράδειγμα πλακόστρωσης (tiling), σε δύο διαστάσεις αυτή τη φορά: >>> print(x) [[ 1 3] [ 4 5 6] [ 7 8 9] [ ]] >>> print(np.tile(x, (, 3))) [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]] 1. Το παραπάνω tiling του πίνακα v μπορεί να αποφευχθεί, χάρη σε ένα μηχανισμό που το NumPy ονομάζει broadcasting: >>> y = x + v >>> print(y) [[ 4] [ 5 5 7] [ ] [ ]] 11

12 Το broadcasting καθορίζει πώς γίνονται οι πράξεις μεταξύ πινάκων με διαφορετικό σχήμα. Αυτό που συμβαίνει συνηθέστερα είναι ότι ο μικρότερος πίνακας μεγαλώνει για να φτάσει σε διαστάσεις τον μεγαλύτερο. Είναι η ίδια διαδικασία που ακολουθείται και όταν στις πράξεις συμμετέχουν αριθμοί αντί πινάκων: >>> a = np.array([1,, 3]) >>> b = np.array([,, ]) >>> print(a*b) [ 4 6] >>> b = >>> print(a*b) [ 4 6] Περισσότερα για το broadcasting και τις εφαρμογές του μπορείτε να βρείτε στην αντίστοιχη τεκμηρίωση του NumPy. 13. Reshaping: Μπορούμε να φτιάξουμε μία όψη διαφορετικού σχήματος με τη μέθοδο reshape: >>> a = np.arange(15) >>> print(a) [ ] >>> s = a.reshape(3, 5) >>> print(s) [[ ] [ ] [ ]] Προσέξτε όμως ότι και πάλι πρόκειται για όψη, όχι αντίγραφο: >>> s[1, 1] = 4 >>> print(s) [[ ] [ ] [ ]] >>> print(a) [ ] 1

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων Παράδοση 1/1/2019, Νίκος Παπασπύρου. Εργαστηριακή εξέταση, πρόβλημα bigpair Δίνονται δύο ακολουθίες a(1),..., a(n) και b(1),..., b(m), αποτελούμενες

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

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Σημειωματάριο Τετάρτης 18 Οκτ. 2017 Σημειωματάριο Τετάρτης 18 Οκτ. 2017 Περισσότερα για λίστες και ανακύκλωση Είδαμε σήμερα διάφορα προβλήματα και λύσεις για λίστες. Είδαμε επίσης την ανακύκλωση while. Στο επόμενο βλέπουμε πώς μπορούμε να

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

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

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

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

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

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

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Εισαγωγή στον Προγ/μό Υπολογιστών Εισαγωγή στον Προγ/μό Υπολογιστών Διάλεξη 1 Εκφράσεις, κλητικές εκφράσεις, ονόματα Περιεχόμενα Εκφράσεις (expressions) Τελεστές (operators) της Python Κλητικές εκφράσεις (call expressions) Ονόματα (names)

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

Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος Θεωρία Πληροφορίας - Κώδικες Γιαννακόπουλος Θεόδωρος 1 Θεωρία Πληροφορίας - Κώδικες Εργαστήριο 2 Numpy, matplotlib και παραδείγματα 2 Numpy (1) - Γενικά - numpy: numerical python - η βασική βιβλιοθήκη

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό 1 Εισαγωγή Σκεφτείτε έναν αριθμό από το 1 έως το 1000 και απαντήστε στην ερώτηση: Ο αριθμός που σκεφτήκατε είναι μεγαλύτερος

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

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων Παράδοση 31/1/2019, Νίκος Παπασπύρου. SciPy Το SciPy είναι ένα open-source οικοσύστημα της Python για μαθηματικά, επιστημονικούς υπολογισμούς

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

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

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Εισαγωγή στον Προγ/μό Υπολογιστών Εισαγωγή στον Προγ/μό Υπολογιστών Διάλεξη 7 Ακολουθίες (Sequences) Περιεχόμενα 1. Ακολουθίες 2. Λίστα (list) 3. Επαναληπτικοί υπολογισμοί ακολουθιών 4. Επεξεργασία ακολουθιών 5. Τελεστές ακολουθιών 6.

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

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

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

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

Γλώσσα προγραμματισμού python

Γλώσσα προγραμματισμού python Προηγούμενο Σημειώσεις Επόμενο Γλώσσα προγραμματισμού python Η γλώσσα αυτή γράφτηκε από τον Ολλανδό προγραμματιστή Guido van Rossum στα τέλη της δεκαετίας 1980-90. Η έκδοση 2.0 δημοσιεύτηκε στις 16 Οκτωβρίου

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

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

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

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

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

Βασικά Στοιχεία Python 3

Βασικά Στοιχεία Python 3 Βασικά Στοιχεία Python 3 Compiler Lecture s 1.0 documentation Βασικά Στοιχεία Python 3 Στη συνέχεια παρουσιάζονται ορισμένα ενδιαφέροντα στοιχεία της Python 3. Αυτό που ακολουθεί δεν είναι tutorial, αν

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη Εργ. 3 17:15 και 19:15

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη Εργ. 3 17:15 και 19:15 Βασικές Ασκήσεις από τα Εργαστήρια της Python Πέμπτη Εργ. 3 17:15 και 19:15 Αντί να χρησιμοποιούμε πολλές ομοειδείς μεταβλητές του ίδιου τύπου, όπως παραδείγματος χάριν, οι 7 μέσες θερμοκρασίες μίας εβδομάδας,

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ 2 στον Προγραμματισμό Υπολογιστών ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

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

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

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής Διάλεξη 1 Πράξεις Τελεστές Έλεγχος Ροής Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Αριθμητικοί Τελεστές- Αριθμητικές Πράξεις 2 Internal use only Αριθμητικοί

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

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

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 Αναζήτηση και Ταξινόμηση Βασικές λειτουργίες σε προγράμματα Αναζήτηση (searching): Βρες ένα ζητούμενο στοιχείο σε μια

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

Διορθώσεις σελ

Διορθώσεις σελ Διορθώσεις σελ. 73-74 # Τώρα ο άνθρωπος σκέφτεται έναν αριθμό από 1 έως 1000 Ν = 1000 print Σκέψου έναν αριθμό από το 1 έως το, Ν guesses = 0 found = False first = 1 last = N while not found and guesses

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

print( x is positive ) Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από το χρήστη:

print( x is positive ) Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από το χρήστη: 37 ΛΑΜΒΑΝΟΝΤΑΣ ΑΠΟΦΑΣΕΙΣ 1. Εκτέλεση υπό συνθήκη if x >0: print('x is positive') x > = 0 print( x is positive ) Σχήμα: Η λογική του if then Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1 Κατακερματισμός 4/3/2009 Μ.Χατζόπουλος 1 H ιδέα που βρίσκεται πίσω από την τεχνική του κατακερματισμού είναι να δίνεται μια συνάρτησης h, που λέγεται συνάρτηση κατακερματισμού ή παραγωγής τυχαίων τιμών

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

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ Σύνολο στοιχείων ίδιου τύπου (1/2) Ένα σύνολο στοιχείων ίδιου τύπου διακρίνεται σε δύο κατηγορίες με βάση τη διάσταση: Μονοδιάστατο Αν μπορούμε να θεωρούμε ότι τα στοιχεία είναι συνεχόμενα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις.

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αλφαριθμητικά Χειμερινό Εξάμηνο 2016

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

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

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

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

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

Κλάσεις στην Python. Δημιουργία κλάσεων

Κλάσεις στην Python. Δημιουργία κλάσεων Κλάσεις στην Python Στον προγραμματισμό γενικά προσπαθούμε να αποφεύγουμε τις επαναληπτικές εργασίες. Προσπαθούμε να γράφουμε κώδικα μία φορά και να τον χρησιμοποιούμε ξανά. Η αποφυγή της επανάληψης κώδικα

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης Προγραμματισμός Υπολογιστών & Κ.Π. Γιαλούρης Στόχοι του σημερινού μαθήματος Εξοικείωση με τα περιβάλλοντα της Python Κατανόηση βασικών εννοιών & τεχνικών Τύπος δεδομένων Μεταβλητή Εντολή ανάθεση τιμής

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

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ KAI ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ ΠΕΜΠΤΗ 26 ΣΕΠΤΕΜΒΡΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

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

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

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

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

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

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017 Σημειωματάαριο Δευτέρας 16 Οκτ. 2017 Λίστες και ανακύκλωση for Είδαμε στην αρχή (ξανά) μερικά βασικά πράγματα για λίστες. Λίστα είναι μια πεπερασμένη ακολουθία από αντικείμενα (αριθμούς, strings, άλλες

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ. Δημητρακάκης Συναρτήσεις (Functions) Στον προγραμματισμό,

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

Κατακερματισμός (Hashing)

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

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

Βασικές Ασκήσεις από τα Εργαστήρια της PYTHON (εβδομάδα 5)

Βασικές Ασκήσεις από τα Εργαστήρια της PYTHON (εβδομάδα 5) Βασικές Ασκήσεις από τα Εργαστήρια της PYTHON (εβδομάδα 5) Η Python επιτρέπει να χρησιμοποιούμε πολλές μεταβλητές οποιουδήποτε τύπου στην αριστερή πλευρά μίας καταχώρισης, αρκεί ο αριθμός των τιμών ή μεταβλητών

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ ΠΑΡΑΣΚΕΥΗ 22 ΣΕΠΤΕΜΒΡΙΟΥ 2017 ΘΕΜΑ Α ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ:

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα 3 Φύλλο Εργασίας 3 Στο φύλλο εργασιών 3 θα ασχοληθούμε με τις λίστες μια δομή της γλώσσας python που έχει την δομή ενός πίνακα. Θα χρησιμοποιήσουμε τις βασικές εντολές από τις λίστες και θα κατασκευάσουμε

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

Σημειωματάριο Τετάρτης 4 Οκτ. 2017

Σημειωματάριο Τετάρτης 4 Οκτ. 2017 Σημειωματάριο Τετάρτης 4 Οκτ. 2017 Strings (λέξεις) Ένας από τους κύριους τύπους δεδομένων στην Python είναι τα strings (κείμενα, λέξεις). Όταν γράφουμε ένα κείμενο σε απλά ή διπλά εισαγωγικά τότε αυτό

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

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου. ΜΑΘΗΜΑΤΑ PYTHON To 1991 o Guido van Rossman δημιούργησε την Python ως μια ανοιχτού λογισμικού ανεξάρτητη πλατφόρμας γενικού σκοπού γλώσσα προγραμματισμού (open source platformindependent). Είναι βασικά

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

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

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

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

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

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος Εργαστήρια Αριθμητικής Ανάλυσης Ι 4 ο Εργαστήριο Διανύσματα-Πίνακες 1 ο Μέρος 2017 Εισαγωγή Όπως έχουμε προαναφέρει σε προηγούμενα εργαστήρια. Ο βασικός τύπος δεδομένων στο Matlab είναι οι πίνακες. Ένα

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

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

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

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 4

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 4 ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 4 Λίστες (Lists) Λίστα (list) στην Python ονομάζεται μια δυναμική δομή δεδομένων (στην πραγματικότητα, ένα αντικείμενο) που περιέχει πολλαπλά δεδομένα. Ουσιαστικά, η λίστα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

Λογικές εκφράσεις και μεταβλητές

Λογικές εκφράσεις και μεταβλητές Προηγούμενο Σημειώσεις Επόμενο Λογικές εκφράσεις και μεταβλητές Μπορούμε να γράψουμε μία λογική έκφραση η οποία θα είναι είτε αληθής είτε ψευδής. Μία συνηθισμένη λογική έκφραση είναι αυτή που ελέγχει αν

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19 Βασικά στοιχεία γλώσσας προγραμματισμού Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19 Ας θυμηθούμε ξανά την παλιά μας «αγάπη» Η Python είναι μία σύγχρονη, διερμηνευόμενη, υψηλού επιπέδου γλώσσα γενικής χρήσης

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

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

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

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

Η αφετηρία είναι η συσκευή στην οποία η μπάλα βρίσκεται αρχικά. Έχει μόνο μία έξοδο. Ο σειριακός αριθμός της είναι.

Η αφετηρία είναι η συσκευή στην οποία η μπάλα βρίσκεται αρχικά. Έχει μόνο μία έξοδο. Ο σειριακός αριθμός της είναι. doll Mechanical Doll Η μηχανική κούκλα είναι μια κούκλα που αυτόματα επαναλαμβάνει μία συγκεκριμένη ακολουθία κινήσεων. Στην Ιαπωνία, μηχανικές κούκλες κατασκευάζονται από πολύ παλιά. Οι κινήσεις της μηχανικής

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

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση Πίνακες Διασποράς Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση κλειδί k T 0 1 2 3 4 5 6 7 U : χώρος πιθανών κλειδιών Τ : πίνακας μεγέθους

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

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