Sõne (andmetüüp)

Sõne (ka string, inglise string) on andmetüüp programmeerimiskeeltes. Seda tüüpi muutuja väärtuseks võib olla suvaline märgijada, tavaliselt teksti kujul. Märgiks võib olla ka tühik, sest kui võtta sõne pikkus length("tere maailm") , saadakse vastuseks 11.

Sõned esinevad programmides kas literaalidena või muutujatena. Sõned on tihti loodud kui massiivid märkidest kindla kodeeringuga. Olenevalt keelest võivad sõned olla muteeritavad (muudetavad) või mittemuteeritavad (mittemuudetavad).  

Sõnesid, mis on programmi sisse kirjutatud, nimetatakse sõneliteraalideks.

Ülo Kaasiku koostatud "Matemaatikaleksikoni" järgi on sõne "mingi alfabeedi sümbolitest moodustatud järjend ("sõna")".

Ametlik teooria 

Ütleme, et Σ on mittetühi lõplik sümbolite (märkide) hulk, mida kutsume tähestikuks. Sümbolite loomuse kohta eeldusi ei tehta. Sõne üle hulga Σ on iga lõplik jada sümboleid hulgast Σ.  Näiteks kui Σ = {0, 1}, siis 01011 on sõne tähestikus Σ.

Sõne s pikkus on sümbolite arv jadas s (jada pikkus) ja võib olla mistahes naturaalarv. Tihti tähistatakse seda kui |s|. Ainus sõne pikkusega 0 on tühi sõne ning seda tähistatakse kui ε või λ.

Kõikide sõnede hulk pikkusega n, kasutades tähestikku Σ, on tähistatud kui Σn. Näiteks kui Σ = {0, 1}, siis  Σ2 = {00, 01, 10, 11}. Iga tähestiku Σ puhul kehtib Σ0 = {ε}.

Kõikide sõnede hulk, kasutades tähestikku Σ, on Kleene’i katte hulgast Σ ja on tähistatud kui Σ*. Kasutades Σn,

Näiteks kui Σ = {0, 1}, siis Σ* = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, ...}. Kuigi hulk Σ* ise on loenduv, siis iga element hulgas Σ* on lõpliku pikkusega sõne.

Sõnede hulka üle Σ (st iga alamhulk hulgast Σ*) kutsutakse formaalseks keeleks üle Σ.  Näiteks, kui Σ = {0, 1}, siis sõnede hulk, kus on paarisarv nulle, {ε, 1, 00, 11, 001, 010, 100, 111, 0000, 0011, 0101, 0110, 1001, 1010, 1100, 1111, ...}, on formaalne keel üle Σ.

Tavalisemad funktsioonid 

Järgnevad funktsioonid on vaid mõned näited kõikidest funktsioonidest, mis sõnedel on. Funktsioonide täpne süntaks oleneb programmeerimiskeelest.

Märk indeksil (charAt)

Pikkus (length)

Võrdlemine (täisarvulise tagastusega, compare)

Võrdlemine (tõeväärtuse tagastusega kasutades operaatoreid, compare)

Konkatenatsioon (concatenation)

Sisalduvuse kontrollimine (contains)

Kindla märgi indeksi leidmine (find/index/indexOf)

Asendamine (replace)

Sõne ümber keeramine (reverse)

Poolitamine (split)

Ühendamine (join)

Alamsõne (substring)

Tühemike eemaldamine (trim/strip)

Viited 

Andmetüübid
Programmeerimine