· Há dois tipos predefinidos de dados para armazenamento de informações não numéricas em PASCAL: o tipo CHAR e o tipo STRING.
· Usado quando a variável consisti de um único caractere em cada instante do processamento.
· Funções predefinidas para efetuar operações com variáveis do tipo char:
- PRED(X) - retorna o caractere precedente de X na seqüência de classificação.
- SUCC(X) - retorna o caractere sucessor de X na seqüência de classificação.
- ORD(X) - retorna a posição ocupada por X na seqüência de classificação.
· Combinando os tipos array e char podemos armazenar palavras, frases e até textos:
Exemplo:
· A palavra PASCAL poderá ser armazenada na variável nome, assim declarada:
nome : array[1..6] of char;
· Esta combinação é simplificada através do tipo predefinido STRING.
·
Usado quando a variável armazenará uma cadeia de
caracteres durante o processamento.
· O operador de concatenação (|| ou +) une dois strings formando um novo string.
·
Funções
pré-definidas efetuam várias operações com variáveis do tipo string:
- LENGTH(CADEIA) - retorna o tamanho atual (quantidade de caracteres) do string CADEIA.
- SUBSTR(CADEIA, INICIO, QUANTIDADE) - retorna uma parte (substring) do string CADEIA, a partir da posição INICIO e cujo tamanho é QUANTIDADE.
Exemplos:
LENGTH('TA NA HORA')
- retorna o inteiro 10.
SUBSTR('ABCDE', 2, 3)
- retorna 'BCD'.
SUBSTR('TA NA HORA', 1, 5) || SUBSTR('DE BOATO', 4, 3)
- retorna 'TA NA BOA'.
Exemplos de
declarações:
NOME: STRING[30]; /* NOME conterá até 30 caracteres */
ESTADO: STRING [2];
ESTADO_CIVIL: STRING[1]; /* equivale ao tipo char */
· A comparação de duas variáveis do tipo string é feita caractere a caractere e são diferenciados ao encontrar dois caracteres distintos.
Exemplo:
· Programa que compara 20 nomes lidos, determinando o primeiro na classificação alfabética. Cada nome tem no máximo 25 caracteres.
PROGRAM COMPARA_STRING;
VAR
/* O NOME QUE ESTÁ SENDO PROCESSADO */
NOME_ATUAL: STRING[25];
/* O PRIMEIRO DA CLASSIFIFICAÇÃO ENTRE OS
PROCESSADOS*/
PRIMEIRO_ATE_AGORA: STRING[25];
/* UMA VARIÁVEL AUXILIAR PARA O FOR */
CONTADOR: INTEGER;
BEGIN
WRITELN('INFORME UM NOME COM ATÉ 25 CARACTERES');
READLN(NOME_ATUAL); /* O PRIMEIRO DOS NOMES */
PRIMEIRO_ATE_AGORA := NOME ATUAL; /*SO FOI LIDO UM
NOME*/
FOR CONTADOR := 1 TO 19 DO
BEGIN
WRITELN('INFORME UM NOME COM ATÉ 25 CARACTERES');
READLN(NOME_ATUAL);
IF NOME_ATUAL < PRIMEIRO_ATE_AGORA THEN
BEGIN
PRIMEIRO_ATE_AGORA := NOME_ATUAL;
END;
WRITELN ('NOME LIDO = ', NOME_ATUAL:25)
END;
WRITELN('O PRIMEIRO NOME DA CLASSIFICAÇÃO ALFABÉTICA',
' EH: ', PRIMEIRO_ATE_AGORA')
END.