{"id":155,"date":"2019-09-02T15:27:15","date_gmt":"2019-09-02T15:27:15","guid":{"rendered":"http:\/\/dsd.webs.upv.es\/?page_id=155"},"modified":"2025-08-06T16:26:11","modified_gmt":"2025-08-06T16:26:11","slug":"arrays-dinamicos","status":"publish","type":"page","link":"https:\/\/dsd.webs.upv.es\/?page_id=155","title":{"rendered":"Arrays din\u00e1micos"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Son arrays \u201cunpacked\u201d que no tienen tama\u00f1o predefinido.<\/li>\n\n\n\n<li> Su tama\u00f1o se determina din\u00e1micamente asign\u00e1ndose a <strong>new[<\/strong><em>tama\u00f1o<\/em><strong>]<\/strong><\/li>\n\n\n\n<li> Opcionalmente se puede inicializar con los valores de otro array (o incluso de \u00e9l mismo, para redimensionar) <\/li>\n\n\n\n<li> Las funciones inclu\u00eddas size() y delete() sirven para obtener su tama\u00f1o y para reducir este a cero, respectivamente <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\nint d&#x5B;], b&#x5B;];         \/\/ Two dynamic arrays\nd = new&#x5B;5];           \/\/ Make array with 5 elements\n\nforeach (d&#x5B;j])        \/\/ Initialize\n   d&#x5B;j] = j;\n\nb = d;                \/\/ Copy a dynamic array\nb&#x5B;0] = 5;\n\n$display(d&#x5B;0],b&#x5B;0]);  \/\/ See both values (0 &amp; 5)\n\nd = new&#x5B;20](d);       \/\/ Expand and copy\n\nd = new&#x5B;100];         \/\/ Allocate 100 new integers\n                      \/\/ Old values are lost\n\nd.delete();           \/\/Delete all elements\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ejemplo de aplicaci\u00f3n: Supongamos que tenemos definida una funci\u00f3n que calcula el CRC de un paquete de datos e 8 bits , siendo este paquete de datos de tama\u00f1o variable.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\nfunction &#x5B;7:0] crc (bit &#x5B;7:0] packet&#x5B;])\n  int tam;\n  tam = packet.size();\n  crc = 0;\n  for (int i=0; i &lt;= tam -1; i++) begin\n     ...\n  end\nendfunction\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Supongamos ahora una generador de paquetes aleatorios, tanto en su tama\u00f1o como en los datos en si de ese tama\u00f1o aleatorio.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\n\/\/ Generador de paquetes aleatorios\nbit &#x5B;7:0] paquete&#x5B;];\ntamanno = $random();\npaquete = new&#x5B;tamanno];\nfor (int i = 0; i &lt;= paquete.size() -1; i++) begin\n  paquete&#x5B;i] = rnd();\nend\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"> Finalmente supongamos que recibimos ese paquete de datos y queremos calcular su CRC y a\u00f1adirlo al paquete de datos como \u00faltimo dato incorporado al array<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\n\/\/ calculamos CRC\nbit &#x5B;7:0] mi_crc = crc(paquete);\n\/\/ incrementamos tama\u00f1o de paquete\npaquete = new&#x5B;tamanno + 1](paquete)\n\/\/ a\u00f1adimos CRC al final del paquete.\npaquete&#x5B;tamanno] = mi_crc;\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejemplo de aplicaci\u00f3n: Supongamos que tenemos definida una funci\u00f3n que calcula el CRC de un paquete de datos e 8 bits , siendo este paquete de datos de tama\u00f1o variable. Supongamos ahora una generador de paquetes aleatorios, tanto en su tama\u00f1o como en los datos en si de ese tama\u00f1o aleatorio. Finalmente supongamos que recibimos ese paquete de datos y queremos calcular su CRC y a\u00f1adirlo al paquete de datos como \u00faltimo dato incorporado al array<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":59,"menu_order":7,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","ub_ctt_via":"","footnotes":""},"class_list":["post-155","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=155"}],"version-history":[{"count":5,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/155\/revisions"}],"predecessor-version":[{"id":1838,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/155\/revisions\/1838"}],"up":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/59"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}