Απορια για λειτουργεια του Για...

Ξεκίνησε από alexis_zoure, 15 Νοε 2007, 04:57:09 ΜΜ

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

alexis_zoure

Δινεται το παρακατω κομματι αλγοριθμου:

Για i απο 1 μεχρι 7
Διαβασε x
 Αν x >0 τοτε
  i<-7
 Τελος_αν
(Εντολες...)
Τελος_επαναληψης

Επιτρεπεται αυτο για να τερματισουμε ενδεχομενως την Για πιο γρηγορα? ???
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

Michael

Νομίζω πως στο συγκεκριμένο οι γνώμες διίστανται...
Από τη μία, έχω ακούσει για κάποιους (που πιθανόν να είναι και διορθωτές), που όχι μόνο δεν το βρίσκουν λάθος να αλλάζει εντός του βρόχου ο μετρητής της ΓΙΑ, αλλά το επιλέγουν και σαν θέμα σε διαγωνίσματα (σε πίνακες τιμών κτλ).
Από την άλλη, κάποιοι (πιθανοί διορθωτές επίσης), υποστηρίζουν (δικαίως) ότι "καλό είναι να αποφεύγεται", "είναι εκτός φιλοσοφίας της ΓΙΑ" κτλ.
Το θέμα είναι κατά πόσο οι δεύτεροι είναι διατεθειμένοι να κόψουν αν δουν κάτι τέτοιο σε ένα γραπτό. Νομίζω πως ναι, και προσωπικά δεν θα το ρίσκαρα να παρουσιάσω έναν τέτοιο αλγόριθμο. Αν όμως μου δώσουν έτοιμο έναν τέτοιο αλγόριθμο, δεν θα εκπλαγώ καθόλου. Με λίγα λόγια, οι εξεταστές έχουν δικαίωμα να αλλάξουν το μετρητή, εγώ σαν υποψήφιος όμως, δεν δίνω στον εαυτό μου αυτό το δικαίωμα.

alexis_zoure

Η αληθεια ειναι οτι και εγω το αποφευγω αυτο...Δεν θα το ρισκαρα...
Αλλα το θεμα ειναι: Ειναι σωστο η οχι? Και αν οχι γιατι? παραβιαζεται κανενα κριτηριο?
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

gpapargi

Αλέξη ρίξε μια ματιά στο παρακάτω link

https://alkisg.mysch.gr/steki/index.php?topic=286.0

Ο μαθητής που άνοιξε το θέμα έθεσε ένα ερώτημα σαν το δικό σου (συγκεριμένα είναι το ερώτημα 3 που έθεσε).  Το ερώτημα είναι να μπορούμε να τερματίσουμε τη Για αλλάζοντας την τιμή του μετρητή. Δες μεταξύ των άλλων απαντήσεων και την απάντηση που του έδωσα περί της φιλοσοφίας του προγραμματισμού. Ουσιαστικά το πρόβλημα που πας να λύσεις λύνεται με κάποια από τις άλλες 2 εντολές.

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

ι<-1
Όσο ι<=7 και ...

  ι<-ι+1
Τέλος_επανάληψης


Και λέω "ενισχυμένη Για" γιατί μπορείς να την κόψεις όποτε θέλεις βάζοντας στην συνθήκη της Όσο τα κατάλληλα επιπρόσθετα.

Για παράδειγμα αυτό που πας να κάνεις με τον τρόπο που το συνέλαβες δες πως γίνεται χωρίς καμία παραβίαση φιλοσοφίας

Τερμάτισε<- Ψευδής
ι<-1
Όσο ι<=7 και
τερμάτισε = Ψευδής επανάλαβε
  Διάβασε χ
  Αν χ>0 τότε
     Τερμάτισε <- Αληθής
  Τέλος_αν
  (Εντολές)
  ι<-ι+1
Τέλος_επανάληψης


Παρατήρησε με κόκκινα τη δομή της "ενισχυμένης Για" που σου λέω. Παρατήρησε και με έντονα μαύρα τα επιπρόσθετα.

alexis_zoure

Πραγματι ειναι πολυ καλες και χρησιμες λυσεις αυτες!!!Ουσιαστθκα ειναι κ μια μετατροπη της Για σε Οσο που ειναι ισως και η "ισχυροτερη" των εντολων επαναληψφεων...
Οσο για το ερωτημα,εντελως εγκυκλοπαιδιακα, ισχυει η δεν μπορουμε να τελειωσουμε την Για με τετοιο τροπο?
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

Michael

Και ισχύει (εγκυκλοπαιδικά), και δεν μπορούμε να την τελειώσουμε με τέτοιο τρόπο (εξεταστικά).