Object Oriented Programming με Python

Σχετικά έγγραφα
Array-based sequences

Η γλώσσα προγραμματισμού Python

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

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

Εισαγωγή στον Προγραμματισμό με την Python 3. Βασίλης Βασιλάκης Γιώργος Μπουκέας

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

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

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

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

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

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

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

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

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

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

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

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

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

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

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

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

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

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

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

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

ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ. 1) Έστω η λογική συνάρτηση F = A' + Β'. D + B. C' + C. D' (όπου οι τόνοι δηλώνουν συμπληρώματα).

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

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

4 η Διάλεξη Python - Συναρτήσεις

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

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

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

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

String Handling ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Εισαγωγικό Φροντιστήριο

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

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ- Ακαδημαϊκό Φροντιστήριο ΕΠΑΛ-Κάνιγγος 13 Αθήνα 2017

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

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

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

Λογισµικό (Software SW) Γλώσσες

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

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

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

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

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

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

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

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

Γλώσσες Προγραμματισμού Ι

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

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

Α1. 1-Σωστό 2-Λάθος 3-Λάθος 4-Σωστό 5-Σωστό

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

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

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

Δραστηριότητα 2 a, b = 0,1 a,b = b,a

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Γλωσσική Τεχνολογία. Object-Orientation in Python

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Παράδειγμα. print (random.sample('christos drosos',3)) #3 στοιχεία από το δείγμα print (random.gauss(0,1)) #μέση τιμή 0 και απόκλιση 1

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

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

Χωρική Βάση δεδοµένων Autocad

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

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

Αναφορές, είκτες και Αλφαριθμητικά

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

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

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

Γλώσσες Προγραμματισμού Εφαρμογών - ΜΕΠΒ20

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

Προγραµµατιστικές τεχνικές

8 FORTRAN 77/90/95/2003

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

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

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

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

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

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

Διάλεξη 6: Δείκτες και Πίνακες

HY150a Φροντιστήριο 3 24/11/2017

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

Transcript:

ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές Object Oriented Programming με Python Νίκος Αθανάσης e-mail: athanasis@geo.aegean.gr

i = 1 while i<=10: print(i, end="\t") i+=1 Υλοποιήστε το ισοδύναμο με for Να γράψετε πρόγραμμα όπου θα ζητείται η ηλικία του χρήστη και θα γίνεται έλεγχος εγκυρότητας i = 1 while i<=10: print(i, end="\t") i+=1 for i in range(1, 11): print(i, end="\t") age = int(input("age:")) while age<=0: print("invalid input. Type again your age") age = int(input("age:")) print("your age is: {0}". format(age))

import math x = int(input("give x :")) print("done 1") print(x) y = 1/x print("done 2") print (y) z = math.sqrt(-1*y) print("done 3") print (z) try: filename = input("give Filename: ") fp = open(filename) print ("Content of the file: ". format (fp.name)) line = fp.readlines() print ("Read Line: {0}". format (line)) fp.close() except IOError as e: print("unable to open the file:", e) try: val = int(input( "Give me a number:" )) except (Exception): print( "Invalid response") for i in range(1,20): print(i,end='') for i in range(5,100, 5): print(i,end='\t') for season in ["Spring", "Summer", "Autumn", "Winter"]: print("season" + season)

import math try: x = int(input("give x :")) print("done 1") print(x) y = 1/x print("done 2") print (y) z = math.sqrt(-1*y) print("done 3") print (z) except (ValueError): print("invalid value") except (ZeroDivisionError): print("division by 0") import math try: x = int(input("give x :")) print("done 1") print(x) y = 1/x print("done 2") print (y) z = math.sqrt(-1*y) print("done 3") print (z) except ValueError as e: print(e) except ZeroDivisionError as e: print(e)

for i in range(1,20): print(i,end='') print() for i in range(5,100, 5): print(i,end='\t') print() name = input("give name :") for char in name: print (char, end=",") print() for season in ["Spring", "Summer", "Autumn", "Winter"]: print(season) Να γραφτεί πρόγραμμα στην Python που θα δίνεται ένα string και να υπολογίζει το πλήθος των ψηφίων και το πλήθος των γραμμάτων def calcalphadigits(s): d=l=0 for c in s: if c.isdigit(): d=d+1 elif c.isalpha(): l=l+1 print("letters", l) print("digits", d) s = input("give a string") calcalphadigits(s)

(Ι) Να γράψετε μια συνάρτηση που θα υπολογίζει το άθροισμα τριών δοθέντων αριθμών εάν οι τιμές δεν είναι ίσες μεταξύ τους και το τριπλάσιο τους σε περίπτωση που είναι ίσες. (ΙΙ) Να γράψετε μια συνάρτηση που θα δέχεται μια φράση και θα την αντιστρέφει (ΙΙΙ) Να γράψετε μια συνάρτηση που θα ελέγχει αν μια διεύθυνση IP είναι έγκυρη. Για περισσότερες πληροφορίες σχετικά με την εγκυρότητα IPs: http://www.noip.com/support/knowledg ebase/what-is-a-valid-ip-address/ (ΙV) Δίνεται μια σειρά από αριθμούς χωρισμένους από, πχ 4,5,6,2 από όπου θα κατασκευάζεται το παρακάτω σχήμα **** ***** ****** **

def sum_thrice(x, y, z): Λύση I sum = x + y + z if x == y == z: sum = sum * 3 return sum a = int(input("give a number")) b =int(input("give a number")) c =int(input("give a number")) sum = sum_thrice(a,b,c) print(sum)

Λύση II word = input("dwse string:") cnt = 0 for i in range(len(word)): print(word[len(word)-1-cnt], end="") cnt+=1 OR word = input("input a word to reverse: ") cnt=1 for i in range(1,len(word)+1): print(word[-i], end="") OR word = input("input a word to reverse: ") for char in range(len(word) - 1, -1, -1): print(word[char], end="")

Αντικειμενοστραφής Προγραμματισμός Περιγραφή και αναπαράσταση των στοιχείων του πραγµατικού χώρου ως αντικείµενα έτσι ώστε η επίλυση ενός προβλήµατος να χρησιµοποιεί έννοιες οι οποίες πηγάζουν άµεσα από το πρόβληµα. Έτσι η περιγραφή του προβλήµατος µέσω του προγράµµατος γίνεται µέ τους όρους του προβλήµατος και όχι της µηχανής.

Αντικειμενοστραφής Προγραμματισμός Έμφαση δίνεται στα αντικείμενα και στον τρόπο αλληλεπίδρασής τους Κλάση (class): Μια αφηρημένη έννοια (οντότητα) που περιγράφει τον τρόπο με τον οποίο τα αντικείμενα επικοινωνούν με το περιβάλλον Στιγμιότυπo (instance / object): το πραγματικό αντικείμενο που περιγράφεται αφαιρετικά από την κλάση. Τα αντίκείμενα ανήκουν σε μια (τουλάχιστον) κλάση (an object is an instance of a class) Κάθε οντότητα χαρακτηρίζεται από Χαρακτηριστικά (attributes / fields): όπως για παράδειγµα το µέγεθος, το χρώµα, το βάρος κλπ. Αλλιώς λέγονται instance variables ή data members Συµπεριφορές (behaviours): τι δηλαδή µπορεί να κάνει ένα αντικείµενο, πως ανταποκρίνεται και πως λειτουργεί. Τα behaviours ρίζονται από τις member functions

Χαρακτηριστικά Object Oriented Programming Ευρωστία Προσαρμοστικότητα portability επαναχρησιμοποίηση Τμηματοποίηση Math, δομές δεομένων Αφαιρετικότητα Ενθυλάκωση

Χαρακτηριστικά Robustness (Ευρωστία): Το σύστημα μπορεί να χειρίζεται απροσδόκητες ροές πληροφορίας Adaptability (Προσαρμοστικότητα): Το σύστημα μπορεί να προσαρμόζεται με βάση τις υπάρχουσες ανάγκες της τεχνολογίας

Χαρακτηριστικά Reusability (επαναχρησιμοποίηση): Ο ίδιος κώδικας μπορεί να χρησιμοποιηθεί από διαφορετικά συστήματα και εφαρμογές Modularity (Τμηματοποίηση ): Το σύνθετο σύστημα αποτελείται από επιμέρους τμήματα που αλληλεπιδρούν μεταξύ τους

Χαρακτηριστικά Abstraction (Αφαιρετικότητα): Το σύνθετο σύστημα αποτελείται από επιμέρους τμήματα σε μια ιεραρχική δομή

Χαρακτηριστικά Encapsulation (Ενθυλάκωση): Το κάθε τμήμα «κρύβει» τα χαρακτηριστικά του από τα υπόλοιπα

Class Diagram για την κλάση CreditCard

Παραδείγματα Credit Card Cars University Εργασία

Arrays (Πίνακες) Lists [1,2,3] Tuples (1,2,3) Strings 1,2,3 Όλα υποστηρίζουν δείκτες (πχ l[1], t[0], s[2])

Αναπαράσταση μνήμης RAM του υπολογιστή Συνεχόμενες θέσεις μνήμης v Οι 6 χαρακτήρες του αλφαριθμητικού SAMPLE αποθηκεύονται σε 12 bytes μνήμης Κάθε θέση (κελί) στο array χρησιμοποιεί τον ίδιο αριθμό από bytes Κάθε κελί είναι άμεσα προσβάσιμο μέσω του τύπου Start + (Cellsize) * index

temp[2] = 15

Όλα τα κελιά αναφέρονται στο ίδιο αντικείμενο Counters = [0] * 8 counters[2]+=1 Το κελί στη θέση 2 δείχνει σε μια νέα θέση μνήμης.

primes = [2,3,5,7,11,13,17,19] extras = [23,29,31] primes.extend(extras) print(primes)

fruits = ['apple', 'pear', 'banana', 'kiwi', 'apple', 'pineapple'] print (fruits) print (len(fruits)) print (fruits.count('grape')) print(fruits[0:2]) print(fruits.count('apple')) print(fruits.count('anana')) fruits.reverse() print(fruits) fruits.append('grape') fruits.insert(1, "grape fruit") print(fruits) fruits.sort() print(fruits) forest_fruits = ['strawberries', 'raspberries', 'blueberries'] fruits.extend(forest_fruits) print(fruits) fruits.remove("apple") for fruit in fruits: print(fruit,end=',')

vec = [-4, -2, 0, 2, 4] vec2 = [x*2 for x in vec] print (vec2) vec3 = [x for x in vec if x >= 0] print(vec3) vec4 = [abs(x) for x in vec] print(vec4) names = [' nick dimitriou', ' jack zahariou', ' maria anastasiou '] names2= [name.strip() for name in names] print (names2) vec5 = [(x, x+1) for x in range(6)] print(vec5)

Tuples (πλειάδες) t = 12345, 54321, 'hello! u = t, (1, 2, 3, 4, 5) Οι λίστες είναι are mutable (μεταβλητά αντικείμενα), και περιέχουν στοιχεια ίδιου τύπου Οι πλειάδες είναι μη μεταβλητά αντικείμενα (immutable) και συνήθως διαφορετικών τύπων

Sets (σειρές): Μη διατεταγμένα στοιχεία, χωρίς διπλότυπες εγγραφές basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} print (basket) print (sorted(basket)) has_orange = ' orange' in basket print("has organge:{}".format(has_orange)) a = set('abcdd') b = set('abcce') print(a) c = a-b print(c)

Dictionaries (λεξικά) Αντί να χρησιμοποιούν ως δείκτη έναν αριθμό, χρησιμοποιούν ένα key tel = {'nick': 697112233, 'jim': 697445566} print (tel) print (tel['nick']) dict([("nick", 697112233), ("jim", 697445566)]) dict(nick= 697112233, jim= 697445566) tel['sofia'] = 698119988 print (tel) del tel['jim'] tel['nick'] = 698667755 keys_list = list(tel.keys()) print(keys_list) keys_list = sorted(keys_list) print(keys_list) print('jim' in tel) print('jack' not in tel)

Iterations names = ['Nick', 'Jack', 'Jim'] for i, v in enumerate(names): print(i, v) LastNames = ['Athanasis', 'Dimitriou', 'Zahariou'] for n, l in zip(names, LastNames): print('name: {0}.\tLast name: {1}.'.format(n, l))