PROCESSAMENTO DE INFORMAÇÕES NÃO NUMÉRICAS

 

·       Há dois tipos predefinidos de dados para armazenamento de informações não numéricas em PASCAL: o tipo CHAR e o tipo STRING.

 

O TIPO CHAR

 

·       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.

 

O TIPO 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.