Science Wiki
Advertisement

Συμβολοσειρά

String , στοιχειοσειρά



Συμβολοσειρά καλείται μια σειρά διαδοχικών συμβόλων τα οποία είναι στοιχεία ενός πεπερασμένου σύνολου ή αλλιώς αλφαβήτου.


Ετυμολογία[]

Η ονομασία " Συμβολοσειρά" σχετίζεται ετυμολογικά με την λέξη "σειρά ".


Εισαγωγή[]

Ανάλογα με τα στοιχεία που διαθέτει το αλφάβητο, διαφοροποιείται και το περιεχόμενο της συμβολοσειράς.

Στην περίπτωση που το αλφάβητο περιορίζεται σε γράμματα και αριθμούς, η συμβολοσειρά λέγεται και αλφαριθμητικό.

Γλώσσες προγραμματισμού[]

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

Οι χαρακτήρες είναι:

  • γράμματα (όπως a b c α β γ ...),
  • αριθμοί (όπως 0 1 2 3 ...),
  • τελεστές πράξεων (όπως * + / - ...),
  • σημεία στίξης (όπως κόμμα, δίστιγμο, παρένθεση, ...),
  • σύμβολα σχεδίασης (όπως ╚ ╤ ╧ ...),
  • σύμβολα ελέγχου (όπως ESCape, LineFeed, ACKnowledgement, CarriageReturn, ...),

οι οποίοι ανήκουν σε κάποιον προκαθορισμένο κώδικα (όπως ASCII, Ebcdic, Fieldata, Unicode, ISO 8859, UTF-16, κλπ).

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

Για παράδειγμα, αν υποθέσουμε ότι το αλφάβητο της σειράς χαρακτήρων είναι το ελληνικό, τότε τα παρακάτω είναι αποδεκτές σειρές χαρακτήρων:

αβγ
ααββγγ
αυτοειναισειραχαρακτηρων


Οι σειρές χαρακτήρων στις γλώσσες προγραμματισμού συνήθως περικλείονται με διπλά ή μονά εισαγωγικά (αγγλ. quote) :

"αυτή η σειρά χαρακτήρων έχει διπλά εισαγωγικά στα άκρα της"
'βάζοντας στα άκρα μονά εισαγωγικά, περικλείουμε το διπλό " χωρίς πρόβλημα'

Οι σειρές χαρακτήρων μπορούν να δοθούν ως τιμή σε ειδικές μεταβλητές χαρακτήρων.

Στις διάφορες γλώσσες προγραμματισμού αυτές οι μεταβλητές χαρακτήρων δηλώνονται με ποικίλους τρόπους :

  • στην γλώσσα FORTRAN η μεταβλητή χαρακτήρων ABC ορίζεται με την δηλωτική εντολή : CHARACTER ABC.
  • στην γλώσσα COBOL καθορίζεται στην DATA DIVISION αν θα είναι το πεδίο ABC τύπου Alphabetic (PIC AAA) ή Alphanumeric (PIC XXX).
  • στην γλώσσα PICK BASIC ο χρησιμοποιούμενος τελεστής καθορίζει αν το αποτέλεσμα θα είναι αριθμός ή σειρά χαρακτήρων (ορίζεται ως literal)). Αν A=111 και Β=222, τότε το (Α + Β) δίνει άθροισμα 333, ενώ το (Α & Β) δίνει την σειρά χαρακτήρων 111222.
  • στην γλώσσα ΓΛΩΣΣΑ, που διδάσκεται στα δευτεροβάθμεια σχολεία της Ελλάδας, υπάρχει η δηλωτική εντολή ΧΑΡΑΚΤΗΡΕΣ για να ορίζονται οι μεταβλητές χαρακτήρων.
  • στην γλώσσα Microsoft Visual Basic η μεταβλητή χαρακτήρων strABC ορίζεται με την δηλωτική εντολή: Dim strABC As String.

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


Εσωτερική παράσταση[]

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

  • 1ος τρόπος : {μήκος, σειρά χαρακτήρων}. Στην Pascal αποθηκευόταν πρώτα το πλήθος των χαρακτήρων, ακολουθούμενο από τους χαρακτήρες. Αυτή την μορφή είχε και η σειρά χαρακτήρων στην FORTRAN, π.χ. 19HΤελικά Αποτελέσματα.
  • 2ος τρόπος : {σειρά χαρακτήρων, διαχωριστής}. Ο διαχωριστής, (αγγλ. delimiter), είναι ειδικός χαρακτήρας που δεν επιτρέπεται να είναι μέρος της σειράς χαρακτήρων. Συνηθισμένος (από την γλώσσα C) διαχωριστής ήταν ο χαρακτήρας NUL (000 στον κώδικα Ascii). Στην γλώσσα Pick-Basic ήταν το 254 στον κώδικα Ascii. Η μεταβλητή που περιέχει την σειρά χαρακτήρων έχει μια διεύθυνση στην μνήμη : από αυτή την διεύθυνση αρχίζει η αποθήκευση της σειράς χαρακτήρων και τελειώνει εκεί που βρίσκεται ο διαχωριστής.
  • 3ος τρόπος : {διεύθυνση, μήκος}. Η σειρά χαρακτήρων ορίζεται με την διεύθυνση και το μήκος της σε χαρακτήρες. Αυτός ο τρόπος διευκολύνει κάποιους χειρισμούς, σε σύγκριση με άλλους τρόπους αποθήκευσης.
  • Άλλοι τρόποι : Για εξοικονόμηση χώρου τα κοινά μέρη των στοιχειοσειρών τοποθετούνται σε κοινόχρηστη περιοχή.


Μήκος σειράς χαρακτήρων[]

Αν έχουμε αποθηκεύσει μια σειρά χαρακτήρων μέσα σε μια κατάλληλη μεταβλητή χαρακτήρων ABC, (τύπου Character ή String), τότε το μήκος της σειράς χαρακτήρων είναι το πλήθος των χαρακτήρων που απαρτίζουν το περιεχόμενο της ABC.

Οι περισσότερες γλώσσες προγραμματισμού επιτρέπουν να βρούμε το μήκος με μια συνάρτηση, όπως η LEN(ABC), που επιστρέφει έναν αριθμό ως μήκος της σειράς χαρακτήρων που περιέχεται στην ABC.

Κενή σειρά χαρακτήρων : Σε ορισμένες γλώσσες επιτρέπεται να είναι η μεταβλητή ABC χωρίς περιεχόμενο, και τότε η LEN(ABC) επιστρέφει την τιμή 0. Μπορούμε να πούμε ότι η ABC περιέχει την κενή στοιχειοσειρά, (αγγλ. null string).

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

  • η LEN("αβγ") επιστρέφει τιμή 3
  • η LEN("ααββγγ") επιστρέφει τιμή 6
  • η LEN("αα ββ γγ") επιστρέφει τιμή 8 (το ένα κενό διάστημα είναι ένας χαρακτήρας)
  • η LEN("") επιστρέφει τιμή 0

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

Συνήθως η γλώσσα προγραμματισμού επιτρέπει να πάρουμε ένα τμήμα σειράς χαρακτήρων, (αγγλ. substring). (Η γλώσσα Microsoft Basic είχε την σχετική εντολή MID).

Μια σειρά χαρακτήρων Β είναι τμήμα της σειράς χαρακτήρων Δ αν υπάρχουν δυό σειρές χαρακτήρων Α και Γ τέτοιες, ώστε να ισχύει Δ = Α & Β & Γ. Η σειρά χαρακτήρων Α μπορεί να είναι κενή. Η σειρά χαρακτήρων Γ μπορεί να είναι κενή.

Η σχέση "είναι τμήμα της" ορίζει μια μη γνήσια διάταξη πάνω στο Αστέρι Κλέινι του αλφαβήτου από το οποίο σχηματίζονται οι σειρές χαρακτήρων. Η μικρότερη σειρά χαρακτήρων στην διάταξη αυτή είναι η κενή σειρά χαρακτήρων.

Αν ο συμβολισμός για το τμήμα σειράς χαρακτήρων είναι σειρά χαρακτήρων[αρχικός χαρακτήρας τμήματος : πλήθος χαρακτήρων τμήματος], τότε

"αβγ"[1:2] είναι το τμήμα "αβ"
"αβγ"[3:1] είναι το τμήμα "γ"

Πράξεις[]

Συνένωση (ή παράθεση)[]

Υπάρχει μια πράξη που γίνεται με δυό σειρές χαρακτήρων, η συνένωση (αγγλ. concatenation). Το σύμβολο της πράξης είναι συνήθως & (μπορεί να είναι και +). Η συνένωση, από τις δυό σειρές χαρακτήρων (π.χ. την strA1 = "αβγ" και την strA2 = "δ"), δημιουργεί μια νέα σειρά χαρακτήρων (την strB = strA1 & strA2 = "αβγδ"), αρχίζοντας με τα περιεχόμενα της strA1 και συνεχίζοντας την σειρά με τα περιεχόμενα της strA2, (όπως ενώνονται δυο κομμάτια αλυσίδας για να φτιάξουν ένα μακρύτερο). Η νέα σειρά χαρακτήρων strB έχει μήκος ίσο με το άθροισμα των μηκών των strA1 και strA2. Η συνένωση δεν είναι αντιμεταθετική πράξη, οπότε η διάταξη των σειρών χαρακτήρων επηρεάζει το αποτέλεσμα της συνένωσης :

  • η strA2 είναι πρόθεμα:
    (strA2 & strA1) δίνει "δαβγ".
  • η strA2 είναι επίθεμα:
    (strA1 & strA2) δίνει "αβγδ". Η διαδικασία επιμήκυνσης με επίθεμα (αγγλ. append) είναι πολύ συνηθισμένη και σε αρχεία (αγγλ. file).
  • η strA2 είναι ένθεμα.
    Χρησιμοποιώντας τμήματα σειρών χαρακτήρων, μπορούμε να ενθέσουμε την δεύτερη σειρά χαρακτήρων strA2 ανάμεσα στους χαρακτήρες της πρώτης:
    (strA1[1:1] & strA2 & strA1[2:2]) δίνει "αδβγ".
    (strA1[1:2] & strA2 & strA1[3:1]) δίνει "αβδγ".

Ταξινόμηση[]

Η ταξινόμηση, (αγγλ. sort), τοποθετεί τις σειρές χαρακτήρων κατά αλφαβητική σειρά περιεχομένου. Η αλφαβητική σειρά μπορεί να είναι αύξουσα (Α Β Γ ... Χ Ψ Ω) ή φθίνουσα (Ω Ψ Χ ... Γ Β Α).

Αν ο χρησιμοποιούμενος κώδικας (όπως ο Ascii) δεν έχει τα ελληνικά γράμματα με την αλφαβητική τους σειρά, πρέπει το λογισμικό να χρησιμοποιήσει ειδικούς πίνακες αντιστοίχησης (αγγλ. collating sequences) για να επιτύχει την ελληνική αλφαβητική ταξινόμηση.

Υπάρχουν κάποια υπολογιστικά συστήματα, (όπως το Microsoft Excel), που αναγνωρίζουν το περιεχόμενο των σειρών χαρακτήρων και ταξινομούν χρονικά αν οι σειρές περιέχουν ημερομηνίες, ή ταξινομούν αριθμητικά αν περιέχουν αριθμούς, αλλιώς ταξινομούν αλφαβητικά.


Στοιχειοσειρές σε τυπικές γλώσσες[]

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

Ελληνική ορολογία[]

Για την απόδοση του όρου string of characters έχουν χρησιμοποιηθεί στο παρελθόν οι όροι ακολουθία χαρακτήρων και νήμα χαρακτήρων. Ο Ελληνικός Οργανισμός Προτυποποίησης (ΕΛΟΤ) έχει καθορίσει την παρακάτω ορολογία:


Ελληνικός όροςΑγγλικός όροςΓαλλικός όρος
στοιχειοσειρά, σειρά οντοτήτωνstringchaîne
στοιχειοσειρά, σειρά στοιχείωνstringchaînes
σειρά χαρακτήρωνcharacter stringchaîne de caractères
σειρά χαρακτήρωνstring of characterschaîne de caractères
αλφαβητική σειράalphabetic stringchaîne alphabetique
σειρά δυαδικών ψηφίωνbinary digit stringchaîne de chiffres binaires
συμβολοσειράsymbol stringchaîne de symboles
μοναδιαία στοιχειοσειράunit stringchaîne unitaire
κενή στοιχειοσειράnull stringchaîne vide

Πακέτα πληροφοριών[]

Ένα πακέτο πληροφορίας είναι μια στοιχειοσειρά που διακινείται σε συστήματα επικοινωνιών μεταξύ υπολογιστών. Οι κώδικες χαρακτήρων (όπως ο Ascii) περιέχουν ειδικούς χαρακτήρες ελέγχου του σχηματισμού και της διακίνησης των πακέτων πληρoφοριών. Για παράδειγμα, ένα πακέτο πληροφορίας μπορεί να έχει την μορφή :

συγχρονισμός, επικεφαλίδα ΑΑΑΑΑ, κείμενο ΒΒΒΒΒ, επαληθευτικά CCCCC, τέλος μηνύματος, τέλος μετάδοσης
SYN SYN SYN SYN SOH AAAAA STX BBBBB ETX CCCCC ETB EOT

Μια άλλη μέθοδος αποστολής μηνύματος είναι να προηγείται σε μια ακολουθία κανονικών χαρακτήρων ένας χαρακτήρας διαφυγής, (αγγλ. escape sequence), για να σχηματιστεί η εντολή επικοινωνίας. Αυτός ο τρόπος χρησιμοποιήθηκε πολύ στην επικοινωνία λογισμικού με εκτυπωτές και άλλα περιφερειακά.

Εσωτερική Αρθρογραφία[]

Βιβλιογραφία[]

Ιστογραφία[]


Ikl Κίνδυνοι ΧρήσηςIkl

Αν και θα βρείτε εξακριβωμένες πληροφορίες
σε αυτήν την εγκυκλοπαίδεια
ωστόσο, παρακαλούμε να λάβετε σοβαρά υπ' όψη ότι
η "Sciencepedia" δεν μπορεί να εγγυηθεί, από καμιά άποψη,
την εγκυρότητα των πληροφοριών που περιλαμβάνει.

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

Πρέπει να λάβετε υπ' όψη ότι
όλα τα άρθρα μπορεί να είναι ακριβή, γενικώς,
και για μακρά χρονική περίοδο,
αλλά να υποστούν κάποιο βανδαλισμό ή ακατάλληλη επεξεργασία,
ελάχιστο χρονικό διάστημα, πριν τα δείτε.



Επίσης,
Οι διάφοροι "Εξωτερικοί Σύνδεσμοι (Links)"
(όχι μόνον, της Sciencepedia
αλλά και κάθε διαδικτυακού ιστότοπου (ή αλλιώς site)),
αν και άκρως απαραίτητοι,
είναι αδύνατον να ελεγχθούν
(λόγω της ρευστής φύσης του Web),
και επομένως είναι ενδεχόμενο να οδηγήσουν
σε παραπλανητικό, κακόβουλο ή άσεμνο περιεχόμενο.
Ο αναγνώστης πρέπει να είναι
εξαιρετικά προσεκτικός όταν τους χρησιμοποιεί.

- Μην κάνετε χρήση του περιεχομένου της παρούσας εγκυκλοπαίδειας
αν διαφωνείτε με όσα αναγράφονται σε αυτήν

IonnKorr-System-00-goog



>>Διαμαρτυρία προς την wikia<<

- Όχι, στις διαφημίσεις που περιέχουν απαράδεκτο περιεχόμενο (άσεμνες εικόνες, ροζ αγγελίες κλπ.)


Advertisement