ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ 3 η Διάλεξη
Σκοπός Διάλεξης η παράθεση βασικών εννοιών & εντολών της γλώσσας προγραμματισμού PYTHON & του Ανοικτού Λογισμικού
Ανοικτό Λογισμικό Είναι λογισμικό που μπορεί να χρησιμοποιηθεί, αντιγραφεί, μελετηθεί, τροποποιηθεί και αναδιανεμηθεί χωρίς περιορισμό (GPL) Σκεφτείτε το Ελεύθερο λογισμικό ως αντίστοιχο της ελευθερίας του λόγου και όχι της “δωρεάν μπύρας” (free as in free speech, not free beer)
PYTHON Γλώσσα προγραμματισμού Γλώσσα προγραμματισμού : – Υψηλού επιπέδου – Μεταφράσιμη και όχι μεταγλωτίσιμη (interpreted και όχι compiled) – Ενσωματώνει έτοιμες, υψηλού επιπέδου δομές δεδομένων
PYTHON Βασικά χαρακτηριστικά Βασικά χαρακτηριστικά : – Δεν απαιτείται compile – Δυνατά εργαλεία εξσφαλμάτωσης ( debuging ) – Απλή σύνταξη με ιδιαίτερα εύληπτη μορφή. – Ενσωματώνει έτοιμες, υψηλού επιπέδου δομές δεδομένων – Μεταφέρσιμη γλώσσα – Ευρεία διασυνδεσιμότητα πχ με βιβλιοθήκες άλλων γλωσσών C,C++
PYTHON ΓΙΑΤΙ;;; Γλώσσα υψηλού επιπέδου Γλώσσα υψηλού επιπέδου εγγύτερα στην ανθρώπινη σκέψη εκμάθηση Συνεπώς ευκολότερη εκμάθηση νέοι χρήστες Συνεχώς νέοι χρήστες στρέφονται σε αυτή
PYTHON Μερικοι χρήστες : Google Google (παράδειγμα το Google App Engine) NASA Yahoo! MIT RedHatlinux RedHat και σχεδόν όλες οι διανομές linux
PYTHON εφαρμογές Μερικές εφαρμογές : Γρήγορη προτυποποίηση (prototyping) Προγραμματισμός στον Παγκόσμιο Ιστό Scripting Εκπαίδευση Επιστήμη Εφαρμογές με γραφική διεπαφή
PYTHON
PYTHON Δημιουργός της είναι ο Ολλανδός Guido van Rossum Λόγω της συνεισφοράς του στην δημιουργία και την εξέλιξη της γλώσσας του δόθηκε ο τίτλος Benevolent Dictator for Life (BDFL) Πρωτοεμφανίστηκε τον Δεκέμβριο του 1989 Διάδοχος της γλώσσας ABC
PYTHON Windows Σε περιβάλλον Windows Κατεβάζουμε εύκολα από την επίσημη ιστοσελίδα Επιλέγουμε αναλόγως της μηχανής μας το κατάλληλο binary. Μετά την εγκατάσταση path %path%;C:\Python (command prompt)
PYTHON
PYTHON ΠΛΕΟΝΕΚΤΗΜΑΤΑ (+) Απλή σε σύνταξη Εύκολη στην εκμάθηση Δωρεάν και ανοικτού λογισμικού Γλώσσα Υψηλού Επιπέδου Φορητή Διερμηνευόμενη Αντικειμενοστρεφής
PYTHON ΠΛΕΟΝΕΚΤΗΜΑΤΑ (+) Επεκτάσιμη Ταχύτερη από κάποιες άλλες scripting languages Δεν έχουν τύπους οι μεταβλητές Επαναχρησιμοποίηση Ενσωματώσιμη Εκτεταμένες Βιβλιοθήκες Υποχρεωτικά στοιχισμένος κώδικας
PYTHON ΜΕΙΟΝΕΚΤΗΜΑΤΑ (-) Ευκολία σε λάθη (υποχρεωτικά στοιχισμένος κώδικας) Απόδοση (πιο αργή από την C) Αδυναμία low-level επέμβασης Χρήσιμες βιβλιοθήκες μόνο σε C/C++ Σύγχιση λόγω μετονομοσίας ίδιων βιβλιοθηκών από ένα version σε άλλο ( httplib -> http.client )httplib
PYTHON
PYTHON
PYTHON διερμηνευμένη γλώσσα PYTHON: διερμηνευμένη γλώσσα Σεναριακή λειτουργία-script Διαδραστική λειτουργία
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ Τύπος Δεδομένων Τύπος Δεδομένων: είναι ένα σύνολο τιμών και οι λειτουργίες πάνω σε αυτές Δεν δηλώνεται ρητά ο τύπος δεδομένων στην PYTHON Dynamic typing Dynamic typing Ευελιξία και μικρότερος κώδικας Έλεγχος τύπων κατά την εκτέλεση του λογισμικού Python Compiler Python Compiler -> λιγότερους ελέγχους κατά την μετάφραση
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ a=‘qwerty’ a=2 διερμηνέας Ο διερμηνέας της PYTHON μπορεί να υποδείξει το τύπο δεδομένων Σημασιολογικό (λογικό) Σημασιολογικό (λογικό) λάθος χαρακτήρες διαστήματος αξία PYTHON Οι χαρακτήρες διαστήματος έχουν αξία στην PYTHON
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ Μεταβλητές Μεταβλητές είναι ένας τρόπος αποθήκευσης δεδομένων τιμή μεταβλητής Τα δεδομένα τους (τιμή μεταβλητής) μπορεί να αλλάζει κατά την εκτέλεση του λογισμικού Μεταβλητή Α (variable A) 50 5 ΠΡΙΝΜΕΤΑ
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ num=17 pi=3.14 atomo = ‘technician’ atomo = ‘cut iron’ Λέξεις -Κλειδιά
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ Boolean εκφράσεις Boolean εκφράσεις 4 == 4 (true) 3 == 8 (false) NOT AND OR
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ a = 3 b = 1 a > b True c = 11 a > b and a > c False
PYTHON ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΒΑΣΙΚΟΙ ΤΕΛΕΣΤΕΣ Τελεστές (operators) Τελεστές (operators) Πράξεις + - * / ** % Σύγκρισης == != > = <=
PYTHON ΑΡΙΘΜΗΤΙΚΗ Η PYTHON μπορεί να χρησιμοποιηθεί ως αρθμομηχανή (χρήση βασικών πράξεων)
PYTHON ΑΡΙΘΜΗΤΙΚΗ d: δεκαδικοί αριθμοί b: δυαδικοί αριθμοί o: οκταδικοί αριθμοί x: δεκαεξαδικοί αριθμοί print (‘value = (0:2d)’.format(12)) # value=12 print (‘value = (0:2b)’.format(12) ) # value=1100 Αριθμοί κινητής υποδιαστολής print (‘x = (0:5.3f)’.format( )) # x = print (‘x = (0.12.6f)’.format( )) # x =
PYTHON ΑΡΙΘΜΗΤΙΚΗ Αριθμοί κινητής υποδιαστολής d: δεκαδικοί αριθμοί b: δυαδικοί αριθμοί o: οκταδικοί αριθμοί x: δεκαεξαδικοί αριθμοί
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ Εξαγωγή δεδομένων Εξαγωγή δεδομένων print (εκτύπωση) pi=3.142 print (pi**2)
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ Πράξεις (αριθμητικές) Πράξεις (αριθμητικές)
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ Πράξεις (strings) Πράξεις (strings) =
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ μαθηματικέςσυναρτήσεις Πράξεις -> μαθηματικές συναρτήσεις Για εισαγωγή όλων των συναρτήσεων μιας βιβλιοθήκης
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ Εισαγωγή δεδομένων Εισαγωγή δεδομένων Input (PYTHON 3.x) Input raw (PYTHON 2.x) Αλλαγή γραμμής (newline)
PYTHON ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ Σχόλια Σχόλια # ………………
PYTHON ΕΛΕΓΧΟΣ ΡΟΗΣ ΛΟΓΙΣΜΙΚΟΥ Δομή ελέγχου if condition: … else : [else : …] a = int(input( ‘factor a: ‘)) b=float(input(‘factor b :’)) If a == 0: print (“The a = 0”) else: 1. print (“The a <> 0”) If b == 0 Z = a+b Εσωτερικές εντολές
PYTHON ΕΛΕΓΧΟΣ ΡΟΗΣ ΛΟΓΙΣΜΙΚΟΥ If…elif…else… If…elif…else… (αντί switch, αντίστοιχη της else if)
PYTHON ΕΛΕΓΧΟΣ ΡΟΗΣ ΛΟΓΙΣΜΙΚΟΥ break: εντολή εξόδου από κάποιο σώμα (ή βρόχο ) εντολών break: εντολή εξόδου από κάποιο σώμα (ή βρόχο ) εντολών Χρήση μόνο όπου δεν γίνεται αλλιώς Χρήση μόνο όπου δεν γίνεται αλλιώς if (a > b*5): print (x) print (y) break else: print z T = 56 + x * y
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ Ορισμός συνάρτησης (def) Ορισμός συνάρτησης (def) Όρισμα
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ οι συναρτήσεις μπορούν να αποτελούνται από πολλές γραμμές κώδικα οι συναρτήσεις να καλούν άλλες συναρτήσεις οι συναρτήσεις δεν είναι υποχρεωτικό να επιστρέφουν μια αριθμητική τιμή αλλά οτιδήποτε
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ Η συνάρτηση remainder υπολογίζει και επιστρέφει το υπόλοιπο της διαίρεσης δυο ακεραίων αριθμών - Η συνάρτηση remainder υπολογίζει και επιστρέφει το υπόλοιπο της διαίρεσης δυο ακεραίων αριθμών - Στη συνέχεια η check_odd_or_even καλεί την remainder για να διαπιστώσει αν κάποιος ακέραιος είναι περιττός (odd) ή άρτιος (even)
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ οι συναρτήσεις μπορούν να αποτελούνται από πολλές γραμμές κώδικα οι συναρτήσεις να καλούν άλλες συναρτήσεις οι συναρτήσεις δεν είναι υποχρεωτικό να επιστρέφουν μια αριθμητική τιμή αλλά οτιδήποτε
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ - Αυτό το πρόγραμμα περιέχει δύο ορισμούς συνάρτησης: τον print_lyrics και τον repeat_lyrics Οι ορισμοί των συναρτήσεων εκτελούνται ακριβώς όπως οι άλλες δηλώσεις αλλά το αποτέλεσμα είναι η δημιουργία αντικειμένων συναρτήσεων - Οι ορισμοί των συναρτήσεων εκτελούνται ακριβώς όπως οι άλλες δηλώσεις αλλά το αποτέλεσμα είναι η δημιουργία αντικειμένων συναρτήσεων - Οι δηλώσεις μέσα στη συνάρτηση δεν εκτελούνται μέχρις ότου να καλεστεί η συνάρτηση, και ο ορισμός της συνάρτησης δεν παράγει καμία έξοδο
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ μέσα στην συνάρτηση, τα ορίσματα εκχωρούνται σε μεταβλητές οι οποίες ονομάζονται παράμετροι παράδειγμα συνάρτησης ορισμένης από το χρήστη η οποία παίρνει ένα όρισμα: - Οι ίδιοι κανόνες σύνθεσης που εφαρμόζονται στις ενσωματωμένες συναρτήσεις, ισχύουν και στις οριζόμενες από το χρήστη συναρτήσεις - Άρα μπορούμε να χρησιμοποιήσουμε οποιοδήποτε είδος έκφρασης σαν όρισμα για την print_twice
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ - Το όρισμα αποτιμάται πριν την κλήση της συνάρτησης
PYTHON ΣΥΝΑΡΤΗΣΕΙΣ τοπική (local), Όταν δημιουργείτε μια μεταβλητή μέσα σε μια συνάρτηση, είναι τοπική (local), το οποίο σημαίνει ότι υφίσταται μόνο μέσα στη συνάρτηση Αυτή η συνάρτηση παίρνει δύο ορίσματα, τα συνενώνει και εμφανίζει το αποτέλεσμα δύο φορές Όταν η cat_twice τερματίσει η μεταβλητή cat καταστρέφεται
PYTHON ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ for for >>> for x in [0, 1, 2, 3, 4]: print 'Για x=', x, ' f(x)=',f(x) Για x= 0 f(x)= -2.8 Για x= 1 f(x)= Για x= 2 f(x)= Για x= 3 f(x)= Για x= 4 f(x)= Λίστα
PYTHON ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ for (int i= 0; i < 5; i++) (C/C++) for (int i : IntArray) (Java) for i in range (0,5) (Python) O βρόχος for είναι πιο απλός, πιο εκφραστικός και λιγότερο ευπαθής σε σφάλματα στην Python
PYTHON ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ for i in range(18) a = i * 5 print (a, end ‘ ‘) το i θα πέρει διαδοχικές τιμές από 0 – 17 το σώμα του βρόχου θα εκτελεστεί 18 φορές η range() δουλεύει μόνο για ακέραιους αριθμούς σώμα βρόχου – body loop
PYTHON ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ for i in range (100,106) print (i, end=‘ ‘) for i in range (100,110,2) print (i, end=‘ ‘)
PYTHON ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ
PYTHON
PYTHON while condition: while condition: …………… [True] …………… [True] sum=0 while a<50: sum +=a print (sum)
PYTHON ΠΑΡΑΔΕΙΓΜΑ IDLE περιβάλλον
PYTHON ΠΑΡΑΔΕΙΓΜΑ
PYTHON ΠΑΡΑΔΕΙΓΜΑ
PYTHON ΠΑΡΑΔΕΙΓΜΑ
PYTHON ΠΑΡΑΔΕΙΓΜΑ
PYTHON ΠΑΡΑΔΕΙΓΜΑ
PYTHON CASE STUDY Μια ιδιωτική εταιρεία αποφάσισε να εφαρμόσει ενιαία πολιτική στη μισθοδοσία του προσωπικού της. Έτσι, ο βασικός μισθός είναι 1200 €. Για τους αποφοίτους ΑΕΙ/ΤΕΙ υπάρχει επίδομα 20% ενώ αν κάποιος διαθέτει μεταπτυχιακό τίτλο τότε το επίδομα σπουδών γίνεται 29%. Επιπρόσθετα, κάθε υπάλληλος λαμβάνει χρονοεπίδομα 15% επί του βασικού μισθού αν βρίσκεται μέχρι και 5 χρόνια στην εταιρεία, 25% αν βρίσκεται μέχρι και 15 χρόνια ενώ 35% αν εργάζεται περισσότερα από 15 χρόνια στην εταιρεία. Να αναπτύξετε αλγόριθμο που θα διαβάζει το όνομα του μισθωτού, το επίπεδο σπουδών (1. βασική εκπαίδευση, 2. ΑΕΙ/ΤΕΙ και 3. Μεταπτυχιακές σπουδές) καθώς και τα έτη υπηρεσίας και στη συνέχεια να υπολογίζει και να εκτυπώνει τις μηνιαίες αποδοχές του
Σας ευχαριστώ για την προσοχή σας…