Ερώτηση για την εξέταση του μαθήματος

Ξεκίνησε από DiTz, 17 Μαΐου 2006, 11:56:35 ΠΜ

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

DiTz

Καλημέρα σας,
Είμαι μαθητής της Γ Λυκείου και θα ήθελα να ρωτήσω κάτι σχετικό με την εξέταση αυτού του μαθήματος!

Εγώ έχω μάθει πάντα την απάντηση μιας άσκησης να την δίνω σε μορφή ΓΛΩΣΣΑΣ δηλαδή:
Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ ...
ΣΤΑΘΕΡΕΣ
 ...
ΜΕΤΑΒΛΗΤΕΣ
 ...
ΑΡΧΗ
 ...
 ...
 ...
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Βλέπω ομως οτι σχεδόν σε όλα τα φροντιστήρια τους λένε να γράφουν μόνο τον κώδικα χωρίς μεταβλητές σταθερές κτλ...
Απλώς με ένα ΑΡΧΗ_ΑΛΓΟΡΙΘΜΟΥ ....
και με ένα ΤΕΛΟΣ_ΑΛΓΟΡΙΘΜΟΥ

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

Ευχαριστώ πολύ!

nplatis

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

Το Υπουργείο δίνει την οδηγία ότι «Οι μαθητές θα μπορούν να διατυπώνουν τις λύσεις των ασκήσεων των εξετάσεων είτε σε οποιαδήποτε μορφή παράστασης αλγορίθμου είτε σε «ΓΛΩΣΣΑ», όπως αυτή ορίζεται και χρησιμοποιείται στο διδακτικό εγχειρίδιο.»

Επί της ουσίας, πιστεύω ότι θα είσαι εντάξει αν γράψεις «πρόγραμμα» ακόμα και αν στην εκφώνηση ζητεί «αλγόριθμο». Το αντίθετο όμως δεν θα ίσχυε, π.χ. όπου ζητάει υποπρογράμματα θα πρέπει να γράψει κάποιος «πρόγραμμα» (ΓΛΩΣΣΑ) καθώς μόνο αυτή η μορφή περιέχει τις απαραίτητες δηλώσεις μεταβλητών και παραμέτρων.

DiTz (Διαμαντής)

Ευχαριστώ πολύ για την απάντηση!!!
Και εγώ ακριβώς αυτή την αποψη έχω και πάντα γράφω πρόγραμμα για παν ενδεχόμενο!!!

Ευχαριστώ και πάλι!

nekis

ΠΡΟΣΟΧΗ!!!
ΤΟ ΑΡΧΗ_ΑΛΓΟΡΙΘΜΟΥ ΕΙΝΑΙ ΛΑΘΟΣ!!!!
ΔΕΝ ΠΕΡΙΓΡΑΦΕΤΑΙ ΠΟΥΘΕΝΑ ΣΤΟ ΒΙΒΛΙΟ ΚΑΙ ΔΕΝ ΕΙΝΑΙ ΑΠΟΔΕΚΤΟ

bagelis

Φίλε μου ,
αν δεις το θέμα 3 των περσινών Πανελληνίων θα διαπιστώσεις ότι με μορφή προγράμματος δεν μπορεί να "βγει". Χρειάζεται να γνωρίζεις να γράφεις και αλγόριθμο με //δεδομένα ...//, //αποτελέσματα ...//
Φιλικά

nplatis

Γιατί δεν μπορεί να βγει με πρόγραμμα; Αντί για //δεδομένα//, μπορεί νομίζω κάποιος να γράψει κάποιες εντολές ΔΙΑΒΑΣΕ για την εισαγωγή των πινάκων...

evry


  Δεν είναι το ίδιο. Λεπτομέρεια θα μου πεις αλλά αν το θέμα λέει "δίνεται" και κάποιος γράψει πρόγραμμα με ΔΙΑΒΑΣΕ δε νομίζω ότι θα πάρει όλο το θέμα. Κατά τη γνώμη μου το κοντινότερο στην έννοια των "δεδομένων" στην περίπτωση του προγράμματος είναι η λίστα παραμέτρων ενός υποπρογράμματος.
    Πάντως πιστεύω ότι είναι καλύτερα να ωθούμε τους μαθητές να γράφουν αλγόριθμο και όχι πρόγραμμα. Αποφεύγουμε πολλές ασάφειες και προβλήματα έτσι.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

filippos

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

Το συγκεκριμένο θέμα, με τη φράση "∆ίνεται πίνακας Α[Ν] ακέραιων και θετικών αριθμών, καθώς και πίνακας Β[Ν-1] πραγματικών και θετικών αριθμών" δε μας καθορίζει το μέγεθος των πινάκων... επομένως δεν υπάρχει τρόπος δήλωσής τους σε προγραμματιστικό περιβάλλον.  Επομένως, δεν υπάρχει τρόπος να γίνει ΠΡΟΓΡΑΜΜΑ.  ΠΩΣ θα οριζόταν οι πίνακες στο τμήμα δηλώσεων;

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α[Ν]
  ΠΡΑΓΜΑΤΙΚΕΣ: Β[Ν-1]

;;;;

Αντιλαμβένεσαι βέβαια ότι κάτι τέτοιο δεν είναι δυνατόν.

Επομένως ο αλγόριθμοςό πως δώθηκε η εκφώνηση δε θα μπορούσε να κωδικοποιηθεί σε προγραμματιστικό περιβάλλον παρά μόνο σε ψευδογλώσσα με ταυτόχρονη χρήση της δηλωτικής εντολής  Δεδομένα //Α, Β, Ν//

andreas_p

Επομένως, δεν υπάρχει τρόπος να γίνει ΠΡΟΓΡΑΜΜΑ. 

Προς :  filippos

Γιατί δεν υπάρχει ;  Το παρακάτω είναι λάθος  ;

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ   Λογική_μεταβλητή
! 04/06/2005
! Ενιαία Θέμα 3ο
ΣΤΑΘΕΡΕΣ
  Ν=5  !  βλέπε παράδειγμα θέματος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α[Ν], Ι
  ΠΡΑΓΜΑΤΙΚΕΣ: Β[Ν-1]
  ΛΟΓΙΚΕΣ: Τ
ΑΡΧΗ
! Εισαγωγή ΜΕΣΑ από το πρόγραμμα
  Α[1] ← 1
  Α[2] ← 3
  Α[3] ← 5
  Α[4] ← 10
  Α[5] ← 15
  Β[1] ← 2
  Β[2] ← 4
  Β[3] ← 7.5
  Β[4] ← 12.5
! (20)
  Τ ← ΑΛΗΘΗΣ
  Ι ← 1
  ΟΣΟ Τ=ΑΛΗΘΗΣ ΚΑΙ Ι <= Ν-1 ΕΠΑΝΑΛΑΒΕ
    ΑΝ Β[Ι] <> (Α[Ι]+Α[Ι+1])/2  ΤΟΤΕ
        Τ ← ΨΕΥΔΗΣ
    ΑΛΛΙΩΣ
         Ι ← Ι+1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ Τ=ΑΛΗΘΗΣ  ΤΟΤΕ
    ΓΡΑΨΕ 'Ο πίνακας Β  ΕΙΝΑΙ ο τρέχων μέσος του Α'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Ο πίνακας Β  ΔΕΝ ΕΙΝΑΙ ο τρέχων μέσος του Α'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ  Λογική_μεταβλητή


evry


Όταν η εκφώνηση λέει "δίνεται Ν" δε μπορείς να το θεωρήσεις σταθερά. Είναι κάτι σαν παράμετρος εισόδου. Αλλά ακόμα και τότε δεν μπορείς να του δώσεις μια αυθαίρετη τιμή όπως το 5.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

nplatis

Πιστεύω ότι με ένα επεξηγηματικό σχόλιο, της μορφής: «Στη ΓΛΩΣΣΑ πρέπει το μέγεθος των πινάκων να είναι γνωστό εξαρχής και σταθερό, γι' αυτό το θέτω σε μία σταθερά Ν και του δίνω ενδεικτικά την τιμή 5», το παραπάνω πρόγραμμα θα μπορούσε να σταθεί. Νομίζω ότι αυτό είναι ένα τεχνικό θέμα και δεν αφορά την καρδιά του θέματος, που ήταν η εξέταση αν οι πίνακες έχουν την ιδιότητα που ζητείται. Κατά τη γνώμη μου θα υπήρχε αντίστοιχο «πρόβλημα» αν κάποιος έγραφε το πρόγραμμα σε ολόσωστη Pascal (καθώς, κατά τη γνωστή οδηγία, «κάθε λύση επιστημονικά κ.λπ. κ.λπ.») οπότε αναγκαστικά θα δήλωνε μέγιστο μήκος πινάκων, ή αντίστοιχα αν σε άσκηση με πίνακες χρησιμοποιούσε μία γλώσσα που δεν χρειάζεται σταθερό μέγεθος...

Επίσης δεν καταλαβαίνω γιατί «Αποφεύγουμε πολλές ασάφειες και προβλήματα» διδάσκοντας αλγορίθμους και όχι προγράμματα, όπως λέει ο evry παραπάνω. Αντίθετα, οι αλγόριθμοι έχουν κάμποσες ασάφειες, καθώς επιτρέπουν μεγαλύτερη ελευθερία στη σύνταξη, τις οποίες η ΓΛΩΣΣΑ προσπαθεί να αντιμετωπίσει.

Δυστυχώς σε αυτό το σημείο φαίνεται ξεκάθαρο το μειονέκτημα του να υπάρχουν δύο τόσο κοντινοί αλλά ταυτόχρονα και αρκετά διαφορετικοί τρόποι έκφρασης αλγορίθμων στο μάθημα. Κατ' αρχάς, διδακτικά το βρίσκω εξαιρετικά άσχημο να πρέπει, μετά τους αλγορίθμους, να διδάξω κάτι «διαφορετικό» που διαφέρει (σχεδόν) μόνο στη δήλωση μεταβλητών (καλά δεν ήμασταν και χωρίς αυτή;!),  και στο ΓΡΑΨΕ αντί για Εμφάνισε (!) -- άσε που εδώ θα πρέπει να δηλώνω μήκος των πινάκων ενώ πριν δεν χρειαζόταν! Και τα υποπρογράμματα, γιατί αυτά δεν εκφράζονται με αλγόριθμο; Τέλος πάντων, αυτά είναι πράγματα που έχουν συζητηθεί εδώ και καιρό...n

filippos

σε (φαινομενικά) άσχετο σημείο θα επιμείνω εγώ...

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

"Κύριε, να κάνουμε αλγόριθμο ή πρόγραμμα ;;;;"  Λες και το πρόγραμμα είναι ... αντι-αλγόριθμος!

Ας προωθούμε εμείς πρώτοι τη σωστή ορολογία...:

"να κωδικοποιήσουμε σε ψευδογλώσσα ή ΓΛΩΣΣΑ;;" ή αν θέλετε "σε ψευδογλώσσα ή σε προγραμματιστικό περιβάλλον;"

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

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

Όμως καλόν είναι να τους βοηθάμε να καταλαβαίνουν ΠΩΣ πρέπει να εκφράζονται για να είναι σωστοί.

evry

@nplatis
  Το "ασάφειες" ήταν εκ παραδρομής. Απλά εννοούσα ότι είναι πιο εύκολο να γράψει κανείς αλγόριθμο σε ψευδογλώσσα παρά πρόγραμμα. Όπως και εσύ λες αποφεύγεις τη δήλωση των μεταβλητών και γράφεις σε μια λιγότερο αυστηρή γλώσσα, πράγμα που πιστεύω είναι καλύτερο για τους μαθητές. Φαντάζομαι να συμφωνείς ότι η πιθανότητα να κάνει κάποιο παιδί ένα λάθος (μιλάω για εξετάσεις) είναι μικρότερη αν γράψει αλγόριθμο παρά πρόγραμμα.
  Όον αφορά τις ασάφειες τώρα αυτές υπαρχουν και στη ΓΛΩΣΣΑ. Αν για παράδειγμα προσπαθήσεις να καλέσεις μια διαδικασία περνώντας την ίδια πραγματική παράμετρο στη θέση δυο τυπικών, οι οποιές μάλιστα αλλάζουν κατά τη διάρκεια του προγράμματος το αποτέλεσμα δεν είναι μονοσήμαντα καθορισμένο. (Είχα παρουσιάσει ένα σχετικό προβλήμα σε κάποιο thread με τίτλο πέρασμα παραμέτρων η κάτι τέτοιο)
  Τέλος νομίζω ότι η έκφραση // Δεδομένα // ταιρίαζει πιο πολύ στις παραμέτρους εισόδου ενός υποπρογράμματος. Δε λέω ότι αυτό που έγραψες δε μπορεί να σταθεί απλά η έκφραση // Δεδομένα// είναι ουσιαστικά οι παράμετροι εισόδου του υποπρογράμματος με το οποίο θα υλοποιούσες τον αλγόριθμο. Δηλαδή το αντίστοιχο ενός υποπρογράμματος σε ψευδογλώσσα είναι ένας αλγόριθμος όπου οι παράμετροι εισόδου είναι τα //Δεδομένα// και οι παράμετροι εξόδου είναι τα // Αποτελέσματα //
   Όσο για τις 2 γλώσσες που λες έχεις δίκιο και για αυτό είναι καλό να κατευθύνουμε τα παιδιά προς τη εκείνη τη γλώσσα περιγραφής αλγορίθμου με την οποία θα αντιμετωπίσουν τα λιγότερα προβλήματα.

@filippos
Έχεις φυσικά δίκιο, αλλά όταν το βιβλίο ξεκινάει με Αλγόριθμος ή Πρόγραμμα πλέον το συνηθίζεις και εσύ.
Πάντως για να κάνω το δικηγόρο του διαβόλου αν κάποιος σου πει "Μου γράφεις σε παρακαλώ τον αλγόριθμο του ΜΚΔ?", μη μου πεις ότι θα του το δώσεις σε πρόγραμμα. Θα το γράψεις σε κάποια ψευδογλώσσα. Θέλω να πω ότι όταν ακούμε τη λέξη αλγόριθμο το μυαλό μας πάει σε μια αφηρημένη περιγραφή του. (κάτι σαν τα templates στη C++ ας πούμε). Δηλαδή δεν είναι παράλογο να χρησιμοποιείς την έκφραση αλγόριθμος και να εννοείς την περιγραφή του σε κάποια ψευδογλώσσα.

ΥΓ. Το ψευδογλώσσα - γλώσσα μου φαίνεται το σωστότερο για την περίπτωσή μας
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

DiTz (Διαμαντής)

Σας ευχαριστώ πραγματικά όλους για τις απαντήσεις σας!
Την απορία αυτή την είχα απο την αρχή της χρονιά γιατί ήξερα ήδη κάποιες γλώσσες προγραμματισμου (Pascal και Basic κυρίως)...

Μετα απο τις συμβουλές σας, αποφάσισα να γράψω πρόγραμμα αν είναι πλήρως διατυπωμένη η ερώτηση, ενώ αν είναι σαν το 3ο του 2005 να γραψω στη μορφή  //δεδομένα ...//, //αποτελέσματα ...// που μου λέτε!!!

Σας ευχαριστώ και πάλι!
Καλη μου επιτυχία αυριο!!! ;D