Συντακτικά και Λογικά λάθη

Ξεκίνησε από Νίκος Αδαμόπουλος, 23 Απρ 2009, 12:51:37 ΠΜ

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

Νίκος Αδαμόπουλος

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

ΜΟ <- α+β+γ/3  ! (για υπολογισμό του μέσου όρου)

Στο παραπάνω προσθέτω, λοιπόν, τρια ακόμα παραδείγματα που πιστεύω ότι θα μπέρδευαν τους μαθητές:

α)

β<-χ+ψ   ! (χωρίς να έχει πάρει τιμή η μεταβλητή χ)


β)

ΜΟ <- άθροισμα/πλήθος  ! (και ενώ το πλήθος δεν αποκλείεται να έχει την τιμή 0)


γ)

S<-0
i<-1
Όσο i<=100 επανάλαβε
  S<-S+i
Τέλος_επανάληψης
Εμφάνισε S

dipa57

Στο β) να προσθέσω και το ότι, όταν ο ΜΟ να αναφέρεται σε ΑΚΕΡΑΙΕΣ ποσότητες, τον θεωρούν ΑΚΕΡΑΙΑ μεταβλητή.
Δημήτρης Παπακωνσταντίνου
1110010100 1110110111 1110111100 1110101110 1111000100 1111000001 1110110111 1111000010

tanius76

Γεια και χαρά παιδιά! ;)
και χρόνια Πολλά!

Παραθέτω την παρακάτω πρόταση Σ ή Λ νομίζετε ότι πρέπει να βάλουμε.

1.   Η χρήση κλασματικής παράστασης σε μια εντολή , που ο παρονομαστής της για κάποιες τιμές μεταβλητών που περιέχονται στην παράσταση μπορεί να μηδενίζεται , αποτελεί λογικό λάθος.
?????
περιμένω τις απαντήσεις σας???

Καρκαμάνης Γεώργιος

Σ.
Πρέπει ο προγραμματιστής να φροντίσει να ελέγξει τις μεταβλητές του παρονομαστή, ώστε να μην τον μηδενίζουν.

Νίκος Αδαμόπουλος

Παράθεση από: tanius76 στις 29 Απρ 2009, 12:24:16 ΠΜ
Η χρήση κλασματικής παράστασης σε μια εντολή , που ο παρονομαστής της για κάποιες τιμές μεταβλητών που περιέχονται στην παράσταση μπορεί να μηδενίζεται, αποτελεί λογικό λάθος.

Ο μεταγλωττιστής θα το μεταγλωττίσει, δεν θα έχει πρόβλημα...
Το πρόβλημα θα φανεί κατά την εκτέλεση... Άρα είναι λογικό λάθος!

Αυτό εννοούσα και με το β) παράδειγμα στο αρχικό μήνυμα...

P.Tsiotakis

Εμένα δε μου αρέσει η ερώτηση.
Άρα θεωρώ την ερώτηση Λάθος :D

evry

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

tanius76

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

Νίκος Αδαμόπουλος

Παράθεση από: tanius76 στις 29 Απρ 2009, 10:33:14 ΜΜ
4.   Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος.
(επαν πανελλήνιες 2002)
είναι σωστό οπως δώθηκε απο πανελλήνιες.
εμένα η απορία μου είναι πώς έαν έχω χρήση κλασματικής παράστασης σε μια εντολή
που ο παρονομαστής της για κάποιες τιμές μεταβλητών που περιέχονται στην παράσταση μπορεί να μηδενίζεται , εφόσον το θεωρούμε λογικό λάθος) τότε διακόπτεται η εκτέλεση του προγράμματος .
???

Ναι, αυτή η απορία είναι λογική, αν και όχι ξεκάθαρα διατυπωμένη (εννοώ η απορία!)...

Καρκαμάνης Γεώργιος

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

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

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

Αντίθετα ένα λογικό λάθος, δεν έχει να κάνει με την λανθασμένη σύνταξη μιας εντολής.( Η εντολή μπορεί να εκτελείται κανονικά ή να μην εκτελείται για ορισμένες μόνο τιμές των μεταβλητών αλλά να μην δίνει να αναμενόμενα αποτελεσματα.)

Στηριζόμενοι σε αυτο σκεπτικό μπορουμε να χαρακτηρίσουμε την πρόταση ως Σ

lykos

Η απάντηση είναι Σ, αν και κατά την γνώμη μου η ερώτηση
ΠαράθεσηΗ χρήση κλασματικής παράστασης σε μια εντολή , ...
θάπρεπε νάναι: "Η χρήση κλασματικής παράστασης σε μια αριθμητική έκφραση, ..."

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

Δεν διακόπτεται οπωσδήποτε! Μπορεί να διακοπεί... (αν παρονομαστής = 0)
Ενώ σε συντακτικό λάθος διακόπτεται - πάντα! - ή μεταγλώττιση (όχι η εκτέλεση!)


P.Tsiotakis

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

Εφόσον δεν υπάρχουν στην φαρέτρα μας, πρέπει να επιλέγουμε πάντα μεταξύ συντακτικών και λογικών;

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

Χωρίς να αντικρούω τις παραπάνω αναφορές στα λογικά λάθη, θα προτιμούσα μόνο τέτοια που να εκτελούνται πέραν πάσης αμφιβολίας , αλλά να οδηγούν σε λανθασμένα αποτελέσματα. όπως το άθροισμα πίνακα και η διαίρεση με ΛΑΘΟΣ πλήθος για τον υπολογισμό του μέσου όρου.

pgrontas

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

Παράθεση από: tanius76 στις 29 Απρ 2009, 10:33:14 ΜΜ
4.   Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος.
(επαν πανελλήνιες 2002)
είναι σωστό οπως δώθηκε απο πανελλήνιες.

H ερώτηση είναι προβληματική. Η ερμηνεία της εξαρτάται από το πού πάει το συνήθως. Αν πάει μόνο στο λάθη σχεδιασμού, τότε η απάντηση είναι λάθος, γιατί ένα λογικό λάθος ναι μεν οφείλεται σε λάθος σχεδιασμό, αλλά μπορεί να προκαλέσει τον τερματισμό του προγράμματος.
Αν το συνήθως πάει σε όλη την υπόλοιπη πρόταση (που δεν κάθεται καλά συντακτικά εκτός αν το 'και' το ερμηνεύσουμε ως 'που') κλίνω προς το σωστό, αλλά πάλι είναι διφορούμενο (ποια είναι πιο πολλά τα προγράμματα : με λογικό λάθος που διακόπτουν ή αυτά που δεν διακόπτουν και πώς μπορεί ο μαθητής να το ξέρει).
Άλλη μια προσεγμένη επιλογή...
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

tanius76

Ευχαριστώ πολύ για τις απαντήσεις σας!
Πιστεύω ότι το αναλύσαμε  καλά το θέμα!

Με εκτίμηση Τάνια

Γιαννούλης Γιώργος

Παράθεση από: Καρκαμάνης Γεώργιος στις 30 Απρ 2009, 08:53:05 ΠΜ
Αντίθετα ένα λογικό λάθος, δεν έχει να κάνει με την λανθασμένη σύνταξη μιας εντολής.( Η εντολή μπορεί να εκτελείται κανονικά ή να μην εκτελείται για ορισμένες μόνο τιμές των μεταβλητών αλλά να μην δίνει να αναμενόμενα αποτελεσματα.)


Δηλαδή αν μέσα στον κώδικα έχω κάπου αυτό :
χ<--α/0
τότε είναι λογικό η συντακτικό λάθος.
Πότε δεν πρόκειτε να δουλέψει. Παρόλα αυτά δεν το θεωρώ συντακτικό λάθος μιας και η σύνταξη του είναι ορθή. Διαιρεί μία μεταβλητή με μία σταθερα και την αναθέτει σε μια άλλη μεταβλητή...