Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: theoni στις 31 Μαΐου 2017, 10:36:09 ΜΜ

Τίτλος: Φυσικη γλωσσα κατα βηματα
Αποστολή από: theoni στις 31 Μαΐου 2017, 10:36:09 ΜΜ
Καλησπέρα σας μια ερώτηση θέλω να κάνω σε μια άσκηση του περσινού οεφε  η ασκηση ελεγε να μετατρέψετε απο φυσική γλώσσα σε ισοδύναμο  αλγοριθμο με τη χρήση δομημενου προγραμματισμού
Βημα 1:διαβασε α,β
Βημα 2:αν α>0 και β>0τοτε πήγαινε στο βημα 3αλλιώς πήγαινε στο βήμα1
Βημα 3:s<--0
B ημα 4:αν βmod2=1 τοτε πηγαινε στο βήμα 5 αλλιώς  πήγαινε στο βήμα 6
Βημα 5: s<--s+α
Βημα 6: α<--α*2
Βημα7:β<--βdiv2
Βημα8: αν β=0τοτε πήγαινε στο βημα 9 αλλιως πηγαινε στο βημα 4
Βημα9:εμφανισε s
Οι επισημες λύσεις δίνουν σαν απάντηση
Αρχη επαναληψης
  Διαβασε α,β
Μεχρις οτου α>0 και β>0
S<--0
Αρχη επαναληψης
   Αν β mod2=1 τοτε
       S<--s+α
   Τελος αν
   α<-- α*2
   Β<--βdiv2
Μεχρις οτου β=0
Εμφανισε s
  Η ερώτηση μου είναι η εξής γιατί χρησιμοποιεί αν τελος αν και οχι αν αλλιως  τελος αν το τεταρτο βήμα με μπερδεύει
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: bagelis στις 31 Μαΐου 2017, 10:52:04 ΜΜ
Το βήμα 6 θα εκτελεστεί ούτως ή άλλως ανεξαρτήτως της τιμής της συνθήκης του βήματος 4.
Αν η συνθήκη στο βήμα 4 είναι ψευδής τότε θα εκτελεστεί το 6
Αν η συνθήκη στο βήμα 4 είναι αληθής τότε θα εκτελεστεί το 5 και ακολούθως το 6
Άρα το 6 εκτελείται πάντα, άρα είναι έξω από το ΑΝ

Απλά ακόμα και σαν αδόμητος προγραμματισμός έτσι όπως γράφτηκε αρχικά δεν θα το έκανε (φαντάζομαι) κανείς εκείνη την εποχή γιατί μπορεί να γραφεί εξ' αρχής ως:

Bημα 4:αν βmod2=1 τοτε s<--s+α

Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: theoni στις 31 Μαΐου 2017, 11:24:10 ΜΜ
Πως θα ήταν  η φυσκικη γλώσσα  γραμμένη για να χρησιμοποιούσα αν  αλλιως;;;;
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: bugman στις 01 Ιουν 2017, 12:05:30 ΠΜ
Υπάρχει ο τελεστής Όχι (ή Not) οπότε μια ΑΝ όχι Α>5 τότε ...Όμως σε ορισμένες γλώσσες πιάνει το If (συνθήκη) Else...
Το ΟΧΙ μπορεί να είναι σύμβολο (έτσι είναι στη C και στη Java)
https://stackoverflow.com/questions/4775379/using-not-operator-in-if-conditions
https://www.tutorialspoint.com/cprogramming/c_operators.htm δες τo logical not
Το Όχι, ή Not λέγεται unary operator επειδή μπορεί να υπάρχει στην αρχή έκφρασης (ενώ πχ το DIV δεν ανήκει σε αυτούς τους τελεστές γιατί θέλει αριστρά και δεξιά έκφραση).
https://en.wikipedia.org/wiki/Unary_operation
Επίσης λέγεται logical negation https://en.wikipedia.org/wiki/Negation
Στη φυσική γλώσσα θα ήταν Αν οχι το α μεγαλύτερο β τότε... (δεν μπορεί να γίνει Αν α μεγαλύτερο β διαφορετικά, δεν στέκει συντακτικά στη φυσική γλώσσα)

Πάντως στην άσκηση είναι επίτηδες τα βήματα έτσι που δεν χρειάζεται μια τέτοια δομή με όχι. Και εκεί είναι το "δύσκολο" της άσκησης, να κατανοήσει κανείς τη πραγματική ροή και να την ταιριάξει σε πρόγραμμα.
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: petrosp13 στις 01 Ιουν 2017, 01:15:41 ΠΜ
Παράθεση από: theoni στις 31 Μαΐου 2017, 11:24:10 ΜΜ
Πως θα ήταν  η φυσκικη γλώσσα  γραμμένη για να χρησιμοποιούσα αν  αλλιως;;;;

Bημα 4:αν βmod2=1 τοτε πηγαινε στο βήμα 5 αλλιώς  πήγαινε στο βήμα 7
Βημα 5: s<--s+α
Βήμα 6: Πήγαινε στο βήμα 8
Βημα 7: α<--α*2
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: gthal στις 01 Ιουν 2017, 09:53:17 ΠΜ
Μια ιδέα είναι να φτιάχνεις το διάγραμμα ώστε να καταλάβεις πραγματικά τη ροή
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: petrosp13 στις 01 Ιουν 2017, 10:56:53 ΠΜ
Μια καλύτερη ιδέα είναι να μην ξαναζητηθεί ποτέ τέτοιο αναχρονιστικό θέμα
>:D >:D >:D
Τίτλος: Απ: Φυσικη γλωσσα κατα βηματα
Αποστολή από: gthal στις 01 Ιουν 2017, 11:04:10 ΠΜ
χαχαχα
Συμφωνώ τα μάλα !