Η γλώσσα προγραμματισμούPython στο ΕΠΑ.Λ.
• Αρχές Προγραμματισμού Υπολογιστών (από το 2015)
• Β ΕΠΑΛ, 4 ώρες (1Θ + 3Ε) (2η έκδοση 2017)
• Προγραμματισμός Υπολογιστών (από το 2016)
• Γ ΕΠΑΛ, 5 ώρες (3Θ + 2Ε)
• Διορθωμένη 2η έκδοση 2017
• Τετράδιο εργασιών
• Τεύχος Λύσεων
• Οδηγίες για τον/την εκπαιδευτικό
• Η μαγική λέξη: Εμβάθυνση
• Τι γνώσεις πρέπει να έχουν οι μαθητές από τη Β’ Λυκείου ?
• Βασικές δομές (τύποι / μεταβλητές / επιλογή / επανάληψη)
• Βασικές έννοιες για λίστες/αλφαριθμητικά
• Δημιουργία απλών συναρτήσεων
• Μπορεί να γίνει σε 4x25 = 100 ώρες?
3.
Χαρακτηριστικά της Python
•Εξαιρετικά απότομη καμπύλη μάθησης
• Χρησιμοποιείται ευρέως
• YouTube, DropBox, Google, Instagram, NASA, BitTorrent, Calibre,
reddit, Spotify, Quora, chatGPT, BardAI
• Υποστηρίζει τρία διαφορετικά είδη προγραμματισμού
• Τεράστια κοινότητα (σημειώσεις, βιβλία, υλικό, MOOCS)
• Μεγάλη ποικιλία βιβλιοθηκών, απεριόριστες εφαρμογές
• case sensitive PyThOn ≠ Python Print ≠ print
• Είναι ελεύθερο λογισμικό
• Δωρεάν και ανοικτού κώδικα
• Μάθηση μέσω διερεύνησης – πειραματισμού στον διερμηνευτή
• Είναι απλή σαν … ψευδογλώσσα
4.
Βρέθηκε Ψευδής
i 1
Όσο i <= N και όχι Βρέθηκε Επανάλαβε
j 1
Όσο j <= N και όχι Βρέθηκε Επανάλαβε
Αν A[ i , j] = key Τότε
Βρέθηκε Αληθής
Τέλος_Αν
j j + 1
Τέλος_Επανάληψης
i i + 1
Τέλος_Επανάληψης
def linearSearch2D( A, key ) :
for row in A :
for item in row :
if item == key :
return True
return False
Προγραμματισμός στα Ελληνικά vs Αλγοριθμική;
5.
Οι Εντολές εκτελούνταιγια
κάθε στοιχείο της λίστας.
Η εντολή επανάληψης for για διάσχιση λίστας
Οι Εντολές εκτελούνται τόσες φορές όσες είναι και τα
στοιχεία της λίστας. (θυμίζει την foreach )
for item in List :
<Εντολές>
strangeList = [6, False, “False”, [ 0,1 ], [ ], [ [ ] ] ]
for element in strangeList:
print( 3*element, end = “ ” )
18 0 FalseFalseFalse [0,1,0,1,0,1] [ ] [ [ ], [ ], [ ] ]
Προαπαιτούμενες Γνώσεις γιατο μάθημα του
Προγραμματισμού Η/Υ Γ’ τάξης
• Υπενθύμιση: 1Θ + 3Ε
• Εξοικείωση με το περιβάλλον προγραμματισμού
(όποιο και αν είναι αυτό ☺)
• Αλγοριθμικές Δομές
• Λίστες – Αλφαριθμητικά (πολύ σημαντικό!)
• Σειριακή Αναζήτηση
• Δημιουργία Συναρτήσεων
Άρα τα παραπάνω τα υπενθυμίζουμε στα πρώτα μαθήματα της Γ’ ή
έστω ελέγχουμε με ένα διαγνωστικό τεστ το βαθμό κατανόησης /
εξοικείωσης των μαθητών/τριών
Προσοχή!! Παρακολούθηση Ύλης
Δηλώνουμετον αριθμό της σελίδας στην οποία βρισκόμαστε για κάθε
ένα από τα δυο μαθήματα. Άρα δίνουμε απλά έναν αριθμό, όπως
φαίνεται παρακάτω:
Στο τέλος δηλώνουμε…….. ΤΕΛΟΣ.
Βιβλία και ΟδηγίεςΔιδασκαλίας στο ΙΕΠ
Από τις συγγραφικές ομάδες (2015)
https://www.iep.edu.gr/el/component/k2/19-tomeas-pliroforikis
Προσοχή δεν ισχύουν σήμερα. Δεν
θεωρούνται επίσημες οδηγίες
Ο διερμηνευτής τηςPython και το IDLE
Τα σημαντικότερα προβλήματα που εντοπίσαμε κατά τη χρήση του
περιβάλλοντος προγραμματισμού IDLE (εκτός από τον καθαρισμό
του prompt ☺ ) ήταν δυο:
• Η παρανόηση που είχαν οι μαθητές ότι ο διερμηνευτής
συμπεριφέρεται ως συντάκτης κώδικα. Δεν είχαν καταλάβει ότι
αυτό που έβλεπαν στην οθόνη ήταν το ιστορικό των εντολών που
έχουν δώσει το οποίο δεν μπορεί να διορθωθεί.
• Η λάθος στοίχιση εντολών οδηγεί σε συντακτικά λάθη. Πολλοί
μαθητές είτε δεν πετύχαιναν τη σωστή στοίχιση είτε ξεχνούσαν το
σύμβολο ‘:’ που υποδηλώνει την αρχή ενός μπλοκ εντολών.
for i inrange(A,M+1) ≠ Για i από Α μέχρι Μ
• Προσοχή!!! Μην συγχέετε τη for με τη Για πού ξέρουμε από το μάθημα
της ΑΕΠΠ. Έχουν διαφορετική λειτουργία
for i in range(1,5):
print i,
1 2 3 4
>>> print i
4
Για i από 1 μέχρι 4
Γράψε i
1 2 3 4
>>> Γράψε i
5
for i in [1, 2, 3, 4]:
for i in range(1,5): =
Αυτό πρέπει να εξηγήσουμε στους μαθητές
39.
range: Διδακτική προσέγγιση
fori in [0,1,2,3,4]:
print i,
for i in range(5):
print i,
for i in range(0,5):
print i,
[0, 2, 4, 6, 8]
range(0,10, 2): =
Εκτελέστε τις παρακάτω εντολές. Τι παρατηρείτε; Με ποια εντολή θα
εμφανίσουμε όλους τους αριθμούς από 1 έως και 100;
Η range ικανοποιεί την αναγκαιότητα της αυτόματης παραγωγής μια
λίστας πολλών αριθμών.
40.
Διδακτική Προσέγγιση: Ησυνάρτηση range
• Να εκτελέσετε στον διερμηνευτή της Python τις
παρακάτω εντολές. Να περιγράψετε τη λειτουργία της
συνάρτησης (εντολής?) range .
>>> range( 5 )
???
>>> range(1, 5)
???
>>> range(1, 10, 2)
???
>>> range(10, 1, -2)
???
>>> range(0)
???
>>> range(1)
???
>>> range(–1)
???
>>> range(–100)
???
41.
Διδακτική Προσέγγιση: Ησυνάρτηση range
• Να εκτελέσετε στον διερμηνευτή της Python τις
παρακάτω εντολές. Να περιγράψετε τη λειτουργία της
συνάρτησης (εντολής?) range .
>>> range( 5 )
[0, 1, 2, 3, 4]
>>> range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> range(1, 5)
[1, 2, 3, 4]
>>> range(1, 10, 2)
[1, 3, 5, 7, 9]
>>> range(0)
[ ]
>>> range(1)
[ 0 ]
>>> range(10, 1, -2)
[10, 8, 6, 4, 2]
>>> range(–100)
[ ]
42.
Οι μαθητές συγχέουντη λειτουργία της print σε μια συνάρτηση με
τη λειτουργία της return
Επιστροφή από συναρτήσεις
Το πιθανότερο είναι ότι έπρεπε να ακολουθήσουμε διαφορετική
διδακτική στρατηγική και να δώσουμε περισσότερο βάρος στην
λειτουργία της return.
43.
Διδακτική Στρατηγική: Διερεύνηση
•Σταπρώτα μαθήματα πρέπει να εκμεταλλευτούμε τον
διερμηνευτή
•Οι μαθητές μπορούν να πειραματιστούν με εντολές της
Python και να διερευνήσουν τη λειτουργία τους
•Όλες οι νέες έννοιες πρέπει πρώτα να δοκιμάζονται από
τους μαθητές στον διερμηνευτή και όχι να
παρουσιάζονται σε μορφή ολοκληρωμένου
προγράμματος
•Επίλυση προβλήματος (Ανακάλυψη) vs. Διερεύνηση
•Top Down vs. Bottom Up
44.
Διδακτική Προσέγγιση: Παράδειγμα
•Ναεκτελέσετε στον διερμηνευτή της Python τις
παρακάτω εντολές
• Να εξηγήσετε τα αποτελέσματα. Ποιο γράμμα είναι
στη θέση 7 της λέξης και ποιο στη θέση 1;
• Με αντίστοιχο τρόπο να εμφανίσετε τις παρακάτω
λέξεις: zizanio, zig zag , anna
>>> word = “zanneio gymnasio”
>>> word[0]+word[7]+word[9]+word[7]+word[8]
‘z y g’
45.
• Προσοχή!!! Ηεσοχή του μπλοκ εντολών της if καθορίζει ποιες
εντολές θα εκτελεστούν
• (εσοχή = εμφωλευμένη δομή = 4 κενά ή tab)
• Κλασικό λάθος: Ξεχνάμε το “ : ”
• Τι θα εμφανίσουν τα παραπάνω τμήματα κώδικα για x=0;
if x <= 0 :
print ( “αρνητικός” )
print ( “ή μηδέν” )
else :
print ( “θετικός” )
print ( “αριθμός” )
if x <= 0 :
print ( “αρνητικός” )
print ( “ή μηδέν ” )
else :
print ( “θετικός” )
print ( “αριθμός” )
Επιλέγουμε ☺
46.
Προσοχή στις εσοχές!!!
Ανκάτι μπορεί να πάει στραβά θα πάει ότι και να κάνουμε
def factorial( n):
fact = 1
for i in range( 1, n+1 ):
fact = fact * i
return fact
>>> factorial(100)
1
Κλασικό λάθος: Οι μαθητές ξεχνούν το : και το βάζουν εκ
των υστέρων χωρίς όμως να διορθώσουν και τη στοίχιση
Θα μπορούσε να γίνει άσκηση: Βρες το λάθος ☺
47.
Προσοχή στις εσοχές!!!
Ναξαναγράψετε την παρακάτω συνάρτηση θέτοντας τις σωστές
εσοχές.
def doSomething( n):
Sum = 1
for i in range( 1, n+1 ):
if i % 5 == 0 :
Sum = Sum + i
return fact
48.
Προσοχή στις εσοχές!!!
Πόσεςφορές θα εκτελεστεί η εντολή στην γραμμή 3 και πόσες φορές
η εντολή στη γραμμή 5;
1: i = 0
2: while i <= 10 :
3: s = s + i
4: i = i + 1
5: i = i + 5
49.
Διαχωρισμός Λίστας
• Ναγράψετε ένα πρόγραμμα το οποίο δεδομένης μια λίστας ακέραιων
αριθμών θα διαχωρίζει τους αριθμούς σε δυο νέες λίστες, μια για τους
θετικούς και μια για τους αρνητικούς, διατηρώντας τη σχετική σειρά μεταξύ
τους
positives = [ ]
negatives = [ ]
for number in numbers : # γλιτώνουμε τους μετρητές
if number > 0 : # για κάθε πίνακα
positives += [ number ]
elif number < 0 :
negatives += [ number ]
Πηγές για εκμάθησητης γλώσσας Python
http://pythonies.mysch.gr/
Δωρεάν online βιβλία
Python for everybody : Exploring Data in Python3)
https://www.py4e.com/book
Learn Python the Hard Way
https://learnpythonthehardway.org/book
Think Python: How to think like a computer scientist
http://greenteapress.com/thinkpython/thinkpython.pdf
Μόνο το Think Python είναι σε Python 2.