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

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

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

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

Τυπικές Γλώσσες

Μήκος συμβολοσειράς

Πράξεις συμβολοσειρών

Συνένωση (ή παράθεση) 
Έστω μια συμβολοσειρά u και μια συμβολοσειρά v ενός αλφαβήτου Σ. Η συνένωση (concatenation) της u με τη v συμβολίζεται uv και είναι μια καινούργια συμβολοσειρά που προκύπτει από τη u ακολουθούμενη από τη v. Για παράδειγμα:

Έστω  και
έστω ,

τότε .

Για κάθε συμβολοσειρά w ισχύει wε = εw = w, όπου ε η κενή συμβολοσειρά.

Αναστροφή

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

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

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

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

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

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

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

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

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

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

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

Πακέτα πληροφοριών 
Ένα πακέτο πληροφορίας είναι μια στοιχειοσειρά που διακινείται σε συστήματα επικοινωνιών μεταξύ υπολογιστών. Οι κώδικες χαρακτήρων (όπως ο Ascii) περιέχουν ειδικούς χαρακτήρες ελέγχου του σχηματισμού και της διακίνησης των πακέτων πληρoφοριών. Για παράδειγμα, ένα πακέτο πληροφορίας μπορεί να έχει την μορφή :
 συγχρονισμός, επικεφαλίδα ΑΑΑΑΑ, κείμενο ΒΒΒΒΒ, επαληθευτικά CCCCC, τέλος μηνύματος, τέλος μετάδοσης
 SYN SYN SYN SYN SOH AAAAA STX BBBBB ETX CCCCC ETB EOT

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

 
Κωδικοποίηση χαρακτήρων
Τυπικές γλώσσες
Δομές δεδομένων