Sõne (andmetüüp)

Allikas: Vikipeedia
Jump to navigation Jump to search

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.[1]

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

Ametlik teooria[muuda | muuda lähteteksti]

Ü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 Σ. [3] 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 λ.[3][4]

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 Σ*.[5] 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 Σ. [5] 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[muuda | muuda lähteteksti]

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)[muuda | muuda lähteteksti]

Definitsioon charAt(sõne,täisarv) tagastab märgi.[6]
Kirjeldus Tagastab märgi küsitud indeksil antud sõnest. Kui antud indeksit sõnes ei leidu, tagastatakse kas veasõnum või tühi väärtus.

Pikkus (length)[muuda | muuda lähteteksti]

Definitsioon length(sõne) tagastab sõne pikkuse.[6]
Kirjeldus Tagastab sõne pikkuse, milleks on märkide arv sõnes.

Võrdlemine (täisarvulise tagastusega, compare)[muuda | muuda lähteteksti]

Definitsioon compare(sõne1,sõne2) tagastab täisarvu.[6]
Kirjeldus Võrdleb omavahel kahte sõnet. Kui nad on samaväärsed, tagastatakse 0. Kui ei ole samaväärsed, siis enamasti tagastatakse kas positiivne või negatiivne täisarv olenevalt sellest, kumb sõne on suurem. Sõnede võrdlus toimub tavaliselt tähestiku järjekorra alusel kindla kodeeringuga.

Võrdlemine (tõeväärtuse tagastusega kasutades operaatoreid, compare)[muuda | muuda lähteteksti]

Definitsioon sõne1 OP sõne2 tagastab tõeväärtuse, kus OP on mingi võrdlusoperaator, tavaliselt üks järgnevatest: =, <>, <, >, <=, >=, !=
Kirjeldus Võrdleb kahte sõne tähestiku järjekorda kasutades ja tagastab tõeväärtuse.

Konkatenatsioon (concatenation)[muuda | muuda lähteteksti]

Definitsioon concatenate(sõne1,sõne2) tagastab sõne.
Kirjeldus Konkateneerib (liidab) kaks sõne omavahel, tagastades kombineeritud sõne.

Sisalduvuse kontrollimine (contains)[muuda | muuda lähteteksti]

Definitsioon contains(sõne,alamsõne) tagastab tõeväärtuse.
Kirjeldus Tagastab, kas sõne sisaldab alamsõne.

Kindla märgi indeksi leidmine (find/index/indexOf)[muuda | muuda lähteteksti]

Definitsioon find(sõne,alamsõne) tagastab täisarvu.
Kirjeldus Tagastab esimese alamsõne ilmnemise indeksi sõnest. Kui alamsõne ei leita, tagastatakse tavaliselt vigane indeks. Keeltes, kus lugemine algab 0'st tagastatakse tavaliselt -1. Keeltes, kus lugemine algab 1'st tagastatakse

tavaliselt 0.

Asendamine (replace)[muuda | muuda lähteteksti]

Definitsioon replace(sõne, asendatav, asendaja) tagastab sõne.
Kirjeldus Tagastab sõne, kus iga esinemine asendatavast on asendatud asendajaga.

Sõne ümber keeramine (reverse)[muuda | muuda lähteteksti]

Definition reverse(sõne)
Kirjeldus Pöörab ümber märkide järjestuse sõnes. Olenevalt keelest kas tagastab uue sõne või väärtustab ümber etteantud sõne.

Poolitamine (split)[muuda | muuda lähteteksti]

Definitsioon <sõne>.split(eraldaja[, limiit]) poolitab sõne eraldaja koha pealt. Tihti on olemas ka valikuline argument limiit, millega saab määrata maksimaalset kordade arvu, mil see juhtub.[7]
Kirjeldus Poolitab sõne igast kohast, kust leiab eraldaja, mis on ise samuti sõne. Tagastab järjendi või massiivi alamsõnedest. Kui limiit on antud, peatub, kui on nii palju poolitamisi juba tehtud. Vastandmeetod sõnede ühendamisele.

Ühendamine (join)[muuda | muuda lähteteksti]

Definitsioon join(eraldaja, sõnede_list) tagastab sõne.
Kirjeldus Ühendab kõik sõned järjendis, pannes nende vahele eraldaja. Poolitamise vastand.

Alamsõne (substring)[muuda | muuda lähteteksti]

Definitsioon substring(sõne, algindeks, lõppindeks) tagastab sõne.
substr(sõne, algindeks, märkide_arv) tagastab sõne.
Kirjeldus Tagastab alamsõne of sõnest algindeksi ja lõppindeksi vahel, või algusega algindeks pikkusega märkide_arv.

Tühemike eemaldamine (trim/strip)[muuda | muuda lähteteksti]

Definitsioon sõne.strip() tagastab sõne.[7]
Kirjeldus Tagastab sõne, kus on algusest ja lõpust eemaldatud tühikud, realõpu sümbolid, tabulatuurid ja muud tühemikud.

Viited[muuda | muuda lähteteksti]

  1. "Programmeerimise Algkursuse materjal". Kasutatud 17.11.2018.
  2. Ülo Kaasik. Matemaatikaleksikon. Tallinn: Eesti Entsüklopeediakirjastus. 1992, lk 238.
  3. 3,0 3,1 Barbara H. Partee; Alice ter Meulen; Robert E. Wall (1990). Mathematical Methods in Linguistics. Kluwer. 
  4. John E. Hopcroft, Jeffrey D. Ullman (1979). Introduction to Automata Theory, Languages, and Computation. Addison-Wesley. ISBN 0-201-02988-X.  Here: sect.1.1, p.1
  5. 5,0 5,1 "Formaalsed keeled ja seosed - Loengukonspekt".
  6. 6,0 6,1 6,2 "Java sõne dokumentatsioon".
  7. 7,0 7,1 "Python'i sõne dokumentatsioon".