ΕΚΤΕΛΕΣΙΜΟ ΜΕ ΛΟΓΙΚΑ ΛΑΘΗ;

Ξεκίνησε από vasiko, 16 Απρ 2007, 09:07:43 ΠΜ

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

vasiko

Καλημέρα.
  Η πρόταση "Ένα πρόγραμμα που περιέχει λογικά λάθη είναι εκτελέσιμο" θεωρείτε ότι είναι σωστή ή λάθος ;
Ευχαριστώ.

gpapargi

Αν έχει και συντακτικά λάθη τότε δεν είναι εκτελέσιμο. Αν δεν έχει τότε μπορεί να εκτελεστεί και να δώσει λάθος αποτελέσματα σε σχέση με αυτό που ζητάμε.

petrosp13

Ένα πρόγραμμα που έχει λογικά λάθη είναι εξ ορισμού εκτελέσιμο, αφού
ΠαράθεσηΤα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση,...
(Σχ. βιβλίο, σελ. 138, τελευταία παράγραφος, τελευταία πρόταση)
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

EleniK

p.x. Μο<-α+β/2
Υπολογίζει το ΜΟ 2 αριθμών. Εχω λογικό λάθος, όμως το πρόγραμμα εκτελείται. Όπως όταν ζητάμε ελάχιστο 100 θετικών αριθμών και κάποιος θέσει αρχική τιμή το -100. Θα εκτελεστεί το πρόγραμμα παρόλο το λογικό λάθος.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

gpapargi

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

lsourtzo

Παράθεση από: vasiko στις 16 Απρ 2007, 09:07:43 ΠΜ
Καλημέρα.
  Η πρόταση "Ένα πρόγραμμα που περιέχει λογικά λάθη είναι εκτελέσιμο" θεωρείτε ότι είναι σωστή ή λάθος ;
Ευχαριστώ.
σωστό ...
τα είπαν ποίο πάνω ... μην τα πούμε πάλι ...
αλλά εκτελείτε σίγουρα ...

gpapargi

Υποθέτω πως έχουμε το δικαίωμα για ενστάσεις/απορίες έτσι;

Έστω ότι θέλω να φτιάξω ένα πρόγραμμα που διαβάζει και προσθέτει 2 αριθμούς και γράφω το εξής:

Πρόγραμμα Άθροισμα
Μεταβλητές
Ακέραιες: α,β,Σ

Αρχή
Διάβασε α,β
Σ<- α*β             ! Αντί για + βάζω * (λογικό λάθος)
Γράψε 'Το άθροισμα είναι ' Σ  ! Ξεχνάω το κόμμα μετά το μονό εισαγωγικό (συντακτικό λάθος)

Τέλος_προγράμματος

Το παραπάνω πρόγραμμα έχει λογικό λάθος γιατί αντί για πρόσθεση κάνω πολλαπλασιασμό. Αλλά δεν είναι εκτελέσιμο επειδή έχει και συντακτικό λάθος. ʼρα έχω ένα πρόγραμμα με λογικό λάθος που δεν είναι εκτελέσιμο. Δεν είπα ότι το λογικό λάθος είναι η αιτία για το ότι δεν είναι εκτελέσιμο. Χάνω κάτι στο συλλογισμό;

lsourtzo

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

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

Μου θύμισες ένα περιστατικό που μου έτυχε πριν μερικά χρόνια στο μετρό …
Κάποτε πείρα το ποδήλατο μου, και πήγα να μπω στο μετρό, με σταματάει ένα επιστάτης εκεί και μου λέει … απαγορεύετε το ποδήλατο …
Του λέω και εγώ ότι δεν υπάρχει ταμπέλα να το λέει …
Και με αποστομώνει … ούτε απαγορεύονται τα τρακτέρ υπάρχει ταμπέλα, θα έρθεις να μπεις με τρακτέρ ??  :D

Ελπίζω να καταλαβαίνεις τι θέλω να πω…

Η ερώτηση προσπαθεί να εξετάσει το γεγονός αν ένα λογικό λάθος παρεμποδίζει την εκτέλεση του προγράμματος … νομίζω ότι οποιαδήποτε περαιτέρω υπόθεση είναι ακραία …

lsourtzo

Παράθεση από: lsourtzo στις 17 Απρ 2007, 12:41:25 ΜΜ
σωστό ...
τα είπαν ποίο πάνω ... μην τα πούμε πάλι ...
αλλά εκτελείτε σίγουρα ...
Παράθεση από: gpapargi στις 18 Απρ 2007, 09:54:35 ΠΜ
Υποθέτω πως έχουμε το δικαίωμα για ενστάσεις/απορίες έτσι;
Off topic:
Αυτήν την απάντηση την είχα γράψει πολύ ώρα πριν την στείλω .. απλά λόγο δουλείας άργησα να πατήσω το αποστολή…οπότε όταν απάντησα, δεν είχα λάβει υπόψη την δική σου πρώτη απάντηση.  :-\
Ακόμα αμφισβητώ αυτό που είπες μεν ... αλλά ποτέ δεν θα το έκανα με τέτοιο τρόπο  :-[ ... τώρα που απάντησες κατάλαβα τι είχε συμβεί και απλά ήθελα να το διευκρινίσω για να μην υπάρξει κάποια παρεξήγηση.   ;)


gpapargi

Όλα καλά, δεν υπάρχει πρόβλημα  :)

Για το θέμα της εκφώνησης… ασφαλώς και καταλαβαίνω τι θέλεις να πεις. Είναι πολύ συνηθισμένο φαινόμενο οι διαφορετικές ερμηνείες σε Σωστό-Λάθος.

Ένας συνάδελφος που του έδειξα την πρόταση την ερμήνευσε ως εξής:
«Ένα πρόγραμμα που περιέχει λογικά λάθη είναι υποχρεωτικά εκτελέσιμο» και απάντησε με Λάθος.
Η ερμηνεία που έδωσες εσύ (και θεωρώ και πιο λογική) είναι:
« Ένα πρόγραμμα που περιέχει λογικά λάθη μπορεί (δηλαδή υπάρχει περίπτωση) να είναι εκτελέσιμο»

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

Δεν είναι ενιαίος τρόπος σκέψης άλλοτε να σκεφτόμαστε πονηρά και άλλοτε να  σκεφτόμαστε… ας πούμε… «φυσιολογικά». Για αυτό πιστεύω πως η εκφώνηση πρέπει να είναι απόλυτα σαφής. Σχεδόν κάθε χρόνο στις εξετάσεις πέφτει ένα θέμα Σ-Λ που σηκώνει διαφορετικές ερμηνείες. Και εγώ έχω θέσει τέτοιο ερώτημα στην τάξη και κάποιος έδωσε διαφορετική ερμηνεία από αυτή που έδινα εγώ αλλά εξίσου λογική. Δεν έβρισκα πραγματικό επιχείρημα για να στηρίξω ότι έχει κάνει λάθος, μόνο την υποκειμενική μου εκτίμηση. Θα ήταν αυθαίρετο να θεωρήσω λάθος την ερμηνεία του.

Κατά τη γνώμη μου το συγκεκριμένο ερώτημα ήθελε πιο σαφή διατύπωση.



lsourtzo

Καθόλου δεν διαφωνώ μαζί σου … σαφώς και θα μπορούσε να έχει καλύτερη εκφώνηση … από την άλλη όμως έχουμε και ποιο κραυγαλέα παραδείγματα από αυτό …
Ας θυμηθούμε το θέμα πριν μερικά χρόνια με το ποιο κριτήριο του ορισμού του αλγόριθμου παραβιάζετε αν βάλουμε βήμα 0 σε μία επανάληψη Για …
Που ακόμα και σήμερα δεν υπάρχει επαρκής εξήγηση που μπορείς να δώσεις τα παιδία του γιατί είναι η καθορηστικότητα και όχι η περατότητα ή ανάποδα .. και γιατί να μην είναι η αποτελεσματικότητα … κτλ κτλ

Εγώ γενικά έχω πει στα παιδία μου, να μην ξεφεύγουν τόσο πολύ από το αυτονόητο .. γιατί είναι επικίνδυνο …

Μάλιστα πιστεύω ότι αν τελικά ερωτηθεί κάτι με τόσο άσχημο τρόπο  που να παίρνει τόσο έντονα 2 απαντήσεις … τότε θα υπάρχει και αντίστοιχη οδηγία προς τους διορθωτές να πιάσουν σωστά και τις 2 απαντήσεις.

ace17

Παράθεση από: lsourtzo στις 17 Απρ 2007, 12:41:25 ΜΜ
Παράθεση από: vasiko στις 16 Απρ 2007, 09:07:43 ΠΜ
Καλημέρα.
  Η πρόταση "Ένα πρόγραμμα που περιέχει λογικά λάθη είναι εκτελέσιμο" θεωρείτε ότι είναι σωστή ή λάθος ;
Ευχαριστώ.
σωστό ...
τα είπαν ποίο πάνω ... μην τα πούμε πάλι ...
αλλά εκτελείτε σίγουρα ...


Γεια σας και απο μένα. Είναι το πρώτο μου post...

Συμφωνώ και εγώ.... όλα τα λογικά λάθη εκτελούνται... εκτός βέβαια από την εξέρεση που επιβεβαιώνει τον κανόνα.
Για να γίνω πιο σαφής... Επαναληπτικές εξετάσεις 2003, Θέμα 1

Διάβασε α,β
     Αν α>β τότε
          c<- α/(β-2)
     Τέλος_αν
      Εκτύπωσε c

H εντολή c<- α/(β-2) είναι συντακτικά σωστή. Αν όμως το β πάρει την τιμή 0 τότε έχουμε ένα λογικό λάθος.
Σαν λογικό θα εκτελεστεί ή θα έχουμε μήνυμα της μορφής... 'devide by zero' ????

καλές εξετάσεις...







lsourtzo

#12
στην ουσία και σε αυτήν την περίπτωση το πρόγραμμα θα ξεκινήσει να εκτελείτε μέχρι εκείνο το σημείο ...
σύμφωνα με τους ορισμούς των λογικών και συντακτικών λαθών στο τέλος του κεφαλαίου 6 ... έτσι τα διαφοροποιεί ...
συντακτικά - το πρόγραμμα δεν ξεκινάει καν να εκτελείτε εντοπίζονται κατά την διάρκεια της μετάφρασης ..
λογικά - το πρόγραμμα εκτελείτε και παρατηρούνται και την διάρκεια τις εκτέλεσης ..

άρα ένα πρόγραμμα με λογικά λάθη εκτελείτε ... τουλάχιστον μέχρι το λάθος ..


petrosp13

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

lsourtzo

Παράθεση από: lsourtzo στις 20 Απρ 2007, 02:37:58 ΜΜ
σύμφωνα με τους ορισμούς των λογικών και συντακτικών λαθών στο τέλος του κεφαλαίου 6 ... έτσι τα διαφοροποιεί ...
συντακτικά - το πρόγραμμα δεν ξεκινάει καν να εκτελείτε εντοπίζονται κατά την διάρκεια της μετάφρασης ..
λογικά - το πρόγραμμα εκτελείτε και παρατηρούνται και την διάρκεια τις εκτέλεσης ..

άρα ένα πρόγραμμα με λογικά λάθη εκτελείτε ... τουλάχιστον μέχρι το λάθος ..



;)