ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)

Ξεκίνησε από droopy, 05 Απρ 2008, 11:03:59 ΜΜ

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

droopy

ΔΤ1 ΚΕΦΑΛΑΙΟ 6 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ

ΟΣΟ συνθηκη_1 ΕΠΑΝΑΛΑΒΕ
   εντολη_2
     ΑΝ συνθηκη_3 ΤΟΤΕ
        εντολη_4
        GOTO !Label
     ΑΛΛΙΩΣ
        εντολη_5
     ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Label

θα ήθελα να σχολιάσετε την παρακάτω λύση:

ΟΣΟ συνθηκη_1 και ΟΧΙ(συνθηκη_3) ΕΠΑΝΑΛΑΒΕ
  εντολη_2
  εντολη_5
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ συνθηκη_1=αληθης τοτε
εντολη_2
εντολη_4
τελος_αν

alkisg

Δεν είναι σωστή. Ένα παράδειγμα είναι π.χ. αν η συνθήκη_3 γίνει ΑΛΗΘΗΣ, ενώ η συνθήκη_1 παραμείνει ΨΕΥΔΗΣ.
Τότε στο αρχικό παράδειγμα εκτελείται η εντολή_4, ενώ στην παραπάνω λύση όχι.

Το βιβλίο καθηγητή προτείνει την παρακάτω λύση:
Κώδικας: ΓΛΩΣΣΑ
ΑΡΧΗ
  ΟΣΟ συνθήκη1 ΕΠΑΝΑΛΑΒΕ
    Εντολή2
    ΑΝ συνθήκη3 ΤΟΤΕ
      Εντολή4
      H συνθήκη1 γίνεται ΨΕΥΔHΣ
    ΑΛΛΙΩΣ
      Εντολή5
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


και ένας λογικός τρόπος να μεταφράσουμε το "Η συνθήκη1 γίνεται ΨΕΥΔΗΣ" είναι να προσθέσουμε μια boolean μεταβλητή (σημαία) στη συνθήκη1: ΟΣΟ συνθήκη1 ΚΑΙ flag=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ

droopy

Aν η συνθήκη_1 είναι ΨΕΥΔΗΣ αυτό σημαίνει ότι δεν θα εκτελεστεί καμία εντολή στο 1ο πρόγραμμα όπως και στο δεύτερο.

Επομένως νομίζω ότι η περίπτωση που περιέγραψες δουλεύει και για τις 2 περιπτώσεις

alkisg

Σόρρυ, εννοούσα να γίνει (όχι να παραμείνει) ψευδής. Αναλυτικά:

Μπαίνουμε στο loop με συνθήκη_1 = αληθής και συνθήκη_3 = ψευδής.
Και έστω ότι η εντολή_2 αντιστρέφει και τις δύο συνθήκες και τις κάνει
συνθήκη_1 = ψευδής, συνθήκη_3 = αληθής.

Στην πρώτη περίπτωση θα εκτελεστούν: εντολή_2, εντολή_4.
Στη δεύτερη περίπτωση θα εκτελεστούν: εντολή_2, εντολή_5.


Ένα παράδειγμα εντολής που αντιστρέφει δύο συνθήκες μαζί:
α <- 10 (ενώ πριν ήταν αρνητικός)
και οι δύο συνθήκες να είναι α < 0, α > 5.

droopy


gpapargi

Η συγκεκριμένη άσκηση είναι φωτογραφία της σειριακής αναζήτησης. Οπότε καλύτερα μεταφέρεις τη γνώση της αναζήτησης και καθαρίζεις. Είναι κάτι σαν υλοποίηση break σε ψευδογλώσσα.

Επίσης νομίζω πως στο συγκεκριμένο παράδειγμα ένα διάγραμμα ροής δεν μπορεί να βοηθήσει.

Τέλος θα ήθελα να επαναλάβω για μια ακόμα φορά ότι ασκήσεις μετατροπής αδόμητου σε δομημένο πηγαίνουν το μάθημα πολύ πίσω. Ελπίζω πως δε θα τις ξαναδούμε ποτέ σε εξετάσεις.

alkisg

Παράθεση από: gpapargi στις 09 Απρ 2008, 12:58:40 ΜΜ
Τέλος θα ήθελα να επαναλάβω για μια ακόμα φορά ότι ασκήσεις μετατροπής αδόμητου σε δομημένο πηγαίνουν το μάθημα πολύ πίσω. Ελπίζω πως δε θα τις ξαναδούμε ποτέ σε εξετάσεις.

...τώρα κατάλαβα τι εννοούσε ο Γιώργος:  ;D  >:D


nikosx

Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

tsakmaki

Δείτε κι αυτό:

ΑΡΧΗ
ΛΟΓΙΚΗ<--ΣΥΝΘΗΚΗ1
ΟΣΟ ΛΟΓΙΚΗ ΕΠΑΝΑΛΑΒΕ
  ΕΝΤΟΛΗ 2
  ΑΝ ΣΥΝΘΗΚΗ 3 ΤΟΤΕ
      ΕΝΤΟΛΗ 4
      ΛΟΓΙΚΗ<--ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
      ΕΝΤΟΛΗ 5
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

vistrian

f<-Ψευδής
ΟΣΟ συνθηκη_1 και f=Ψευδής ΕΠΑΝΑΛΑΒΕ
   εντολη_2
     ΑΝ συνθηκη_3 ΤΟΤΕ
        εντολη_4
        f<-Αληθής
     ΑΛΛΙΩΣ
        εντολη_5
     ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
VR in Computing

tsakmaki

ΟΚ
Αλλά πες μου αν υπάρχει κάτι που σ`ενοχλεί στη λύση που παρέθεσα

evry


  Θα πω εγώ τι με ενοχλεί

Μπορούμε να γράψουμε

ΙΣΧΥΕΙ <- ΑΛΗΘΗΣ
ΟΣΟ ΙΣΧΥΕΙ ΕΠΑΝΑΛΑΒΕ
αντί για
ΟΣΟ ΙΣΧΥΕΙ=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ

φυσικά και μου φαίνεται λογικό, δε λέω αλλά το έχει δει κανείς πουθενά στο διδακτικό πακέτο?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tsakmaki

ΑΡΧΗ
ΛΟΓΙΚΗ<--ΣΥΝΘΗΚΗ1
ΟΣΟ ΛΟΓΙΚΗ=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
  ΕΝΤΟΛΗ 2
  ΑΝ ΣΥΝΘΗΚΗ 3 ΤΟΤΕ
      ΕΝΤΟΛΗ 4
      ΛΟΓΙΚΗ<--ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
      ΕΝΤΟΛΗ 5
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ετσι είναι καλύτερα. Συμφωνώ. Αν και ο στόχος δεν ήταν αυτός αλλα απλά να μην προσθέσω επιπλέον συνθήκη στην ΟΣΟ.
Πέρα απ` το διδακτικό πακέτο δεν αποκλείω να πέσει κάτι σαν ..  ΑΝ flag ΤΟΤΕ..
Θάθελα τη γνώμη σας

Laertis

#13
Δε νομίζω ... Πιθανότερο βλέπω να βάζουν στη θεωρία τι είναι σημαία (flag) και γιατί τη χρησιμοποιούμε (Κεφ.8 ) 8)
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

P.Tsiotakis

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