Λάθος στο βιβλίο μαθητή;

Ξεκίνησε από SPY, 11 Οκτ 2015, 03:38:42 ΜΜ

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

SPY

Συνάδελφοι γειά σας.

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

Στον πίνακα της σελίδας 91 στην "αύξηση i" του μετρητή της ΓΙΑ αναγράφεται ως αριθμός πράξεων το 5 (5 αυξήσεις).
Όμως η αύξηση είναι η εντολή i <-- i+1 που περιέχει 2 βασικές πράξεις μια πρόσθεση και μια εκχώρηση.
Έτσι οι 5 αυξήσεις θα δίνουν αριθμό πράξεων 10. Σωστά;

Τι λέτε;
Η ίδια λογική υπάρχει και σε αντίστοιχο παράδειγμα στο τετράδιο μαθητή.

petrosp13

Πολύ πρόχειρα γραμμένο (και) το συγκεκριμένο κεφάλαιο..
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Diotima

Δε θα έπρεπε να υπάρχει ένας γενικός κανόνας που να μας λέει πώς μετριούνται οι πράξεις; Θα προσπαθούμε μια ζωή να βγάλουμε τους γενικούς κανόνες από τα παραδείγματα ενώ το σωστό είναι το αντίθετο; Είναι δυνατόν δύο-τρία παραδείγματα να καλύπτουν όλες τι περιπτώσεις; (Το ίδιο έχει γίνει και στο κεφάλαιο 10 σχετικά με τη χρήση διαδικασίας και συνάρτησης).

Στην εκχώρηση y <-- 4*x θα μετρήσω 2 πράξεις με βάση το παράδειγμα, στην εκχώρηση y <-- x+x+x+x πόσες πράξεις θα μετρήσω, 4;
Αν ισχύει, αυτό σημαίνει ότι το πρώτο εκτελείται πιο γρήγορα από το δεύτερο;

Στον έλεγχο της συνθήκης x > y θα μετρήσω 1 πράξη με βάση το παράδειγμα, ενώ στον έλεγχο x-y > 0 θα μετρήσω 2 πράξεις;

SPY

Παράθεση από: petrosp13 στις 11 Οκτ 2015, 06:17:36 ΜΜ
Πολύ πρόχειρα γραμμένο (και) το συγκεκριμένο κεφάλαιο..
Προχειρότητα ετών 16!

SPY

Παράθεση από: Diotima στις 11 Οκτ 2015, 07:52:47 ΜΜ
....
Στην εκχώρηση y <-- 4*x θα μετρήσω 2 πράξεις με βάση το παράδειγμα, στην εκχώρηση y <-- x+x+x+x πόσες πράξεις θα μετρήσω, 4;
Σωστά.
Παράθεση από: Diotima στις 11 Οκτ 2015, 07:52:47 ΜΜ
Αν ισχύει, αυτό σημαίνει ότι το πρώτο εκτελείται πιο γρήγορα από το δεύτερο;
Όχι. Οι βασικές πράξεις δεν έχουν ίδιο χρόνο εκτέλεσης.
Παράθεση από: Diotima στις 11 Οκτ 2015, 07:52:47 ΜΜ
Στον έλεγχο της συνθήκης x > y θα μετρήσω 1 πράξη με βάση το παράδειγμα, ενώ στον έλεγχο x-y > 0 θα μετρήσω 2 πράξεις;
Κι αυτό σωστό.

Diotima

Παράθεση από: SPY στις 12 Οκτ 2015, 12:14:52 ΠΜ
Όχι. Οι βασικές πράξεις δεν έχουν ίδιο χρόνο εκτέλεσης.
Συμφωνώ απόλυτα, αλλά παρακάτω στον πίνακα 5.2 (σελ. 91) θεωρεί ως χρόνο εκτέλεσης του αλγορίθμου τον αριθμό των πράξεων σε μs και για κάθε πράξη, ανεξάρτητα από το είδος της, έχει υπολογίσει 1 μs.
(Έχω κάνει μια ανάλυση για το πως βγαίνουν οι χρόνοι μετρώντας το πλήθος των πράξεων εδώ: https://alkisg.mysch.gr/steki/index.php?topic=6275.150 και έχω εντοπίσει κάποια λαθάκια).
Αυτό μπορεί να δημιουργήσει λάθος κατανόηση σχετικά με το χρόνο εκτέλεσης των βασικών πράξεων και σε μια θεωρητική ερώτηση να απαντήσει κάποιος λάθος.
Οπότε πρέπει να τονιστεί ότι γίνεται απλώς μια σύμβαση να θεωρούμε στον πίνακα 5.2 ότι για κάθε πράξη χρειάζεται 1 μs γιατί θέλουμε να μελετήσουμε την αύξηση των πράξεων σε σχέση με το πλήθος των επαναλήψεων που εκτελούνται και όχι να μετρήσουμε πραγματικούς χρόνους εκτέλεσης.

Rathaniel

Υπάρχει και άσκηση στο τέτράδιο μαθητή που δημιουργεί τα ίδια ερωτήματα για την μέτρηση πράξεων.
Προφανώς χρειάζονται διευκρινίσεις.
Χρηστίδης Αλέξανδρος,
Μηχανικός Επ/κών και Πλη/κών Συστημάτων,
Msc Στα Προηγμένα Συστήματα Πληροφορικής

gthal

Παράθεση από: SPY στις 11 Οκτ 2015, 03:38:42 ΜΜ
Συνάδελφοι γειά σας.

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

Στον πίνακα της σελίδας 91 στην "αύξηση i" του μετρητή της ΓΙΑ αναγράφεται ως αριθμός πράξεων το 5 (5 αυξήσεις).
Όμως η αύξηση είναι η εντολή i <-- i+1 που περιέχει 2 βασικές πράξεις μια πρόσθεση και μια εκχώρηση.
Έτσι οι 5 αυξήσεις θα δίνουν αριθμό πράξεων 10. Σωστά;

Τι λέτε;
Η ίδια λογική υπάρχει και σε αντίστοιχο παράδειγμα στο τετράδιο μαθητή.
Για να επιστρέψουμε στο αρχικό ερώτημα, πιστεύω κι εγώ ότι είναι λάθος του βιβλίου.
Το ζήτημα είναι, πώς θα το διδάξουμε εμείς ? ? ?
Φιλικά,
Γιώργος Θαλασσινός

gthal

Βλέπω και σε άλλα κείμενα περί επίδοσης αλγορίθμου, ότι η αύξηση ενός μετρητή (κατά 1 μόνο? ή οσοδήποτε? ) θεωρείται ως μία πράξη... δεν καταλαβαίνω γιατί...
όπως δεν καταλαβαίνω γιατί πχ μια πρόσθεση και ένας πολ/σμος θεωρούνται ισοδύναμες ως μία πράξη η καθεμιά
Υπάρχει κανένας συνάδελφος που έχει την καλοσύνη να τα εξηγήσει αυτά?
Φιλικά,
Γιώργος Θαλασσινός

petrosp13

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

bugman

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

itt

Παράθεση από: bugman στις 11 Νοε 2015, 09:30:18 ΜΜ
Απορία:
Πώς η αύξηση της μεταβλητής στη  Για να θεωρείται μια πράξη, αφού συνάμα πρέπει να ελέγχεται το όριο και σε επιτυχία (εντός ορίου) να υπάρχει διακλάδωση στην πρώτη εντολή μετά τη Για.

Επειδή η αύξηση μιας μεταβλητής είναι η αύξηση μιας μεταβλητής. Τo bound check και το αν θα κάνεις branch, είναι άλλες διακριτές πράξεις. Προφανώς και χρησιμοποιούμε τη λέξη "πράξη" με μια σχετική ελευθερία σε αυτή τη συζήτηση.

bugman

Πάντως έχει σημασία που τη βρίσκει την μεταβλητή. Σε χαμηλό επίπεδο μπορεί να είναι σε κσταχωρητή, ή στη στοίβα επιστροφής, ή κάπου στη μνήμη με διεύθυνση έμμεση ή απόλυτη, ή με προσαύξηση διαστήματος offset. Δηλαδή μια αύξηση μεταβλητής σκέτο...δεν μας λέει πολλά πράγματα. Δεν υπάρχει κανόνας που να λέει ότι η μεταβλητή στο Για είναι επακριβώς ίδια με οποιαδήποτε άλλη. Κοινές ιδιότητες θα βρεθούν. Μπορεί κανείς να αλλάξει την μεταβλητή εντός της Για, με συνέπεια να αλλάξουν τα προκαθορισμένα βήματα;

Rathaniel

Παράθεση από: bugman στις 12 Νοε 2015, 04:17:41 ΜΜ
Πάντως έχει σημασία που τη βρίσκει την μεταβλητή. Σε χαμηλό επίπεδο μπορεί να είναι σε κσταχωρητή, ή στη στοίβα επιστροφής, ή κάπου στη μνήμη με διεύθυνση έμμεση ή απόλυτη, ή με προσαύξηση διαστήματος offset. Δηλαδή μια αύξηση μεταβλητής σκέτο...δεν μας λέει πολλά πράγματα. Δεν υπάρχει κανόνας που να λέει ότι η μεταβλητή στο Για είναι επακριβώς ίδια με οποιαδήποτε άλλη. Κοινές ιδιότητες θα βρεθούν. Μπορεί κανείς να αλλάξει την μεταβλητή εντός της Για, με συνέπεια να αλλάξουν τα προκαθορισμένα βήματα;
Ξεφύγαμε.....
Χρηστίδης Αλέξανδρος,
Μηχανικός Επ/κών και Πλη/κών Συστημάτων,
Msc Στα Προηγμένα Συστήματα Πληροφορικής

itt

Παράθεση από: bugman στις 12 Νοε 2015, 04:17:41 ΜΜ
Πάντως έχει σημασία που τη βρίσκει την μεταβλητή. Σε χαμηλό επίπεδο μπορεί να είναι σε κσταχωρητή, ή στη στοίβα επιστροφής, ή κάπου στη μνήμη με διεύθυνση έμμεση ή απόλυτη, ή με προσαύξηση διαστήματος offset. Δηλαδή μια αύξηση μεταβλητής σκέτο...δεν μας λέει πολλά πράγματα. Δεν υπάρχει κανόνας που να λέει ότι η μεταβλητή στο Για είναι επακριβώς ίδια με οποιαδήποτε άλλη. Κοινές ιδιότητες θα βρεθούν. Μπορεί κανείς να αλλάξει την μεταβλητή εντός της Για, με συνέπεια να αλλάξουν τα προκαθορισμένα βήματα;

Δεν έχει σημασία που είναι η μεταβλητή και πώς κάνεις increment τη μεταβλητή, όταν κάνεις μια τέτοια ανάλυση μπορείς να τα αγνοήσεις παντελώς.