Αποστολέας Θέμα: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"  (Αναγνώστηκε 5090 φορές)

taxata

  • Βετεράνος
  • ****
  • Μηνύματα: 95
  • Live long and prosper \\//
    • Πληροφορική στο ΕΠΑΛ
Καλησπέρα σε όλους,
παραθέτω ένα σύνδεσμο με προτάσεις επίλυσης των δραστηριοτήτων του διδακτικού υλικού
του μαθήματος του Προγραμματισμού Υπολογιστών της Γ' ΕΠΑΛ.
Οι λύσεις  εμπεριέχουν τις εκφωνήσεις,
μικρή τεκμηρίωση και τα σενάρια επίλυσης με ένα βαθμό ελευθερίας ως προς τα αρχικά προβλήματα
για να διευκολύνουν τη λειτουργικότητα εκτέλεσης του κώδικα.

Ελπίζω να φανούν χρήσιμες.
http://blogs.sch.gr/chatzipap/new_epal_programming/

« Τελευταία τροποποίηση: 23 Δεκ 2016, 08:05:04 πμ από taxata »
Τάσος_Χατζηπαπαδόπουλος
http://users.sch.gr/chatzipap/

demy8

  • Θαμώνας
  • ***
  • Μηνύματα: 35
ευχαριστούμε!πολύ καλή δουλειά!!

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 815
Να σαι καλά!

dimitra

  • Βετεράνος
  • ****
  • Μηνύματα: 98
Πολύ καλή δουλειά, ευχαριστούμε!
Ενιαίο, δημόσιο και δωρεάν δωδεκάχρονο σχολείο.

taxata

  • Βετεράνος
  • ****
  • Μηνύματα: 95
  • Live long and prosper \\//
    • Πληροφορική στο ΕΠΑΛ
Η έκδοση των λύσεων
στον παραπάνω σύνδεσμο ενημερώθηκε.
 ::)
Τάσος_Χατζηπαπαδόπουλος
http://users.sch.gr/chatzipap/

Λάμπρος Μπουκουβάλας

  • Η παιδεία είναι: στους φτωχούς, ΠΛΟΥΤΟΣ. Στους πλούσιους, ΣΤΟΛΙΔΙ. Στους νέους, ΚΑΙ ΤΑ ΔΥΟ (Διογένης) !
  • Δεινόσαυρος
  • *****
  • Μηνύματα: 1226
    • Το μπλογκάκι μου
Πολύ χρήσιμο. Σε ευχαριστούμε πολύ.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται…

kouretas

  • Νέος
  • *
  • Μηνύματα: 5
Για τη δραστηριότητα 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()

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3153
  • to Iterate is human to Recurse divine
Από τη στιγμή που δεν αναφέρεται στο βιβλίο (αν κάνω λάθος διόρθωσέ με) δεν μπορεί να χρησιμοποιηθεί. Αν εσύ στο μάθημα ή στο εργαστήριο υπολογιστών δεις ότι σε βολεύει προφανώς μπορείς να την χρησιμοποιήσεις. Αλλά δεν μπορεί να ζητηθεί ή να χρησιμοποιηθεί σε εξετάσεις.
Η λύση σου είναι πολύ καλή και δείχνει ότι δεν υπάρχει λόγος να χρησιμοποιηθεί κάποια άλλη συνάρτηση.
νομίζω ότι το str που χρησιμοποιείς δεν χρειάζεται γιατί αυτά που διαβάζεις είναι χαρακτήρες.

Κώδικας: Python
  1. # Δραστηριότητα 3, σελ. 103
  2. def askisi3():
  3.     input = open('input.txt', 'r')
  4.     string = ''
  5.     for line in input:
  6.         print line
  7.         string = line + string
  8.     output = open('output.txt', 'w')
  9.     output.write(string)
  10.     input.close()
  11.     output.close()

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

Επίσης θα πρέπει να εξηγήσεις ότι επειδή αυτά που μεταφέρουμε είναι strings περιέχουν μέσα τον χαρακτήρα τέλους γραμμής '\n'. Αν δώσεις αριθμούς και τους μετατατρέψουν με την int και μετά τους πετάξουν σε ένα αρχείο εκεί θα δουν ότι εκτυπώνονται ο ένας δίπλα στον άλλον και όχι κάτω από τον άλλον
« Τελευταία τροποποίηση: 16 Ιαν 2017, 11:40:53 μμ από evry »
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

polikarpos

  • Θαμώνας
  • ***
  • Μηνύματα: 43
  • www.sepchiou.gr
    • Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου
Ευχαριστούμε για τις  λύσεις!
Μια μικρή διόρθωση στη
ΚΕΦΑΛΑΙΟ 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
               

www.sepchiou.gr
moodle.sepchiou.gr
museum.sepchiou.gr

taxata

  • Βετεράνος
  • ****
  • Μηνύματα: 95
  • Live long and prosper \\//
    • Πληροφορική στο ΕΠΑΛ
@polikarpos
Ορθή η παρατήρησή σου συνάδελφε ευχαριστώ..
Για το "break" που χρησιμοποιούν οι μαθητές σου ίσως θέλει λίγο προσοχή (ως βολικότατη εντολή διαφυγής παρασύρθηκα και εγώ μου φαίνεται το χρησιμοποίησα κάπου στις λύσεις) γιατί αφενός δεν αναφέρεται στο βιβλίο (οπότε είναι ένα ερώτημα εάν μπορεί να χρησιμοποιηθεί σε εξετάσεις) αφετέρου ίσως εγείρει κουβέντα εάν και κατά πόσο παραβιάζει τις αρχές του δομημένου προγραμματισμού.
« Τελευταία τροποποίηση: 27 Ιαν 2017, 09:15:49 μμ από taxata »
Τάσος_Χατζηπαπαδόπουλος
http://users.sch.gr/chatzipap/

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3153
  • to Iterate is human to Recurse divine
Η δίκη μου γνώμη είναι ότι στον σύγχρονο προγραμματισμό η χρήση της break επιβάλλεται. Δεν είναι κάτι που μπορεί να δημιουργήσει σοβαρά προβλήματα όπως ήταν η goto ή ακόμα και η continue της C. Σε πολλές περιπτώσεις θα διευκολύνει πολύ τους μαθητές.
Το ότι κάτι δεν υπακούει πιστά στις αρχές του δομημένου προγραμματισμού δεν είναι απαραίτητα κακό.
Το θέμα είναι κατά πόσο η χρήση της break θα διευκολύνει ή θα χειροτερέψει τη μαθησιακή διαδικασία. Στην αρχή και εγώ έχω δει στην τάξη ότι οι μαθητές προτιμούν την break. Αλλά αυτό είναι λογικό αφού οι μαθητές θα προτιμήσουν ότι τους κάνει τη ζωή εύκολη.
Το ερώτημα είναι : Μπορούν να απαντήσουν πάντα ποια είναι η επόμενη εντολή που θα εκτελεστεί μετά τη break? Αν το έχουν καταλάβει αυτό νομίζω ότι δεν υπάρχει πρόβλημα.

Ωστόσο η break δεν υπάρχει σε κανένα από τα δυο βιβλία. Ο λόγος είναι ότι ήδη το μάθημα έχει αρκετές αλλαγές σε σχέση με το προηγούμενο, και δεν υπάρχει λόγος να πέσουμε με τα μούτρα στην Python. Ας εξασφαλίσουμε πρώτα μια ομαλή μετάβαση και τα στοιχειώδη και μετά μπορούμε να δούμε και πρακτικές που αλλάζουν αρκετά τον τρόπο σκέψης π.χ. ας εξασφαλίσουμε πρώτα ότι όλοι οι συνάδελφοι κάνουν Python στην Β ώστε να διευκολύνουν το μάθημα της Γ και ότι η υπάρχουσα ύλη Β+Γ μπορεί να διδαχθεί σε 200 ώρες (4ώρεςx25 εβδομάδες για κάθε έτος) και αν χρειάζονται διορθωτικές κινήσεις.
Άρα καλό θα ήταν να μην δείχνουμε την break στους μαθητές γιατί αν τη χρησιμοποιήσουν στις εξετάσεις θα υπάρχει θέμα, αφού δεν είναι στην ύλη τους.
ΥΓ. Ωστόσο υπάρχει μη δομημένη τεχνική στην ύλη και αυτή είναι η χρήση της return  ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

polikarpos

  • Θαμώνας
  • ***
  • Μηνύματα: 43
  • www.sepchiou.gr
    • Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου
H χρήση του   break συμφωνώ ότι δεν είναι στην ύλη. Πέρσυ δεν είχαμε ιδέα τι θα είναι και τι όχι στην ύλη και το χρησιμοποίησα. 
Από τους   μαθητές μου 3 στους 9 θυμούνται τη χρήση  του break. Αυτό ομολογώ ότι σπάνια έως ποτέ δε συμβαίνει στα ΕΠΑΛ και δε μπορώ να μην το ενθαρρύνω παρότι τους είπα ότι είναι εκτός  ύλης.
Πάντως το να συζητάμε τέτοια θέματα και ταυτόχρονα να μην είναι σίγουρο ότι όλοι κάνουν Python στη Β είναι κάπως.....
www.sepchiou.gr
moodle.sepchiou.gr
museum.sepchiou.gr

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3153
  • to Iterate is human to Recurse divine
Πάντως η break δεν είναι κάτι καινούργιο, δεν είναι αποκλειστικό χαρακτηριστικό της Python. Και η Pascal έχει break αλλά εκεί κανείς δεν την χρησιμοποιούσε.
« Τελευταία τροποποίηση: 29 Ιαν 2017, 08:21:41 πμ από evry »
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Λάμπρος Μπουκουβάλας

  • Η παιδεία είναι: στους φτωχούς, ΠΛΟΥΤΟΣ. Στους πλούσιους, ΣΤΟΛΙΔΙ. Στους νέους, ΚΑΙ ΤΑ ΔΥΟ (Διογένης) !
  • Δεινόσαυρος
  • *****
  • Μηνύματα: 1226
    • Το μπλογκάκι μου
Ας μη βασιζόμαστε τόσο πολύ στη διδαγμένη ύλη για Python της β' λυκείου.
Μη ξεχνάτε ότι πρόκειται για μονόωρο μάθημα.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται…

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3153
  • to Iterate is human to Recurse divine
Λάμπρο για το μάθημα "Αρχές Προγραμματισμού" λέμε που διδάσκεται 4 ώρες (1Θ + 3Ε)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr