Αποστολέας Θέμα: Απορία στον υπολογισμό πράξεων σε Για  (Αναγνώστηκε 2983 φορές)

chzisi

  • Θαμώνας
  • ***
  • Μηνύματα: 31
Απορία στον υπολογισμό πράξεων σε Για
« στις: 02 Φεβ 2016, 09:04:16 μμ »
Καλησπέρα σας. Σύμφωνα με το βιβλίο κατά την εκτέλεση μιας εντολής "για" η αύξηση του i λογαριάζεται ως 1 πράξη ανα επανάληψη.  :o
Η πράξη i <- i+1 δεν λογαριάζεται ως 2 πράξεις;
Αν έχω μια εντολή "Για" και την αντίστοιχή της σε "Όσο" πρέπει τα παιδιά να γνωρίζουν ότι η "για" εκτελείται γρηγορότερα;

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

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 143
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #1 στις: 03 Φεβ 2016, 12:13:03 πμ »
 συμφωνώ έτσι είναι η μεταβολή του μετρητή στην εντολή Για είναι μία πράξη ενώ η μεταβολή μέσω εντολής εκχώρησης  με χρήση της Όσο είναι 2 πράξεις
Καθηγητής πληροφορικής ΠΕ20

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 892
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #2 στις: 03 Φεβ 2016, 09:38:31 πμ »
Διαφωνώ.
Πιστεύω ότι η αύξηση του μετρητή πρέπει να είναι 2 πράξεις σε κάθε περίπτωση και το βιβλίο έχει τυπογραφικό (ή ίσως και.. λογικό) λάθος.
Το αν στη Για γίνεται διαφορετικά απ' ότι στην όσο είναι μάλλον ζήτημα του εκάστοτε μεταγλωττιστή, πράγμα που δεν θα έπρεπε να μας αφορά (αν και δεν μπορώ να δω πώς θα κατάφερνε κάτι τέτοιο ακόμα κι ένας μεταγλωττιστής)

Έχω κι εγώ μια καινούρια παρόμοια απορία (αν και λιγότερο εμφανή μέσα στις Για που μας δίνει το βιβλίο):
1) η συνθήκη μ=0 ή ν=0 είναι τρεις πράξεις, έτσι? (δύο συγκρίσεις και μία διάζευξη)
2) η συνθήκη i<10 ή i=10 επίσης τρεις πράξεις
3) η ισοδύναμή της i<=10 (δηλ ο "έλεγχος του i") στο βιβλίο μετράει σαν μία πράξη αλλά δεν θα έπρεπε να είναι κι αυτή τρεις πράξεις ? (αφού στην ουσία είναι δύο συγκρίσεις: αν το i είναι μεγαλύτερο ή αν είναι ίσο - δεν μπορείς να τα ελέξγεις και τα δύο ταυτόχρονα). θα μπορούσε βέβαια να πει κανείς ότι μπορεί να ελέγχεται η i>10 και να υπολογίζεται η άρνησή της, οπότε είναι δύο πράξεις: ΟΧΙ(i>10) ... οπότε ... χαιρετίσματα
Φιλικά,
Γιώργος Θαλασσινός

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #3 στις: 03 Φεβ 2016, 01:54:04 μμ »
Το i<=0 ο compiler το μετατρέπει σε OXI(i>0) και γι' αυτό γίνεται μία πράξη.

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #4 στις: 03 Φεβ 2016, 02:44:54 μμ »
Nομίζω ότι θα πρέπει, αφού απουσιάζει κάποια επεξήγηση, να σταθούμε στην σημειογραφία του βιβλίου. Δεν πιστεύω δηλαδή ότι η αύξηση του μετρητή είναι ισοδύναμη με το i <- i + 1 στο context της Για, οπότε αξιωματικά θα πρέπει να πάρουμε αυτό που αναφέρει το βιβλίο.

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

meteo_xampos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 182
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #5 στις: 03 Φεβ 2016, 07:56:55 μμ »
Καλησπέρα σας!!! Η εντολή χ<- Π[ι-1] κάνει 2 πράξεις;

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #6 στις: 03 Φεβ 2016, 09:09:24 μμ »
Καλησπέρα σας!!! Η εντολή χ<- Π[ι-1] κάνει 2 πράξεις;

Εγώ θα έλεγα τρεις. Υπολογισμός του index (i - 1), προσπέλαση του πίνακα και μετά ανάθεση της τιμής στο x.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2224
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #7 στις: 03 Φεβ 2016, 09:34:56 μμ »
Η προσπέλαση του πίνακα γιατί να είναι πράξη; Ή μια πράξη;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #8 στις: 03 Φεβ 2016, 10:44:04 μμ »
Η προσπέλαση σε πίνακα δεν θεωρείται πράξη. Δεν χρειάζεται να κάνει κάτι ο επεξεργαστής. Απλώς φέρνει την θέση μνήμης που του ζητήθηκε. Οπότε το χ<- Π[ι-1] είναι δύο πράξεις.

Στην Pascal υπήρχε πράγματι διαφορά στην ταχύτητα της Για με την Όσο. Η αύξηση του μετρητή στην Για γινόταν σε γλώσσα μηχανής ή με κάποιον άλλον μαγικό τρόπο και ήταν μία πράξη. Αυτός ήταν και ο λόγος που δεν μπορούσες να αλλάξεις τον μετρητή της Για και όχι οι υπόλοιπες τρίχες του βιβλίου για δήθεν πιο ευανάγνωστο κώδικα. Το πρόβλημα ήταν τεχνικό. Επίσης αυτός ήταν και ο λόγος που τα προγράμματα σε pascal (και basic) ήταν γεμάτα με βρόγχους Για, ενώ οι Όσο σπάνιζαν (τουλάχιστον μέχρι να εμφανιστεί η turbo pascal, αν θυμάμαι καλά).

Προτείνω να μείνετε δογματικά προσκολλημένοι σε ότι λέει το βιβλίο. Αν γράφουν κάτι οι συγγραφείς σημαίνει ότι αυτό ίσχυε τότε, οπότε πάρτε το ως δεδομένο.

chzisi

  • Θαμώνας
  • ***
  • Μηνύματα: 31
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #9 στις: 04 Φεβ 2016, 07:50:36 πμ »
Η προσπέλαση σε πίνακα δεν θεωρείται πράξη. Δεν χρειάζεται να κάνει κάτι ο επεξεργαστής. Απλώς φέρνει την θέση μνήμης που του ζητήθηκε. Οπότε το χ<- Π[ι-1] είναι δύο πράξεις.

Στην Pascal υπήρχε πράγματι διαφορά στην ταχύτητα της Για με την Όσο. Η αύξηση του μετρητή στην Για γινόταν σε γλώσσα μηχανής ή με κάποιον άλλον μαγικό τρόπο και ήταν μία πράξη. Αυτός ήταν και ο λόγος που δεν μπορούσες να αλλάξεις τον μετρητή της Για και όχι οι υπόλοιπες τρίχες του βιβλίου για δήθεν πιο ευανάγνωστο κώδικα. Το πρόβλημα ήταν τεχνικό. Επίσης αυτός ήταν και ο λόγος που τα προγράμματα σε pascal (και basic) ήταν γεμάτα με βρόγχους Για, ενώ οι Όσο σπάνιζαν (τουλάχιστον μέχρι να εμφανιστεί η turbo pascal, αν θυμάμαι καλά).

Προτείνω να μείνετε δογματικά προσκολλημένοι σε ότι λέει το βιβλίο. Αν γράφουν κάτι οι συγγραφείς σημαίνει ότι αυτό ίσχυε τότε, οπότε πάρτε το ως δεδομένο.

Πράγματι η προσπέλαση σε πίνακα δεν έχει λογική να θεωρείται επιπλέον πράξη.
Με δεδομένο αυτο το στοιχείο της pascal δικαιολογείται κάπως και αυτή η ιδιαιτερότητα στη ΓΛΩΣΣΑ.
Προφανώς και πρέπει να διδαχθεί ακριβώς όπως παρουσιάζεται.

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #10 στις: 04 Φεβ 2016, 08:14:47 πμ »
Η προσπέλαση σε πίνακα δεν θεωρείται πράξη. Δεν χρειάζεται να κάνει κάτι ο επεξεργαστής. Απλώς φέρνει την θέση μνήμης που του ζητήθηκε. Οπότε το χ<- Π[ι-1] είναι δύο πράξεις.

Tι εννοείς δεν χρειάζεται να κάνει κάτι ο επεξεργαστής; Πρέπει να υπολογίσει τη διεύθυνση μνήμης με βάση το base address του πίνακα και να μετακινήσει τη μνήμη σε register.  Oυσιαστικά θα πρέπει να κάνει κάτι τέτοιο (υποθέτωντας ότι δεν υπάρχουν optimizations γιατί αλλιώς δεν έχει βάση όλη η συζήτηση):

Κώδικας: [Επιλογή]
mov         eax,dword ptr [i]; Διαβάζει τη τιμή του μετρητή
mov         ecx,dword ptr [ebp + eax * 4 - 4]; Υποθέτωντας ότι το base address του πίνακα είναι στον ebp και ότι είναι πίνακας ακεραίων υπολογίζει το offset και φέρνει τη μνήμη στον ecx
mov         dword ptr [χ],ecx; Γράφει την τιμή του ecx στη μεταβλητή χ

οπότε δεν μπορώ να πω ότι η προσπέλαση του πίνακα δεν είναι πράξη. Αν βέβαια υπάρχει η λογική κάπου στο βιβλίο ότι η προσπέλαση του πίνακα δεν είναι πράξη, προφανώς και είναι 2 οι πράξεις.

« Τελευταία τροποποίηση: 04 Φεβ 2016, 08:34:00 πμ από itt »

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #11 στις: 04 Φεβ 2016, 01:11:07 μμ »
Συμφωνούμε itt. Εννοούσα δεν χρειάζεται να κάνει κάτι ο επεξεργαστής από τις πράξεις όπως τις αντιλαμβάνεται το βιβλίο.

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

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2224
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #12 στις: 04 Φεβ 2016, 01:44:32 μμ »
To θέμα δεν είναι τόσο αυτό, όσο το ότι δεν ασχολήθηκε σοβαρά μια ομάδα καθηγητών για την αποσαφήνιση τέτοιων ασαφειών πριν ενταχθούν στην ύλη αυτά τα κομμάτια
Τι είχες Γιάννη, τι είχα πάντα..
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

tasospap

  • Βετεράνος
  • ****
  • Μηνύματα: 70
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #13 στις: 04 Φεβ 2016, 05:44:48 μμ »
Μπορείτε να καταλάβετε τι γούστα βγάζουν μαζί μας, μαθητές που διαβάζουν αυτό το forum;

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 428
  • Real stupidity beats ΑΙ any time
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #14 στις: 04 Φεβ 2016, 05:59:54 μμ »
Συμφωνούμε itt. Εννοούσα δεν χρειάζεται να κάνει κάτι ο επεξεργαστής από τις πράξεις όπως τις αντιλαμβάνεται το βιβλίο.

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

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

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

Παρόλο που το κεφάλαιο της πολυπλοκότητας σου δίνει τη δυνατότητα πλεον να απορρίψεις κάποιες πολύ κακές λύσεις, πιστεύω ότι δημιουργεί αρκετά περισσότερα προβλήματα από αυτά που λύνει.

Παράθεση
Μπορείτε να καταλάβετε τι γούστα βγάζουν μαζί μας, μαθητές που διαβάζουν αυτό το forum;

Για πες μας. (Δεν το γράφω με ειρωνεία btw)

tasospap

  • Βετεράνος
  • ****
  • Μηνύματα: 70
Απ: Απορία στον υπολογισμό πράξεων σε Για
« Απάντηση #15 στις: 05 Φεβ 2016, 12:32:40 μμ »
Για το ίδιο πρόβλημα δίνουμε 2-3-4 διαφορετικές απαντήσεις χωρίς να ξέρουμε ποια είναι ή σωστή τελικά (ή ποια θα θεωρηθεί σωστή σε επίπεδο πανελλαδικών).  :D :D :D :D :D

Αυτή τη στιγμή ο καθένας διδάσκει το κεφάλαιο 5 σύμφωνα με τα πιστεύω του.....