Υπολογισμός χρόνου εκτέλεσης (υπολογισμός αριθμού πράξεων των εντολών)

Ξεκίνησε από ΣΧΟΙΝΑΣ ΚΩΣΤΑΣ, 27 Δεκ 2015, 09:16:35 ΜΜ

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

ΣΧΟΙΝΑΣ ΚΩΣΤΑΣ

Θέλω την γνώμη και τα σχόλια σας(αν είναι σωστή)η προτεινόμενη παρακάτω λύση σχετικά με τον υπολογισμό των πράξεων που αντιστοιχούν στον παρακάτω αλγόριθμο


Αλγόριθμος υπολογισμός_αριθμού_πράξεων
i←1
Όσο i< 100 επανάλαβε
   y←i * 2
   Εμφάνισε y
   i←i + 1
Τέλος_επανάληψης
Τέλος υπολογισμός_αριθμού_πράξεων

ΛΥΣΗ


Για την εκχώρηση i←1  Μία πράξη (1)
Για την εντολή  Όσο i< 100 αντιστοιχούν 100 πράξεις για τον έλεγχο του i (100)
Για την εντολή  y←i * 2    αντιστοιχούν 2 Χ 99 πράξεις  δηλαδή (μία για τον τελεστή του πολλαπλασισμού και μία για την εκχώρηση (198)
Για την εντολή  Εμφάνισε y αντιστοιχούν 1 Χ 99 πράξεις (99)
Για την εντολή αύξηση του i  i←i + 1 αντιστοιχούν 2 Χ 99 πράξεις (198)

Συνεπώς το σύνολο πράξεων  είναι 596  συνολικά πράξεις
Καθηγητής πληροφορικής ΠΕ20

echaralampidou

Καλησπέρα και καλή χρονιά!

Το παραπάνω παράδειγμα έχει ληφθεί από το βοήθημα-ΒΙΒΛΟ του Γ. Καρκαμάνη, ωστόσο ως αποτέλεσμα δίνει 496 και όχι 596.
Συμφωνώ με την πρότασή σας και θεωρώ πως πρόκειται για τυπογραφικό λάθος.

tsirkasg

έχω μια απορία για το θέμα.
στο σχολικό λεχει παράδειγμα με ΓΙΑ.
Ας πούμε για παράδειγμα:
Για i απο 1 μεχρι 2

Αναθέτει 1 βασική πράξη στην εκχώρηση i<-1
Αναθέτει 3 πράξεις στον έλεγχο. 2 αληθης και 1 ψευδής
Αναθέτει 2 πράξεις στην αύξηση.
Θεωρώ ότι είναι λαθος. Πρέπει η αύξηση να είναι : όσες φορές γίνει η επανάληψη Χ 2. Γιατί είναι ι<-ι+1 . Δεν γίνεται αύξηση χωρίς εκχώρηση στη μνήμη.
Έχει κανείς άποψη;
φιλικά Τσιρκας Γ.

tsirkasg


SPY

Παράθεση από: tsirkasg στις 15 Ιαν 2016, 03:46:21 ΜΜ
έχω μια απορία για το θέμα.
στο σχολικό λεχει παράδειγμα με ΓΙΑ.
Ας πούμε για παράδειγμα:
Για i απο 1 μεχρι 2

Αναθέτει 1 βασική πράξη στην εκχώρηση i<-1
Αναθέτει 3 πράξεις στον έλεγχο. 2 αληθης και 1 ψευδής
Αναθέτει 2 πράξεις στην αύξηση.
Θεωρώ ότι είναι λαθος. Πρέπει η αύξηση να είναι : όσες φορές γίνει η επανάληψη Χ 2. Γιατί είναι ι<-ι+1 . Δεν γίνεται αύξηση χωρίς εκχώρηση στη μνήμη.

Έχει κανείς άποψη;
φιλικά Τσιρκας Γ.

Το θέμα με είχε απασχολήσει και παλαιότερα. Υπάρχει και σχετική συζήτηση.
Στις οδηγίες του Δεκεμβρίου δεν έγινε καμία αναφορά.
Σκέπτομαι μήπως η μεταβολή της τιμής του μετρητή γίνεται με μια πράξη σε καταχωρητή της ΚΜΕ (στιλ ολίσθηση).
Μπορεί να είναι και χαζομάρα αυτό. Αν κάποιος γνωρίζει περισσότερα ας μας διαφωτίσει.
Πάντως κάτι πρέπει να λέμε στα παιδιά....

SPY

Παράθεση από: echaralampidou στις 05 Ιαν 2016, 03:20:27 ΜΜ
Το παραπάνω παράδειγμα έχει ληφθεί από το βοήθημα-ΒΙΒΛΟ του Γ. Καρκαμάνη, ωστόσο ως αποτέλεσμα δίνει 496 και όχι 596.
Συμφωνώ με την πρότασή σας και θεωρώ πως πρόκειται για τυπογραφικό λάθος.

ΒΙΒΛΙΟ εννοείς ή ΒΙΒΛΟ;;; "Πιστεύω εις έναν Καρκαμάνη, αναπτυξοπατέρα παντοκράτορα...."   :) Αστειεύομαι.

GB

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

Έχουμε την εντολή
Διάβασε α, β

και τις εντολές
Διάβασε α
Διάβασε β

Έχουν διαφορά στον χρόνο εκτέλεσης ή είναι ο ίδιος? Δηλαδή 2 μικροδευτερόλεπτα?

petrosp13

Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής


petrosp13

Φαντάζομαι ότι είναι το ίδιο
Γιατί μόνο με την φαντασία θα μείνουμε σε αυτό το κεφάλαιο
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

odysseas

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

Αν όντως δεν υπάρχει σχετικό παράδειγμα στο διδακτικό πακέτο ή στις οδηγίες δεν μπορούμε να απαντήσουμε με σαφήνεια στην ερώτηση. Μπορούμε μόνο να πούμε ότι αν τεθεί σχετικό θέμα τότε οι ΔΙΑΒΑΣΕ θα δίνονται ξεχωριστά για να μετράνε ξεχωριστά.

Πάντως, αν σκεφτεί κανείς ότι μια ΔΙΑΒΑΣΕ που διαβάζει k τιμές θα κάνει προσπέλαση σε k θέσεις μνήμης για να τις καταχωρίσει, όντως είναι πιθανότερο να θεωρήσει κανείς ότι μια τέτοια ΔΙΑΒΑΣΕ αντιστοιχεί σε k στοιχειώδεις πράξεις και όχι σε μία.

itt

Παράθεση από: SPY στις 22 Ιαν 2016, 12:47:05 ΜΜ
Το θέμα με είχε απασχολήσει και παλαιότερα. Υπάρχει και σχετική συζήτηση.
Στις οδηγίες του Δεκεμβρίου δεν έγινε καμία αναφορά.
Σκέπτομαι μήπως η μεταβολή της τιμής του μετρητή γίνεται με μια πράξη σε καταχωρητή της ΚΜΕ (στιλ ολίσθηση).
Μπορεί να είναι και χαζομάρα αυτό. Αν κάποιος γνωρίζει περισσότερα ας μας διαφωτίσει.
Πάντως κάτι πρέπει να λέμε στα παιδιά....

Δεν νομίζω ότι μπορεί να δωθεί σαφής απάντηση. Γενικά υποθέτω δεν μπορείς να απαντήσεις με το τι θα έκανες στον καταχωρητή (που σημειωτέον, ο compiler μπορεί να μην κάνει spill τον μετρητή εαν μπορεί στατικά να κάνει deduce την αρχική τιμή του και αν ισχούν και κάποιες άλλες συνθήκες), δεδομένου ότι δεν έχουμε ούτε compiler ούτε καταχωρητές.

GB

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

Μία βασική πράξη μπορεί να είναι:
1.   Ανάθεση τιμής,
2.   Σύγκριση μεταξύ δύο μεταβλητών, ή
3.   Οποιαδήποτε αριθμητική πράξη μεταξύ δύο μεταβλητών.


Τις λογικές πράξεις τις υπολογίζουμε ξεχωριστά? Δηλαδή τι κόστος σε πράξεις έχουν οι παρακάτω περιπτώσεις:
Χ >0 Ή Χ = 0  (3 πράξεις)
Χ >=0             (1 πράξη)
Χ >10 ΚΑΙ Υ <= 20   (3 πράξεις)

Είναι σωστοί αυτοί οι υπολογισμοί?


meteo_xampos

Το βιβλίο πάντως στον αλγόριθμο παράδειγμα στο κεφάλαιο 5.1 έχει λάθος σύμφωνα με αυτά που μας λέει για τις πράξεις... η αύξηση του i πρέπει να είναι 2 πράξεις... Δηλαδή και στον αλγόριθμο ταξινόμησης 1 πράξη είναι η αύξηση του μετρητή σε κάθε επανάληψη;;;;

SPY

Παράθεση από: GB στις 10 Φεβ 2016, 11:38:05 ΠΜ
Συνάδελφοι κάπου στις συζητήσεις της θεωρίας το πήρε το μάτι μου αλλά δεν μπορώ να το βρω, οπότε ξαναρωτάω. Το σχολικό βιβλίο λέει:

Μία βασική πράξη μπορεί να είναι:
1.   Ανάθεση τιμής,
2.   Σύγκριση μεταξύ δύο μεταβλητών, ή
3.   Οποιαδήποτε αριθμητική πράξη μεταξύ δύο μεταβλητών.


Τις λογικές πράξεις τις υπολογίζουμε ξεχωριστά? Δηλαδή τι κόστος σε πράξεις έχουν οι παρακάτω περιπτώσεις:
Χ >0 Ή Χ = 0  (3 πράξεις)
Χ >=0             (1 πράξη)
Χ >10 ΚΑΙ Υ <= 20   (3 πράξεις)

Είναι σωστοί αυτοί οι υπολογισμοί?
Γιατί να μην είναι σωστοί; Λογική πράξη = σύγκριση 2 τιμών (αριθμητικών, αλφαριθμητικών ή λογικών)