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

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

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

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

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

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

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

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

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

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

for for for for( . */

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

Εισαγωγή στους Υπολογιστές

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

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

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

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

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

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

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

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

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

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

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Κεφάλαιο ΙII : Εργαστηριακές ασκήσεις που αφορούν εντολές ελέγχου της ροής ενός προγράµµατος.

Προχωρημένες έννοιες προγραμματισμού σε C

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

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

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

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

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

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

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

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

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

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

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

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

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

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Προγραµµατισµός Η/Υ. Μέρος2

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

Αναδρομικοί Αλγόριθμοι

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εξαιρέσεις Εισαγωγή. Εξαιρέσεις. ηµήτρης Λεβεντέας

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

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

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Python 8. Δομές Δεδομένων ΙΙ

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

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

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

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

o AND o IF o SUMPRODUCT

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

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

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

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

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

ΕΠΛ131 Αρχές Προγραμματισμού

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

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

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

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

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

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

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

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

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

Κρυπτογραφία. Έλεγχος πρώτων αριθών-παραγοντοποίηση. Διαφάνειες: Άρης Παγουρτζής Πέτρος Ποτίκας

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

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

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Transcript:

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

Λίστες όρισµα 2 λίστες και θα επιστρέφει το γινόµενo των 2 «µεσαίων» στοιχείων τους. Π.χ. L1 = [5,1,3,2,4], L2 = [9,2,1,8,0] median(l1) = 3, median(l2) = 2 result = 6 def multimedians(l1,l2): L1.sort() L2.sort() return L1[len(L1)//2]*L2[len(L2)//2] 2

Αλφαριθµητικά όρισµα ένα αλφαριθµητικό, το οποίο θα είναι ένα κείµενο, και θα επιστρέφει τη λέξη µε τους περισσότερους χαρακτήρες. Η συνάρτηση θα πρέπει να µην υπολογίζει τυχόν τελείες ως µέρη των λέξεων. Π.χ. s = I went to the shops today. I bought a cake. result = bought def longest(s): s2 = s.replace('.',' ') l = s2.split() res = '' for w in l: if len(w)>len(res): res = w return res 3

Αλφαριθµητικά όρισµα ένα αλφαριθµητικό και θα επιστρέφει ένα αντίγραφό του, όπου οι τελευταίοι 5 χαρακτήρες θα είναι µε ανεστραµµένη σειρά. Π.χ. s = I went to the market result = I went to the mtekra def rev(s): x = s[-5:] l = list(x) l.reverse() y = ''.join(l) return s[:-5]+y 4

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

Έλεγχος ροής όρισµα µια λίστα και θα επιστρέφει µια νέα λίστα, η οποία θα έχει µόνο τα στοιχεία που δεν είναι 0. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,2,1,3,2,2] def nozeros(l): L2 = [] for x in L: if x!= 0: L2.append(x) return L2 6

Έλεγχος ροής όρισµα µια λίστα και θα επιστρέφει µια νέα λίστα, η οποία θα έχει µόνο τα στοιχεία µέχρι το πρώτο 0. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,2,1] def untilzero(l): L2 = [] for x in L: if x == 0: break L2.append(x) return L2 7

Έλεγχος ροής όρισµα µια λίστα και θα επιστρέφει µια νέα λίστα, η οποία θα έχει µόνο τα στοιχεία µέχρι το πρώτο 0, αλλά χωρίς τα 2. Π.χ. L = [3,2,1,0,3,2,0,2] result = [3,1] def untilzeronotwos(l): L2 = [] for x in L: if x == 0: break if x!= 2: L2.append(x) return L2 8

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

Έλεγχος ροής όρισµα ένα θετικό ακέραιο n και θα τυπώνει τις δυνάµεις του 2 απο το 2 1 εώς το 2 n χωρισµένες µε διαστήµατα Π.χ. n = 6 result = 2 4 8 16 32 64 def powers(n): for i in range(1,n+1): print(pow(2,i), end=' ') 10

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

Έλεγχος ροής όρισµα ένα αλφαριθµητικό και θα επιστρέφει το ακρώνυµό του. Η συνάρτηση θα πρέπει να µετατρέπει τα πεζά σε κεφαλαία όπου χρειάζεται Π.χ. s = central processing unit result = CPU def acronym(s): L = s.split() res = '' for w in L: res = res + w[0].upper() return res 12

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

Έλεγχος ροής όρισµα µια λίστα 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 in range(len(l)): #start index for j in range(i,len(l)): #end index if sum(l[i:j]) > m: m = sum(l[i:j]) return m 14

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

Έλεγχος ροής όρισµα ένα θετικό ακέραιο n και θα επιστρέφει πόσες φορές µπορούµε να διαιρέσουµε το n µε το 2 (ακέραια διαίρεση) µέχρι το n να γίνει 1 Π.χ. n = 25 result = 4 def intlog(n): i=0 while n>1: n//=2 i+=1 return i 16

Συναρτήσεις υποχρεωτικά ορίσµατα δύο αριθµούς 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 numsteps(x,y,z=1): if y<=x: return 0 numsteps = (y-x)//z if (y-x)%z: numsteps +=1 return numsteps 17

Αναδροµικές Συναρτήσεις Γράψτε µια αναδροµική συνάρτηση, η οποία θα υπολογίζει τον µέγιστο κοινό διαιρέτη δύο αριθµών χρησιµοποιώντας τον αλγόριθµο του Ευκλείδη: 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: return a return gcd(b, a%b) # non-recursive def gcd(a,b): while b: a, b = b, a%b return a 18

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

Ταξινόµηση Τροποποιήστε τη bubblesort ώστε να ταξινοµεί µια λίστα αριθµών βάζοντας πρώτα τους ζυγούς σε αύξουσα σειρά και µετά τους µονούς σε φθίνουσα σειρά Π.χ. [2, 5, 6, 4, 3, 0] -> [0, 2, 4, 6, 5, 3] def BubbleSort(lst): for i in range(len(lst)): # rounds for j in range(0,len(lst)-i-1): # i-th round if lst[j]%2 : # odd number if lst[j+1] % 2 == 0 or lst[j]<lst[j+1]: lst[j],lst[j+1] = lst[j+1],lst[j] else: # even number if lst[j+1] % 2 == 0 and lst[j]>lst[j+1]: lst[j],lst[j+1] = lst[j+1],lst[j] 20

Αρχεία όρισµα ένα όνοµα αρχείου, θα διαβάζει το αρχείο και θα γράφει σέ ένα άλλο αρχείο µε όνοµα stats.txt, τον αριθµό των χαρακτήρων, λέξεων, και γραµµών. Π.χ. testfile.txt Hello, World! How are you? stats.txt 26,5,2 def fstats(filename): try: f = open(filename) s = f.read() except IOError: print('error reading',filename) return g = open('stats.txt','w') g.write('%d,%d,%d' % (len(s),len(s.split()),s.count('\n')+1)) 21

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

Εξαιρέσεις (συνέχεια) def stats(): L = [] while True: s = input() if not s: break try: L.append(eval(s)) except: break L.sort() if len(l)>0: return (float(sum(l))/len(l), L[len(L)//2]) 23

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

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