Αποστολέας Θέμα: Απορίες σε Πίνακες και Υποπρογράμματα  (Αναγνώστηκε 2623 φορές)

manpap

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 126
  • Είμαι χαζομπαμπάς...
Απορίες σε Πίνακες και Υποπρογράμματα
« στις: 01 Μαρ 2007, 11:50:55 πμ »
Εύχομαι καλό μήνα σε όλο το στέκι και παράλληλα υποβάλω τις παρακάτω απορίες
1)
Πιο κριτήριο παραβιάζεται στο παρακάτω παράδειγμα σε ΓΛΩΣΣΑ; Προσωπική άποψη: Καθοριστικότητα, μήπως όμως είναι αποτελεσματικότητα;

...
ΠΡΑΓΜΑΤΙΚΕΣ: κ
...
ΑΡΧΗ
...
κ<-1
Α[κ]<-10
...

2)
Είναι αποδεκτό το παρακάτω? Αν ναι τότε δεν υπάρχει ξεκάθαρα μία εντολή εκχώρησης κάποια τιμής στο όνομα της συνάρτησης, όπως συνήθως γίνεται. Τι λέτε;
ΣΥΝΑΡΤΗΣΗ ΜΙΝ(Χ,Υ):ΑΚΕΡΑΙΑ
...
ΑΡΧΗ
 ΚΑΛΕΣΕ ΥΠΟΛΟΓΙΣΜΟΣ_ΜΙΝ(Χ,Υ,ΜΙΝ)
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Όπου ΥΠΟΛΟΓΙΣΜΟΣ_ΜΙΝ(Χ,Υ,ΜΙΝ) διαδικασία που δέχεται 2 αριθμούς και επιστρέφει τον μικρότερό τους

3)
Η συνάρτηση Α_Τ(χ) επιστρέφει πραγματική τιμή. Επομένως το παρακάτω είναι λάθος στη ΓΛΩΣΣΑ αλλά σωστό αν ήταν αλγόριθμος;
...
ΠΡΑΓΜΑΤΙΚΕΣ: κ
ΑΚΕΡΑΙΕΣ: α,β
...
ΑΡΧΗ
 ΔΙΑΒΑΣΕ α
 β<-Α_Τ(α)   ! εκχώρηση πραγματικής έκφρασης σε ακέραια μεταβλητή
...

Περιμένω τη γνώμη σας...  :)

Συντηρώ το μυαλό μου ακοίμητο, λαγαρό, ανήλεο. Το αμολώ να παλεύει ακατάλυτα. Άλλο αργαστήρι να κάνω το σκοτάδι φως δεν έχω.
Ν. Καζαντζάκης

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3615
  • to Iterate is human to Recurse divine
Απ: Απορίες σε Πίνακες και Υποπρογράμματα
« Απάντηση #1 στις: 01 Μαρ 2007, 03:18:36 μμ »
Ξεκινάω ανάποδα

Το 3 προφανώς είναι λάθος σε Γλώσσα και σωστό σε αλγόριθμο, δεν νομίζω ότι υπάρχει κάποια ασάφεια εδώ

Το 2 επίσης είναι λάθος. Ο ορισμός της συνάρτησης είναι σαφέστατος, πρέπει στο τέλος να υπάρχει αντίστοιχη εντολή εκχώρησης.
Κάτι αντίστοιχο υπάρχει και στις C, C++, Java όπου πρέπει να υπάρχει η εντολή return <επιστρεφόμενος τύπος>

Τώρα το 1 δε νομίζω ότι παραβιάζει κανένα κριτήριο. Το λάθος θα το πιάσει ο compiler κατά τη μεταγλώττιση. Είναι καθαρά θέμα της Γλώσσας.
Το αν είναι όμως αλγόριθμος είναι άλλη ιστορία. Αν έγραφες ακριβώς το ίδιο πρόγραμμα σε μια γλώσσα όπως η C θα δούλευε μια χαρά γιατί ο πραγματικός θα μετατρεπόταν κατευθείαν σε ακέραιο (θα πέταγε ένα warning φυσικά). Σε αυτή την περίπτωση το πρόγραμμα θα δούλευε κανονικά και κανείς δεν θα μίλαγε για θέμα καθοριστικότητας.
   Άρα το παράδειγμα που ανέφερες είναι καθαρά θέμα υλοποίησης της γλώσσας προγραμματισμού. Σε επίπεδο αλγορίθμου δεν έχει πρόβλημα.

Γενικά όταν μιλάμε για κριτήρια αλγορίθμου όπως καθοριστικότητα, αποτελεσματικότητα κλπ, καλό θα ήταν να τα εξετάζουμε μόνο σε επίπεδο ψευδογλώσσας, γιατί σε επίπεδο προγράμματος θα γίνει σύγχυση μεταξύ των κριτηρίων αυτών και των συντακτικών, σημασιολογικών, λογικών λαθών από τους μαθητές.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

johnny_xp

  • Θαμώνας
  • ***
  • Μηνύματα: 39
  • Null Argument Exception
Απ: Απορίες σε Πίνακες και Υποπρογράμματα
« Απάντηση #2 στις: 02 Μαρ 2007, 12:35:42 μμ »
Η δήλωση του σχολικού βιβλίου ότι οι μεταβλητές πρέπει να είναι του ίδιου τύπου είναι αρκετα περιοριστική και πολλές φορές μας δένει τα χέρια. Το παράδειγμα που αναφέρθηκε παραπάνω είναι χαρακτηριστικό. Ενω στον αλγόριθμο δεν έχουμε τέτοιο πρόβλημα στη ΓΛΩΣΣΑ δεν μπορούμε να προσθέσουμε έναν π.χ. πραγματικό με έναν ακέραιο !
Θεωρώ πως το βιβλίο θα έπερεπε να έχει θέσει το θέμα κάπως γενικότερα στο σημείο αυτό. Δοθέντως ότι δεν έχουμε και δα τόσους πολούς τύπους δεδομένων στη ΓΛΩΣΣΑ δεν θα ήταν δύσκολο να λέει πως ένας ακέραιος μπορεί να μετατραπεί σε πραγματικό και το αντίθετο (με στρογγύλευση).

manpap

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 126
  • Είμαι χαζομπαμπάς...
Απ: Απορίες σε Πίνακες και Υποπρογράμματα
« Απάντηση #3 στις: 02 Μαρ 2007, 01:44:27 μμ »
Ευχαριστώ για τις απαντήσεις.
Συμφωνώ ότι θα ήταν καλύτερα να περιορίζουμε τα κριτήρια στους αλγορίθμους και όχι στις Γλώσσες Προγραμματισμού. Αν όμως μας ενδιαφέρει τι γίνεται σε μία Γλώσσα; Άλλωστε και το πρόγραμμα Αλγόριθμος είναι.
Στα δύο τελευταία ερωτήματα καλύφθηκα. Στο 1ο εξακολουθώ και έχω κάποιους ενδοιασμούς... για το αν πληρούνται όλα τα κριτήρια. Αν δεν εκτελείτε (δηλαδή το πιάσει ο compiler) τότε δεν είναι εκτελέσιμη άρα δεν έχει αποτελεσματικότητα.

Αντίστοιχα τι θα λέγατε για το
χ<- α DIV β
με α και β δηλωμένους πραγματικούς....
θα έπρεπε να λέει
ΑΝ α=Α_Μ(α) και β=Α_Μ(β) ΚΑΙ b<>0 ΤΟΤΕ
 χ<- Α_Μ(α) DIV Α_Μ(β)
ΤΕΛΟΣ_ΑΝ
Δηλαδή πρόβλημα καθοριστικότητας έτσι;
Συντηρώ το μυαλό μου ακοίμητο, λαγαρό, ανήλεο. Το αμολώ να παλεύει ακατάλυτα. Άλλο αργαστήρι να κάνω το σκοτάδι φως δεν έχω.
Ν. Καζαντζάκης

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3615
  • to Iterate is human to Recurse divine
Απ: Απορίες σε Πίνακες και Υποπρογράμματα
« Απάντηση #4 στις: 02 Μαρ 2007, 03:07:59 μμ »

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

Επίσης ένας αλγόριθμος μπορεί να κωδικοποιηθεί σε πρόγραμμα αλλα ένα πρόγραμμα ΔΕΝ ΕΙΝΑΙ αλγόριθμος.

Για παράδειγμα το παρακάτω είναι τμήμα προγράμματος αλλά όχι αλγορίθμου
π.χ.
Κώδικας: [Επιλογή]
      i <-- 0
      ΟΣΟ (1<2) ΕΠΑΝΑΛΑΒΕ
             i <-- i + 1
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τέτοια προγράμματα χρησιμοποιούνται από εξυπηρέτες στον παγκόσμιο ιστό και άλλα προγράμματα τα οποία ο χρήστης μπορεί να τα σταματήσει με Ctrl+X
Δηλαδή ότι περνάει από compiler δε σημαίνει ότι είναι αλγόριθμος. Αντίστροφα ότι δεν περνάει δεν σημαίνει ότι δεν είναι.
Δεν είμαι απόλυτος για το 1ο, αλλά πιστεύω ότι όταν θέλουμε να εξετάσουμε ένα κριτήριο αλγορίθμου θα πρέπει να το βλέπουμε σε επίπεδο ωευδογλώσσας και όχι προγράμματος.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr