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