string
string in molti linguaggi di programmazione, termine che indica un particolare tipo di dato non numerico, i cui elementi sono stringhe (o parole), cioè sequenze di caratteri alfanumerici. Questo tipo di dato è utilizzato per implementare il particolare ambiente di calcolo dei testi e dei caratteri. Le stringhe alfanumeriche, elementi di tale tipo di dato, hanno lunghezza finita, dovendo essere implementate su un automa non teorico. Si definisce allora il tipo di dato string[n] i cui elementi sono le stringhe di lunghezza massima uguale a n ∈ N, detta dimensione della stringa. Nei linguaggi di programmazione che prevedono questo tipo di dato, per assegnare un valore a una variabile string si usa inserire le virgolette (o gli apici) in apertura e chiusura della stringa stessa per evitare errori e ambiguità con altre espressioni numeriche o logiche. Per esempio sono elementi di string[4] le seguenti stringhe (indicate tra virgolette o apici):
L’omissione delle virgolette o degli apici potrebbe causare errori di interpretazione nella fase di compilazione: per esempio mentre «y ≔ 2» è una stringa alfanumerica, y ≔ 2 è una istruzione di assegnazione.
Nell’insieme string è definita l’operazione di → concatenazione che unisce due stringhe per formarne una nuova, di lunghezza pari alla somma delle due; l’insieme string[n], qualunque sia n, non è quindi chiuso rispetto a tale operazione, ha l’elemento neutro (la stringa vuota, di lunghezza 0) e non esiste l’inversa di una stringa rispetto all’operazione di concatenazione perché concatenando due stringhe non si ottiene mai la stringa vuota. Sono poi definite due funzioni: la prima, indicata come lunghezza(x), è una funzione string[n] → integer che associa a ogni stringa x la sua lunghezza (per esempio, lunghezza(‘cane’) = 4); la seconda è la funzione sottostringa(x, n, m) che, data una stringa x e due numeri naturali n e m, individua la sottostringa di x formata dai suoi caratteri a partire da quello di posto n e lunga m (per esempio, sottostringa(‘ombrello’, 4, 3) = ‘rel’). Ogni linguaggio di programmazione può definire queste funzioni con propri nomi riservati (cioè non utilizzabili per indicare altri elementi del programma) e prevedere anche sintassi differenti, mantenendo, tuttavia, la funzionalità di tali operazioni.