Curso de Pascal
Variáveis


Você está em: MarMSX >> Cursos >> Pascal   Uma variável é um espaço de memória reservado pelo programa para armazenar um determinado tipo de dado. Ela é composta por:   Diferente do Basic, no Pascal devemos declarar uma variável antes de utilizá-la. Também devemos indicar qual é o tipo de dado que essa variável irá comportar.
  A palavra reservada "var" é utilizada para indicar que uma variável está sendo declarada.

  Sintaxe:
var <identificador> : <tipo de dado>;
  Exemplo:
var idade : integer;
  Declara uma variável com o identificador "idade" e o tipo de dado inteiro.
  Para a declaração de mais variáveis, utiliza-se um "var" apenas. Além disso, a declaração de variáveis deverá sempre estar antes do "begin" do corpo principal, função ou procedimento correspondente. Ex:
var nome : string[40];
    idade : integer;
    altura : real;
  Atribuição:

  A atribuição de valor é feita utilizando-se os dois pontos e o igual ":=". Os dois pontos são utilizados para diferenciar a igualdade de atribuição da igualdade do teste lógico, no qual é utilizado apenas o símbolo de igual "=". Ex:
var nota : integer;
begin
  nota := 7;
  if nota = 7 then
    writeln('Aprovado no limite!');
end.
  A variável nota recebe o valor igual a 7. Observe que o teste lógico (nota = 7) possui apenas o símbolo de igual, sem os dois pontos.



  Tipos de dados

  O Turbo Pascal possui os seguintes tipos de dados primitivos:

  BOOLEAN

  Variável que admite somente 2 valores distintos: FALSO ou VERDADEIRO.

TIPO TAMANHO
boolean 8 bits
wordbool 16 bits
longbool 32 bits
bytebool 8 bits

Exemplo:

var brasileiro : boolean;

begin
  brasileiro := false;
  if brasileiro then
    writeln('Brasuca')
  else
    writeln('Gringo');
end.
Saída:
Gringo

  Obs: para variáveis do tipo booleano, o teste do "if":
if brasileiro then
  equivale a:
if brasileiro = true then



  CHAR

  Variável utilizada para manipular caracteres. Contém o código ASCII de uma letra.
  Não serve para armazenar valores, pois este tipo de variável não permite realizar operações.  
  A função ord() retorna o código ASCII da variável, enquanto a função chr() retorna a letra correspondente a um código ASCII.

Exemplo:
var letra1, letra2 : char;

begin
  letra1 := 'A';
  letra2 := #65;
  writeln('A letra 1 é: ', letra1);
  writeln('A letra 2 é: ', letra2);
  writeln('O codigo ASCII da letra 1 é: ',ord(letra1));
  letra2 := chr(65); { Também pode }
end. 
  Saída:
  A letra 1 é: A
  A letra 2 é: A
  O código ASCII da letra 1 é: 65



  INTEGER

  Variável utilizada para manipular números inteiros.

TIPO FAIXA SINAL TAMANHO
shortint -128 a 127 Sinalizado 8 bits
integer -32768 a 32767 Sinalizado 16 bits
longint -2147483648 a 2147483647 Sinalizado 32 bits
byte 0 a 255 Não sinalizado 8 bits
word 0 a 65535 Não sinalizado 16 bits

  A diferença entre variável sinalizada e não sinalizada é a presença de números negativos. Nas variáveis sinalizadas, o bit mais significativo é utilizado para indicar o sinal. O bit 0 indica número positivo, e o bit 1 indica número negativo.

Exemplo:

var idade : integer;

begin
  idade:=20;
  write('Ela tem ',idade);    { Pode ser também: writeln('Ela tem ', idade, ' anos.'); }
  writeln(' anos.');
end. 
  Saída:
  Ela tem 20 anos.



REAL

Variável utilizada para manipular números reais.

TIPO FAIXA DÍGITOS BYTES
real 2.9e-39 a 1.7e38 11-12 6
single 1.5e-45 a 3.4e38 7-8 4
double 5.0e-324 a 1.7e308 15-16 8
extended 3.4e-4932 a 1.1e4932 19-20 10
comp -9.2e18 a 9.2e18 19-20 18

  Principais funções do real:

Exemplo:
var a : real;

begin
  a := 7.6;

  writeln('Valor de a: ', a);
  writeln('Valor truncado de a: ', trunc(a));
  writeln('Valor arredondado de a: ', round(a));
end.
  Saída:
  Valor de a: 7.6
  Valor truncado de a: 7
  Valor arredondado de a: 8



  STRING

  Variável que manipula cadeia de caracteres. Utilizada para armazenar palavras.
  Em sua declaração, podemos indicar o tamanho da palavra. Caso omitirmos este tamanho, será atribuído o máximo valor possível, que é de 256 caracteres.

  As principais funções de manipulação de strings são: Exemplo:
var nome : string[10];

begin
  nome:='Marcelo';
  writeln(copy(nome,1,3),'MSX');
end. 
  Saida:
  MarMSX

  Concatenação é a união de strings. Ela é feita no pascal utilizando-se o sinal de soma ("+"). Ex:
var frase1, frase2, frase3 : string;

begin
  frase1 := 'MSX';
  frase2 := frase1 + ' é o ';
  frase3 := frase2 + frase1;

  writeln(frase1);
  writeln(frase2);
  writeln(frase3);
end.
  Saída:
  MSX
  MSX é o
  MSX é o MSX

  Formatação de strings a partir de valores numéricos:
variavel : numero_casas_antes_virgula : numero_casas_depois_virgula

  Exemplo:
var i : integer;
    r : real;

begin
  i := 20;
  r := 34.5;

  writeln(i:3);
  writeln(r:2:1);
end.
  Saída:
    20
  34.5



  Variáveis Absolute

  As variáveis são alocadas em posições aleatórias de memória. Entretanto, podemos definir o endereço que uma variável irá residir através da palavra reservada "aboslute".
  Exemplo:
var i : integer absolute $f000;
  Fará com que a variável "i" resida no endereço de memória &HF000.

  O mesmo se dá para vetores:
var vetor : array[1..10] of byte absolute $D4CD;

  A declaração absolute deverá ser feita variável a variável, ou seja:
var i, j : byte absolute $C000;
  é errada. O correto é:
var i : byte absolute $C000;
    j : byte absolute $C001;



  Constantes

  A constante é uma espécie de variável que deverá ter seu valor explicitado na declaração e este valor não poderá ser alterado ao longo do programa.
  A sintaxe é a mesma da variável, entretanto utiliza-se a palavra reservada "const" antes da declaração das constantes.

  Exemplo:
const a : integer = 5;

begin
  writeln('Valor da constante a: ', a);
end.
  Saída:
  Valor da constante a: 5



  Estudo aprofundado: Interpretação dos dados na memória

  Quando escolhemos o tipo de uma variável, na verdade estamos indicando:   Para entender melhor, vejamos o seguinte exemplo contendo o trecho de memória entre os endereços 0 a 7:
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C

  A proposta a seguir é verificar como esses dados serão interpretados por uma variável, dependendo do seu tipo.
  Para qualquer tipo proposto, o endereço inicial da variável é 0.

  Byte

  Variável que ocupa 1 byte, onde interpreta o dado como um número inteiro não sinalizado.
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C
  Assim, tem-se na posição 0 o valor igual a &H61, o que equivale a 97 em decimal.


  Char

  Variável que ocupa 1 byte, onde interpreta o dado como um caractere.
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C
  Assim, tem-se na posição 0 o valor igual a &H61, o que equivale ao caractere 'a' da tabela de ASCII.


  Integer

  Variável que ocupa 2 bytes, onde interpreta o dado como um número inteiro não sinalizado.
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C
  Assim, tem-se o número: &H7A61 (posição invertida na memória), o que equivale a 31329 em decimal.


  Double

  Variável que ocupa 8 bytes, onde interpreta o dado como um número real.
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C
  Assim, o valor correspondente é 1,712E+214.


  String[8]

  Variável que ocupa 8 bytes, onde interpreta o dado como uma cadeia de caracteres.
 Endereço  00 01 02 03 04 05 06 07
 ---------------------------------
 Dado      61 7A 75 6C 61 6E 69 6C
  Assim, teriamos a palavra 'azulanil' (azul anil)



  Outros tipos de variáveis

  Além das variáveis primitivas, temos outros tipos de variáveis no Pascal, que serão abordadas nos capítulos mais adiante:
<< Anterior Pascal Próxima >>