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

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: taxata στις 10 Νοε 2016, 08:07:04 μμ

Τίτλος: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: taxata στις 10 Νοε 2016, 08:07:04 μμ
Καλησπέρα σε όλους,
παραθέτω ένα σύνδεσμο με προτάσεις επίλυσης των δραστηριοτήτων του διδακτικού υλικού
του μαθήματος του Προγραμματισμού Υπολογιστών της Γ' ΕΠΑΛ.
Οι λύσεις  εμπεριέχουν τις εκφωνήσεις,
μικρή τεκμηρίωση και τα σενάρια επίλυσης με ένα βαθμό ελευθερίας ως προς τα αρχικά προβλήματα
για να διευκολύνουν τη λειτουργικότητα εκτέλεσης του κώδικα.

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

Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: demy8 στις 10 Νοε 2016, 11:50:41 μμ
ευχαριστούμε!πολύ καλή δουλειά!!
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: Γιάννης Αναγνωστάκης στις 20 Νοε 2016, 02:27:29 μμ
Να σαι καλά!
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: dimitra στις 21 Νοε 2016, 10:59:31 μμ
Πολύ καλή δουλειά, ευχαριστούμε!
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: taxata στις 15 Δεκ 2016, 01:02:31 μμ
Η έκδοση των λύσεων
στον παραπάνω σύνδεσμο ενημερώθηκε.
 ::)
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: Λάμπρος Μπουκουβάλας στις 22 Δεκ 2016, 10:30:40 πμ
Πολύ χρήσιμο. Σε ευχαριστούμε πολύ.
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: kouretas στις 16 Ιαν 2017, 10:34:20 μμ
Για τη δραστηριότητα 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 στις 16 Ιαν 2017, 10:52:04 μμ
Από τη στιγμή που δεν αναφέρεται στο βιβλίο (αν κάνω λάθος διόρθωσέ με) δεν μπορεί να χρησιμοποιηθεί. Αν εσύ στο μάθημα ή στο εργαστήριο υπολογιστών δεις ότι σε βολεύει προφανώς μπορείς να την χρησιμοποιήσεις. Αλλά δεν μπορεί να ζητηθεί ή να χρησιμοποιηθεί σε εξετάσεις.
Η λύση σου είναι πολύ καλή και δείχνει ότι δεν υπάρχει λόγος να χρησιμοποιηθεί κάποια άλλη συνάρτηση.
νομίζω ότι το 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 και μετά τους πετάξουν σε ένα αρχείο εκεί θα δουν ότι εκτυπώνονται ο ένας δίπλα στον άλλον και όχι κάτω από τον άλλον
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: polikarpos στις 27 Ιαν 2017, 01:47:01 μμ
Ευχαριστούμε για τις  λύσεις!
Μια μικρή διόρθωση στη
ΚΕΦΑΛΑΙΟ 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
               

Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: taxata στις 27 Ιαν 2017, 08:58:19 μμ
@polikarpos
Ορθή η παρατήρησή σου συνάδελφε ευχαριστώ..
Για το "break" που χρησιμοποιούν οι μαθητές σου ίσως θέλει λίγο προσοχή (ως βολικότατη εντολή διαφυγής παρασύρθηκα και εγώ μου φαίνεται το χρησιμοποίησα κάπου στις λύσεις) γιατί αφενός δεν αναφέρεται στο βιβλίο (οπότε είναι ένα ερώτημα εάν μπορεί να χρησιμοποιηθεί σε εξετάσεις) αφετέρου ίσως εγείρει κουβέντα εάν και κατά πόσο παραβιάζει τις αρχές του δομημένου προγραμματισμού.
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: evry στις 28 Ιαν 2017, 09:28:15 πμ
Η δίκη μου γνώμη είναι ότι στον σύγχρονο προγραμματισμό η χρήση της break επιβάλλεται. Δεν είναι κάτι που μπορεί να δημιουργήσει σοβαρά προβλήματα όπως ήταν η goto ή ακόμα και η continue της C. Σε πολλές περιπτώσεις θα διευκολύνει πολύ τους μαθητές.
Το ότι κάτι δεν υπακούει πιστά στις αρχές του δομημένου προγραμματισμού δεν είναι απαραίτητα κακό.
Το θέμα είναι κατά πόσο η χρήση της break θα διευκολύνει ή θα χειροτερέψει τη μαθησιακή διαδικασία. Στην αρχή και εγώ έχω δει στην τάξη ότι οι μαθητές προτιμούν την break. Αλλά αυτό είναι λογικό αφού οι μαθητές θα προτιμήσουν ότι τους κάνει τη ζωή εύκολη.
Το ερώτημα είναι : Μπορούν να απαντήσουν πάντα ποια είναι η επόμενη εντολή που θα εκτελεστεί μετά τη break? Αν το έχουν καταλάβει αυτό νομίζω ότι δεν υπάρχει πρόβλημα.

Ωστόσο η break δεν υπάρχει σε κανένα από τα δυο βιβλία. Ο λόγος είναι ότι ήδη το μάθημα έχει αρκετές αλλαγές σε σχέση με το προηγούμενο, και δεν υπάρχει λόγος να πέσουμε με τα μούτρα στην Python. Ας εξασφαλίσουμε πρώτα μια ομαλή μετάβαση και τα στοιχειώδη και μετά μπορούμε να δούμε και πρακτικές που αλλάζουν αρκετά τον τρόπο σκέψης π.χ. ας εξασφαλίσουμε πρώτα ότι όλοι οι συνάδελφοι κάνουν Python στην Β ώστε να διευκολύνουν το μάθημα της Γ και ότι η υπάρχουσα ύλη Β+Γ μπορεί να διδαχθεί σε 200 ώρες (4ώρεςx25 εβδομάδες για κάθε έτος) και αν χρειάζονται διορθωτικές κινήσεις.
Άρα καλό θα ήταν να μην δείχνουμε την break στους μαθητές γιατί αν τη χρησιμοποιήσουν στις εξετάσεις θα υπάρχει θέμα, αφού δεν είναι στην ύλη τους.
ΥΓ. Ωστόσο υπάρχει μη δομημένη τεχνική στην ύλη και αυτή είναι η χρήση της return  ;)
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: polikarpos στις 28 Ιαν 2017, 07:30:24 μμ
H χρήση του   break συμφωνώ ότι δεν είναι στην ύλη. Πέρσυ δεν είχαμε ιδέα τι θα είναι και τι όχι στην ύλη και το χρησιμοποίησα. 
Από τους   μαθητές μου 3 στους 9 θυμούνται τη χρήση  του break. Αυτό ομολογώ ότι σπάνια έως ποτέ δε συμβαίνει στα ΕΠΑΛ και δε μπορώ να μην το ενθαρρύνω παρότι τους είπα ότι είναι εκτός  ύλης.
Πάντως το να συζητάμε τέτοια θέματα και ταυτόχρονα να μην είναι σίγουρο ότι όλοι κάνουν Python στη Β είναι κάπως.....
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: evry στις 28 Ιαν 2017, 10:07:20 μμ
Πάντως η break δεν είναι κάτι καινούργιο, δεν είναι αποκλειστικό χαρακτηριστικό της Python. Και η Pascal έχει break αλλά εκεί κανείς δεν την χρησιμοποιούσε.
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: Λάμπρος Μπουκουβάλας στις 03 Φεβ 2017, 12:49:12 πμ
Ας μη βασιζόμαστε τόσο πολύ στη διδαγμένη ύλη για Python της β' λυκείου.
Μη ξεχνάτε ότι πρόκειται για μονόωρο μάθημα.
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: evry στις 03 Φεβ 2017, 11:08:01 πμ
Λάμπρο για το μάθημα "Αρχές Προγραμματισμού" λέμε που διδάσκεται 4 ώρες (1Θ + 3Ε)
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: Λάμπρος Μπουκουβάλας στις 03 Φεβ 2017, 11:47:09 πμ
Έχεις δίκιο Ευρυπίδη...
Κακώς είχα στο μυαλό μου μόνο το θεωρητικό μέρος.
Τίτλος: Απ: Λύσεις Δραστηριοτήτων βιβλίου "Προγραμματισμός Υπολογιστών Γ' ΕΠΑΛ"
Αποστολή από: mmoisi στις 22 Σεπ 2019, 09:30:29 μμ
Ο αρχικός σύνδεσμος δε φαίνεται να οδηγεί στις λύσεις...
Μήπως μπορεί κάποιος να ανεβάσει τις λύσεις και να αναρτήσει τον σύνδεσμο σ' αυτές;