Cordas. Visão geral
Uma string é uma lista (ou sequência) de caracteres em uma ordem específica. Toda a sequência de caracteres é tratada como uma única entidade.
Um caractere é qualquer coisa que você pode digitar no teclado com um único toque de tecla (letra, número, barra invertida ou algum outro caractere).
Strings podem ter espaços: "Hello world!".
Uma string vazia é uma string que tem 0 caracteres.
Pascal reconhece como strings tudo escrito em apóstrofos ( ' ' ).
Em Pascal, uma string é do tipo string .
Você pode escrever um novo valor em uma string usando a instrução de entrada
leitura(s);
Você também pode simplesmente atribuir um valor de string à variável, como
s := 'Python';
Você pode determinar o comprimento de uma string usando a função interna length
n := comprimento(s)
Comparação de strings
Strings podem ser comparadas umas com as outras como números. Você pode determinar qual das linhas é maior, qual é menor.
Ao comparar strings, os códigos de caracteres são comparados. Existem dezenas, senão centenas, de codificações de caracteres. A maneira mais fácil de entender esse conceito é entender um dos mais simples, ASCII (leia aqui).   ;
É necessário entender que nas codificações modernas as letras russas e inglesas são organizadas em ordem alfabética, os números também vão do menor ao maior.
Por exemplo, na tabela de códigos ASCII, o código da letra inglesa 'A' - 65, letras 'a' - 97, dígito '0' tem o código 48. As letras russas estão localizadas na parte estendida da tabela de códigos ASCII (números de 128 a 255). Letras maiúsculas vêm antes (ou seja, têm um código menor) do que letras minúsculas.
Na maioria das tabelas de codificação usadas, os padrões são os mesmos, as letras minúsculas são posteriores às maiúsculas, os números são anteriores às letras e as letras russas são posteriores às do inglês.
Por exemplo: "locomotiva" < "barco a vapor", porque as palavras diferem na quinta letra e "em" < "x".
|
Infelizmente, não há nenhuma função em Pascal que permita a leitura de várias linhas separadas por espaços a partir de uma única linha. Para fazer isso, você deve escrever sua própria função:
vars, w: string;
i, j, ind: inteiro;
a: array de string;
começar
leitura(s);
setlength(a, comprimento(s));
i := 1;
ind := 0;
enquanto eu < comprimento(s) fazer
começar
enquanto (i < comprimento(s)) e ('' + s[i] = ' ') do i += 1;
j := i + 1;
w := '' + s[i];
enquanto (j < comprimento(s)) e ('' +s[j] <> ' ') começam
w += s[j];
j += 1;
fim;
a[ind] := w;
ind += 1;
i := j;
fim;
escreva(a[0], a[1]);
fim.
Como resultado, obtemos uma matriz de strings.
|
Strings podem ser adicionadas usando o sinal "+". Essa operação é chamada de concatenação de strings ou concatenação.
Por exemplo,
s := 'Oi, ';
s1 := 'mundo';
writeln(s + s1);
A tela exibirá a frase "Hello world" (sem aspas).
|
Referenciando índices de linha
Cada caractere de uma string tem seu próprio número (chamado índice), e a indexação na linguagem de programação Pascal começa a partir de um. Ou seja, o primeiro caractere tem índice 1, o segundo tem índice 2 e assim por diante.
Os caracteres de string podem ser acessados por índices, que são indicados entre colchetes s[i] .
Exemplo
String S |
H |
e |
l |
l |
o |
Índice |
S[1] |
S[2] |
S[3] |
S[4] |
S[5] |
PS Muitos métodos de string em PascalABC.NET assumem que as strings são indexadas a partir do zero. Por enquanto, não usaremos métodos de string que funcionam com índices baseados em zero. Existem substituições equivalentes para estes com funções externas que assumem que as linhas são indexadas a partir de 1.
|
Como um caractere pode ser acessado por índice, você pode usar um loop de variável para iterar sobre todos os caracteres, que assumirão os possíveis valores de índice. Por exemplo, um programa que exibe todos os códigos de caracteres da string s ficaria assim
para i := 1 a comprimento(s) faça
writeln(s[i], ord(s[i]))
Explicações para o programa:
1) A função length(s) encontra o comprimento de uma string. O índice do primeiro caractere é 1 e o índice do último é length(s). A variável de loop i apenas assumirá valores de 1 a comprimento(s).
2) Em cada linha, o próprio símbolo será exibido primeiro e, em seguida, seu código, que é retornado pela função interna ord()
A mesma enumeração pode ser escrita mais curta:
para c em s faça
writeln(c, ord(c));
Nesse fragmento, o cabeçalho do loop percorre todos os caracteres s, colocando-os por sua vez na variável c.
A peculiaridade do Pascal ao trabalhar com strings é que as strings são objetos mutáveis. Em outras palavras, podemos alterar caracteres individuais de uma string.
Por exemplo, a seguinte instrução funcionará
s[5] := 'a';
Você também pode compor uma nova string a partir dos caracteres com as alterações necessárias.
Por exemplo, um programa que substitui todos os caracteres 'a' aos caracteres 'b' ficará assim:
leia(s);
for i := 1 to length(s) comece
se s[i] = 'a'então s[i] := 'b';
fim;
writeln(s);
Neste exemplo, percorremos todos os caracteres da string s. No corpo do loop, verificamos o valor da variável s[i]: se o caractere corresponder ao caractere 'a', então o substituímos por 'b'.
|