Stringa (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 1:
{{F|programmazione|maggio 2010}}
 
Una '''stringa''' in [[informatica]] è una sequenza di [[carattere (informatica)|caratteri]]. Sequenze di altri tipi di dato vengono chiamati vettori o, in inglese, [[array]].
 
== Caratteristiche ==
 
Può essere composta da [[byte]] nel caso delle stringhe con codifica [[ASCII]] o da [[word]] per le codifiche [[Unicode]] e [[UTF]].
 
Line 12 ⟶ 14:
<source lang="cpp">string a = "abc" + "def";</source>
in realtà crea 4 stringhe: la stringa per rappresentare ''a'', quella per rappresentare ''"abc"'', quella per rappresentare ''"def"'' e infine quella per immagazzinare il valore temporaneo ''"abcdef"''.
Proprio per questo motivo linguaggi come [[Java (linguaggio di programmazione)|Java]] e [[C sharp|C#]] mettono a disposizione altri oggetti, come '''StringBuffer''' o '''StringBuilder''' che permettono operazioni sulle stringhe più veloci e meno onerose in termini di utilizzo della memoria.
 
== Tipo di dato "stringa" ==
 
Un '''tipo di dato stringa''' è un [[tipo di dato]] modellato sull'idea di una stringa formale. Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i [[linguaggio di programmazione|linguaggi di programmazione]]. In alcuni linguaggi sono disponibili sono tipi primitivi e in altri come tipi compositi.
 
Line 24 ⟶ 27:
 
== Rappresentazioni ==
 
La rappresentazione delle stringhe dipende principalmente dalla scelta dei set di caratteri da usare (come alfabeto) e il metodo di codifica dei caratteri (vedere [[character encoding]]).
Le vecchie implementazioni delle stringhe erano studiate per lavorare con set di caratteri e codifiche definite dall'[[ASCII]], od estensioni più recenti come la serie [[ISO 8859]].
Line 33 ⟶ 37:
 
Qui si ha un esempio di una stringa ''zero-terminata'' (o ''null-terminated'') memorizzata in un [[buffer]] di 10 byte, assieme alla sua rappresentazione ASCII
 
{| cellspacing="0" celpadding="2" border="1" align="center"
|- ----
| F || R || A || N || K || <small>NUL</small> || k || e
| f || w
|- ----
| 46 || 52 || 41 || 4E || 4B || 00 || 6B || 65
| 66 || 77
Line 45 ⟶ 50:
 
La stringa equivalente in Pascal:
 
{| cellspacing="0" celpadding="2" border="1" align="center"
|- ----
| <small>length</small> || F || R || A || N
| K || k || f || f || w
|- ----
| 05 || 46 || 52 || 41 || 4E || 4B || 6B || 66
| 66 || 77
Line 59 ⟶ 65:
 
== Algoritmi per le stringhe ==
 
Sono stati studiati molti [[algoritmi]] per la manipolazione delle stringhe i quali si distinguono per finalità e per diverse scelte di compromesso di fronte ad esigenze contrastanti come l'ampiezza della portata e l'efficienza.
 
Questi algoritmi vengono collocati a categorie come le seguenti:
 
* [[algoritmiAlgoritmi di ricerca di stringhe]] aventi il compito di trovare una data sottostringa o una data configurazione di caratteri,
* [[algoritmiAlgoritmi di ordinamento]] (''sorting''),
* algoritmiAlgoritmi per [[espressioni regolari]],
* scansoriScansori e [[parser]] di stringhe.
 
Gli algoritmi più avanzati per l'elaborazione di stringhe spesso impiegano elaborati meccanismi formali e complesse strutture di dati: tra questi ricordiamo gli [[alberi di suffissi]] e le [[macchine a stati finiti]].
 
== Linguaggi e programmi di utilità orientati all'elaborazione di stringhe ==
 
Le stringhe costituiscono un tipo di dati tanto ampiamente utilizzato da indurre lo sviluppo di numerosi linguaggi finalizzati alla facilitazione delle elaborazioni delle stringhe più richieste dalle applicazioni. Tra questi vi sono:
 
* [[awkAwk]]
* [[Icon programming language|Icon]]
* [[Perl]]
* [[Tcl]]
* [[MUMPS]]
* [[sedSed (Unix)|sedSed]]
* [[SNOBOL]]
 
Line 84 ⟶ 94:
 
== Stringa vuota ==
 
Con '''stringa vuota''' si intende una stringa di lunghezza nulla, cioè una stringa che non contiene nessun [[carattere (informatica)|carattere]]. Può essere considerata come l'analogo per le stringhe di ciò che lo [[zero]] è per i [[numero|numeri]].
 
Line 92 ⟶ 103:
 
== Voci correlate ==
 
* [[Stringa (linguaggi formali)]]