Conoce300 __ Pascal Con Free Pascal __ Listas y Colecciones __ Agregación y Composición de Listas...
description
Transcript of Conoce300 __ Pascal Con Free Pascal __ Listas y Colecciones __ Agregación y Composición de Listas...
-
15/10/2015 Conoce300::PascalconFreePascal::Listasycolecciones::Agregacinycomposicindelistasycolecciones
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1306AgregacionComposicionListasColecciones.php 1/4
PASCALCONFREEPASCAL
13.Listasycolecciones.
13.6.Agregacinycomposicindelistasycolecciones.anterior::indice::siguiente13.1.Introduccin.13.2.Creandoymanejandolistas.13.3.Creandoymanejandocolecciones.
13.4.Excepcionesenlistasycolecciones.13.5.Generalizacindelistasycolecciones.13.6.Agregacinycomposicindelistasycolecciones.
13.7.Polimorfismoenlistasycolecciones.13.8.Ordenandolistasycolecciones.
Debemos recordar queunaagregacines cuandouna clase formapartedeotra clase, y el objetoque se creade la clasequepertenecea laclasecontenedora,escreadodesde fuera.Enunacomposicinsucede locontrario la instanciaescreadodesdedentro,esdeciralcrearlainstanciauobjetodelaclasecontenedorasecreanlosobjetosdelaclasequeformanpartedelaclasecontenedora.LaclaseTCollecctionesunaclasequetienecomoatributoaunaclaseTList,loquehacequeseformeunacomposicin,esdecirTCollectiontieneunarelacindecomposicinconTlist.En este captulo implementaremos dos ejemplos de como usar las clases TList y TCollection, en una agregacin y en unacomposicin.Seusarelejemplodelastablasdefrecuenciasvistoenelcapitulo12.3.
{$codepageutf8}{$modeobjfpc}Usessysutils,classes;TypeTTablaFrecuencias=classclassvari:longint;var
ni,hi,NiMenorQ:TList;Tni,Thi:double;cantidad:longint;
ConstructorCrear(n:longint;a,b,c:Tlist);ProcedureLectura;ProcedureCalculos;ProcedureMostrar;End;
ConstructorTTablaFrecuencias.Crear(n:longint;a,b,c:Tlist);Beginni:=a;hi:=b;NiMenorQ:=c;cantidad:=nEnd;
ProcedureTTablaFrecuencias.Lectura;varaux:^double;Beginfori:=0tocantidad1doBeginnew(aux);Write('ni[',i,']');readln(aux^);ni.add(aux);Tni:=Tni+double(ni[i]^);new(aux);aux^:=0;hi.add(aux);new(aux);aux^:=0;NiMenorQ.add(aux)End;End;
ProcedureTTablaFrecuencias.Calculos;varaux:pointer;Beginfori:=0tocantidad1doBegindouble(hi[i]^):=double(ni[i]^)/Tni;
LENGUAJESDEPROGRAMACIN
-
15/10/2015 Conoce300::PascalconFreePascal::Listasycolecciones::Agregacinycomposicindelistasycolecciones
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1306AgregacionComposicionListasColecciones.php 2/4
Thi:=Thi+double(hi[i]^);End;double(NiMenorQ[0]^):=double(ni[0]^);fori:=1tocantidad1dodouble(NiMenorQ[i]^):=double(NiMenorQ[i1]^)+double(ni[i]^);End;
ProcedureTTablaFrecuencias.Mostrar;BeginWriteln('nihiNi');fori:=0tocantidad1doWriteln('',double(ni[i]^):10:2,double(hi[i]^):10:2,double(NiMenorQ[i]^):10:2);Writeln;Writeln('Total',tni:5:2,thi:10:2)End;
VarTablaFrecuencias:TTablaFrecuencias;ni,hi,NiMenorQ:Tlist;n:longint;BeginWrite('Ingresenumerodedatos:');readln(n);ni:=Tlist.Create;hi:=Tlist.Create;NiMenorQ:=Tlist.Create;TablaFrecuencias:=TTablaFrecuencias.Crear(n,ni,hi,NiMenorQ);
TablaFrecuencias.Lectura;TablaFrecuencias.Calculos;TablaFrecuencias.Mostrar;
ni.destroy;hi.destroy;NiMenorQ.destroy;TablaFrecuencias.destroy;End.
Cdigofuente20:Ejemplodeagregacionconlistas.Enesteejemplo,talcomosepuedeobservarlasinstanciasni,hi,NiMenorQsondelaclaseTList,estasdebensercreadasantesdecrearlainstanciaTablaFrecuencias.OtraobservacinimportanteesquealmomentodehacerlalecturadelasfrecuenciasesnecesarioiraadiendoloselementosdelaslistashiyNiMenorQ,yaqueunTListnoescomounarreglodinmico.Enelcasodehacerunacomposicindeelejemploanterior, lonicoquesetendraquehacerescambiarelconstructorycrearlasinstanciasni,hi,NiMenorQ,dentrodelcosntructoryelrestodelcdigofuentequedaraigual.
{$codepageutf8}{$modeobjfpc}Usessysutils,classes;TypeTTablaFrecuencias=classclassvari:longint;var
ni,hi,NiMenorQ:TList;Tni,Thi:double;cantidad:longint;
ConstructorCrear(n:longint);ProcedureLectura;ProcedureCalculos;ProcedureMostrar;Destructordestroy;override;End;
ConstructorTTablaFrecuencias.Crear(n:longint);Beginni:=Tlist.create;hi:=Tlist.create;NiMenorQ:=TList.create;cantidad:=nEnd;
ProcedureTTablaFrecuencias.Lectura;varaux:^double;Beginfori:=0tocantidad1doBeginnew(aux);Write('ni[',i,']');readln(aux^);ni.add(aux);Tni:=Tni+double(ni[i]^);new(aux);aux^:=0;hi.add(aux);new(aux);aux^:=0;NiMenorQ.add(aux)End;End;
ProcedureTTablaFrecuencias.Calculos;Beginfori:=0tocantidad1doBegindouble(hi[i]^):=double(ni[i]^)/Tni;Thi:=Thi+double(hi[i]^);End;double(NiMenorQ[0]^):=double(ni[0]^);fori:=1tocantidad1dodouble(NiMenorQ[i]^):=double(NiMenorQ[i1]^)+double(ni[i]^);End;
ProcedureTTablaFrecuencias.Mostrar;BeginWriteln('nihiNi');fori:=0tocantidad1doWriteln('',double(ni[i]^):10:2,double(hi[i]^):10:2,double(NiMenorQ[i]^):10:2);Writeln;Writeln('Total',tni:5:2,thi:10:2)End;
DestructorTTablaFrecuencias.destroy;Begininherited;
-
15/10/2015 Conoce300::PascalconFreePascal::Listasycolecciones::Agregacinycomposicindelistasycolecciones
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1306AgregacionComposicionListasColecciones.php 3/4
ni.destroy;hi.destroy;NiMenorQ.destroyEnd;
VarTablaFrecuencias:TTablaFrecuencias;n:longint;BeginWrite('Ingresenumerodedatos:');readln(n);TablaFrecuencias:=TTablaFrecuencias.Crear(n);
TablaFrecuencias.Lectura;TablaFrecuencias.Calculos;TablaFrecuencias.Mostrar;
TablaFrecuencias.destroy;End.
Cdigofuente21:Ejemplodecomposicinconlistas.ElcdigofuentequevieneacontinuacinesunacomposicinusandolaclaseTcollectionparalasinstanciasni,hi,NiMenorQ,enestecasosehacenecesariolacreacindeunaclaseTDouble,queservirparalacreacindelosobjetosdelacoleccin.
{$codepageutf8}{$modeobjfpc}Usessysutils,classes;TypeTDouble=class(TCollectionItem)publicn:double;End;
TTablaFrecuencias=classclassvari:longint;var
ni,hi,NiMenorQ:TCollection;Tni,Thi:double;cantidad:longint;
ConstructorCrear(n:longint);ProcedureLectura;ProcedureCalculos;ProcedureMostrar;Destructordestroy;override;End;
ConstructorTTablaFrecuencias.Crear(n:longint);Beginni:=TCollection.create(TDouble);hi:=TCollection.create(TDouble);NiMenorQ:=TCollection.create(TDouble);cantidad:=nEnd;
ProcedureTTablaFrecuencias.Lectura;Beginfori:=0tocantidad1doBeginWrite('ni[',i,']');ni.add;readln(TDouble(ni.items[i]).n);Tni:=Tni+TDouble(ni.items[i]).n;hi.add;TDouble(hi.items[i]).n:=0;NiMenorQ.add;TDouble(NiMenorQ.items[i]).n:=0End;End;
ProcedureTTablaFrecuencias.Calculos;Beginfori:=0tocantidad1doBeginTDouble(hi.items[i]).n:=TDouble(ni.items[i]).n/Tni;Thi:=Thi+TDouble(hi.items[i]).nEnd;TDouble(NiMenorQ.items[0]).n:=TDouble(ni.items[0]).n;fori:=1tocantidad1doTDouble(NiMenorQ.items[i]).n:=TDouble(NiMenorQ.items[i1]).n+TDouble(ni.items[i]).n;End;
ProcedureTTablaFrecuencias.Mostrar;BeginWriteln('nihiNi');fori:=0tocantidad1doWriteln('',Tdouble(ni.items[i]).n:10:2,Tdouble(hi.items[i]).n:10:2,Tdouble(NiMenorQ.items[i]).n:10:2);Writeln;Writeln('Total',tni:5:2,thi:10:2)End;
DestructorTTablaFrecuencias.destroy;Begininherited;ni.destroy;hi.destroy;NiMenorQ.destroyEnd;
VarTablaFrecuencias:TTablaFrecuencias;n:longint;BeginWrite('Ingresenumerodedatos:');readln(n);
TablaFrecuencias:=TTablaFrecuencias.Crear(n);
TablaFrecuencias.Lectura;TablaFrecuencias.Calculos;TablaFrecuencias.Mostrar;
TablaFrecuencias.destroy;End.
-
15/10/2015 Conoce300::PascalconFreePascal::Listasycolecciones::Agregacinycomposicindelistasycolecciones
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1306AgregacionComposicionListasColecciones.php 4/4
Cdigofuente22:Composicinconcolecciones.
Tweet 0
anterior::indice::siguiente
SUGERENCIAS
"Agradezco que se tomen su tiempo, para escribirme una sugerencia. Toda sugerencia que meescribameayudaamejorarloscontenidosdelawebacordeasusnecesidades.Lassugerencias,serecibirn siempre y cuando ingrese al menos su nombre o seudnimo y la sugerencia. LassugerenciassondeusointernoynosernpublicadasenlawebConoce3000"Nombreoseudnimo :
CorreoElectrnico :Sugerencias :
Deseorecibirunacopiadelmensaje. Enviar
PORTADA|LIBROS|APUNTES|ARTCULOS
Todoslostextos,imgenesyvideosdeConoce3000estancolocadosbajounalicencia:CreativeCommonsReconocimientoNoComercial3.0UnportedLicense.