Άθροισμα στοιχείων κύριας και δευτερεύουσας διαγωνίου

Ξεκίνησε από tom, 22 Μαρ 2010, 01:16:48 ΠΜ

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

tom

Έστω η παρακάτω άσκηση που "πιάνει" 10 μόρια:

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

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

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

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

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


Πόσο θα "κόβατε" από τη δεύτερη λύση;
Θωμάς Σκυλογιάννης

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

ntzios kostas

Η ύπαρξη λάθους είναι ότι το 'κεντρικό' στοιχείο του πίνακα προστίθεται δύο φορές σε περίπτωση που το Ν είναι περιττός. Πιστεύω για τον λόγο αυτό θα έκοβα το 2-4 % των μορίων της άσκησης.

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

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

Ελάχιστα θα έκοβα... αφού το ζητούμενο είναι λίγο εξεζητημένο...

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

gpapargi

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

gthal

Στη βαθμολόγηση θα συμφωνήσω με τον Κώστα,
αλλά κι εγώ απορώ, γιατί θα έκοβες για το Διάβασε Ν ;
Φιλικά,
Γιώργος Θαλασσινός

ntzios kostas

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

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

tom

Παράθεση από: ntzios kostas στις 22 Μαρ 2010, 12:23:31 ΜΜ
Ο πίνακας είναι στατική δομή και το μέγεθός του δεν ορίζεται από τον χρήστη. Αυτός ο αλγόριθμος δεν μπορεί να γίνει προγραμμα.

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

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

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

sstergou

Η ψευδογλώσσα έχει πάθει κρίση ταυτότητας...
Κάποια στιγμή θα πρέπει να αποφασίσουμε τι θέλουμε από αυτήν.

ntzios kostas

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



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

tom

Παράθεση από: ntzios kostas στις 22 Μαρ 2010, 04:15:51 ΜΜ
Και τελικά ποια είναι η διαφορά της εντολής Δεδομένα //Ν// από το διάβασε Ν. Οι μαθητές νομίζω ότι πρέπει να την ξέρουν και να εφαρμόζουν το σωστό.

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

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

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

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

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

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

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

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

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

Κώστα να πω ότι με μπέρδεψες!

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

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


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

Παράθεση από: tom στις 22 Μαρ 2010, 05:22:18 ΜΜ
   Δεδομένα //Ν, π[Ν,Ν]//

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

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

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

tom

Παράθεση από: Νίκος Αδαμόπουλος στις 22 Μαρ 2010, 06:10:59 ΜΜ
Εγώ θα το έγραφα έτσι:

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

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

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

evry

Αν υποθέσουμε ότι τα Δεδομένα στην ψευδογλώσσα παίζουν τον ίδιο ρόλο που παίζουν οι παράμετροι εισόδου στα υποπρογράμματα τότε δεν ξέρω αν χρειάζεται να φαίνεται ότι ο πίνακας είναι 2D. Μην ξεχνάμε ότι και στον ορισμό του υποπρογράμματος δεν φαίνεται ότι η παράμετρος είναι πίνακας παρά μόνο αν κοιτάξεις το τμήμα δηλώσεων του υποπρογράμματος.

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

sstergou

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

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

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

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


Παράθεση από: ntzios kostas στις 22 Μαρ 2010, 12:23:31 ΜΜ
Αυτός ο αλγόριθμος δεν μπορεί να γίνει προγραμμα.   

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

Θα πω και κάτι άλλο και ας με πάρετε με τις ντομάτες : Δεν πρέπει να κάνουμε διάκριση μεταξύ αλγορίθμου και προγράμματος. Κάθε αλγόριθμος μπορεί να γίνει πρόγραμμα και κάθε πρόγραμμα είναι κάποιος αλγόριθμος εκφρασμένος με κάποιο τρόπο.