Αποστολέας Θέμα: Μεταβλητή ελέγχου στη For  (Αναγνώστηκε 1803 φορές)

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Μεταβλητή ελέγχου στη For
« στις: 11 Φεβ 2010, 07:21:06 μμ »
Καλησπέρα συνάδελφοι. Είχα την εντύπωση οτι στην εντολή επανάληψης η μεταβλητή ελέγχου στην εντολή for μπορεί να είναι είτε ακέραιου τύπου είτε τύπου χαρακτήρα, αλλά δεν μπορεί να είναι πραγματικού τύπου ή αλφαριθμητικού.

Το βιβλίο δεν αναφέρει τίποτα, αλλά σε ένα βιβλίο έλεγε οτι μπορεί να είναι οποιουδήποτε τύπου εκτός από πραγματικού. Δηλαδή αν βάλεις for i:='kalimera' to 'kalinixta' πως θα βρει τα βήματα; Υποθέτω πως το βιβλίο είναι λάθος, αλλά μια δεύτερη γνώμη θα με βοηθούσε.

Ιωάννης Γκίνης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 130
  • I share because I care
    • Προσωπική ιστοσελίδα
Απ: Μεταβλητή ελέγχου στη For
« Απάντηση #1 στις: 11 Φεβ 2010, 08:38:33 μμ »
Η μεταβλητή ελέγχου πρέπει να είναι τακτικού (ordinal) τύπου που σημαίνει:
  • Ακεραίου τύπου (Integer)
  • Τύπου χαρακτήρα (Character)
  • Λογικού τύπου (Boolean)
  • Τύπου υποπεριοχής (Subrange)
  • Απαριθμητού τύπου (Enumerate)
οτιδήποτε άλλο είναι λανθασμένο.

Το βιβλίο βέβαια για ακόμη μια φορά δε μας τα λέει και τόσο καλά:
Παράθεση
Η αρχική και η τελική τιμή του κύκλου for μπορεί να είναι μια έκφραση οποιουδήποτε διατεταγμένου τύπου. Έτσι, εκτός από ακέραιες τιμές μπορούμε να χρησιμοποιήσουμε μεταβλητές με τιμές τύπου χαρακτήρα char ή λογικού τύπου (boolean).
...και σ' αυτό το σημείο «παθαίνω τη συνήθη κρίση μου» από τις παραλείψεις / ασάφειες που έχει αυτή η παράγραφος.

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Μεταβλητή ελέγχου στη For
« Απάντηση #2 στις: 11 Φεβ 2010, 10:00:32 μμ »
Ευχαριστώ για τη βοήθεια Τελικά και το πανεπιστημιακό βιβλίο που είχα λάθος τα έλεγε  :D. Εντάξει θέλει να βάλεις και τη λογική σου, ποιο θα είναι το επόμενο βήμα σε ένα αλφαριθμητικό και σε έναν πραγματικό αριθμό, αλλά καλό είναι να ορίζονται με σαφήνεια.

Ιωάννης Γκίνης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 130
  • I share because I care
    • Προσωπική ιστοσελίδα
Απ: Μεταβλητή ελέγχου στη For
« Απάντηση #3 στις: 11 Φεβ 2010, 11:00:03 μμ »
Άσχετο με το θέμα αλλά... η ιστορία με τους πραγματικούς και τη For με πάει λίγο πίσω. Ήταν μόλις το πρώτο μου μήνυμα στο forum και είχα νιώσει πολύ άσχημα  :-[

Τα υπόλοιπα εδώ: http://alkisg.mysch.gr/steki/index.php?topic=181.msg1120#msg1120

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Μεταβλητή ελέγχου στη For
« Απάντηση #4 στις: 11 Φεβ 2010, 11:19:25 μμ »
Συνάδελφε, οι απορίες που πολλές φορές έχουμε είναι αστείες και έχουν να κάνουν με το γεγονός οτι πρόκειται για ένα πανελλαδικώς εξαταζόμενο μάθημα και ένα βιβλίο με αρκετά λάθη και παραλαείψεις. Για μένα το να διαπιστώσω αυτό που ρώτησα δεν ήθελε τίπτα παραπάνω παρά να ετοιμάσω από ένα παράδειγμα για κάθε περίπτωση τύπου δεδομένων της μεταβλητής ελέχγου και να διαπιστώσω ποιες είναι αποδεκτές (πάλι βέβαια κάποια χαρακτηριστικά της γλώσσας εξαρτώνται από την έκδοση του μεταγλωττιστή που έχεις, πχ θυμάμαι στο περιβάλλον TP 7 αν δεν αρχικοποιούσες μια μεταβλητή της έδινε μια τυχαία τιμή μέσα στα αποδεκτά όρια του τύπου της ενώ στον free-pascal compiler που χρησιμοποιώ δίνει αρχική τιμή το 0 αν δεν αρχικοποιήσεις τη μεταβλητή).

Οπότε πάντα μια δεύτερη ή και τρίτη γνώμη σε βοηθάει να σιγουρευτείς.

Καρκαμάνης Γεώργιος

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1089
Απ: Μεταβλητή ελέγχου στη For
« Απάντηση #5 στις: 17 Φεβ 2010, 08:59:10 πμ »
Το βιβλίο δεν αναφέρει τίποτα, αλλά σε ένα βιβλίο έλεγε οτι μπορεί να είναι οποιουδήποτε τύπου εκτός από πραγματικού. Δηλαδή αν βάλεις for i:='kalimera' to 'kalinixta' πως θα βρει τα βήματα; Υποθέτω πως το βιβλίο είναι λάθος, αλλά μια δεύτερη γνώμη θα με βοηθούσε.
Ισως σκόπιμα το βιβλίο δεν εμβαθύνει καθώς οι μαθητές πρέπει να μάθουν τα βασικά στον προγραμματισμά προς το παρον.