Μια κατευθυντήρια γραμμή για τον προγραμματισμό OULIPIAN

Back to top

1) Τι είναι το OULIPO;

Το OULIPO, ακρωνύμιο των λέξεων "Ouvroir de Littérature Potentielle" (Εργαστήρι Δυνητικής Λογοτεχνίας), είναι ένα γαλλικό λογοτεχνικό κίνημα. Βασίζεται στην ιδέα ότι η εφαρμογή συγκεκριμένων περιορισμών μπορεί να λειτουργήσει ως καταλύτης για τη δημιουργικότητα στη λογοτεχνία.

Το κίνημα ιδρύθηκε το 1960 από τον συγγραφέα Raymond Queneau και τον μαθηματικό François Le Lionnais. Προέκυψε ως υποομάδα μιας ευρύτερης ομάδας πρωτοπορίας, του Collège de 'Pataphysique, το οποίο ήταν αφιερωμένο στην εξερεύνηση της 'παταφυσικής - της επιστήμης των φανταστικών λύσεων και των νόμων που διέπουν τις εξαιρέσεις.

Back to top

2) Προφανείς προσωπικότητες του OULIPO

François Le Lionnais: Μαθηματικός που το όραμά του συνέβαλε καθοριστικά στη σφυρηλάτηση της μοναδικής ταυτότητας του OULIPO, όπου οι μαθηματικές έννοιες συνυφαίνονταν με τη λογοτεχνική δημιουργία. Ο Le Lionnais τάχθηκε υπέρ της χρήσης δομημένων περιορισμών στη λογοτεχνία, πιστεύοντας ότι οι περιορισμοί αυτοί θα μπορούσαν να ξεκλειδώσουν νέα πεδία δημιουργικότητας. Η επιρροή του επεκτάθηκε πέρα από τον σχηματισμό της ομάδας- ενέπνευσε μια γενιά συγγραφέων να εξερευνήσουν την πλούσια αλληλεπίδραση μεταξύ μαθηματικών δομών και λογοτεχνικής έκφρασης. Η κληρονομιά του Le Lionnais αντανακλάται στη συνεχή εξερεύνηση των ορίων μεταξύ επιστήμης και τέχνης από την OULIPO.

Raymond Queneau: Ο Queneau, διάσημος για το πνεύμα και τη δημιουργική του δεινότητα, ήταν μυθιστοριογράφος και ποιητής. Είναι περισσότερο γνωστός για τις "Ασκήσεις στο ύφος", ένα μοναδικό έργο όπου αφηγείται μια ενιαία ιστορία με 99 διαφορετικούς τρόπους, παρουσιάζοντας ένα αξιοσημείωτο εύρος υφολογικών προσεγγίσεων.

Georges Perec: Ο Perec κέρδισε αναγνώριση για το μυθιστόρημά του "La Disparition" (γνωστό στα αγγλικά ως "A Void"), ένα ξεχωριστό έργο που παραλείπει εντελώς το γράμμα "e". Το μυθιστόρημα αυτό αποτελεί χαρακτηριστικό παράδειγμα της έμφασης του OULIPO στους γλωσσικούς περιορισμούς και στο δημιουργικό παιχνίδι με τις λέξεις.

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

Άλλα αξιόλογα μέλη είναι ο Italo Calvino, ο Marcel Duchamp και ο Harry Mathews.

Back to top

3) Κατανοώντας τους περιορισμούς

Τύποι περιορισμών

  • Λιπογράμματα: Γραφή που αποκλείει ένα ή περισσότερα γράμματα. Το "La Disparition" του Perec είναι ένα διάσημο παράδειγμα, όπου παραλείπεται το γράμμα "e".
  • Παλίνδρομα: Κείμενα που διαβάζονται το ίδιο προς τα εμπρός και προς τα πίσω.
  • Μέθοδος Ν+7: Μια διαδικασία κατά την οποία κάθε ουσιαστικό σε ένα κείμενο αντικαθίσταται με το έβδομο ουσιαστικό που ακολουθεί σε ένα λεξικό. Αυτό οδηγεί συχνά σε εκπληκτικά και ιδιόρρυθμα αποτελέσματα.
  • Χιονόμπαλα: Μια ποιητική μορφή όπου κάθε γραμμή είναι μια λέξη και κάθε διαδοχική λέξη είναι κατά ένα γράμμα μεγαλύτερη. Αυτό δημιουργεί ένα αποτέλεσμα "χιονοστιβάδας" καθώς το ποίημα εξελίσσεται.
  • Μονοφωνία: Πρόκειται για τη συγγραφή ενός κειμένου που χρησιμοποιεί μόνο ένα φωνήεν, ενώ όλα τα άλλα γράμματα του αλφαβήτου μπορούν να χρησιμοποιηθούν κανονικά. Αυτός ο περιορισμός δοκιμάζει την ικανότητα του συγγραφέα να χρησιμοποιεί δημιουργικά τη γλώσσα τηρώντας έναν αυστηρό περιορισμό.
  • Ταυτογράμματα: Σε αυτόν τον περιορισμό, κάθε λέξη σε ένα κείμενο πρέπει να αρχίζει με το ίδιο γράμμα. Αυτό μπορεί να εφαρμοστεί σε μία πρόταση, σε μία παράγραφο ή σε ολόκληρο το έργο.
  • Bouts-rimés: Προέρχεται από ένα γαλλικό λογοτεχνικό παιχνίδι και περιλαμβάνει τη δημιουργία ενός ποιήματος από ένα δεδομένο σύνολο τελικών ομοιοκαταληξιών με προκαθορισμένη σειρά. Η πρόκληση έγκειται στη δημιουργία ενός συνεκτικού και ουσιαστικού ποιήματος, τηρώντας αυτούς τους ομοιοκαταληκτικούς περιορισμούς.
  • Ο περιορισμός του φυλακισμένου (ή περιορισμός του Μακάο): Πρόκειται για τη συγγραφή κειμένων όπου ορισμένα γράμματα είναι "φυλακισμένα" μέσα σε λέξεις και δεν μπορούν να εμφανιστούν μόνα τους. Για παράδειγμα, το γράμμα "ε" μπορεί να χρησιμοποιείται μόνο μέσα σε μια λέξη, ποτέ όμως ως πρώτο ή τελευταίο γράμμα.
  • Όμορφος παράνομος: Παρόμοια με το λιπόγραμμα, αυτός ο περιορισμός περιλαμβάνει την αποφυγή της χρήσης ενός ή περισσότερων γραμμάτων του αλφαβήτου, αλλά με έναν πρόσθετο κανόνα ότι τα απαγορευμένα γράμματα μπορούν να εμφανίζονται στο κείμενο, αρκεί να μην φαίνονται. Αυτό σημαίνει ότι μπορούν να κρύβονται μέσα σε άλλες λέξεις ή να μεταμφιέζονται με κάποιον τρόπο.
  • S + 7: Πρόκειται για μια παραλλαγή της μεθόδου Ν+7, όπου όχι μόνο τα ουσιαστικά, αλλά και κάθε λέξη σε ένα συγκεκριμένο μέρος του λόγου (όπως ρήματα ή επίθετα) αντικαθίσταται από την έβδομη λέξη που ακολουθεί σε ένα λεξικό.
  • Ομοιοσυντακτική μετάφραση: Πρόκειται για τη μετάφραση ενός κειμένου σε μια άλλη γλώσσα, αλλά διατηρώντας τη συντακτική δομή του πρωτοτύπου. Το αποτέλεσμα συχνά αναδεικνύει τα μοναδικά γραμματικά και συντακτικά χαρακτηριστικά κάθε γλώσσας.
  • Παραλλαγή: Πρόκειται για τη δημιουργία ενός κειμένου που μπορεί να διαβαστεί με πολλαπλούς τρόπους μέσω της αναδιάταξης λέξεων ή προτάσεων. Αυτό μπορεί να περιλαμβάνει αναγραμματισμούς, ακροστιχίδες ή άλλες μορφές αναδιάταξης των συστατικών στοιχείων ενός κειμένου.
Back to top

4) Προγραμματισμός με τον ΟΥΛΙΠΙΑΚΟ τρόπο

Οι ΟΥΛΙΠΙΑΚΕΣ τεχνικές μπορούν να αποτελέσουν ένα ισχυρό εργαλείο για εκπαιδευτικούς σκοπούς, προσφέροντας μοναδικούς τρόπους ενασχόλησης με τη γλώσσα και την υπολογιστική σκέψη. Οι ακόλουθες τεχνικές OULIPian περιγράφουν διάφορες ασκήσεις προγραμματισμού εμπνευσμένες από το OULIPO, η καθεμία με τη δική της εκπαιδευτική πτυχή. Οι ασκήσεις αυτές έχουν σχεδιαστεί όχι μόνο για να διδάξουν θεμελιώδεις έννοιες προγραμματισμού αλλά και για να ενθαρρύνουν τη δημιουργική σκέψη εντός περιορισμών, αντικατοπτρίζοντας τη φιλοσοφία του OULIPO.

  1. Εφαρμογή με γρατσουνιές: Δημιουργήστε ένα πρόγραμμα που σας επιτρέπει την εισαγωγή ενός κειμένου. Χρησιμοποιήστε ένα σενάριο για να σαρώσετε κάθε λέξη και να αφαιρέσετε τυχόν λέξεις που περιέχουν το απαγορευμένο γράμμα (όπως το "e").
  2. Εκπαιδευτική πτυχή: Αυτό μπορεί να αποτελέσει μια εξαιρετική άσκηση για την κατανόηση του χειρισμού συμβολοσειρών και των όρων. Ο χειρισμός συμβολοσειρών συνεπάγεται την τροποποίηση και την εξαγωγή πληροφοριών από κείμενο, διδάσκοντας τους μαθητές να διαχωρίζουν μακροσκελές κείμενο σε μεμονωμένες λέξεις, να τις επεξεργάζονται ανεξάρτητα και να συνδέουν συμβολοσειρές για να σχηματίσουν νέα κειμενική έξοδο. Οι όροι, ως προγραμματιστικές κατασκευές, δίνουν στους μαθητές τη δυνατότητα να λαμβάνουν αποφάσεις βάσει συγκεκριμένων συνθηκών, με τη χρήση δηλώσεων "if" για τον έλεγχο ενός απαγορευμένου γράμματος ("e") μέσα σε λέξεις και την εφαρμογή δηλώσεων "else" για εναλλακτικά αποτελέσματα. Η επαναληπτική επεξεργασία παρέχει στους μαθητές την ικανότητα να εκτελούν επαναλαμβανόμενες ενέργειες για κάθε λέξη στο κείμενο εισόδου, δημιουργώντας βρόχους και χρησιμοποιώντας μεταβλητές για την παρακολούθηση της τρέχουσας λέξης που επεξεργάζεται. Η επίλυση προβλημάτων αποκτά ύψιστη σημασία καθώς οι μαθητές εντοπίζουν, σχεδιάζουν, υλοποιούν και δοκιμάζουν λύσεις στην πραγματική πρόκληση της αφαίρεσης λέξεων που περιέχουν "e" από ένα κείμενο. Αυτή η άσκηση οξύνει τη λογική σκέψη, απαιτώντας από τους μαθητές να καθορίσουν τη λογική για τον εντοπισμό των περιορισμένων γραμμάτων σε λέξεις και να σχεδιάσουν και να οργανώσουν λογικά τον κώδικά τους. Επιπλέον, ενθαρρύνει την αποσφαλμάτωση με βάση την ανατροφοδότηση και εισάγει την αλληλεπίδραση με τον χρήστη μέσω μιας διεπαφής χρήστη, προωθώντας την κατανόηση της εμπειρίας χρήστη (UX) στην ανάπτυξη λογισμικού.

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

  1. Υλοποίηση στην Python: Στην Python, μπορείτε εύκολα να εργαστείτε με λίστες και λεξικά για την αποθήκευση ουσιαστικών και των Ν+7 αντίστοιχων τους, καθιστώντας απλούστερη την υλοποίηση της λογικής αντικατάστασης Ν+7. Αυτή η προσέγγιση είναι πιο διαισθητική και αποτελεσματική από την προσπάθεια διαχείρισης τέτοιων δεδομένων στις δομές του Scratch που μοιάζουν με λίστες.
  2. Εκπαιδευτική πτυχή: Επιτρέπει στους μαθητές να εξερευνήσουν βασικές έννοιες προγραμματισμού, όπως δομές δεδομένων όπως λίστες και λεξικά, οι οποίες είναι θεμελιώδεις για την αποτελεσματική οργάνωση και ανάκτηση δεδομένων. Επιπλέον, οι μαθητές αποκτούν πρακτικές γνώσεις σχετικά με τους πίνακες, μαθαίνοντας πώς να δημιουργούν, να χειρίζονται και να συμπληρώνουν λίστες - μια βασική δεξιότητα στον προγραμματισμό. Εμβαθύνουν επίσης σε τεχνικές χειρισμού και αντικατάστασης συμβολοσειρών, βελτιώνοντας τις ικανότητές τους να επεξεργάζονται και να μετασχηματίζουν κείμενο. Ενθαρρύνεται η αλγοριθμική σκέψη καθώς σχεδιάζουν συστηματικές προσεγγίσεις για τον εντοπισμό ουσιαστικών, τη διεξαγωγή αναζητήσεων σε λεξικά για αντικαταστάσεις και την ανακατασκευή κειμένου.

  1. Εφαρμογή της γραφολογίας: Δημιουργήστε μια διεπαφή για την εισαγωγή λέξεων, και στη συνέχεια χρησιμοποιήστε ένα σενάριο για να τις εμφανίσετε σε μια αυξανόμενη ακολουθία, κάθε γράμμα μεγαλύτερο από το προηγούμενο.
  2. Εκπαιδευτική πτυχή: Η εκπαιδευτική πτυχή αυτής της άσκησης επικεντρώνεται κυρίως στην καθοδήγηση των μαθητών σχετικά με τους βρόχους και τις ιδιότητες μήκους συμβολοσειράς μέσα στο Scratch. Μέσω του βρόχου "για πάντα", οι μαθητές αποκτούν δεξιότητα σε επαναλαμβανόμενες προγραμματιστικές ενέργειες, ενώ ζητούν συνεχώς την είσοδο του χρήστη και παρουσιάζουν μια αναπτυσσόμενη ακολουθία λέξεων. Η έμφαση στον χειρισμό συμβολοσειρών προάγει την κατανόηση της ανάκτησης του μήκους συμβολοσειρών με τη χρήση του μπλοκ "length of [string]" του Scratch και της σταδιακής επέκτασης των συμβολοσειρών, με κάθε λέξη να μεγαλώνει ένα γράμμα κάθε φορά. Επιπλέον, οι μαθητές αναπτύσσουν την ικανότητά τους για τη δημιουργία διαδραστικών προγραμμάτων με διεπαφή χρήστη για αποδοχή εισόδου και δυναμική παρουσίαση εξόδου. Αυτή η άσκηση συνδυάζει αρμονικά τις πρακτικές δεξιότητες προγραμματισμού με τους ευφάνταστους περιορισμούς του Snowball, ενισχύοντας την ικανότητα των μαθητών στους βρόχους, τα χαρακτηριστικά των συμβολοσειρών και την αλληλεπίδραση με τον χρήστη στο περιβάλλον του Scratch.

  1. Υλοποίηση του Scratch: Σχεδιάστε ένα σενάριο για την εισαγωγή ενός κειμένου και στη συνέχεια σαρώστε το, αφαιρώντας λέξεις που περιέχουν φωνήεντα διαφορετικά από το επιλεγμένο.
  2. Εκπαιδευτική πτυχή: Αυτό απαιτεί κατανόηση της αναζήτησης συμβολοσειρών και της λογικής υπό όρους. Οι μαθητές μαθαίνουν να σαρώνουν και να αναζητούν επιδέξια συγκεκριμένα μοτίβα σε ένα δεδομένο κείμενο, με ιδιαίτερη έμφαση στον εντοπισμό λέξεων που περιέχουν φωνήεντα διαφορετικά από το επιλεγμένο, ενισχύοντας έτσι τις δεξιότητές τους στην ανάλυση κειμένου και την αναγνώριση μοτίβων. Επιπλέον, η άσκηση υπογραμμίζει τη σημασία των δηλώσεων υπό όρους, ιδίως της δήλωσης "if", στη λογική του προγραμματισμού, επιτρέποντας στους μαθητές να αναπτύξουν πρακτική εμπειρία στη δημιουργία λογικής που αφαιρεί ή διατηρεί επιλεκτικά λέξεις με βάση προκαθορισμένα κριτήρια. Επιπλέον, οι μαθητές συμμετέχουν ενεργά στη δημιουργία ενός διαδραστικού προγράμματος που διαθέτει μια φιλική προς το χρήστη διεπαφή για εισαγωγή, εφαρμόζοντας και ενισχύοντας έτσι την κατανόηση των εννοιών αλληλεπίδρασης με το χρήστη σε πρακτικό πλαίσιο.

  1. Εφαρμογή της γραφήματος: Επιτρέψτε την εισαγωγή κειμένου και, στη συνέχεια, φιλτράρετε τις λέξεις που δεν αρχίζουν με το επιλεγμένο γράμμα.
  2. Εκπαιδευτική πτυχή: Η άσκηση αυτή συμβάλλει σημαντικά στην κατανόηση από τους μαθητές των θεμελιωδών εννοιών του προγραμματισμού, εστιάζοντας κυρίως στον χειρισμό συμβολοσειρών και τον χειρισμό λιστών. Οι μαθητές αποκτούν πρακτική εμπειρία στον επιδέξιο χειρισμό συμβολοσειρών, καθώς αξιολογούν τον αρχικό χαρακτήρα κάθε λέξης για να διαπιστώσουν αν αυτός ευθυγραμμίζεται με το επιλεγμένο γράμμα, ενισχύοντας τελικά την ικανότητά τους στην ανάλυση και τον χειρισμό κειμένου. Επιπλέον, η άσκηση υπογραμμίζει τον κρίσιμο ρόλο της λογικής υπό όρους, που αναδεικνύεται με την εφαρμογή των δηλώσεων "if", καλλιεργώντας την επιδεξιότητα των μαθητών στο σχεδιασμό λογικής που ενσωματώνει ή αποκλείει επιλεκτικά λέξεις βάσει συγκεκριμένων κριτηρίων. Οι μαθητές ασχολούνται επίσης με δομές δεδομένων λίστας, καθώς χωρίζουν αποτελεσματικά το κείμενο εισόδου σε μεμονωμένες λέξεις και επεξεργάζονται σχολαστικά κάθε λέξη μέσω επανάληψης, ενισχύοντας έτσι την ικανότητά τους στο χειρισμό λιστών. Τέλος, δημιουργώντας ένα διαδραστικό πρόγραμμα με φιλική προς το χρήστη διεπαφή, οι μαθητές εφαρμόζουν τις γνώσεις τους σχετικά με τις έννοιες της αλληλεπίδρασης με το χρήστη, διευρύνοντας περαιτέρω τις πρακτικές δεξιότητές τους στον προγραμματισμό.

  1. Εφαρμογή της γραφομηχανής: Πιο απαιτητική στο Scratch, αλλά μπορείτε να εισάγετε ένα σύνολο ομοιοκατάληκτων λέξεων και στη συνέχεια να δημιουργήσετε γραμμές που τελειώνουν με αυτές τις λέξεις.
  2. Εκπαιδευτική πτυχή: Οι μαθητές ενθαρρύνονται να απελευθερώσουν τις φανταστικές τους ικανότητες, τηρώντας παράλληλα το δομημένο πλαίσιο του περιορισμού Bout-rimes, συνθέτοντας γραμμές που όχι μόνο τηρούν το προκαθορισμένο σχήμα ομοιοκαταληξίας αλλά και μεταφέρουν συνοχή και νόημα, αναδεικνύοντας έτσι τη δημιουργικότητά τους. Η άσκηση αποτελεί παράδειγμα της έννοιας της δημιουργικότητας που βασίζεται σε περιορισμούς, όπου οι επιβαλλόμενοι περιορισμοί, όπως η απαίτηση για συγκεκριμένες ομοιοκαταληξίες, λειτουργούν ως καταλύτες για την ευρηματική επίλυση προβλημάτων και την καλλιτεχνική έκφραση. Επιπλέον, οι μαθητές εκτίθενται στη λογική του προγραμματισμού καθώς επινοούν μια συστηματική προσέγγιση, ακόμη και μέσα από τα οπτικά μπλοκ του Scratch, για να κατασκευάσουν ποιητικές γραμμές που ευθυγραμμίζονται με τον περιορισμό Bout-rimes, ακονίζοντας τη λογική σκέψη και τις δεξιότητες επίλυσης προβλημάτων. Επιπλέον, εμβαθύνουν στο σχεδιασμό αλληλεπίδρασης χρήστη ενσωματώνοντας μηχανισμούς εισαγωγής για σύνολα ομοιοκατάληκτων λέξεων, εμπλουτίζοντας την κατανόησή τους για πρακτικές έννοιες αλληλεπίδρασης χρήστη.

  1. Υλοποίηση με Python: δημιουργήστε μια συνάρτηση που δέχεται ως παραμέτρους ένα κείμενο εισόδου και ένα φυλακισμένο γράμμα, στη συνέχεια εφαρμόστε τον περιορισμό ελέγχοντας και τροποποιώντας ανάλογα τις λέξεις και τέλος, επιστρέψτε το έγκυρο κείμενο. Δοκιμάστε τον περιορισμό με διαφορετικά κείμενα εισόδου και φυλακισμένα γράμματα για να παρατηρήσετε τα αποτελέσματα.
  2. Εκπαιδευτική πτυχή: Ο Περιορισμός του Φυλακισμένου (ή Περιορισμός Μακάο) στον προγραμματισμό Python επικεντρώνεται στην τελειοποίηση των δεξιοτήτων των μαθητών στον χειρισμό συμβολοσειρών και στην υπό συνθήκη λογική. Αυτός ο περιορισμός προκαλεί τους μαθητές να επινοήσουν δημιουργικές λύσεις για την επιβολή κανόνων που περιορίζουν ορισμένα γράμματα από το να εμφανίζονται ως πρώτο ή τελευταίο γράμμα λέξεων μέσα σε ένα δεδομένο κείμενο. Παρέχει μια πρακτική άσκηση επίλυσης προβλημάτων, όπου οι μαθητές πρέπει να σχεδιάσουν και να υλοποιήσουν κώδικα για να περιηγηθούν στους περιορισμούς του περιορισμού, ενισχύοντας τη λογική τους σκέψη και την ικανότητά τους στον προγραμματισμό.

  1. Πυθονική υλοποίηση: Σχεδιάστε ένα πρόγραμμα που επιτρέπει στους χρήστες να εισάγουν κείμενο και να καθορίζουν απαγορευμένα γράμματα. Το πρόγραμμα θα πρέπει στη συνέχεια να αντικαταστήσει τα απαγορευμένα γράμματα μέσα σε λέξεις, προωθώντας πρακτικές δεξιότητες χειρισμού συμβολοσειρών και σχεδιασμού αλληλεπίδρασης με τον χρήστη.
  2. Εκπαιδευτική πτυχή: Η εκπαιδευτική πτυχή της εφαρμογής του περιορισμού "Beautiful Outlaw" στον προγραμματισμό Python επικεντρώνεται κυρίως στην ενίσχυση της κατανόησης των μαθητών σχετικά με τον χειρισμό συμβολοσειρών, τους βρόχους και την ευρετηρίαση συμβολοσειρών. Ενώ ο πλήρης περιορισμός μπορεί να είναι πολύ περίπλοκος για το Scratch, η εφαρμογή μιας απλοποιημένης έκδοσης στην Python παρέχει στους μαθητές την ευκαιρία να εμβαθύνουν σε περίπλοκες πράξεις συμβολοσειρών. Οι μαθητές θα αποκτήσουν πρακτική εμπειρία στον δημιουργικό χειρισμό συμβολοσειρών, εστιάζοντας ιδιαίτερα σε συγκεκριμένα γράμματα μέσα σε λέξεις. Επιπλέον, αυτή η άσκηση ενισχύει την κατανόηση των βρόχων καθώς επαναλαμβάνουν τις λέξεις και την ευρετηρίαση συμβολοσειρών καθώς έχουν πρόσβαση και τροποποιούν μεμονωμένους χαρακτήρες μέσα σε λέξεις. Συνολικά, ο περιορισμός "Beautiful Outlaw" στην Python προωθεί την πρακτική μάθηση, τη λογική σκέψη και την επίλυση προβλημάτων στο πεδίο του χειρισμού συμβολοσειρών και του προγραμματισμού.

  1. Υλοποίηση με Python: Κατασκευάστε ένα πρόγραμμα που δέχεται κείμενο εισόδου, αναγνωρίζει ουσιαστικά (ή άλλα καθορισμένα μέρη του λόγου) και τα αντικαθιστά με την έβδομη λέξη που ακολουθεί σε ένα λεξικό, χρησιμοποιώντας λίστες και τεχνικές αντικατάστασης συμβολοσειρών.
  2. Εκπαιδευτική πτυχή: Κατασκευάζοντας ένα πρόγραμμα που αναγνωρίζει και αντικαθιστά συγκεκριμένα μέρη του λόγου, όπως ουσιαστικά, με λέξεις από ένα λεξικό, οι μαθητές ενισχύουν την κατανόησή τους για την επεξεργασία φυσικής γλώσσας και την υπολογιστική γλωσσολογία. Ταυτόχρονα, ενισχύουν την ικανότητά τους στον προγραμματισμό, δουλεύοντας με λίστες και χρησιμοποιώντας τεχνικές αντικατάστασης συμβολοσειρών, προωθώντας έναν πρακτικό συνδυασμό γλωσσολογικών και προγραμματιστικών γνώσεων μέσα σε ένα δημιουργικό πλαίσιο που βασίζεται σε περιορισμούς

  1. Υλοποίηση σε Python: σχεδιασμός ενός προγράμματος που δέχεται κείμενο εισόδου και ένα μεταφραστικό λεξικό και στη συνέχεια χρησιμοποιεί προηγμένες τεχνικές χειρισμού συμβολοσειρών και tokenization για την αντικατάσταση λέξεων ή φράσεων, διατηρώντας την αρχική συντακτική δομή και γραμματική. T
  2. Εκπαιδευτική πτυχή: Πρώτον, οι μαθητές αποκτούν πολύτιμες γνώσεις σχετικά με τις γλωσσικές έννοιες που σχετίζονται με το συντακτικό, τη γραμματική και τη δομή της γλώσσας, καθώς διατηρούν τα συντακτικά στοιχεία του αρχικού κειμένου κατά τη μετάφραση. Δεύτερον, προάγουν τις προγραμματιστικές τους δεξιότητες εφαρμόζοντας σύνθετες τεχνικές χειρισμού συμβολοσειρών και tokenization, ενισχύοντας την ικανότητά τους να αναπτύσσουν εφαρμογές βασισμένες στη γλώσσα και εμβαθύνοντας στην κατανόηση της διασταύρωσης μεταξύ γλώσσας και τεχνολογίας.

  1. Υλοποίηση της Python: Δημιουργήστε ένα πρόγραμμα που δέχεται ένα κείμενο εισόδου και προσφέρει διάφορους τρόπους αναδιάταξης των στοιχείων που το αποτελούν, όπως αναγραμματισμούς, ακροστιχίδες ή αντιστροφές λέξεων, χρησιμοποιώντας τεχνικές χειρισμού λίστας και αλφαριθμητικών για να εξερευνήσετε δημιουργικούς μετασχηματισμούς κειμένου. Αυτή η άσκηση παρέχει στους μαθητές πρακτική εμπειρία στον χειρισμό κειμένου με ποικίλους τρόπους και ενισχύει την κατανόηση των προηγμένων πράξεων λίστας και συμβολοσειράς σε προγραμματιστικό πλαίσιο.
  2. Εκπαιδευτική πτυχή: Η εκπαιδευτική πτυχή της υλοποίησης του "Permutation" στην Python επικεντρώνεται στην ενίσχυση των δεξιοτήτων των μαθητών στον δημιουργικό χειρισμό κειμένου και στην εμβάθυνση της κατανόησης των προηγμένων πράξεων λίστας και συμβολοσειράς. Εξερευνώντας διάφορες τεχνικές αναδιάταξης, όπως αναγράμματα, ακροστιχίδες ή αντιστροφές λέξεων, οι μαθητές όχι μόνο ενισχύουν τη δημιουργική τους σκέψη αλλά και την προγραμματιστική τους επάρκεια στον χειρισμό κειμένου με ποικίλους τρόπους.
Back to top

5) Βήμα προς βήμα παραδείγματα: Προγραμματιστικό έργο OULIPO σε Scratch &Python

5.1) Παράδειγμα λιπογράμματος

  • Βήμα 1: Ανοίξτε το Scratch και δημιουργήστε ένα νέο έργο
  • Βήμα 2: Δημιουργήστε τη διεπαφή χρήστη

Στην ενότητα "Sprites", διαγράψτε το προεπιλεγμένο sprite κάνοντας δεξί κλικ πάνω του και επιλέγοντας "Διαγραφή."

Επιλέξτε ένα υπάρχον sprite που θα χρησιμεύσει ως διεπαφή για το πρόγραμμά σας

  • Βήμα 3: Αρχικοποίηση της λίστας

Περάστε στην ενότητα "Μεταβλητές".

Χρησιμοποιήστε το μπλοκ για να καθαρίσετε τη λίστα "modiyfiedverse".

Πηγαίνετε στην ενότητα "Sensing" για να βρείτε το μπλοκ για να ζητήσετε από το χρήστη να πληκτρολογήσει μια φράση.

Μετά πηγαίνετε στην ενότητα "Variables" για να αποθηκεύσετε την απάντηση στη μεταβλητή verse.

  • Βήμα 4: Λήψη εισόδου χρήστη για το γράμμα προς αφαίρεση

Στην ενότητα "Μεταβλητές" βρείτε το μπλοκ που ζητάει το γράμμα προς αφαίρεση.

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

  • Βήμα 5: Ορισμός μεταβλητής δείκτη

Χρησιμοποιήστε ένα μπλοκ από την ενότητα "Μεταβλητές" για να ορίσετε τον δείκτη στο μήκος του στίχου.

Ξεκινήστε τον βρόχο αφαίρεσης

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

  • Βήμα 6: Έλεγχος κάθε χαρακτήρα και δημιουργία τροποποιημένης λίστας

Μέσα στο βρόχο, χρησιμοποιήστε μπλοκ από τις ενότητες "Τελεστές" και "Μεταβλητές" για να ελέγξετε αν ο χαρακτήρας στο index του verse είναι διαφορετικός από το γράμμα προς αφαίρεση.

Αν δεν είναι το προς αφαίρεση γράμμα, χρησιμοποιήστε ένα μπλοκ από την ενότητα "Μεταβλητές" για να το εισάγετε στην αρχή της λίστας "modiyfiedverse".

Μειώστε τον δείκτη κατά 1 χρησιμοποιώντας ένα μπλοκ από την ενότητα "Τελεστές" .

  • Βήμα 7: Επαναφορά δείκτη και προετοιμασία νέας συμβολοσειράς

Μετά το βρόχο, χρησιμοποιήστε μπλοκ από την ενότητα "Μεταβλητές" για να θέσετε το δείκτη στο 0 και το verse2 σε μια κενή συμβολοσειρά.

  • Βήμα 8: Συνδέστε την τροποποιημένη λίστα για να σχηματίσετε τη νέα συμβολοσειρά

Χρησιμοποιήστε ένα μπλοκ από την ενότητα "Control" για να εκτελέσετε έναν βρόχο για κάθε στοιχείο στο "modiyfiedverse".

Μέσα σε αυτόν τον βρόχο, αυξήστε τον δείκτη κατά 1 χρησιμοποιώντας ένα μπλοκ από την ενότητα "Operators" και ενώστε τα στοιχεία στο verse2 με μπλοκ από τις ενότητες "Variables" και "Operators".

  • Βήμα 9: Εμφανίστε το αποτέλεσμα

Τέλος, βρείτε το μπλοκ στην ενότητα "Looks" για να βάλει το πρόγραμμα "say""verse2", το οποίο θα εμφανίσει την αρχική φράση με το συγκεκριμένο γράμμα αφαιρεμένο από κάθε θέση που εμφανίζεται.

Ακολουθεί το πρόγραμμα Scratch για το παράδειγμα του λιπογράμματος OULIPO, το οποίο σας επιτρέπει να εισάγετε κείμενο και στη συνέχεια αφαιρεί κάθε λέξη που περιέχει ένα απαγορευμένο γράμμα π.χ. "e".

Εικόνα 1. : Απεικόνιση ενός προγράμματος Scratch που έχει σχεδιαστεί για ένα λιπογράφημα OULIPO

5.2) Παραδείγματα χιονοστιβάδας

  • Βήμα 1

Χρησιμοποιήστε το μπλοκ "όταν γίνει κλικ στο [πράσινο σημαιάκι]" από την κατηγορία "Γεγονότα" για να ξεκινήσετε το σενάριο

  • Βήμα 2: Αρχικοποίηση

Δημιουργήστε μια λίστα με όνομα "test" χρησιμοποιώντας την επιλογή "make a list" στην κατηγορία "Variables".

Δημιουργήστε τις μεταβλητές "index", "temp", "string", "pass" και "swaps" χρησιμοποιώντας την επιλογή make a variable στην κατηγορία "Variables" και ορίστε τις ως εξής:

  • Ορίστε το "index" στο 0.
  • Ορίστε το "temp"σε ένα κενό string.
  • Ορίστε το "string" στην επιθυμητή πρόταση ή λέξη εισόδου (απάντηση).
  • Ορίστε τα "pass" και "swaps" στο 0.

  • Βήμα 3: Βρόχος αρχικής ρύθμισης

Ο βρόχος ξεκινά με το μπλοκ "repeat (length of string)". Αυτός ο βρόχος θα εκτελεστεί τόσες φορές όσες είναι το μήκος της συμβολοσειράς που εισάγει ο χρήστης.

  • Βήμα 4: Ακολουθεί βρόχος

Μετά την αρχική ρύθμιση, υπάρχει ένας βρόχος που ξεκινά με το "repeat until (pass > 0 and swaps = 0)". Αυτό υλοποιεί έναν αλγόριθμο ταξινόμησης. Κάθε επανάληψη αυτού του βρόχου αντιπροσωπεύει ένα μόνο πέρασμα στη λίστα προς ταξινόμηση.

Μέσα σε αυτόν τον βρόχο, ορίζετε το "item" στο 0 και το "swaps" στο 0, τα οποία χρησιμοποιούνται για να παρακολουθείτε την πρόοδο της ταξινόμησης και αν έχουν γίνει ανταλλαγές σε ένα πέρασμα.

Υπάρχει ένας εμφωλευμένος βρόχος "repeat (length of text - 1)". Αυτός ο βρόχος περνάει από κάθε στοιχείο του κειμένου της λίστας και συγκρίνει τα γειτονικά στοιχεία για να ελέγξει αν πρέπει να γίνει ανταλλαγή. Χρησιμοποιείται συνήθως σε αλγορίθμους ταξινόμησης φυσαλίδων, όπου η διαδικασία επαναλαμβάνεται μέχρι να ταξινομηθεί η λίστα, οπότε δεν χρειάζονται ανταλλαγές (εξ ου και "swaps = 0").

  • Βήμα 5: Τελικός βρόχος εξόδου

Στο κάτω μέρος υπάρχει ένας βρόχος "repeat (length of text)". Αυτός ο βρόχος φαίνεται να περνάει από την ταξινομημένη λίστα για να δημιουργήσει ένα τελικό αποτέλεσμα που θα εκφωνηθεί από το πρόγραμμα Scratch χρησιμοποιώντας το μπλοκ "say result".

Εικόνα 2. : Απεικόνιση ενός προγράμματος Scratch που έχει σχεδιαστεί για ένα OULIPO Snowball

5.3) Παράδειγμα μετατροπής

  • Βήμα 1: Κατανοώντας τον στόχο

Δημιουργήστε ένα πρόγραμμα που μετατρέπει κείμενο με διάφορους τρόπους.

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

  • Βήμα 2: Εισαγωγή κειμένου

Διαδικασία: get_input_text()

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

  • Βήμα 4: Μετασχηματισμοί κειμένου

Συναρτήσεις: generate_anagrams(), generate_acrostics(),reverse_words()

Διαδικασία σκέψης: Κάθε συνάρτηση εκτελεί έναν διαφορετικό τύπο μετασχηματισμού. Χρησιμοποιούμε την split() για να διαχωρίσουμε το κείμενο σε λέξεις και στη συνέχεια εφαρμόζουμε τις αντίστοιχες μεθόδους μετασχηματισμού.

  • Βήμα 5: Εκτέλεση προγράμματος

Συνάρτηση: main()

Διαδικασία σκέψης: main()

Διαδικασία σκέψης: Αυτή η συνάρτηση ελέγχει τη ροή του προγράμματος. Λαμβάνει το κείμενο, εμφανίζει το μενού, παίρνει την επιλογή του χρήστη και καλεί την αντίστοιχη συνάρτηση μετασχηματισμού.

import random
def get_input_text():
    return input("Εισάγετε το κείμενό σας: ")
def display_menu():
    print("Επιλέξτε μια επιλογή χειρισμού κειμένου:")
    print("1: Αναγράμματα")
    print("2: Ακροστιχίδες")
    print("3: Word Reversals")
    return input("Η επιλογή σας: ")
def generate_anagrams(text):
    words = text.split()
    anagrams = [''.join(random.sample(word, len(word)) for word in words]
    return ' '.join(anagrams)
def generate_acrostics(text):
    words = text.split()
    acrostic = ''.join([word[0] for word in words])
    return acrostic
def reverse_words(text):
    words = text.split()
    reversed_words = [word[::-1] for word in words]
    return ' '.join(reversed_words)
def main():
    text = get_input_text()
    choice = display_menu()
    if choice == '1':
        print("Anagrams:", generate_anagrams(text))
    elif choice == '2':
        print("Acrostics:", generate_acrostics(text))
    elif choice == '3':
        ): print("Αντιστροφή λέξεων:", reverse_words(text))
    else:
        print("Invalid choice")
if _ _ _name_ _ == "_ _ _main_ _":

Back to top

6) Προτεινόμενη βιβλιογραφία

Bellos, D. (2010). Μαθηματικά, ποίηση, μυθοπλασία: Η περιπέτεια του Oulipo. BSHM Bulletin, 25(2), 104-118.

Berkman, N. (2018). Digital Oulipo: Programming Potential Literature. DHQ: Digital Humanities Quarterly, 11(3), 1-16.

Despeaux, S. E. (2015). Oulipo: Εφαρμογή μαθηματικών περιορισμών στη λογοτεχνία και τις τέχνες σε μια τάξη μαθηματικών για τις ελεύθερες τέχνες. PRIMUS, 25(3), 238-247.

Matuszyk, Ł. (2016). Τα μαθηματικά της βιβλιοθήκης του Oulipo. Στο Πρακτικά του Διεθνούς Συνεδρίου Σπουδών στις Ανθρωπιστικές και Κοινωνικές Επιστήμες (SHSS-2016) (σσ. 86-92). Παρίσι, Γαλλία: University of Silesia in Katowice.

Reig, C. (2021). Les "Temps mêlés" de l'Oulipo. Contemporary French and Francophone Studies, 25(5), 566-574.

Reig, C., Andrews, C., Reggiani, C., & Salceda, H. (2021). Les Effets de l'OuLiPo. SITES The Journal of Contemporary French Studies, 25(5,(Dec 2021)).

Wolff, M. (2007). Reading potential (Δυνατότητα ανάγνωσης): Το oulipo και το νόημα των αλγορίθμων. Digital Humanities Quarterly, 1(1). Digital Humanities Quarterly. Ανακτήθηκε από https://www.proquest.com/docview/2555208716?pq-origsite=gscholar&fromopenview=true&sourcetype=Scholarly Journals

Back to top