Αποστολέας Θέμα: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ  (Αναγνώστηκε 26771 φορές)

Rathaniel

  • Βετεράνος
  • ****
  • Μηνύματα: 77
  • Έπρεπε να είχα γίνει Χημικός......
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #30 στις: 25 Ιούλ 2015, 10:23:30 πμ »
Αν κάνεις μόνο στοίβα και ουρά με υποπρογράμματα θα δημιουργηθεί ένας "τυφλοσούρτης" για τέτοια προβλήματα.

Όταν το μάθημα το "κονσερβοποιούμε" δεν έχουμε καλά αποτελέσματα στις εξετάσεις, και γενικά είναι κακό και για το μάθημα.
Είναι καλό να διδαχθούν πως να γεμίζουν-αδείαζουν τις στοίβες/ουρές και χωρίς υποπρογράμματα στην αρχή.Ακόμα και με μικρές προεκτάσεις-παραλλαγές θα βοηθήσει τον μαθητή (π.χ. να βγαίνουν δύο-δυο τα στοιχεία της στοίβας)

Φυσικά μετά θα γίνει και με υποπρογράμματα.

Αλλά για σκέψου το πρόβλημα να μην ζητάει υποπρογράμματα. Εκεί τί θα κάνει ο μαθητής που έχει μάθει να φτιάχνει την διαδικασία ώθηση και απώθηση;
Αν το κάνει με υποπρόγραμμα πιθανώς να χάσει μοναδούλες.
Χρηστίδης Αλέξανδρος,
Μηχανικός Επ/κών και Πλη/κών Συστημάτων,
Msc Στα Προηγμένα Συστήματα Πληροφορικής

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2212
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #31 στις: 25 Ιούλ 2015, 10:51:39 πμ »
Αλλά για σκέψου το πρόβλημα να μην ζητάει υποπρογράμματα. Εκεί τί θα κάνει ο μαθητής που έχει μάθει να φτιάχνει την διαδικασία ώθηση και απώθηση;
Αν το κάνει με υποπρόγραμμα πιθανώς να χάσει μοναδούλες.

Νομίζω ότι είναι απίθανο να μπορεί να υλοποιήσει οτιδήποτε με υποπρόγραμμα σωστά και να μην μπορεί να το κάνει χωρίς αυτό
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

ether

  • Επισκέπτης
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #32 στις: 25 Ιούλ 2015, 11:12:12 πμ »
Αν κάνεις μόνο στοίβα και ουρά με υποπρογράμματα θα δημιουργηθεί ένας "τυφλοσούρτης" για τέτοια προβλήματα.

Όταν το μάθημα το "κονσερβοποιούμε" δεν έχουμε καλά αποτελέσματα στις εξετάσεις, και γενικά είναι κακό και για το μάθημα.
Είναι καλό να διδαχθούν πως να γεμίζουν-αδείαζουν τις στοίβες/ουρές και χωρίς υποπρογράμματα στην αρχή.Ακόμα και με μικρές προεκτάσεις-παραλλαγές θα βοηθήσει τον μαθητή (π.χ. να βγαίνουν δύο-δυο τα στοιχεία της στοίβας)

Φυσικά μετά θα γίνει και με υποπρογράμματα.

Αλλά για σκέψου το πρόβλημα να μην ζητάει υποπρογράμματα. Εκεί τί θα κάνει ο μαθητής που έχει μάθει να φτιάχνει την διαδικασία ώθηση και απώθηση;
Αν το κάνει με υποπρόγραμμα πιθανώς να χάσει μοναδούλες.
Κονσερβοποίηση και κακό για το μάθημα η χρήση υποπρογραμμάτων για τις λειτουργίες στοίβας και ουράς;
Διαφωνώ πλήρως.
Κατά τη γνώμη μου, αυτό είναι η ουσία του μαθήματος.
Κατά τη γνώμη μου, όταν καλείται να λύσει ένα πρόβλημα ο μαθητής (και ο καθένας), όχι μόνο δεν είναι κονσερβοποίηση του μαθήματος το να σκέφτεται και να εκφράζεται με έννοιες ώθησης, απώθησης, είναι άδεια η στοίβα, είναι γεμάτη η στοίβα, αντί του να σκέφτεται αυξάνω τον top κατά ένα, μειώνω τον top κατά ένα, αν top = 0, αν top = size, αλλά είναι ο ενδεδειγμένος τρόπος σκέψης, σύμφωνα και με τις επικρατούσες αρχές του δομημένου προγραμματισμού αλλά και της τεχνολογίας λογισμικού. Άλλωστε, το design to interfaces, not implementations, θεωρείται εδώ και πολύ καιρό ως καλή πρακτική στη σχεδίαση και υλοποίηση αλγορίθμων. Αυτό διδάσκεται στα σχετικά μαθήματα στα πανεπιστήμια, αυτό χρησιμοποιείται συνήθως και στον πραγματικό κόσμο.

Τα αυξάνω τον top κατά ένα, μειώνω τον top κατά ένα, αν top = 0, αν top = size, πρέπει να τα ξέρει και να τα σκέφτεται για να υλοποιήσει τις λειτουργίες. Όταν καλείται όμως να αντιμετωπίσει ένα μη τετριμμένο πρόβλημα (δηλαδή ένα πρόβλημα που δεν του ζητάει απλώς να βάλει κάποια στοιχεία στη δομή και να τα βγάλει απ' αυτήν), καλύτερα είναι να σχεδιάζει τον αλγόριθμό του ως χρήστη (client) αυτών των λειτουργιών.

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

Δεν καταλαβαίνω γιατί έχει μεγαλύτερη αξία το "γεμίζω και αδειάζω τη στοίβα χωρίς υποπρογράμματα" από το "γράφω τα υποπρογράμματα για την ώθηση και την απώθηση και μετά τα χρησιμοποιώ". Το αντίθετο μάλιστα: όπως ανέφερα παραπάνω, το δεύτερο το θεωρώ πολύ καλύτερο. Είναι σα να λες ότι κάθε φορά που θες στο πρόγραμμά σου να υπολογίζεις την τετραγωνική ρίζα ενός αριθμού, είναι καλύτερα να γράφεις τις 5-6 εντολές ενός αλγορίθμου υπολογισμού τετραγωνικής ρίζας από το να χρησιμοποιείς τη συνάρτηση Τ_Ρ (ή αν δεν υπήρχε έτοιμη, από το να την υλοποιήσεις και να τη χρησιμοποιείς καλώντας την). Είναι επίσης σα να λες ότι, αφού οι δομές επιλογής και επανάληψης που γράφουμε στις γλώσσες υψηλού επιπέδου τελικά στη γλώσσα μηχανής υλοποιούνται με GOTO, είναι κονσερβοποίηση και τυφλοσούρτης να τις γράφουμε στη γλώσσα υψηλού επιπέδου όπως τις γράφουμε σύμφωνα με τις αρχές του δομημένου προγραμματισμού, και είναι προτιμότερο να χρησιμοποιούμε και στις γλώσσες υψηλού επιπέδου GOTO. Οι ώθηση, απώθηση, είναιΆδεια, είναιΓεμάτη, μου επιτρέπουν, όταν καλούμαι να αντιμετωπίσω ένα πρόβλημα, να σκέφτομαι και να εκφράζομαι σε υψηλότερο επίπεδο αφαίρεσης από τα αυξάνω τον top κατά ένα, μειώνω τον top κατά ένα, αν top = 0, αν top = size, όπως οι ΑΝ, ΟΣΟ, κτλ μου επιτρέπουν να σκέφτομαι και να εκφράζομαι σε υψηλότερο επίπεδο αφαίρεσης απ'  ότι η GOTO.

Αν στην εκφώνηση δε λέει να γίνει με υποποπρογράμματα και ο μαθητής το κάνει με υποπρογράμματα να κοπούν μοναδούλες; Δε φαντάζομαι να το λες σοβαρά.
« Τελευταία τροποποίηση: 25 Ιούλ 2015, 12:55:08 μμ από ether »

Rathaniel

  • Βετεράνος
  • ****
  • Μηνύματα: 77
  • Έπρεπε να είχα γίνει Χημικός......
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #33 στις: 25 Ιούλ 2015, 02:19:49 μμ »
Μάλλον παρεξηγήθηκα προηγουμένως.
Έγραψα ότι δεν θεωρώ σωστό να διδαχθούν απευθείας με υποπρόγραμμα. Στη συνέχεια προφανώς και θα το κάνουν με υποπρόγραμμα.
Δεν χρειάζεται επίσης να αναφέρονται τα οφέλη του τμηματικού προγραμματισμού.Νομίζω όλοι εδώ οι γράφοντες τα γνωρίζουν. Προφανώς και είναι πιο σωστό(πιο κομψό ίσως) να γραφούν με υποπρογράμματα.
Όσον αφορά για τις λίγες μονάδες, σε διαγώνισμα εγω θα έκοβα κάτι λίγα (εφ'όσον δεν ζητούσε παραγωγή υποπρογράμματος). Αλλά μπορεί να είμαι και λάθος. Σε αυτό μπορούν να απαντήσουν οι διορθωτές των πανελληνίων που γράφουν εδώ. Ο λόγος που θα έκοβα κάτι, είναι γιατί δεν συμφωνεί με τις απαιτήσεις της εκφώνησης.

Πάντως, ο καθένας εκφράζει την άποψη του εδώ.
Για να προωθήσω το θέμα λοιπόν, θα πρότεινα να το σκεφτούμε σε  παιδαγωγικό επίπεδο και όχι μόνο τεχνολογικό.
Χρηστίδης Αλέξανδρος,
Μηχανικός Επ/κών και Πλη/κών Συστημάτων,
Msc Στα Προηγμένα Συστήματα Πληροφορικής

ether

  • Επισκέπτης
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #34 στις: 25 Ιούλ 2015, 02:55:44 μμ »
Μάλλον παρεξηγήθηκα προηγουμένως.
Έγραψα ότι δεν θεωρώ σωστό να διδαχθούν απευθείας με υποπρόγραμμα. Στη συνέχεια προφανώς και θα το κάνουν με υποπρόγραμμα.
Δεν χρειάζεται επίσης να αναφέρονται τα οφέλη του τμηματικού προγραμματισμού.Νομίζω όλοι εδώ οι γράφοντες τα γνωρίζουν. Προφανώς και είναι πιο σωστό(πιο κομψό ίσως) να γραφούν με υποπρογράμματα.
Όσον αφορά για τις λίγες μονάδες, σε διαγώνισμα εγω θα έκοβα κάτι λίγα (εφ'όσον δεν ζητούσε παραγωγή υποπρογράμματος). Αλλά μπορεί να είμαι και λάθος. Σε αυτό μπορούν να απαντήσουν οι διορθωτές των πανελληνίων που γράφουν εδώ. Ο λόγος που θα έκοβα κάτι, είναι γιατί δεν συμφωνεί με τις απαιτήσεις της εκφώνησης.

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

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

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

tsak

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 129
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #35 στις: 25 Ιούλ 2015, 03:26:14 μμ »
Νομιζω οτι η κοινη λογικη υπαγορευει οταν εξηγεις μια νεα ενοτητα, το αμεσα επομενο βημα ειναι να δωσεις μια-δυο ασκησεις τουλαχιστον για την εμπεδωση και εφαρμογη των διδαχθεντων.Οποτε αφου προηγειται χρονικα η μελετη του 3ου κεφαλαιου, λογικο ειναι να δωθει ασκηση χωρις υποππρογραμμα σε ουρα και στοιβα.Και φυσικα επεται η επαναληψη αυτων και στα υποπρογραμματα.

ether

  • Επισκέπτης
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #36 στις: 25 Ιούλ 2015, 03:43:08 μμ »
Νομιζω οτι η κοινη λογικη υπαγορευει οταν εξηγεις μια νεα ενοτητα, το αμεσα επομενο βημα ειναι να δωσεις μια-δυο ασκησεις τουλαχιστον για την εμπεδωση και εφαρμογη των διδαχθεντων.Οποτε αφου προηγειται χρονικα η μελετη του 3ου κεφαλαιου, λογικο ειναι να δωθει ασκηση χωρις υποππρογραμμα σε ουρα και στοιβα.Και φυσικα επεται η επαναληψη αυτων και στα υποπρογραμματα.
Δηλαδή τα προηγούμενα δεκαπέντε χρόνια που η στοίβα και η ουρά ήταν μέσα στην ύλη μόνο ως θεωρία τι γινόταν; Δεν καταλάβαιναν τα παιδιά το πώς γίνονταν οι λειτουργίες που περιγράφονται;

Δεν μπορούμε να κάνουμε ό,τι κάναμε μέχρι πέρυσι κάνοντας το κεφάλαιο 3 (ούτως ή άλλως, ένα-δυο παραδείγματα νομίζω οι περισσότεροι τα δείχναμε, για το πώς υλοποιούνται σε ψευδογλώσσα οι λειτουργίες που περιγράφει με λόγια το βιβλίο), χωρίς να κάνουμε προγραμματιστικές ασκήσεις, και τις προγραμματιστικές ασκήσεις να τις κάνουμε αφού πούμε και το 10;

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

ether

  • Επισκέπτης
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #37 στις: 26 Ιούλ 2015, 11:17:21 πμ »
Συνημμένη μια άσκηση και ενδεικτική λύση της

Καρκαμάνης Γεώργιος

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1087
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #38 στις: 27 Ιούλ 2015, 11:46:24 πμ »
Παρακολουθώ με προσοχή τα μηνύματα σε αυτό το θέμα και παρατηρώ ότι υπάρχει η τάση  υλοποίησης αλγορίθμων ΣΤΟΙΒΑΣ και ΟΥΡΑΣ  με υποπρογράμματα.

 Γιατί να γίνεται αυτό; Μπορεί κάποιος να το εξηγήσει;


petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2212
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #39 στις: 27 Ιούλ 2015, 01:05:05 μμ »
Για κομψότητα του κώδικα θα έλεγα, ώστε να μπορεί να υλοποιηθεί πχ με ένα μενού επιλογών και να μην φτάσουμε σε πολλές εμφωλευμένες Αν
Δεν καταλαβαίνω γιατί αυτό είναι θέμα
Μαθητής που μπορεί να το υλοποιήσει σωστά με υποπρόγραμμα, μπορεί να το υλοποιήσει άνετα και χωρίς αυτό
Το θέμα είναι οι έλεγχοι υπερχείλισης-υποχείλισης και ο χειρισμός των δεικτών
Όχι οι παράμετροι του υποπρογράμματος ή το σημείο που θα τοποθετηθεί ο κώδικας αν δεν χρησιμοποιηθεί υποπρόγραμμα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #40 στις: 27 Ιούλ 2015, 02:44:32 μμ »
Παρακολουθώ με προσοχή τα μηνύματα σε αυτό το θέμα και παρατηρώ ότι υπάρχει η τάση  υλοποίησης αλγορίθμων ΣΤΟΙΒΑΣ και ΟΥΡΑΣ  με υποπρογράμματα.

 Γιατί να γίνεται αυτό; Μπορεί κάποιος να το εξηγήσει;

Γιατί έτσι το υλοποιείς σε όλες τις procedural γλώσσες  που μπορούν να υποστηρίξουν το ελάχιστο δυνατό encapsulation (à la C-struct ας πούμε) εδώ και ~30 χρόνια;

tasospap

  • Βετεράνος
  • ****
  • Μηνύματα: 70
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #41 στις: 27 Ιούλ 2015, 11:25:30 μμ »
Καλή φάση.... Θα πω σε λίγες μέρες στους τελειόφοιτους που έχω με μεταγραφή απο την θεωρητική, για procedural με ολίγη απο encapsulation......

Καρκαμάνης Γεώργιος

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1087
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #42 στις: 28 Ιούλ 2015, 08:18:32 πμ »
Ένα λάθος που κάνουμε οι περισσότεροι από εμάς, εδώ και 15  χρόνια, είναι να προσπαθούμε να μεταφέρουμε αυτά που ισχύουν σε κανονικές γλώσσες προγραμματισμού, σε αλγορίθμους και στα προγράμματα σε ΓΛΩΣΣΑ. Αυτό νομίζω ότι μπερδεύει όλους μας. Μη ξεχνάμε ότι η ΓΛΩΣΣΑ δημιουργήθηκε και τις ανάγκες του μαθήματος της ΑΕΠΠ και στηρίχθηκε στην απλότητα ώστε να είναι κατανοητή από τους μαθητές.

Επίσης, πρέπει να λάβουμε υπόψη ότι η διδασκαλία της Στοίβας/Ουράς προηγείται της διδασκαλίας των υποπρογραμμάτων, οπότε οι μαθητές πρέπει να μάθουν να τις χρησιμοποιούν πρώτα σε απλές ασκήσεις και έπειτα όταν φτάσουν στα υποπρογράμματα μπορούν να γίνουν ορισμένες ασκήσεις υλοποίησης στοίβας/ουράς με υποπρογράμματα.

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #43 στις: 28 Ιούλ 2015, 10:19:17 πμ »
Καλή φάση.... Θα πω σε λίγες μέρες στους τελειόφοιτους που έχω με μεταγραφή απο την θεωρητική, για procedural με ολίγη απο encapsulation......

Έκανε μια ερώτηση και του απάντησα, δεν έγραψα ότι έτσι πρέπει να διδάσκεται. Όταν έχεις χρόνια το mentality να τα γράφεις έτσι, γιατί έτσι είναι ο σωστός τρόπος να τα γράφεις, είναι λογικό να σου βγαίνει στο πώς τα μεταφέρεις στον άλλον.

Παράθεση
Ένα λάθος που κάνουμε οι περισσότεροι από εμάς, εδώ και 15  χρόνια, είναι να προσπαθούμε να μεταφέρουμε αυτά που ισχύουν σε κανονικές γλώσσες προγραμματισμού, σε αλγορίθμους και στα προγράμματα σε ΓΛΩΣΣΑ. Αυτό νομίζω ότι μπερδεύει όλους μας. Μη ξεχνάμε ότι η ΓΛΩΣΣΑ δημιουργήθηκε και τις ανάγκες του μαθήματος της ΑΕΠΠ και στηρίχθηκε στην απλότητα ώστε να είναι κατανοητή από τους μαθητές.

Επίσης, πρέπει να λάβουμε υπόψη ότι η διδασκαλία της Στοίβας/Ουράς προηγείται της διδασκαλίας των υποπρογραμμάτων, οπότε οι μαθητές πρέπει να μάθουν να τις χρησιμοποιούν πρώτα σε απλές ασκήσεις και έπειτα όταν φτάσουν στα υποπρογράμματα μπορούν να γίνουν ορισμένες ασκήσεις υλοποίησης στοίβας/ουράς με υποπρογράμματα.

Δεν υπάρχει κάτι λάθος σε αυτό που συζητάμε. Δεν είπε κανείς να ανοίξεις φιλοσοφική συζήτηση με το τμήμα για τα οφέλη του encapsulation, η ιδέα είναι να τους δώσεις μια πειθαρχία στο πώς μεταφέρουν το mental model που έχουν στο μυαλό τους για το πρόβλημα, στο χαρτί/υπολογιστή. Επίσης εγώ δεν επιχειρηματολογώ υπερ του να τους το διδάξεις πριν κάνεις υποπρογράμματα και όπως είπα και στον απο πάνω, απλά απάντησα στην ερώτηση σου ύπο την σκοπιά του καθηγήτη (τουλάχιστον, τη σκοπιά που υποθέτω εγώ ότι έχουν).

Κάτι άλλο που έχω παρατήρησει και μου κάνει εντύπωση, είναι πώς υποθέτουμε όλοι ότι οι μαθητές δεν μπορούν να γράφουν ένα ΚΑΛΕΣΕ StackPush(...) χωρίς να πεθαίνει ο εγκέφαλός τους, αλλά να καταλαβαίνουν θεωρήματα του ολοκληρωτικού λογισμού που γενικά δεν είναι και ιδιαίτερα intuitive.

ether

  • Επισκέπτης
Απ: Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ
« Απάντηση #44 στις: 28 Ιούλ 2015, 10:50:54 πμ »
Ένα λάθος που κάνουμε οι περισσότεροι από εμάς, εδώ και 15  χρόνια, είναι να προσπαθούμε να μεταφέρουμε αυτά που ισχύουν σε κανονικές γλώσσες προγραμματισμού, σε αλγορίθμους και στα προγράμματα σε ΓΛΩΣΣΑ. Αυτό νομίζω ότι μπερδεύει όλους μας. Μη ξεχνάμε ότι η ΓΛΩΣΣΑ δημιουργήθηκε και τις ανάγκες του μαθήματος της ΑΕΠΠ και στηρίχθηκε στην απλότητα ώστε να είναι κατανοητή από τους μαθητές.

Επίσης, πρέπει να λάβουμε υπόψη ότι η διδασκαλία της Στοίβας/Ουράς προηγείται της διδασκαλίας των υποπρογραμμάτων, οπότε οι μαθητές πρέπει να μάθουν να τις χρησιμοποιούν πρώτα σε απλές ασκήσεις και έπειτα όταν φτάσουν στα υποπρογράμματα μπορούν να γίνουν ορισμένες ασκήσεις υλοποίησης στοίβας/ουράς με υποπρογράμματα.
1. Προκύπτει από κάπου ότι η χρήση υποπρογραμμάτων για την υλοποίηση των λειτουργιών στοίβας και ουράς σε προγραμματιστικές ασκήσεις είναι δυσνόητη από τους μαθητές, ή πιο δυσνόητη απ' ό,τι ο απευθείας χειρισμών των δεικτών; Ή μήπως δεν προκύπτει αλλά είναι κάποιο αξίωμα; Κατά τη γνώμη μου, ισχύει το ακριβώς αντίθετο, όπως έχω πει και σε προηγούμενο μήνυμά μου.

2. Το ότι κάτι γίνεται στον πραγματικό κόσμο, σε πραγματικά προγράμματα, δε σημαίνει ότι είναι και πιο σύνθετο και για προχωρημένους. Άλλωστε, πολλά πράγματα που γίνονται στον πραγματικό κόσμο με τον τρόπο που γίνονται (όπως η ενθυλάκωση/encapsulation), γίνονται ακριβώς για να κάνουν τα πράγματα πιο απλά.

3. Τα πιο σημαντικά βιβλία αλγορίθμων (*), κατά την παρουσίαση αλγορίθμων που χρησιμοποιούν στοίβα και ουρά, είτε σε ψευδογλώσσα είτε σε πραγματική γλώσσα προγραμματισμού, απλά καλούν τις λειτουργίες.  Παρουσιάζουν τους αλγορίθμους ως πελάτες (clients) των δομών στοίβα και ουρά. Άραγε το κάνουν λάθος; Ή μήπως έτσι όπως το κάνουν είναι πιο δυσνόητο για τον αναγνώστη να καταλάβει τον αλγόριθμο απ' ό,τι αν χειρίζονταν απ' ευθείας του δείκτες αλλά δεν τους νοιάζει γιατί απευθύνονται σε φοιτητές;

4. Ποιος εμποδίζει κάποιον να κάνει κάποιες απλές ασκήσεις (ή και όλες, ακόμα και τις σύνθετες ασκήσεις) σε στοίβα και ουρά χωρίς χρήση υποπρογραμμάτων; Ο καθένας κάνει ό,τι νομίζει καλύτερο.

5. Γιατί πρέπει ντε και σώνει η ουρά και η στοίβα να γίνουν πριν από τα υποπρογράμματα; Επειδή είναι στο κεφάλαιο 3 ενώ τα υποπρογράμματα στο κεφάλαιο 10; Εγώ προσωπικά μέχρι πέρυσι από το κεφάλαιο 3 έκανα πρώτα ό,τι αφορούσε στους πίνακες και στο τέλος του 3 έκανα την ουρά και τη στοίβα. Τι πρόβλημα θα υπάρξει αν τώρα την κάνω ακόμα και μετά τα υποπρογράμματα; Το ότι δε θα καταλάβουν για τη στοίβα χρόνου εκτέλεσης; Θα τους την πω μετά αυτή.

*
- Thomas Cormen, Charles Leiserson, Ronald Rivest and Cliff Stein: "Introduction to Algorithms", 3rd edition, MIT Press, 2009
- J. Kleinberg, E. Tardos: "Algorithm Design", Addison-Wesley, 2005
- S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani: "Algorithms", MacGraw-Hill, 2006
- R. Sedgewick, K. Wayne: "Algorithms", 4th edition, Addison-Wesley, 2011


« Τελευταία τροποποίηση: 28 Ιούλ 2015, 12:33:48 μμ από ether »