Buscar

Aula_004 - Tipos de Dados I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

1
Aula 4
Professores:
Dante Corbucci Filho
Alexandre Plastino
Conteúdo:
- Tipos de Dados
 - Tipos Simples
 - primitivos
 - escalares ou enumerados
 - faixas ou subintervalos 
 
 
2
Tipos de Dados
 As variáveis de um programa representam os dados que 
serão manipulados por este. Cada variável pode assumir um 
conjunto específico de valores. Esse conjunto de valores é definido 
por um tipo de dados.
 Os tipos de dados podem ser classificados em duas grandes 
categorias:
 - Tipos simples (ou não estruturados)
 - Tipos estruturados.
Programa = Algoritmo + Estrutura de Dados 
3
Tipos de Dados Simples
 Um tipo simples (ou não estruturado) é aquele 
composto por elementos "atômicos" ou indivisíveis.
 Exemplos:
 - Tipo inteiro 
 - Tipo real
 - Tipo caracter
 - Tipo booleano
4
Tipos de Dados Estruturados
 Um tipo estruturado é aquele composto a partir de 
tipos simples. 
 Um tipo estruturado pode ser uma composição de 
outros tipos estruturados.
 Exemplo: suponha que, em determinado programa,
seja necessário armazenar todas as posições assumidas
durante um jogo de xadrez. 
5
Tipos de Dados Estruturados
Versão 1: 
 história = seqüência de tabuleiro;
6
Tipos de Dados Estruturados
Versão 2: 
 história = seqüência de tabuleiro;
 tabuleiro = matriz[8,8] de posição;
7
Tipos de Dados Estruturados
Versão 3: 
 história = seqüência de tabuleiro;
 tabuleiro = matriz[8,8] de posição;
 posição = registro 
 cor: (branca, preta);
 peça: (peão, torre, cavalo, bispo, rainha, rei, nada)
 fim;
8
Tipos de Dados Simples
 Em Pascal, os tipos simples podem pertencer a três 
categorias:
a) tipos primitivos: 
 boolean, integer, char, real;
b) escalares ou enumerados:
 Dia = (dom, seg, ter, qua, qui, sex, sab);
c) faixas ou subintervalos:
 Mes = 1 . . 12
 DiaUtil = seg . . sex;
9
Tipo Primitivo Boolean
Conjunto de possíveis valores:
• Variáveis do tipo boolean podem assumir os valores true ou false.
• Considera-se que false < true.
• As constantes true e false não podem ser lidas através dos
comandos read e readln, mas podem ser escritas através
dos comandos write e writeln.
Exemplo de declaração:
var P,Q,R : boolean;
10
Tipo Primitivo Boolean
Operadores:
• Variáveis booleanas podem fazer parte de expressões lógicas
 através dos operadores and, or e not.
• Semântica destes operadores:
V
V
F
F
V
F
V
F
F
F
V
V
V
F
F
F
V
V
V
F
P Q not P P and Q P or Q 
11
Tipo Primitivo Boolean
Lei de De Morgan:
• Trata-se de equivalências lógicas muito úteis em programação.
not (P or Q) é equivalente a (not P) and (not Q)
Analogamente:
not (P and Q) é equivalente a (not P) or (not Q)
P Q P or Q not (P or Q) P Q not P not Q (not P) and (not Q)
V
V
F
F
V
F
V
F
F
F
F
V
V
V
V
F
V
V
F
F
V
F
V
F
F
F
F
V
F
F
V
V
F
V
F
V
12
Tipo Primitivo Boolean
• Observe que os operadores relacionais =, <>, <, <=, >=, > retornam
um valor booleano quando aplicados a operandos do mesmo tipo.
 A expressão ( A >= 20 ) and ( A <= 30 ) retornará o valor
 true quando as duas condições forem verdadeiras, ou seja, 
 quando o inteiro A estiver no intervalo fechado [20,30].
13
Tipo Primitivo Integer
Conjunto de possíveis valores:
 • Variáveis do tipo inteiro podem assumir valores no intervalo:
 - maxint . . + maxint 
 • maxint é uma palavra reservada que indica o maior inteiro
 representável na implementação Pascal em questão.
 • Supondo que um inteiro seja representado em n bits,
 maxint = 2(n-1) - 1
 • Utilizando-se 16 bits, tem-se: maxint = 215 - 1 = 32.767
Exemplo de declaração: Var A, B, C : integer;
14
Tipo Primitivo Integer
Operadores:
• Os seguintes operadores geram resultados inteiros quando 
aplicados a valores inteiros:
• * 
• div 
• mod 
• + 
• − 
: multiplicação
: divisão inteira
: resto ( A mod B = A - ( ( A div B) ) * B ) 
: soma
: subtração
15
Tipo Primitivo Integer
Funções Padrões:
 - abs (X) : retorna o valor absoluto do inteiro X;
 - sqr (X) : retorna o valor do inteiro X elevado ao quadrado;
 - trunc (Y) : retorna a parte inteira de um valor real Y;
 - round (Y) : retorna o valor inteiro mais próximo ao valor real Y;
 - odd (X) : retorna o valor true, se X for um inteiro ímpar, e
 retorna false, caso contrário.
16
Tipo Primitivo Char
Conjunto de possíveis valores:
 
 • Variáveis do tipo char podem assumir os valores do conjunto
 padrão de caracteres do código ASCII.
 • Os caracteres ’a’ . . ’z’, ’A’ . . ’Z’, ’0’ . . ’9’, ’ ’ (caracter branco)
 fazem parte deste conjunto.
 • As constantes do tipo char são representadas entre apóstrofos:
 ’m’ representa o caracter m e " " representa o apóstrofo.
Exemplo de declaração:
Var M, N, O : char;
17
Tipo Primitivo Char
Funções Padrões:
 - ord (C) : retorna a posição ordinal do caracter C no conjunto
 de caracteres implementado;
 
 - chr (X) : retorna o caracter que ocupa a X-ésima posição
 deste mesmo conjunto;
 - ord e chr são funções inversas: 
 chr ( ord (’C’) ) = ’C’ e ord ( chr (X) ) = X
 - considerando o conjunto ASCII: 
 ord (’A’) = 65 e chr (57) = ’9’
18
Tipo Primitivo Real
Conjunto de possíveis valores:
• Um valor real é representado internamente no formato "ponto-flutuante", 
que corresponde à chamada notação científica.
 
 23.14216 = 2.314216 X 10+1
 mantissa = 2.314216, base = 10, expoente = +1
• 
 Uma vez fixada a base, a representação ponto-flutuante de um real é 
definida por um par (mantissa, expoente).
 23.14216 = 2.314216 E + 1
19
Tipo Primitivo Real
Conjunto de possíveis valores:
• Um valor do tipo real pertence a um subconjunto dos números
reais, que depende do compilador Pascal. Cada fabricante pode ter
seu próprio padrão para o formato ponto-flutuante.
• Em geral, tem-se:
 • mantissa m representada em 24 bits
 • expoente representado em 8 bits
 • representando reais na faixa m X 2-128 . . m X 2+127 
 • o que equivale aproximadamente à faixa +/-10-38 . . +/-10+38
Exemplo de declaração: Var F, G, H : real;
20
Tipo Primitivo Real
Operadores:
• * : multiplicação 
• / : divisão
• + : soma
• − : subtração
 Em função da sua representação não exata, a aritmética 
com números reais também é passível de erros. Portanto:
 - o teste de igualdade entre dois reais pode gerar erros, 
 utilize a forma ( X - Y > erro ) em vez de ( X = Y ).
 - a subtração de valores próximos pode implicar em perda de 
 dígitos significativos.21
Tipo Primitivo Real
Funções Padrões:
 - abs (X) : retorna o valor absoluto de X;
 - sqr (X) : retorna o valor de X elevado ao quadrado;
 - sin (X) : retorna o seno de X;
 - cos (X) : retorna o co-seno de X;
 - arctan (X) : retorna o arco-tangente de X;
 - ln (X) : retorna o logaritmo neperiano de X;
 - exp (Y) : retorna a função exponencial de X (ex);
 - sqrt (Y) : retorna a raiz quadrada de X;
22
Tipos Escalares ou Enumerados
 Tipos escalares em Pascal são definidos a partir da enumeração 
de valores.
 A variável DiaDaSemana poderá assumir qualquer valor enumerado 
no conjunto Dia.
Vantagens de utilização:
 - torna o programa mais legível,
 - permite ao compilador testar os valores sendo atribuídos.
 type
 Dia = (dom, seg, ter, qua, qui, sex, sab);
 var 
 DiaDaSemana : Dia; 
23
Tipos Escalares ou Enumerados
Outro exemplo:
A variável Figura só poderá assumir valores do conjunto Forma.
No programa, poderia haver sentenças como:
 type
 Forma = (Triangulo, Retangulo, Poligono, Circulo);
 var 
 Figura : Forma;
if ( Figura = Triangulo ) or ( Figura = Retangulo) then 
 Figura = Poligono;
24
Tipos Escalares ou Enumerados
Funções Padrões:
 - succ(V) - função sucessor: retorna o valor seguinte ao valor V na
 ordem de enumeração do tipo escalar ao qual V pertence.
 Se V for o último valor, ocorrerá um erro de execução.
 - pred(V) - função predecessor: retorna o valor anterior ao valor V 
 na ordem de enumeração do tipo escalar ao qual V pertence.
 Se V for o primeiro valor, ocorrerá um erro de execução.
 - ord(V) - função ordem: retorna a posição de V na enumeração
 que define o tipo escalar ao qual V pertence. 
 A ordem do primeiro elemento é zero.
25
Tipos Escalares ou Enumerados
Ainda o exemplo:
 type Forma = (Triangulo, Retangulo, Poligono, Circulo);
 var Figura1, Figura2 : Forma;
No programa, poderia haver sentenças como:
 Figura1 := succ(Retangulo);
 if ord(Figura2) <> 0 then Figura2 := pred(Figura2);
Não são permitidas sentenças como: 
 Figura1:= Figura1 + 1;
26
Tipos Escalares ou Enumerados
Observações:
• Valores escalares definidos pelo usuário não podem ser lidos ou 
escritos pelos comandos read e write.
• Os tipos boolean, char e integer são implicitamente definidos 
como tipos escalares. 
 Implicitamente: type boolean = (false, true);
• Portanto as funções pred, succ e ord podem ser aplicadas a 
variáveis destes tipos. Considera-se que false < true.
27
Tipo Faixa ou Subintervalo
 Um tipo subintervalo pode ser entendido como uma restrição
de um outro tipo escalar previamente ou implicitamente definido.
Forma Geral:
type 
 T = Constante1 . . Constante2;
type
 Dia = (dom, seg, ter, qua, qui, sex, sab); 
 DiaUtil = seg . . Sex;
 LetraMinuscula = ’a’ . . ’z’;
 Digito = ’0’ . . ’9’;
 Idade = 0 . . 100;
Tipos subintervalos
tipo escalar
28
Revisão / Exercícios
1) Para cada um dos trechos de programas 
 apresentados a seguir, determine quantas
 vezes a sentença "S" será executada.
29
Revisão / Exercícios
program Programa1A(input{teclado},output{vídeo});
const
 N = 100;
var 
 I: integer;
begin
 for I := 1 to sqr(N) do
 if odd(I) then S
end.
30
Revisão / Exercícios
program Programa1B(input{teclado}, output{vídeo});
 var 
 Ch: char;
 I: integer;
 begin
 for Ch := ’a’ to ’c’ do
 for I := ord(’d’) downto ord(Ch) do S
 end.
31
Revisão / Exercícios
program Programa1C(input{teclado}, output{vídeo});
var 
 I, J: integer;
begin
 I := ord(true);
 J := 1;
 while ( I > J ) or ( I < J ) do S
end.
32
Revisão / Exercícios
 program Programa1D(input{teclado}, output{vídeo});
 var 
 B: boolean;
 begin
 B := false; 
 repeat
 S;
 B := not B
 until not B
 end.
33
 program Programa1E(input{teclado}, output{vídeo});
 var 
 U, V, Z: integer;
 begin
 Z := 0;
 U := 256;
 V := 103;
 while U <> 0 do
 begin
 if odd(U) then Z := Z + V;
 U := U div 2;
 V := 2 * V;
 S
 end
 end.
34
Revisão / Exercícios
 program Programa1F(input{teclado}, output{vídeo});
 var 
 I, N: integer;
 begin
 N := ord(’9’) - ord(’0’);
 for I := 0 to sqr(N) do 
 if ( I mod 3 ) = 0 then S
 end.
35
 program Programa1G(input{teclado}, output{vídeo});
 var 
 B: boolean;
 I, J: integer;
 begin
 B := false;
 I := 1;
 J := 1;
 repeat 
 I := I + J * 10;
 J := 10 * J;
 S
 until not ( succ(B) > B ) or ( J >= 1000)
 end.
36
Revisão / Exercícios
 program Programa1H(input{teclado}, output{vídeo});
 var 
 I: integer;
 begin
 I := 1;
 while odd(I) or ( (I > 13) and (’c’ > ’d’) ) do
 begin
 S;
 I := I + 2 
 end
 end.
37
Revisão / Exercícios
2) Indique o valor da variável "X" ao 
 final da execução dos trechos de 
 programas apresentados a seguir.
38
 program Programa2A(input{teclado}, output{vídeo});
 var 
 I, X: integer;
 begin
 I := 1;
 X := 0;
 while I < 99 do
 begin
 X := X + 1;
 I := I + 2
 end
 end.
39
 program Programa2B(input{teclado}, output{vídeo});
 const
 A = 231;
 B = 2.23;
 var 
 X, Y: real;
 begin
 Y := A * B;
 X := round(Y) div A + trunc(Y + 0.5) mod A;
 X := X - round(Y)
 end.
40
 program Programa2C(input{teclado}, output{vídeo});
 var 
 X, Y: integer;
 begin
 X := 17;
 Y := 0;
 repeat 
 Y := X mod 2 + Y * 10;
 X := X div 2
 until X = 0;
 while Y <> 0 do
 begin
 X := Y mod 10;
 Y := Y div 10
 end
 end.
41
Aula 4
Professores:
Dante Corbucci Filho
Alexandre Plastino
Conteúdo:
- Tipos de Dados
 - Tipos Simples
 - primitivos
 - escalares ou enumerados
 - faixas ou subintervalos

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes