ΣΥΓΚΡΙΣΗ ΣΥΜΒΟΛΟΣΕΙΡΩΝ

Ξεκίνησε από George Eco, 09 Οκτ 2019, 12:47:13 ΜΜ

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

George Eco

Καλησπέρα. Έχω την εξής απορία συνάδελφοι κι αν κάποιος ξέρει, ας μου τη διαλευκάνει.
Η ΓΛΩΣΣΑ είναι θεωρητική γλώσσα, οπότε αν έχουμε επίσημη θέση από το Υπουργείο για αυτο που θα ρωτήσω, υπερισχύει όλων.
Χρησιμοποιώντας το Διερμηνευτή της ΓΛΩΣΣΑΣ, έκανα σύγκριση συμβολοσειρών.
Πιο συγκεκριμένα καταλήγω πως μικρότερα προς μεγαλύτερα είναι με σειρά από αριστερά προς τα δεξιά οι εξής χαρακτήρες σε ένα string (η θέση του γράμματος σε ένα string προφανώς έχει κι ανάλογη αξία σα να χρησιμοποιούσα αριθμητικό σύστημα, αλλά εδώ για ευκολία συγκρίνω ένα σύμβολο με ένα άλλο ξεκάθαρα για να μη μπερδευτούμε)
0-9, A-Z, a-z, Α-Ω, α-ω,

ΕΡΩΤΗΣΗ:
Παρατηρώ πως κάποιοι χαρακτήρες, αν όχι όλοι είναι μικρότερης αξίας της αξίας του '0' όταν τρέχω συγκρίσεις στο διερμηνευτή.
Ποια κωδικοποιήση ακολουθείται όμως και πόσο σίγουροι είμαστε πως συμβαδίζει με αυτή που έχει κατά νου το Υπουργείο;
Η κωδικοποίηση ASCII για παράδειγμα έχει
Ζ = 132
[ = 133
πράγμα που αυτόματα αποδεικνύει πως δεν είναι η κωδικοποίηση που ακολουθεί ο Διερμηνευτής.



Η ερώτηση στόχο έχει τη πλήρη αποσαφήνιση όλων των ακριβή αξιών κάθε χαρακτήρα του αλφαβήτου της ΓΛΩΣΣΑΣ, συμπεριλαμβανομένων των ειδικών χαρακτήρων και κάθε τι που μπορεί να μπει γενικά σε συμβολοσειρά.
Κι εκεί έρχεται το πρόβλημα.
Είναι ΟΛΟΙ οι ειδικοί χαρακτήρες του αλφαβήτου που μπαίνουν σε ένα string μικρότεροι της αξίας του '0';

Τι ακριβώς ισχύει και ποια είναι η προτεραιότητα,  στη θεωρητική ΓΛΩΣΣΑ που δίνεται Πανελλήνιες;


Διόρθωση και προσθήκη για διευκόλυνση μελλοντικών αναγωνστών:
Από πάνω προς τα κάτω, κι από αριστερά προς τα δεξιά, μικρότερο προς μεγαλύτερο βάσει unicode:
Κενός χαρακτήρας, ! " # $ % & ' ( ) * + , - . /   
0-9     
: ; < = > ? @
A-Z
[ \ ] ^ _ `
a-z
{ | } ~
Α-Ω
Ϊ , Ϋ, ά, έ, ή, ί, ΰ
α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,ς,τ,υ,φ,χ,ψ,ω
ϊ ,ϋ, ό, ύ, ώ
ϐ (σύμβολο όχι γράμμα) , ϑ(σύμβολο όχι γράμμα)  , ϛ (σύμβολο όχι γράμμα)

https://en.wikipedia.org/wiki/List_of_Unicode_characters


George Eco

Αν δεν υπάρχει κάπου, θα τα χώσω όλα σε ένα πίνακα και θα δώσω εδώ τις απαντήσεις βάσει του Διερμηνευτή.
Λογικά ξεχειλώνω τελείως το θέμα, δε νομίζω να πέσει κάτι ΤΟΣΟ σκληρό στις Πανελλήνιες, αλλά επειδή ποτέ δε ξέρεις...

George Eco

#2
Συγκριτικό μέγεγος συμβόλων ως σύμβολα σε μεταβλητές ΧΑΡΑΚΤΗΡΕΣ, σύμφωνα με το ΔΙΕΡΜΗΝΕΥΤΗ ΤΗΣ ΓΛΩΣΣΑΣ.
Από τα αριστερά το μικρότερο προς τα δεξιά το μεγαλύτερο!
Κενός χαρακτήρας, ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~  0-9, A-Z, a-z, Α-Ω, α-ω.

Αν γνωρίζετε κάτι άλλο διαφωτίστε με.

Διόρθωση και προσθήκη για διευκόλυνση μελλοντικών αναγωνστών:
Από πάνω προς τα κάτω, κι από αριστερά προς τα δεξιά, μικρότερο προς μεγαλύτερο βάσει unicode.

Κενός χαρακτήρας, ! " # $ % & ' ( ) * + , - . /   
0-9     
: ; < = > ? @
A-Z
[ \ ] ^ _ `
a-z
{ | } ~
Α-Ω
α-ω

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

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

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

Εδω που τα λέμε εγώ πχ δε νομίζω να θυμάμαι ολόκληρη την ιεραρχι που εγραψες.. Χεχεχε..  :angel: >:D

George Eco

Μα ναι, ποιος να το θυμάται αυτό το πράγμα;
Αλλά μπορεί να κάνουν καμιά πονηριά τύπου:
'αΒγ' > 'Αbγ'
'000' > '00*' φέρει πειν, οπότε όλα τα σύμβολα είναι καλό που ξέρουμε πως είναι μικρότερα από αριθμούς ως αποτίμηση σε string.

Εμβαθύνω τόσο πολύ γιατί (θα το ξαναπώ) το 2018 δε περίμενα να βάλουν αδόμητο διάγραμμα ροής και να ζητήσουν την ακριβή μεταφορά του σε ΓΛΩΣΣΑ (που είναι αδύνατον δίχως GOTO) αλλά το έβαλαν, οπότε και θέλω να προετοιμάζω τα παιδιά μου για παν ενδεχόμενο. Δε θέλω να φοβούνται ή να σκαλώσουν σε τίποτα απολύτως.  ;)

alkisg

Δοκιμή από  Linux, δεν έχω πρόχειρα Windows:

ΠΡΟΓΡΑΜΜΑ Σύγκριση
ΑΡΧΗ
  ΓΡΑΨΕ '[' > 'G'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Αποτέλεσμα: ΑΛΗΘΗΣ

Εσένα σου βγάζει ΨΕΥΔΗΣ; Τι έκδοση Windows και τι γλώσσα;

George Eco

Χμμμ... μάλλον είχα ένα typo. Μάλλον Ζ Ελληνικό έδινε το (ΨΕΥΔΗΣ) αντί Αγγλικού που βγάζει ΑΛΗΘΗΣ κι εμένα τώρα που το δοκίμασα.

Ωστόσο... μου τα έχει κάνει ΕΤΣΙ sort μεταξύ τους.
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~


Τα γράμματα εμπλέκονται μεταξύ των συμβόλων;
Τι κωδικοποίηση ακολουθεί ο Διερμηνευτής;
Εκτελώ τη 0.93 σε W10.

alkisg

Unicode, υπερσύνολο του ASCII, αφού το ASCII δεν περιλαμβάνει καν Ελληνικά.

George Eco

Τον ASCII σα παράδειγμα τον έθεσα.
Θυμάσαι ποια unicode; UTF-8 ας πούμε;

Nevermind, κατάλαβα.
Αυτό ακολουθεί έτσι;
https://en.wikipedia.org/wiki/List_of_Unicode_characters

Με είχε μπερδέψει γιατί διάβασα λάθος το < στον Unicode όταν τον έψαχνα. Έπρεπε να ψάξω χαμηλή τιμή και να μην επαναπαυτώ στη μεγάλη και στο εξωτικό "Modifier Letter Left Arrowhead "

U+003C    <    60    Less-than sign    0029
U+02C2    ˂    706    Modifier Letter Left Arrowhead

Κατάλαβα! Σ' ευχαριστώ πολύ Άλκη!
Το Υπουργείο φαντάζομαι το έχει ασαφές αυτό έτσι; Θέλω να πω, δε κάνει νύξη για περίπλοκες συγκρίσεις, γιατί αλλιώς καήκαμε.

alkisg

Τα UTF-8, UTF-16, UCS-2 κλπ κλπ είναι αναπαραστάσεις του προτύπου Unicode σε δυαδική μορφή, που δεν έχουν όμως καμία επίπτωση στις ταξινομήσεις.

Ο Διερμηνευτής χρησιμοποιεί διάφορες τέτοιες αναπαραστάσεις. Στα Windows από NT μέχρι 10ρια η εσωτερική αναπαράσταση των strings είναι UTF-16 little endian· αυτό το καθορίζουν τα ίδια τα Windows.
Κατά την αποθήκευση σε αρχεία, χρησιμοποιείται UTF-8, που είναι το de facto standard των αρχείων στο Internet και στο Linux (και σιγά σιγά καταφτάνει και στα Windows).

Η σύγκριση αλφαριθμητικών Unicode επίσης υλοποιείται από τα Windows, και ναι είναι αυτή που σύνδεσες.

George Eco

Κατάλαβα! Σ' ευχαριστώ πολύ Άλκη!
Το Υπουργείο φαντάζομαι το έχει ασαφές αυτό έτσι;
Θέλω να πω, δε κάνει νύξη για περίπλοκες συγκρίσεις. Αυτό με καίει βασικά.
Το ΘΕΩΡΗΤΙΚΟ υπόβαθρο σε ΓΛΩΣΣΑ.
Θέλω να ξέρω σε τι πλαίσιο μπορούν να βάλουν συγκρίσεις συμβολοσειρών.
Φέρει πειν

'καλημέραα' > 'καλησπέρα'
'ΧΩ' > 'ΧΧ'
'Σεββαχ' > 'ΑαχΒαχ'
'Γεία0123' > 'Αντίο123'

ή μπορεί να βάλουν κάνα κουλό τύπου

'α>β' > 'α<β' και τρέχουμε;

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



George Eco

Καλησπέρα και πάλι.
Τελικά έχει κανείς ιδέα μέχρι που μπορούν να φτάσουν στη σύγκριση συμβολοσειρών από το Υπουργείο;
Τι πρέπει να ξέρουν τα παιδιά;

petrosp13

Νομίζω ότι κάτι πέρα από σύγκριση ίδιου τύπου γραμμάτων (κεφαλαία-κεφαλαία ή μικρά-μικρά) δεν μπορεί να ζητηθεί
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

George Eco

Ευχαριστώ Πέτρο. Κι εγώ την ίδια εντύπωση έχω.  :)

George Eco

#14
Σε άλλο thread μίλησα για τη σύγκριση των strings στη ΓΛΩΣΣΑ κι αναρωτήθηκα πως ακριβώς γίνεται, γιατί κάτι δε μου κάθεται καθόλου καλά.


ΠΡΟΓΡΑΜΜΑ ΑΑ
ΑΡΧΗ
  ΓΡΑΨΕ 'ΒΑΑ' = 'ΒΑΑ' ! ΑΛΗΘΗΣ
  ΓΡΑΨΕ 'ΒΑΑ' > 'ΑΒΑ' ! ΑΛΗΘΗΣ
  ΓΡΑΨΕ 'ΑΒΑ' = 'ΒΑΑ' ! ΨΕΥΔΗΣ
  ΓΡΑΨΕ 'ΑΝΝΑ' = 'ΝΑΝΑ' ! ΨΕΥΔΗΣ

  ΓΡΑΨΕ 'ΑΑΑΑ' > 'ΩΩ' ! ΨΕΥΔΗΣ ( γιατί;;;; )
  ΓΡΑΨΕ 'ΑΑΑΑ' > '  ΩΩ' ! ΑΛΗΘΗΣ
  ΓΡΑΨΕ 'ΨΨΨ' > 'ΩΩ' ! ΨΕΥΔΗΣ ( γιατί;;;; )


  ΓΡΑΨΕ 'ΚΑΛΗΜΕΡΑ' < 'ΚΑΛΟΙ' ! ΑΛΗΘΗΣ ( γιατί;;;; )

  ΓΡΑΨΕ 'Ω' > 'ΨΨΨ' ! ΑΛΗΘΗΣ ( γιατί;;;; )

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Η θέση κάθε γράμματος έχει σημασία. Έχει βαρύτητα. Με άλλα λόγια ΑΒΑ <> ΒΑΑ και μάλιστα ΒΑΑ > ΑΒΑ όπως κανείς λογικά θα περίμενε.

Έχω τεράστιο πρόβλημα, όταν πρόκειται να εκτιμήσω ένα string με λιγότερα σύμβολα.

Θα περίμενα 'ΑΑΑΑ' > 'ΩΩ' να ισχύει, μιας κι έχει περισσότερα σύμβολα το 'ΑΑΑΑ' κι άρα το πιο αριστερό Α είναι υψηλότερης σημαντικότητας. Ωστόσο επιστρέφεται ΨΕΥΔΗΣ. Γιατί;;;;

Εικάζω πως το 'ΑΑΑΑ' συγκρίνεται λάθος με ένα αντίστοιχο 'ΩΩ__' (όπου κάτω παύλα, το κενό) όμως θα έπρεπε να συγκρίνεται με '__ΩΩ'.


Να τονισθεί εδώ πως αυτό μπορεί να είναι πολύ δυσάρεστο και μπερδευτικό, όταν έχεις να συγκρίνεις 'ΚΑΛΗΜΕΡΑ' με 'ΚΑΛΟΙ'

Είτε το καταλαβαίνω ΤΕΛΕΙΩΣ λάθος εγώ, είτε έχει λάθος υλοποίηση ο Διερμηνευτής 1.5.1.3.

@Άλκη κι οι λοιποί παρακαλαώ πολύ πείτε μου τι συμβαίνει γιατί νιώθω να είμαι στα χαμένα.

Στα strings με ίσο πλήθος χαρακτήρων, φαίνεται να το κάνει σα να συγκρίναμε τιμές, μόνο που δεν έχουμε 0 - 9 αλλά Α - Ω.
Όταν δεν έχουμε ίσο πλήθος χαρακτήρων, το πράγμα χαλάει.