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

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: droopy στις 05 Απρ 2008, 11:03:59 ΜΜ

Τίτλος: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: droopy στις 05 Απρ 2008, 11:03:59 ΜΜ
ΔΤ1 ΚΕΦΑΛΑΙΟ 6 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ

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

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

ΟΣΟ συνθηκη_1 και ΟΧΙ(συνθηκη_3) ΕΠΑΝΑΛΑΒΕ
  εντολη_2
  εντολη_5
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ συνθηκη_1=αληθης τοτε
εντολη_2
εντολη_4
τελος_αν
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: alkisg στις 05 Απρ 2008, 11:48:10 ΜΜ
Δεν είναι σωστή. Ένα παράδειγμα είναι π.χ. αν η συνθήκη_3 γίνει ΑΛΗΘΗΣ, ενώ η συνθήκη_1 παραμείνει ΨΕΥΔΗΣ.
Τότε στο αρχικό παράδειγμα εκτελείται η εντολή_4, ενώ στην παραπάνω λύση όχι.

Το βιβλίο καθηγητή προτείνει την παρακάτω λύση:
Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]

ΑΡΧΗ
  ΟΣΟ συνθήκη1 ΕΠΑΝΑΛΑΒΕ
    Εντολή2
    ΑΝ συνθήκη3 ΤΟΤΕ
      Εντολή4
      H συνθήκη1 γίνεται ΨΕΥΔHΣ
    ΑΛΛΙΩΣ
      Εντολή5
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


και ένας λογικός τρόπος να μεταφράσουμε το "Η συνθήκη1 γίνεται ΨΕΥΔΗΣ" είναι να προσθέσουμε μια boolean μεταβλητή (σημαία) στη συνθήκη1: ΟΣΟ συνθήκη1 ΚΑΙ flag=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: droopy στις 08 Απρ 2008, 06:20:38 ΜΜ
Aν η συνθήκη_1 είναι ΨΕΥΔΗΣ αυτό σημαίνει ότι δεν θα εκτελεστεί καμία εντολή στο 1ο πρόγραμμα όπως και στο δεύτερο.

Επομένως νομίζω ότι η περίπτωση που περιέγραψες δουλεύει και για τις 2 περιπτώσεις
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: alkisg στις 08 Απρ 2008, 07:27:34 ΜΜ
Σόρρυ, εννοούσα να γίνει (όχι να παραμείνει) ψευδής. Αναλυτικά:

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

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


Ένα παράδειγμα εντολής που αντιστρέφει δύο συνθήκες μαζί:
α <- 10 (ενώ πριν ήταν αρνητικός)
και οι δύο συνθήκες να είναι α < 0, α > 5.
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: droopy στις 08 Απρ 2008, 09:39:39 ΜΜ
Eυχαριστώ.
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: gpapargi στις 09 Απρ 2008, 12:58:40 ΜΜ
Η συγκεκριμένη άσκηση είναι φωτογραφία της σειριακής αναζήτησης. Οπότε καλύτερα μεταφέρεις τη γνώση της αναζήτησης και καθαρίζεις. Είναι κάτι σαν υλοποίηση break σε ψευδογλώσσα.

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

Τέλος θα ήθελα να επαναλάβω για μια ακόμα φορά ότι ασκήσεις μετατροπής αδόμητου σε δομημένο πηγαίνουν το μάθημα πολύ πίσω. Ελπίζω πως δε θα τις ξαναδούμε ποτέ σε εξετάσεις.
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: alkisg στις 23 Μαΐου 2009, 01:48:20 ΜΜ
Παράθεση από: gpapargi στις 09 Απρ 2008, 12:58:40 ΜΜ
Τέλος θα ήθελα να επαναλάβω για μια ακόμα φορά ότι ασκήσεις μετατροπής αδόμητου σε δομημένο πηγαίνουν το μάθημα πολύ πίσω. Ελπίζω πως δε θα τις ξαναδούμε ποτέ σε εξετάσεις.

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

(http://imgs.xkcd.com/comics/goto.png)
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: nikosx στις 23 Μαΐου 2009, 07:36:31 ΜΜ
 ;D ;D ;D ;D
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: tsakmaki στις 24 Μαΐου 2009, 10:40:48 ΠΜ
Δείτε κι αυτό:

ΑΡΧΗ
ΛΟΓΙΚΗ<--ΣΥΝΘΗΚΗ1
ΟΣΟ ΛΟΓΙΚΗ ΕΠΑΝΑΛΑΒΕ
  ΕΝΤΟΛΗ 2
  ΑΝ ΣΥΝΘΗΚΗ 3 ΤΟΤΕ
      ΕΝΤΟΛΗ 4
      ΛΟΓΙΚΗ<--ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
      ΕΝΤΟΛΗ 5
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: vistrian στις 24 Μαΐου 2009, 11:15:28 ΠΜ
f<-Ψευδής
ΟΣΟ συνθηκη_1 και f=Ψευδής ΕΠΑΝΑΛΑΒΕ
   εντολη_2
     ΑΝ συνθηκη_3 ΤΟΤΕ
        εντολη_4
        f<-Αληθής
     ΑΛΛΙΩΣ
        εντολη_5
     ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: tsakmaki στις 24 Μαΐου 2009, 11:23:00 ΠΜ
ΟΚ
Αλλά πες μου αν υπάρχει κάτι που σ`ενοχλεί στη λύση που παρέθεσα
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: evry στις 24 Μαΐου 2009, 11:27:57 ΠΜ

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

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

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

φυσικά και μου φαίνεται λογικό, δε λέω αλλά το έχει δει κανείς πουθενά στο διδακτικό πακέτο?
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: tsakmaki στις 24 Μαΐου 2009, 11:49:33 ΠΜ
ΑΡΧΗ
ΛΟΓΙΚΗ<--ΣΥΝΘΗΚΗ1
ΟΣΟ ΛΟΓΙΚΗ=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
  ΕΝΤΟΛΗ 2
  ΑΝ ΣΥΝΘΗΚΗ 3 ΤΟΤΕ
      ΕΝΤΟΛΗ 4
      ΛΟΓΙΚΗ<--ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
      ΕΝΤΟΛΗ 5
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ετσι είναι καλύτερα. Συμφωνώ. Αν και ο στόχος δεν ήταν αυτός αλλα απλά να μην προσθέσω επιπλέον συνθήκη στην ΟΣΟ.
Πέρα απ` το διδακτικό πακέτο δεν αποκλείω να πέσει κάτι σαν ..  ΑΝ flag ΤΟΤΕ..
Θάθελα τη γνώμη σας
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: Laertis στις 24 Μαΐου 2009, 05:57:47 ΜΜ
Δε νομίζω ... Πιθανότερο βλέπω να βάζουν στη θεωρία τι είναι σημαία (flag) και γιατί τη χρησιμοποιούμε (Κεφ.8 ) 8)
Τίτλος: Απ: ΑΣΚΗΣΗ ΔΤ1 KEΦΑΛΑΙΟ 6 (GOTO)
Αποστολή από: P.Tsiotakis στις 24 Μαΐου 2009, 06:42:37 ΜΜ
Σημαία είναι το σύμβολο κάθε κράτους και το χρησιμοποιούμε κυρίως για τα αμφίβια (όσα έμβυα όντα έχουν βρόχους ή βρόγχους)