κάθε εμφωλευμένη ΑΝ γίνεται και με απλές ΑΝ;

Ξεκίνησε από dionissis, 30 Απρ 2010, 09:49:36 ΠΜ

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

dionissis

Αυτό δεν ισχυέι πάντοτε, όπως στο παρακάτω παράδειγμα:

ΑΝ Χ <> 0 ΚΑΙ Υ<> 0 ΤΟΤΕ
   ΑΝ Χ MOD Υ = 0 Ή Υ MOD X = 0 ΤΟΤΕ
       ΓΡΑΨΕ 'ΠΟΛΛΑΠΛΑΣΙΑ'
   ΑΛΛΙΩΣ
       ΓΡΑΨΕ 'ΟΧΙ ΠΟΛΛΑΠΛΑΣΙΑ'
   ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
   ΓΡΑΨΕ 'ΚΑΠΟΙΟΣ ΜΗΔΕΝ'
ΤΕΛΟΣ_ΑΝ

evry

Δεν κατάλαβα, το παρακάτω εννοείς?

ΑΝ (Χ <> 0 ΚΑΙ Υ<> 0) ΚΑΙ (Χ MOD Υ = 0 Ή Υ MOD X = 0) ΤΟΤΕ
   ΓΡΑΨΕ 'ΠΟΛΛΑΠΛΑΣΙΑ'
ΤΕΛΟΣ_ΑΝ

ΑΝ (Χ <> 0 ΚΑΙ Υ<> 0) ΚΑΙ (Χ MOD Υ <> 0 ΚΑΙ Υ MOD X <> 0) ΤΟΤΕ
   ΓΡΑΨΕ 'ΟΧΙ ΠΟΛΛΑΠΛΑΣΙΑ'
ΤΕΛΟΣ_ΑΝ

ΑΝ (Χ = 0 Η Υ= 0)ΤΟΤΕ
   ΓΡΑΨΕ 'ΚΑΠΟΙΟΣ ΜΗΔΕΝ'
ΤΕΛΟΣ_ΑΝ
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dionissis

Αν το Χ=0 ή το Υ=0 δεν γίνονται οι δύο πρώτες ΑΝ, αφού θα ελεγχθούν και διαιρέσεις με παρονομαστή το μηδέν (0).

evry

Είσαι σίγουρος ότι δε γίνεται?
Η δεύτερη συνθήκη δεν χρειάζεται να ελεγθεί αν η πρώτη είναι ψευδής.
Δεν λέει πουθενά ότι ισχύει στη ΓΛΩΣΣΑ κάτι τέτοιο αλλά ούτε ότι δεν ισχύει, από την υλοποίηση εξαρτάται
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dionissis

η μετατροπή αυτή σε απλές ΑΝ δεν δουλεύει ούτε στη Γλωσσομάθεια  ούτε στη Γλώσσα, αλλά απ' ότι θυμάμαι σε κάποιες γλώσσες ισχύει αυτό που λες. Το θέμα είναι τι απαντάνε οι μαθητές σε μία τέτοια ερώτηση;

Παρακαλώ θα ήθελα την γνώμη και άλλων συναδέλφων
Ευχαριστώ

sstergou

Η ερώτηση στην ουσία είναι το αν στην γλώσσα/ψευδογλώσσα έχουμε πλήρη ή μερική αποτίμηση των συνθηκών.

Είχαν γίνει διάφορες κουβέντες στο παρελθόν με την πιο διεξοδική που θυμάμαι να ήταν αυτή : https://alkisg.mysch.gr/steki/index.php?topic=752.0

Προσωπικά κατά την διδασκαλία του μαθήματος θεωρώ ότι υπάρχει πλήρης αποτίμηση των συνθηκών (π.χ. σε ασκήσεις με πίνακες όπου υπάρχει παραβίαση των ορίων)για διδακτικούς λόγους και αφού το βιβλίο αφήνει χωρίς ανάλυση το συγκεκριμένο ζήτημα.

evry

Κανονικά αποτιμώνται όλες οι συνθήκες στη ΓΛΩΣΣΑ, δεν ήθελα να αμφισβητήσω αυτό
Αυτό που ήθελα να πω είναι πως στο αντι-παράδειγμα που έδωσες για να αποδείξεις τον ισχυρισμό σου πατάς πάνω σε ένα ζήτημα που είναι θέμα "υλοποίησης"  και όχι καθαρά αλγοριθμικής. Έτσι σε μια γλώσσα που επιτρέπει short-circuit evaluation αυτό που θα έλεγες δεν ισχύει. Θα προτιμούσα ένα παράδειγμα που να ισχύει πάντου και να είναι πιο "αλγοριθμικό" ας πούμε.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

amichail

Ένα απλοϊκό παράδειγμα είναι αν έχεις μία boolean μεταβλητή που παίρνει τιμές 0 ή 1 (true ή false) και θες να την αντιστρέψεις.
Ο κώδικας:
Αν Α=0 Τότε
    Α←1
Αλλιώς_Αν Α=1
   Α←0
Τέλος_Αν
δουλεύει
ενώ ο κώδικας:
Αν Α=0 Τότε
   Α←1
Τέλος_Αν
Αν Α=1 Τότε
  Α←0
Τέλος_Αν
προφανώς δεν δουλεύει στην περίπτωση που Α=0 καθώς θα εκτελεστούν σειριακά και οι δύο εντολές.
Κρίσιμο δηλαδή είναι αν επηρεάζεται η συνθήκη από την εκτέλεση της εντολής.
Βέβαια εδώ η εμφωλευμένη Αν είναι περιττή καθώς ισχύει μόνο μία από τις δύο συνθήκες.
Τροποποιήστε για μεταβλητή με παραπάνω τιμές  :D

Για μένα θα πω μόνο ότι είμαι ο τύπος του δασκάλου που αν κάνω ένα μάθημα για 50η φορά θα αλλάξω για 52η φορά τις σημειώσεις μου

evry

Με μια απλή Αν...Τότε

Αν 1=1 Τότε
   Α <-- (Α +1) mod 2
Τέλος_Αν
:D
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

#9
Πάντως το κάθε της αρχικής ερώτησης είναι βαριά κουβέντα. Μπορεί όπως  ανέφερε ο/η amihail να σου βάλει μία εκχώρηση ή ένα διάβασε μέσα στην εξωτερική αν και πριν την εσωτερική που να τροποποιεί μία από τις μεταβλητές που συμμετέχουν στις συνθήκες. Κάτι τέτοιο δεν μπορεί να αναπαρασταθεί σε έκφραση οπότε και η εμφωλευμένη/πολλαπλή αν δεν μπορει να μετατραπεί σε απλές.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

droopy

Νομίζω ότι το παράδειγμα:
Αν Α=0 Τότε
    Α←1
Αλλιώς_Αν Α=1
   Α←0
Τέλος_Αν

μετατρέπεται με απλές αν

flag ← 1
Αν Α=0 Τότε
   Α←1
flag ← 0
Τέλος_Αν
Αν Α=1 ΚΑΙ flag = 1 ΤΟΤΕ
Α←0
Τέλος_Αν

evry

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr