Tipos de Dados em Pascal
Autor: Robson Jhonson Alves | Publicado: 2011-10-11T16:53:00-07:00

TIPOS DE DADOS EM PASCAL 1 - Tipos ordinais            São tipos de dados que representam conjuntos enumeráveis de valores ordenados.Turbo Pascal possui 10 tipos ordinais predefinidos:      ·        Cinco subconjuntos dos inteiros: Shortint,  Integer, LongInt, Byte e Word; ·        Quatro tipos lógicos: Boolean, WordBool, LongBool, ByteBool;·        Tipo caractere: Char.·        Tipos enumerados;·        Subfaixas.a) Tipos inteiros:            Representam subconjuntos dos inteiros matemáticos, com faixa de valores de acordo com o número de bits empregados. Obs: Os tipos inteiros que permitem valores negativos reservam 1 bit para o sinal.TIPO FAIXA TAMANHO ShortInt -128..127 8-bit Integer -32768..32767 16-bit LongInt -2147483648..2147483647 32-bit Byte 0..255 8-bit Word 0..65535 16-bit b) Tipos lógicosHá quatro tipos lógicos pré-definidos: Boolean, WordBool, LongBool, e ByteBool. Os quatro só admitem os valores False e True. Veja a definição abaixo:    Boolean  = (False, True);     { 8 bits  }    WordBool = (False, True);     { 16 bits }    LongBool = (False, True);     { 32 bits }    ByteBool = (False, True);     { 8 bits } Obs: Boolean é o tipo preferencialmente empregado. Os outros três existem principalmente para prover compatibilidade com o sistema Windows.  c) Tipo Caractere (char)             Um caractere é qualquer dígito numérico, letra do alfabeto ou um símbolo especial              Variáveis do tipo ordinal char são usadas para armazenar quaisquer caracteres da tabela ASCII. Constantes caracteres são escritas entre aspas simples. Ex:     ´A´, ´3´, ´b´, ´*´ , ´&´, etc.Obs: o caractere  aspa simples (´) é representado com duas aspas simples (entre aspas simples).  Ex:  var    Ch: char; begin    Ch := ´´´´;    Write(Ch);           : Na saída aparecerá apenas...´        d) Tipos Enumerados definidos pelo programador         Definem conjuntos ordenados de valores, enumerando os identificadores que denotam os valores possíveis para aquele tipo.   Sintaxe: type    NomeTipo = (identif_1,identif_2, ..., identif_n);  Exemplo: type    tCor =(vermelho,laranja,amarelo,verde,azul,anil,violeta); var    C1,C2: tCor; begin    C1 := vermelho;      { e não ´vermelho´... }    C2 := violeta;   e) Tipos SubfaixasDefinem faixas de valores de um certo tipo ordinal  Sintaxe:            Constante1 .. Constante2  Obs: são especificados os valores mínimo e máximo da faixa (nessa ordem).Exemplos:program SubFaixa; type    tIdadeFunc = 18..80;    tLetraMin = ´a´.. ´z´;    tDigito  =  ´0´ .. ´9´; var    IdFunc: tIdadeFunc;    L: tLetraMin;    D: tDigito; begin    IdFunc := 20;    L := ´d´;    D := ´4´;      .      .      . end.      Nos tipos ordinais há uma ordem precisa entre os elementos (como o termo já indica). Assim, as seguintes funções podem ser aplicadas a esses tipos: função Ord   Retorna o valor ordinal de um certo valor (ou expressão).Exemplo type    Cores =  (vermelho,azul,verde); begin    Writeln(´Azul possui um valor ordinal de ´, Ord(azul));    Writeln(´O código ASCII para "c" é ´, Ord(´c´)); end. Obs: A primeira constante do conjunto tem valor ordinal de 0, a segunda de 1, e assim sucessivamente. função Pred     Retorna o predecessor de um argumento.    O  resultado será do mesmo tipo do parâmetro passado e corresponderá ao seu predecessor. função Succ     Retorna o sucessor do argumento.   O resultado será do mesmo tipo do parâmetro passado e corresponderá ao seu sucessor.Exemplo: type    Cores = (vermelho,azul,verde); var    C1,C2: Cores;    A,B: byte; begin    Writeln('O predecessor de 5 é ', Pred(5));    Writeln('O sucessor de 10 é ', Succ(10));    C1:= vermelho;    A:= Ord(C1);       { 0 }    A:= Ord(azul);     { 1 }    C2:= Pred(azul);   { vermelho }    if Succ(vermelho) = azul    then Writeln('azul é o sucessor de vermelho.');         .         .         . end.  procedure Inc        Incrementa uma variável.Declaração           procedure Inc (var X [ ; N: Longint ] );      X é uma variável de um tipo ordinal e N é uma expressão de tipo inteiro. X será incrementado de 1 se N não for especificado    Inc(X);       {  corresponde a X:= X + 1; }     Inc(X,N);     {  corresponde a X:= X + N; } procedure  Dec         Decrementa uma variável.Declaração:         procedure Dec(var X[ ; N: Longint]);            X é uma variável de um tipo ordinal e N é uma expressão de tipo inteiro. X é decrementado de 1, ou de N se N é especificado            Dec(X);      { corresponde a  X:= X-1; }      Dec(X,N);    { corresponde a  X:= X-N; } Obs: Inc e Dec geram código otimizado e são especialmente úteis em laços (repetições). 2) Cadeias (seqüências) de Caracteres  - strings    Uma variável string é uma cadeia de caracteres com tamanho variável e um tamanho máximo entre 1 e 255.  Sintaxe:           string [ constante ]    OU        string Obs1:   se uma cadeia de caracteres é declarada sem um tamanho máximo, será atribuído               automaticamente o tamanho 255. Obs2: Constantes string são sempre escritas entre aspas simples.Obs3: Para indicar, dentro de uma constante string, uma aspa simples, são usadas duas aspas simples consecutivas. Ex:    write(’Duas ONG’’s foram criadas’);  Duas ONG´s foram criadas     Obs4: Os seguintes operadores podem ser usados com variáveis ou constantes string.  =         <>    <    >         <=         >=          + Os seis primeiros operadores são empregados para comparar duas constantes ou variáveis do tipo cadeia de caracteres. Ex:  ’BALA’ <=  ’BOLA’   resultará  True  O operador   +  é usado para concatenar cadeias de caracteres. Ex: var    S1,S2,S3: string[20]; begin    S1 := ’Arthur’;    S2 := ’Ferreira’;    S3 := S1 + ’ ’ + S2;    write(S3);    {  Arthur Ferreira }      .         .         .  3 - Tipos reais:        Subconjuntos dos números reais, representados na notação de ponto flutuante.        Turbo Pascal provê cinco tipos reais: TIPO FAIXA DÍGITOS TAMANHO real 2.9e-39...1.7e38 11-12 6 single 1.5e-45..3.4e38 7-8 4 double 5.0e-324...1.7e308 15-16 8 extended 3.4e-4932..1.1e4932 19-20 10 comp -9.2e18..9.2e18 19-20 8