Conoce300 __ Pascal Con Free Pascal __ Listas y Colecciones __ Agregación y Composición de Listas...

download Conoce300 __ Pascal Con Free Pascal __ Listas y Colecciones __ Agregación y Composición de Listas y Colecciones

of 4

description

kjbkbkj

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.