Αποστολέας Θέμα: Κενό αλφαριθμητικό  (Αναγνώστηκε 919 φορές)

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Κενό αλφαριθμητικό
« στις: 30 Οκτ 2019, 10:54:45 πμ »
Συνάδελφοι καλημέρα,
να ρωτήσω αν η αρχικοποίηση αλφαριθμητικού
ον<-'' , δηλαδή εκχωρώ στη μεταβλητή ον την κενή συμβολοσειρά , είναι σωστό ή όχι.

Αφορμή είναι το θέμα Γ των εξετάσεων 2018-2019.
Ως maxtitle δεν πρέπει να δοθεί μια αρχική τιμή;

Φιλικά
Θανάσης

George Eco

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 116
Απ: Κενό αλφαριθμητικό
« Απάντηση #1 στις: 30 Οκτ 2019, 11:29:48 πμ »
Αν χρησιμοποιήσεις ΟΣΟ, θα βάλεις πριν αυτής μια ΔΙΑΒΑΣΕ για τον τίτλο, οπότε θα παίρνει τιμή, κι αν χρησιμοποιήσεις ΜΕΧΡΙΣ_ΟΤΟΥ μέσα της θα βάλεις τη ΔΙΑΒΑΣΕ κι έτσι δε θα είναι πουθενά empty string εκτός κι αν πατήσει enter ο χρήστης δίχως να δώσει τίτλο, αλλά δε σε νοιάζει βάσει εκφώνησης. Σε νοιάζει η τιμή φρουρός "ΤΕΛΟΣ" μόνο.
Βάζουμε ΟΣΟ γιατί μπορεί ο χρήστης να θέλει να μη βάλει κανένα βίντεο, οπότε εξ αρχής να γράψει ΤΕΛΟΣ.

Φέρει πειν για το τμήμα αυτό...

Κώδικας: [Επιλογή]
ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΙΤΛΟ. Η ΛΕΞΗ ΤΕΛΟΣ ΘΑ ΤΕΛΕΙΩΣΕΙ ΤΗ ΔΙΑΔΙΚΑΣΙΑ'
ΔΙΑΒΑΣΕ τιτλος
ΟΣΟ τίτλος <> 'ΤΕΛΟΣ'
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
            ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΕΠΙΣΚΕΨΕΙΣ (ΑΚΕΡΑΙΟΣ ΘΕΤΙΚΟΣ)'
            ΔΙΑΒΑΣΕ επίσκέψεις
      ΜΕΧΡΙΣ_ΟΤΟΥ επισκέψεις >= 0

      ! Στο τέλος δίνω νέα τιμή στο τίτλο πρίν κάνω λούπα.
      ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΙΤΛΟ. Η ΛΕΞΗ ΤΕΛΟΣ ΘΑ ΤΕΛΕΙΩΣΕΙ ΤΗ ΔΙΑΔΙΚΑΣΙΑ'
      ΔΙΑΒΑΣΕ τιτλος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Σε περίπτωση που θες να χρησιμοποιήσεις ΟΣΟ τίτλος <> 'ΤΕΛΟΣ' ΕΠΑΝΑΛΑΒΕ θα πρέπει να έχεις αναγκαστικά μια ΔΙΑΒΑΣΕ πριν.
Κι έτσι κανένα πρόβλημα φαντάζομαι.


Αυτό το θέμα λέμε έτσι;

ΘΕΜΑ Γ
"Το Υπουργείο Παιδείας παρέχει μέσω του διαδικτύου μια συλλογή από
εκπαιδευτικά βίντεο. "
« Τελευταία τροποποίηση: 30 Οκτ 2019, 11:46:11 πμ από George Eco »

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

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 678
Απ: Κενό αλφαριθμητικό
« Απάντηση #2 στις: 30 Οκτ 2019, 12:17:12 μμ »
Συνάδελφοι καλημέρα,
να ρωτήσω αν η αρχικοποίηση αλφαριθμητικού
ον<-'' , δηλαδή εκχωρώ στη μεταβλητή ον την κενή συμβολοσειρά , είναι σωστό ή όχι.

Αφορμή είναι το θέμα Γ των εξετάσεων 2018-2019.
Ως maxtitle δεν πρέπει να δοθεί μια αρχική τιμή;

Φιλικά
Θανάσης

Καλημέρα

Αν x>max τοτε
    max<--x
    max_title<--ον
Τέλος_αν

η βοηθητική μεταβλητή "max_title" λαμβάνει τιμή άμεσα από τη μεταβλητή ον, οπότε δεν είναι απαραίτητο να έχει κάποια αρχική τιμή .. ακόμη και να μην εκτελεστούν επαναλήψεις σε μία επανάληψη με "τιμή φρουρό", μπορούμε να το ελέγξουμε πχ αν max<>-1 τότε, οπότε πάλι δεν χρειάζεται να έχει τιμή

πάντως και να το αρχικοποιήσεις νομίζω πως είναι μια χαρά

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #3 στις: 30 Οκτ 2019, 04:32:00 μμ »
Ευχαριστώ για την απάντηση, αλλά υπάρχει το εξής θέμα.
Στο Γ3 ερώτημα "Να βρίσκει και να εμφανίζει τον τίτλο του βίντεο με τον μεγαλύτερο αριθμό επισκέψεων.", χρειάζεσαι 2 μεταβλητές : το μεγαλύτερο αριθμο των επισκέψεων μεγΕπ και τον αντίστοιχο τίτλο μεγΤιτλ.
Αν ΔΕΝ αρχικοποιήσεις τον τίτλο και πάς να τον εμφανίσεις έξω από την οσο π.χ ΓΡΑΨΕ μεγΤιτλ, και στην οριακή περίπτωση που δώσεις την 1η φορά ως τίτλο βίντεο το ΄ΤΕΛΟΣ', θα βγάλει runtime λάθος, εκτός και αν έχεις μια αν:
π΄χ ΑΝ  μεγΕπ <> -1 ΤΟΤΕ
            ΓΡΑΨΕ μεγΤιτλ
ΤΕΛΟΣ_ΑΝ
Συνεπώς αν αρχικοποιούσαμε την μεγΤιτλ έξω από το ΌΣΟ δεν θα χρειαζόταν η ΑΝ.
Θα μπορούσα βέβαια να την αρχικοποιήσω με ένα κενο ΧΑΡΑΚΤΗΡΑ πχ μεγΤιτλ<-- '  '.
Αυτό που ρωτάω είναι αν κάπου αναφέρεται ότι μπορούμε να αρχικοποιήσουμε αλφαριθμητικά με το την κενή συμβολοσειρά ως εξής: μεγΤιτλ<-- ''. Αυτό βέβαια επιτρέπεται σε όλες τις γλώσσες προγραμματισμού. Στο ΑΕΠΠ τι ισχύει;

Ευχαριστώ




Αν χρησιμοποιήσεις ΟΣΟ, θα βάλεις πριν αυτής μια ΔΙΑΒΑΣΕ για τον τίτλο, οπότε θα παίρνει τιμή, κι αν χρησιμοποιήσεις ΜΕΧΡΙΣ_ΟΤΟΥ μέσα της θα βάλεις τη ΔΙΑΒΑΣΕ κι έτσι δε θα είναι πουθενά empty string εκτός κι αν πατήσει enter ο χρήστης δίχως να δώσει τίτλο, αλλά δε σε νοιάζει βάσει εκφώνησης. Σε νοιάζει η τιμή φρουρός "ΤΕΛΟΣ" μόνο.
Βάζουμε ΟΣΟ γιατί μπορεί ο χρήστης να θέλει να μη βάλει κανένα βίντεο, οπότε εξ αρχής να γράψει ΤΕΛΟΣ.

Φέρει πειν για το τμήμα αυτό...

Κώδικας: [Επιλογή]
ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΙΤΛΟ. Η ΛΕΞΗ ΤΕΛΟΣ ΘΑ ΤΕΛΕΙΩΣΕΙ ΤΗ ΔΙΑΔΙΚΑΣΙΑ'
ΔΙΑΒΑΣΕ τιτλος
ΟΣΟ τίτλος <> 'ΤΕΛΟΣ'
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
            ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΕΠΙΣΚΕΨΕΙΣ (ΑΚΕΡΑΙΟΣ ΘΕΤΙΚΟΣ)'
            ΔΙΑΒΑΣΕ επίσκέψεις
      ΜΕΧΡΙΣ_ΟΤΟΥ επισκέψεις >= 0

      ! Στο τέλος δίνω νέα τιμή στο τίτλο πρίν κάνω λούπα.
      ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΙΤΛΟ. Η ΛΕΞΗ ΤΕΛΟΣ ΘΑ ΤΕΛΕΙΩΣΕΙ ΤΗ ΔΙΑΔΙΚΑΣΙΑ'
      ΔΙΑΒΑΣΕ τιτλος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Σε περίπτωση που θες να χρησιμοποιήσεις ΟΣΟ τίτλος <> 'ΤΕΛΟΣ' ΕΠΑΝΑΛΑΒΕ θα πρέπει να έχεις αναγκαστικά μια ΔΙΑΒΑΣΕ πριν.
Κι έτσι κανένα πρόβλημα φαντάζομαι.


Αυτό το θέμα λέμε έτσι;

ΘΕΜΑ Γ
"Το Υπουργείο Παιδείας παρέχει μέσω του διαδικτύου μια συλλογή από
εκπαιδευτικά βίντεο. "

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #4 στις: 30 Οκτ 2019, 04:47:37 μμ »
Ναι αν βάλεις ΑΝ δεν χρειάζεται αρχικοποίηση.
Στη σελίδα 267 του βιβλιου που έχει τον πίνακα ASCII υπάρχει ο χαρακτήρας NUL με δεκαδική τιμή 0.
Οπότε ισχύει. Το θέμα είναι αν πρέπει να το πω ή θα μπερδέψω τους μαθητές , οπότε να μην το αρχικοποιήσω και να βάλω μια εντολή ΑΝ έξω από το ΟΣΟ.
Τι λέτε;

Καλημέρα

Αν x>max τοτε
    max<--x
    max_title<--ον
Τέλος_αν

η βοηθητική μεταβλητή "max_title" λαμβάνει τιμή άμεσα από τη μεταβλητή ον, οπότε δεν είναι απαραίτητο να έχει κάποια αρχική τιμή .. ακόμη και να μην εκτελεστούν επαναλήψεις σε μία επανάληψη με "τιμή φρουρό", μπορούμε να το ελέγξουμε πχ αν max<>-1 τότε, οπότε πάλι δεν χρειάζεται να έχει τιμή

πάντως και να το αρχικοποιήσεις νομίζω πως είναι μια χαρά

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

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 678
Απ: Κενό αλφαριθμητικό
« Απάντηση #5 στις: 30 Οκτ 2019, 06:25:52 μμ »
Νομίζω δεν εχεις θέμα όπως και να το κάνεις...

epsilonXi

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 117
Απ: Κενό αλφαριθμητικό
« Απάντηση #6 στις: 31 Οκτ 2019, 11:54:40 μμ »
εγώ με την ευκαιρία θυμήθηκα ένα λίγο παλιότερο θέμα πανελλαδικών, εκείνο που αποθηκεύαμε αρχεία σε έναν δίσκο, και ζητούσε στο τέλος να του πούμε τα ονόματα των δύο μικρότερων σε μέγεθος αρχείων... άρα χρειαζόταν κάτι τέτοιο:

...
αν μέγεθος < μιν1 τότε
  μιν2 <-- μιν1
  ον2 <-- ον1
  μιν1 <-- μέγεθος
  ον1 <-- όνομα
...

άρα, εφ'όσον έχεις αρχικοποιήσει το μιν1 έξω απ'τη δομή επανάληψης, θέλει να έχεις αρχικοποιήσει και το ον1 απ' έξω
 

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

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 678
Απ: Κενό αλφαριθμητικό
« Απάντηση #7 στις: 01 Νοέ 2019, 12:18:11 πμ »
Καλησπέρα

εδώ ζητάει 2 min, οπότε το ον1 δίνει τιμή στο ον2 αρχικά, οπότε εδώ σωστά χρειάζεται αρχικοποίηση ... στην προηγούμενη περίπτωση δεν είναι απαραίτητη νομίζω, αν και δεν είναι λα΄θος

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #8 στις: 01 Νοέ 2019, 05:27:40 μμ »
Στη σελίδα 128 του βιβλίου αναφέρεται : Χαρακτήρας. Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων.  Τα δεδομένα αυτού του τύπου μπορούν να περιέχουν  οποιονδήποτε  χαρακτήρα παράγεται  από  το  πληκτρολόγιο. Παραδείγματα χαρακτήρων είναι 'Κ', 'Κώστας', 'σήμερα είναι Τετάρτη', 'Τα πολλαπλάσια του 15 είναι'

Συνεπώς νομίζω ότι είναι λάθος η εκχώρηση
Ον<-''. Διότι μέσα στα εισαγωγικά δεν υπάρχει κανένας χαρακτήρας.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5154
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Κενό αλφαριθμητικό
« Απάντηση #9 στις: 01 Νοέ 2019, 06:05:26 μμ »
Νομίζω ότι δεν πρέπει να μεταφράζουμε το βιβλίο λες και είναι Αγία Γραφή. Αν ήταν έτσι τότε στη σελίδα που λέει τους έγκυρους χαρακτήρες της ΓΛΩΣΣΑΣ και λείπουν 3-4 από τη λίστα, τι συμπέρασμα θα έπρεπε να βγάλουμε;

Προφανώς και επιτρέπονται κενά αλφαριθμητικά, αλλιώς η ΔΙΑΒΑΣΕ δεν θα μπορούσε να διαβάσει σκέτο Enter.

Τώρα σχετικά με τη συγκεκριμένη παράγραφο, υποθέτω ότι ο ποιητής εννούσε το παρακάτω:
Στην Pascal υπάρχει τύπος char για ακριβώς ένα χαρακτήρα, και τύπος string για 0...Ν χαρακτήρες.
Στη ΓΛΩΣΣΑ δεν υπάρχουν 2 τύποι, αλλά μόνο ένας, κοινός και για "έναν χαρακτήρα" και για "0 ως Ν χαρακτήρες", που αντιστοιχεί στο "σειρά" που λέει.

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #10 στις: 01 Νοέ 2019, 06:30:51 μμ »
Χρήσιμα αυτά που γράφεις Άλκη.
Θεωρώ ότι το βιβλίο είναι ανεπαρκές.
Έπρεπε να διευκρινήσει ένα τέτοιο θέμα, αρχικοποίηση δηλαδή μεταβλητών τύπου χαρακτήρα.
Οποιοδήποτε έγραψε κώδικα, αντιμετώπισε αυτό το θέμα.
Νομίζω όμως ότι και με το χαρακτήρα κενό να αρχικοποιηθει μια μεταβλητή, συνήθως δεν υπάρχει πρόβλημα.

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

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 678
Απ: Κενό αλφαριθμητικό
« Απάντηση #11 στις: 01 Νοέ 2019, 06:49:17 μμ »
Καλησπέρα σε όλους

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

δεν γνωρίζω τότε ποιο ήταν το πλαίσιο του μαθήματος (από το 2010 και μετά διδάσκω), όμως φαίνεται να επιτρέπεται η περίπτωση αυτή  ... εδώ ελέγχει βέβαια και δεν κάνει εκχώρηση ..  :angel: >:D

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #12 στις: 01 Νοέ 2019, 07:30:43 μμ »
Νομίζω ότι εννοεί το κενό αλφαριθμητικό ASCII Code=0 και όχι έναν χαρακτήρα το κενό (space)
με ASCII Code=32.
Φαίνεται να επιτρέπεται η εκχώρηση του κενού αλφαριθμητικού με μήκος 0 και ASCII code to 0.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5154
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Κενό αλφαριθμητικό
« Απάντηση #13 στις: 01 Νοέ 2019, 09:35:14 μμ »
ASCII NUL = 0.
ASCII Space = 32
Κενό αλφαριθμητικό = αλφαριθμητικό μήκους μηδέν.

Αν τα γράψουμε σε αρχείο, τα δύο πρώτα θα δημιουργήσουν ένα αρχείο μεγέθους 1 byte, ενώ το κενό αλφαριθμητικό αρχείο μεγέθους 0 byte.

thanasisgr

  • Νέος
  • *
  • Μηνύματα: 9
Απ: Κενό αλφαριθμητικό
« Απάντηση #14 στις: 02 Νοέ 2019, 12:11:22 πμ »
Ναι ετσι είναι
ASCII NUL = 0.
ASCII Space = 32
Κενό αλφαριθμητικό = αλφαριθμητικό μήκους μηδέν.

Αν τα γράψουμε σε αρχείο, τα δύο πρώτα θα δημιουργήσουν ένα αρχείο μεγέθους 1 byte, ενώ το κενό αλφαριθμητικό αρχείο μεγέθους 0 byte.