Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επανάληψης => Μήνυμα ξεκίνησε από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 06 Ιαν 2015, 05:02:05 ΜΜ

Τίτλος: Εύρεση min max
Αποστολή από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 06 Ιαν 2015, 05:02:05 ΜΜ
Καλησπέρα και καλή χρονιά σε όλη την ομάδα!

Θέλω να ρωτήσω αν η παρακάτω λύση της συγκεκριμένης άσκησης είναι σωστή.

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

Λύση:

Για i από 1 μέχρι Κ
    Διάβασε χ
    Αν ( i=1) τοτε
         min ←  χ
         max← χ
    Αλλιώς_αν (χ < min) τότε
      min ← χ
    Αλλιώς
      max ← χ
  Τέλος_επανάληψης
  Εκτύπωσε min, max
Τίτλος: Απ: Εύρεση min max
Αποστολή από: sstergou στις 06 Ιαν 2015, 05:14:36 ΜΜ
Δεν είναι σωστή αφού θεωρεί ως μέγιστο κάθε αριθμό που είναι μεγαλύτερος ή ίσος του ελάχιστου.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 06 Ιαν 2015, 09:51:54 ΜΜ
Δηλαδή αυτό είναι σωστό;

Για i από 1 μέχρι Κ
    Διάβασε χ
    Αν ( i=1) τοτε
         min ←  χ
         max← χ
    Αλλιώς_αν (χ < min) τότε
      min ← χ
    Αλλιώς_αν (χ>max) τότε
      max ← χ
    Τέλος_αν
  Τέλος_επανάληψης
  Εκτύπωσε min, max

Το 1ο που είναι λαθός κατά τη γνώμη μου ειίναι το μπλοκ των εντολών     Αν ( i=1) τοτε
                                                                                                                      min ←  χ
                                                                                                                       max← χ

Δεν πρέπει η αρχικοποίηση να γίνεται έξω από την επανάληψη;;;
Τίτλος: Απ: Εύρεση min max
Αποστολή από: sstergou στις 06 Ιαν 2015, 10:15:01 ΜΜ
Είναι άκομψο και λίγο "χαζό" (αφού συνεχώς ελέγχει την τιμή του μετρητή) αλλά το αποτέλεσμα που βγάζει είναι σωστό.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: Laertis στις 06 Ιαν 2015, 10:23:51 ΜΜ
Δεν είναι λάθος να ελέγχεις Αν  i=1 , αλλά λίγο "χαζό" όπως είπε ο Στάθης να ελέγχεις Κ φορές κάτι που ισχύει μόνο μιά φορά. Απο την άλλη δε μπορείς να κάνεις αυθαίρετη αρχικοποίηση παρά μόνο αν γνωρίζεις το διάστημα τιμών του χ. Οπότε μια άλλη λύση είναι η παρακάτω :

Διάβασε χ
min ←  χ
max← χ
Για i από 1 μέχρι Κ-1
    Διάβασε χ
    Aν χ < min τότε  min ← χ
    Aν χ>max τότε   max ← χ
Τέλος_επανάληψης
  Εκτύπωσε min, max
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 06 Ιαν 2015, 10:34:10 ΜΜ
Η οποία βολεύει σε περιπτώσεις που τα ερωτήματα είναι λίγα και ο κώδικας που θα προστεθεί πριν την επανάληψη σχετικά μικρός, ώστε να είναι μια κομψή λύση
Γενικά, οι 3 αυτοί τρόποι (1.μια επανάληψη λιγότερη, 2.i=1, 3. αυθαίρετες αρχικές τιμές) έχουν πλεονεκτήματα και μειονεκτήματα που πρέπει ο μαθητής να μπορεί να ζυγίσει και να επιλέξει
Τίτλος: Απ: Εύρεση min max
Αποστολή από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 07 Ιαν 2015, 12:51:29 ΠΜ
Υπάρχει περίπτωση να κοπούν μονάδες στις πανελλήνιες αν υπάρχει το ----> Αν (i=1) ;;;;

Θεωρώ ότι είναι σαν να μην γνωρίζει ο μαθητής ότι γίνεται Κ φορές ένας άχρηστος έλεγχος και επίσης ότι προγραμματιστικά δεν είναι ότι καλύτερο. Τι γνώμη έχετε;
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 07 Ιαν 2015, 01:03:42 ΠΜ
Από την άλλη, έχει το πλεονέκτημα της γενικότητας, χωρίς να κάνει τον κώδικα μη κομψό λόγω τεράστιου όγκου
Γενικότητα γιατί δεν θα χρειαστεί διαφορετικές ακραίες αρχικές τιμές για τα max-min για κάθε πρόβλημα και κομψή διότι δεν απαιτούνται εντολές προ επανάληψης
Λόγω πολυπλοκότητας και απασχόλησης πόρων παρουσιάζει μειονέκτημα, αλλά σχεδόν αμελητέο
Σε καμία περίπτωση δεν είναι λάθος
Τίτλος: Απ: Εύρεση min max
Αποστολή από: itt στις 07 Ιαν 2015, 10:11:17 ΠΜ
Παράθεση από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 07 Ιαν 2015, 12:51:29 ΠΜ
Υπάρχει περίπτωση να κοπούν μονάδες στις πανελλήνιες αν υπάρχει το ----> Αν (i=1) ;;;;

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

Εντάξει είναι από κάθε άποψη γελοίο να κόψεις για κάτι τέτοιο μονάδες. Πέρα από ότι δεν μας ενδιαφέρει το τι είναι "προγραμματιστικά καλύτερο", το συγκεκριμένο ειδικά, από προγραμματιστικής άποψης δεν έχει καμια σημασία.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: evry στις 07 Ιαν 2015, 01:43:29 ΜΜ
Να το δεχτούμε?

Κώδικας (pascal) [Επιλογή]

Για i από 1 μέχρι 100
   Για j από 1 μέχρι 100
      Αν i=j Τότε  Εμφάνισε i
Τέλος_Επανάληψης


τις παίρνει τις μονάδες του?
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 07 Ιαν 2015, 02:00:27 ΜΜ
Δεν νομίζω ότι είναι ταυτόσημης πολυπλοκότητας ή λογικής
Το

Κώδικας (pascal) [Επιλογή]
Αν i=1 τότε
max <-- x
Τέλος_Αν


έχει πολύ απλή λογική, δεν αυξάνει σημαντικά την πολυπλοκότητα και κάνει πολύ κομψό τον κώδικα χωρίς αυθαιρεσίες
Τίτλος: Απ: Εύρεση min max
Αποστολή από: evry στις 07 Ιαν 2015, 05:37:55 ΜΜ
ταυτόσημης πολυπλοκότητας δεν είναι αλλά είναι ταυτόσημης λογικής.
Αυτό που παρέθεσα παραπάνω , κάνει το ίδιο πράγμα όχι μόνο για i=1 αλλά για όλα.
Το πρόβλημα είναι αυτό ακριβώς η λογική. Δηλαδή το θέμα είναι παιδαγωγικό και όχι επιστημονικό.
Δεν μπορείς να ελέγχεις για ι=1 όταν η τιμή αυτή έχει περάσει, αυτό δείχνει έλλειμμα κατανόησης.
Έχω μια ευαισθησία με το συγκεκριμένο θέμα γιατί πολλοί μαθητές μου στο σχολείο μαθαίνουν από το φροντιστήριο αυτή την τεχνική η οποία δουλεύει σχεδόν παντού χωρίς να καταλαβαίνουν ακριβώς τι γίνεται. Και το χειρότερο είναι ότι το χρησιμοποιούν μετά και στους πίνακες όπου εκεί δεν υπάρχει κανένας λόγος.
Κατά τη γνώμη μου είναι ένας στρεβλός τρόπος σκέψης που τυποποιεί κάποια πράγματα και καλό θα ήταν να τον χρησιμοποιούμε μόνο σε περιπτώσεις που είναι απολύτως απαραίτητο.

ΥΓ. Και διαφωνώ και με το κατά πόσο κάτι τέτοιο θεωρείται κομψό. μάλλον concise εννοείς
Τίτλος: Απ: Εύρεση min max
Αποστολή από: itt στις 07 Ιαν 2015, 05:41:16 ΜΜ
Παράθεση από: evry στις 07 Ιαν 2015, 01:43:29 ΜΜ
Να το δεχτούμε?

Κώδικας (pascal) [Επιλογή]

Για i από 1 μέχρι 100
   Για j από 1 μέχρι 100
      Αν i=j Τότε  Εμφάνισε i
Τέλος_Επανάληψης


τις παίρνει τις μονάδες του?

Αυτό είναι αρκετά πιο περίπλοκο από εκείνο που έγραψε η νηματοθέτρια.

Η πρώτη περίπτωση μεταφέρει ακριβώς στον αναγνώστη τις διαθέσεις του συγγραφέα. Επίσης "προγραμματιστικά" δεν βλέπω που είναι το πρόβλημα. Η προγραμματιστική προσέγγιση στην καλύτερη περίπτωση ειναι να αναλύσεις την πολυπλοκότητά του, η οποία ειναι ακριβώς η ίδια όπου και να βάλεις την αρχικοποίηση.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: evry στις 07 Ιαν 2015, 05:51:22 ΜΜ
αυτό που παρέθεσα για ι=1 είναι το ίδιο με αυτό που δόθηκε αρχικά. Έχει την ίδια λογική απλά δείχνει λίγο ακραία ότι κάτι δεν πάει καλά με αυτό το σκεπτικό.
όπως είπα και πριν δεν είναι θέμα πολυπλοκότητας αλλά φιλοσοφίας και τρόπου σκέψης

Παράθεση από: itt στις 07 Ιαν 2015, 05:41:16 ΜΜ
Η προγραμματιστική προσέγγιση στην καλύτερη περίπτωση ειναι να αναλύσεις την πολυπλοκότητά του, η οποία ειναι ακριβώς η ίδια όπου και να βάλεις την αρχικοποίηση.

δεν είναι η ίδια, προφανώς εννοείς τάξη πολυπλοκότητας και όχι πολυπλοκότητα που είναι η συνάρτηση T(N)
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 07 Ιαν 2015, 05:58:00 ΜΜ
Ποιος είναι ο κατάλληλος τρόπος εύρεσης μεγίστου με γνωστό αριθμό επαναλήψεων;
Τίτλος: Απ: Εύρεση min max
Αποστολή από: evry στις 07 Ιαν 2015, 06:01:33 ΜΜ
ο κατάλληλος είναι αυτός τον οποίο θα εφάρμοζες στο χαρτί, δηλαδή ο αλγόριθμος που θα σχεδίαζες στο φυσικό μοντέλο του πραγματικού κόσμου και όχι στο μοντέλο της νοητής μηχανής για την οποία προγραμματίζουμε. Τι θέλω να πω τώρα.
Αν σου έλεγα το εξής σενάριο
Σου δίνω αριθμούς (έναν-έναν) και βρες μου ποιος είναι ο μεγαλύτερος.
Μετά τον πρώτο αριθμό θα με ρώταγες συνέχεια ποιος είναι ο πρώτος;

Παράθεση από: petrosp13 στις 07 Ιαν 2015, 05:58:00 ΜΜ
Ποιος είναι ο κατάλληλος τρόπος εύρεσης μεγίστου με γνωστό αριθμό επαναλήψεων;
Τίτλος: Απ: Εύρεση min max
Αποστολή από: itt στις 07 Ιαν 2015, 06:37:56 ΜΜ
Παράθεση από: evry στις 07 Ιαν 2015, 05:51:22 ΜΜ
αυτό που παρέθεσα για ι=1 είναι το ίδιο με αυτό που δόθηκε αρχικά. Έχει την ίδια λογική απλά δείχνει λίγο ακραία ότι κάτι δεν πάει καλά με αυτό το σκεπτικό.
όπως είπα και πριν δεν είναι θέμα πολυπλοκότητας αλλά φιλοσοφίας και τρόπου σκέψης

δεν είναι η ίδια, προφανώς εννοείς τάξη πολυπλοκότητας και όχι πολυπλοκότητα που είναι η συνάρτηση T(N)

Ναι οκ, τάξη πολυπλοκότητας, όριο, όπως βολεύεται ο καθένας. Ποια ειναι λοιπόν η φιλοσοφία που θα μεταφέρουμε σε ποιον;  Στον άνθρωπο που θα δει για ένα χρόνο από τη ζωή του ΑΕΠΠ και δεν θα ασχοληθεί ξανα ποτέ, ή στον άνθρωπο που θα ασχοληθεί και θα μάθει ότι δεν έχει καμια σημασία το συγκεκριμένο θέμα; Νόμιζα ότι πιάσαμε κάτι πολύ απλό και το τραβάμε από τα μαλλιά.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 07 Ιαν 2015, 07:27:12 ΜΜ
Παράθεση από: evry στις 07 Ιαν 2015, 06:01:33 ΜΜ
ο κατάλληλος είναι αυτός τον οποίο θα εφάρμοζες στο χαρτί, δηλαδή ο αλγόριθμος που θα σχεδίαζες στο φυσικό μοντέλο του πραγματικού κόσμου και όχι στο μοντέλο της νοητής μηχανής για την οποία προγραμματίζουμε. Τι θέλω να πω τώρα.
Αν σου έλεγα το εξής σενάριο
Σου δίνω αριθμούς (έναν-έναν) και βρες μου ποιος είναι ο μεγαλύτερος.
Μετά τον πρώτο αριθμό θα με ρώταγες συνέχεια ποιος είναι ο πρώτος;


Αυτούς τους αριθμούς, τους δέχομαι εντός επανάληψης και σε άσκηση που ζητάει άλλα 4-5 πράγματα
Δεν είναι απλά αριθμοί που ζητάμε το μέγιστο, όπου είναι αυτονόητο το τι κάνουμε (αυτό δηλαδή που κάνουμε στους πίνακες)
Τίτλος: Απ: Εύρεση min max
Αποστολή από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 08 Ιαν 2015, 04:34:06 ΜΜ
Για μένα ο καλύτερος τρόπος είναι ο παρακάτω:

Διάβασε χ
min ←  χ
max← χ
Για i από 2 μέχρι Κ
    Διάβασε χ
    Αν (χ < min) τότε
      min ← χ
    Τέλος_αν
    Αν (χ>max) τότε
      max ← χ
    Τέλος_αν
  Τέλος_επανάληψης
  Εκτύπωσε min, max
Τίτλος: Απ: Εύρεση min max
Αποστολή από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 08 Ιαν 2015, 09:02:25 ΜΜ
Για μενα ο καλυτερος τροπος ειναι ο παρακατω:

Διάβασε χ
min ←  χ
max← χ
Για i από 2 μέχρι Κ
    Διάβασε χ
    Αν (χ < min) τότε
      min ← χ
    Τέλος_αν
    Αν (χ > max) τότε
      max ← χ
  Τέλος_επανάληψης
  Εκτύπωσε min, max

Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 08 Ιαν 2015, 10:24:48 ΜΜ
Και αν η άσκηση ζητά να βρεθεί ο μέσος όρος των βαθμών πάνω από 18, κάτω από 10 και ο μεγαλύτερος βαθμός κάτω του 15;
Τίτλος: Απ: Εύρεση min max
Αποστολή από: anestis85 στις 24 Αυγ 2018, 06:42:00 ΜΜ
Καλησπέρα συνάδελφοι. Σε συνέχεια της συζήτησης θα ήθελα να θέσω το εξής ερώτημα. Κατά πόσο είναι έγκυρη η παρακάτω λογική αρχικοποίησης max και min? Στην Γλώσσα ορίζεται επίσημα το εύρος των τιμών;

min ←  10^9
max←  - 10^9
Για i από 1 μέχρι 200
    Διάβασε χ
    Aν χ < min τότε  min ← χ
    Aν χ>max τότε   max ← χ
Τέλος_επανάληψης
  Εκτύπωσε min, max
Τίτλος: Απ: Εύρεση min max
Αποστολή από: petrosp13 στις 25 Αυγ 2018, 10:33:07 ΠΜ
Η συγκεκριμένη μεθοδολογία είναι καλό να χρησιμοποιείται όταν υπάρχουν κάποια συγκεκριμένα ή λογικά όρια τιμών μιας μεταβλητής (πχ μόνο θετικά, 1-100, θερμοκρασίες στην Ελλάδα κτλ.)
Θα πρέπει να αποφεύγεται σε περιπτώσεις που δεν υπάρχουν όρια και να επιλέγεται κάποιος άλλος αλγόριθμος
Τίτλος: Απ: Εύρεση min max
Αποστολή από: anestis85 στις 25 Αυγ 2018, 01:47:03 ΜΜ
Άρα θεωρείται εσφαλμένη η συγκεκριμένη διατύπωση; Την έχω εντοπίσει σε αρκετές λύσεις και σε βοηθήματα. Και αν θυμάμαι καλά είχε προταθεί αυτός ο αλγόριθμος ως λύση λόγω των ορίων που θέτει ο ίδιος ο μεταγλωττιστής της ΓΛΩΣΣΑΣ.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: alkisg στις 25 Αυγ 2018, 04:26:38 ΜΜ
Παράθεση από: anestis85 στις 25 Αυγ 2018, 01:47:03 ΜΜ
είχε προταθεί αυτός ο αλγόριθμος ως λύση λόγω των ορίων που θέτει ο ίδιος ο μεταγλωττιστής της ΓΛΩΣΣΑΣ.

Η ΓΛΩΣΣΑ δεν έχει μεταγλωττιστή.
Η ΓΛΩΣΣΑ δεν ορίζει όρια.
Ο Διερμηνευτής της ΓΛΩΣΣΑΣ ορίζει όρια, αλλά δεν έχουν καμία απολύτως σχέση με αυτά που προαναφέρθηκαν:
https://alkisg.mysch.gr/ΓΛΩΣΣΑ/Τύποι_δεδομένων/ (https://alkisg.mysch.gr/%CE%93%CE%9B%CE%A9%CE%A3%CE%A3%CE%91/%CE%A4%CF%8D%CF%80%CE%BF%CE%B9_%CE%B4%CE%B5%CE%B4%CE%BF%CE%BC%CE%AD%CE%BD%CF%89%CE%BD/)

Το να χρησιμοποιηθούν αβάσιμα όρια όταν δεν υπάρχει όριο στην άσκηση, είναι λάθος.
Όπως όμως είπε ο Πέτρος, αυτή η μέθοδος μπορεί να χρησιμοποιηθεί εάν στα δεδομένα εισόδου υπάρχουν όρια, π.χ. βαθμοί.
Τίτλος: Απ: Εύρεση min max
Αποστολή από: Γιαννούλης Γιώργος στις 10 Απρ 2020, 04:43:28 ΠΜ
Παράθεση από: ΜΑΚΡΙΔΑΚΗ ΣΤΕΛΛΑ στις 08 Ιαν 2015, 04:34:06 ΜΜ
Για μένα ο καλύτερος τρόπος είναι ο παρακάτω:

Διάβασε χ
min ←  χ
max← χ
Για i από 2 μέχρι Κ
    Διάβασε χ
    Αν (χ < min) τότε
      min ← χ
    Τέλος_αν
    Αν (χ>max) τότε
      max ← χ
    Τέλος_αν
  Τέλος_επανάληψης
  Εκτύπωσε min, max

Οι 2 τρόποι δεν είναι ισοδύναμοι...
Αν Κ < 1 τότε θα βγάλουν άλλα αποτελέσματα.

Αν ήθελες να το κάνεις πραγματικά ισοδύναμο θα έπρεπε να γράψεις:
Κώδικας [Επιλογή]

Αν Κ>=1 τοτε
    Διάβασε χ
    min ←  χ
    max← χ
Τελος_Αν
Για i από 2 μέχρι Κ
    Διάβασε χ
    Αν (χ < min) τότε
      min ← χ
    Τέλος_αν
    Αν (χ>max) τότε
      max ← χ
    Τέλος_αν
  Τέλος_επανάληψης
  Εκτύπωσε min, max


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