ΧΡΗΣΗ break

Ξεκίνησε από NIKOS_KALYVAS, 02 Μαρ 2026, 09:18:52 ΜΜ

« προηγούμενο - επόμενο »

NIKOS_KALYVAS

Μαθητής που υλοποιεί λύση στις πανελλαδικές με χρήση BREAK σε μια επαναληπτική διαδικασία χάνει μονάδες, τις παίρνει όλες ή θεωρειται εκτος ύλης και δεν μπορεί να τη χρησιμοποιήσει;

Παρακαλώ για υπεύθυνη και τεκμηριωμένη απάντηση.


ΝΙΚΟΣ ΚΑΛΥΒΑΣ
Καθηγητής Πληροφορικής (ΠΕ86)

evry

#1
Μα πως μπορεί να χρησιμοποιήσει break αφού σαν εντολή δεν υπάρχει μέσα στο βιβλίο και δεν αναφέρεται στην ύλη?
Βίαιη διακοπή βρόχου μπορεί να γίνει μόνο με return σε συναρτήσεις.
Η break είναι εκτός ύλης.

Για τη χρήση return για βίαιη έξοδο από for δες σελίδες 56, 57, 93 στις Λύσεις Ασκήσεων Βιβλίου Μαθητή και
Τετραδίου Εργασιών Μαθητή.

και
Σελίδα 115 στο βιβλίο της Β τάξης για τη σειριακή αναζήτηση.

Η πρακτική που φαίνεται στην παρακάτω εικόνα είναι αποδεκτή, και μάλιστα από την εμπειρία μου βοηθάει πολύ μαθητές να αποφύγουν τη δυσκολία των σύνθετων συνθηκών ειδικά σε εμφωλευμένους βρόχους.
Μάλιστα το παρακάτω είναι πολύ πιο κοντά στον ψευδοκώδικα και τον τρόπο που σκέφτεται ο άνθρωπος από ότι είναι η  ΓΛΩΣΣΑ των 80s που χρησιμοποιείται στο Γενικό Λύκειο εν έτει 2026. Ουσιαστικά αυτό είναι Αλγοριθμική ενώ αυτό που κάνουν στο Γενικό Λύκειο είναι προγραμματισμός στη χειρότερη, πιο αντιεπιστημονική και αντιπαιδαγωγική μορφή του.

Εδώ να σημειώσω ότι ως σύμβουλος εκπαίδευσης έχω στείλει επιστολή σε υπουργείο/ΙΕΠ να ενεργοποιηθεί η ομάδα συγγραφής για να μετατρέψει το διδακτικό σύγγραμμα σε Python 3. Μου είχαν πει ότι θα το δουν.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

Καταλαβαίνω αυτό που λες Ευριπίδη, ότι δεν θα την έχει δει στο επίσημο βιβλίο αλλά μπορεί να την έχει δει αλλού.

Αν την έχει χρησιμοποιήσει σωστά γιατί να χάσει μονάδες;

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

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

Όσο για την Python 3 το υπουργείο είναι έτοιμο να στέλνει εγκυκλίους για κάθε λογής δράση. Στο να κάνει καμία σοβαρή δουλειά κολλάει πάντα.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

NIKOS_KALYVAS

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

Εγώ προσωπικά τo μηχανισμό βίαιης διακοπής μιας επαναληπτικής διαδικασίας το διδάσκω με τον παρακάτω τρόπο:

i=0
flag=False
while i<N and not flag:
    ...........
    ...........
    if condition then:
        flag=True
    else:
        i=i+1

Απαραίτητη επίσης κρίνεται η διδασκαλία κατά τη γνώμη μου, της σειριακής μεθόδου αναζήτησης (Β' τάξης) στου μαθητές της Γ' τάξης.
ΝΙΚΟΣ ΚΑΛΥΒΑΣ
Καθηγητής Πληροφορικής (ΠΕ86)

pgrontas

Παράθεση από: NIKOS_KALYVAS στις 05 Μαρ 2026, 11:10:56 ΜΜΜε αυτό τον τρόπο μπορεί καποιος να χρησιμοποίησει sort(),  max() και πληθώρα άλλων έτοιμων συναρτήσεων, μεθόδων και τεχνικών.
Επειδή μάλλον δεν έγινε κατανοητό θα το ξαναγράψω.
Υπάρχει ποιοτική διαφορά μεταξύ της χρήσης συναρτήσεων που βρίσκονται έτοιμες σε βιβλιοθήκες και της χρήσης δομών της γλώσσας προγραμματισμούς (π.χ. break, tuples κλπ).
Στην πρώτη περίπτωση σαφώς υπάρχει 'κλέψιμο', δηλαδή μείωση της δυσκολίας της άσκησης και αποφυγή αυτού που θέλουν να εξετάσουν οι θεματοδότες. Όμως στη δεύτερη περίπτωση, δεν βλέπω κάτι τέτοιο - βλέπω απλά μια διαφορά στην έκφραση των μαθητών η οποία όπως έγραψε ο Ευριπίδης μπορεί να είναι παιδαγωγικά πιο σωστή.
Για να πω και ένα άλλο παράδειγμα: Στην ΑΕΠΠ χρησιμοποιούμε παράλληλους πίνακες γιατί δεν υπάρχει η δομή του ζεύγους (είτε ως εγγραφή είτε ως tuple). Είναι πολύ πιο κοντά στον ανθρώπινο τρόπο σκέψης να έχω σύνολα που περιέχουν σύνθετα δεδομένα (π.χ. όνοματα, βαθμοί) παρά να έχω 'παράλληλα' σύνολα με απλά δεδομένα και να πρέπει να διατηρώ την 'φανταστική' σύνδεση μεταξύ τους.
Νομίζω ότι αν περιοριστούμε σε ένα συγκεκριμένο σύνολο δομών (όχι συναρτήσεων βιβλιοθήκης επαναλαμβάνω) θα χάσουμε τα πλεονεκτήματα της γλώσσας προγραμματισμού και απλά θα μεταφράσουμε την ΑΕΠΠ σε Python.

Σε ό,τι αφορά τις συναρτήσεις θα πρέπει οι θεματοδότες να μην βάζουν ερωτήματα που μπορούν να υλοποιηθούν απευθείας με έτοιμες συναρτήσεις (απλό παράδειγμα:  να μην ζητούν το μέγιστο στοιχείο ενός πίνακα, αλλά κάτι που συσχετίζεται με το μέγιστο, ώστε να αναγκαστεί να τρέξει τον αλγόριθμο). Αυτό ίσως να μην γίνεται, πάντα οπότε ίσως θα ήταν προτιμότερο να υπάρχουν απαγορεύσεις ανά εκφώνηση (π.χ. στην τάδε άσκηση μην χρησιμοποιήσετε την sort), παρά να περιορίσουμε τι διδάσκουμε.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

Foto

#5
1. Μια μεταβλητή που έχει δημιουργηθεί έξω από μια συνάρτηση (σε global scope) μπορεί να χρησιμοποιηθεί (να διαβαστεί) μέσα σε μια συνάρτηση της Python
Για να αλλάξετε την πραγματική (global) μεταβλητή, πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί global. Δηλαδή να οριστεί στη συνάρτηση ως global. Αν το ξεχάσουμε θα δημιουργηθεί τοπικη μεταβλητή, και στην έξοδο από τη συνάρτηση η μεταβλητή που δεν δηλώθηκε δεν θα αλλάξει.

2.  Στην Python, η εντολή return τερματίζει αμέσως την εκτέλεση της συνάρτησης και επιστρέφει τον έλεγχο (και την προαιρετική τιμή) στο σημείο όπου έγινε η κλήση.

Αυτά τα δυο δηλώνουν οτι μπορούμε να μεταφέρουμε ενα μπλοκ εντολών σε μια συνάρτηση και να χρησιμοποιήσουμε το return σαν break.

dimitrios67

Με το break "κλέβουμε". Οι μαθητες μαθαινουν δομημενο προγραμματισμό
και εκει θα "χτισουν" την προγραμματιστική τους σκέψη.
Για να χρησιμοποιήσει καποιος το break σωστα, πρεπει να ξερει πρωτα καλα δομημενο προγραμματισμο.
Γνωμη μου, βεβαια. Μπορει να κανω και λάθος.

evry

Δεν χρειάζεται να πάμε αυστηρά στον δομημένο προγραμματισμό. Η χρήση break μπορεί να βοηθήσει μαθητές που δυσκολεύονται πολύ με συνθήκες να τα καταφέρουν να λύσουν δύσκολα προβλήματα. Αξίζει τον κόπο. Δες τα παρακάτω άρθρα:

ένα του Eric Roberts
https://dl.acm.org/doi/10.1145/199691.199815

και ένα δικό μου παλιά που είχα κάνει μια έρευνα με την break σε φοιτητές του ΠΑΔΑ
http://events.di.ionio.gr/cie/images/documents19/cie2019_Proc_OnLine/new/custom/pdf/2.2%20CIE2019_900.060_Vrach_Final_p2.pdf
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

Ευριπίδη, είναι ενδιαφέρον αυτό που λες, αλλά πιστεύω ότι το break έχει «νόημα» περισσότερο σε φοιτητές και όχι τόσο σε μαθητές Γ Λυκείου. Το break, θεωρώ προσωπικά, ότι είναι προς την μεριά του developing και λιγότερο προς την κατεύθυνση του problem solving. Εάν δηλαδή, θέλουμε στις εξετάσεις να ανταμειφθούν οι ικανότεροι, τότε ορθότερο κριτήριο πιστευω είναι το while και οι συνθήκες και όχι το break.
Δηλ. με κάποια έννοια, οι Πανελλαδικές είναι περισσότερο problem solving και λιγότερο developing. Για το problem solving το εχεις πει κι εσυ σε καποιο παλαιότερο post.
Και βέβαια, αυτή είναι η προσωπική μου άποψη.

evry

Παράθεση από: dimitrios67 στις Χθες στις 02:13:28 ΜΜΕυριπίδη, είναι ενδιαφέρον αυτό που λες, αλλά πιστεύω ότι το break έχει «νόημα» περισσότερο σε φοιτητές και όχι τόσο σε μαθητές Γ Λυκείου. Το break, θεωρώ προσωπικά, ότι είναι προς την μεριά του developing και λιγότερο προς την κατεύθυνση του problem solving. Εάν δηλαδή, θέλουμε στις εξετάσεις να ανταμειφθούν οι ικανότεροι, τότε ορθότερο κριτήριο πιστευω είναι το while και οι συνθήκες και όχι το break.
Δηλ. με κάποια έννοια, οι Πανελλαδικές είναι περισσότερο problem solving και λιγότερο developing. Για το problem solving το εχεις πει κι εσυ σε καποιο παλαιότερο post.
Και βέβαια, αυτή είναι η προσωπική μου άποψη.
Καταλαβαίνω τι λες και παλιά είχα και γω μια παρόμοια άποψη αλλά έχω αναθεωρήσει. Αναθεώρησα από τότε που ξεκίνησα να κάνω Python σε μαθητές Γυμνασίου οι οποίοι δυσκολεύονταν πάρα πολύ με τις συνθήκες. Όταν έβαλα την break στο παιχνίδι είδα ότι ακόμα και πιο αδύναμοι στον προγραμματισμό μαθητές κατάφερναν να λύσουν προβλήματα πιο γρήγορα και εύκολα.
Δηλαδή κατάφερναν να ακολουθήσουν και τους άλλους μαθητές που είχαν έφεση στον προγραμματισμό, και τι έχει πλέον νόημα να διδάσκουμε
Δεν είμαι σίγουρος αν πρέπει οι μαθητές να γνωρίζουν τόσο καλά τις λογικές συνθήκες με τόση λεπτομέρεια. Η break επίσης είναι πιο κοντά στην ανθρώπινη σκέψη, δηλαδή πιο κοντά στην ψευδογλώσσα. Μιλάω για ένα μάθημα γενικής παιδείας που απευθύνεται σε όλους/ες.
Αν πάμε σε μάθημα που απευθύνεται σε επιστήμονες πληροφορικής εκεί τα πράγματα είναι διαφορετικά.

Επίσης με όλα αυτά που συμβαίνουν και θα συμβούν με την Τεχνητή Νοημοσύνη το vibe coding ή όπως αλλιώς το πουν νομίζω ότι θα αναθεωρήσουμε πολλά πράγματα για το τι πρέπει να γνωρίζει ένας επιστήμονας για τον προγραμματισμό και την αλγοριθμική.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

Παράθεση από: evry στις Χθες στις 07:34:38 ΜΜΑναθεώρησα από τότε που ξεκίνησα να κάνω Python σε μαθητές Γυμνασίου οι οποίοι δυσκολεύονταν πάρα πολύ με τις συνθήκες. Όταν έβαλα την break στο παιχνίδι είδα ότι ακόμα και πιο αδύναμοι στον προγραμματισμό μαθητές κατάφερναν να λύσουν προβλήματα πιο γρήγορα και εύκολα.
Δηλαδή κατάφερναν να ακολουθήσουν και τους άλλους μαθητές που είχαν έφεση στον προγραμματισμό, και τι έχει πλέον νόημα να διδάσκουμε.
Ευριπίδη, θα συμφωνήσω μαζί σου. Είναι το πού απευθυνόμαστε. Για μάθημα γενικής παιδείας το break είναι εξαιρετικό σίγουρα. Διότι, όσο κι αν θέλουμε να είμαστε «οπαδοί» του δομημένου προγραμματισμού και πνευματικά «παιδιά» του Dijkstra, πιο κοντά στην ανθρώπινη σκέψη είναι το if <condition> goto. Μια πιο «δομημένη» παραλλαγή του goto είναι το break και σίγουρα πιο κοντά στον τρόπο που σκεφτόμαστε οι άνθρωποι -ας μου επιτραπεί η έκφραση- σε «raw human» mode.
Αυτό που ανέφερα πιο πάνω αφορούσε τα κριτήρια για να «επιλεγούν» οι ικανότεροι για μια σχολή Πληροφορικής, δηλ. αυτοί που θα έχουν το «κάτι παραπάνω» στον τρόπο σκέψης. Είναι (κατά τη γνώμη μου) η διαφοροποίηση μεταξύ developer και problem solver.
Είναι πραγματικά μια πολύ ενδιαφέρουσα συζήτηση που αφορά το τι είναι «βέλτιστο» να διδάσκουμε στην Πληροφορική σαν μάθημα γενικής παιδείας.

pgrontas

#11
Η break έχει το πλεονέκτημα της τοπικότητας. Δηλαδή η ενεργοποίηση της συνθήκης και η έξοδος από τον βρόχο είναι μαζί. Δεν πρέπει να μεσολαβήσουν άλλες εντολές όπως στον δομημένο προγραμματισμό, στις οποίες είσαι εκτεθειμένος στο ότι οι εντολές σου δεν πρέπει να επαναλαμβάνονται.
Επιπλέον μπορείς να έχεις πολλά if-break με απλές συνθήκες για έξοδο από τον βρόχο, αντί να βάλεις όλες τις συνθήκες εξόδου ή συνέχειας στην Μέχρις ότου ή στην όσο, φτιάχνοντας έτσι μια σύνθετη συνθήκη.
Έτσι εξηγείται το ότι είναι πιο εύκολο για τους μαθητές αλλά και για τους προγραμματιστές.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson