Stringhe. Panoramica

Una stringa è un elenco (o sequenza) di caratteri in un ordine particolare. L'intera sequenza di caratteri viene trattata come una singola entità.

Un carattere è qualsiasi cosa tu possa digitare sulla tastiera con una sola pressione di un tasto (lettera, numero, barra rovesciata o qualche altro carattere).
Le stringhe possono contenere spazi: "Hello world!".
Una stringa vuota è una stringa che ha 0 caratteri.
Pascal riconosce come stringhe tutto ciò che è scritto in apostrofi (' ').
In Pascal, una stringa è di tipo string.

È possibile scrivere un nuovo valore in una stringa utilizzando l'istruzione input
read(s);
Puoi anche semplicemente assegnare un valore stringa alla variabile, ad esempio  
s := 'Python';
Puoi determinare la lunghezza di una stringa usando la funzione integrata length
n := lunghezza/e


Confronto tra stringhe

Le stringhe possono essere confrontate tra loro proprio come i numeri. Puoi determinare quale delle linee è maggiore, quale è minore.

Quando si confrontano le stringhe, vengono confrontati i codici dei caratteri. Esistono dozzine, se non centinaia, di codifiche dei caratteri. Il modo più semplice per comprendere questo concetto è comprendere uno dei più semplici, ASCII (leggi qui).   ;
È necessario capire che nelle codifiche moderne sia le lettere russe che quelle inglesi sono disposte in ordine alfabetico, anche i numeri vanno dal più piccolo al più grande. 
Ad esempio, nella tabella dei codici ASCII, il codice per la lettera inglese 'A' - 65, lettere 'a' - 97, cifra '0' ha il codice 48. Le lettere russe si trovano nella parte estesa della tabella dei codici ASCII (numeri da 128 a 255). Le lettere maiuscole vengono prima (cioè hanno un codice più piccolo) rispetto alle lettere minuscole.
Nella maggior parte delle tabelle di codifica utilizzate, i modelli sono gli stessi, le lettere minuscole sono successive alle lettere maiuscole, i numeri sono precedenti alle lettere e le lettere russe sono successive a quelle inglesi.

Ad esempio: "locomotiva"  < "battello a vapore", perché le parole differiscono nella quinta lettera e "in" < "x".

Sfortunatamente, non esiste alcuna funzione in Pascal che consenta di leggere più righe separate da spazi da una singola riga. Per fare ciò, devi scrivere la tua funzione:
vars, w: stringa;
i, j, ind: intero;
a: matrice di stringhe;

inizio
    readln(s);
    setlength(a, lunghezza(i));
    io := 1;
    ind := 0;
    mentre io < lunghezza (s) fare
    inizio
        while (i < lunghezza/e) e ('' + s[i] = ' ') do i += 1;
        j := io + 1;
        w := '' + s[io];
        mentre (j < length(s)) e ('' +s[j] <> ' ') iniziano
            w += s[j];
            j += 1;
        FINE;
        a[ind] := w;
        ind += 1;
        io := j;
    FINE;
    scrivere(a[0], a[1]);
FINE.

Come risultato, otteniamo un array di stringhe.

Le stringhe possono essere sommate utilizzando il segno "+". Questa operazione è chiamata concatenazione di stringhe o concatenazione
Ad esempio, 
s := 'Ciao, ';
s1 := 'mondo';
writeln(s + s1);
Lo schermo visualizzerà la frase "Ciao mondo" (senza virgolette).

Riferimento agli indici di riga
Ogni carattere di una stringa ha il proprio numero (chiamato indice) e l'indicizzazione nel linguaggio di programmazione Pascal parte da uno. Cioè, il primo carattere ha indice 1, il secondo ha indice 2 e così via.
È possibile accedere ai caratteri stringa tramite indici, indicati tra parentesi quadre s[i].
 
Esempio 
Stringa S H e l l o
Indice S[1] S[2] S[3] S[4] S[5]

P.S. Molti metodi di stringa in PascalABC.NET presuppongono che le stringhe siano indicizzate da zero. Per il momento non utilizzeremo metodi stringa che funzionano con indici a base zero. Esistono sostituzioni equivalenti per questi con funzioni esterne che presuppongono che le righe siano indicizzate da 1. 
 

Poiché è possibile accedere a un carattere tramite l'indice, è possibile utilizzare un ciclo variabile per eseguire iterazioni su tutti i caratteri, che assumeranno possibili valori di indice. Ad esempio, un programma che visualizza tutti i codici dei caratteri della stringa s sarebbe simile a questo
for i := 1 to length(s) do
    writeln(s[i], ord(s[i]))
Spiegazioni per il programma:
1) La funzione length(s) trova la lunghezza di una stringa. L'indice del primo carattere è 1 e l'indice dell'ultimo è length(s). La variabile del ciclo i prenderà solo valori da 1 a length(s).
2) In ogni riga verrà visualizzato prima il simbolo stesso e poi il suo codice, che viene restituito dalla funzione built-in ord()

La stessa enumerazione può essere scritta più breve:
per c in s do 
    writeln(c, ord(c));
In questo frammento, l'intestazione del ciclo scorre tutti i caratteri s, inserendoli a turno nella variabile c.

La particolarità di Pascal quando si lavora con le stringhe è che le stringhe sono oggetti mutabili. In altre parole, possiamo modificare i singoli caratteri di una stringa.
Ad esempio, la seguente istruzione funzionerà
s[5] := 'a';
Puoi anche comporre una nuova stringa dai caratteri con le modifiche richieste.
Ad esempio, un programma che sostituisce tutti i caratteri 'a' ai caratteri 'b' sarà simile a questo:
lettura/i;
    for i := 1 to length(s) iniziano
        se s[i] = 'a'allora s[i] := 'b';
    FINE;
writeln(s);
In questo esempio, eseguiamo un ciclo di tutti i caratteri della stringa s. Nel corpo del ciclo, controlliamo il valore della variabile s[i]: se il carattere corrisponde al carattere 'a', lo sostituiamo con 'b'.