καλό σας μεσημέρι...
κι από μένα το τελευταίο διαγώνισμα της χρονιάς
αν παρατηρήσετε κάτι στραβό πέραν του γεγονότος ότι το άθροισμα των μορίων ξεπερνάει το 100, ή τέλος πάντως για ό,τι θέλετε, παρακαλώ σχολιάστε
καλησπέρα, ευχαριστούμε για το διαγώνισμα
να ρωτησω, στο Α5 που ζητάς να μην χρησιμοποιηθεί κανένας λογικός τελεστής, αυτό ισχύει και για το μέχρις ότου ?? για την δομή επιλογής σίγουρα υπάρχει τρόπος, για το μέχρις_ότου γίνεται να μην χρησιμοποιηθεί λογικός τελεστής ?? αν έχει κάποιο κολπάκι να τα ψάξουμε >:D :police:
όταν λέμε «κανένας», εννοούμε «κανένας»
ειδικά το συγκεκριμένο δε θέλει πάρα πολλή φαντασία
Φαντάζομαι εμφωλεύσεις και λογική μεταβλητή
Έτσι βγαίνει μια χαρα νομίζω...εγω σκεφτόμουν μήπως υπάρχει κάποιο μαθηματικό τρικ που πραγματοποιεί τον έλεγχο σε μια γραμμή... Πάντως έχω παρατηρήσει πως οι μαθητές ( και οι καθηγητές πολλές φορές) σε τέτοιες ασκήσεις με μετατροπές γενικά, έχουν συχνά απορίες για το τι μπορούν να αλλάξουν για να πετύχουν το τελικό αποτέλεσμα... Δηλαδη αν μπορούν εμφωλευμενα, η απλά αν, η νέες μεταβλητές η ο, τι άλλο σκεφτούν.. Νομίζω γενικά έχουν ένα δίκιο, είναι ασκήσεις που μπορεί να ερμηνευτουν διαφορετικά
αντί για τούτο:
αρχή_επανάληψης
...
μέχρις_ότου α<=β και α<=γ
σκέφτομαι τούτο:
αρχή_επανάληψης
αρχή_επανάληψης
...
μέχρις_ότου α<=β
μέχρις_ότου α<=γ
η εμφώλευση μας δίνει την έννοια του ΚΑΙ
από την άλλη, με τις συγκεκριμένες συνθήκες μπορεί κανείς να το δει και αλγεβρικά, όχι;
αρχή_επανάληψης
...
μέχρις_ότου 2*α<=β+γ
για α=0 και β=-1 και γ=2
το 2*α<=β+γ βγαίνει 0<=1 που είναι αληθές
στο εσωτερικό μέχρις_ότου το α<=β είναι ψευδές άρα θα γίνει επανάληψη, άρα δεν είναι ισοδύναμο με το "αλγεβρικό". Η εμφώλευση δεν δίνει την έννοια του ΚΑΙ, επειδή η εσωτερική επανάληψη θα εκτελεστεί χωρίς έλεγχο της δεύτερης συνθήκης που είναι στην εξωτερική επανάληψη. Για το λόγο αυτό το ΚΑΙ παίζει το ρόλο ότι οι συνθήκες, και οι δύο, θα εξεταστούν σε ένα σημείο. Ακόμα και να υποθέσουμε το short circuit, αυτό έχει νόημα μόνο αν η πρώτη συνθήκη είναι ψευδής να ακυρώσει τον έλεγχο της δεύτερης, αφού αρκεί η πρώτη ψευδής για να βγάλει αποτέλεσμα ψευδής. Οι μέχρις ότου έχουν το αληθές ως συνθήκη τερματισμού της επανάληψης, άρα για να εξεταστεί η δεύτερη συνθήκη πρέπει η πρώτη να βγει αληθής, και αυτό είναι ανάποδο από την έννοια του short circuit για την ΚΑΙ είναι σωστό (διορθώθηκε). Στη ΓΛΩΣΣΑ δεν μας απασχολεί το short circuit οπότε θέλουμε οι δυο συνθήκες να εκτελούνται μαζί στο ίδιο σημείο, ή έκφραση. Επίσης η ιδέα "αλγεβρικού" ισοδύναμου πρέπει να αποφεύγεται για δυο ακόμα λόγους. Πρώτος είναι ότι χάνουμε σε αναγνωσιμότητα του κώδικα, και δεύτερος ότι ενδέχεται να έχουμε σε προσθέσεις υπερχείλιση (που δεν θα είχαμε στις απλές συνθήκες).
1ον:
(1) α<=β
(2) α<=γ
(3) 2*α<=β+γ
σχετικά με τα «αλγεβρικά» σίγουρα έκανα λάθος, αφού με δεδομένες τις συνθήκες (1) και (2), είναι βέβαιο ότι θα ισχύει και η (3), ενώ με δεδομένη την (3) δεν είναι βέβαιο ότι θα ισχύουν οι (1) και (2), και ντροπή μου που το είπα χθες
2ον:
δεν καταλαβαίνω γιατί τα εμφωλευμένα μέχρις_ότου δε μου δίνουν την έννοια του ΚΑΙ:
αρχή_επανάληψης
αρχή_επανάληψης
#label1
...
μέχρις_ότου α<=β
μέχρις_ότου α<=γ
#label2
αφού ο μόνος τρόπος για να βρεθείς εκτός loops, στο label2, θα είναι εφόσον επαληθεύονται ταυτόχρονα ΚΑΙ οι δύο συνθήκες,
ενώ εάν οποιαδήποτε από τις δύο δεν επαληθεύεται, η ροή επαναφέρεται στο ίδιο σημείο, στο label1
Εδώ λοιπόν εγώ έχω κάνει λάθος, η ΚΑΙ σε short circuit εξετάζει την δεύτερη συνθήκη μόνο αν η πρώτη βγει αληθές άρα στο παράδειγμα όταν η πρώτη επανάληψη τερματίσει.
Μία λύση που σκέφτηκα είναι να βάλουμε μία νέα μεταβλητή.
Η ΟΣΟ, εκτελείται όσο το α είναι μεγαλύτερο τουλάχιστον από ένα από τα β , γ.
Άρα σταματάει όταν το α γίνει μικρότερο ή ίσο από τον ελάχιστο των β και γ.
Οπότε λέω :
διάβασε β,γ
α <- (β+γ) div 2
min <- α
ΑΝ β < min ΤΟΤΕ
min <- β
ΤΕΛΟΣ_ΑΝ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
.....(εμφ. ΑΝ)
.....
ΜΕΧΡΙΣ_ΟΤΟΥ α <= min
καλησπέρα σε όλους,
με τις λύσεις που προτείνω
Παράθεση από: Άρης Κεσογλίδης στις 27 Μαΐου 2019, 04:07:11 ΠΜ
Μία λύση που σκέφτηκα είναι να βάλουμε μία νέα μεταβλητή.
Η ΟΣΟ, εκτελείται όσο το α είναι μεγαλύτερο τουλάχιστον από ένα από τα β , γ.
Άρα σταματάει όταν το α γίνει μικρότερο ή ίσο από τον ελάχιστο των β και γ.
αμέ, γιατί όχι
τώρα ξαναπαρατηρώ ότι στην έκδοση που ανέβασα έλεγα
α <-- (β+γ) div 2
αλλά στην έκδοση που έδωσα στα παιδιά έλεγα
α <-- β+γ
ώστε η συνθήκη στο ΟΣΟ να είναι εξ αρχής αληθής, και να μη χρειαστούν απανωτές εμφωλεύσεις με ΑΝ και ΜΕΧΡΙΣ_ΤΟΥ
Παράθεση από: epsilonXi στις 27 Μαΐου 2019, 04:00:58 ΜΜ
καλησπέρα σε όλους,
με τις λύσεις που προτείνω
Καλησπέρα,
Στο Θέμα Α.5:
εκφώνηση: α <-- (β+γ)div2
Στην περίπτωση που δοθούν ίδια β και γ ή διαφέρουν κατά μία μονάδα, τότε η ΟΣΟ δεν εκτελείται ποτέ. Σωστά ?
Αν ναι, τότε στη λύση, μήπως πρέπει να προηγηθεί μια ΑΝ ?
Φιλικά,
Παράθεση από: panosz στις 27 Μαΐου 2019, 04:53:07 ΜΜ
Στο Θέμα Α.5:
εκφώνηση: α <-- (β+γ)div2
Στην περίπτωση που δοθούν ίδια β και γ ή διαφέρουν κατά μία μονάδα, τότε η ΟΣΟ δεν εκτελείται ποτέ. Σωστά ?
σωστά βέβαια
όπως είπα, η έκδοση που έδωσα τελικά λέει
α <-- β+γ, χωρίς το div 2