Αποστολέας Θέμα: Άθροισμα στοιχείων κύριας και δευτερεύουσας διαγωνίου  (Αναγνώστηκε 23451 φορές)

tom

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 488
Έστω η παρακάτω άσκηση που "πιάνει" 10 μόρια:

"Να υπολογιστεί και να εμφανιστεί το άθροισμα των στοιχείων της κύριας και της δευτερεύουσας διαγωνίου για έναν πίνακα Ν Χ Ν, όπου το Ν δίνεται από τον χρήστη".

Σημ. Εννοώ ότι θέλω ένα άθροισμα.

και δύο λύσεις:

α)
Κώδικας: [Επιλογή]
Αλγόριθμος διαγώνιοι
Διάβασε Ν
Για γρ από 1 μέχρι Ν
Για στ από 1 μέχρι Ν
Διάβασε π[γρ,στ]
Τέλος_επανάληψης
Τέλος_επανάληψης
αδ← 0
Για γρ από 1 μέχρι Ν
Για στ από 1 μέχρι Ν
Αν γρ=στ ή γρ=Ν-στ+1 τότε
αδ← αδ+π[γρ,στ]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εμφάνισε αδ
Τέλος διαγώνιοι
β)
Κώδικας: [Επιλογή]
Αλγόριθμος διαγώνιοι
Διάβασε Ν
Για γρ από 1 μέχρι Ν
Για στ από 1 μέχρι Ν
Διάβασε π[γρ,στ]
Τέλος_επανάληψης
Τέλος_επανάληψης
ακδ← 0
αδδ← 0
Για γρ από 1 μέχρι Ν
Για στ από 1 μέχρι Ν
Αν γρ=στ τότε
ακδ← ακδ+π[γρ,στ]
Τέλος_αν
Αν γρ=Ν-στ+1 τότε
αδδ← αδδ+π[γρ,στ]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
αδ← ακδ+αδδ
Εμφάνισε αδ
Τέλος διαγώνιοι

Πόσο θα "κόβατε" από τη δεύτερη λύση;
« Τελευταία τροποποίηση: 22 Μάρ 2010, 02:02:53 πμ από tom »
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

ntzios kostas

  • Καθηγητής Πληροφορικής
  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 605
    • Ανάπτυξη Εφαρμογών
Η ύπαρξη λάθους είναι ότι το 'κεντρικό' στοιχείο του πίνακα προστίθεται δύο φορές σε περίπτωση που το Ν είναι περιττός. Πιστεύω για τον λόγο αυτό θα έκοβα το 2-4 % των μορίων της άσκησης.

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

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

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2806
  • Πύργος Ηλείας
Ελάχιστα θα έκοβα... αφού το ζητούμενο είναι λίγο εξεζητημένο...

Κώστα γιατί θα έκοβες για το Διάβασε Ν;

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2457
  • I 'm not young enough to know everything
Να πούμε πάντως ότι καλύτερα να γίνει με μονό βρόχο. Να μην περνάμε από όλο τον πίνακα δηλαδή αφού αν με το δάχτυλο δείχναμε τα στοιχεία που προσθέτουμε δεν θα περνάγαμε από όλο τον πίνακα. θα βηματίζαμε απευθείας πάνω στις διαγωνίους.
Είναι βασικό για το μάθημα ο αλγόριθμος που γράφουμε να είναι αυτός που εκτελούμε μηχανικά με το χέρι.

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 945
Στη βαθμολόγηση θα συμφωνήσω με τον Κώστα,
αλλά κι εγώ απορώ, γιατί θα έκοβες για το Διάβασε Ν ;
Φιλικά,
Γιώργος Θαλασσινός

ntzios kostas

  • Καθηγητής Πληροφορικής
  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 605
    • Ανάπτυξη Εφαρμογών
Ο πίνακας είναι στατική δομή και το μέγεθός του δεν ορίζεται από τον χρήστη. Αυτός ο αλγόριθμος δεν μπορεί να γίνει προγραμμα.

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

tom

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 488
Ο πίνακας είναι στατική δομή και το μέγεθός του δεν ορίζεται από τον χρήστη. Αυτός ο αλγόριθμος δεν μπορεί να γίνει προγραμμα.

Θα έπρεπε να ήταν Δεδομένα //Ν//.   
Εντάξει ρε παιδιά. Αφού αυτό λύνεται αν δώσουμε ένα πολύ μεγάλο μέγιστο (π.χ. 1000 ή 10000). Γιατί να περιορίσουμε το βαθμό παραμετροποίησης ενός προγράμματος για κάτι τέτοιο. Εμένα με βολεύει να έχει Ν και να κάνω πειραματισμούς. Νομίζω και για τον μαθητή είναι παιδαγωγικά χρήσιμο κάτι τέτοιο. Του εξηγείς πως ο πίνακας είναι στατική δομή, βάζει ένα άνω φράγμα και επικεντρώνεται στα υπόλοιπα. Θα καθόμαστε και θα αλλάζουμε δείκτες τώρα...; Εξ 'άλλου και στην υλοποίηση της ψευδογλώσσας που υπάρχει, και Δεδομένα //Ν// να βάλεις, εσύ δεν θα δώσεις το Ν;  :)

 
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Η ψευδογλώσσα έχει πάθει κρίση ταυτότητας...
Κάποια στιγμή θα πρέπει να αποφασίσουμε τι θέλουμε από αυτήν.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

ntzios kostas

  • Καθηγητής Πληροφορικής
  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 605
    • Ανάπτυξη Εφαρμογών
Εντάξει ρε παιδιά. Αφού αυτό λύνεται αν δώσουμε ένα πολύ μεγάλο μέγιστο (π.χ. 1000 ή 10000). Γιατί να περιορίσουμε το βαθμό παραμετροποίησης ενός προγράμματος για κάτι τέτοιο. Εμένα με βολεύει να έχει Ν και να κάνω πειραματισμούς. Νομίζω και για τον μαθητή είναι παιδαγωγικά χρήσιμο κάτι τέτοιο. Του εξηγείς πως ο πίνακας είναι στατική δομή, βάζει ένα άνω φράγμα και επικεντρώνεται στα υπόλοιπα. Θα καθόμαστε και θα αλλάζουμε δείκτες τώρα...; Εξ 'άλλου και στην υλοποίηση της ψευδογλώσσας που υπάρχει, και Δεδομένα //Ν// να βάλεις, εσύ δεν θα δώσεις το Ν;  :)

 

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

tom

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 488
Και τελικά ποια είναι η διαφορά της εντολής Δεδομένα //Ν// από το διάβασε Ν. Οι μαθητές νομίζω ότι πρέπει να την ξέρουν και να εφαρμόζουν το σωστό.

Θα σου πω, πώς το καταλαβαίνω εγώ.

Χρησιμοποιούμε την εντολή Δεδομένα //Ν// όταν θέλουμε να κερδίσουμε χρόνο από την είσοδο των δεδομένων και να επικεντρωθούμε στην ουσία του αλγορίθμου που στην προκειμένη περίπτωση είναι ο υπολογισμός του αθροίσματος. Σημαίνει πως το Ν απλά υπάρχει από "κάπου".  Εξαρτάται από τι θέλουμε να εξετάσουμε.

Στο παράδειγμα που έδωσα θα μπορούσα να πω και το εξής:

   Δεδομένα //Ν, π[Ν,Ν]// αντί να πω:

   Διάβασε Ν
   Για γρ από 1 μέχρι Ν
      Για στ από 1 μέχρι Ν
         Διάβασε π[γρ,στ]
      Τέλος_επανάληψης
   Τέλος_επανάληψης

πιο κομψό δεν είναι το πρώτο;

Λέει κάπου μέσα στο διδακτικό πακέτο πως ακριβώς ορίζεται η εντολή Δεδομένα//.... // ; :-\
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

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

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2806
  • Πύργος Ηλείας
Κώστα να πω ότι με μπέρδεψες!

Η άσκηση λέει ότι ο χρήστης θα δίνει το Ν. Δεν θα πρέπει να μπει εντολή Διάβασε Ν; Το Δεδομένα //Ν// δεν θα το βάζαμε αν η άσκηση έλεγε "Έστω Ν ο αριθμός ..." ή "Δίνεται αριθμός Ν..." ;;

Πράγματι οι πίνακες είναι στατικές δομές αλλά το Ν δεν σημαίνει ντε και καλά ότι θα είναι το καθορισμένο μέγεθος του πίνακα, με την έννοια που δηλώνεται π.χ. στη ΓΛΩΣΣΑ. Στην ψευδογλώσσα μάς ενδιαφέρει το μέγεθος του πίνακα;

 

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

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2806
  • Πύργος Ηλείας
   Δεδομένα //Ν, π[Ν,Ν]//

Είναι σωστή η παραπάνω γραφή;
Εγώ θα το έγραφα έτσι:

 Δεδομένα //π, Ν//

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

tom

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 488
Εγώ θα το έγραφα έτσι:

 Δεδομένα //π, Ν//

Και πως θα φαίνεται ότι είναι δισδιάστατος;
Για τον πίνακα θεωρώ ότι επίσης δίνεται από τον χρήστη.
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3513
  • to Iterate is human to Recurse divine
Αν υποθέσουμε ότι τα Δεδομένα στην ψευδογλώσσα παίζουν τον ίδιο ρόλο που παίζουν οι παράμετροι εισόδου στα υποπρογράμματα τότε δεν ξέρω αν χρειάζεται να φαίνεται ότι ο πίνακας είναι 2D. Μην ξεχνάμε ότι και στον ορισμό του υποπρογράμματος δεν φαίνεται ότι η παράμετρος είναι πίνακας παρά μόνο αν κοιτάξεις το τμήμα δηλώσεων του υποπρογράμματος.

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

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Πάντως το τετράδιο του μαθητή έχει παραδείγματα εισαγωγής πίνακα με την εντολή

Δεδομένα //Π//

όπου ο πίνακας Π έχει π.χ. 50 στοιχεία.

Στην ψευδογλώσσα πιστεύω ότι πρέπει να πάρουμε όλους τους τρόπους που αναφέρετε ως σωστούς.


Αυτός ο αλγόριθμος δεν μπορεί να γίνει προγραμμα.   

Αυτό από που προκύπτει; Μια χαρά πρόγραμμα μπορεί να γίνει, απλά όχι στην ΓΛΩΣΣΑ.

Θα πω και κάτι άλλο και ας με πάρετε με τις ντομάτες : Δεν πρέπει να κάνουμε διάκριση μεταξύ αλγορίθμου και προγράμματος. Κάθε αλγόριθμος μπορεί να γίνει πρόγραμμα και κάθε πρόγραμμα είναι κάποιος αλγόριθμος εκφρασμένος με κάποιο τρόπο.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr