Variáveis alfanuméricas:

Uma das novidades mais interessantes que o computador nos trouxe foi a possibilidade de fazer algumas operações simples usando palavras. Muito do poder de processamento dos programas está contido nesta capacidade, até certo ponto, singela. Mas vamos começar do começo.

Já vimos em outras páginas da TILT, que um byte foi definido como um conjunto de 8 bits, podendo expressar 256 valores distintos (de 0 a 255). Estes valores são usados para definir os caracteres gráficos do nosso alfabeto e recebeu o nome de conjunto de caracteres ASCII (American Standard Code Information Interchange). O ASCII foi criado em 1968 para garantir a eficiência da comunicação de dados e a compatibilidade entre diferentes equipamentos de computação.

O conjunto ASCII básico consiste em 96 letras maiúsculas e minúsculas com representação na tela e na impressora, mais 32 caracteres de controle sem representação gráfica. O código de cada caracter individual é composto de 7 bits mais 1 bit de paridade para a verificação de erros.

No Delphi dispomos de um tipo de variável, para tratar dos caracteres alfanuméricos, chamada "string". String pode ser uma frase, uma palavra ou apenas um caracter. No caso do caracter, dispomos também de um tipo especial, chamado "char".

Da mesma forma que para as variáveis numéricas, precisamos declarar as variáveis string na seção var das procedures. Por exemplo:

var Nome: string;

Com isso informamos ao nosso programa que iremos usar uma variável string chamada "Nome". Não há necessidade de declarar o seu tamanho.

Também a atribuição de valores é semelhante aquela usada para as variáveis numéricas. Por exemplo:

begin
  Nome:= 'João Henrique';
end;

Neste caso, a variável Nome passou a ter como conteúdo as palavras 'João Henrique'. Podemos criar uma segunda variável string para conter o sobrenome. Assim:

var
  Nome, Sobrenome: string;
begin
  Nome:= 'João Henrique';
  Sobrenome:= 'Nascimento';
  Nome:= Nome + Sobrenome;
end;

No final, a variável Nome conterá 'João Henrique Nascimento', certo? Errado. O resultado final será 'João HenriqueNascimento', porque esquecemos de acrescentar um espaço para o sobrenome. Note que pequenos detalhes como este são importantes para o computador, que é preciso nas operações.

Para nós, as palavras João HenriqueNascimento representam a mesma coisa que João Henrique Nascimento, mas para o computador não. São strings de tamanhos diferentes e com conteúdos diferentes.

Podemos lidar com os caracteres individualmente, ao invés de inseridos em strings, usando a variável "char".

var
  Letra: char;
begin
  Letra:= 'A';
end;

É preciso ter cuidado aqui pois a variável Letra não é uma string de um único caracter e sim apenas um único caracter. Para usar o código ASCII da letra, ao invés da sua representação gráfica, é preciso usar antes o sinal "#". Por exemplo Letra:= #65 é o mesmo que Letra:= 'A', pois 65 é o código ASCII para a letra "A".

O Delphi possui diversas funções pré definidas, que são usadas em conjunto com as strings. As principais são:

chr(X) - Fornece um caracter a partir do seu código ASCII (X pode ser uma expressão numérica). Por exemplo:

Letra:= chr(65);
Letra:= chr(55 + 10);

ord(X) - Fornece o código ASCII da letra especificada. Exemplo (Valor é uma variável integer):

Valor:= ord('A');
Valor:= ord(Nome[1]);

Neste segundo caso, especificamos na string Nome, o seu primeiro caracter ('J').

copy(X,Y,Z) - Retorna com uma substring retirada da string especificada. X é a string original, Y é o índice do caracter inicial da substring e Z é o tamanho final da substring. Exemplo:

Nome:= 'João Henrique';
Nome := copy(Nome, 6, 5);

Neste exemplo, o resultado final será Nome = 'Henri'.

pos(X,Y) - Retorna com o valor índice da primeira ocorrência da string X dentro da string Y. Exemplo:

Nome:= 'João Henrique';
Valor:= pos('H', Nome);

Valor retorna com 6, pois é a posição da letra 'H' dentro da string Nome.

length(X) - Retorna com o tamanho da string especificada. Exemplo:

Nome:= 'João Henrique';
Valor:= length(Nome);

Neste caso, Valor passa a conter o tamanho da string Nome (13 caracteres).

lowercase(X) - Converte todos os caracteres da string X para letras minúsculas. Exemplo:

Nome:= 'João Henrique';
Nome:= lowercase(Nome);

Nome passará a conter 'joão henrique'.

uppercase(X) - Converte todos os caracteres da string X para letras maiúsculas. Exemplo:

Nome:= 'João Henrique';
Nome:= uppercase(Nome);

Nome passará a conter 'JOÃO HENRIQUE', ou muito provavelmente 'JOãO HENRIQUE'.

insert(X,Y,Z) - Insere a string X, na string Y, a partir da posição Z. Exemplo:

Nome:= 'João Henrique';
insert('Calos ',Nome,6);

O resultado será Nome igual a 'João Carlos Henrique'.

Para lidarmos com os valores numéricos e suas representações alfanuméricas, dispomos de algumas funções específicas. Elas tornam-se necessárias, por exemplo, quando o usuário precisa "informar" um valor numérico ao programa. Já vimos que pelo teclado só é possível a entrada de string. Por exemplo, o número 237, digitado pelo teclado, nada mais é do que a palavra '237'. Para usá-la como um valor precisaremos convertê-la.

StrToInt(X) - Converte a string X no seu valor numérico correspondente, declarado como integer (StringToInteger). Exemplo:

Nome:= '237';
Valor:= StrToInt(Nome);

IntToStr(X) - Converte o valor integer X na string correspondente (IntegerToString). Exemplo:

Valor:= 237;
Nome:= IntToStr(Valor);

Esta função é particularmente útil em nossos programas para informar ao usuário resultados de operações envolvendo valores numéricos. A única forma de mostrar um valor numérico na tela é através de uma string.



online