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

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

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

Transcript

1 ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 4 Λίστες (Lists) Λίστα (list) στην Python ονομάζεται μια δυναμική δομή δεδομένων (στην πραγματικότητα, ένα αντικείμενο) που περιέχει πολλαπλά δεδομένα. Ουσιαστικά, η λίστα είναι ένας τρόπος αποθήκευσης ενός συνόλου δεδομένων υπό ένα κοινό όνομα (το όνομα της λίστας). Οι λίστες έχουν πολλά κοινά χαρακτηριστικά με τους πίνακες άλλων γλωσσών προγραμματισμού. Η βασικότερή τους διαφορά από τους πίνακες των περισσοτέρων γλωσσών προγραμματισμού είναι ότι αποτελούν, όπως προαναφέρθηκε, δυναμικές δομές δεδομένων, δηλαδή τα περιεχόμενά τους μπορούν να αυξάνονται ή να μειώνονται κατά την εκτέλεση του προγράμματος (περισσότερες λεπτομέρειες θα αναφερθούν στη συνέχεια). Κάθε δεδομένο μιας λίστας ονομάζεται στοιχείο (element) της λίστας. Μια λίστα μπορεί να περιέχει στοιχεία διαφορετικών τύπων. Κάθε στοιχείο μιας λίστας έχει έναν δείκτη (index) που προσδιορίζει τη θέση του στη λίστα. Η αρίθμηση των δεικτών αυτών ξεκινάει από το 0. Δημιουργία λίστας i) Αναλυτικά λίστα = [στοιχείο_1, στοιχείο_2,... ] ή λίστα = [] για τη δημιουργία κενής λίστας. Π.χ., >>> list1 = [5, 10, 15, 20, 25] >>> print(list1) [5, 10, 15, 20, 25] >>> list2 = [10, 'Hello', 2.5, 100] >>> print(list2) [10, 'Hello', 2.5, 100] ii) Με χρήση του τελεστή επανάληψης * λίστα = [στοιχείο_1, στοιχείο_2,... ] * πλήθος_επαναλήψεων Ver Τμήμα Μαθηματικών ΕΚΠΑ 1

2 Π.χ., >>> list3 = [5, 2.5] * 5 >>> print(list3) [5, 2.5, 5, 2.5, 5, 2.5, 5, 2.5, 5, 2.5] >>> list3 = ['Hello', '!', 2015] * 2 >>> print(list3) ['Hello', '!', 2015, 'Hello', '!', 2015] >>> list4 = [0] * 10 >>> print(list4) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] iii) Με χρήση της συνάρτησης list() Η συνάρτηση range, όπως αναφέρθηκε στην Ενότητα 2, επιστρέφει ένα αντικείμενο τιμών βρόχου, το οποίο είναι ένα αντικείμενο που περιέχει μία αλληλουχία τιμών, η οποία όμως δεν αποτελεί λίστα, με την έννοια της λίστας της Python. Μπορεί όμως να μετατραπεί σε κανονική λίστα, με τη χρήση της ενσωματωμένης συνάρτησης list της Python, δίνοντας έτσι άλλον έναν τρόπο δημιουργίας λιστών: ή λίστα = list(range(...)) λίστα = list() για τη δημιουργία κενής λίστας. Ουσιαστικά η συνάρτηση list δέχεται σε κάποια συγκεκριμένη δομή τις τιμές που θα περιέχει η λίστα, και τις αποθηκεύει σε δομή δεδομένων λίστας. Μπορεί να εφαρμοστεί σε οποιαδήποτε αλληλουχία τιμών και όχι μόνο σε τιμές βρόχου (περισσότερα για αυτό σε επόμενη ενότητα). Π.χ., >>> list5 = list(range(0,11,2)) >>> print(list5) [0, 2, 4, 6, 8, 10] >>> list6 = list() >>> print(list6) [] Προσπέλαση στοιχείων i) Με χρήση της εντολής for Π.χ., >>> list7 = [5, 10, 15, 20, 25, 30] >>> for x in list7: print(x) Ver Τμήμα Μαθηματικών ΕΚΠΑ 2

3 ii) Με χρήση δεικτών Όπως προαναφέρθηκε, κάθε στοιχείο μιας λίστας έχει έναν δείκτη, ανάλογα με τη θέση του στη λίστα. Η αρίθμηση των δεικτών ξεκινάει από το 0 και φτάνει έως το πλήθος των στοιχείων μείον 1. Η αναφορά σε συγκεκριμένο στοιχείο μιας λίστας μπορεί να γίνει ως εξής: Π.χ., λίστα[δείκτης_στοιχείου] >>> list8 = [2, -4, 6, -8, 10] >>> print(list8[0], list8[1], list8[2], list8[3], list8[4]) >>> for index in range(5): print(list8[index]) >>> index = 0 >>> while index < 5: print(list8[index]) index += Μπορούν να χρησιμοποιηθούν και αρνητικές τιμές στους δείκτες μιας λίστας. Ως θέση -1 θεωρείται η τελευταία θέση της λίστας, -2 η προτελευταία, κοκ. Π.χ., >>> print(list8[-1], list8[-2], list8[-3]) Σε περίπτωση που χρησιμοποιηθεί κάποια μη έγκυρη τιμή δείκτη, προκαλείται σφάλμα (ένας τύπος σφάλματος που λέγεται εξαίρεση και θα αναλυθεί σε επόμενη ενότητα). Π.χ. η παρακάτω εντολή προκαλεί σφάλμα γιατί δεν υπάρχει στοιχείο στη λίστα list8 με δείκτη 5 (το τελευταίο (5ο) στοιχείο της λίστας έχει δείκτη 4): >>> print(list8[5]) Traceback (most recent call last): File "<pyshell#38>", line 1, in <module> print(list8[5]) IndexError: list index out of range Ver Τμήμα Μαθηματικών ΕΚΠΑ 3

4 Πολύ χρήσιμη για την αποφυγή τέτοιου είδους σφαλμάτων, είναι η ενσωματωμένη συνάρτηση len της Python, η οποία επιστρέφει το μέγεθος μιας λίστας, δηλαδή το πλήθος των στοιχείων της: >>> items = len(list8) >>> print(items) 5 Έτσι, ο δείκτης του τελευταίου στοιχείου μιας λίστας είναι το: len(όνομα_λίστας) 1. Άρα, η παρακάτω εντολή που χρησιμοποιήθηκε προηγουμένως ως παράδειγμα: >>> for index in range(5): print(list8[index]) θα μπορούσε να γραφεί έτσι: >>> for index in range(len(list8)): print(list8[index]) iii) Με χρήση του τελεστή : για απομόνωση τμημάτων λίστας (τεμαχισμός λίστας) Προσπέλαση σε συγκεκριμένα τμήματα μιας λίστας μπορεί να γίνει με τη χρήση του τελεστή : ως εξής: Π.χ.: λίστα[αρχή:τέλος] τα στοιχεία της λίστας από το στοιχείο με δείκτη αρχή έως το στοιχείο με δείκτη τέλος-1. λίστα[:τέλος] τα στοιχεία της λίστας από το 1ο έως το στοιχείο με δείκτη τέλος-1. λίστα[αρχή:] τα στοιχεία της λίστας από το στοιχείο με δείκτη αρχή έως το τελευταίο στοιχείο. λίστα[αρχή:τέλος:βήμα] τα μη-συνεχόμενα στοιχεία της λίστας από το στοιχείο με δείκτη αρχή έως το στοιχείο με δείκτη τέλος-1 τα οποία απέχουν μεταξύ τους βήμα-1 θέσεις (δηλαδή ο δείκτης των στοιχείων που περιλαμβάνονται αυξάνεται κατά βήμα) >>> list9 = [10, 20, 30, 40, 50, 60, 70, 80] >>> print(list9[2:5]) [30, 40, 50] >>> print(list9[:3]) [10, 20, 30] >>> print(list9[4:]) [50, 60, 70, 80] >>> print(list9[1:7:2]) [20, 40, 60] >>> print(list9[-3:]) [60, 70, 80] >>> print(list9[:-3]) [10, 20, 30, 40, 50] Ver Τμήμα Μαθηματικών ΕΚΠΑ 4

5 Σε περίπτωση που χρησιμοποιηθεί κάποια μη έγκυρη τιμή δείκτη, δεν προκαλείται κάποιο σφάλμα. Αν ο δείκτης τέλος προσδιορίζει θέση μετά το τέλος της λίστας, χρησιμοποιείται στη θέση του το μήκος της λίστας. Αν ο δείκτης αρχή προσδιορίζει θέση πριν την αρχή της λίστας, χρησιμοποιείται στη θέση του το 0. Αν ο δείκτης αρχή είναι μεγαλύτερος του δείκτη τέλος (και οι τιμές τους είναι θετικές), επιστρέφεται η κενή λίστα. Παράδειγμα Μέσος όρος τιμών λίστας: numbers = [1.5, 2, 1.2, 8.4, -2, -3.5] total = 0 for n in numbers: total += n avg = total/len(numbers) print(avg) Εκχώρηση νέων τιμών σε στοιχεία Οι λίστες είναι μεταβλητοί (mutable) τύποι, δηλαδή οι τιμές των στοιχείων τους μπορούν να αλλάξουν. Αυτό γίνεται με εκχώρηση τιμής σε συγκεκριμένο στοιχείο: Π.χ., λίστα[δείκτης] = τιμή >>> list10 = [1, 2, 3, 4, 5] >>> list10[1] = 20 >>> list10[3] = 40 >>> print(list10) [1, 20, 3, 40, 5] Σε αυτό το παράδειγμα, η ακόλουθη εντολή: >>> list10[5] = 100 προκαλεί σφάλμα, αφού δεν υπάρχει στοιχείο με δείκτη 5 στη λίστα. Άρα, η εκχώρηση τιμής σε στοιχεία της λίστας μπορεί να γίνει μόνο για τα υπάρχοντα στοιχεία της, και δεν αποτελεί τρόπο δημιουργίας νέων στοιχείων. Αρχικοποίηση λίστας Για να αρχικοποιηθούν τα στοιχεία μιας λίστας σε συγκεκριμένες τιμές, θα πρέπει πρώτα να δημιουργηθούν, με μία από τις διαδικασίες δημιουργίας λίστας. Π.χ., # Δημιουργία μιας λίστας με 5 στοιχεία. list11 = [0] * 5 # Εκχώρηση της τιμής 'θέση * 2' σε όλα τα στοιχεία της λίστας. # Με while: # Με for: index = 0 while index < len(list11): for index in range(len(list11)): list11[index] = 2*index list11[index] = 2*index index += 1 Ver Τμήμα Μαθηματικών ΕΚΠΑ 5

6 Εύρεση στοιχείων λίστας με τον τελεστή in Η έκφραση: στοιχείο in λίστα επιστρέφει True εάν το στοιχείο υπάρχει στη λίστα, και False σε διαφορετική περίπτωση. Π.χ., codes = ['U135', 'X979', 'A123', 'S888'] item = input('δώσε κωδικό προϊόντος: ') if item in codes: print('το', item, 'βρέθηκε στη λίστα.') else: print('το', item, 'δε βρέθηκε στη λίστα.') Αντίστοιχα, η έκφραση: στοιχείο not in λίστα ελέγχει εάν το στοιχείο δεν ανήκει στη λίστα. Μέθοδοι για λίστες Η Python περιέχει κάποιες μεθόδους που χρησιμοποιούνται για τη διαχείριση των λιστών. Μέθοδοι ονομάζονται κάποιοι ειδικοί τύποι συναρτήσεων που εφαρμόζονται με συγκεκριμένο τρόπο, ως εξής: λίστα.μέθοδος(...) Οι πιο σημαντικές μέθοδοι για λίστες είναι οι εξής: append(στοιχείο) Προσθέτει το στοιχείο στο τέλος της λίστας. index(στοιχείο) Επιστρέφει τον δείκτη του πρώτου στοιχείου του οποίου η τιμή ισούται με το στοιχείο. Αν το στοιχείο δεν υπάρχει στη λίστα, προκαλείται συγκεκριμένο σφάλμα (περισσότερα για αυτό σε επόμενη ενότητα που αναλύει τον Χειρισμό Εξαιρέσεων). insert(δείκτης, στοιχείο) Εισάγει το στοιχείο στη θέση που καθορίζει ο δείκτης. Όταν ένα στοιχείο εισάγεται στη λίστα, η λίστα επεκτείνεται σε μέγεθος για να συμπεριλάβει το νέο στοιχείο. Το στοιχείο που βρισκόταν προηγουμένως στη συγκεκριμένη θέση, και όλα τα στοιχεία μετά από αυτό, μετατοπίζονται κατά μία θέση προς το τέλος της λίστας. Αν καθοριστεί δείκτης πέρα από το τέλος της λίστας, το στοιχείο θα προστεθεί στο τέλος της λίστας. Αν ο δείκτης είναι αρνητικός και αναφέρεται σε μία μη-έγκυρη θέση, το στοιχείο θα προστεθεί στην αρχή της λίστας. Αν ο δείκτης είναι αρνητικός και αναφέρεται σε έγκυρη θέση (σύμφωνα με την αρνητική αρίθμηση των δεικτών, όπου το -1 αναφέρεται στην τελευταία θέση, το -2 στην προτελευταία θέση κοκ), τότε το στοιχείο θα προστεθεί στην προηγούμενη θέση από αυτή στην οποία αναφέρεται ο αρνητικός δείκτης. Αυτό συμβαίνει γιατί πρώτα δημιουργείται μια νέα θέση στη λίστα για να προστεθεί το νέο στοιχείο (μετατοπίζοντας τα στοιχεία δεξιά της καθοριζόμενης θέσης κατά μία θέση δεξιά) και στη συνέχεια προστίθεται το στοιχείο. Το ίδιο ακριβώς συμβαίνει και στην περίπτωση καθορισμού θέσης με θετικό δείκτη, αλλά στην περίπτωση αρνητικού δείκτη τελικά το νεοεισερχόμενο στοιχείο καταλήγει μία θέση αριστερά της θέσης που καθορίστηκε με τον αρνητικό δείκτη. sort() Ταξινομεί τα στοιχεία της λίστας σε αύξουσα σειρά (από τη μικρότερη προς τη μεγαλύτερη τιμή ή αλφαβητικά αν πρόκειται για συμβολοσειρές). Ver Τμήμα Μαθηματικών ΕΚΠΑ 6

7 sort(reverse=true) Ταξινομεί τα στοιχεία της λίστας σε φθίνουσα σειρά. remove(στοιχείο) Αφαιρεί από τη λίστα το στοιχείο στην πρώτη του εμφάνιση. Αν το στοιχείο δεν υπάρχει στη λίστα, προκαλείται συγκεκριμένο σφάλμα. reverse() Αντιστρέφει τη σειρά των στοιχείων στη λίστα. Π.χ. >>> list12 = [10, 20, 30, 40, 50] >>> list12.append(60) >>> print(list12) [10, 20, 30, 40, 50, 60] >>> list12.index(30) 2 >>> list12.index(35) Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> list12.index(35) ValueError: 35 is not in list >>> list12.insert(2,100) >>> print(list12) [10, 20, 100, 30, 40, 50, 60] >>> list12.insert(10,200) >>> print(list12) [10, 20, 100, 30, 40, 50, 60, 200] >>> list12.insert(-3,300) >>> print(list12) [10, 20, 100, 30, 40, 300, 50, 60, 200] >>> list12.insert(-15,400) >>> print(list12) [400, 10, 20, 100, 30, 40, 300, 50, 60, 200] >>> list12.sort() >>> print(list12) [10, 20, 30, 40, 50, 60, 100, 200, 300, 400] >>> list12.remove(60) >>> print(list12) [10, 20, 30, 40, 50, 100, 200, 300, 400] >>> list12.remove(70) Traceback (most recent call last): File "<pyshell#40>", line 1, in <module> list12.remove(70) ValueError: list.remove(x): x not in list >>> list12.reverse() >>> print(list12) [400, 300, 200, 100, 50, 40, 30, 20, 10] Ενσωματωμένες συναρτήσεις για λίστες και σχετικές εντολές Υπάρχουν τρεις πολύ χρήσιμες ενσωματωμένες συναρτήσεις που μπορούν να εφαρμοστούν σε αλληλουχίες τιμών, άρα και σε λίστες: min(λίστα) Επιστρέφει το ελάχιστο της λίστας max(λίστα) Επιστρέφει το μέγιστο της λίστας sum(λίστα) Επιστρέφει το άθροισμα των στοιχείων της λίστας Ver Τμήμα Μαθηματικών ΕΚΠΑ 7

8 Η εντολή del διαγράφει ένα στοιχείο από συγκεκριμένη θέση μιας λίστας, ως εξής: del λίστα(δείκτης) Π.χ., για τη λίστα list12 του τελευταίου παραδείγματος: [400, 300, 200, 100, 50, 40, 30, 20, 10] >>> del list12[1] >>> print(list12) [400, 200, 100, 50, 40, 30, 20, 10] Αντίγραφα λιστών Όταν μία λίστα εκχωρείται σε μια άλλη λίστα χρησιμοποιώντας τον τελεστή εκχώρησης, τότε δε δημιουργείται αντίγραφο της αρχικής λίστας, απλά η λίστα πλέον έχει δύο ονόματα. Αυτό φαίνεται από το ακόλουθο παράδειγμα: >>> list1 = [10, 20, 30, 40] >>> list2 = list1 >>> print(list2) [10, 20, 30, 40] >>> list1[1] = 99 >>> print(list1) [10, 99, 30, 40] >>> print(list2) [10, 99, 30, 40] δηλαδή, μεταβάλλοντας κάποια τιμή στη list1, μεταβάλλεται και η list2. Άρα, ουσιαστικά με αυτόν τον τρόπο δεν δημιουργείται αντίγραφο της λίστας. Αντίγραφο μιας λίστας (π.χ. της list1) μπορεί να δημιουργηθεί με τους εξής τρόπους: i) Με χρήση της μεθόδου append μέσα σε βρόχο for: list2 = [] for item in list1: list2.append(item) ii) Με χρήση του τελεστή + σε κενή λίστα: list2 = [] list2 += list1 ή με μία εντολή: list2 = [] + list1 iii) Με χρήση του τελεστή : ως εξής: list2 = list1[:] iv) Με χρήση της συνάρτησης list: list2 = list(list1) Ver Τμήμα Μαθηματικών ΕΚΠΑ 8

9 Σημείωση: Ο τελεστής + πραγματοποιεί συνένωση λιστών (περίπτωση (ii) προηγουμένως). Η πρακτική διαφορά του από τη μέθοδο append, εκτός του ότι ο τελεστής συνένωσης + εφαρμόζεται μεταξύ λιστών ενώ η append δέχεται στοιχείο λίστας, είναι ότι με τον τελεστή συνένωσης + μπορούν να προστεθούν πολλαπλά στοιχεία στο τέλος μιας λίστας, ενώ με τη συνάρτηση append προστίθεται ένα μόνο στοιχείο, ακόμα και αν αυτό αποτελεί ξεχωριστή λίστα. Άρα, π.χ.: >>> list3 = [1, 2, 3] >>> list4 = list3 + [4, 5] >>> list4 [1, 2, 3, 4, 5] >>> list4.append([6, 7, 8]) >>> list4 [1, 2, 3, 4, 5, [6, 7, 8]] δηλαδή η λίστα [6, 7, 8] που δέχεται η append εκλαμβάνεται ως ένα στοιχείο και προστίθεται ως το 6ο στοιχείο της λίστας list4. Η λίστα αυτή είναι πλέον δισδιάστατη, αφού περιέχει στοιχείο-λίστα οι δισδιάστατες λίστες θα αναλυθούν παρακάτω). Επίσης, μία άλλη σημαντική διαφορά του + από τη συνάρτηση append είναι ότι το αποτέλεσμα μιας έκφρασης συνένωσης πρέπει να εκχωρηθεί σε κάποια λίστα (όπως στο παραπάνω παράδειγμα στη list4), ενώ η κλήση της append λειτουργεί στην ίδια τη λίστα με την οποία καλείται. Ουσιαστικά, ως προς αυτή τη λειτουργικότητα, η append είναι παραπλήσια του τελεστή +=, ο οποίος συνενώνει μια λίστα με κάποια άλλη και εκχωρεί το αποτέλεσμα στην ίδια τη λίστα. Μάλιστα, υπάρχει διαφορά μεταξύ τού: και του: λίστα_α = λίστα_α + λίστα_β λίστα_α += λίστα_β Η λίστα_α και στις δύο περιπτώσεις θα περιέχει τα ίδια στοιχεία, όμως στην πρώτη περίπτωση δημιουργείται καινούρια λίστα για την αποθήκευση της συνένωσης (με το όνομα λίστα_α και πάλι), ενώ στη δεύτερη περίπτωση η συνένωση αποθηκεύεται στην ήδη υπάρχουσα λίστα_α. Άρα, συνήθως η δεύτερη εναλλακτική είναι προτιμότερη. Κάποια συχνά σφάλματα: i) >>> list5 = [10, 20, 30] >>> list5 = list Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> list5 = list TypeError: can only concatenate list (not "int") to list >>> list5 = list5 + [40] >>> list5 [10, 20, 30, 40] Δηλαδή, για να προστεθεί ένα μόνο στοιχείο στο τέλος μιας λίστας με τον τελεστή +, θα πρέπει να προστεθεί με τη μορφή λίστας (π.χ., [40]), παρόλο που πρόκειται για ένα μόνο στοιχείο. Ver Τμήμα Μαθηματικών ΕΚΠΑ 9

10 ii) >>> list6 = [0, 1, 2] >>> list7 = list6.append(3) # προβληματική κλήση >>> print(list7) None >>> print(list6) [0, 1, 2, 3] Δηλαδή, η κλήση της append δεν έχει νόημα να εκχωρηθεί σε κάποια νέα λίστα, αφού δεν επιστρέφει κάτι αλλά απλά προσθέτει κάποιο στοιχείο στη λίστα με την οποία καλείται (εδώ τη list6). Λίστες ως ορίσματα συναρτήσεων (Συναρτήσεις που δέχονται λίστες) Μια συνάρτηση μπορεί να έχει (και) λίστες ως παραμέτρους εισόδου, όπως ακριβώς ισχύει και με τις μεταβλητές. Π.χ, η παρακάτω συνάρτηση δέχεται μία λίστα και επιστρέφει το γινόμενο των στοιχείων της: def list_prod(values): prod = 1 for n in values: prod *= n return prod Χρήση της συνάρτησης: >>> numbers = [1, 34, 20, -23, 2.6, ] >>> print('το γινόμενο των στοιχείων είναι', list_prod(numbers)) Το γινόμενο των στοιχείων είναι Σημείωση: Όπως αναφέρθηκε στην προηγούμενη ενότητα, όταν καλείται μια συνάρτηση που έχει παραμέτρους εισόδου, τα ορίσματα που μεταβιβάζονται στη συνάρτηση αποθηκεύονται σε νέες, τοπικές μεταβλητές της συνάρτησης. Επομένως, οποιαδήποτε τροποποίηση γίνει στις παραμέτρους εισόδου της συνάρτησης μέσα στη συνάρτηση, παραμένει σε αυτήν και δεν μεταφέρεται στις μεταβλητές που χρησιμοποιήθηκαν ως ορίσματα (ο τρόπος αυτός μεταβίβασης ορισμάτων ονομάζεται μεταβίβαση με τιμή (pass-by-value). Στην περίπτωση της μεταβίβασης κάποιας λίστας όμως, φαινομενικά συμβαίνει το αντίθετο, δηλαδή οποιαδήποτε τροποποίηση κάποιου στοιχείου της λίστας μέσα στη συνάρτηση μεταφέρεται και στη λίστα που χρησιμοποιήθηκε ως όρισμα κατά την κλήση της συνάρτησης. Αυτό μοιάζει με τον τρόπο μεταβίβασης ορισμάτων άλλων γλωσσών προγραμματισμού γνωστό ως μεταβίβαση με αναφορά (pass-by-reference), όπου αντί για την τιμή του ορίσματος, μεταβιβάζεται η αναφορά (reference) στη θέση μνήμης που είναι αποθηκευμένη η τιμή του ορίσματος. Στην Python δεν συμβαίνει ακριβώς αυτό, αφού ακόμα και τα αντικείμενα (π.χ., οι λίστες) μεταβιβάζονται με τιμή. Όμως, ένα αντικείμενο στην Python είναι ουσιαστικά μια αναφορά στη θέση μνήμης που περιέχονται τα στοιχεία τού αντικειμένου. Δηλαδή, το όνομα μιας λίστας είναι μια αναφορά στη θέση μνήμης στην οποία είναι αποθηκευμένες οι τιμές της λίστας (χοντρικά). Επομένως, όταν μεταβιβάζεται μια λίστα σε μια συνάρτηση, γίνεται μεταβίβαση με τιμή της λίστας, η οποία όμως δεν είναι τίποτε άλλο από τη θέση μνήμης της αρχικής λίστας. Το όρισμα αυτό αντιγράφεται σε μία τοπική λίστα, που είναι και αυτή μια αναφορά στη θέση μνήμης της αρχικής λίστας. Δηλαδή αυτό που αντιγράφεται δεν είναι Ver Τμήμα Μαθηματικών ΕΚΠΑ 10

11 ολόκληρη η λίστα, αλλά η αναφορά στη θέση της (άρα η αρχική λίστα έχει πλέον δύο ονόματα, αυτό του ορίσματος και αυτό της τοπικής παραμέτρου εισόδου της συνάρτησης). Επομένως, οποιαδήποτε αλλαγή στην τοπική αυτή λίστα, πραγματοποιείται και στην αρχική λίστα. Παράδειγμα 1: def foo(foo_list): print(foo_list) foo_list.append(100) # Η foo_list τροποποιείται print(foo_list) def main(): my_list = [1, 2, 3, 4, 5] print('my_list before foo: ', my_list) foo(my_list) print('my_list after foo: ', my_list) main() Έξοδος προγράμματος: my_list before foo: [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 100] my_list after foo: [1, 2, 3, 4, 5, 100] Παράδειγμα 2: def bar(bar_list): print(bar_list) bar_list.append(100) # Η bar_list τροποποιείται bar_list = [10, 20, 30] # Στη bar_list εκχωρείται νέα λίστα print(bar_list) def main(): my_list = [1, 2, 3, 4, 5] print('my_list before bar: ', my_list) bar(my_list) print('my_list after bar: ', my_list) main() Το παράδειγμα αυτό δείχνει ότι στην Python, ακόμα και για τα αντικείμενα, όπως είναι οι λίστες, δεν γίνεται μεταβίβαση με αναφορά αλλά γίνεται μεταβίβαση με τιμή. Αν η Python λειτουργούσε με μεταβίβαση με αναφορά, το πρόγραμμα θα εκτύπωνε: my_list before bar: [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [10, 20, 30] my_list after bar: [10, 20, 30] <-- ΔΕΝ ΘΑ ΕΚΤΥΠΩΘΕΙ ΑΥΤΟ γιατί η λίστα μέσα στη συνάρτηση, αφού τροποποιηθεί με την προσθήκη της τιμής 100 στο τέλος της, αλλάζει τιμές αφού εκχωρείται σε νέα λίστα, παίρνοντας πλέον τις τιμές [10, 20, 30], και αφού η bar_list θα ήταν η αναφορά στη λίστα my_list, η τελευταία αλλαγή θα άλλαζε και τη Ver Τμήμα Μαθηματικών ΕΚΠΑ 11

12 my_list. Όμως, το πρόγραμμα θα εκτυπώσει το εξής: my_list before bar: [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [10, 20, 30] my_list after bar: [1, 2, 3, 4, 5, 100] γιατί η bar_list είναι ένα καινούριο (δεύτερο) όνομα για την τιμή με όνομα my_list, οπότε η προσθήκη της τιμής 100 σε αυτό το όνομα (bar_list) είναι κοινή και για τη my_list, όμως η εντολή bar_list = [10, 20, 30] που εκχωρεί στο όνομα bar_list μια καινούρια λίστα, δημιουργεί μία καινούρια αναφορά για το όνομα bar_list σε μια νέα τιμή ([10, 20, 30]), ενώ το όνομα my_list συνεχίζει να αναφέρεται στην προηγούμενη τιμή του. Άρα, συμπερασματικά, η Python λειτουργεί αποκλειστικά με μεταβίβαση με τιμή (pass-by-value), παρόλο που στην περίπτωση αντικειμένων (π.χ. λιστών) αυτό δεν είναι προφανές. Οποιεσδήποτε τροποποιήσεις συγκεκριμένων στοιχείων μιας λίστας μέσα στη συνάρτηση μεταφέρονται στην αρχική λίστα, ενώ τροποποιήσεις σε επίπεδο λίστας (πχ εκχώρηση της λίστας σε νέα λίστα) παραμένουν αποκλειστικά μέσα στη συνάρτηση. Ουσιαστικά, δεν υπάρχει κάποια πραγματική διαφορά μεταξύ των περιπτώσεων μεταβίβασης λίστας και μεταβίβασης μεταβλητών, αφού στην Python ακόμα και οι μεταβλητές είναι αντικείμενα. Όπως προαναφέρθηκε, και οι μεταβλητές, και οι λίστες, μεταβιβάζονται με τιμή. Μια εκχώρηση της μορφής: μεταβλητή_εισόδου = νέα_τιμή μέσα σε μια συνάρτηση είναι αντίστοιχη της: λίστα_εισόδου = [νέες τιμές], η οποία παρουσιάστηκε στο 2ο παράδειγμα παραπάνω. Και στις δύο περιπτώσεις, οι οποιεσδήποτε τροποποιήσεις παραμένουν αποκλειστικά μέσα στη συνάρτηση. Η μόνη περίπτωση να μεταφερθούν κάποιες τροποποιήσεις εκτός συνάρτησης, είναι να γίνουν αλλαγές σε επίπεδο στοιχείων της λίστας, δηλαδή τροποποιήσεις στοιχείων, προσθήκη νέων στοιχείων ή διαγραφή στοιχείων. Συναρτήσεις που επιστρέφουν λίστες Συναρτήσεις που δημιουργούν λίστες, μπορούν να επιστρέφουν αναφορές στις λίστες αυτές. Π.χ.,: def get_values(): values = [ ] # Δημιουργία μιας κενής λίστας more = 'N' while more == 'N': # Είσοδος τιμών από τον χρήστη και προσθήκη τους στη λίστα num = int(input('δώσε έναν αριθμό: ')) values.append(num) more = input('θέλεις να δώσεις άλλον αριθμό; (Ν/Ο) ') return values # Επιστροφή της λίστας Χρήση της συνάρτησης: numbers = get_values() # Είσοδος μιας λίστας που περιέχει τιμές print('οι αριθμοί στη λίστα είναι:') print(numbers) # Εμφάνιση των τιμών της λίστας Ver Τμήμα Μαθηματικών ΕΚΠΑ 12

13 Προγραμματιστικές Εφαρμογές: (Για την εκπαιδευτικά καλύτερη ανάλυση και υλοποίηση των αλγορίθμων που ακολουθούν, δεν θα γίνει χρήση συγκεκριμένων ενσωματωμένων συναρτήσεων όπως min, sum κτλ., καθώς και μεθόδων για διαχείριση λιστών που παρέχει η Python, π.χ. sort κτλ.) Ταξινόμηση λίστας με τον αλγόριθμο της επιλογής (selection sort): 1. Ξεκίνα από την πρώτη θέση. 2. Βρες το ελάχιστο στοιχείο από τη θέση αυτή και μετά. 3. Ενάλλαξε (swap) τα στοιχεία της θέσης που ξεκίνησες και της θέσης του ελάχιστου. 4. Πήγαινε στην επόμενη θέση και επανάλαβε το Βήμα 2, μέχρι να φτάσεις στην προτελευταία θέση. Υλοποίηση με συνάρτηση: def selection(v): for i in range(len(v)-1): min_index = i # έστω ότι το στοιχείο αυτό είναι το ελάχιστο # αναζήτηση του ελάχιστου: for j in range(i+1,len(v)): if v[j] < v[min_index]: min_index = j # η θέση του ελάχιστου στοιχείου if min_index!= i: # αν βρέθηκε κάποιο μικρότερο στοιχείο temp = v[i] v[i] = v[min_index] v[min_index] = temp # ή: v[i], v[min_index] = v[min_index], v[i] return v Σημείωση: Όπως φαίνεται στη γραμμή κώδικα του παραπάνω προγράμματος με έντονα γράμματα που έχει γίνει σχόλιο, η εναλλαγή (swapping) δύο μεταβλητών στην Python μπορεί να γίνει σε μία εντολή, χωρίς τη χρήση επιπλέον προσωρινής μεταβλητής, ως εξής: μεταβλητή_1, μεταβλητή_2 = μεταβλητή_2, μεταβλητή_1 Ταξινόμηση λίστας με τον αλγόριθμο εισαγωγής (insertion sort): 1. Ξεκίνα από τo δεύτερο στοιχείο. 2. Σύγκρινε το στοιχείο με ένα-ένα τα στοιχεία που βρίσκονται αριστερά του μέχρι να βρεις (άρα while-loop) κάποιο μικρότερό του, και όσο βρίσκεις κάποιο μεγαλύτερό του, ενάλλασσέ τα. 3. Πήγαινε στο επόμενο στοιχείο και επανάλαβε το Βήμα 2. Υλοποίηση με συνάρτηση: def insertion(v): for i in range(1,len(v)): while i>0 and v[i-1]>v[i]: # Δε δημιουργείται πρόβλημα με την v[i], v[i-1] = v[i-1], v[i] # τροποποίηση της τιμής του i μέσα i -= 1 # στο for! Στην επόμενη επανάληψη θα return v # πάρει την επόμενη τιμή της range. Ver Τμήμα Μαθηματικών ΕΚΠΑ 13

14 Γραμμική αναζήτηση (linear search): Ξεκινώντας από το πρώτο στοιχείο, σύγκρινε ένα-ένα τα στοιχεία του διανύσματος με το προς αναζήτηση στοιχείο (key), μέχρι να το βρεις. Υλοποίηση με συνάρτηση: def linear_search(v, key): loc = 0 # η τρέχουσα θέση αναζήτησης pos = False # η θέση του στοιχείου αναζήτησης # Θα επιστρέψει False αν δε βρεθεί hit = False # flag για το αν έχει βρεθεί το προς αναζήτηση στοιχείο while loc < len(v) and not hit: if v[loc]==key: pos = loc hit = True else: loc += 1 return pos Δυαδική αναζήτηση (binary search): Προϋπόθεση: Η λίστα πρέπει να είναι ταξινομημένη! 1. Σύγκρινε το αναζητούμενο στοιχείο με το μεσαίο στοιχείο της λίστας 2. Όσο αυτά διαφέρουν και υπάρχουν ακόμα στοιχεία στη λίστα: αν είναι μικρότερο του στοιχείου, επανάλαβε το Βήμα 1 για το αριστερό τμήμα της λίστας. αν είναι μεγαλύτερο του στοιχείου, επανάλαβε το Βήμα 1 για το δεξί τμήμα της λίστας. Υλοποίηση με συνάρτηση: def binary_search(v, key): left = 0 # το αριστερό άκρο της τρέχουσας λίστας right = len(v)-1 # το δεξί άκρο της τρέχουσας λίστας pos = False hit = False while left <= right and not hit: mid = (left+right)//2 if v[mid]==key: pos = mid hit = True elif key < v[mid]: right = mid-1 else: left = mid+1 return pos Ver Τμήμα Μαθηματικών ΕΚΠΑ 14

15 Το κόσκινο του Ερατοσθένη (3 ος αιώνας π.χ.): Αλγόριθμος για τη εύρεση των πρώτων αριθμών από το 2 έως το N. 1. Γράψε όλους τους αριθμούς από το 2 έως το N. 2. Κύκλωσε τον πρώτο διαθέσιμο αριθμό (θα είναι πρώτος). 3. Διέγραψε τα πολλαπλάσιά του. 4. Πήγαινε στο Βήμα 2. π.χ.: για N=10 έχουμε: Υλοποίηση με συνάρτηση: def eratosthenis(n): import math P = list(range(n+1)) # H λίστα των αριθμών P[0] = False # Όσοι διαγράφονται θα γίνονται False. Η πρώτη θέση με δείκτη # 0 δε μας ενδιαφέρει. Δημιουργήθηκε για να συμβαδίζουν οι # υπόλοιποι δείκτες με τις τιμές των αριθμών (για ευκολία). P[1] = False # Το 1 ΔΕΝ είναι πρώτος. for i in range(2, math.ceil(math.sqrt(n))): if P[i]: # Aν το i δεν έχει διαγραφεί for j in range(2*i,n+1,i): # πήγαινε σε κάθε πολλαπλάσιο του i P[j] = False # και διέγραψέ το # Αποθήκευση των πρώτων που βρέθηκαν, στη λίστα primes: primes = [] for p in P: if p: primes.append(p) return primes Δισδιάστατες Λίστες Οι δισδιάστατες λίστες είναι λίστες που τα στοιχεία τους είναι άλλες λίστες. Π.χ., numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] Το 1ο στοιχείο της λίστας numbers είναι η λίστα: [2, 4, 6, 8, 10] Το 2ο στοιχείο της λίστας numbers είναι η λίστα: [1, 3, 5, 7, 9] Το 3ο στοιχείο της λίστας numbers είναι η λίστα: [11, 12, 13, 14, 15] Ver Τμήμα Μαθηματικών ΕΚΠΑ 15

16 Επομένως, η λίστα numbers θα μπορούσε να αναπαρασταθεί με τη μορφή ενός δισδιάστατου πίνακα, ως εξής: άρα αποτελεί μια δισδιάστατη λίστα. Για την πρόσβαση σε συγκεκριμένο στοιχείο μιας δισδιάστατης λίστας απαιτούνται δύο δείκτες, ένας για τη γραμμή και ένας για τη στήλη του στοιχείου: λίστα[γραμμή][στήλη] Π.χ., για την παραπάνω λίστα numbers: >>> print(numbers[2][4]) 15 >>> print(numbers[0][2]) 6 Δημιουργία και αρχικοποίηση δισδιάστατης λίστας: Μια δισδιάστατη λίστα μπορεί να δημιουργηθεί και αρχικοποιηθεί ως εξής: λίστα = [[τιμή for j in range(πλήθος_στηλών)] for i in range(πλήθος_γραμμών)] Αφού έχει δημιουργηθεί μια λίστα, μπορεί μετά κανείς να διατρέξει τα στοιχεία της με ένθετο for και να τους εκχωρήσει νέες τιμές: for i in range(πλήθος_γραμμών): for j in range(πλήθος_στηλών): λίστα[i][j] = νέα_τιμή Με τον τρόπο αυτό, μπορεί να αρχικοποιηθεί το κάθε στοιχείο της λίστας σε διαφορετική τιμή. Αυτή η δυνατότητα παρέχεται όμως και με τον αρχικό τρόπο δημιουργίας και αρχικοποίησης που προαναφέρθηκε, αφού ουσιαστικά η εντολή διατρέχει τα στοιχεία της λίστας που δημιουργείται με τα for που εμπεριέχει. Π.χ., η εντολή: my_list = [[random.random() for j in range(3)] for i in range(5)] αρχικοποιεί τα στοιχεία της δισδιάστατης λίστας my_list μεγέθους 5x3 σε τυχαίες τιμές στο διάστημα [0, 1). Ver Τμήμα Μαθηματικών ΕΚΠΑ 16

17 Σε μια δισδιάστατη λίστα, με τη χρήση ενός μόνο δείκτη γίνεται αναφορά σε ολόκληρη την αντίστοιχη γραμμή της λίστας: λίστα[δείκτης_γραμμής] Π.χ.: >>> numbers[1] [1, 3, 5, 7, 9] >>> numbers[2] [11, 12, 13, 14, 15] Σε μια δισδιάστατη λίστα, με τη χρήση του τελεστή in γίνεται αναφορά ανά γραμμή της λίστας: for γραμμή in λίστα Π.χ.: >>> for row in numbers: print(row) [2, 4, 6, 8, 10] [1, 3, 5, 7, 9] [11, 12, 13, 14, 15] Το πλήθος των γραμμών μιας δισδιάστατης λίστας δίνεται από την εντολή: len(λίστα) Το πλήθος των στηλών μιας δισδιάστατης λίστας δίνεται από την εντολή: len(λίστα[0]) δηλαδή, το πλήθος των στηλών δίνεται από το πλήθος των στοιχείων της πρώτης γραμμής (το λίστα[0] είναι η 1η γραμμή της λίστας). Για να ισχύει αυτό για μια λίστα, θα πρέπει η λίστα να έχει τον ίδιο αριθμό στοιχείων σε όλες τις γραμμές της. Αυτό γενικά, δεν είναι απαραίτητο να ισχύει, δηλαδή μπορεί να υπάρχει π.χ. η ακόλουθη λίστα: numbers2 = [ [2, 4, 6, 8], [1, 3], [11, 12, 13] ] η οποία στην 1η γραμμή έχει 4 στοιχεία, στη 2η γραμμή 2 στοιχεία και στην 3η γραμμή 3 στοιχεία. Επίσης, όπως και στις κανονικές λίστες, και μία δισδιάστατη λίστα μπορεί να περιέχει στοιχεία διαφόρων τύπων: results = [['Student1', 'Student2', 'Student3'], [1, 2, 1], [8, 7.5, 3.5]] Σύμφωνα με τα παραπάνω, για να προστεθεί π.χ. ένα στοιχείο 'Student4' στην παραπάνω λίστα με χρήση της μεθόδου append: results[0].append('student4') Ver Τμήμα Μαθηματικών ΕΚΠΑ 17

18 Παραδείγματα 1. Άθροισμα και μέσος όρων όλων των στοιχείων μιας δισδιάστατης λίστας: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] total = 0 for r in range(len(numbers)): for c in range(len(numbers[r])): total += numbers[r][c] print('το άθροισμα των στοιχείων είναι', total) average = total / (len(numbers)*len(numbers[0])) print('ο μέσος όρος των στοιχείων είναι', average) ή: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] total = 0 for r in range(len(numbers)): for v in numbers[r]: total += v print('το άθροισμα των στοιχείων είναι', total) average = total / (len(numbers)*len(numbers[0])) print('ο μέσος όρος των στοιχείων είναι', average) ή: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] total = 0 for row in numbers: total += sum(row) print('το άθροισμα των στοιχείων είναι', total) average = total / (len(numbers)*len(numbers[0])) print('ο μέσος όρος των στοιχείων είναι', average) Σημείωση: Ο υπολογισμός του συνολικού πλήθους των στοιχείων της λίστας με την έκφραση len(numbers)*len(numbers[0]) είναι σωστός μόνο στην περίπτωση που η λίστα έχει τον ίδιο αριθμό στοιχείων σε κάθε γραμμή. Για πιο γενικές περιπτώσεις, θα πρέπει να χρησιμοποιηθεί ένας επιπλέον μετρητής, π.χ., για την τρίτη εκδοχή του προγράμματος: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] total = 0 nelements = 0 for row in numbers: total += sum(row) nelements += len(row) print('το άθροισμα των στοιχείων είναι', total) average = total/nelements print('ο μέσος όρος των στοιχείων είναι', average) Ver Τμήμα Μαθηματικών ΕΚΠΑ 18

19 2. Άθροισμα και μέσος όρων των στοιχείων κάθε γραμμής μιας δισδιάστατης λίστας: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] for r in range(len(numbers)): total = 0 for c in range(len(numbers[r])): total += numbers[r][c] print('το άθροισμα των στοιχείων της γραμμής', r, είναι', total) average = total / len(numbers[0]) print('ο μέσος όρος των στοιχείων της γραμμής', r, είναι', average) ή: numbers = [ [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [11, 12, 13, 14, 15] ] for row in numbers: total = sum(row) print('το άθροισμα των στοιχείων της γραμμής', row, είναι', total) average = total / len(numbers[0]) print('ο μέσος όρος των στοιχείων της γραμμής', row, είναι', average) Πλειάδες (Tuples) Οι πλειάδες αποτελούν αμετάβλητο τύπο αλληλουχίας. Έχουν σχεδόν ίδια χαρακτηριστικά με αυτά των λιστών, με βασική διαφορά ότι οι τιμές τους δε μεταβάλλονται (σε αντίθεση με αυτές των λιστών). Άλλη βασική διαφορά: Δημιουργούνται με παρενθέσεις και όχι με αγκύλες: πλειάδα = (τιμή_1, τιμή_2, τιμή_3,... ) Π.χ., >>> tuple1 = (3, -2, 1.5, 0) >>> print(tuple1) (3, -2, 1.5, 0) Για τη δημιουργία πλειάδας ενός στοιχείου, πρέπει να περιλαμβάνεται και το κόμμα στην εντολή, διαφορετικά δημιουργείται απλή μεταβλητή: >>> tuple2 = (5,) >>> print(tuple2) (5,) >>> not_a_tuple = (10) >>> print(not_a_tuple) 10 Ver Τμήμα Μαθηματικών ΕΚΠΑ 19

20 Κατά τα άλλα, ισχύουν οι περισσότερες λειτουργίες που ισχύουν και στις λίστες: Διαχείριση με δείκτες (μόνο για ανάκτηση τιμών των στοιχείων) Μέθοδοι όπως η index Ενσωματωμένες συναρτήσεις όπως οι len, min και max Εκφράσεις τεμαχισμού Ο τελεστής in Οι τελεστές + και * Λόγοι ύπαρξης των Πλειάδων: Υπολογιστική απόδοση: η επεξεργασία με πλειάδες είναι ταχύτερη από την επεξεργασία με λίστες. Ασφάλεια: αποθήκευση δεδομένων χωρίς τον κίνδυνο τροποποίησης (κατά λάθος ή με άλλον τρόπο) από τον κώδικα του προγράμματος. Υπάρχουν ορισμένες πράξεις στην Python οι οποίες απαιτούν τη χρήση πλειάδων. Μετατροπή Πλειάδας σε Λίστα και το αντίθετο: >>> my_tuple = (1, 2, 3) >>> my_list = list(my_tuple) >>> print(my_list) [1, 2, 3] >>> my_new_tuple = tuple(my_list) >>> print(my_new_tuple) (1, 2, 3) Ver Τμήμα Μαθηματικών ΕΚΠΑ 20

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

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 10: Θεματική Ενότητα: Λίστες (Lists) και Πλειάδες (Tuples) ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

Πληροφορική ΙΙ Θεματική Ενότητα 10

Πληροφορική ΙΙ Θεματική Ενότητα 10 Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Θεματική Ενότητα 10 Λίστες (Lists) και Πλειάδες (Tuples) Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5 ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5 Σημειώσεις βασισμένες στο βιβλίο Το MATLAB στην Υπολογιστική Επιστήμη και Τεχνολογία Μια Εισαγωγή Πίνακες (Arrays) [1/2] Δομές δεδομένων για την αποθήκευση δεδομένων υπό

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 5: Πίνακες [1/2] (Διανύσματα)

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 5: Πίνακες [1/2] (Διανύσματα) ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 5: Πίνακες [1/2] (Διανύσματα) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5 Σημειώσεις βασισμένες στο βιβλίο Το MATLAB στην Υπολογιστική

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 5. Λεξικά (Dictionaries)

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 5. Λεξικά (Dictionaries) ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 5 Λεξικά (Dictionaries) Τα λεξικά είναι μια μεταβλητή δομή δεδομένων της Python για την αποθήκευση συλλογών δεδομένων της μορφής: κλειδί τιμή. Δηλαδή, κάθε στοιχείο σε ένα

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

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

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

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ακολουθία (sequence)

ακολουθία (sequence) Λίστες στην Python Η βασικώτερη δομή δεδομένων στην Pyhton είναι η ακολουθία (sequence). Σε κάθε στοιχείο μιας ακολουθίας ανατίθεται ένας ακέραιος που ονομάζεται δείκτης (index) ή θέση του στοιχείου. Ο

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Προγραμματισμός Η/Υ Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Αναζήτηση και ταξινόµηση 7 Αναζήτηση (search) Πρόβληµα: αναζήτηση της καταχώρησης key στη

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

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

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

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

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

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

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

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα; Λίστα για ψώνια Έννοιες: αρχεία- άνοιγμα- εγγραφή διάβασμα Προαπαιτούμενα : δομή επιλογής, επανάληψης, συναρτήσεις, λίστες Ο Άκης, τώρα που έμαθε και τις λίστες στην Python αποφάσισε να φτιάξει μια λίστα

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

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

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

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

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

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

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

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

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

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

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

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 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)

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

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

Λίστες. Lista=[ red, green, blue ] Το πλήθος των στοιχείων μια λίστας δίνεται από τη συνάρτηση len(): Len(Lista)

Λίστες. Lista=[ red, green, blue ] Το πλήθος των στοιχείων μια λίστας δίνεται από τη συνάρτηση len(): Len(Lista) Λίστες Η πιο σημαντική ακολουθία της Python, μοιάζουν με τους πίνακες των παραδοσιακών γλωσσών αλλά είναι πολύ ποιο ευέλικτες: μπορεί να περιέχουν στοιχεία διαφορετικού τύπου και μας παρέχουν τη δυνατότητα

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

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

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

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

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Λίστες και Πλειάδες Χειµερινό Εξάµηνο 2014

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Λίστες και Πλειάδες Χειµερινό Εξάµηνο 2014 ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Λίστες και Πλειάδες Χειµερινό Εξάµηνο 2014 Δοµές δεδοµένων Μια δοµή δεδοµένων είναι µια δοµηµένη (οργανωµένη) συλλογή στοιχείων (π.χ., ψηφίων, χαρακτήρων, αριθµών,

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

Ενδεικτικές Ερωτήσεις Θεωρίας

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

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

ΗΥ-150. Ταξινόµηση και Αναζήτηση

ΗΥ-150. Ταξινόµηση και Αναζήτηση ΗΥ-150 Ταξινόµηση και Αναζήτηση To πρόβληµα της Αναζήτησης οθέντος δεδοµένων, λ.χ. σε Πίνακα (P) Ψάχνω να βρω κάποιο συγκεκριµένο στοιχείο (key) Αν ο πίνακας δεν είναι ταξινοµηµένος Γραµµική Αναζήτηση

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

Πληροφορική ΙΙ Θεματική Ενότητα 7

Πληροφορική ΙΙ Θεματική Ενότητα 7 Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Θεματική Ενότητα 7 Δομές επανάληψης Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

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

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

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

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

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

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 9 ο : ΠΙΝΑΚΕΣ ΜΕΡΟΣ 1 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΙΝΑΚΕΣ 1 & 2 ΔΙΑΣΤΑΣΕΩΝ http://eclass.sch.gr/courses/el594100/

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης Γ7.5 Αλγόριθμοι Αναζήτησης Γ Λυκείου Κατεύθυνσης Εισαγωγή Αλγόριθμος αναζήτησης θεωρείται ένας αλγόριθμος, ο οποίος προσπαθεί να εντοπίσει ένα στοιχείο με συγκεκριμένες ιδιότητες, μέσα σε μία συλλογή από

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

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

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

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

Δείκτες & Πίνακες Δείκτες, Πίνακες

Δείκτες & Πίνακες Δείκτες, Πίνακες Δείκτες & Πίνακες Δείκτες, Πίνακες Δείκτες Δείκτης είναι μια μεταβλητή που ως δεδομένο περιέχει τη θέση μνήμης (διεύθυνση) μιας άλλης μεταβλητής. Μεταβλητές Τιμές. (*) Δείκτης p Μεταβλητή v Δ1. Δ2. τιμή

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

ΚΕΦΑΛΑΙΟ 6. Συμβολοσειρές, λίστες, πλειάδες, λεξικά. 6.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 6. Συμβολοσειρές, λίστες, πλειάδες, λεξικά. 6.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 6 Συμβολοσειρές, λίστες, πλειάδες, λεξικά Σύνοψη Στο κεφάλαιο αυτό θα εμβαθύνουμε στην κατανόηση σημαντικών δομών δεδομένων, όπως οι συμβολοσειρές (strings), οι λίστες (lists), οι πλειάδες (tuples)

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

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

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

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

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

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης ΘΕΜΑ Α A1 Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις α-δ και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή, ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη. a. Σε μία εντολή εκχώρησης του αποτελέσματος

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

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

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

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 1 ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 1 Σημειώσεις βασισμένες στο βιβλίο Το MATLAB στην Υπολογιστική Επιστήμη και Τεχνολογία Μια Εισαγωγή Περιεχόμενο μαθήματος: Αλγοριθμική επίλυση προβλημάτων Προγραμματισμός

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4 ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4 Σημειώσεις βασισμένες στο βιβλίο Το MATLAB στην Υπολογιστική Επιστήμη και Τεχνολογία Μια Εισαγωγή ΣΥΝΑΡΤΗΣΕΙΣ Συνάρτηση ονομάζεται ένα τμήμα κώδικα (ή υποπρόγραμμα) το

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

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

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

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

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

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

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

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

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

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

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

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

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

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Σημειώσεις Python Ενότητα 3 Ν. Φερεντίνος. ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 3. Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Σημειώσεις Python Ενότητα 3 Ν. Φερεντίνος. ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 3. Συναρτήσεις ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 3 Συναρτήσεις Συνάρτηση ονομάζεται ένα τμήμα κώδικα (ή υποπρόγραμμα) το οποίο κάνει μια συγκεκριμένη διεργασία και μπορεί να καλείται από ένα πρόγραμμα (ή από μια άλλη συνάρτηση).

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 4ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Συναρτήσεις (functions) 56 Τεμαχισμός του προγράμματος σε μικρότερα κομμάτια που είναι πιο κατανοητά, πιο εύκολα

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1 Εισαγωγή στην Γλώσσα Προγραμματισμού Python 12/10/16 costis@teicrete.gr 1 Διάφορες Γλώσσες Προγραμματισμού C or C++ Java Perl Scheme Fortran Python Matlab 12/10/16 costis@teicrete.gr 2 Περίληψη Παρουσίασης

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

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

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

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

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

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

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

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

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

Ορισμός μεταβλητών δεικτών και αρχικοποίηση Ορισμός μεταβλητών δεικτών και αρχικοποίηση Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ η οποία έχει τη δική της ξεχωριστή διεύθυνση Ο δείκτης είναι μια μεταβλητή

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1 Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων IDLE - Διαδικασία ανάπτυξης προγραμμάτων Python - Απλά προγράμματα

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

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

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

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

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

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

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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