Κενό αλφαριθμητικό

Ξεκίνησε από thanasisgr, 30 Οκτ 2019, 10:54:45 ΠΜ

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

thanasisgr

Συνάδελφοι καλημέρα,
να ρωτήσω αν η αρχικοποίηση αλφαριθμητικού
ον<-'' , δηλαδή εκχωρώ στη μεταβλητή ον την κενή συμβολοσειρά , είναι σωστό ή όχι.

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

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

George Eco

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

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

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

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


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


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

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

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

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

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

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

Καλημέρα

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

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

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

thanasisgr

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

Ευχαριστώ




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

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

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

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


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


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

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

thanasisgr

Ναι αν βάλεις ΑΝ δεν χρειάζεται αρχικοποίηση.
Στη σελίδα 267 του βιβλιου που έχει τον πίνακα ASCII υπάρχει ο χαρακτήρας NUL με δεκαδική τιμή 0.
Οπότε ισχύει. Το θέμα είναι αν πρέπει να το πω ή θα μπερδέψω τους μαθητές , οπότε να μην το αρχικοποιήσω και να βάλω μια εντολή ΑΝ έξω από το ΟΣΟ.
Τι λέτε;

Παράθεση από: Λαμπράκης Μανώλης στις 30 Οκτ 2019, 12:17:12 ΜΜ
Καλημέρα

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

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

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

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

Νομίζω δεν εχεις θέμα όπως και να το κάνεις...

epsilonXi

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

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

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

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

Καλησπέρα

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

thanasisgr

Στη σελίδα 128 του βιβλίου αναφέρεται : Χαρακτήρας. Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων.  Τα δεδομένα αυτού του τύπου μπορούν να περιέχουν  οποιονδήποτε  χαρακτήρα παράγεται  από  το  πληκτρολόγιο. Παραδείγματα χαρακτήρων είναι 'Κ', 'Κώστας', 'σήμερα είναι Τετάρτη', 'Τα πολλαπλάσια του 15 είναι'

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

alkisg

Νομίζω ότι δεν πρέπει να μεταφράζουμε το βιβλίο λες και είναι Αγία Γραφή. Αν ήταν έτσι τότε στη σελίδα που λέει τους έγκυρους χαρακτήρες της ΓΛΩΣΣΑΣ και λείπουν 3-4 από τη λίστα, τι συμπέρασμα θα έπρεπε να βγάλουμε;

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

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

thanasisgr

Χρήσιμα αυτά που γράφεις Άλκη.
Θεωρώ ότι το βιβλίο είναι ανεπαρκές.
Έπρεπε να διευκρινήσει ένα τέτοιο θέμα, αρχικοποίηση δηλαδή μεταβλητών τύπου χαρακτήρα.
Οποιοδήποτε έγραψε κώδικα, αντιμετώπισε αυτό το θέμα.
Νομίζω όμως ότι και με το χαρακτήρα κενό να αρχικοποιηθει μια μεταβλητή, συνήθως δεν υπάρχει πρόβλημα.

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

Καλησπέρα σε όλους

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

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

thanasisgr

Νομίζω ότι εννοεί το κενό αλφαριθμητικό ASCII Code=0 και όχι έναν χαρακτήρα το κενό (space)
με ASCII Code=32.
Φαίνεται να επιτρέπεται η εκχώρηση του κενού αλφαριθμητικού με μήκος 0 και ASCII code to 0.

alkisg

ASCII NUL = 0.
ASCII Space = 32
Κενό αλφαριθμητικό = αλφαριθμητικό μήκους μηδέν.

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

thanasisgr

Ναι ετσι είναι
Παράθεση από: alkisg στις 01 Νοε 2019, 09:35:14 ΜΜ
ASCII NUL = 0.
ASCII Space = 32
Κενό αλφαριθμητικό = αλφαριθμητικό μήκους μηδέν.

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