Καλησπέρα σε όλους,
παραθέτω ένα σύνδεσμο με προτάσεις επίλυσης των δραστηριοτήτων του διδακτικού υλικού
του μαθήματος του Προγραμματισμού Υπολογιστών της Γ' ΕΠΑΛ.
Οι λύσεις εμπεριέχουν τις εκφωνήσεις,
μικρή τεκμηρίωση και τα σενάρια επίλυσης με ένα βαθμό ελευθερίας ως προς τα αρχικά προβλήματα
για να διευκολύνουν τη λειτουργικότητα εκτέλεσης του κώδικα.
Ελπίζω να φανούν χρήσιμες.
http://blogs.sch.gr/chatzipap/new_epal_programming/ (http://blogs.sch.gr/chatzipap/new_epal_programming/)
ευχαριστούμε!πολύ καλή δουλειά!!
Να σαι καλά!
Πολύ καλή δουλειά, ευχαριστούμε!
Η έκδοση των λύσεων
στον παραπάνω σύνδεσμο ενημερώθηκε.
::)
Πολύ χρήσιμο. Σε ευχαριστούμε πολύ.
Για τη δραστηριότητα 3 σελ 103. Όσον αφορά το σκέλος εγγραφής στο δεύτερο αρχείο
το περιεχόμενο του πρώτου με αντίστροφη σειρά παραθέτω μία λύση χωρίς τη χρήση reversed list.
Επίσης θα ήθελα να ρωτήσω αν η μέθοδος reversed μπορεί να θεωρηθεί εντός ύλης.
f1 = open("output.txt", "r")
f2 = open("output2.txt", "w")
s1=""
for item in f1:
print item
s1=str(item+s1)
f2.write(str(s1))
f1.close()
f2.close()
Από τη στιγμή που δεν αναφέρεται στο βιβλίο (αν κάνω λάθος διόρθωσέ με) δεν μπορεί να χρησιμοποιηθεί. Αν εσύ στο μάθημα ή στο εργαστήριο υπολογιστών δεις ότι σε βολεύει προφανώς μπορείς να την χρησιμοποιήσεις. Αλλά δεν μπορεί να ζητηθεί ή να χρησιμοποιηθεί σε εξετάσεις.
Η λύση σου είναι πολύ καλή και δείχνει ότι δεν υπάρχει λόγος να χρησιμοποιηθεί κάποια άλλη συνάρτηση.
νομίζω ότι το str που χρησιμοποιείς δεν χρειάζεται γιατί αυτά που διαβάζεις είναι χαρακτήρες.
# Δραστηριότητα 3, σελ. 103
def askisi3():
input = open('input.txt', 'r')
string = ''
for line in input:
print line
string = line + string
output = open('output.txt', 'w')
output.write(string)
input.close()
output.close()
Ουσιαστικά έμμεσα έχεις υλοποιήσει μια στοίβα και είναι η ευκαιρία να κάνεις μια νύξη στους μαθητές με αυτό το παράδειγμα.
Επίσης θα πρέπει να εξηγήσεις ότι επειδή αυτά που μεταφέρουμε είναι strings περιέχουν μέσα τον χαρακτήρα τέλους γραμμής '\n'. Αν δώσεις αριθμούς και τους μετατατρέψουν με την int και μετά τους πετάξουν σε ένα αρχείο εκεί θα δουν ότι εκτυπώνονται ο ένας δίπλα στον άλλον και όχι κάτω από τον άλλον
Ευχαριστούμε για τις λύσεις!
Μια μικρή διόρθωση στη
ΚΕΦΑΛΑΙΟ 5ο ΚΛΑΣΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ
Δραστηριότητα 4 / Σελίδα 87 (βελτιωμένη φυσαλίδα)
# Βελτιωμένη Φυσαλίδα
def shortBubblesort(aList):
done = False
i = 0
while i < len(aList) - 1 and done == False :
done = True
for j in range(len(aList) - 1, i , -1):
if aList[j] < aList[j-1] :
aList[j], aList[j-1] = aList[j-1], aList[j]
done = False
έχει ξεχαστεί το i=i+1
Βέβαια και έτσι δουλεύει το οποίο σημαίνει ότι θα μπορούσαμε να το λύσουμε κι έτσι
# Βελτιωμένη Φυσαλίδα
def shortBubblesort(aList):
done = False
while done == False : #ή not done
done = True
for j in range(len(aList) - 1, i , -1):
if aList[j] < aList[j-1] :
aList[j], aList[j-1] = aList[j-1], aList[j]
done = False
οι μαθητές μου πάντως (αυτοί που θυμούνται το break)προτιμούν τη παρακάτω λύση
N = len( array )
for i in range(1 , N, 1):
done = True
for j in range(N-1 , i-1 , -1):
if array[ j ] < array[ j-1 ] :
array [ j ] , array [ j-1 ] = array[ j-1 ] , array[ j]
done = False
if done:
break
@polikarpos
Ορθή η παρατήρησή σου συνάδελφε ευχαριστώ..
Για το "break" που χρησιμοποιούν οι μαθητές σου ίσως θέλει λίγο προσοχή (ως βολικότατη εντολή διαφυγής παρασύρθηκα και εγώ μου φαίνεται το χρησιμοποίησα κάπου στις λύσεις) γιατί αφενός δεν αναφέρεται στο βιβλίο (οπότε είναι ένα ερώτημα εάν μπορεί να χρησιμοποιηθεί σε εξετάσεις) αφετέρου ίσως εγείρει κουβέντα εάν και κατά πόσο παραβιάζει τις αρχές του δομημένου προγραμματισμού.
Η δίκη μου γνώμη είναι ότι στον σύγχρονο προγραμματισμό η χρήση της break επιβάλλεται. Δεν είναι κάτι που μπορεί να δημιουργήσει σοβαρά προβλήματα όπως ήταν η goto ή ακόμα και η continue της C. Σε πολλές περιπτώσεις θα διευκολύνει πολύ τους μαθητές.
Το ότι κάτι δεν υπακούει πιστά στις αρχές του δομημένου προγραμματισμού δεν είναι απαραίτητα κακό.
Το θέμα είναι κατά πόσο η χρήση της break θα διευκολύνει ή θα χειροτερέψει τη μαθησιακή διαδικασία. Στην αρχή και εγώ έχω δει στην τάξη ότι οι μαθητές προτιμούν την break. Αλλά αυτό είναι λογικό αφού οι μαθητές θα προτιμήσουν ότι τους κάνει τη ζωή εύκολη.
Το ερώτημα είναι : Μπορούν να απαντήσουν πάντα ποια είναι η επόμενη εντολή που θα εκτελεστεί μετά τη break? Αν το έχουν καταλάβει αυτό νομίζω ότι δεν υπάρχει πρόβλημα.
Ωστόσο η break δεν υπάρχει σε κανένα από τα δυο βιβλία. Ο λόγος είναι ότι ήδη το μάθημα έχει αρκετές αλλαγές σε σχέση με το προηγούμενο, και δεν υπάρχει λόγος να πέσουμε με τα μούτρα στην Python. Ας εξασφαλίσουμε πρώτα μια ομαλή μετάβαση και τα στοιχειώδη και μετά μπορούμε να δούμε και πρακτικές που αλλάζουν αρκετά τον τρόπο σκέψης π.χ. ας εξασφαλίσουμε πρώτα ότι όλοι οι συνάδελφοι κάνουν Python στην Β ώστε να διευκολύνουν το μάθημα της Γ και ότι η υπάρχουσα ύλη Β+Γ μπορεί να διδαχθεί σε 200 ώρες (4ώρεςx25 εβδομάδες για κάθε έτος) και αν χρειάζονται διορθωτικές κινήσεις.
Άρα καλό θα ήταν να μην δείχνουμε την break στους μαθητές γιατί αν τη χρησιμοποιήσουν στις εξετάσεις θα υπάρχει θέμα, αφού δεν είναι στην ύλη τους.
ΥΓ. Ωστόσο υπάρχει μη δομημένη τεχνική στην ύλη και αυτή είναι η χρήση της return ;)
H χρήση του break συμφωνώ ότι δεν είναι στην ύλη. Πέρσυ δεν είχαμε ιδέα τι θα είναι και τι όχι στην ύλη και το χρησιμοποίησα.
Από τους μαθητές μου 3 στους 9 θυμούνται τη χρήση του break. Αυτό ομολογώ ότι σπάνια έως ποτέ δε συμβαίνει στα ΕΠΑΛ και δε μπορώ να μην το ενθαρρύνω παρότι τους είπα ότι είναι εκτός ύλης.
Πάντως το να συζητάμε τέτοια θέματα και ταυτόχρονα να μην είναι σίγουρο ότι όλοι κάνουν Python στη Β είναι κάπως.....
Πάντως η break δεν είναι κάτι καινούργιο, δεν είναι αποκλειστικό χαρακτηριστικό της Python. Και η Pascal έχει break αλλά εκεί κανείς δεν την χρησιμοποιούσε.
Ας μη βασιζόμαστε τόσο πολύ στη διδαγμένη ύλη για Python της β' λυκείου.
Μη ξεχνάτε ότι πρόκειται για μονόωρο μάθημα.
Λάμπρο για το μάθημα "Αρχές Προγραμματισμού" λέμε που διδάσκεται 4 ώρες (1Θ + 3Ε)
Έχεις δίκιο Ευρυπίδη...
Κακώς είχα στο μυαλό μου μόνο το θεωρητικό μέρος.
Ο αρχικός σύνδεσμος δε φαίνεται να οδηγεί στις λύσεις...
Μήπως μπορεί κάποιος να ανεβάσει τις λύσεις και να αναρτήσει τον σύνδεσμο σ' αυτές;