ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Επαναληπτικές Ασκήσεις

Σχετικά έγγραφα
ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Επαναληπτικές Ασκήσεις Χειµερινό Εξάµηνο 2014

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

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

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Έλεγχος Ροής - Παραδείγματα

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

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Έλεγχος Ροής Προγράμματος

Σειρά Προβλημάτων 5 Λύσεις

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

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

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

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

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Συναρτήσεις

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

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

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

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

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

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

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

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

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

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

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

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

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

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

Ηλεκτρονικοί Υπολογιστές

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

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

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

for for for for( . */

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

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

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

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

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

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

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

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

επιστρέφει αριθµό που προκύπτει µε αντιστροφή των στοιχείων του πρώτου

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

ΔΙΑΓΩΝΙΣΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: Γ ΛΥΚΕΙΟΥ HM/NIA: 21/2/2016

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

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

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

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

ΘΕΜΑ Α. Μονάδες 10 Α2.

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

Α4. Όσο επανάλαβε Τέλος_επανάληψης Εμφάνισε Για από μέχρι με_βήμα. Όσο επανάλαβε (Μονάδες 5) Α5. Α[10, 5] Π, Για από μέχρι (1) Για από μέχρι (2) Αν

Σημειωματάριο Δευτέρας 13 Νοε. 2017

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

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

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

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

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

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

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

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

Transcript:

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Επαναληπτικές Ασκήσεις

Μεταβλητές Τι θα τυπώσουν τα παρακάτω προγράμματα? Γιατί? def add(): y = x+1 prit(y) x = 3 add() 4 H add χρησιμοποιεί την καθολική μεταβλητή x def add(): x = x+1 prit(x) x = 3 add() UboudLocalError: local variable 'x' refereced before assigmet Από την στιγμή που εκχωρούμε τιμή στην x γίνεται τοπική μεταβλητή

Μεταβλητές Τι θα τυπώσει το παρακάτω πρόγραμμα? Γιατί? def add(x): y = x+1 prit(y) 4 5 x = 3 y = 5 add(x) prit(y) Το y είναι τοπική μεταβλητή στην add και δεν αλλάζει την μεταβλητή y στο κύριο πρόγραμμα

Μεταβλητές Τι θα τυπώσει το παρακάτω πρόγραμμα? Γιατί? def createlist(x): L = [x,2*x] prit(l) [2,4] [1,2] L = [1,2] x = 2 createlist(x) prit(l) Το L είναι τοπική μεταβλητή στην add και δεν αλλάζει την μεταβλητή L στο κύριο πρόγραμμα

Μεταβλητές Τι θα τυπώσει το παρακάτω πρόγραμμα? Γιατί? def add(x): x = x+1 prit(x) 4 3 x = 3 add(x) prit(x) Το x είναι παράμετρος στην add και άρα τοπική μεταβλητή. Επειδή είναι μη μεταβαλλόμενο αντικείμενο, η αλλαγή του x δεν μεταφέρεται στο κύριο πρόγραμμα

Μεταβλητές Τι θα τυπώσει το παρακάτω πρόγραμμα? Γιατί? [1,2,3] [1,2,3] def add(l): L.apped(3) prit(l) Χ = [1,2] add(χ) prit(χ) Οι μεταβλητές Χ και L δείχνουν στο ίδιο αντικείμενο, και η λίστα είναι μεταβαλλόμενο αντικείμενο. H αλλαγή στα περιεχόμενα του L αλλάζει και τα περιεχόμενα του Χ

Μεταβλητές Τι θα τυπώσει το παρακάτω πρόγραμμα? Γιατί? [1,2,3] [1,2] def add(l): L = [1,2,3] prit(l) Χ = [1,2] add(χ) prit(χ) Τα Χ και L δείχνουν αρχικά στο ίδιο αντικείμενο. H αλλαγή στην τιμή του L αλλάζει το που δείχνει το L, αλλά επειδή είναι τοπική μεταβλητή δεν αλλάζει που δείχνει το Χ. Τα περιεχόμενα του αντικειμένου στο οποίο δείχνει το Χ δεν μεταβάλλονται.

Λίστες Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα 2 λίστες και θα επιστρέφει το γινόμενo των 2 «μεσαίων» στοιχείων τους. Π.χ. L1 = [5,1,3,2,4], L2 = [9,2,1,8,0] media(l1) = 3, media(l2) = 2 result = 6 def multimedias(l1,l2): L1.sort() L2.sort() retur L1[le(L1)//2]*L2[le(L2)//2] 8

Λίστες Τι θα τυπώσει το παρακάτω: list = [1, 1, 2, 3, 5, 8, 13] prit(list[list[4]]) Συμπληρώστε το παρακάτω πρόγραμμα ώστε να τυπώσει το πρώτο στοιχείο της λίστας αν η λίστα έχει ζυγό αριθμό στοιχείων: list = [1, 2, 3, 4] if (list) % 2 == 0 prit(list[ ]) 9

Λίστες Γράψτε μια συνάρτηση mi, η οποία θα παίρνει σαν ορίσματα μια λίστα και έναν αριθμό και θα επιστρέφει το μικρότερο από τα πρώτα στοιχεία της λίστας. Π.χ. L = [5,2,3,1,4] mi(l,1) = 5, mi(l,2) = 2, mi(l,3) = 2, mi(l,4) = 1 def mi(l,): m = L[0] for i i rage(1, mi(,le(l))): if L[i]<m: m=l[i] retur m H εντολή retur mi(l[:]) κάνει την ίδια δουλειά! 10

Αλφαριθμητικά Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα αλφαριθμητικό, το οποίο θα είναι ένα κείμενο, και θα επιστρέφει τη λέξη με τους περισσότερους χαρακτήρες. Η συνάρτηση θα πρέπει να μην υπολογίζει τυχόν τελείες ως μέρη των λέξεων. Π.χ. s = I wet to the shops today. I bought a cake. result = bought def logest(s): s2 = s.replace('.',' ') l = s2.split() res = '' for w i l: if le(w)>le(res): res = w retur res 11

Αλφαριθμητικά Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα αλφαριθμητικό, το οποίο θα είναι ένα κείμενο, και θα επιστρέφει τη λέξη με τους περισσότερους χαρακτήρες. Η συνάρτηση θα πρέπει να μην υπολογίζει τυχόν τελείες ως μέρη των λέξεων. Π.χ. s = I wet to the shops today. I bought a cake. result = bought def logest(s): s2 = s.replace('.',' ') l = s2.split() retur max(l, key=le) Χρησιμοποιώντας το προαιρετικό όρισμα key στη συνάρτηση max συγκρίνουμε τα στοιχεία με βάση τη συνάρτηση που δίνεται σαν τιμή στο όρισμα. Το όρισμα key υπάρχει και σε άλλες μεθόδους/συναρτήσεις (sort, mi, κλπ.) 12

Αλφαριθμητικά Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα αλφαριθμητικό και θα επιστρέφει ένα αντίγραφό του, όπου οι τελευταίοι 5 χαρακτήρες θα είναι με ανεστραμμένη σειρά. Π.χ. s = I wet to the market result = I wet to the mtekra def rev(s): x = s[-5:] l = list(x) l.reverse() y = ''.joi(l) retur s[:-5]+y H εντολή retur s[:-5]+s[-5:][::-1] κάνει την ίδια δουλειά! 13

Λεξικά Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα αλφαριθμητικό, το οποίο θα είναι ένα κείμενο, και θα επιστρέφει ένα λεξικό, όπου για κάθε μήκος θα καταγράφεται πόσες λέξεις έχουν αυτό το μήκος. Η συνάρτηση θα πρέπει να μην υπολογίζει τυχόν τελείες ως μέρη των λέξεων. Π.χ. s = I wet to the shops today. I bought a cake. result = {1: 3, 2: 1, 3: 1, 4: 2, 5: 2, 6: 1} def legths(s): s2 = s.replace('.',' ') l = s2.split() d = {} for w i l: if le(w) i d: d[le(w)] += 1 else: d[le(w)] = 1 retur d 14

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα και θα επιστρέφει μια νέα λίστα, η οποία θα έχει μόνο τα στοιχεία που δεν είναι 0. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,2,1,3,2,2] def ozeros(l): L2 = [] for x i L: if x!= 0: L2.apped(x) retur L2 15

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα και θα επιστρέφει μια νέα λίστα, η οποία θα έχει μόνο τα στοιχεία που δεν είναι 0, σε μία γραμμή χρησιμοποιώντας list comprehesio. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,2,1,3,2,2] def ozeros(l): retur [x for x i L if x!= 0] 16

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα και θα επιστρέφει μια νέα λίστα, η οποία θα έχει μόνο τα στοιχεία μέχρι το πρώτο 0. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,2,1] def utilzero(l): L2 = [] for x i L: if x == 0: break L2.apped(x) retur L2 17

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα και θα επιστρέφει μια νέα λίστα, η οποία θα έχει μόνο τα στοιχεία μέχρι το πρώτο 0, αλλά χωρίς τα 2. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,1] def utilzerootwos(l): L2 = [] for x i L: if x == 0: break if x!= 2: L2.apped(x) retur L2 18

Έλεγχος ροής Γράψτε την προηγούμενη συνάρτηση ξανά, αλλά με χρήση while αντί για if. def utilzerootwos2(l): L2 = [] while L: x = L.pop(0) if x == 0: break if x!= 2: L2.apped(x) retur L2 19

Έλεγχος ροής Γράψτε μία συνάρτηση η οποία παίρνει μια λίστα σαν όρισμα και αφαιρεί όλα τα μηδενικά, αλλάζοντας την λίστα-όρισμα αντί να επιστρέφει μία νέα λίστα. def ozeros(l): c = 0 for x i L: if x == 0: c+=1 for i i rage(c): L.remove(0) def ozeros(l): while 0 i L: L.remove(0) 20

Έλεγχος ροής Γράψτε μία συνάρτηση η οποία παίρνει μια λίστα σαν όρισμα και αφαιρεί όλα τα στοιχεία μέχρι το πρώτο μηδενικό, αλλάζοντας την λίστα-όρισμα αντί να επιστρέφει μία νέα λίστα. def removeutilzero(l): while L.pop(0)!= 0: pass 21

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα θετικό ακέραιο και θα τυπώνει τις δυνάμεις του 2 απο το 2 1 εώς το 2 χωρισμένες με διαστήματα Π.χ. = 6 result = 2 4 8 16 32 64 def powers(): for i i rage(1,+1): prit(pow(2,i), ed=' ') 22

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα αριθμών και θα επιστρέφει True αν η λίστα είναι αριθμητική ακολουθία, αλλιώς False. Αριθμητική ακολουθία: η διαφορά μεταξύ συνεχόμενων στοιχείων είναι σταθερή Π.χ. L = [3,6,9,12,15] True L = [3,6,9,10,13] False L = [3] True def arithmetic(l): if le(l)<2: retur True diff = L[1]-L[0] for i i rage(1,le(l)-1): if L[i+1]-L[i]!= diff: retur False retur True 23

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα αλφαριθμητικό και θα επιστρέφει το ακρώνυμό του. Η συνάρτηση θα πρέπει να μετατρέπει τα πεζά σε κεφαλαία όπου χρειάζεται Π.χ. s = cetral processig uit result = CPU def acroym(s): L = s.split() res = '' for w i L: res = res + w[0].upper() retur res 24

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα L θα μετατρέπει κάθε στοιχείο L[i] της L στο άθροισμα των στοιχείων απο τη θέση i και μετά Π.χ. L = [2, 5, 6, 4, 3, 0] L = [20, 18, 13, 7, 3, 0] def ragesum(a): for i i rage(le(a)-1): A[i] = sum(a[i:]) def ragesum(a): if le(a)>1: for i i rage(le(a)-2,-1,-1): A[i] += A[i+1] 25

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα μια λίστα L, θα βρίσκει την υπολίστα της L με το μέγιστο άθροισμα και θα επιστρέφει το άθροισμα. Π.χ. L = [2, -5, 6, 4, -3, 10, -2, 1] result = 17 def maxsublist(l): m = L[0] # first elem of L for i i rage(le(l)): #start idex for j i rage(i,le(l)): #ed idex if sum(l[i:j]) > m: m = sum(l[i:j]) retur m 26

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα δισδιάστατο πίνακα Α και θα τον μετατρέπει ώστε κάθε στοιχείο στην πρώτη στήλη να είναι το άθροισμα όλων των στοιχείων της γραμμής του Π.χ. A = [[2, 5], [6, 4]] A = [[7, 5], [10, 4]] def rowsum(a): for i i rage(le(a)): A[i][0] = sum(a[i]) 27

Έλεγχος ροής Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα θετικό ακέραιο και θα επιστρέφει πόσες φορές μπορούμε να διαιρέσουμε το με το 2 (ακέραια διαίρεση) μέχρι το να γίνει 1 Π.χ. = 25 result = 4 def itlog(): i=0 while >1: //=2 i+=1 retur i 28

List Comprehesio Συμπληρώστε το παρακάτω πρόγραμμα με μία γραμμή κώδικα ώστε να δημιουργεί μια λίστα L με τις λέξεις στο του s που δεν περιέχουν το γράμμα i s = this is a good day L = [w for w i s.split() if i ot i w]

Συναρτήσεις Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν υποχρεωτικά ορίσματα δύο αριθμούς x και y και ένα προεραιτικό όρισμα z (z=1 αν δεν ορίζεται) και θα επιστρέφει τον αριθμό των βημάτων από τον x μέχρι τον y αν το κάθε βήμα είναι z. Π.χ. x = 4, y = 11, z =2 result = 4 (4-6, 6-8, 8-10, 10-11) def umsteps(x,y,z=1): if y<=x: retur 0 umsteps = (y-x)//z if (y-x)%z: umsteps +=1 retur umsteps 30

<latexit sha1_base64="1hba8pdzmo2peum/lr7q1hverc=">aaab/hicbvbns8naej34wetxtecvi0xwykle0itq9okxgv2anobndtmu3wzc7kysif4vlx4u8eop8ea/cdvmok0pbh7vztazl0g4u9pxvq2l5zxvtfxsrlza3t197bb6k4lyq2scxj2qmwopwj2trmc9pjjmvrwgk7gf1p/pydlyrf4k6pe+pfecbyyajwrvltsk+lkz+xsye/zx5p3dxjuw9xzozbvokbkgqukdh21+9fkzsiapnofaq6zqj9jisnsoc5uveqmicyqgpandqgsoqvgx6fi6ojnjhysxncy2m6u+jdedkjapadezyd9w8nxh/87qpdi+8jikk1vsq2aiw5ujhajie6jnjiezjqzcrznykybbltltjq2xccodfxist05rr1nzbs2r9qoijbadwcmfgwju4qya0aqcy3igv3izqwx6936mluuwcvmbf7a+vwbw2mu1a==</latexit> <latexit sha1_base64="1hba8pdzmo2peum/lr7q1hverc=">aaab/hicbvbns8naej34wetxtecvi0xwykle0itq9okxgv2anobndtmu3wzc7kysif4vlx4u8eop8ea/cdvmok0pbh7vztazl0g4u9pxvq2l5zxvtfxsrlza3t197bb6k4lyq2scxj2qmwopwj2trmc9pjjmvrwgk7gf1p/pydlyrf4k6pe+pfecbyyajwrvltsk+lkz+xsye/zx5p3dxjuw9xzozbvokbkgqukdh21+9fkzsiapnofaq6zqj9jisnsoc5uveqmicyqgpandqgsoqvgx6fi6ojnjhysxncy2m6u+jdedkjapadezyd9w8nxh/87qpdi+8jikk1vsq2aiw5ujhajie6jnjiezjqzcrznykybbltltjq2xccodfxist05rr1nzbs2r9qoijbadwcmfgwju4qya0aqcy3igv3izqwx6936mluuwcvmbf7a+vwbw2mu1a==</latexit> <latexit sha1_base64="1hba8pdzmo2peum/lr7q1hverc=">aaab/hicbvbns8naej34wetxtecvi0xwykle0itq9okxgv2anobndtmu3wzc7kysif4vlx4u8eop8ea/cdvmok0pbh7vztazl0g4u9pxvq2l5zxvtfxsrlza3t197bb6k4lyq2scxj2qmwopwj2trmc9pjjmvrwgk7gf1p/pydlyrf4k6pe+pfecbyyajwrvltsk+lkz+xsye/zx5p3dxjuw9xzozbvokbkgqukdh21+9fkzsiapnofaq6zqj9jisnsoc5uveqmicyqgpandqgsoqvgx6fi6ojnjhysxncy2m6u+jdedkjapadezyd9w8nxh/87qpdi+8jikk1vsq2aiw5ujhajie6jnjiezjqzcrznykybbltltjq2xccodfxist05rr1nzbs2r9qoijbadwcmfgwju4qya0aqcy3igv3izqwx6936mluuwcvmbf7a+vwbw2mu1a==</latexit> <latexit sha1_base64="1hba8pdzmo2peum/lr7q1hverc=">aaab/hicbvbns8naej34wetxtecvi0xwykle0itq9okxgv2anobndtmu3wzc7kysif4vlx4u8eop8ea/cdvmok0pbh7vztazl0g4u9pxvq2l5zxvtfxsrlza3t197bb6k4lyq2scxj2qmwopwj2trmc9pjjmvrwgk7gf1p/pydlyrf4k6pe+pfecbyyajwrvltsk+lkz+xsye/zx5p3dxjuw9xzozbvokbkgqukdh21+9fkzsiapnofaq6zqj9jisnsoc5uveqmicyqgpandqgsoqvgx6fi6ojnjhysxncy2m6u+jdedkjapadezyd9w8nxh/87qpdi+8jikk1vsq2aiw5ujhajie6jnjiezjqzcrznykybbltltjq2xccodfxist05rr1nzbs2r9qoijbadwcmfgwju4qya0aqcy3igv3izqwx6936mluuwcvmbf7a+vwbw2mu1a==</latexit> Συναρτήσεις Τι θα τυπώσει το παρακάτω πρόγραμμα; def fuc(x): res = 0 for i i rage(x): res += i retur res prit(fuc(4)) Δώστε σε ένα μαθηματικό τύπο τι επιστρέφει η συνάρτηση fuc x 1 X i=0 i 31

Συναρτήσεις Τι τυπώνει το καθένα από τα παρακάτω προγράμματα; def fuc(x): retur 5 def fuc(x): retur prit(fuc(5)) prit(fuc(5)) def fuc(x): retur 5 prit(fuc(10)) def fuc(x): pass prit(fuc(10)) 32

Συναρτήσεις και list comprehesio Γράψετε μια συνάρτηση roud(x) που να επιστρέφει τον πιο κοντινό ακέραιο στον x def roud(x): if x-it(x) > 0.5: retur it(x) + 1 else: retur it(x) Συμπληρώστε το παρακάτω πρόγραμμα με μία γραμμή κώδικα ώστε να δημιουργεί μια λίστα Y με τις στρογγυλεμένες τιμές του Χ Χ = [1.2, 2.6, 3.7, 4.1] Υ = [roud(x) for x i X]

Συναρτήσεις και list comprehesio Γράψετε μια γραμμή κώδικα που υπολογίζει το ελάχιστο στοιχείο ενός δισδιάστατου πίνακα Α m = mi([mi(r) for r i A])

Αναδρομικές Συναρτήσεις Γράψτε μια αναδρομική συνάρτηση, η οποία θα υπολογίζει τον μέγιστο κοινό διαιρέτη δύο αριθμών χρησιμοποιώντας τον αλγόριθμο του Ευκλείδη: gcd(a,0) = a gcd(a,b) = gcd(b, a mod b) Π.χ. gcd(48,18) = gcd(18, 12) = gcd(12, 6) = gcd(6, 0) = 6 def gcd(a,b): if b==0: retur a retur gcd(b, a%b) # o-recursive def gcd(a,b): while b: a, b = b, a%b retur a 35

Αναδρομικές Συναρτήσεις Γράψτε μια αναδρομική συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα θετικό ακέραιο και θα επιστρέφει πόσες φορές μπορούμε να διαιρέσουμε το με το 2 (ακέραια διαίρεση) μέχρι το να γίνει 1 Π.χ. = 25 result = 4 def itlog_rec(): if <=1: retur 0 retur 1 + itlog_rec(//2) 36

Ταξινόμηση Τροποποιήστε τη bubblesort ώστε να ταξινομεί μια λίστα αριθμών βάζοντας πρώτα τους ζυγούς σε αύξουσα σειρά και μετά τους μονούς σε φθίνουσα σειρά Π.χ. [2, 5, 6, 4, 3, 0] -> [0, 2, 4, 6, 5, 3] def BubbleSort(lst): for i i rage(le(lst)): # rouds for j i rage(0,le(lst)-i-1): # i-th roud if lst[j]%2 : # odd umber if lst[j+1] % 2 == 0 or lst[j]<lst[j+1]: lst[j],lst[j+1] = lst[j+1],lst[j] else: # eve umber if lst[j+1] % 2 == 0 ad lst[j]>lst[j+1]: lst[j],lst[j+1] = lst[j+1],lst[j] 37

Αρχεία Γράψτε μια συνάρτηση, η οποία θα παίρνει σαν όρισμα ένα όνομα αρχείου, θα διαβάζει το αρχείο και θα γράφει σέ ένα άλλο αρχείο με όνομα stats.txt, τον αριθμό των χαρακτήρων, λέξεων, και γραμμών. Π.χ. testfile.txt Hello, World! How are you? stats.txt 26,5,2 def fstats(fileame): try: f = ope(fileame) s = f.read() except IOError: prit('error readig',fileame) retur g = ope('stats.txt','w') g.write('%d,%d,%d' % (le(s),le(s.split()),s.cout('\')+1)) 38

Αρχεία Έστω ότι υπάρχει στον τρέχοντα κατάλογο το αρχείο testfile.txt όπως δίνεται δίπλα. Τι θα τυπώσει καθεμιά από τις παρακάτω γραμμές προγράμματος; prit(ope("testfile.txt").read(5)) prit(le(ope("testfile.txt").readlies())) prit(le("testfile.txt")) prit(ope("testfile.txt","r+").read(5)) prit(ope("testfile.txt","a").read(5)) prit(ope("testfile.txt","a+").read(5)) testfile.txt Hello, World! How are you? 39

Εξαιρέσεις Γράψτε μια συνάρτηση, η οποία θα ζητάει από το χρήστη να δίνει αριθμούς μέχρι να δώσει κενό. Η συνάρτηση να επιστρέφει τότε το μέσο όρο και τον μεσαίο (media) των αριθμών που έχουν εισαχθεί σαν μια πλειάδα. Αν ο χρήστης εισάγει μη έγκυρο αριθμό, η συνάρτηση θα επιστρέφει τα στατιστικά των μεχρι τότε αριθμών Π.χ. 13 1 2 4 4x result = (5, 4) 40

Εξαιρέσεις (συνέχεια) def stats(): L = [] while True: s = iput() if ot s: break try: L.apped(eval(s)) except: break L.sort() if le(l)>0: retur (float(sum(l))/le(l), L[le(L)//2]) 41

Εξαιρέσεις Ποιος είναι ο μεγαλύτερος αριθμός που θα τυπωθεί από το παρακάτω πρόγραμμα; try: prit(1) prit(5/0) except ZeroDivisioError: prit(3) except: prit(4) 42

Εξαιρέσεις Ποιος είναι το άθροισμα των αριθμών που θα τυπωθούν από το παρακάτω πρόγραμμα; for i i rage(10): try: if 10 / i == 2.0: break except ZeroDivisioError: prit(1) else: prit(2) 43

Τελική Εξέταση Ανοιχτά βιβλία: Μπορείτε να φέρετε μαζί σας τα βιβλία σας (σε έντυπη μορφή) και τις διαφάνειες του μαθήματος (σε έντυπη μορφή) και όποιες άλλες σημειώσεις θέλετε. Απαγορεύεται αυστηρά η ανταλλαγή έντυπου υλικού μεταξή των εξεταζομένων κατά τη διάρκεια της εξέτασης! Διάρκεια: 2:30 ώρες, έγκαιρη προσέλευση! Θέματα με στόχο: Την ανάπτυξη μιας συνάρτησης ή ένός προγράμματος που εκτελεί μια λειτουργία Την κατανόηση ενός δοθέντος προγράμματος ή συνάρτησης Την κατανόηση του χειρισμού των μεταβλητών. 44

Τελική Εξέταση Συμβουλές: Διαβάστε την ύλη προσεκτικά και σιγουρευτείτε ότι την κατανοείτε πλήρως. Εξασκηθείτε στο να βρίσκετε γρήγορα τις διαφάνειες που περιέχουν λεπτομέρειες που πιθανό να μην θυμάστε (π.χ. μεθόδους λιστών). Προετοιμαστείτε με πολλή εξάσκηση. Προσπαθήσετε να λύστε όσο πιο πολλές ασκήσεις μπορείτε. Κοιτάξετε ξανά τις ασκήσεις που κάναμε στο εργαστήριο. Διαβάστε όλα τα θέματα προσεκτικά πριν αρχίσετε να γράφετε. Κάποια από αυτά μπορεί να είναι πιο εύκολα από άλλα. Μην επιχειρήσετε να αντιγράψετε κάτι που δεν το καταλαβαίνετε. 45