αλλαγη μετρητη Για

Ξεκίνησε από ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ, 10 Δεκ 2014, 02:32:34 ΜΜ

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

ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ

Καλησπέρα, θα ήθελα να κάνω μία ερώτηση.

Γίνεται να πειράξουμε τον μετρητή της Για μέσα στο βρόχο της;
π.χ. Για i απο 1 μέχρι 45
           διαβασε χ
           Αν (χ=0) τοτε
                i=46
           τελος_αν
       Τέλος επανάληψης

Laertis

Καλό είναι να μην το κάνεις. Είναι μια ΚΑΚΗ προγραμματιστική τακτική. Εφόσον η επαναληπτική δομή που θέλεις ελέγχεται (και) απο συνθήκη (χ=0) είναι προτιμότερη η χρήση της Όσο, οπότε :

  i <-- 1
Διάβασε χ
Όσο χ <> 0 και   i<=45 επανάλαβε
    i <--   i + 1
   Διάβασε χ
Τέλος_επανάληψης
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

programmer

Γενικα αυτο που ρωτησε η στελλα εμενα ου αρεσει παρα πολυ και με εχει σωσει αρκετες φορες και μου χει γλιτωσει και γραμμες κωδικα.μαλιστα δειχνει οποιος το ξερει αυτο οτι εχει καταλαβει εις βαθος τις δομες τις εντολες και πως λειτουργουν.εγω παντως δεν το θεωρω κακη τακτικη ισα ισα εντυπωσιαστηκα και μπραβο απο μενα που το σκεφτηκες

Λαμπράκης Μανώλης

Παράθεση από: programmer στις 12 Φεβ 2015, 06:06:36 ΠΜ
Γενικα αυτο που ρωτησε η στελλα εμενα ου αρεσει παρα πολυ και με εχει σωσει αρκετες φορες και μου χει γλιτωσει και γραμμες κωδικα.μαλιστα δειχνει οποιος το ξερει αυτο οτι εχει καταλαβει εις βαθος τις δομες τις εντολες και πως λειτουργουν.εγω παντως δεν το θεωρω κακη τακτικη ισα ισα εντυπωσιαστηκα και μπραβο απο μενα που το σκεφτηκες

καλημέρα σε όλους

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

programmer

ναι νταξει καλα κανεις και το λες εσυ και οντως το βιβλιο απο οτι θυμαμαι το 2010 που εδινα ετσι το ειχε.αλλα νταξει το χουν κανει πολυ οτι να ναι το μαθημα ενω στην πραγματικοτητα ειναι παρα πολυ ωραιο και ενδιαφερον.και πιστευω οτι ολοι πρεπει να ξεκινησουν μαθαινοντας ΓΛΩΣΣΑ.τωρα στο πανεπιστημιο που εχουμε και τετοια εχω μαθει c c ++ fortran javascript python java php ktl και με βοηθησε πολυ αυτο το μαθημα και πιστευω οτι θα επρεπε να αφηνουν απο το υπουργειο τα παιδια να ανακαλυψουν την ομορφια αυτου του μαθηματος και να μην ζαλιζουν τους καθηγητες πες τα ετσι και καντα ετσι

itt

Παράθεση από: mkouv στις 12 Φεβ 2015, 08:03:04 ΠΜ
καλημέρα σε όλους

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

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

programmer

Παράθεση από: itt στις 13 Φεβ 2015, 12:14:29 ΠΜ
Πολύ καλά κάνει και δεν συμφωνεί με αυτήν την τακτική, δεδομένου ότι είναι εντελώς anti pattern. Ποτέ και για κανέναν λόγο δεν πρέπει να πειράζεται ο μετρήτης της Για έτσι.
εγω απο την αλλη πιστευω οτι ο προγραμματισμος ειναι φαντασια.ο καθενας με τη γνωμη του.απο τη στιγμη που και αυτη η λογικη δουλευει για μενα δεν ειναι λαθος.φυσικα προτιμαται η οσο για τετοιες δουλειες αλλα και αν το κανει καποιος με για δεν ειναι λαθος ασχετα με το αν συνηθιζεται η οχι.βεβαια στις εξετασεις του λυκειου δεν ξερω πως βαθμολογουν διαφοροι.εγω μιλαω γενικα για προγραμματσμο.μαλιστα στο πανεποστημιο οταν ημουν πρωτο ετος μας ειχε πεσει κατι παρομοιο να μετατρεψουμε μια οσο σε για που ειχε και συνθηκη ελεγχου.τωρα αν το υπουργειο για το συγκεκριμενο μαθημα εχει τις δικες του παραξενιες τι να πω.αναθεμα κι αν αυτοι οι τυποι εχουν ιδεα απο προγραμματισμο.

itt

Παράθεση από: programmer στις 13 Φεβ 2015, 12:23:22 ΠΜ
εγω απο την αλλη πιστευω οτι ο προγραμματισμος ειναι φαντασια.ο καθενας με τη γνωμη του.απο τη στιγμη που και αυτη η λογικη δουλευει για μενα δεν ειναι λαθος.φυσικα προτιμαται η οσο για τετοιες δουλειες αλλα και αν το κανει καποιος με για δεν ειναι λαθος ασχετα με το αν συνηθιζεται η οχι.βεβαια στις εξετασεις του λυκειου δεν ξερω πως βαθμολογουν διαφοροι.εγω μιλαω γενικα για προγραμματσμο.μαλιστα στο πανεποστημιο οταν ημουν πρωτο ετος μας ειχε πεσει κατι παρομοιο να μετατρεψουμε μια οσο σε για που ειχε και συνθηκη ελεγχου.τωρα αν το υπουργειο για το συγκεκριμενο μαθημα εχει τις δικες του παραξενιες τι να πω.αναθεμα κι αν αυτοι οι τυποι εχουν ιδεα απο προγραμματισμο.

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

ether

Παράθεση από: programmer στις 13 Φεβ 2015, 12:23:22 ΠΜ
εγω απο την αλλη πιστευω οτι ο προγραμματισμος ειναι φαντασια.ο καθενας με τη γνωμη του.απο τη στιγμη που και αυτη η λογικη δουλευει για μενα δεν ειναι λαθος.φυσικα προτιμαται η οσο για τετοιες δουλειες αλλα και αν το κανει καποιος με για δεν ειναι λαθος ασχετα με το αν συνηθιζεται η οχι.βεβαια στις εξετασεις του λυκειου δεν ξερω πως βαθμολογουν διαφοροι.εγω μιλαω γενικα για προγραμματσμο.μαλιστα στο πανεποστημιο οταν ημουν πρωτο ετος μας ειχε πεσει κατι παρομοιο να μετατρεψουμε μια οσο σε για που ειχε και συνθηκη ελεγχου.τωρα αν το υπουργειο για το συγκεκριμενο μαθημα εχει τις δικες του παραξενιες τι να πω.αναθεμα κι αν αυτοι οι τυποι εχουν ιδεα απο προγραμματισμο.
Μια και σπουδάζεις Πληροφορική, και προφανώς σ' ενδιαφέρει ιδιαίτερα ο προγραμματισμός, καλό είναι να έχεις υπόψη και τα must read για οποιονδήποτε θέλει ν' ασχολείται σοβαρά με development. Δες τι λέει σχετικά με την αλλαγή μετρητή σε ένα for loop ένα από τα κλασσικά must read για developers, το Code Complete του Steve McConnel
https://books.google.gr/books?id=I-83BAAAQBAJ&lpg=PA377&ots=4ER0wHmz8m&dq=Don't%20monkey%20with%20the%20loop%20index%20of%20a%20for%20loop%20to%20make%20the%20loop%20terminate&hl=el&pg=PA377#v=onepage&q=Don't%20monkey%20with%20the%20loop%20index%20of%20a%20for%20loop%20to%20make%20the%20loop%20terminate&f=false

evry

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

ether

#10
Παράθεση από: evry στις 14 Φεβ 2015, 03:08:32 ΜΜ
Στο Code Complete λέει ότι όποιος πειράζει τον μετρητή μέσα στο Για είναι ερασιτέχνης. οκ, γιατί όμως?
Δεν λέει πουθενά γιατί ούτε το τεκμηριώνει. Για ποιο λόγο αυτό είναι κακή πρακτική?
Το ότι το λέει κάποιος όποιος και να είναι αυτός δεν σημαίνει ότι εμείς πρέπει να το δεχτούμε. Ποια ακριβώς είναι τα επιχειρήματα που καθιστούν κάτι τέτοιο πολύ κακό?
1. Διάβασε μια παράγραφο παραπάνω: "Make loop-termination conditions obvious. If you use a for loop and don't fool around with the loop index and don't use a goto or break to get out of the loop, the termination condition will be obvious. Likewise, if you use a while or repeat-until loop and put all the control in the while or repeat-until clause, the termination condition will be obvious. The key is putting the control in one place".
Υποθέτω ότι πολλοί από όσους έχουν συντηρήσει αρκετά κώδικα, θα συμφωνούν σε μεγάλο βαθμό ότι η παραπάνω συμβουλή διευκολύνει πολύ τη συντηρησιμότητα του κώδικα.
2. Προφανώς και δεν πρέπει να το δεχτείς. Καλό είναι όμως να το έχεις κι αυτό στα υπόψη, όπως και τα παραπάνω και παρακάτω που λέει, δηλαδή όλο το βιβλίο. Ειδικά όταν αυτός που τα λέει και το βιβλίο στο οποίο τα αναφέρει χαίρουν εκτιμήσεως πολλών καταξιωμένων ανθρώπων (κι επαγγελματιών) του χώρου του λογισμικού (μεταξύ των οποίων Ralph Johnson, John Vlissides, Diomidis Spinellis, Martin Fowler, Grady Booch, Jon Bentley, Alan Cooper)
http://cc2e.com/Default.aspx?hid=338


evry

το είδα, το καταλαβαίνω το σκεπτικό
και πάλι όμως, δεν θα έλεγα ότι το τεκμηριώνει ιδιαίτερα. Δηλαδή θα ήθελα να δω ένα τρανταχτό ή και ακραίο παράδειγμα που να με πείθει ότι αυτό είναι κακό.
Επίσης λέει ότι δεν πρέπει να χρησιμοποιείς ούτε break, το οποίο όμως το χρησιμοποιούν πάρα πολλά βιβλία.
Επίσης δεν αναφέρεται συγκεκριμένα στην for. μιλάει για οποιαδήποτε δομή επανάληψης.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

programmer



καταρχας δεν σπουδαζω πληροφορικη αλλα ηλεκτρολογος μηχανικος.ακομα το κολπακι αυτο μου το εμαθε εννοω τα πλεονεκτηματα του φιλος μου ο οποιος ασχολειται με χακκιν και πιστεψε με ξερει πιο πολλα απο ολους μας εδω μεσα.και μαλιστα αυτος μου ειχε πει το εξης:αυτοι που ακολου8ουν τους κανονες δεν ξεχωριζουν ποτε.και εγω αυτο με τη για σε διαφορες γλωσσες το εχω κανει και μαλιστα εχω δεχτει και μπραβο απο καθηγητες.ο καθενας λοιπον με τη γνωμη του
ακομα δεν θα με πεισει ενα βιβλιο οτι κατι κανω λαθος επειδη ετσι το λεει ενω αντιθετως το προγραμμα τρεχει μια χαρα.αφηστε λοιπον τα παιδια να μαθουν προγραμματισμο ουσιαστικα αν θελετε και μην τους κανετε το μαθημα σαν το Α.Ο.Δ.Ε

fupat2

#13
Αν κάποιος φτάσει να διαβάζει το loop, σχεδόν με την ίδια ευκολία θα καταλάβει τον κώδικα είτε είναι γραμμένος με τον ένα τρόπο είτε με τον άλλο.

ΠαράθεσηΓια i απο 1 μέχρι 45
           διαβασε χ
           Αν (χ=0) τοτε
                i=46
           τελος_αν
       Τέλος επανάληψης

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

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

Σήμερα όμως; Είναι λογικό να κάνουμε οικονομία στην μνήμη εις βάρος της αναγνωσιμότητας του κώδικα; Τα i και x είναι μια κακιά συνήθεια. Ακόμα και αν γράφεις σε low level προγραμματισμό, η σωστή πρακτική για να είναι αναγνώσιμος ο κώδικάς σου είναι να δίνεις μαζί με τον κώδικά σου και έναν εξωτερικό αρχείο-χάρτη με νοηματικώς σωστά ονόματα μεταβλητών που να αντιστοιχούν στα i και χ που χρησιμοποιείς (λόγω οικονομίας στην μνήμη).

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

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

ether

Παράθεση από: evry στις 14 Φεβ 2015, 05:09:00 ΜΜ
Επίσης λέει ότι δεν πρέπει να χρησιμοποιείς ούτε break, το οποίο όμως το χρησιμοποιούν πάρα πολλά βιβλία.
Επίσης δεν αναφέρεται συγκεκριμένα στην for. μιλάει για οποιαδήποτε δομή επανάληψης.
Αν διαβάσεις παρακάτω, λέει και για περιπτώσεις που μπορεί η χρήση break να οδηγεί σε πιο ευανάγνωστο και ευκολοσυντήρητο κώδικα. Προφανώς όταν λέμε ότι καλό είναι γενικά να κάνουμε κάτι ή να αποφεύγουμε κάτι άλλο, δε σημαίνει ότι δεν υπάρχουν και περιπτώσεις που βολεύει να το κάνουμε ή να μην το κάνουμε. Ακόμη και η εξω-απο-δω GOTO, σε περίπτωση εμφωλευμένου βρόχου με πολλά επίπεδα εμφώλευσης όπου απαιτείται υπό κάποιες συνθήκες η έξοδος από όλα, θα μπορούσε σε κάποιες περιπτώσεις να βολεύει η χρήση της. Αυτό δε σημαίνει ότι γενικά πρέπει να τη χρησινοποιούμε. Απλά καλό είναι να έχουμε υπόψη τι θεωρείται best-practise σε κάποιο πεδίο, για να κρίνουμε καλύτερα και πότε "αξίζει" να αποκλίνουμε.

itt

Παράθεση από: programmer στις 14 Φεβ 2015, 05:09:39 ΜΜ

καταρχας δεν σπουδαζω πληροφορικη αλλα ηλεκτρολογος μηχανικος.ακομα το κολπακι αυτο μου το εμαθε εννοω τα πλεονεκτηματα του φιλος μου ο οποιος ασχολειται με χακκιν και πιστεψε με ξερει πιο πολλα απο ολους μας εδω μεσα.και μαλιστα αυτος μου ειχε πει το εξης:αυτοι που ακολου8ουν τους κανονες δεν ξεχωριζουν ποτε.και εγω αυτο με τη για σε διαφορες γλωσσες το εχω κανει και μαλιστα εχω δεχτει και μπραβο απο καθηγητες.ο καθενας λοιπον με τη γνωμη του
ακομα δεν θα με πεισει ενα βιβλιο οτι κατι κανω λαθος επειδη ετσι το λεει ενω αντιθετως το προγραμμα τρεχει μια χαρα.αφηστε λοιπον τα παιδια να μαθουν προγραμματισμο ουσιαστικα αν θελετε και μην τους κανετε το μαθημα σαν το Α.Ο.Δ.Ε

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

itt

Παράθεση από: fupat2 στις 14 Φεβ 2015, 05:15:09 ΜΜ
Αν κάποιος φτάσει να διαβάζει το loop, σχεδόν με την ίδια ευκολία θα καταλάβει τον κώδικα είτε είναι γραμμένος με τον ένα τρόπο είτε με τον άλλο.

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

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

Σήμερα όμως; Είναι λογικό να κάνουμε οικονομία στην μνήμη εις βάρος της αναγνωσιμότητας του κώδικα; Τα i και x είναι μια κακιά συνήθεια. Ακόμα και αν γράφεις σε low level προγραμματισμό, η σωστή πρακτική για να είναι αναγνώσιμος ο κώδικάς σου είναι να δίνεις μαζί με τον κώδικά σου και έναν εξωτερικό αρχείο-χάρτη με νοηματικώς σωστά ονόματα μεταβλητών που να αντιστοιχούν στα i και χ που χρησιμοποιείς (λόγω οικονομίας στην μνήμη).

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

Ναι οκ, όταν γράφεις for-loop σε οποιαδήποτε γλώσσα σε οποιοδήποτε non trivial codebase το convention που ακολουθείται κατά κανόνα (όπου κατα κανόνα = 99% των περιπτώσεων) είναι να χρησιμοποιείς το i επειδή συνήθως κάνεις index κάποιον πίνακα. Αυτός άλλωστε είναι και ο λόγος που θα έγραφες ένα vanilla for. Ο μοναδικός λόγος που δεν θα έβαζες i είναι επειδή κάνεις κάποια επεξεργασία σε pointers. Οπότε λοιπόν είναι πολύ λογικό να διδάσκεται το i στην Για, αφού καλύπτει μεγαλύτερο πλήθος περιπτώσεων.

ether

Παράθεση από: fupat2 στις 14 Φεβ 2015, 05:15:09 ΜΜ
Αν ήμουν υπουργός παιδείας και έβγαζα κανονισμούς βαθμολόγησης, θα έκοβα μονάδες στον παραπάνω κώδικα για την χρήση των i και χ και όχι γιατί βγαίνει ανορθόδοξα από το Loop.
Μας διαβάζουν και μαθητές...

fupat2

Παράθεση από: ether στις 15 Φεβ 2015, 08:52:08 ΠΜ
Μας διαβάζουν και μαθητές...

Καλά ντε! Μην μαλώνετε!
Είπα και εγώ μια βλακεία , να περάσει η ώρα!   ::)
Νομίζω πάντως ότι η συζήτηση σε αυτό το θρεντ είναι "περι όνου σκιάς"
Η παιδεία είναι άσκηση ελευθερίας, που λυτρώνει τόσο τον μαθητή όσο και τον παιδαγωγό από μια δίδυμη υποδούλωση. Την υποδούλωση της σιωπής (που αφορά κυρίως τον μαθητή) και την υποδούλωση του μονολόγου (που αφορά κυρίως τον παιδαγωγό).

itt

Παράθεση από: fupat2 στις 15 Φεβ 2015, 11:30:35 ΠΜ
Καλά ντε! Μην μαλώνετε!
Είπα και εγώ μια βλακεία , να περάσει η ώρα!   ::)
Νομίζω πάντως ότι η συζήτηση σε αυτό το θρεντ είναι "περι όνου σκιάς"

Το αντίθετο, κάποια πράγματα φαινομενικά μικρά, αξίζει να ξεκαθαριστούν. Το πρόβλημα είναι να μην κάνουμε ηλίθιες γενικεύσεις.

fupat2

Παράθεση από: itt στις 15 Φεβ 2015, 06:15:32 ΜΜ
Το αντίθετο, κάποια πράγματα φαινομενικά μικρά, αξίζει να ξεκαθαριστούν.

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

Και είναι και θέμα γούστου στην τελική.

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

programmer

Σε αυτο που λεμε ειναι οτι φυσικα και ο κανονας ελεγχου ειναι με οσο αλλα μερικες φορες αξιζει να παραστρατα κανεις.πχ σε μια ασκηση που εκανα εχτες απο εδω για εξασκηση μια με ποδοσφαιρο ηταν σε ενα σημειο που η οσο το παρατραβουσε με τους ελεγχους κτλ και επρεπε να βαλω μαλιστα 2 οσο.ζητουσε το προγραμμα να δωσει μια τιμη ο χρηστης και επρεπε να ελεγξω αν υπαρχει σε εναν πινακα.αν υπηρχε ξεραμε οτι ειναι μοναδικη.ε εβαλα λοιπον στην δευτερη για μεσα που ηταν απο 1 μεχρι 5 (το ιδιο και η πρωτη) i<-6 j<-6 μολις βρει το στοιχειο ωστε να μην συνεχιζουν οι ασκοπες επαναληψεις.ακομα ετσι δεν χρειαστηκα νεες μεταβλητες του τυπου βρεθηκε ωστε να σταματαει η οσο χρησιμοποιησα αυτες που ειχα ηδη γιατι ειχα ηδη αρκετες μεταβλητες και ηθελα οσο να ναι να τις περιορισω.αυτο εννοω εγω οτι μερικες φορες αξιζει να παραστρατεις.φυσικα για αυτους που ειναι τριτη λυκειου εγω προσωπικα λεω καλυτερα να μαθουν τωρα να δουλευουν με τους κανονες και στο πανεπιστημιο ασ πειραματιστουν οσο θελουν απλα αυτο που ειπα ειναι οτι πτοσωπικα εγω παραδεχομαι ενα παιδι τριτης λυκειου που εχει καταλαβει οτι η ΓΙΑ μπορει να χρησιμοποιηθει και ετσι γιατι αυτο σημαινει οτι δεν τα μαθαινει παπαγαλια στυλ αοδε αλλα εχει καταλαβει σε βαθος πως λειτουργει ενας αλγοριθμος/προγραμμα

programmer

Και κατι ακομα.στο λυκειο ειχα μαθει οτι το πλεονεκτημα της οσο εναντι της ΓΙΑ ειναι οτι μπορει να χρησιμοποιηθει παντα και παντου ενω η ΓΙΑ μονο οταν ξερω ποσες επαναληψεις θα κανω. αυτο φυσικα οπως καταλαβα τωρα που ασχολουμαι με προγραμματισμο οχι επειδη μου το εχει δειξει καποιος το συγκεκριμενο αλλα εμπειρικα ειναι οτι και η ΓΙΑ μπορει να χρησιμοποιηθει παντα και παντου χωρις καμια απολυτως εξαιρεση.το θεμα ειναι οτι θα ειναι 'ανορθοδοξος'
ο αλγοριθμος μας.πχ να γινει αλγοριθμος που θα διαβαζει αριθμους και θα τους εμφανιζει μεχρι ο χρηστης να δωσει τον αριθμο 0. ΤΕΛΕΙΩΣ ανορθοδοξο φυσικα!!!
απλα επειδη ειπα οτι παντα μπορω να χρησιμοποιησω την ΓΙΑ.

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 1
    ΔΙΑΒΑΣΕ ΑΡΙΘΜΟΣ
    ΑΝ ΑΡΙΘΜΟΣ <> 0 ΤΟΤΕ
      ΓΡΑΨΕ "ΜΟΥ ΕΔΩΣΕΣ ΤΟ ", ΑΡΙΘΜΟΣ
      Ι <- Ι - 1
    ΑΛΛΙΩΣ
      Ι <- 2
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

petrosp13

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

Laertis

......  ??? έχει χαθεί εντελώς το μέτρο ή μου φαίνεται ; Τι προσπαθείς να (μας) αποδείξεις programmer ;
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

programmer

αυτο που ακριβως ειπα οτι η για μπορει να χρησιμοποιηθει παντα.αλλα οπως ειπα και συμφωνω μαζι σας καποιες φορες ειναι πολυ προτιμοτερη η οσο και η για πρεπει να αποφευγεται.και ναι η ΓΙΑ για αυτο ακριβως υπαρχει. μερικες φορες ενας κωδικας ειναι πολυ πιο ευκολονοητος με οσο και αλλες φορες με για.το παραδειγμα που εδωσα παραπανω ειναι απλα για να δειξω οτι η για μπορει να κανει ακριβως τις ιδιες ενεργειες χωρις να δημιουργει σφαλματα.ακομα για γνωστες επαναληψεις εχει επικρατησει η χρηση της για συντομια του κωδικα εναντι της οσο.ετσι οταν εχουμε εναν μεγαλο κωδικα και εχουμε πολλες για και οσο ο αλλος να καταλαβαινει ευκολα τι κανει ο αλγοριθμος πχ οταν θα δει οσο ή για. σε περιπτωσεις λοιπον που ξερουμε ποσες επαναληψεις θα κανουμε η ΓΙΑ προσφερει ιδια αποτελεσματα γλιτωνοντας καποιες γραμμες κωδικα και επισης ο αλλος που διαβαζει τον κωδικα καταλαβαινει πιο ευκολα τι κανουμε και ποσες επαναληψεις.ενω με την οσο πχ θα καταλαβει οτι ελεγχουμε αν κατι ισχυει για να συνεχιστει η επαναληψη.το παραδειγμα που εδωσα ηταν φυσικα τελειως ακραιο και πρεπει να αποφευγεται για τους λογους που ειπαμε.ακομα η οσο με τη για και ποτε χρησιμοποιουμε το ενα και ποτε το αλλο βοηθαει τους μαητες τριτς λυκειου να τα διαχωρισουν στο μυαλο τους και να καταλαβουν καλυτερα καποια πραγματα.προσωπικα εμενα παντως αν καποιος εφτιαχνε εναν αλγοριθμο με μονο για και καθολου οσο για προσωπικη του χρηση δεν θα με ενοχλουσε καθολου.αν βεβαια δουλευε σε εταιριες που συνεργαζονται πολλοι ανθρωποι και φτιαχνει ο καθενας δικο του κομματι κωδικα πρεπει να γινει οσο πιο απλο γινεται και κατανοητο και τοτε while kai for χρησιμοποιουνται οπως γνωριζουμε.δλδ αν ενας θελέι να φτιαξει εναν αλγοριθμο με μονο για και χωρις οσο για την πλακα του και για δικη του χρηση θα του πω εγω:αυτο που εκανες ειναι λαθος.και θα μου πει αυτος:o compiler διαφωνει μαζι σου μιας και οτι ηθελα να κανει το προγραμμα το κανει μια χαρα.αυτο λοιπον που θελω να πω ειναι πως αν ενας αλγοριθμος ειναι για προσωπικη χρηση ας γινει οσο ανορθοδοξα θελει.αν ειναι σε εταιριες η συνεργαζονται πολλα ατομα πρεπει να γινει οσο πιο απλος γινεται για να τον καταλαβουν ολοι και να μπορουν ευκολα να διορθωθουν σφαλματα.αυτα

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

Πολύ το μπλέκουμε το πράγμα! Να με συγχωρείς αλλά το πλαίσιο της ΑΕΠΠ είναι πιο συγκεκριμένο από αυτό που προσπαθείς να πεις...!

Υ.Γ. Βάλε και κανένα τόνο και κανένα κεφαλαίο που και που!

ether

#27
Παράθεση από: programmer στις 16 Φεβ 2015, 11:54:16 ΜΜ
το παραδειγμα που εδωσα παραπανω ειναι απλα για να δειξω οτι η για μπορει να κανει ακριβως τις ιδιες ενεργειες χωρις να δημιουργει σφαλματα
Όχι σε όλες τις γλώσσες. Π.χ. σε διάφορες "εκδόσεις" της PASCAL και της FORTRAN, η απόπειρα αλλαγής του μετρητή της FOR στο σώμα της επανάληψης είναι συντακτικό σφάλμα.
Επίσης, από θεωρητική σκοπιά, στη Θεωρία Υπολογισιμότητας ορίζονται οι έννοιες του LOOP program και του WHILE program. Ένα LOOP πρόγραμμα (που από δομές επανάληψης περιέχει μόνο τη LOOP, κάτι σαν τη FOR/ΓΙΑ δηλαδή) τερματίζει πάντοτε. Αντίθετα, υπάρχουν WHILE προγράμματα που περιέχουν και δομές επανάληψης WHILE, τα οποία μπορεί και να μην τερματίσουν ποτέ. Στις γλώσσες προγραμματισμού που επιτρέπουν την αλλαγή της τιμής του μετρητή ή υποστηρίζουν την εντολή break κ.α., προκειμένου να διευκολύνεται ο προγραμματιστής σε συγκεκριμένες περιπτώσεις, προφανώς δεν ισχύει αυτή η διαφορά.

evry

με διαφορά η πιο εύστοχη παρατήρηση σε αυτή τη συζήτηση....
Παράθεση από: Laertis στις 16 Φεβ 2015, 03:16:54 ΜΜ
......  ??? έχει χαθεί εντελώς το μέτρο ή μου φαίνεται ; Τι προσπαθείς να (μας) αποδείξεις programmer ;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

fupat2

Μάλλον το παρακάτω θέλει να πει: ::)

Παράθεση από: programmer στις 16 Φεβ 2015, 11:54:16 ΜΜ
Aυτο που ακριβως ειπα οτι η για μπορει να χρησιμοποιηθει παντα.
Aλλα οπως ειπα και συμφωνω μαζι σας καποιες φορες ειναι πολυ προτιμοτερη η οσο και η για πρεπει να αποφευγεται.
Kαι ναι η ΓΙΑ για αυτο ακριβως υπαρχει.
Mερικες φορες ενας κωδικας ειναι πολυ πιο ευκολονοητος με οσο και αλλες φορες με για.
Tο παραδειγμα που εδωσα παραπανω ειναι απλα για να δειξω οτι η για μπορει να κανει ακριβως τις ιδιες ενεργειες χωρις να δημιουργει σφαλματα.
Aκομα για γνωστες επαναληψεις εχει επικρατησει η χρηση της για συντομια του κωδικα εναντι της οσο.
Eτσι οταν εχουμε εναν μεγαλο κωδικα και εχουμε πολλες για και οσο ο αλλος να καταλαβαινει ευκολα τι κανει ο αλγοριθμος πχ οταν θα δει οσο ή για.
Σε περιπτωσεις λοιπον που ξερουμε ποσες επαναληψεις θα κανουμε η ΓΙΑ προσφερει ιδια αποτελεσματα γλιτωνοντας καποιες γραμμες Κωδικα και επισης ο αλλος που διαβαζει τον κωδικα καταλαβαινει πιο ευκολα τι κανουμε και ποσες επαναληψεις.ενω με την οσο πχ θα καταλαβει οτι ελεγχουμε αν κατι ισχυει για να συνεχιστει η επαναληψη.
Το παραδειγμα που εδωσα ηταν φυσικα τελειως ακραιο και πρεπει να αποφευγεται για τους λογους που ειπαμε.
Ακομα η οσο με τη για και ποτε χρησιμοποιουμε το ενα και ποτε το αλλο βοηθαει τους μαητες τριτς λυκειου να τα διαχωρισουν στο μυαλο τους και να καταλαβουν καλυτερα καποια πραγματα.
Προσωπικα εμενα παντως αν καποιος εφτιαχνε εναν αλγοριθμο με μονο για και καθολου οσο για προσωπικη του χρηση δεν θα με ενοχλουσε καθολου.
Αν βεβαια δουλευε σε εταιριες που συνεργαζονται πολλοι ανθρωποι και φτιαχνει ο καθενας δικο του κομματι κωδικα πρεπει να γινει οσο πιο απλο γινεται και κατανοητο και τοτε while kai for χρησιμοποιουνται οπως γνωριζουμε.
Δλδ αν ενας θελέι να φτιαξει εναν αλγοριθμο με μονο για και χωρις οσο για την πλακα του και για δικη του χρηση θα του πω εγω:"αυτο που εκανες ειναι λαθος."
Και θα μου πει αυτος:"o compiler διαφωνει μαζι σου μιας και οτι ηθελα να κανει το προγραμμα το κανει μια χαρα."
Αυτο λοιπον που θελω να πω ειναι πως αν ενας αλγοριθμος ειναι για προσωπικη χρηση ας γινει οσο ανορθοδοξα θελει.
Αν ειναι σε εταιριες η συνεργαζονται πολλα ατομα πρεπει να γινει οσο πιο απλος γινεται για να τον καταλαβουν ολοι και να μπορουν ευκολα να διορθωθουν σφαλματα.

Αυτα

πάντως Programmer , αν θες να κάνεις ακόμα πιο δύσκολο να σε διαβάζουν, δοκίμασε να γράφεις και έτσι:

Παράθεση από: programmer στις 16 Φεβ 2015, 11:54:16 ΜΜ
αυτο που αιβκρως ειπα οτι η για μρποει να χροποησιμιηθει πτανα.αλλα οπως ειπα και σφωυμνω μαζι σας κοιαπες φεορς ειναι πολυ πμοτερροτιη η οσο και η για περεπι να αγετποφευαι.και ναι η ΓΙΑ για αυτο αριβκως υρχπαει. μρικεες φεορς ενας κδικωας ειναι πολυ πιο ευονοκολητος με οσο και αλελς φεορς με για.το παδαρειγμα που εσδωα ππααρανω ειναι απλα για να δξειω οτι η για μρποει να κανει αβκριως τις ιδιες εγεινερες χωρις να δυρημιογει σαφαλμτα.ακομα για γστενως εαληπανψεις εχει εατηπικρσει η χσρηη της για σμιυντοα του κδικωα ετνανι της οσο.

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

programmer

Παράθεση από: ether στις 17 Φεβ 2015, 01:02:12 ΠΜ
Όχι σε όλες τις γλώσσες. Π.χ. σε διάφορες "εκδόσεις" της PASCAL και της FORTRAN, η απόπειρα αλλαγής του μετρητή της FOR στο σώμα της επανάληψης είναι συντακτικό σφάλμα.
Επίσης, από θεωρητική σκοπιά, στη Θεωρία Υπολογισιμότητας ορίζονται οι έννοιες του LOOP program και του WHILE program. Ένα LOOP πρόγραμμα (που από δομές επανάληψης περιέχει μόνο τη LOOP, κάτι σαν τη FOR/ΓΙΑ δηλαδή) τερματίζει πάντοτε. Αντίθετα, υπάρχουν WHILE προγράμματα που περιέχουν και δομές επανάληψης WHILE, τα οποία μπορεί και να μην τερματίσουν ποτέ. Στις γλώσσες προγραμματισμού που επιτρέπουν την αλλαγή της τιμής του μετρητή ή υποστηρίζουν την εντολή break κ.α., προκειμένου να διευκολύνεται ο προγραμματιστής σε συγκεκριμένες περιπτώσεις, προφανώς δεν ισχύει αυτή η διαφορά.
ναι δεν μιλησα για ολες τις γλωσσες που υπαρχουν σε μερικες δεν γινεται.συγκεκριμενα στο διερμηνευτη γλωσσας το αναγνωριζει παντως.και δεν ειπα κανεις να γραφει ετσι.ειπα οτι αν καποιος θελει να γραφει ετσι για προσωπικη χρηση του αλγοριθμου του δικαιωμα του και δεν πεφτει λογος σε κανεναν κατα τη γνωμη μου.

programmer

Παράθεση από: fupat2 στις 17 Φεβ 2015, 05:01:46 ΜΜ
Μάλλον το παρακάτω θέλει να πει: ::)

πάντως Programmer , αν θες να κάνεις ακόμα πιο δύσκολο να σε διαβάζουν, δοκίμασε να γράφεις και έτσι:
εγω φιλε μου ως τωρα σε ασκησεις που ηθελαν προγραμματισμο και εφαρμογουλες που κανουμε πχ javascript c++ ktl δεν ειχα κανενα παραπονο απο καθηγητες για τους κωδικες μου.και ουτε γραφω ακαταλαβιστικα.απλα εχω φτασει σε ενα σημειο που επιτρεψε μου να σου πω οτι εχω το δικαιωμα να πιστευω οτ καποιες φορες καποιος αξιζει να παραστρατησει δεν λεω σε ολον τον κωδικα.εγω οποτε εχω κανει τετοια παραστρατηματα να το πω ετσι το χειροτερο που εχω ακουσει ειναι :πολυ σωστος κωδικας απλα δεν συνηθιζεται αυτο που εχεις κανει στις 4-5 γραμμες αυτες στο σημειο αυτο.τις πιο πολλες φορες ισα ισα εχω δεχτει και μπραβο απο καποιους καθηγητες πανεπιστημιου ή καποιοι αλλοι απλα δεν το σχολιασαν θεωρωντας το φυσιολογικο.΄και ειπαμε δεν το κανω συνεχως σπανια.αλλα απο την αλλη εγω ξερω οτι τα κολλημενα ατομα που ακολου8ουν παντοτε τους κανονισμους ποτε δεν εχουν κανει κατι σπουδαιο.το ειρωνικο σχολιο που μου λες αν θες γραφε και ετσι οκ νταξει μου θυμιζει στυλ ελενης λουκα που οταν υπαρχει φιλι σε ενα εργο ειναι εξω απο το σινεμα και λεει αντιχριστοι θα πεθανετε ολοι.χαχα.για αυτο πειτε οτι θελετε.δεν νομιζω οτι επειδη ειπα οτι καμια φορα αξιζει καποιος να παραστρατει ηταν τοσο σοβαρο ωστε να δεχτω ομοβροντια σχολιων.καθηγητες που θαυμαζω με τρομερη δουλεια δεν ειχαν ποτε κανενα παραπονο.τωρα τι να πω.το οτι ειστε καθηγητες δεν σημαινει οτι ξερετε τα παντα ουτε οτι οτι λετε εχετε δικιο.αυτα

Λαμπράκης Μανώλης

Παράθεση από: programmer στις 17 Φεβ 2015, 09:49:09 ΜΜ
το οτι ειστε καθηγητες δεν σημαινει οτι ξερετε τα παντα ουτε οτι οτι λετε εχετε δικιο.αυτα

Φίλε programmer καλημέρα

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

φιλικά

fupat2

Παράθεση από: programmer στις 17 Φεβ 2015, 09:49:09 ΜΜ
καθηγητες που θαυμαζω με τρομερη δουλεια δεν ειχαν ποτε κανενα παραπονο.
τι τερρομή δείουλα έυχον κεάνι οι κγηταθηές που θάζαυμεις;
::)
Η παιδεία είναι άσκηση ελευθερίας, που λυτρώνει τόσο τον μαθητή όσο και τον παιδαγωγό από μια δίδυμη υποδούλωση. Την υποδούλωση της σιωπής (που αφορά κυρίως τον μαθητή) και την υποδούλωση του μονολόγου (που αφορά κυρίως τον παιδαγωγό).

itt

Παράθεση από: programmer στις 17 Φεβ 2015, 09:49:09 ΜΜ
εγω φιλε μου ως τωρα σε ασκησεις που ηθελαν προγραμματισμο και εφαρμογουλες που κανουμε πχ javascript c++ ktl δεν ειχα κανενα παραπονο απο καθηγητες για τους κωδικες μου.και ουτε γραφω ακαταλαβιστικα.απλα εχω φτασει σε ενα σημειο που επιτρεψε μου να σου πω οτι εχω το δικαιωμα να πιστευω οτ καποιες φορες καποιος αξιζει να παραστρατησει δεν λεω σε ολον τον κωδικα.εγω οποτε εχω κανει τετοια παραστρατηματα να το πω ετσι το χειροτερο που εχω ακουσει ειναι :πολυ σωστος κωδικας απλα δεν συνηθιζεται αυτο που εχεις κανει στις 4-5 γραμμες αυτες στο σημειο αυτο.τις πιο πολλες φορες ισα ισα εχω δεχτει και μπραβο απο καποιους καθηγητες πανεπιστημιου ή καποιοι αλλοι απλα δεν το σχολιασαν θεωρωντας το φυσιολογικο.΄και ειπαμε δεν το κανω συνεχως σπανια.αλλα απο την αλλη εγω ξερω οτι τα κολλημενα ατομα που ακολου8ουν παντοτε τους κανονισμους ποτε δεν εχουν κανει κατι σπουδαιο.το ειρωνικο σχολιο που μου λες αν θες γραφε και ετσι οκ νταξει μου θυμιζει στυλ ελενης λουκα που οταν υπαρχει φιλι σε ενα εργο ειναι εξω απο το σινεμα και λεει αντιχριστοι θα πεθανετε ολοι.χαχα.για αυτο πειτε οτι θελετε.δεν νομιζω οτι επειδη ειπα οτι καμια φορα αξιζει καποιος να παραστρατει ηταν τοσο σοβαρο ωστε να δεχτω ομοβροντια σχολιων.καθηγητες που θαυμαζω με τρομερη δουλεια δεν ειχαν ποτε κανενα παραπονο.τωρα τι να πω.το οτι ειστε καθηγητες δεν σημαινει οτι ξερετε τα παντα ουτε οτι οτι λετε εχετε δικιο.αυτα

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

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

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

marvic

Καλησπέρα σε όλους. Θα ήθελα να θέσω μια ερώτηση..
στην δομή επανάληψης της ΓΙΑ γίνεται η αρχική τιμή και η τελική ή ακόμα και το βήμα, να είναι μεταβλητές και να αλλάζει η τιμή τους εντός του βρόχου;;

petrosp13

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

bugman

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

2. Κανονικά μια ΓΙΑ θα δώσει συγκεκριμένο αριθμό περασμάτων στο κώδικα. Αυτό δεν αποκλείει εντός του κώδικα μια άλλη μεταβλητή να αλλάζει τιμές με μεταβλητό βήμα, και αυτό να γίνεται υπό συνθήκες όπου μετέχει και η τιμή του μετρητή. Προφανώς η αρχική τιμή και αυτής της μεταβλητής θα πρέπει να έχει δηλωθεί πριν ξεκινήσουμε τη ΓΙΑ, άρα μιλάμε μόνο για την μεταβολή της με τα βήματα της ΓΙΑ.
3. Δεν γίνεται να αρχικοποιούμε κάτι εντός μιας δομής επανάληψης εκτός από αυτό: Σε ένα υποπρόγραμμα όπου καλούμε με την ΚΑΛΕΣΕ θα έχουμε αρχικοποίηση μεταβλητών (τοπικών). Στη ΓΛΩΣΣΑ όμως δεν μπορούν να δηλωθούν στατικές μεταβλητές, δηλαδή μεταβλητές που θα κρατήσουν το περιεχόμενό τους και για την επόμενη κλήση, έτσι πρακτικά η διαδικασία που θα κληθεί εντός μιας ΓΙΑ θα ρυθμίζεται βάσει των παραμέτρων που ζητάει, ώστε να έχουμε πάντα για ίδιες τιμές παραμέτρων την ίδια απόκριση.
4. Τον κώδικα εντός της ΓΙΑ δεν μπορούμε να τον δούμε ως μια διαδικασία, γιατί σε αυτόν μπορούμε να χρησιμοποιήσουμε μεταβλητές που μεταβλήθηκαν πριν τη ΓΙΑ, άρα η απόκριση του κώδικα δεν είναι απλά συνάρτηση του μετρητή.

tpakis

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

evry

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

tpakis

Κατάλαβα ευχαριστώ πάρα πολύ!

G.S.

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

Δίνεται το παρακάτω αλγοριθμικό κομμάτι .
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
  ΔΙΑΒΑΣΕ Χ
  ΓΡΑΨΕ Χ
  Ι<--10
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Αυτό θα εκτελεστεί μια φορά 


Ή κάτι πιο αφαιρετικό,πχ:
Στις εντολές της ΓΙΑ μπορεί να γίνεται αλλαγή της τιμής του μετρητή της ΓΙΑ
Σιαφάκας Γιώργος
ΠΕ19

petrosp13

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

bugman

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

G.S.

Ευχαριστώ ! Και εγώ σε αυτή τη λογική ήμουν αλλά ερχόταν συχνά μαθητές με διαφορετικές απόψεις, αυτό το κλασσικό "κάποιος μου είπε ότι....". Οπότε δεν αλλάζω γραμμή! Καλό βράδυ
Σιαφάκας Γιώργος
ΠΕ19