Académique Documents
Professionnel Documents
Culture Documents
Pg. 1
Tpicos
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Evoluo dos tipos de dados Tipos de Dados Primitivos Tipo String de caracteres Tipo Ordinal definido pelo programador Tipo Array Tipo Array Associativo Tipo Registo Tipo Unio Tipo Conjunto Tipo Apontador
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 2
FORTRAN I (1956) - INTEGER, REAL, arrays Ada (1983) - Utilizadores podem criar novos tipos de dados.
Um descritor um conjunto de atributos de uma varivel (Nome, Endereo, Valor, Tipo, Tempo de vida, Escopo). Questes de Projecto para tipos de dados:
Como especificar variveis? Quais as operaes que esto definidas sobre determinada varivel?
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 3
Tipos Primitivos de Dados so todos os tipos que no so definidos em termos de outros tipos. Inteiro (integer)
Em geral reflete a situao do hardware (registros) Existem vrios tipos de nmeros inteiros numa linguagem:
inteiro com/sem sinal, inteiro base decimal, inteiro base binria, preciso simples, etc.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 4
Tipos Primitivos
Ponto Flutuante
type SPEED is digits 7 range 0.0..1000.0; type VOLTAGE is delta 0.1 range -12.0..24.0;
Pg. 5
Tipos Primitivos
Ponto Flutuante
Pg. 6
Tipos Primitivos
Decimal
Para aplicaes comerciais Armazena um nmero determinado de dgitos decimais (codificado na base binria) Vantagem:
Desvantagens:
Pg. 7
Tipos Primitivos
Lgico
Lgico (Boolean)
S permite dois valores: Verdadeiro ou Falso (true or false); Pode ser implementado num bit, mas geralmente implementado num byte. Vantagem:
Legibilidade.
Pg. 8
String
Tipo primitivo ou tipo especial de sequncia? Dimenso esttica ou dinmica? Atribuio; Comparao (=, >, <, etc.); Concatenao (juno ao fim da string); Referncia a substring; Correspondncia de padro (Pattern matching).
Engenharia Informtica Linguagens de Programao 2002/2003
Operaes:
Pg. 9
(cont.)
Exemplo do Pascal:
Mais ou menos primitivo; Atribuio, comparao, concatenao, referncia a substring; FORTRAN possui correspondncia de padro intrnseco.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 10
(cont.)
Exemplo em Ada:
N := N1 & N2 (concatenao) N(2..4) (referncia a substring)
Exemplo do C, C++:
Exemplo do SNOBOL4
Primitivo; Muitas operaes, incluindo um elaborado mtodo para correspondncia de padro (Pattern matching).
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 11
(cont.)
Exemplo em Perl:
Padres so definidos em termos de expresses regulares; Grande poder de expresso!; Ex. de expresso regular: /[A-Za-z]+/ Palavras contendo unicamente letras.
Exemplo do Java:
Pg. 12
(cont.)
Pg. 13
(cont.)
Avaliao:
Ajuda a escritabilidade do programa O tipo primitivo de tamanho esttico eficiente. Porque no o ter? Tamanho dinmico bom, mas muito caro. Ser que no vale a pena implementa-lo?
Pg. 14
(cont.)
Implementao:
Tamanho esttico - Descritor definido e utilizado em tempo de compilao. Tamanho dinmico limitado - pode necessitar de um descritor em tempo de execuo para o tamanho (no acontece em C e C++). Dinmico - precisa de um descritor em tempo de execuo; Reserva/liberao de memria o grande problema da implementao.
Pg. 15
4. Tipo Ordinal
Tipo Ordinal
Um tipo ordinal um tipo em que a amplitude de dos possveis valores podem facilmente ser associados com os inteiros positivos; Em muitas linguagens os programadores podem definir os seguinte tipos ordinais: Tipo Enumerado; Tipo Subfaixa.
Pg. 16
Tipo Ordinal
Enumerado
Tipos enumerados - tipo onde o programador enumera todos os possveis valores atravs de constantes simblicas.
Exemplo em Pascal:
type cor = (vermelho, azul, branco, preto);
Exemplo em C e C++:
enum cor {vermelho, azul, branco, preto};
Consideraes de Projecto:
Pg. 17
Tipo Ordinal
Enumerado
(cont.)
Exemplos do Pascal:
Constantes no podem ser reutilizadas. Podem ser usadas em subscritos de arrays, como varivel de ciclo for e seleco case, podem ser comparadas mas no podem ser usadas em E/S. Ex.:
type tipocor = (Vermelho, Azul, Verde, Amarelo); Var cor : tipocor; ... cor := Azul; if (cor > Vermelho)then ...
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 18
Tipo Ordinal
Enumerado
(cont.)
Exemplo do Java
Pg. 19
Tipo Ordinal
Enumerado
(cont.)
Avaliao:
Melhora a legibilidade, uma vez que, no necessrio modelar cor como um nmero inteiro; Melhora a confiabilidade, dado que o compilador pode verificar a validade das operaes e amplitude dos valores em tempo de compilao.
Pg. 20
10
Tipo Ordinal
Subfaixa
O tipo subfaixa foi introduzido pelo Pascal, e posteriormente, foram includos tambm em Ada e Modula-2. Ex.: os nmeros 12..14 so uma subfaixa dos ns inteiros. Como os valores podem ser usados?
Engenharia Informtica Linguagens de Programao 2002/2003
Deciso de Projecto:
Pg. 21
Tipo Ordinal
Subfaixa (cont.)
Exemplo em Pascal :
Subfaixa comporta-se como o seu tipo pai. Podem ser usados em arrays, comparao, ciclos, etc.. ex. type positivo = 0 .. MAXINT; type maiusculas = 'A'..'Z'
Exemplo em Ada:
Subfaixa um subconjunto do tipo pai (no um tipo novo), logo so compatveis. Podem ser usados como em Pascal. Ex.: subtype positivo is INTEGER range 0..INTEGER'LAST;
Pg. 22
11
Tipo Ordinal
(cont.)
Implementao:
Pg. 23
5. Tipos Array
homognea, em que cada elemento uma varivel e pode ser acedido por sua posio relativa, a partir da origem (primeiro elemento).
Pg. 24
12
5. Tipos Array
Consideraes de Projecto:
Que tipo correcto para ndices? Haver verificao de ndices? Quando as amplitudes dos ndices so vinculadas? Quando reservar espao? Qual o nmero mximo de elementos? Sequncias podem ser inicializadas? Arrays podem ser divididos em subfaixas?
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 25
Tipos Array
(cont.)
Indexao
Associao entre ndices e elementos de um array. map(nome-array, valor-ndice) elemento Sintaxe para os ndices:
Em Fortran os parnteses so ambguos: SOMA = SOMA + A(i) -->A(i) pode ser a invocao de uma funo ou acesso a um elemento de um array.
Pg. 26
13
Tipos Array
(cont.)
Tipo de ndices:
FORTRAN, C - somente nmeros inteiros; Pascal - qualquer tipo ordinal escalar: int, boolean, char, enum; Ada - int, enum, boolean e char; Java - unicamente nmeros inteiros. C/C++ e Java = 0; Fortran, Basic = 1; Outras linguagens = deve ser especificado.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 27
Tipos Array
(cont.)
Categorias de Arrays os arrays podem ser classificados segundo o tipo de vinculao de ndices (subscritos) e armazenamento:
I. Array Esttico; II. Array Pilha-dinmico de Tamanho Fixo; III. Array Pilha-dinmico; IV. Array Heap-dinmico. Nota: Nomes indicam onde e quando so alojados.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 28
14
Categorias de Arrays
Armazenamento do array esttico; Tamanho do array esttico; ndices e armazenamento so vinculados em tempo de compilao; Tipo de ndice vinculado em tempo de projecto da linguagem (ex. Fortran = INTEGER). Vantagem: eficincia de execuo (no h reserva nem liberao de memria).
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 29
Tipos Array
Ex. em C:
int bufferGlobal[50]; // ndices (0 .. 50) void funcaoX() { static int buffer[99]; // ndices (0 .. 99) //... } Tempo de vida dos 2 buffer = tempo de vida da aplicao.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 30
15
Tipos Array
Pg. 31
Tipos Array
Ex. em C:
void funcaoX() { int buffer[99]; // ndices (0 .. 99) //... } Notas: Tamanho do array fixo. Armazenamento do array efectuado em tempo de execuo ao iniciar a funo. Tempo de vida do buffer = tempo de vida da funo.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 32
16
Tipos Array -
III. Dinmico de pilha Dimenso e armazenamento so dinmicos porm assim que forem definidos so fixos durante o tempo de vida do array. Ex. em Ada: (declare blocks)
declare STUFF : array (1..N) of FLOAT; begin ... end;
Vantagem: flexibilidade - tamanho no precisa ser conhecido at que o array seja utilizado.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 33
Tipos Array
Pg. 34
17
Tipos Array
Pg. 35
Tipos Array
Pg. 36
18
Tipos Array
Pg. 37
Tipos Array
(cont.)
Nmero de ndices:
FORTRAN I => 1 a 3 dimenses;
Ex.: buffer(5)(3)(1)
FORTRAN 77 => at 7 dimenses; C, C++, Java => somente uma dimenso, porem elementos podem ser arrays;
Pg. 38
19
Tipos Array
Inicializao de arrays
Inicializao de arrays
Em geral os arrays so inicializados atravs de uma lista de valores, respeitando a ordem em que os elementos so armazenados Ex. em Fortran:
Utilizao do comando DATA e colocao dos valores entre / ... / na declarao INTEGER LISTA(3) DATA LISTA /0, 5, 5/
Pg. 39
Tipos Array
Inicializao de arrays
(cont.)
Ex. em C, C++: Valores sero dados entre { } separados por virgulas, e o compilador calcular a dimenso para o array. int stuff[] = {2, 4, 6, 8};
/* array de 4 nmeros inteiros */
Pg. 40
20
Tipos Array
(cont.)
Ex. em Ada:
Posio dos valores pode ser especificada Operador => usado para inicializao com especificao de posio. Clusula others utilizada para inicializar restantes elementos.
Lista : array (1..5) of integer := (1,3,5,7,9); Score : array (1..14, 1..2) := (1 => (24, 10), 2 => (10, 7), 3 =>(12, 30), others => (0, 0)); Nota: linhas 1, 2 e 3 so inicializadas com valores. As restantes "other" linhas sero inicializadas com o par ordenado (0, 0).
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 41
(*, +, -, etc)) operaes definidas para qualquer tipo (escalar, vector e matrizes).
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 42
21
inverter elementos de um vector inverter colunas de uma matriz inverter linhas de uma matriz transpor uma matriz inverter uma matriz etc.
Pg. 43
Ex. em Ada:
Atribuio ':='; lado direito pode ser um array; Concatenao '&'; Operao relacional (igual '=' e diferente '/=');
Ex. em PL/I:
Pg. 44
22
Tipos Array
Fatias
Fatias (slices)
Uma fatia uma referncia a uma parte de um array de qualquer dimenso. Em geral as linguagens no suportam fatias de um array. PL/I foi a primeira linguagem a introduzir este conceito em 1965.
Pg. 45
Tipos Array
Fatias (cont.)
Exemplo em FORTRAN 90: INTEGER MAT (1 : 4, 1 : 4) MAT(1 : 4, 1) - primeira coluna MAT(2, 1 : 4) - segunda linha Ex. em Ada:
Pg. 46
23
Tipos Array
Implementao
Implementao de Arrays
Transformao de ndices (expresso) para o endereo de um elemento; Armazenamento dos elementos do array por linha (ordem lexicogrfica) ou por coluna (ordem anti-lexicogrfica); Complexidade de Acesso (1).
Pg. 47
Tipos Array
Implementao (cont.)
Implementao Ordem Lexicogrfica os elementos so armazenados em termos de linhas. Ex. Array de 1-dimenso: Seja A: array[LB1..UB1] of T endereo(A[i]) = Base + (i - LB1) * sizeof(T) Em tempo de compilao podemos calcular: B = Base - LB1*sizeof(T) donde endereo(A[i]) = B + i *sizeof(T)
Onde: Base: endereo do primeiro elemento (i-LB1): n de Engenharia elemento a serem saltados Informtica Linguagens de Programao sizeof(T): tamanho do tipo T 2002/2003
Pg. 48
24
Tipos Array
Implementao (cont.)
Ex. Array de 2 dimenses: A: array[LB1 .. UB1 , LB2 .. UB2] of T endereo(a[j,k]) = Base + { (j - LB1) * ( UB2 - LB2 + 1 ) + (k - LB2) } * sizeof(T) Onde:
Base: endereo inicial (j - LB1): numero linhas a serem saltadas (k - LB2): elemento da coluna k sizeof(T): tamanho do tipo T
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 49
Tipos Array
Implementao (cont.)
endereo(A[i,j,k]) = base + { (i - LB1)* ( (UB2 - LB2+ 1) * (UB3 - LB3 + 1) ) + (j - LB2)* ( UB3 - LB3 + 1 ) + (k LB3) } * sizeof(T)
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 50
25
Tipos Array
Implementao (cont.)
Pg. 51
Array Associativo (Associative Array) - uma coleco no ordenada de elementos indexados por chaves.
Problemas de projecto:
Qual o esforo para referenciar um elemento? O tamanho do array esttico ou dinmico? O ndice precisa ser armazenado.
Pg. 52
26
Pg. 53
Pg. 54
27
7. Tipo Registo
Um registo um conjunto, possivelmente heterogneo de elementos, onde cada elemento designado por campo e identificado por um nome e seus atributos. Consideraes de projecto:
Pg. 55
Tipo Registo
(cont.)
01 Registro-empregado 02 Nome-Empregado 05 Primeiro Picture is X(20). 05 Meio Picture is X(10). 05 Ultimo Picture is x(20). 02 Salario Picture is 99v99.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 56
28
Tipo Registo
(cont.)
Reg_Emp: record
Primeiro: string(1..20); Meio : string(1..10); Ultimo: string(1..20); Salario : real; end;
Engenharia Informtica Linguagens de Programao 2002/2003
Tipo Registo
(cont.)
struct Reg_Emp { char Primeiro(20); char Meio(10); char Ultimo(20); double Salario; };
Pg. 58
29
Tipo Registo
(cont.)
Referncias a campos do registro sintaxe para especificar e aceder a cada um dos campos de um registo.
Sintaxe do COBOL field_name OF record_name_1 OF ... OF record_name_n Sintaxe das outras L.P. (notao ponto) record_name_1.record_name_2. ... record_name_n.field_name
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 59
Tipos Registo
(cont.)
Tipos de referncias:
Referncias totalmente qualificadas devem incluir todos os nomes de registros aninhados, finalizando com o nome do campo. Referncias parcialmente qualificadas (elptica) permitem descrever apenas alguns nomes de registros, desde que no exista ambiguidade de referncia. Pascal e Modula-2 possuem clusula with para simplificar referncias
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 60
30
Tipos Registo
(cont.)
type reg_empregado = record nome : string (40); sexo: (Masculino, Feminino); end; var empregado : reg_empregado with empregado do begin nome := Jos; sexo := Masculino; end;
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 61
Tipos Registo
Pascal, Ada, C: Se os tipos forem idnticos; Em Ada, o lado direito pode ser um constante agregada (tipo especial de constante); Cobol: instruo move corresponding para atribuio a campos de mesmo nome. Permitido em Ada, usando constantes agregadas.
Engenharia Informtica Linguagens de Programao 2002/2003
Inicializao
Pg. 62
31
Tipos Registo
Comparao
Ada: '=' e '/=' (diferente); operando pode ser constante agregada COBOL: Copia todos os campos de um registro fonte para os campos de mesmo nome de um registro destino.
MOVE CORRESPONDING
Pg. 63
8. Tipo Unio
Uma unio um tipo cujas variveis podem armazenar tipos de dados diferentes em tempos diferentes da execuo. Tipos de unio:
Unio livre: Linguagens no oferece qualquer suporte para verificao dos tipos de dados (responsabilidade do programador). Unio discriminada: Linguagem inclui um identificador dos tipos de dados.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 64
32
Tipo Unio
(cont.)
Considerao de Projecto:
Existe verificao de tipos? Qual?
C, C++, Pascal, Fortran: no possui verificao. ML possui verificao. Pascal: sim; C, C++: no.
Ex. do FORTRAN:
Pg. 65
Tipo Unio
(cont.)
Unio discriminada; Etiqueta (tag) escondida (no acessvel) contm o tipo corrente; O tipo da "tag" colocado implicitamente pela atribuio; Referncias so legais se compatveis; Verificao em tempo de execuo um mtodo seguro para aceder aos campos de unies.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 66
33
Tipo Unio
(cont.)
Ex. em Algol 68: union (int, real) ir1, ir2; // ir1 e ir2 podem conter os tipos: int ou real ir1 := 50; // o.k. real soma; int cont := ir1; /* erro - no h como verificar o tipo de ir1 estaticamente */ case ir1 in (int ir1) : cont := ir1; (real ir1) : soma := ir1 esac;
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 67
Tipo Unio
(cont.)
Ex. em Pascal:
type intreal = record tag : boolean of true : (blint : integer); false : (blreal : real); end;
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 68
34
Tipo Unio
(cont.)
Ex. em Ada:
Unio discriminada;
type figura (aspecto : forma) is record preenchido : boolean; case aspecto is when circulo => diametro : float; when retangulo => lado_1 : integer; lado_2 : integer; end; end record;
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 69
Tipo Unio
(cont.)
Ex. de C, C++:
Unies livres; No parte do tipo registro (struct); No existe verificao de tipo nas referncias. No possui o tipo registro nem unio.
Ex. de Java:
Pg. 70
35
Tipo Unio
figura: Descritor para implementao da seguinte unio em Ada
Implementao
type VERTICE (TAG : BOOLEAN) is record case TAG is when true => count : integer; when false => soma : float; end; end record;
Pg. 71
9. Tipo Conjunto
Um conjunto um tipo de dados cujas variveis podem armazenar uma coleco no ordenada de valores distintos de algum tipo ordinal, designado de tipo bsico. Consideraes de projecto:
Pg. 72
36
Tipo Conjunto
(cont.)
Ex. em Pascal:
Sem tamanho mximo na definio da linguagem; Implementaes geralmente impe um limite. Operaes sobre conjuntos:
unio '+', interseco '*', diferena '-', comparao '=, superconjunto '>=', subconjunto '<=', pertinncia 'in.
type cores = ( azul, verde, amarelo, branco); conjcores = set of cores; var c1, c2 : conjcores; if azul in c1 then if ch in ['a', 'e', 'i', 'o', 'u'] then
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 73
Tipo Conjunto
(cont.)
Avaliao:
Aumenta a legibilidade; Se uma linguagem no possui o tipo conjunto, este pode ser simulado. Arrays so mais flexveis que conjuntos, dado disponibilizarem muitas mais operaes.
Pg. 74
37
Tipo Conjunto
(cont.)
Implementao:
Geralmente armazenados como string de bits e usando operaes lgicas para operaes de conjunto. Ex.: Dado o conjunto ['a' .. 'p']
As variveis deste conjunto, podem ocupar 16 bits (correspondente aos 16 valores diferentes). Assim, o conjunto ['a', 'd', 'g'] pode ser representado pelos seguintes bits: 1001001000000000 (1=char presente, 0=ausente)
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 75
Um apontador um tipo cujos valores consistem em endereos de memria e um valor especial nil (ou null).
Principais utilidades:
Pg. 76
38
Tipo Apontador
(cont.)
Consideraes de projecto:
Qual o escopo e o tempo de vida de uma varivel do tipo apontador? Qual o tempo de vida de uma varivel dinmica de heap? ( alojada/liberada pelo programador) Apontares so restritos a tipos especficos? Podem ser utilizados para gesto dinmica de memria? Pode ser utilizado para endereamento indirecto? A linguagem deve suportar o tipo apontador, o tipo referncia ou ambos?
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 77
Tipo Apontador
(cont.)
O processo de perder variveis heapdinmicas chamado de "vazamento de memria" (memory leakage). Operaes fundamentais de apontadores:
Pg. 78
39
Tipo Apontador
(cont.)
Um apontador pode conter um endereo de uma varivel heap-dinmica que j foi liberada. Uma varivel heap-dinmica quando no mais referenciada por nenhum apontador, deixa de ser acessvel.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 79
Tipo Apontador
(cont.)
Ex. de referncia oscilante em C: int *apt1, *apt2; apt1 = (int *) maloc(sizeof( int )); apt2 = apt1; free(apt1); /* neste ponto qualquer referencia a ptr2 ser danosa pois o endereo para onde esta aponta deixou de existir */
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 80
40
Tipo Apontador
(cont.)
char *apt1; apt1 = (char *) maloc(sizeof( char )); apt1 = (char *) maloc(sizeof( char )); /* primeira reserva de memria deixa de ser referenciada, logo lixo */
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 81
Tipo Apontador
(cont.)
Pg. 82
41
Tipo Apontador
(cont.)
Ex. em Ada:
Um pouco melhor que Pascal e Modula-2; Algumas referncias perigosas so inibidas pois objectos dinmicos so libertados automaticamente no final do escopo do apontador; Todos apontadores so inicializados a null; Lixo pode ser gerado de forma similar a Pascal e C.
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 83
Tipo Apontador
(cont.)
Ex. de C, C++:
Apontadores so utilizados principalmente para gesto dinmica de memria e endereamento; Existncia de operador para desreferncia '*' e para endereo-de '&'; Pode-se efectuar aritmtica de apontadores, em forma restrita; Podem ser definidos apontadores genricos 'void *' com ausncia de tipo (no podem ser desrefernciados).
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 84
42
Tipo Apontador
(cont.)
Ex. de definio de apontadores em C, C++: int soma; float stuff[100], * goods; goods = stuff; // *(goods+5) equivalente a stuff[5] e goods[5] void * apt; // pode apontar qualquer tipo apt = & soma; // ok - aponta para float apt = goods; // ok - aponta para int cout << *apt; /* erro apt no pode ser desrefernciado */
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 85
Tipo Apontador
(cont.)
Usado para passagem de parmetros no modo de transmisso por referncia (varivel de entrada e/ou sada). Referncias vem simplificam a utilizao de apontadores.
Pg. 86
43
Tipo Apontador
(cont.)
int result = 0; int &ref_result = result; // neste caso: result e ref_result so aliases ref_result = 100; equivalente a: int result = 0; int *ref_result ; ref_result = &result; *ref_result = 100;
Engenharia Informtica Linguagens de Programao 2002/2003
Pg. 87
Tipo Apontador
(cont.)
Pg. 88
44
Tipo Apontador
(cont.)
Pg. 89
45