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

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

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

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

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

Τυπικές Γλώσσες[Επεξεργασία | επεξεργασία κώδικα]

Μήκος συμβολοσειράς[Επεξεργασία | επεξεργασία κώδικα]

Πράξεις συμβολοσειρών[Επεξεργασία | επεξεργασία κώδικα]

Συνένωση (ή παράθεση)[Επεξεργασία | επεξεργασία κώδικα]

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

Έστω  u = a_1 a_2 a_3 \dots a_i και έστω  v = b_1 b_2 b_3 \dots b_j ,

τότε  uv = a_1 a_2 a_3 \dots a_i b_1 b_2 b_3 \dots b_j .

Για κάθε συμβολοσειρά 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 έχουν χρησιμοποιηθεί στο παρελθόν οι όροι ακολουθία χαρακτήρων και νήμα χαρακτήρων. Ο Ελληνικός Οργανισμός Προτυποποίησης (ΕΛΟΤ) έχει καθορίσει την παρακάτω ορολογία:

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

Πακέτα πληροφοριών[Επεξεργασία | επεξεργασία κώδικα]

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

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

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