Το Στέκι των Πληροφορικών

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: evry στις 16 Νοε 2016, 09:52:57 ΠΜ

Τίτλος: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 16 Νοε 2016, 09:52:57 ΠΜ
Σε αυτό το thread θα πρότεινα όσοι συνάδελφοι κάνουν το μάθημα και εντοπίσουν λάθη ή προβλήματα στο βιβλίο να τα αναφέρουν εδώ ώστε να τα μαζέψουμε και να τα διορθώσουμε στην επόμενη έκδοση.

Προς το παρόν ανεβάζω διορθωμένες τις σελίδες 73-74 και 143-145.
Τα σημεία που πρέπει να προσέξουμε είναι:

ΥΓ. Προσοχή!!! Οι διορθώσεις δεν είναι επίσημες. απλά για να διεκολυνθεί το δύσκολο έργο των συναδέλφων φέτος

edit: τελευταία έκδοση διορθώσεις 1.2
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 20 Νοε 2016, 02:40:34 ΜΜ
Ερώτηση

Γιατί ξαφνικά στο κεφάλαιο αυτό χρησιμοποιήσετε τον τελεστή // ενώ μέχρι πριν στο βιβλίο δεν γίνεται καμία αναφορά;

π.χ στην ηλεκτρονική έκδοση σελίδα 75 αναφέρεται η εντολή mid = ( first + last ) // 2, όπως και εδώ στις διορθώσεις υπάρχει η ίδια εντολή

Υπάρχει λόγος που δεν γράφεται απλά mid = ( first + last ) / 2 ; Δεν έχει διαφορά, απλά γιατί εισάγουμε νέο τελεστή ξαφνικά;


Επίσης μήπως θα έπρεπε στις διορθώσεις να ειναι
answer =raw_input("Είναι ο αριθμός ο " + str(mid) + " ? (N/O)" )
αντί για answer = input("Είναι ο αριθμός ο " + str(mid) + " ? (N/O)" )
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 20 Νοε 2016, 02:53:52 ΜΜ
.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: polikarpos στις 20 Νοε 2016, 04:49:49 ΜΜ
διόρθωση σελίδα 71
το 15>8 να αντικασταθεί με  11>8


Γιάννη Αναγνωστάκη
Η απάντηση στις ερωτήσεις σου, κατά τη γνώμη μου ,είναι η εξής
Το βιβλίο γράφτηκε από πολλούς συγγραφείς μερικοί εκ των οποίων χρησιμοποιούσαν python 2 ενώ άλλοι χρησιμοποιούσαν python 3. Κάποια στιγμή αποφασίστηκε για κάποιον περίεργο κατά τη γνώμη μου λόγο να χρησιμοποιηθεί  python 2   Όσοι έγραφαν σε python 3 βρέθηκαν στην άβολη θέση να πρέπει να αλλάξουν τον κωδικα τους με  αποτέλεσμα κάποια μικρά λαθάκια να ξεφύγουν.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 20 Νοε 2016, 05:02:18 ΜΜ
Παράθεση από: Γιάννης Αναγνωστάκης στις 20 Νοε 2016, 02:40:34 ΜΜ
Ερώτηση

Γιατί ξαφνικά στο κεφάλαιο αυτό χρησιμοποιήσετε τον τελεστή // ενώ μέχρι πριν στο βιβλίο δεν γίνεται καμία αναφορά;

π.χ στην ηλεκτρονική έκδοση σελίδα 75 αναφέρεται η εντολή mid = ( first + last ) // 2, όπως και εδώ στις διορθώσεις υπάρχει η ίδια εντολή

Υπάρχει λόγος που δεν γράφεται απλά mid = ( first + last ) / 2 ; Δεν έχει διαφορά, απλά γιατί εισάγουμε νέο τελεστή ξαφνικά;

έχεις δίκιο Γιάννη, έπρεπε να είναι / , αλλά στην Python 2 μπορεί να χρησιμοποιηθεί και ο τελεστής //, Έχουν το ίδιο αποτέλεσμα.
Μπορεί να χρησιμοποιηθεί και ο τελεστής αυτός , δεν είναι λάθος. Θα έπρεπε όμως να αναφέρεται προηγουμένως.

Παράθεση
Επίσης μήπως θα έπρεπε στις διορθώσεις να ειναι
answer =raw_input("Είναι ο αριθμός ο " + str(mid) + " ? (N/O)" )
αντί για answer = input("Είναι ο αριθμός ο " + str(mid) + " ? (N/O)" )
Γιάννη έχεις δίκιο , το διόρθωσα, ευχαριστώ
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: dimitra στις 21 Νοε 2016, 09:40:15 ΜΜ
Στο κεφάλαιο 3.2 δεν αναφέρεται η προτεραιότητα των λογικών τελεστών.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 21 Νοε 2016, 09:55:18 ΜΜ
Πράγματι δεν αναφέρεται.
Αυτό είναι όμως και το καλό όταν χρησιμοποιείς μια πραγματική γλώσσα προγραμματισμού. Δεν χρειάζεται να μαντέψουμε ποια είναι η προτεραιότητα. Αρκεί να δούμε στο documentation της Python ( not > and > or )

https://docs.python.org/2/reference/expressions.html (https://docs.python.org/2/reference/expressions.html)
(προς το τέλος operator precedence)

Καλή παρατήρηση.
Θα προστεθεί μια επεξήγηση στην νέα έκδοση.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: nefeli στις 24 Νοε 2016, 03:30:52 ΜΜ
Έχω την εξής παρατήρηση σε σχέση με την επεξήγηση-ανάλυση του αλγορίθμου της φυσαλίδας στη σελίδα79.
Ενώ στην αρχή της σελίδας αναφέρεται ότι "πρέπει να εκτελέσουμε το παραπάνω τμήμα κώδικα τόσες φορές όσες είναι τα στοιχεία της, δηλαδή Ν", αμέσως παρακάτω "καταλήγουμε στον αλγόριθμο" που όμως εκτελείται για Ν-1 φορές (for i in range(1,N,1)).
Προφανώς ο συντάκτης έχει λάβει υπόψη του την παρατήρηση που αναφέρει στη συνέχεια: "φαίνεται ότι δεν χρειάζονται Ν επαναλήψεις, αλλά Ν-1" και  που οδηγούν στον βελτιωμένο τελικό αλγόριθμο της σελίδας 80.
Πιστεύω ότι πρέπει να διορθωθεί η εξωτερική for του αλογορίθμου της σελίδας 79 σε  for i in range(0,N,1): έτσι ώστε αφενός να υπάρχει αντιστοιχία με το κείμενο και αφετέρου να είναι πιο κατανοητές οι παρατηρήσεις που οδηγούν στη βελτίωση του αλγορίθμου της σελ.80.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: msoukara στις 24 Νοε 2016, 06:39:05 ΜΜ
Θεωρώ ότι έχει γίνει πολύ καλή δουλειά και συγχαρητήρια. Θα ήθελα όμως να κάνω κάποιες παρατηρήσεις κυρίως για το κεφάλαιο 7.


Στο κεφάλαιο 5 στην σελίδα 143 το:
def push(stack, item) :
      stack = stack + [item]

push(stack, number)

πρέπει να αντικατασταθεί με:

def push(stack, item) :
        stack = stack + [item]
   return stack

stack=push(stack, number)

ή

def push(stack, item) :
      stack.append(item)

push(stack, number)


Όμοια και στην σελίδα 145 για την ουρά

Κεφάλαιο 7

Στην σελίδα 113 το παράδειγμα που προσπαθεί να εξηγήσει στους μαθητές το πέρασμα παραμέτρων με αναφορά μπορεί να μπερδέψει τους μαθητές καθώς στηρίζεται στο πώς λειτουργεί η append ( η οποία ανήκει στην κατηγορία των συναρτήσεων που αλλάζουν το αντικείμενο στο οποίο καλούνται), ενώ γενικά το πέρασμα παραμέτρων στην Python είναι με τιμή, κάτι που δεν αναφέρεται πουθενά.
(η  C και η Pascal υποστηρίζουν το πέρασμα με αναφορά - όχι η Python). Ίσως λοιπόν θα ήταν καλύτερα να εξηγηθεί θεωρητικά και παράλληλα να δοθεί μια εικόνα της μνήμης.

Επίσης η προσέγγιση για τις καθολικές – τοπικές μεταβλητές ίσως δημιουργήσει σύγχυση καθώς στη σελίδα 116 :
x = 50
def func(x):
     print('Το x είναι', x)    ο λόγος που το x είναι 50 είναι επειδή περνά σαν παράμετρος. Στην προηγούμενη παράγραφο αναφέρεται ότι οι παράμετροι είναι τοπικές μεταβλητές.       
     x = 2
     print('Το τοπικό x άλλαξε σε', x)
func(x)
print('Το x είναι ακόμα', x)

Αν δεν περνούσε το x σαν παράμετρο δηλαδή:
x = 50
def func():
     print('Το x είναι', x)          
     x = 2
     print('Το τοπικό x άλλαξε σε', x)
func()
print('Το x είναι ακόμα', x)

θα έβγαζε σφάλμα γιατί μέσα στη συνάρτηση υπερισχύει η τοπική μεταβλητή x και προηγείται το  print('Το x είναι', x) από το  x = 2
Καλό θα ήταν να τονιστεί ότι η τοπική υπερισχύει της καθολικής μέσα στην συνάρτηση, εκτός αν τη δηλώσουμε global.

Η χρήση της global είναι απαραίτητη και για να «δει» η συνάρτηση την καθολική μεταβλητή και όχι μόνο για να την αλλάξει όπως αναφέρεται στην σελίδα 117.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 25 Νοε 2016, 07:44:54 ΠΜ
@nefeli
Σωστή η παρατήρηση, μάλλον θέλει ένα έξτρα βήμα για την εξήγηση του ενός περάσματος και άλλον ένα τμήμα κώδικα. Θα το δούμε στην επόμενη έκδοση

@msoukara

Όσον αφορά την πρώτη σου παρατήρηση, το έχουμε δει και η λύση στην οποία καταλήξαμε είναι η δεύτερη, δηλαδή με το append. Απλά η χρήση του τελεστή + για τη συνένωση λιστών φαίνεται πιο εύκολη στους μαθητές. Θέλει προσοχή όμως όταν η λίστα είναι παράμετρος σε υποπρόγραμμα, κάτι που συνδέεται με την δεύτερη παρατήρησή σου
που λες ότι το πέρασμα στην Python είναι κάτα τιμή, δυστυχώς όμως τα πράγματα δεν είναι τόσο απλά.

Καταρχήν το ότι το πέρασμα είναι κατά τιμή (call by value) αναφέρεται και αναλύεται στο βιβλίο της Β. Είναι όμως λάθος!!!  :laugh: (αν το δούμε αυστηρά) Ο λόγος που επιλέξαμε να το προσεγγίσουμε έτσι ήταν ότι αν το δεις το θέμα χρηστικά/λειτουργικά φαίνεται σαν να είναι κατά τιμή. Ο εσωτερικός μηχανισμός όμως που χρησιμοποιείται δεν είναι αυτός.  Στη βιβλιογραφία υπάρχει μια σύγχυση για το θέμα αυτό. Υπάρχουν βιβλία που το παρουσιάζουν ως πέρασμα κατά τιμή και άλλα που το παρουσιάζουν ως πέρασμα κατά αναφορά. Αν έχεις όρεξη για διάβασμα δες τους παρακάτω συνδέσμους οι οποίοι είναι αρκετά επεξηγηματικοί:
https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/ (https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/)
http://www.python-course.eu/passing_arguments.php (http://www.python-course.eu/passing_arguments.php)

εδώ κάποιοι χρησιμοποιούν τον όρο call by assignment.

Για να εξηγήσεις στους μαθητές ότι μια λίστα δεν περνιέται κατά τιμή υπάρχει το παρακάτω παράδειγμα:
Κώδικας (python) [Επιλογή]

def test(mylist):
    mylist[0] = mylist[1] = 100

>>> a = [2, 4, 5]
>>> test( a )
>>> print a


Επίσης η εντολή stack = stack + [item] θέλει πολύ προσοχή. Δεν προσθέτει στο stack ένα στοιχείο item. Μπορεί αυτό να φαίνεται από λειτουργικής πλευράς, δεν είναι όμως έτσι. Αυτό που συμβαίνει στην πραγματικότητα είναι ότι το stack επανορίζεται εσωτερικά. δηλαδή δημιουργείται νέο αντικείμενο. Αυτό μπορείς να το δεις με τη συνάρτηση id. (πάλι οι εκφράσεις που χρησιμοποιώ δεν είναι απολύτως σωστές, γιατί έχουμε binding μεταξύ τιμής και μεταβλητής)
Ένα απλό παράδειγμα για να δεις ότι στις παρακάτω εντολές το x δείχνει σε άλλη θέση μνήμης είναι αυτό:
Κώδικας (python) [Επιλογή]
>>> x = 1
>>> id( x )
>>> x = x + 1
>>> id(x)

Εδώ φαίνεται αν οι μαθητές έχουν καταλάβει ότι η εντολή "εκχώρησης" που κάποια στιγμή θα ήταν καλύτερο να την αναφέρουμε ως εντολή απόδοσης τιμής, δεν είναι εκχώρηση όπως την ξέρουμε αλλά επανορισμός/σύνδεση της μεταβλητής με μια νέα τιμή όπως φαίνεται από το παρακάτω παράδειγμα που είναι πιο χρηστικό/λειτουργικό/απλό:
Κώδικας (python) [Επιλογή]
notype = 10
notype = True
notype = "δεν είμαι μεταβλητή της ΓΛΩΣΣΑΣ"

Εδώ είναι ένα από τα σημεία που για να τα εξηγήσουμε πρέπει να δείξουμε στους μαθητές ότι η μεταβλητή είναι απλά ένα όνομα που γίνεται bind με μια τιμή. Είναι σαν μια ετικέτα. Δεν πρόκειται δηλαδή για ένα κουτάκι μέσα στο οποίο μπαίνει η τιμή.

Όλα αυτά όμως είναι πέρα από τους στόχους του μαθήματος για τους μαθητές του Επαγγελματικού Λυκείου. Μην τους αποτρελάνουμε εντελώς. Η ιδέα είναι να χρησιμοποιήσουμε τα πλεονεκτήματα της python και ότι είναι δυσνόητο, να το αφήσουμε στην άκρη.
Για διδακτικούς λόγους λοιπόν τους εξηγούμε το πέρασμα παραμέτρων με δυο απλά παραδείγματα (ένα για απλή μεταβλητή και ένα για λίστα), και  εκεί σταματάμε. Εμείς όμως πρέπει να ξέρουμε τι ακριβώς συμβαίνει πίσω από τις .... κουρτίνες.

ΥΓ. Δεδομένου ότι η εργασία της συγγραφικής ομάδας είναι εθελοντική (και αδιάκοπη) νομίζω ότι όσοι προσπαθήσουν να διδάξουν αυτές τις έννοιες καλό θα ήταν να δώσουν ένα feedback στην συγγραφική ομάδα, για το κατά πόσο η προσέγγιση που ακολουθούμε, βοηθάει τους εκπαιδευτικούς και τους μαθητές ή δυσκολεύει τα πράγματα. Αν έχετε κάποια ιδέα που έχετε δοκιμάσει στην τάξη και δούλεψε καλύτερα καλό θα ήταν είτε να τη στείλετε σε κάποιον από τους συγγραφείς είτε να το ανεβάσετε εδώ, να το δούμε και να το συζητήσουμε, ώστε να βελτιώνουμε το βιβλίο συνεχώς.
Μπορούμε όλοι να συνεισφέρουμε ώστε το βιβλίο όχι μόνο να διορθωθεί αλλά και να βελτιώνεται κάθε χρόνο και παιδαγωγικά αλλά και με νέο υλικό (ασκήσεις, φύλλα εργασίας κλπ)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: nefeli στις 11 Δεκ 2016, 08:32:27 ΜΜ
Καλησπέρα σε όλους
Κάποιες παρατηρήσεις/ερωτήσεις στο κεφάλαιο 6:

1. Στον πίνακα της σελίδας 94 αναφέρεται τρόπος προσπέλασης "b" για "αρχείο δυαδικής μορφής". Νομίζω ότι το σωστό είναι "rb" (και αντίστοιχα rb+, wb, wb+, ab, ab+) εκτός αν ο συγγραφέας εννοεί κάτι άλλο που δεν κατάλαβα.  Πάντως η open("data.txt","b") δίνει μήνυμα λάθους.

2. Στη σελίδα 96:
Η φράση "σημειώνουμε την αλλαγή γραμμής με το χαρακτήρα '\n' " νομίζω ότι πρέπει να διορθωθεί σε "σημειώνουμε την αλλαγή γραμμής με την ακολουθία χαρακτήρων '\n'" ώστε να τονισθεί ότι πρόκειται για δύο χαρακτήρες και όχι έναν.

Και κάτι μικρής σημασίας, αλλά τους δικούς μου μαθητές τους μπέρδεψε: στο παράδειγμα εγγραφής αριθμού σε αρχείο στη σελίδα 96, αναφέρεται αρχείο με όνομα keimeno ενώ στα προηγούμενα και στα επόμενα παραδείγματα χρησιμοποιείται το fin. Ίσως είναι καλύτερα να αλλάξει και αυτό σε fin.

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 12 Δεκ 2016, 02:29:46 ΜΜ
Παράθεση από: nefeli στις 11 Δεκ 2016, 08:32:27 ΜΜ
1. Στον πίνακα της σελίδας 94 αναφέρεται τρόπος προσπέλασης "b" για "αρχείο δυαδικής μορφής". Νομίζω ότι το σωστό είναι "rb" (και αντίστοιχα rb+, wb, wb+, ab, ab+) εκτός αν ο συγγραφέας εννοεί κάτι άλλο που δεν κατάλαβα.  Πάντως η open("data.txt","b") δίνει μήνυμα λάθους.
Εννοεί ότι το b συνδυάζεται με τα υπόλοιπα, απλά δεν το λέει ξεκάθαρα εκεί. Αν έδινε όλες τις επιλογές που λες ο πίνακας θα έβγαινε μεγάλος. Απλά θέλει μια τέτοια παρατήρηση με παράδειγμα από κάτω, που να λέει ότι μπορούμε να έχουμε συνδυασμούς τύπων προσπέλασης.
Για παράδειγμα δες στη σελίδα 99 που ανοίγει ένα δυαδικό αρχείο για γράψιμο χρησιμοποιεί την παρακάτω εντολή:
Κώδικας (python) [Επιλογή]
fin = open( "foo.txt", "wb" )

Νομίζω ότι το παραπάνω παράδειγμα ξεδιαλύνει τα πράγματα

Παράθεση
2. Στη σελίδα 96:
Η φράση "σημειώνουμε την αλλαγή γραμμής με το χαρακτήρα '\n' " νομίζω ότι πρέπει να διορθωθεί σε "σημειώνουμε την αλλαγή γραμμής με την ακολουθία χαρακτήρων '\n'" ώστε να τονισθεί ότι πρόκειται για δύο χαρακτήρες και όχι έναν.
Το '\n' είναι ένας χαρακτήρας και όχι δυο, είναι ο γνωστός χαρακτήρας διαφυγής/τέλος γραμμής

Παράθεση
Και κάτι μικρής σημασίας, αλλά τους δικούς μου μαθητές τους μπέρδεψε: στο παράδειγμα εγγραφής αριθμού σε αρχείο στη σελίδα 96, αναφέρεται αρχείο με όνομα keimeno ενώ στα προηγούμενα και στα επόμενα παραδείγματα χρησιμοποιείται το fin. Ίσως είναι καλύτερα να αλλάξει και αυτό σε fin.
Δεν είναι καθόλου μικρής σημασίας. Το fin δεν είναι δεσμευμένη λέξη αλλά μια μεταβλητή. Μπορούμε να δώσουμε ότι όνομα θέλουμε. Το ότι μπερδεύει τους μαθητές σημαίνει ακριβώς ότι δεν έχουν καταλάβει ακριβώς αυτό, ότι μπορούν να δώσουν ότι όνομα θέλουν. Την ίδια ακριβώς παρανόηση έχουν και πολλοί μαθητές στο ΑΕΠΠ που νομίζουν ότι στις γραμμές ενός πίνακα 2D πρέπει να μπαίνει μόνο το i.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: nefeli στις 12 Δεκ 2016, 06:16:28 ΜΜ
Καταρχήν οφείλω να σε ευχαριστήσω για την πάντα άμεση απάντηση. Εννοείται ότι οι όποιες παρατηρήσεις δεν έχουν σκοπό να υποτιμήσουν τη δουλειά κανενός, ούτε να ξεκινήσουν αντιπαραθέσεις που κατά κανόνα είναι στείρες.
Σημειώνω απλώς τα εξής:
1. Κατά τη δική μου γνώμη αυτό που πρέπει να αλλάξει είναι ο πίνακας γιατί η αναγραφή του "b" ως "όρισμα τρόπου προσπέλασης" όπως αναφέρεται σε αυτόν δεν είναι σωστή.
2. Ας μην εμπλακούμε στην κουβέντα αν το "\n" είναι ένας χαρακτήρας ή δύο. Αυτό που προσπάθησα να μεταφράσω είναι το "escape sequence". Πολύ πρόχειρα βρήκα και αυτό: http://www.computerhope.com/jargon/e/escasequ.htm (http://www.computerhope.com/jargon/e/escasequ.htm).
3. Συμφωνώ απολύτως. Γιαυτό και θα πρότεινα να χρησιμοποιούνται και άλλα ονόματα εκτός από το fin στην ενότητα ώστε αυτό να είναι πιο σαφές. Αυτό που είπα είναι ότι το fin χρησιμοποιείται σε όλα τα παραδείγματα αυτής της ενότητας εκτός από το συγκεκριμένο που γίνεται η μετατροπή σε συμβολοσειρά ενισχύοντας την όποια παρανόηση.
Και κάτι τελευταίο: Η αγωνία μου -και πιστεύω και πολλών ακόμη- είναι ότι το βιβλίο χρησιμοποιείται για πανελλαδικές εξετάσεις. Θα ήταν τελείως διαφορετική η συζήτηση αν δεν ήταν έτσι. Πολλοί μαθητές προσπαθούν, καλώς ή κακώς, να μάθουν απέξω κάθετι που αναγράφεται γιατί το θεωρούν πιθανό θέμα στις εξετάσεις. Έτσι αναγκαζόμαστε και εμείς να βάζουμε στο μικροσκόπιο κάθε πρόταση.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 12 Δεκ 2016, 07:38:06 ΜΜ
Δεν είναι κακό να γίνεται κριτική. Άλλωστε έχουμε ήδη μαζέψει αρκετά λάθη είτε τυπογραφικά είτε πιο σημαντικά και αυτό κατά μεγάλο βαθμό οφείλεται σε όσους συναδέλφους ασχολούνται με το μάθημα και μας στέλνουν σχόλια και παρατηρήσεις είτε μέσα από το στέκι είτε μέσω email.
Οι διορθώσεις θα σταλούν φέτος ως λίστα με παροράματα και του χρόνου θα ενσωματωθούν στο βιβλίο.
Η ουσία όμως είναι ότι θα πρέπει οι συνάδελφοι που μπαίνουν στην τάξη και κάνουν το μάθημα να δώσουν feedback ώστε να βελτίωσουμε το υλικό του χρόνου.

Τώρα σχετικά με τις παρατηρήσεις σου:

1) Για τα αρχεία αυτή τη στιγμή δεν μπορεί να γίνει κάτι. Θα το δούμε του χρόνου. Δεν ξέρω αν έχει νόημα να κάνουμε και δυαδικά αρχεία ή είναι καλύτερο να μείνουμε σε text
2) To escape sequence είναι δυο χαρακτήρες αλλά το αποτέλεσμα είναι ένας!! Για να πείσεις τους μαθητές σου, βάλτους στον διερμηνευτή να γράψουν το παρακάτω τμήμα κώδικα:
Κώδικας (python) [Επιλογή]

>>> onlyone = '\n'
>>> len( onlyone )
1

όπως βλέπεις το μήκος της συμβολοσειράς είναι 1 γιατί το βλέπει σαν ένα χαρακτήρα τον χαρακτήρα τέλους γραμμής.
Ένα άλλο καλύτερο παράδειγμα είναι ότι στην C++ μπορείς να γράψεις
Κώδικας (cpp) [Επιλογή]
char onlyone = '\n';
δηλαδή δέχεται αυτή την ακολουθία σε μεταβλητή που μπορεί να αποθηκευτεί μόνο ένας χαρακτήρας.

Σχετικά με το τελευταίο σου σχόλιο γιατί είναι αγωνία πολλών

Όταν γράφεται ένα βιβλίο για ένα μάθημα ο στόχος αυτών που το γράφουν είναι α) να ανταποκρίνεται όσο το δυνατόν καλύτερα στο αναλυτικό πρόγραμμα και β) να παρουσιάζει τις έννοιες με έναν όσο το δυνατόν πιο διδακτικό τρόπο.
Δεν γράψαμε ούτε βιβλίο ιστορίας, ούτε Χημείας, ούτε ΑΟΘ, αλλά βιβλίο προγραμματισμού το οποίο δεν έχει στόχο να το μάθεις απέξω. Επειδή η μαθησιακή διαδικασία έχει δηλητηριαστεί από τις εξετάσεις δε σημαίνει ότι πρέπει να σκεφτόμαστε έτσι, και να κάνουμε μάθημα ψάχνοντας να βρούμε πιθανά θέματα.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: nefeli στις 22 Ιαν 2017, 07:43:00 ΜΜ
Παράθεση από: evry στις 25 Νοε 2016, 07:44:54 ΠΜ

Καταρχήν το ότι το πέρασμα είναι κατά τιμή (call by value) αναφέρεται και αναλύεται στο βιβλίο της Β. Είναι όμως λάθος!!!  :laugh: (αν το δούμε αυστηρά) Ο λόγος που επιλέξαμε να το προσεγγίσουμε έτσι ήταν ότι αν το δεις το θέμα χρηστικά/λειτουργικά φαίνεται σαν να είναι κατά τιμή. Ο εσωτερικός μηχανισμός όμως που χρησιμοποιείται δεν είναι αυτός.  Στη βιβλιογραφία υπάρχει μια σύγχυση για το θέμα αυτό. Υπάρχουν βιβλία που το παρουσιάζουν ως πέρασμα κατά τιμή και άλλα που το παρουσιάζουν ως πέρασμα κατά αναφορά. Αν έχεις όρεξη για διάβασμα δες τους παρακάτω συνδέσμους οι οποίοι είναι αρκετά επεξηγηματικοί:
https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/ (https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/)
http://www.python-course.eu/passing_arguments.php (http://www.python-course.eu/passing_arguments.php)

εδώ κάποιοι χρησιμοποιούν τον όρο call by assignment.


Σχετικά με το αν οι παράμετροι περνούν κατά τιμή ή κατα αναφορά, πιστεύετε ότι μπορούμε να πούμε ότι όταν οι παράμετροι είναι mutable δομής -όπως η λίστα- το πέρασμα γίνεται κατά αναφορά, αλλιώς γίνεται κατά τιμή;
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 22 Ιαν 2017, 08:13:23 ΜΜ
Αυτό δεν είναι σωστό. Μπορεί να δουλεύει, δηλαδή χρηστικά να φαίνεται έτσι, όμως ο μηχανισμός μεταβίβασης παραμέτρων δεν έχει καμία σχέση με το mutability ενός αντικειμένου. π.χ. στο παρακάτω παράδειγμα
Κώδικας (python) [Επιλογή]

def byvalueString( s ):
    s = s + " version 3 "

s = "python"
byvalue(s)

το αποτέλεσμα θα είναι "python". Το αντικείμενο δεν θα αλλάξει. Αυτό όμως θα συμβεί όχι γιατί το πέρασμα είναι κατά τιμή αλλά επειδή χρησιμοποιούμε το τελεστή ανάθεσης τιμής για να "τροποποιήσουμε" το αντικείμενο. Στην πραγματικότητα δεν τροποποιούμε το αντικείμενο αλλά δημιουργούμε ένα νέο το οποίο όμως ορίζεται μόνο τοπικά μέσα στη συνάρτηση. Εδώ θα πρέπει να διευκρινήσουμε τα εξής:
Περνιέται αντίγραφο όχι όλου του αντικειμένου αλλά μόνο της αναφοράς του. Άρα αν πειράξουμε την αναφορά αυτή η αλλαγή δεν περνάει στο κύριο πρόγραμμα. Θα πρέπει να πειράξουμε το αντικείμενο αλλά δεν μπορούμε γιατί είναι immutable.
Η ιδέα μοιάζει λίγο με τον τρόπο με τον οποίο περνιούνται τα αντικείμενα στη Java. Δεν λέω ότι είναι το ίδιο αλλά είναι κάτι κοντινό για να καταλάβουμε τι συμβαίνει.
Δες τώρα το παρακάτω παράδειγμα:
Κώδικας (python) [Επιλογή]

def byvalueList( L ):
    L = L + [100]
L = [1,2,3]
byvalueList(L)
print L

που θα εμφανίσει [1,2,3]. Η λίστα δεν θα αλλάξει παρόλο που είναι mutable, αφού έχει δημιουργηθεί μια νέα λίστα με τον τελεστή "="
Κοίτα όμως παρακάτω:
Κώδικας (python) [Επιλογή]

def byrefList( L ):
    L.append(100)
L = [1,2,3]
byvalueList(L)
print L

Τώρα η λίστα θα αλλάξει γιατί έχουμε καλέσει μια member function. Τέτοια μέθοδος δεν υπάρχει σε string γιατί είναι immutable.

Καλό θα ήταν οι παραπάνω έννοιες να παρουσιαστούν με τη μορφή παραδειγμάτων στον διερμηνευτή και να γίνει συζήτηση με τους μαθητές.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: anastasd7 στις 14 Φεβ 2017, 12:16:30 ΠΜ
Συνάδελφοι θα ήθελα να επισημάνω και εγώ με τη σειρά μου ένα λαθάκι που εντόπισα. Στο πρόγραμμα με την range στη σελίδα 139 του βιβλίου το αποτέλεσμα θα είναι 4950 και όχι 5050 όπως φαίνεται στο βιβλίο.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Dimitris365 στις 16 Φεβ 2017, 07:39:18 ΠΜ
Ουδέν σχόλιον.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 16 Φεβ 2017, 10:49:14 ΠΜ
Σε πολλά προβλήματα αρκεί να ελέγξουμε την ύπαρξη και όχι τη θέση.
Αυτό είναι πολύ πιο γενικό, διότι κανείς δεν σου εξασφαλίζει ότι αυτό που ψάχνεις εμφανίζεται το πολύ μια φορά. Άρα και από θέμα απλότητας για τα παιδιά πολύ καλά κάνει και επιστρέφει True ή False.
Μπορεί κανείς να ζητήσει σαν άσκηση μια δυαδική αναζήτηση που θα επιστρέφει τη θέση.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Dimitris365 στις 16 Φεβ 2017, 12:34:28 ΜΜ
Ουδέν σχόλιον.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 16 Φεβ 2017, 01:13:33 ΜΜ
οκ γράψαμε λάθος τη δυαδική αναζήτηση.
Στείλε όμως ένα email και στους συγγραφείς ενός από τα πιο δημοφιλή βιβλία για αλγορίθμους σε Python  (σελ. 155)
Problem Solving with Algorithms and Data Structures (https://www.cs.auckland.ac.nz/courses/compsci105ssc/resources/ProblemSolvingwithAlgorithmsandDataStructures.pdf)
να το διορθώσουν και αυτοί, μια και το παρατήρησες εσύ. Εγώ θα ενημερώσω τη συγγραφική ομάδα.
Επίσης στείλε και στους διαχειριστές της διαδικτυακής έκδοσης του βιβλίου
https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html (https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html)
να διορθώσουν και αυτοί το λάθος τους.

Α και στείλε και ένα μήνυμα αν θες και στους καθηγητές των αντίστοιχων μαθημάτων στα πανεπιστήμια του Toronto και του Wisconsin να το διορθώσουν και αυτοί γιατί έχουν κάνει το ίδιο λάθος.
http://pages.cs.wisc.edu/~bobh/367/SORTING.html#bin (http://pages.cs.wisc.edu/~bobh/367/SORTING.html#bin)
http://www.cs.toronto.edu/~reid/search/bincode.html (http://www.cs.toronto.edu/~reid/search/bincode.html)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: mipap στις 19 Φεβ 2017, 11:45:23 ΜΜ
Συνάδελφοι, ο αλγόριθμος στη συνάρτηση της σελίδας 84 δεν δουλέυει. Αν αλλάξει το range του 2ου for και μειωθεί η εσοχή από το 2ο for και μετά οπως παρακάτω, τοτε δουλεύει:
def insertionSort(array):
    for i in range(1,len(array)):
        value=array
        pos=i
        # αναζήτηση
        while pos>0 and array[pos-1]>value:
            pos=pos-1
        #μετακινηση των στοιχείων μια θέση δεξια
        for j in range(i-1,pos-1,-1):
            array[j+1]=array[j]
        #το στοιχειο τοποθετειται στη θέση pos
        array[pos]=value
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 20 Φεβ 2017, 12:18:05 ΠΜ
έχεις δίκιο, η έκδοση που δίνεις είναι η σωστή.
Ο αλγόριθμος πάντως είναι εκτός ύλης.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 21 Φεβ 2017, 11:52:41 ΠΜ
Παράθεση από: nefeli στις 24 Νοε 2016, 03:30:52 ΜΜ
Έχω την εξής παρατήρηση σε σχέση με την επεξήγηση-ανάλυση του αλγορίθμου της φυσαλίδας στη σελίδα79.
Ενώ στην αρχή της σελίδας αναφέρεται ότι "πρέπει να εκτελέσουμε το παραπάνω τμήμα κώδικα τόσες φορές όσες είναι τα στοιχεία της, δηλαδή Ν", αμέσως παρακάτω "καταλήγουμε στον αλγόριθμο" που όμως εκτελείται για Ν-1 φορές (for i in range(1,N,1)).
Προφανώς ο συντάκτης έχει λάβει υπόψη του την παρατήρηση που αναφέρει στη συνέχεια: "φαίνεται ότι δεν χρειάζονται Ν επαναλήψεις, αλλά Ν-1" και  που οδηγούν στον βελτιωμένο τελικό αλγόριθμο της σελίδας 80.
Πιστεύω ότι πρέπει να διορθωθεί η εξωτερική for του αλογορίθμου της σελίδας 79 σε  for i in range(0,N,1): έτσι ώστε αφενός να υπάρχει αντιστοιχία με το κείμενο και αφετέρου να είναι πιο κατανοητές οι παρατηρήσεις που οδηγούν στη βελτίωση του αλγορίθμου της σελ.80.

Νομίζω το λάθος στη σελ 79 δεν ειναι στο (1,Ν,1) αλλά στο μέσα fοr
που πρέπει να γίνει range(N-1,0,-1)  αλλιώς δεν θα συμμετέχει στις συγκρίσεις το στοιχείο array[0].

Το δοκίμασα και σε κώδικα . Ο κωδικας του βιβλιου αφηνει το πρωτο στοιχειο απειραχτο.



Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 21 Φεβ 2017, 12:59:34 ΜΜ
@aprekates
έχεις δίκιο, τουλάχιστον η τελική έκδοση του αλγορίθμου στην επόμενη σελίδα είναι σωστή.
Έχουμε μαζέψει αρκετές διορθώσεις οι οποίες θα μπουν στην νέα έκδοση του βιβλίου. Προς το παρόν θα βγει μια λίστα με παροράματα.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 22 Φεβ 2017, 01:21:58 ΜΜ
Δεν θέλω να υποβάλλω διόρθωση αλλά μία πρόταση. Σελίδα 139, δείχνει τους τρόπους διάσχισης μίας λίστας

Δεν θα ήταν ένας επίσης ωραίος τρόπος για να παρουσιάζεται στα παιδιά και ο παρακάτω:
Κώδικας [Επιλογή]

for i in range(len(L)):
   print L[i]
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: demy8 στις 22 Φεβ 2017, 01:32:51 ΜΜ
 :)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 22 Φεβ 2017, 03:53:34 ΜΜ
Στη σελίδα 139 αφού παρουσιαστεί η range έχει μερικά παραδείγματα διάσχισης λίστας με τον τρόπο που αναφέρεις
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Λάμπρος Μπουκουβάλας στις 22 Φεβ 2017, 07:22:04 ΜΜ
Παράθεση από: evry στις 21 Φεβ 2017, 12:59:34 ΜΜ
Έχουμε μαζέψει αρκετές διορθώσεις οι οποίες θα μπουν στην νέα έκδοση του βιβλίου. Προς το παρόν θα βγει μια λίστα με παροράματα.

Θα ανεβάσεις εδώ σε pdf όλες τις έως τώρα καταγεγραμμένες διορθώσεις; Μέχρι στιγμής υπάρχει η έκδοση 1.1 των διορθώσεων.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 22 Φεβ 2017, 08:24:19 ΜΜ
Ανέβασα στο πρώτο μήνυμα του thread την τελευταία έκδοση των διορθώσεων.
Προσοχή όμως!!! Αυτές είναι διορθώσεις που έχω συγκεντρώσει εγώ για τα κεφάλαια 5,8 μαζί με τις παρατηρήσεις των συναδέλφων σε αυτό το thread τους οποίους και ευχαριστώ πολύ.
Αυτές οι διορθώσεις δεν είναι επίσημες. Οι επίσημες διορθώσεις θα περιλαμβάνουν και άλλες που έχουν σημειωθεί και από τα άλλα μέλη της συγγραφικής ομάδας και θα δημοσιευθούν επίσημα από το ΙΕΠ.
Όποιος συνάδελφος έχει παρατήρηση, πρόταση ή διόρθωση μπορεί να το αναφέρει εδώ ώστε να είμαστε έτοιμοι για τη νέα έκδοση του βιβλίου του χρόνου στην οποία θα έχουν διορθωθεί όλα τα λάθη.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 22 Μαρ 2017, 08:55:08 ΠΜ
Έχουμε καμία επίισημη ενημέρωση για το πότε θα δημοσιευτούν οι διορθώσεις;

Επιπρόσθετα, εξακολουθούμε να υποστηρίζουμε ότι πρέπει να διδαχθεί-εξεταστεί το τελευταίο κεφάλαιο (11) ειδικά φέτος με τις καθυστερήσεις που υπάρχουν σε ύλη και βιβλία;

Επίσης θα ήθελα να ρωτήσω

1. Την διαδικασία του διαχωρισμού πως την διδάσκουμε εφόσον το βιβλίο την έχει λάθoς; Δεν θα ήταν καλύτερα με τη χρήση της εντολής append;

2. H σειριακή αναζήτηση και η ταξινόμηση με επιλογή πρέπει να διδαχθούν εφόσον απλά αναφέρονται στο σχολικό βιβλίο της Γ' Λυκείου και 'θεωρητικά' είναι γνωστοί απο το σχολικό βιβλίο της B; Ομοίως, ο αλγόριθμος του ΜΚΔ; Προσωπική άποψη: H σειριακή αναζήση απλά ως άσκηση για τον εντοπισμό θέσης, αφού έτσι και αλλιώς υπάρχει ο υπαρξιακός τελεστής in

3. Ο τελεστής : για τα substring μπορεί να χρησιμοποιηθεί; Η εντολή break; Προσωπική άποψη: όχι και στα 2

4. Για τη διαίρεση Στα παιδιά να δείξουμε το // ή να μείνουμε στο / ? Προσωπική άποψη: Mόνο /
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 27 Μαρ 2017, 12:06:34 ΜΜ
Όπως δίνεται η εξήγηση της λειτουργίας της file.seek(offset[, whence])  (https://docs.python.org/2/library/stdtypes.html?highlight=seek#file.seek)στην παρ. 6.2 προκύπτει
από το σχετικό συλλογισμό μια διαφορετική αναμενόμενη τιμή:

ΠαράθεσηΓια να αλλάξουμε την τρέχουσα θέση του αρχείου, μπορούμε να χρησιμοποιήσου-
με την fin.seek() (offset[, from_what]). Η θέση υπολογίζεται προσθέτοντας offset
(πλήθος bytes) σε ένα σημείο αναφοράς, το οποίο επιλέγεται από το from_what
όρισμα. Αν το from_what έχει τιμή 0, μετρά από την αρχή του αρχείου, αν έχει 1,
χρησιμοποιεί την τρέχουσα θέση του αρχείου και αν έχει 2, χρησιμοποιεί το τέλος
του αρχείου.

Κώδικας (python) [Επιλογή]
>>> f = open('workfile', 'r+')
>>> f.write('0123456789abcdef')
>>> f.seek(5)      # Go to the 6th byte in the file
>>> f.read(1)
'5'
>>> f.seek(-3, 2)  # Go to the 3rd byte before the end
>>> f.read(1)
'd'


Αν η τρέχουσα θέση έχει τεθεί στο τέλος του αρχείου τότε η f.seek(-3,2) θα έπρεπε
προσθέτωντας το -3 σ'αυτήν να δείξει στον 'c' και όχι στον 'd'. Εκτός αν το σημείο αναφοράς
(το τέλος του αρχείου) είναι και αυτός χαρακτήρας. Μάλλον αυτό συμβαίνει.

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: bugman στις 27 Μαρ 2017, 08:50:35 ΜΜ
Στο τέλος του αρχείου ο δρομέας αναζήτησης (seek) δεν δείχνει τίποτα. Λογικά πηγαίνει εκεί μετά το διάβασμα του τελευταίου στοιχείου. Οπότε το -3 πάει στο D. Αν ο δρομέας έδειχνε το f θα σήμαινε ότι έχουμε ακόμα κάτι να διαβάσουμε άρα δεν είμαστε στο τέλος του αρχείου.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 28 Μαρ 2017, 08:29:11 ΠΜ
Παράθεση από: bugman στις 27 Μαρ 2017, 08:50:35 ΜΜ
Στο τέλος του αρχείου ο δρομέας αναζήτησης (seek) δεν δείχνει τίποτα. Λογικά πηγαίνει εκεί μετά το διάβασμα του τελευταίου στοιχείου. Οπότε το -3 πάει στο D. Αν ο δρομέας έδειχνε το f θα σήμαινε ότι έχουμε ακόμα κάτι να διαβάσουμε άρα δεν είμαστε στο τέλος του αρχείου.

Αν όμως πάμε στο τέλος του αρχείου κατευθείαν με την seek(0,2) τότε το αποτέλεσμα που αναμένεις (εφόσον δεν είναι ξεκάθορο από τον ορισμό της συνάρτησης ) εξαρτάται από τη σημασία που έχει το 'τέλος του αρχείου' . Αν τέλος του αρχείου ειναι ο τελευταίος χαρακτήρας τότε το αποτέλεσμα που περιμένω είναι διαφορετικό απ'αυτό που προκύπτει.

Οπότε 'το τέλος του αρχείου' είναι μια θέση μετά τον τελευταίο χαρακτήρα.

Κώδικας (python) [Επιλογή]
>>> f = open('workfile.txt', 'w')
>>> f.write("12345")
>>> f.close()
>>> f = open('workfile.txt')
>>> f.tell()
0L
>>> f.seek(0,2)
>>> f.tell()
5L


Το παράξενο είναι ότι:
>>> f.seek(10,0)
>>> f.tell()              # μήπως θα έπρεπε να επιστρέψει μήνυμα λάθους για το τέλος αρχείου.
10L
>>> f.read(1)
''


Είναι ενδιαφέρον από μια μικρή έρευνα στο διαδίκτυο ότι μια φαινομενικά μικρή λεπτομέρεια
οπως το αν η python υλοποιεί το EOF κρύβει από πίσω αρκετό προβληματισμό όπως πχ φαίνεται στο νήμα Status of EOF (https://mail.python.org/pipermail/python-dev/2001-January/011445.html)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: bugman στις 29 Μαρ 2017, 12:27:27 ΠΜ
Είναι φανερό τι συμβαίνει. Το tell() έχει βάση το 0. Οπότε τελευταία θέση είναι το 5 (όπου δεν έχει χαρακτήρα). Το Seek στο τύπο 2  έχει σχετική θέση, και το 0,2 σημαίνει τελευταία θέση του αρχείου (όχι τελευταίος χαρακτήρας), άρα μετά το χαρακτήρα 5.
Για να γίνει πιο κατανοητό, ας πούμε ότι οι θέσεις στο αρχείο είναι σαν θέσεις λεωφορείου. Το seek δείχνει στις πλάτες των θέσεων, και η τελευταία του ένδειξη δεν δείχνει καμία "πλάτη", ούτε βέβαια περιεχόμενο, αλλά μετά την τελευταία θέση, εκεί που μπορεί κάποιος να βάλει μια καινούργια (αυτό το σκοπό έχει να μπορεί να δείχνει εκεί).
Εδώ να πούμε ότι η Python όπως διάβασα κάνει το εξής αν το αρχείο είναι και προσθήκη append και για ανάγνωση (με το +). Μπορούμε να μετακινήσουμε το δρομέα (cursor λέγεται στα αγγλικά), αλλά όταν πάμε να γράψουμε δεν θα γράψει εκεί που το μετακινήσαμε αλλά στο τέλος και θα μείνει στο νέο τέλος.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 29 Μαρ 2017, 09:14:36 ΠΜ
Παράθεση από: bugman στις 29 Μαρ 2017, 12:27:27 ΠΜ
Είναι φανερό τι συμβαίνει. Το tell() έχει βάση το 0. Οπότε τελευταία θέση είναι το 5 (όπου δεν έχει χαρακτήρα). Το Seek στο τύπο 2  έχει σχετική θέση, και το 0,2 σημαίνει τελευταία θέση του αρχείου (όχι τελευταίος χαρακτήρας), άρα μετά το χαρακτήρα 5.
....

Ο προβληματισμός μου ήταν καταπόσο η ερμηνεία της λειτουργίας της seek από το βιβλίο
είναι σαφής ή αφήνει περιθώρια για παρερμηνείες όταν λέει ότι υπολογίζουμε τη νεα θέση
προσθέτωντας το offset στο σημείο αναφοράς.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: bugman στις 29 Μαρ 2017, 08:53:21 ΜΜ
Οπωσδήποτε η παρερμηνεία είνα φυσικό επόμενο, όταν ο μαθητής δεν δοκιμάσει τις εντολές. Η έννοια του offset, είναι δυσνόητη, χωρίς επεξήγηση. Οι seek και tell χρησιμοποιούν τον δρομέα διαφορετικά. Παίζει ρόλο το είδος του αρχείου. Πχ ένα αρχείο με UTF-8 κωδικοποίηση, μπορεί για ένα χαρακτήρα να μεταθέσει τον δρομέα ένα ή δύο ή τέσσερα byte. Εκεί η seek...πώς θα ξεχωρίσει ποιο χαρακτήρα θέλουμε με offset;  Δεν είναι απλή υπόθεση η χρήση των εντολών αυτών.
Η ερμηνεία του βιβλίου θα έπρεπε να συμπεριλάβει το τι σημαίνει offset, είναι ανά byte,  ανά δύο, ή βάσει του μήκους σε bytes του εκάστοτε χαρακτήρα, για το όποιο ν δώσουμε στη seek.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 29 Μαρ 2017, 11:11:43 ΜΜ
http://users.sch.gr/vbelesiotis/dbathmia/gymGelEpal/data/epal_program_paroram_16_3_2017.pdf
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 30 Μαρ 2017, 09:58:03 ΠΜ
Παράθεση από: bugman στις 29 Μαρ 2017, 08:53:21 ΜΜ
Οπωσδήποτε η παρερμηνεία είνα φυσικό επόμενο, όταν ο μαθητής δεν δοκιμάσει τις εντολές. Η έννοια του offset, είναι δυσνόητη, χωρίς επεξήγηση. Οι seek και tell χρησιμοποιούν τον δρομέα διαφορετικά. Παίζει ρόλο το είδος του αρχείου. Πχ ένα αρχείο με UTF-8 κωδικοποίηση, μπορεί για ένα χαρακτήρα να μεταθέσει τον δρομέα ένα ή δύο ή τέσσερα byte. Εκεί η seek...πώς θα ξεχωρίσει ποιο χαρακτήρα θέλουμε με offset;  Δεν είναι απλή υπόθεση η χρήση των εντολών αυτών.
Η ερμηνεία του βιβλίου θα έπρεπε να συμπεριλάβει το τι σημαίνει offset, είναι ανά byte,  ανά δύο, ή βάσει του μήκους σε bytes του εκάστοτε χαρακτήρα, για το όποιο ν δώσουμε στη seek.

Αυτό ήθελα να πω συνάδελφε. Συμφωνώ. Και το θέμα του πως δουλεύουν οι seek αλλά και άλλες εντολές πχ read(x) με utf-8  είναι επίσης ενδιαφέρον θέμα συζήτησης. Χρειάζεται ένα ξεχωριστώ νήμα συζήτησης για το θέμα αυτό, 'υποστήριξη ελληνικων στην Python"
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 03 Απρ 2017, 12:33:27 ΜΜ
Στο κεφάλαιο 6 σε αρκετά σημεία  (και στις ερωτήσεις ) πότε γίνεται λόγος για μεθόδους και πότε για συναρτήσεις. Προσωπικά δεν επηρεάζει την κατανόηση-ανάγνωση μου αλλά στους μαθητές δημιουργεί σύγχυση. Και η αναφορά σε μέθοδο fin.tell() δεν διευκολύνει  . Έχει γραφτεί στο φορουμ  και το παρατήρησα και με τους μαθητές μου ότι θεωρούν το fin ανεπαίσθητα ίσως μια δεσμευμένη λέξη.

Έχουμε δηλαδή πρόωρη ίσως έκθεση σε αντικειμενόστραφή σύνταξη, χωρίς το βιβλίο να είναι ξεκάθαρο . Και ίσως δυσκολεύει και το ότι η open θεωρούμε ότι είναι συνάρτηση που δημιουργεί αντικείμενο.

Και υπάρχει και ένα θέμα : Στην ερώτηση με ποια συνάρτηση κλείνουμε ένα άρχειο , η απάντηση μπορεί να είναι ένα στεγνό : η συνάρτηση close() ;


Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 03 Απρ 2017, 02:29:27 ΜΜ
Το σκεπτικό είναι ότι δεν χρειάζεται να φτάσουμε στο κεφάλαιο του αντικειμενοστρεφούς για να μιλήσουμε για αντικείμενα. Γίνεται μια αναφορά στο βιβλίο της Β σχετικά με το τι είναι μέθοδος. Εκεί που περιγράφονται τα strings και οι λίστες αναφέρονται οι μέθοδοι ως εγγενείς λειτουργίες των αντικειμένων. Με αυτόν τον τρόπο όταν ο μαθητής βλέπει το dot notation θα πρέπει να αντιλαμβάνεται ότι καλεί μια μέθοδο του συγκεκριμένου αντικειμένου. Σε πρώτη φάση θέλουμε απλά να τα χρησιμοποιεί.
Για το κεφάλαιο 6 θα προσπαθήσουμε να διορθώσουμε τις αναφορές αυτές όπου μπορούμε.
Για την close που λες έχεις δίκιο, η ερώτηση πρέπει να επαναδιατυπωθεί.
Αυτή την εποχή κάνουμε έναν αγώνα δρόμου για να διορθώσουμε όλα τα λάθη στο βιβλίο και του χρόνου να βγει νέα έκδοση, οπότε είναι η κατάλληλη στιγμή για τέτοιες χρήσιμες παρατηρήσεις, ή προτάσεις.

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 03 Απρ 2017, 05:24:06 ΜΜ
Ευριπίδη υπάρχει σκέψη να μεταβείτε σε python 3? Υποθέτω πως όχι..

Δύο πράγματα που έρχονται στο μυαλό μου και θα σου γράψω ότι άλλο θεωρήσω καλό για διόρθωση ειναι τα εξής
1) Κατάργηση του τελεστή // από το βιβλίο
2) Στη δυαδική αναζήτηση να τονιστεί αυτή η μέθοδος που περιγράφεται στη σελίδα 75 της έντυπης έκδοσης ειναι για ταξινομημένη σε αύξουσα διάταξη λίστα και να τεθεί σαν ερώτημα στους μαθητές, τι πρέπει να αλλάξουμε για να λειτουργεί σε λίστα με φθίνουσα ταξινόμηση
3) Το κεφάλαιο 5 θα μπορούσε να τοποθετηθεί μετά το κεφάλαιο 8
4) Νομιζω οτι στην εικόνα 5.2 και στην εικόνα 5.4 οι δείκτες που υπάρχουν από πάνω (j=6, j=5, j=4 ktl) πρέπει να μετακινηθούν όλοι μία θέση δεξιά έτσι ώστε η λίστα που ειναι απο κάτω (και όχι η διπλανή της) να δείχνει το αποτέλεσμα της εκτέλεσης του κώδικα όταν π.χ j=6
5) Τετράδιο μαθητή, δραστηριότητα 13 / κεφαλαίου 8, στη λύση: Αντί για s=0, να γράφεί s=0.0 και
6) Τετράδιο μαθητή, δραστηριότητα 19 / κεφαλαίου 8, λέει "η εισαγωγή και η Ι" ενώ κανονικά θα έπρεπε να λέει "η ώθηση και η απώθηση"
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 04 Απρ 2017, 12:26:33 ΠΜ
Παράθεση από: Γιάννης Αναγνωστάκης στις 03 Απρ 2017, 05:24:06 ΜΜ
Ευριπίδη υπάρχει σκέψη να μεταβείτε σε python 3? Υποθέτω πως όχι..
όχι. Αυτή τη στιγμή προέχει να βγει μια νέα έκδοση με διορθωμένα όλα τα λάθη και κάποιες αναδιατυπώσεις. Επίσης κάποιες μικρές προσθήκες όπως ο τελεστής διαμέρισης : στην Γ, που είναι χρήσιμος.

Παράθεση
1) Κατάργηση του τελεστή // από το βιβλίο
έχει γίνει
Παράθεση
2) Στη δυαδική αναζήτηση να τονιστεί αυτή η μέθοδος που περιγράφεται στη σελίδα 75 της έντυπης έκδοσης ειναι για ταξινομημένη σε αύξουσα διάταξη λίστα και να τεθεί σαν ερώτημα στους μαθητές, τι πρέπει να αλλάξουμε για να λειτουργεί σε λίστα με φθίνουσα ταξινόμηση
οκ
Παράθεση
3) Το κεφάλαιο 5 θα μπορούσε να τοποθετηθεί μετά το κεφάλαιο 8
Θα μπορούσε αλλά δεν θα γίνει, γιατί το μάθημα έχει συνέχεια και οι μαθητές έχουν διδαχθεί λίστες στην Β όπου το μάθημα είναι 4ωρο. Είναι η πρώτη φορά που έχουμε προαπαιτούμενες γνώσεις στην πληροφορική και θα πρέπει να το συνηθίσουμε, αλλιώς ακυρώνουμε ουσιαστικά το μάθημα της Β.
Ωστόσο όποιος θέλει μπορεί να "υπενθυμίσει" στα παιδιά τις λίστες από το βιβλίο της Β. ;)

Παράθεση
4) Νομιζω οτι στην εικόνα 5.2 και στην εικόνα 5.4 οι δείκτες που υπάρχουν από πάνω (j=6, j=5, j=4 ktl) πρέπει να μετακινηθούν όλοι μία θέση δεξιά έτσι ώστε η λίστα που ειναι απο κάτω (και όχι η διπλανή της) να δείχνει το αποτέλεσμα της εκτέλεσης του κώδικα όταν π.χ j=6
Το σκεπτικό είναι να δείξει ποια στοιχεία συγκρίνονται μεταξύ τους πριν αλλάξουν θέση. Πιστεύεις ότι αυτό που προτείνεις είναι πιο κατανοητό από τους μαθητές?

Γιάννη ευχαριστώ πολύ για τις παρατηρήσεις σου
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: chris1997 στις 04 Απρ 2017, 10:26:47 ΜΜ
Γεια σας παιδια, πρωτη φορα γραφω εδω. Λοιπον, στην σελιδα 199 του βιβλιου γραφει πως η self ειναι δεσμευμενη λεξη ενω το documentation της python γραφει πως ειναι απλα μια συμβαση.
Παραγραφο 5:
https://docs.python.org/2/tutorial/classes.html#random-remarks

Τι εχετε να πειτε;


Ευχαριστω.


Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 04 Απρ 2017, 10:55:10 ΜΜ
Έτσι ακριβώς είναι, η self δεν είναι δεσμευμένη λέξη, απλά είναι μια σύμβαση που χρησιμοποιούμε. Γενικά ότι παράμετρο βάλεις στην πρώτη θέση αναφέρεται στο αντικείμενο.
Καλύτερα όμως να μην μπλέξουμε τους μαθητές με τέτοιες λεπτομέρειες. Δεν έχει νόημα.

Πάντως το το έχουμε διορθώσει στη νέα έκδοση χωρίς να προκληθεί σύγχυση στους μαθητές.
Διάβασε και το παρακάτω άρθρο του δημιουργού της Python που εξηγεί το σκεπτικό αυτής της απόφασης:
http://neopythonic.blogspot.gr/2008/10/why-explicit-self-has-to-stay.html (http://neopythonic.blogspot.gr/2008/10/why-explicit-self-has-to-stay.html)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: chris1997 στις 04 Απρ 2017, 11:10:03 ΜΜ
Ευχαριστω για την απαντηση :)
Μια ερωτηση ακομη. Επειδη ειμαι μαθητης, αν στις εξετασεις σε μια σχετικη ερωτηση απαντησω πως δεν ειναι δεσμευμενη, υποθετω πως θα το παρουν ως λαθος οι διορθωτες, σωστα; Υποθετω πως ειναι καλυτερα να το απαντησω οπως το εχει μεσα το βιβλιο, γιατι διαφορετικα μπορει να σκεφτουν που το ειδα αυτο και να το παρουν ως λαθος.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 04 Απρ 2017, 11:33:06 ΜΜ
Δεν νομίζω ότι θα υπάρξει τέτοια ερώτηση στις εξετάσεις, γιατί σε αυτή την περίπτωση ότι και να απαντήσεις θα είναι σωστό
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 05 Απρ 2017, 12:31:53 ΜΜ
Παράθεση από: evry στις 04 Απρ 2017, 12:26:33 ΠΜ

Το σκεπτικό είναι να δείξει ποια στοιχεία συγκρίνονται μεταξύ τους πριν αλλάξουν θέση. Πιστεύεις ότι αυτό που προτείνεις είναι πιο κατανοητό από τους μαθητές?

Γιάννη ευχαριστώ πολύ για τις παρατηρήσεις σου

Να σαι καλά!

Ναι έτσι πιστεύω..Καλό θα ήταν να μας πουν και άλλοι συνάδελφοι τις παρατηρήσεις τους.

Επίσης η φυσαλίδα δεν θα ήταν πιο απλή έτσι;

Κώδικας [Επιλογή]

for i in range(N-1):
    for j in range(N-1,i,-1):
        if L[j]<L[j-1]:
            L[j],L[j-1]=L[j-1],L[j]

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 15 Απρ 2017, 01:34:02 ΠΜ
Το τι είναι πιο απλό σηκώνει λίγο συζήτηση. Δηλαδή δεν μας ενδιαφέρει να κάνουμε μια απλή έκδοση της φυσαλίδας την οποία θα μπορούν οι μαθητές να αποστηθίσουν εύκολα. Η τελική έκδοση θα πρέπει να προκύπτει από μια επαγωγική διαδικασία όπως αυτή που προσπαθεί να κάνει το βιβλίο.
Για παράδειγμα στην έκδοση του βιβλίου στην εξωτερική επανάληψη δίνουμε το βήμα 1 (range(1,N,1)). Θα μπορούσαμε να μην το δίναμε.

Επίσης με βάση το σχήμα που δίνουμε προηγουμένως και από το οποίο θέλουμε ο μαθητής να γενικεύσει ταιριάζει καλύτερα το i=1 για πρώτο πέρασμα, i=2 για δεύτερο πέρασμα κλπ.
Θα το ξαναδώ όμως αυτές τις μέρες που γίνονται οι διορθώσεις.
 
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 15 Απρ 2017, 09:19:55 ΠΜ
Παράθεση από: evry στις 15 Απρ 2017, 01:34:02 ΠΜ
Το τι είναι πιο απλό σηκώνει λίγο συζήτηση. Δηλαδή δεν μας ενδιαφέρει να κάνουμε μια απλή έκδοση της φυσαλίδας την οποία θα μπορούν οι μαθητές να αποστηθίσουν εύκολα. Η τελική έκδοση θα πρέπει να προκύπτει από μια επαγωγική διαδικασία όπως αυτή που προσπαθεί να κάνει το βιβλίο.
Για παράδειγμα στην έκδοση του βιβλίου στην εξωτερική επανάληψη δίνουμε το βήμα 1 (range(1,N,1)). Θα μπορούσαμε να μην το δίναμε.

Επίσης με βάση το σχήμα που δίνουμε προηγουμένως και από το οποίο θέλουμε ο μαθητής να γενικεύσει ταιριάζει καλύτερα το i=1 για πρώτο πέρασμα, i=2 για δεύτερο πέρασμα κλπ.
Θα το ξαναδώ όμως αυτές τις μέρες που γίνονται οι διορθώσεις.
 

Δεν νομίζω ότι η υλοποίηση που προτείνω  πάντως ξεφεύγει απο την μέθοδο που προτείνει το βιβλίο, αφού στο 1ο πέρασμα θέλουμε να φτάσουμε απο την Ν-1 στη 0, στο 2ο περασμα απο την Ν-1 στην 1 κ.ο.κ
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 15 Απρ 2017, 11:56:02 ΠΜ
Δεν ξεφεύγει, θα μπορούσε να επαναδιατυπωθεί όλη η διαδικασία με μικρο-αλλαγές ώστε να ταιριάζει σε αυτή την εκδοχή.
Το θέμα είναι ότι δυσκολεύεσαι να μιλήσεις για βήμα 0 στους μαθητές, και να λες ότι είναι το 1ο βήμα.
Επίσης επειδή ο αλγόριθμος δεν είναι εύκολος στην κατανόηση (άσχετα αν είναι εύκολος στην απομνημόνευση) καλό θα είναι να φαίνονται όλες οι τιμές (αρχή, τέλος, βήμα). Εδώ το (1, Ν, 1) ταιριάζει καλύτερα. Το μόνο προβληματάκι στην έκδοση αυτή έχει να κάνει με το i-1 στην εσωτερική επανάληψη. Για αυτό είπα ότι θέλω να δω τι είναι καλύτερο. Εδώ όμως και i να δώσουν οι μαθητές πάλι σωστοί θα είναι, απλά θα κάνει μια περιττή σύγκριση.

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

Θα το κοιτάξω αυτές τις  μέρες που έχω χρόνο και θα δω ποια έκδοση προκύπτει πιο φυσιολογικά.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 17 Απρ 2017, 09:45:55 ΠΜ
Γιάννη τελικά μου φαίνεται ότι αυτό που προτείνεις μπορεί να σταθεί καλύτερα. Έχει αλλάξει όλη η παράγραφος έτσι ώστε να καταλήγει σε αυτή την έκδοση.
Αυτή που πρότεινα εγώ είχε το πρόβλημα με το i-1 στην εσωτερική επανάληψη που δεν μου άρεσε από την αρχή όπως είχα πει, αλλά θεωρούσα θετικό το γεγονός ότι ο εξωτερικός μετρητής i ταυτίζεται με τον αριθμό του περάσματος.

Παράθεση από: Γιάννης Αναγνωστάκης στις 15 Απρ 2017, 09:19:55 ΠΜ
Δεν νομίζω ότι η υλοποίηση που προτείνω  πάντως ξεφεύγει απο την μέθοδο που προτείνει το βιβλίο, αφού στο 1ο πέρασμα θέλουμε να φτάσουμε απο την Ν-1 στη 0, στο 2ο περασμα απο την Ν-1 στην 1 κ.ο.κ

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 17 Απρ 2017, 06:48:15 ΜΜ
Παράθεση από: evry στις 17 Απρ 2017, 09:45:55 ΠΜ
Γιάννη τελικά μου φαίνεται ότι αυτό που προτείνεις μπορεί να σταθεί καλύτερα. Έχει αλλάξει όλη η παράγραφος έτσι ώστε να καταλήγει σε αυτή την έκδοση.
Αυτή που πρότεινα εγώ είχε το πρόβλημα με το i-1 στην εσωτερική επανάληψη που δεν μου άρεσε από την αρχή όπως είχα πει, αλλά θεωρούσα θετικό το γεγονός ότι ο εξωτερικός μετρητής i ταυτίζεται με τον αριθμό του περάσματος.

Χαίρομαι που το βλέπουμε με την ίδια οπτική!
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 24 Απρ 2017, 10:12:59 ΠΜ
Στην ενότητα 3.5
ΠαράθεσηΣύνθετος τύπος δεδομένων (Composite Data Type) είναι εκείνος, που αποτε-
λείται από Πρωτογενείς ή / και άλλους σύνθετους τύπους, όπου μια μεταβλητή
μπορεί να πάρει ως τιμή μια ενότητα τιμών. Οι σύνθετοι τύποι καλούνται και
Δομές Δεδομένων. Παραδείγματα σύνθετων τύπων είναι η Εγγραφή, το Σύνο-
λο, ο Πίνακας.

Νομίζω ότι το σωστό θα ήταν :
Σύνθετος τύπος δεδομένων (Composite Data Type) είναι εκείνος, που αποτε-
λείται από απλούς ή / και άλλους σύνθετους τύπους,
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: aprekates στις 24 Απρ 2017, 01:25:55 ΜΜ
Στις δραστηριότητες εμπέδωσης της ενότητας 11.2  όρίζεται ή κλάση
class Car:
   def __init__(self,make):
          self.make = make
...


Κρίνωντας από τις ερωτήσεις 3,5 καλύτερο όνομα της μεταβλητής θα ήταν το marka.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 24 Απρ 2017, 10:30:46 ΜΜ
@aprekates
όσον αφορά το απλός αντί για πρωτογενής τύπος δεδομένων πιθανόν να κατάλαβες ότι πρόκειται για μια προσπάθεια μετάφρασης του primitive. Το απλός ίσως να είναι παιδαγωγικά καλύτερο για τους μαθητές αλλά δεν μου φαίνεται δόκιμο.

Όπως και να έχει ευχαριστώ για τις παρατηρήσεις σου σε αυτό το thread , βοήθησαν πολύ.
Αυτή τη στιγμή έχουν διορθωθεί και έχουν αναδιατυπωθεί αρκετά πράγματα στα βιβλία της Β και της Γ. Επίσης έχει γίνει προσπάθεια να υπάρχει μια συνέπεια/συνέχεια με τη Β (π.χ. τελεστής διαμέρισης, τελεστής ακέραιας διαίρεσης κλπ).
Φέτος ήταν μια δύσκολη χρονιά γιατί όλα έγιναν γρήγορα. Του χρόνου αν όλα πάνε καλά οι μαθητές θα έχουν από την αρχή της χρονιάς:
1) Βιβλίο (2η έκδοση)
2) Τετράδιο μαθητή
3) Τεύχος λύσεων του τετραδίου μαθητή

και οι καθηγητές το Βιβλίο καθηγητή
Όλα τα παραπάνω έχουν ολοκληρωθεί από τη συγγραφική ομάδα.

Ωστόσο το σημαντικό είναι να αντιληφθούν όλοι οι καθηγητές ότι το μάθημα δεν είναι μόνο του στη Γ αλλά αποτελεί συνέχεια του μαθήματος της Β που είναι τετράωρο και εργαστηριακό.
Νομίζω ότι η ύλη που ζητείται υπερκαλύπτεται άνετα σε 2 τετράωρα μαθήματα, δεδομένου ότι πάνω από το 50% επαναλαμβάνεται στη Γ ως εμβάθυνση.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 17 Αυγ 2017, 02:59:19 ΜΜ
Νέες εκδόσεις βιβλίων Προγραμματισμού Υπολογιστών και Δίκτυα Υπολογιστών
http://www.iep.edu.gr/el/component/k2/19-tomeas-pliroforikis
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: tsak στις 19 Αυγ 2017, 12:47:20 ΠΜ
Ευχαριστούμε.. Θα μας βοηθήσουν πολύ
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 20 Αυγ 2017, 11:14:39 ΠΜ
Υπάρχουν διορθώσεις και στα δυο βιβλία προγραμματισμού για Β και Γ ΕΠΑΛ.
Οι διορθώσεις είναι αρκετές και μερικά σημεία έχουν ξαναγραφτεί, έτσι ώστε να υπάρχει μια καλύτερη συμβατότητα μεταξύ των δυο βιβλίων. Στο βιβλίο της Γ προσοχή στα κεφάλαια με τις δομές δεδομένων όπου έχει προστεθεί η χρήση του τελεστή διαμέρισης : , ο οποίος μπορεί να χρησιμοποιείται από τους μαθητές.
Επίσης αφαιρέθηκαν κάποια παραδείγματα κλήσεων μεθόδων της Python όπως find, upper κλπ για να μην θεωρηθούν ότι είναι εντός ύλης.
Ειδικά το βιβλίο της Γ έχει σημαντικές αλλαγές σε κάποια σημεία όποτε θα πρέπει να προσέξουν οι εκπαιδευτικοί να μην χρησιμοποιήσουν τα παλιά βιβλία, ειδικά στα τελευταία κεφάλαια.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 20 Αυγ 2017, 01:46:03 ΜΜ
2 ερωτήσεις

1. Τα τετράδιο μαθητή στο Προγραμματισμο δεν υπέστη καμία αλλαγή, σωστά?
2. Στο κεφάλαιο  3 / Δραστηριότητα 4 (τετράδιο μαθητή, λύσεις ασκήσεων) γιατί το Print δεν ειναι αποδεκτό όνομα μεταβλητής; Προφανώς δεν είναι δόκιμο, αλλά δεν είναι λάθος.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: evry στις 21 Αυγ 2017, 10:39:32 ΠΜ
Παράθεση από: Γιάννης Αναγνωστάκης στις 20 Αυγ 2017, 01:46:03 ΜΜ
2 ερωτήσεις

1. Τα τετράδιο μαθητή στο Προγραμματισμο δεν υπέστη καμία αλλαγή, σωστά?
Είχαμε κάνει διορθώσεις και στο τετράδιο μαθητής μετά από παρατηρήσεις που είχαμε μαζέψει, όμως από ότι βλέπω δεν έχει ανέβει η νέα έκδοση.
Υποθέτω ότι στα σχολεία θα σταλεί σε έντυπη μορφή η διορθωμένη έκδοση.

Παράθεση
2. Στο κεφάλαιο  3 / Δραστηριότητα 4 (τετράδιο μαθητή, λύσεις ασκήσεων) γιατί το Print δεν ειναι αποδεκτό όνομα μεταβλητής; Προφανώς δεν είναι δόκιμο, αλλά δεν είναι λάθος.
Η μόνη λογική εξήγηση είναι ότι όταν στο word γράφεις print και μετά πατάς space το p γίνεται κεφαλαίο :D
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Γιάννης Αναγνωστάκης στις 21 Αυγ 2017, 11:50:05 ΠΜ
Παράθεση από: evry στις 21 Αυγ 2017, 10:39:32 ΠΜ
Είχαμε κάνει διορθώσεις και στο τετράδιο μαθητής μετά από παρατηρήσεις που είχαμε μαζέψει, όμως από ότι βλέπω δεν έχει ανέβει η νέα έκδοση.
Υποθέτω ότι στα σχολεία θα σταλεί σε έντυπη μορφή η διορθωμένη έκδοση.
Η μόνη λογική εξήγηση είναι ότι όταν στο word γράφεις print και μετά πατάς space το p γίνεται κεφαλαίο :D
;D
Καλό θα ήταν πάντως να ανέβει και η καινούρια ηλεκτρονική έκδοση του τετραδίου  μαθητή στο iep για όσους δεν μπορούν να έχουν έντυπη έκδοση. Αν μπορεί κάποιος από τη συγγραφική ομάδα να επικοινωνήσει με το iep για αυτό το θέμα θα ήταν πολύ χρήσιμο.

Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: vpap στις 14 Σεπ 2017, 05:16:07 ΜΜ
Στο νέο βιβλίο (έκδοση 2.0):
Σελ. 34, ποιο είναι το σωστό, τελεστής ίσον ή τελεστής εκχώρησης; Μάλλον το 2ο οπότε θα έπρεπε το τελεστής ίσον να μην αναφέρεται πουθενά στο βιβλίο
Σελ. 37, τελευταία γραμμή, από τη γενική σύνταξη λείπει η προτροπή (μήνυμα) δηλ. Σύνταξη: Όνομα μεταβλητής = raw_input ('μήνυμα')
Σελ. 43, σε ποια γλώσσα προγραμματισμού το σύμβολο := είναι πράξη (δηλ. τελεστής) ακεραίων;;
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: Λαμπράκης Μανώλης στις 08 Φεβ 2018, 12:06:09 ΜΜ
 Καλημέρς σε όλους

Να ρωτήσω ( δίχως να έχω διαβάσει όλες τις προηγούμενες απαντήσει, συγνώμη αν έχει αναφερθεί ξανά, αλλά μιας που το είδα τώρα που κάνω μάθημα το στέλνω)

Σελ 77 στη νέα έκδοση, το σχόλιο δεν θα έπρεπε να είναι # μέχρι i+1 αντί μέχρι i-1 ;;;  αν είναι πχ απο 10 μέχρι 1 θα σταματήσει στο 2 όχι στο 0... δεν ξέρω αν μου διαφεύγει κάτι..
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: demy8 στις 28 Φεβ 2018, 11:00:50 ΠΜ
1) Στο κεφαλαιο 8.4 ουρά στη νέα έκδοση στην εισαγωγή υπάρχει η εντολή:

         queue=queue.append(item)

δεν θα έπρεπε να είναι απλά:

           queue.append(item) ;

2) επίσης θα ήθελα να ρωτήσω γιατί είναι λάθος η υπολοίηση στην πρώτη έκδοση ( queue=queue + [item]  ) ;
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: taxata στις 01 Μαρ 2018, 11:54:18 ΜΜ
1) θα ήταν μάλλον προτιμότερο και πιο κατανοητό από τη δημιουργία τοπικής ουράς μέσα στη συνάρτηση με το ίδιο όνομα.
2) στους αλγόριθμους υλοποίησης στοίβας και ουράς αντίστοιχα, στη συνάρτηση push και enqueue ενώ έρχεται η στοίβα( ή η ουρά) ως εξωτερική παράμετρος,  με τη δήλωση stack = stack + [item] εντός της συνάρτησης ξαναορίζεται μία κενή τοπική στοίβα stack ( ή ουρά) και προστίθεται σε αυτή το στοιχείο item. (αντί της stack.append(item) η οποία θα άλλαζε την καλούμενη στοίβα ( ή ουρά)
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: vdvas στις 05 Μαΐου 2018, 11:35:58 ΜΜ
Στο κεφάλαιο 11 και συγκεκριμένα στην ενότητα 11.3 γίνεται λόγος για το πως μπορούν να ορισθούν ιδιότητες σε μία κλάση.

Στο κείμενο αναφέρεται ότι μπορούμε να ορίσουμε μια ιδιότητα είτε μέσα σε μία κλάση, είτε σε ένα αντικείμενο μιας κλάσης και αφήνεται να εννοηθεί ότι το αποτέλεσμα είναι το ίδιο.

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

Πέρα όμως από αυτό, ακόμα και οι ιδιότητες που ορίζονται στην κλάση δεν είναι απλή περίπτωση.
Ενώ όλα τα αντικείμενα της κλάσης μπορούν να διαβάσουν την τιμή τους, όταν κάποιο από αυτά την τροποποιήσει με το συμβολισμό Αντικείμενο.Ιδιότητα=Νέα_Τιμή, η τροποποίηση αυτή ισχύει μόνο για το συγκεκριμένο αντικείμενο.

Θα πρέπει να χρησιμοποιηθεί η έκφραση Κλάση.Ιδιότητα=Νέα_Τιμή για να αλλάξει η τιμή για όλα τα αντικείμενα και πάλι αυτό θα γίνει μόνο για αυτά στα οποία δεν έχει ήδη τροποποιηθεί μέσω του ονόματος του αντικειμένου, όπως φαίνεται και από το ακόλουθο κομμάτι κώδικα:

Κώδικας [Επιλογή]
class Counter:
  top=100
  def __init__(self,i):
    self.i=i

c1=Counter(50)
c2=Counter(20)
c3=Counter(30)
print c1.top, c2.top, c3.top
c1.top=80
print c1.top, c2.top, c3.top
Counter.top=150
print c1.top, c2.top, c3.top


που έχει σαν αποτέλεσμα:
100 100 100
80 100 100
80 150 150

Νομίζω ότι το κομμάτι αυτό δεν είναι σαφές και πιθανώς να χρειάζεται επαναδιατύπωση.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: happiness στις 18 Σεπ 2019, 10:38:40 ΠΜ
Είμαι πολύ καινούρια στην Python. Στο τετράδιο μαθητή παρατηρώ από την πρώτη-πρώτη δραστηριότητα ότι χρησιμοποιείται η print +παράμετρο χωρίς η παράμετρος να κλείνεται σε παρενθέσεις. Στο Thonny που χρησιμοποιώ ως περιβάλλον, αυτό το πετάει syntax error και το ίδιο βλέπω και σε άλλα online tutorials. Τι είναι αυτό που δεν γνωρίζω και χρησιμοποιείται έτσι στο τετράδιο μαθητή;
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: seibei στις 18 Σεπ 2019, 04:21:38 ΜΜ

Στην python2 που χρησιμοποιείται στο ΕΠΑΛ (ποτέ δεν κατάλαβα γιατί), η print δεν είναι συνάρτηση,
οπότε δεν έχει παρένθεση όπως στην python3.
Προφανώς το περιβάλλον που χρησιμοποιείς εχει python3.
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: alkisg στις 18 Σεπ 2019, 04:56:27 ΜΜ
https://alkisg.mysch.gr/steki/index.php?topic=7900.msg87354#msg87354
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: happiness στις 19 Σεπ 2019, 09:34:57 ΠΜ
Και εγώ τι να μάθω στα παιδιά; Τι χρησιμοποιείται στις πανελλήνιες; το με ή χωρίς;
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: polikarpos στις 19 Σεπ 2019, 07:13:05 ΜΜ
Παράθεση από: happiness στις 19 Σεπ 2019, 09:34:57 ΠΜ
Και εγώ τι να μάθω στα παιδιά; Τι χρησιμοποιείται στις πανελλήνιες; το με ή χωρίς;
Χωρίς
Τίτλος: Απ: Διορθώσεις Βιβλίου Προγραμματισμός Υπολογιστών Γ ΕΠΑΛ
Αποστολή από: likoyrgos στις 20 Σεπ 2019, 06:11:43 ΜΜ
Πάντως οι οδηγίες που είχαν δοθεί στα κέντρα είναι να μην κοιτούν τον τρόπο σύνταξης (με ή χωρίς παρένθεση).