<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-994832637513226408</id><updated>2012-01-03T16:55:12.422-03:00</updated><title type='text'>HolaMundo.pascal (online)</title><subtitle type='html'>por Pablo Augusto Sznajdleder</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://holamundopascal.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-863433833372704279</id><published>2011-11-10T08:22:00.050-03:00</published><updated>2011-12-13T08:15:36.005-03:00</updated><title type='text'>¡Algoritmos en YouTube!</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div  style="text-align: left; font-family:arial;"&gt;&lt;span style="font-weight: bold; font-family:arial;font-size:130%;"  &gt;Algoritmos y Estructuras de Datos (en UTN-FRBA)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Curso dictado en la Universidad Tecnológica Nacional (Buenos Aires, Argentina) por Pablo Sznajdleder. Se trabaja con Delphi 10 (aplicaciones de consola tipo Pascal) y diagramas de Chapín para la representación de algoritmos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 338px;" src="http://1.bp.blogspot.com/-lSeZ3FtrJYE/Tru0NMfDD9I/AAAAAAAAEI8/DTGE99u6oPM/s400/YT_FINAL.jpg" alt="" id="BLOGGER_PHOTO_ID_5673326294386020306" border="0" /&gt;&lt;br /&gt;&lt;form name="jumpVideo1"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Listas de Reproducción&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;select onchange="location=document.jumpVideo1.menuVideo1.options[document.jumpVideo1.menuVideo1.selectedIndex].value;" value="GO" name="menuVideo1"&gt;&lt;option selected="selected"&gt;-- Seleccionar Playlist --&lt;/option&gt;&lt;optgroup label="Clases Teóricas"&gt;&lt;/optgroup&gt;&lt;option value="http://www.youtube.com/playlist?list=PL9BBE5111A772FF11&amp;amp;feature=viewall"&gt;* Módulo 1 - Cubre los capítulos 1, 2, 3 y 4&lt;/option&gt;&lt;option value="http://www.youtube.com/playlist?list=PL908FEB0FBDDE2C41&amp;amp;feature=viewall"&gt;* Módulo 2 - Cubre los capítulos 5 y 6&lt;/option&gt;&lt;option value="http://www.youtube.com/playlist?list=PL6F062B715CC28F8F&amp;amp;feature=viewall"&gt;* Módulo 3 - Cubre el capítulo 7&lt;/option&gt;&lt;optgroup label="Ejercicios Integradores"&gt;&lt;/optgroup&gt;&lt;option value="http://www.youtube.com/playlist?list=PLF6CB1A215B3A1C05&amp;amp;feature=viewall"&gt;* Finales Resueltos&lt;/option&gt;&lt;optgroup label="Aplicación Práctica"&gt;&lt;/optgroup&gt;&lt;option value="http://www.youtube.com/playlist?list=PL1C6612984F93CC70&amp;amp;feature=viewall"&gt;* Compresión de Archivos con el "Algoritmo de Huffman"&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/form&gt;&lt;div  style="text-align: left; font-family:arial;"&gt;&lt;span style="font-weight: bold; font-family:arial;font-size:130%;"  &gt;Algoritmos I con Java (en UNSAM)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Curso dictado en la Universidad Nacional de San Martín (Buenos Aires, Argentina) por Pablo Sznajdleder. Se trabaja con Java 5 y Eclipse 3.6.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 338px;" src="http://3.bp.blogspot.com/-CdSwORHHm0o/Tsq2kd-t6EI/AAAAAAAAEJQ/05vqcLc5_tQ/s400/YT_FINAL_JAVA.jpg" alt="" id="BLOGGER_PHOTO_ID_5677551017893161026" border="0" /&gt;&lt;br /&gt;&lt;form name="jumpVideo2"&gt;&lt;select onchange="location=document.jumpVideo2.menuVideo2.options[document.jumpVideo2.menuVideo2.selectedIndex].value;" value="GO" name="menuVideo2"&gt;&lt;option selected="selected"&gt;-- Seleccionar Playlist --&lt;/option&gt;&lt;option value="http://www.youtube.com/playlist?list=PLA7FF76C3ECDB4EDA&amp;amp;feature=viewall"&gt;Algoritmos 1 con Java&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;¡Agradecimiento Especial al Ing. Diego Minguillon!&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-863433833372704279?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/863433833372704279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/863433833372704279'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2011/11/algoritmos-en-youtube.html' title='¡Algoritmos en YouTube!'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lSeZ3FtrJYE/Tru0NMfDD9I/AAAAAAAAEI8/DTGE99u6oPM/s72-c/YT_FINAL.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-2559949985685658000</id><published>2008-08-24T15:08:00.000-03:00</published><updated>2009-04-02T08:46:21.624-03:00</updated><title type='text'>Capítulo 1</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;.&lt;/span&gt;&lt;br /&gt;Introducción&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Comenzaremos por dar algunas definiciones básicas que nos ayudarán a comprender el alcance de este trabajo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema &lt;/span&gt;– Situación planteada que queremos resolver.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Algoritmo &lt;/span&gt;– Secuencia finita de acciones con las que podemos resolver el problema.&lt;br /&gt;&lt;br /&gt;Según el &lt;a href="http://es.wikipedia.org/wiki/Teorema_del_programa_estructurado"&gt;Teorema de la Programación Estructurada&lt;/a&gt; todo problema computacional puede resolverse mediante la aplicación de tres tipos de acciones fundamentales que llamaremos "Estructuras de Control de Flujo de Datos".&lt;br /&gt;&lt;br /&gt;Estas acciones son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ejecutar una acción, luego otra, luego otra,... (lo llamamos &lt;span style="font-weight: bold;"&gt;acción simple&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Decidir entre ejecutar una u otra acción en función de que se cumpla o no una determinada condición (lo llamamos &lt;span style="font-weight: bold;"&gt;acción condicional&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Ejecutar repetidas veces la misma acción mientras se cumpla una determinada condición (lo llamamos &lt;span style="font-weight: bold;"&gt;acción iterativa&lt;/span&gt;).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Estructuras de Control de Flujo de Datos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acción Simple&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta es la más básica de las estructuras. Se considera &lt;span style="font-weight: bold;"&gt;acción simple&lt;/span&gt; a las acciones de &lt;span style="font-weight: bold;"&gt;leer &lt;/span&gt;(por teclado o desde un archivo), &lt;span style="font-weight: bold;"&gt;escribir &lt;/span&gt;(por pantalla, impresora o en un archivo) y &lt;span style="font-weight: bold;"&gt;asignar&lt;/span&gt;. Graficamente lo representamos de la siguiente manera:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Lectura &lt;/span&gt;(o entrada) – Leemos (por teclado) un valor y lo almacenamos en la variable &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/RqSsuWgqvKI/AAAAAAAAAzI/FtTmbyEayZk/s1600-h/lectura_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/RqSsuWgqvKI/AAAAAAAAAzI/FtTmbyEayZk/s400/lectura_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090383391152061602" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Asignación &lt;/span&gt;– Asignamos el valor de la variable &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; a la variable&lt;span style="font-weight: bold;"&gt; b&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/RqSsumgqvLI/AAAAAAAAAzQ/dtATFZ_hU2A/s1600-h/asignacion_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/RqSsumgqvLI/AAAAAAAAAzQ/dtATFZ_hU2A/s400/asignacion_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090383395447028914" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Escritura &lt;/span&gt;(o salida) – Mostramos (por pantalla o impresora) la frase “&lt;span style="font-weight: bold;"&gt;Hola Mundo&lt;/span&gt;” seguida del valor que contenga la variable &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/RqSsumgqvMI/AAAAAAAAAzY/6Gbawr-CVE4/s1600-h/salida_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/RqSsumgqvMI/AAAAAAAAAzY/6Gbawr-CVE4/s400/salida_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090383395447028930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a name="variablesytipos"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Variables y Tipos de Datos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una variable representa un espacio de memoria (RAM) en el cual podemos almacenar temporalmente valores.&lt;br /&gt;&lt;br /&gt;Podemos tener valores &lt;span style="font-weight: bold;"&gt;numéricos&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;alfanuméricos&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;lógicos &lt;/span&gt;y definidos por el programador. Es decir: valores de diferentes &lt;span style="font-weight: bold;"&gt;tipos &lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;de datos&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Si hablamos del valor &lt;span style="font-weight: bold;"&gt;123&lt;/span&gt; estamos hablando de un valor numérico entero. Podemos decir entonces que &lt;span style="font-weight: bold;"&gt;123&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;es un entero&lt;/span&gt;. En cambio, si hablamos del valor &lt;span style="font-weight: bold;"&gt;12.3&lt;/span&gt; estamos hablando de un &lt;span style="font-weight: bold;"&gt;valor numérico real&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;También podemos hablar del valor “&lt;span style="font-weight: bold;"&gt;Hola Mundo&lt;/span&gt;”. En este caso estamos hablando de un &lt;span style="font-weight: bold;"&gt;valor alfanumérico&lt;/span&gt;. Decimos que este valor es una &lt;span style="font-weight: bold;"&gt;cadena de caracteres&lt;/span&gt; o simplemente &lt;span style="font-weight: bold;"&gt;una cadena&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Otro valor alfanumérico podría ser "&lt;span style="font-weight: bold;"&gt;123 Hola Mundo 456&lt;/span&gt;" que contiene caracteres letras y números. Es &lt;span style="font-weight: bold;"&gt;alfanumérico&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Obviamente no es lo mismo el valor “&lt;span style="font-weight: bold;"&gt;123&lt;/span&gt;” que &lt;span style="font-weight: bold;"&gt;123&lt;/span&gt;. El primero es un valor &lt;span style="font-weight: bold;"&gt;alfanumérico&lt;/span&gt; (está encerrado entre comillas) mientras que el segundo es un &lt;span style="font-weight: bold;"&gt;entero&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Otro tipo de datos es el dato lógico o &lt;span style="font-weight: bold;"&gt;booleano&lt;/span&gt;. Los datos booleanos solo pueden contener valores lógicos: &lt;span style="font-weight: bold;"&gt;verdadero &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;falso &lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Resumiendo lo anterior diremos que podemos tener variables de diferentes tipos de datos. Los tipos de datos pueden ser &lt;span style="font-weight: bold;"&gt;numéricos&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;alfanuméricos&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;booleanos &lt;/span&gt;o &lt;a href="http://holamundopascal.blogspot.com/2007/08/capitulo-6.html#registros"&gt;definidos por el programador&lt;/a&gt; (pero esto lo veremos más adelante).&lt;br /&gt;&lt;br /&gt;Las variables se identifican con un nombre (o identificador). El nombre de la variable debe comenzar con una letra. No puede tener espacios ni caracteres especiales.&lt;br /&gt;&lt;br /&gt;Nombres válidos son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fechaNac&lt;/li&gt;&lt;li&gt;fecNac&lt;/li&gt;&lt;li&gt;f&lt;/li&gt;&lt;li&gt;iFechaNac&lt;/li&gt;&lt;/ul&gt;Nombres &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;incorrectos &lt;/span&gt;son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fecha nacimiento&lt;/span&gt; &lt;span style="color: rgb(255, 102, 0);"&gt;// no puede haber un espacio&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fecha-nacimiento&lt;/span&gt; &lt;span style="color: rgb(255, 102, 0);"&gt;// el caracter "&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="font-weight: bold;"&gt; -&lt;/span&gt; "&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; se utiliza para restar&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;12fecha&lt;/span&gt; &lt;span style="color: rgb(255, 102, 0);"&gt;// debe comenzar con una letra&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fecha+nacimiento&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;// el caracter "&lt;span style="font-weight: bold;"&gt; + &lt;/span&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; se utiliza para sumar&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a name="comenzandoaprog"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Comenzando a Programar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con lo estudiado hasta aquí estamos en condiciones de resolver el siguiente problema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.0&lt;/span&gt;&lt;br /&gt;Se requiere un programa que permita ingresar el nombre de una persona y que luego escriba la leyenda “Hola Mundo” seguida del nombre ingresado.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/Rq4XA2gqwdI/AAAAAAAAA-c/DYdO66OtIo0/s1600-h/holamundo.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/Rq4XA2gqwdI/AAAAAAAAA-c/DYdO66OtIo0/s320/holamundo.jpg" alt="" id="BLOGGER_PHOTO_ID_5093033532002582994" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Análisis&lt;/span&gt;&lt;br /&gt;Primero emitimos un mensaje indicando al usuario que debe ingresar su nombre (utilizamos la acción simple &lt;span style="font-weight: bold;"&gt;escritura&lt;/span&gt;). Para leer el nombre utilizamos la acción simple de &lt;span style="font-weight: bold;"&gt;lectura&lt;/span&gt;. El usuario ingresa por teclado su nombre, lo leemos y lo almacenamos en la variable &lt;span style="font-weight: bold;"&gt;nom&lt;/span&gt;. Luego utilizamos la acción simple de escritura para mostrar la cadena “&lt;span style="font-weight: bold;"&gt;Hola Mundo&lt;/span&gt;” seguida del valor que contiene la variable &lt;span style="font-weight: bold;"&gt;nom&lt;/span&gt;. Las letras &lt;span style="font-weight: bold;"&gt;C&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;F&lt;/span&gt; encerradas en un círculo indican donde comienza y donde finaliza el programa.&lt;br /&gt;&lt;br /&gt;&lt;a name="codificacion"&gt;&lt;br /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Codificación del Algoritmo&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;El gráfico que acabamos de analizar representa el algoritmo que resuelve el problema planteado.&lt;br /&gt;&lt;br /&gt;Para que una computadora pueda interpretar y ejecutar este algoritmo debemos codificarlo en algún lenguaje de programación. En este apunte utilizaremos el lenguaje de programación &lt;span style="font-weight: bold;"&gt;Pascal&lt;/span&gt;&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;Para programar en Pascal tenemos que escribir el código fuente (sentencias e instrucciones que veremos a continuación) en un archivo de texto con extensión &lt;span style="font-weight: bold;"&gt;.pas&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.0.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; nom&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;20&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;escribe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;este&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mensaje&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pantalla&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;su&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;nombre:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;guarda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;variable&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nom&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;usuario&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;escribir&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nombre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;teclado)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;nom&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;escribe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pantalla)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cadena&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'Hola&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Mundo'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;seguida&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;variable&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nom&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Hola&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Mundo&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;nom&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El código comienza con la definición de la variable &lt;span style="font-weight: bold;"&gt;nom&lt;/span&gt;. Pascal es un leguaje &lt;span style="font-weight: bold;"&gt;f&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;uertemente tipado&lt;/span&gt; por lo que todos los recursos que vayamos a utilizar en el programa (variables, funciones, etc) deben ser previamente especificados, indicando explicitamente su tipo de datos. En el caso de la variable &lt;span style="font-weight: bold;"&gt;nom &lt;/span&gt;su tipo de datos es &lt;span style="font-weight: bold;"&gt;string &lt;/span&gt;(alfanumérico, cadena de caracteres). En particular lo definimos como &lt;span style="font-weight: bold;"&gt;string[20]&lt;/span&gt; (arbitrareamente) por lo tanto en la variable &lt;span style="font-weight: bold;"&gt;nom&lt;/span&gt; podremos almacenar cadenas de &lt;span style="font-weight: bold;"&gt;a lo sumo 20 caracteres&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Luego, podemos ver que el programa está encerrado entre las palabras &lt;span style="font-weight: bold;"&gt;begin &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;end&lt;/span&gt;. Se dice que &lt;span style="font-weight: bold;"&gt;begin-end&lt;/span&gt; encierran un bloque de código. Cada sentencia termina con “punto y coma” salvo el &lt;span style="font-weight: bold;"&gt;end &lt;/span&gt;final que termina con “punto”.&lt;br /&gt;&lt;br /&gt;Dentro del código podemos escribir comentarios para ayudarnos a comprender mejor el programa. Los comentarios deben comenzar con “doble barra”.&lt;br /&gt;&lt;br /&gt;No es una buena práctica utilizar caracteres especiales dentro de un archivo de código. Es decir: &lt;span style="font-weight: bold;"&gt;no debemos usar acentos ni &lt;/span&gt;"&lt;span style="font-weight: bold;"&gt;eñes&lt;/span&gt;" en los comentarios ni en ninguna parte del código fuente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nota: el código anterior es compatible con &lt;span style="font-weight: bold;"&gt;Free Pascal&lt;/span&gt; (&lt;a href="http://www.freepascal.org/"&gt;http://www.freepascal.org/&lt;/a&gt;). Difiere en algunos detalles con &lt;span style="font-weight: bold;"&gt;Borland Turbo Pascal&lt;/span&gt;. En este apunte utilizaremos Free Pascal.&lt;br /&gt;&lt;br /&gt;Para editar y compilar el programa vamos a necesitar utilizar una herramienta de desarrollo: Una &lt;span style="font-weight: bold;"&gt;IDE&lt;/span&gt; ("Entorno Integrado de Desarrollo"). Utilizaremos &lt;a href="http://holamundopascal.blogspot.com/2007/08/editpad-pro-freepascal.html"&gt;EditPad PRO + FreePascal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Acción Condicional o Estructura de Decisión&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La estructura de decisión permite &lt;span style="font-weight: bold;"&gt;decidir&lt;/span&gt; entre ejecutar un conjunto de acciones u otro en función una &lt;span style="font-weight: bold;"&gt;expresión lógica&lt;/span&gt;. Es decir: una expresión que tenga valor de verdad.&lt;br /&gt;&lt;br /&gt;Representamos la acción condicional de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/RqUFXmgqvnI/AAAAAAAAA2w/nE5t4ltZ9Mc/s1600-h/if_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/RqUFXmgqvnI/AAAAAAAAA2w/nE5t4ltZ9Mc/s320/if_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090480856844910194" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cuando el algoritmo (o programa) llega a una acción condicional debe evaluar la expresión lógica (ubicada en la parte superior). Si esta tiene valor de verdad &lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;(verdadero) entonces se ejecutan las acciones que se encuentran en la parte izquierda de la estructura. Si la expresión resulta &lt;span style="font-weight: bold;"&gt;false &lt;/span&gt;(falsa) entonces se ejecutan las acciones ubicadas a la derecha.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.1&lt;/span&gt;&lt;br /&gt;Leer un valor e indicar si el valor ingresado es mayor que 10.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/Rq4XT2gqweI/AAAAAAAAA-k/h4AgpFbR4BM/s1600-h/Problema1.1__.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/Rq4XT2gqweI/AAAAAAAAA-k/h4AgpFbR4BM/s320/Problema1.1__.jpg" alt="" id="BLOGGER_PHOTO_ID_5093033858420097506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;Leemos el valor en la variable &lt;b&gt;v&lt;/b&gt;. Luego con una acción condicional evaluamos si el valor de &lt;b&gt;v&lt;/b&gt; es mayor que &lt;b&gt;10&lt;/b&gt;. Si resulta verdadero (esto depende de lo que ingrese el usuario) entonces se ejecuta la parte izquierda de la estructura y se muestra un mensaje indicando que el valor ingresado es mayor que 10.&lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Si la condición resulta falsa entonces podemos asegurar que el valor &lt;b&gt;NO&lt;/b&gt; es mayor que 10. Pero no sabemos si es menor o igual. Esto lo estudiaremos en el próximo problema.&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;problema1.1.pas&lt;/p&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; v&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leemos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;teclado&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;v&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;v&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leido)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;10&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; v&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;El&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;mayor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;que&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;10&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;v&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;10...&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;El&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;NO&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;es&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;mayor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;que&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;10&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;La acción condicional se codifica con la sentencia &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; (ver línea 9). Esta sentencia evalúa la expresión lógica ubicada dentro de los paréntesis y decide (en función de que resulte &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;) que bloque de código ejecutar. Si la expresión &lt;span style="font-weight: bold;"&gt;v&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;10&lt;/span&gt; resulta verdadera entonces se ejecuta la línea 10, si no (&lt;span style="font-weight: bold;"&gt;else&lt;/span&gt;) se ejecuta la línea 12.&lt;br /&gt;&lt;br /&gt;Notemos que tanto la línea 10 como la línea 12 están encerradas en bloques &lt;span style="font-weight: bold;"&gt;begin-end&lt;/span&gt;. Por eso hablamos de "bloques de código". Dentro un bloque de código puede haber más de una instrucción como veremos en los próximos ejemplos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.2&lt;/span&gt;&lt;br /&gt;Idem anterior pero indicar si el valor ingresado es mayor, menor o igual que 10.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SD2pj27ufeI/AAAAAAAAB78/-G8SDToXArA/s1600-h/Problema%2B1.2_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SD2pj27ufeI/AAAAAAAAB78/-G8SDToXArA/s400/Problema%2B1.2_.jpg" alt="" id="BLOGGER_PHOTO_ID_5205503177816702434" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;Para resolver este problema leemos &lt;span style="font-weight: bold;"&gt;v&lt;/span&gt; y preguntamos si es mayor que 10. Si resulta verdadero entonces podemos mostrar ese resultado. Si no es mayor entonces &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;uede ser igual o menor&lt;/span&gt;. Tenemos que preguntar por alguna de estas posibilidades. Preguntamos si &lt;span style="font-weight: bold;"&gt;v=10&lt;/span&gt;. Si es verdadero entonces ya sabemos que se ingresó el valor 10. Si es falso entonces (como no es mayor ni es igual) resulta que &lt;span style="font-weight: bold;"&gt;v&lt;/span&gt; es menor que 10.&lt;br /&gt;&lt;br /&gt;Utilizamos estructuras de desición &lt;span style="font-weight: bold;"&gt;anidadas &lt;/span&gt;(o "ifes" anidados).&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;problema1.2.pas&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; v&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="syntax0"&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;v&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; v&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;El&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;mayor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;que&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;10&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;igual&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; v&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Es&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;igual&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;a&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;10&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;menor&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Es&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;menor&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;que&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;10&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span&gt;&lt;br /&gt;En este problema vemos estructuras de desición anidadas (o "ifes anidados") pero aún así los bloques de código encerrados en los &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;-&lt;span style="font-weight: bold;"&gt;else &lt;/span&gt;tienen una única acción. El &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; de la línea 6 encierra una única acción &lt;span style="font-weight: bold;"&gt;writeln&lt;/span&gt;. Su &lt;span style="font-weight: bold;"&gt;else&lt;/span&gt; encierra una única acción &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; que a su vez encierra una única acción, tanto por verdadero (línea 10) como por falso (línea 12).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.3&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Leer tres valores numéricos. Indicar cual es mayor, medio y menor.&lt;br /&gt;Nota: se asume que los tres valores serán diferentes.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/RqUA22gqvWI/AAAAAAAAA0o/i44mY5yJXtA/s1600-h/Problema1.3_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/RqUA22gqvWI/AAAAAAAAA0o/i44mY5yJXtA/s400/Problema1.3_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090475896157683042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;Leemos los tres valores y comenzamos a comparar. Preguntamos si &lt;span style="font-weight: bold;"&gt;a&amp;gt;b&lt;/span&gt;. Si esto se verifica entonces preguntamos si &lt;span style="font-weight: bold;"&gt;a&amp;gt;c&lt;/span&gt;. Si esto también se verifica resulta que&lt;span style="font-weight: bold;"&gt; a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;. No hay dudas de que&lt;span style="font-weight: bold;"&gt; a&lt;/span&gt; es el mayor. Luego tenemos que comparar &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;c &lt;/span&gt;para ver cual esta en segundo y en tercer lugar.&lt;br /&gt;&lt;br /&gt;Si resulta que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; pero no se verifica que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c &lt;/span&gt;(o sea que &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; es mayor que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;) será &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; el mayor, &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; el medio y &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; el menor.&lt;br /&gt;&lt;br /&gt;Por otro lado, si no se verifica que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; preguntamos si &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;. Si esto es así entonces el mayor será &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; (ya que &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; es mayor que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; es mayor que &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;). Preguntamos si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; y ya podremos deducir cual está en segundo y tercer lugar.&lt;br /&gt;&lt;br /&gt;Para finalizar, si es falso que &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; entonces el mayor será &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;, medio &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; y menor &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.3.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; a&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   write&lt;/span&gt;&lt;/span&gt;&lt;span class="syntax0"&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;tres&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valores:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;3&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valores&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;numericos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;separados&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;espacio&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;blanco&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;b &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;         &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; b&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; b&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;         &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;            writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;         writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a name="oplogicos"&gt;&lt;/a&gt;En este código vemos bloques &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;-&lt;span style="font-weight: bold;"&gt;else &lt;/span&gt;con más de una instrucción. El &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; de la línea 10 tiene una única instrucción (un &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; que comienza en la línea 11 y finaliza en la línea 24). El &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; de la línea 11 tiene dos instrucciones: un &lt;span style="font-weight: bold;"&gt;writeln&lt;/span&gt; y un &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt; que a su vez tiene dos instrucciones por verdadero (líneas 14 y 15) y otras dos por falso (líneas 17 y 18).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Operadores Lógicos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una proposición es una expresión que tiene valor de verdad (&lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;). Es decir: puede verificarse o no.&lt;br /&gt;&lt;br /&gt;Los siguientes ejemplos son proposiciones y por lo tanto tienen valor de verdad.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“Una semana tiene 7 días” (&lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;“7 es número primo” (&lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;“2 es mayor que 5” (&lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;“4 = 2+3” (&lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;Podemos utilizar operadores lógicos para realizar operaciones entre proposiciones y así obtener nuevas proposiciones con sus correspondientes valores de verdad.&lt;br /&gt;&lt;br /&gt;Los operadores lógicos son: &lt;span style="font-weight: bold;"&gt;AND&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Las siguientes tablas muestran el valor de verdad de la proposición que resulta luego de operar dos proposiciones &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;q&lt;/span&gt; con los diferentes operadores lógicos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/Rq3WIWgqwTI/AAAAAAAAA9M/fdB-OPs1AAU/s1600-h/operadoresLogicos.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/Rq3WIWgqwTI/AAAAAAAAA9M/fdB-OPs1AAU/s400/operadoresLogicos.jpg" alt="" id="BLOGGER_PHOTO_ID_5092962192595796274" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;Veamos otra solución para el problema 1.3 (versión 2)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/RqjAI2gqv9I/AAAAAAAAA6c/kwcEXHegl9g/s1600-h/Problema+1.3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 311px;" src="http://bp3.blogger.com/_X1IHMrfIpE8/RqjAI2gqv9I/AAAAAAAAA6c/kwcEXHegl9g/s400/Problema+1.3.jpg" alt="" id="BLOGGER_PHOTO_ID_5091530637046366162" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;La solución es similar: varios &lt;span style="font-weight: bold;"&gt;if anidados,&lt;/span&gt; pero en este caso utilizamos operadores lógicos para evaluar más de una condición en un mismo &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Comenzamos preguntando si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;b AND a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; para asegurarnos de que &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; es el mayor valor. Teniendo esto seguro (entramos por la parte izquierda de la estructura) tenemos que ver cual es el valor medio y cual es el menor.&lt;br /&gt;&lt;br /&gt;Si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; no es el mayor (ingresamos por la parte derecha de la estructura) preguntamos si &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; es el mayor (&lt;span style="font-weight: bold;"&gt;b&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;a AND b&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;). Si esto es así entonces comparamos &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; con &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; para ver quien está en segundo y tercer lugar. Si no (si &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; no es el mayor) entonces por descarte el mayor será &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;. Luego también comparamos &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; para ver quien es medio y menor.&lt;br /&gt;&lt;br /&gt;Otra diferencia con la solución anterior es que en este caso estamos utilizando tres variables temporales: &lt;span style="font-weight: bold;"&gt;mayor&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;medio &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;menor &lt;/span&gt;para asignar los valores a medida que podemos deducir que posición tienen. Luego simplemente mostramos el valor de estas variables para informar los resultados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.3v2.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; a&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;,&lt;/span&gt;mayor&lt;span class="syntax18"&gt;,&lt;/span&gt;medio&lt;span class="syntax18"&gt;,&lt;/span&gt;menor&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;tres&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valores:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;,&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pregunto&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;AND&lt;/span&gt; &lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      mayor&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;como&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comparo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; b&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;         medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;         menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;c&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;         medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;c&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;         menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt;, &lt;/span&gt;&lt;span class="syntax2"&gt;pregunto&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;AND&lt;/span&gt; &lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;         mayor&lt;span class="syntax18"&gt;:=&lt;/span&gt;b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;         &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comparo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;         &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;c &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;            medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;            menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;c&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;            medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;c&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;            menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;         &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ni&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;         mayor&lt;span class="syntax18"&gt;:=&lt;/span&gt;c&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;         &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;solo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;queda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comparar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;         &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; a&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;b &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;            medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;            menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;            medio&lt;span class="syntax18"&gt;:=&lt;/span&gt;b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;            menor&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;         &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;muestro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;resultados&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;obtenidos&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; mayor&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Medio:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; medio&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  47:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Menor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; menor&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  48:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  49:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acción iterativa o Estructura de Repetición&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La tercer y última estructura de control de flujo de datos es la estructura de repetición (o iterativa). Existen tres estructuras interativas: &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;repeat-until&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;, lo representamos de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/RqUCQmgqvdI/AAAAAAAAA1g/L_Ns-FRA9t4/s1600-h/while_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/RqUCQmgqvdI/AAAAAAAAA1g/L_Ns-FRA9t4/s200/while_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090477438050942418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Decimos que &lt;span style="font-weight: bold;"&gt;mientras se verifique la condición&lt;/span&gt; indicada en la parte superior de la estructura se repetirán las acciones que se encuentran dentro del cuerpo principal de la misma (secuencialmente).&lt;br /&gt;&lt;br /&gt;Como existe la posibilidad de que la condición no se cumpla al momento de llegar al &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;y que no se ingrese al ciclo ni siquiera la primera vez se dice que el &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;es una estructura repetitiva de &lt;span style="font-weight: bold;"&gt;0-&lt;span style="font-style: italic;"&gt;n&lt;/span&gt;&lt;/span&gt; (cero a ene) ya que puede iterar desde cero hasta &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; veces.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.4&lt;/span&gt;&lt;br /&gt;Imprimir por pantalla los primeros &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; números positivos (el valor &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; se ingresa por teclado).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/Rq4YZGgqwfI/AAAAAAAAA-s/uAH_0Ybf7MQ/s1600-h/1.4while.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/Rq4YZGgqwfI/AAAAAAAAA-s/uAH_0Ybf7MQ/s320/1.4while.jpg" alt="" id="BLOGGER_PHOTO_ID_5093035048126038514" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;La estrategia para solucionar este problema consiste utilizar una variable &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; con el &lt;span style="font-weight: bold;"&gt;valor inicial 1&lt;/span&gt; (primer número positivo) e ir mostrando e incrementando su valor &lt;span style="font-weight: bold;"&gt;mientras&lt;/span&gt; este sea menor o igual al valor ingresado por el usuario (&lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Supongamos que el usuario ingresa un valor &lt;span style="font-weight: bold;"&gt;n=3&lt;/span&gt;. Al llegar al ciclo de repetición la condición  "&lt;span style="font-weight: bold;"&gt;i &lt;/span&gt;es menor o igual a &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;" resultará verdadera ya que &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; vale 1 (dado que lo asignamos antes de ingresar al ciclo) y &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; vale 3 (es lo que estamos asumiendo). Entonces el programa ingresa al ciclo y muestra el valor de la variable &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;.  A continuación vemos la asignación &lt;span style="font-weight: bold;"&gt;i &amp;lt;-- i+1&lt;/span&gt;. Esto debe leerse así: “a&lt;span style="font-weight: bold;"&gt; i&lt;/span&gt; le asigno el valor que &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;&lt;span&gt; tenía &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;más 1&lt;/span&gt;”. Es decir que si &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; valía 1 entonces ahora a &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; le asignamos &lt;span style="font-weight: bold;"&gt;1 &lt;/span&gt;(lo que tenía) &lt;span style="font-weight: bold;"&gt;+1&lt;/span&gt; dejando su valor en &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;. Es decir: incrementamos el valor de &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;. Como no hay mas acciones para ejecutar dentro del ciclo, el próximo paso es volver a evaluar la condición para ver si se continúa verificando.&lt;br /&gt;&lt;br /&gt;En la siguiente iteración &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; vale 2 y &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; vale 3. Todavía se verifica que "&lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; es menor o igual a &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;". Se vuelve a ingresar al ciclo y se imprime el valor de &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; (2). Luego se incrementa &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; y así hasta que no se cumpla la condición.   &lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.4.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; i&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;teclado&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inicializo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;variable&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;i&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   i&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;itero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mientras&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;i&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;menor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;o&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;igual&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax8"&gt;while&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; i&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax18"&gt;=&lt;/span&gt;n &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;do&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;muestro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;i&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;i&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;incremento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;i&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;      i&lt;span class="syntax18"&gt;:=&lt;/span&gt;i&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ciclo repeat-until&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo representamos así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/RqUDmWgqvgI/AAAAAAAAA14/d10MF0q9rCI/s1600-h/repeat_.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/RqUDmWgqvgI/AAAAAAAAA14/d10MF0q9rCI/s200/repeat_.jpg" alt="" id="BLOGGER_PHOTO_ID_5090478911224724994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;El ciclo &lt;span style="font-weight: bold;"&gt;r&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;epeat-until&lt;/span&gt; es un ciclo de &lt;span style="font-weight: bold;"&gt;1 &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="font-style: italic;"&gt;n&lt;/span&gt;&lt;/span&gt;. Para ingresar al ciclo no hay condición por lo tanto las acciones que se encuentran dentro del ciclo se realizarán &lt;span style="font-weight: bold;"&gt;al menos una vez&lt;/span&gt;. Luego de la última acción (en este caso &lt;span style="font-weight: bold;"&gt;acción3&lt;/span&gt;) se evalúa la condición que se encuentra en la parte posterior de la estructura.&lt;br /&gt;&lt;br /&gt;El ciclo iterará &lt;span style="font-weight: bold;"&gt;hasta que se verifique la condición&lt;/span&gt; ("repeat-until" significa "repetir-hasta").&lt;br /&gt;&lt;br /&gt;Tenemos que tener clara la diferencia entre el ciclo &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;y el ciclo &lt;span style="font-weight: bold;"&gt;repeat-until&lt;/span&gt;. El primero &lt;span style="font-weight: bold;"&gt;repite mientras&lt;/span&gt;, en cambio el segundo &lt;span style="font-weight: bold;"&gt;repite hasta&lt;/span&gt; que se cumpla la condición.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Veamos como podemos resolver el problema 1.4 utilizando un ciclo &lt;span style="font-weight: bold;"&gt;repeat-until&lt;/span&gt; en lugar de un  ciclo &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/Rq4YZWgqwgI/AAAAAAAAA-0/FyRGnZC3kDw/s1600-h/1.4repeat.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/Rq4YZWgqwgI/AAAAAAAAA-0/FyRGnZC3kDw/s320/1.4repeat.jpg" alt="" id="BLOGGER_PHOTO_ID_5093035052421005826" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Basicamente la diferencia está en la condición del ciclo. Antes iteraba "mientras que &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; sea menor o igual que &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;". Ahora itera "&lt;span style="font-weight: bold;"&gt;hasta &lt;/span&gt;que &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; sea mayor que &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.4v2.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; i&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="syntax0"&gt;&lt;span class="gutterH"&gt;   4:&lt;/span&gt;   write&lt;/span&gt;&lt;/span&gt;&lt;span class="syntax0"&gt;&lt;span class="syntax9"&gt;&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   i&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax8"&gt;repeat&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;i&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;      i&lt;span class="syntax18"&gt;:=&lt;/span&gt;i&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax8"&gt;until&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; i&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;n &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ciclo for&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este es otro ciclo iterativo de &lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;&lt;span&gt; a&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;n&lt;/span&gt; iteraciones. Se representa así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SD7Lf27ufhI/AAAAAAAAB8U/J9qdjtI6rLk/s1600-h/for.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SD7Lf27ufhI/AAAAAAAAB8U/J9qdjtI6rLk/s400/for.jpg" alt="" id="BLOGGER_PHOTO_ID_5205821967469280786" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El ciclo &lt;span style="font-weight: bold;"&gt;for &lt;/span&gt;funciona con una variable de control (en el gráfico es la variable &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;) que toma un valor inicial (&lt;span style="font-weight: bold;"&gt;h&lt;/span&gt;) y un valor final (&lt;span style="font-weight: bold;"&gt;t&lt;/span&gt;). La variable de control &lt;span style="font-weight: bold;"&gt;se incrementa automaticamente&lt;/span&gt; en cada iteración tomando el valor &lt;span style="font-weight: bold;"&gt;h&lt;/span&gt; en la primer iteración, &lt;span style="font-weight: bold;"&gt;h+1&lt;/span&gt; en la segunda y &lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; en la última. Así, el ciclo dará exactamente &lt;span style="font-weight: bold;"&gt;t-h+1&lt;/span&gt; iteraciones.&lt;br /&gt;&lt;br /&gt;Como vemos en el gráfico tenemos dos opciones para representarlo. Podemos utilizar cualquiera de las dos.&lt;br /&gt;&lt;br /&gt;Veamos como lo aplicamos en el problema 1.4&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/Rq4YZWgqwhI/AAAAAAAAA-8/EmOkf9JpAlQ/s1600-h/1.4for.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/Rq4YZWgqwhI/AAAAAAAAA-8/EmOkf9JpAlQ/s320/1.4for.jpg" alt="" id="BLOGGER_PHOTO_ID_5093035052421005842" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Vemos que en este caso el uso de un ciclo &lt;span style="font-weight: bold;"&gt;for &lt;/span&gt;simplifica la solución del problema. Simplemente leemos el valor &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; y luego entramos en un ciclo &lt;span style="font-weight: bold;"&gt;for &lt;/span&gt;con la variable &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt; incrementándose desde 1 hasta &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Dentro del ciclo solo tenemos que mostrar el valor de &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;. Ya no es necesario incrementarla porque el mismo ciclo la incrementa automaticamente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.4v3.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; i&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="syntax0"&gt;&lt;span class="gutterH"&gt;:&lt;/span&gt;   write&lt;/span&gt;&lt;/span&gt;&lt;span class="syntax0"&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax8"&gt;for&lt;/span&gt; i&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt; &lt;span class="syntax8"&gt;to&lt;/span&gt; n &lt;span class="syntax8"&gt;do&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;i&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a name="contacum"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Contadores y Acumuladores&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para explicar estos temas analizaremos el siguiente problema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 1.5&lt;/span&gt;&lt;br /&gt;Leer un conjunto de valores que corresponden a las edades de un grupo de personas, indicar:&lt;br /&gt;&lt;br /&gt;a - Cuantas personas (sus edades) se ingresaron.&lt;br /&gt;b - Cuantas son mayores de edad (21 años o más).&lt;br /&gt;c - Edad promedio de las personas.&lt;br /&gt;&lt;br /&gt;El conjunto de valores finaliza cuando se ingresa una edad menor que cero.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SD27AG7uffI/AAAAAAAAB8E/3V9WcWIrW2A/s1600-h/p15a.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SD27AG7uffI/AAAAAAAAB8E/3V9WcWIrW2A/s400/p15a.jpg" alt="" id="BLOGGER_PHOTO_ID_5205522354845679090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SD27AW7ufgI/AAAAAAAAB8M/RlAR-kfyGFw/s1600-h/p15b.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SD27AW7ufgI/AAAAAAAAB8M/RlAR-kfyGFw/s400/p15b.jpg" alt="" id="BLOGGER_PHOTO_ID_5205522359140646402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;La estructura principal de este algoritmo consiste en un ciclo repetitivo que itera mientras la edad leida (&lt;span style="font-weight: bold;"&gt;e&lt;/span&gt;) sea mayor o igual que cero (ya que se ingresará un valor negativo para indicar el fin de datos). Se lee la edad antes de ingresar al &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;y antes de cerrarlo.&lt;br /&gt;&lt;br /&gt;Para calcular cuantas personas se ingresaron (&lt;span style="font-weight: bold;"&gt;punto&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;) utilizamos la variable &lt;span style="font-weight: bold;"&gt;cantPersonas&lt;/span&gt;. Esta variable se inicializa con cero (&lt;span style="font-weight: bold;"&gt;cantPersonas:=0&lt;/span&gt;) antes de ingresar al &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;,&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;y dentro del &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;(por cada iteración) la incrementamos asignándole &lt;span style="font-weight: bold;"&gt;el valor que tenía más 1&lt;/span&gt;. (&lt;span style="font-weight: bold;"&gt;cantPersonas:=cantPersonas+1&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;La variable &lt;span style="font-weight: bold;"&gt;cantPersonas &lt;/span&gt;incrementa su valor en 1 por cada iteración del &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;. A su vez, el &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;itera tantas veces como edades válidas de personas se ingresen. Decimos entonces que &lt;span style="font-weight: bold;"&gt;cantPersonas es un contador&lt;/span&gt; que cuenta (en este caso) la cantidad de personas cuyas edades se ingresaron. O bien: &lt;span style="font-weight: bold;"&gt;cantPersonas &lt;/span&gt;es el &lt;span style="font-weight: bold;"&gt;contador de personas&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Es muy importante notar que el contador &lt;span style="font-weight: bold;"&gt;debe inicializarse en cero&lt;/span&gt; ya que para incrementar su valor hacemos referencia &lt;span style="font-weight: bold;"&gt;al valor que tenía &lt;/span&gt;&lt;span&gt;más 1&lt;/span&gt;. En el momento inicial (primera iteración) debe valer cero.&lt;br /&gt;&lt;br /&gt;Para calcular cuantas personas son mayores de 21 años (&lt;span style="font-weight: bold;"&gt;punto b&lt;/span&gt;) utilizamos otro contador (&lt;span style="font-weight: bold;"&gt;mayores&lt;/span&gt;) solo que antes de incrementarlo preguntamos si la edad leida es mayor o igual que 21.&lt;br /&gt;&lt;br /&gt;Para calcular el promedio de las edades grupo (&lt;span style="font-weight: bold;"&gt;punto c&lt;/span&gt;) necesitamos dos datos: la cantidad de edades ingresadas y la sumatoria de las edades. La cantidad de edades ingresadas ya la tenemos en la variable &lt;span style="font-weight: bold;"&gt;cantPersonas&lt;/span&gt;. Por lo tanto necesitamos obtener &lt;span style="font-weight: bold;"&gt;la sumatoria de las edades&lt;/span&gt;. Para esto &lt;span style="font-weight: bold;"&gt;utilizamos un acumulador&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A la variable &lt;span style="font-weight: bold;"&gt;sumEdades &lt;/span&gt;(que inicializamos en cero) le incrementamos su valor en cada iteración del &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;. Pero no lo incrementamos en 1. Le asignamos lo que tenía más el valor de la variable &lt;span style="font-weight: bold;"&gt;e&lt;/span&gt; (la edad).&lt;br /&gt;&lt;br /&gt;Decimos entonces que &lt;span style="font-weight: bold;"&gt;sumEdades &lt;/span&gt;es un acumulador que acumula (en este caso) las edades leidas. O simplemente: &lt;span style="font-weight: bold;"&gt;sumEdades es el acumulador de edades&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Al finalizar el &lt;span style="font-weight: bold;"&gt;while &lt;/span&gt;tenemos en &lt;span style="font-weight: bold;"&gt;cantPersonas &lt;/span&gt;la cantidad de personas del conjunto, en &lt;span style="font-weight: bold;"&gt;mayores &lt;/span&gt;la cantidad de personas mayores de 21. Luego a &lt;span style="font-weight: bold;"&gt;edadProm &lt;/span&gt;le asignamos &lt;span style="font-weight: bold;"&gt;sumEdades/cantPersonas&lt;/span&gt; para calcular la edad promedio del conjunto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;problema1.5.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; e&lt;span class="syntax18"&gt;,&lt;/span&gt;mayores&lt;span class="syntax18"&gt;,&lt;/span&gt;cantPersonas&lt;span class="syntax18"&gt;,&lt;/span&gt; sumEdades&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;    edadProm&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;real&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   mayores&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   cantPersonas&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   sumEdades&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax9"&gt;write&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Edad:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   readln&lt;span class="syntax18"&gt;(&lt;/span&gt;e&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax8"&gt;while&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; e &lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax5"&gt;0&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;do&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contador&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;edades&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ingresadas&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;      cantPersonas&lt;span class="syntax18"&gt;:=&lt;/span&gt;cantPersonas&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;acumulador&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;edades&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;      sumEdades&lt;span class="syntax18"&gt;:=&lt;/span&gt;sumEdades&lt;span class="syntax18"&gt;+&lt;/span&gt;e&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;      &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; e &lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax5"&gt;21&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;         mayores&lt;span class="syntax18"&gt;:=&lt;/span&gt;mayores&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;      &lt;span class="syntax9"&gt;write&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Edad:&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;      readln&lt;span class="syntax18"&gt;(&lt;/span&gt;e&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   edadProm&lt;span class="syntax18"&gt;:=&lt;/span&gt;sumEdades&lt;span class="syntax18"&gt;/&lt;/span&gt;cantPersonas&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Cantidad&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;de&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Personas:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;cantPersonas&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mayores&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;de&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;21:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;mayores&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Edad&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Promedio:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;edadProm&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Resumiendo, decimos que una variable es un contador cuando incrementamos su valor en una unidad.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;cont:=cont+&lt;span style="color: rgb(255, 0, 0);"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Decimos que una variable es un acumulador cuando incrementamos su valor en una cantidad variable.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;acum:=acum+&lt;span style="color: rgb(255, 0, 0);"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;donde &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; es una variable cuyo valor puede variar.&lt;br /&gt;&lt;br /&gt;&lt;a name="nomen"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Nomenclatura&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pascal es un lenguaje de programación "insensible" a las mayúsculas y minúsculas por lo tanto podemos escribir código Pascal en mayúscula, en minúscula o con combinaciones de mayúsculas y minúsculas.&lt;br /&gt;&lt;br /&gt;Las variables (o identificadores) también son "insensibles" por lo que la variable &lt;span style="font-weight: bold;"&gt;a &lt;/span&gt;es la misma que la variable &lt;span style="font-weight: bold;"&gt;A&lt;/span&gt;. La variable &lt;span style="font-weight: bold;"&gt;fechanacimiento&lt;/span&gt; es la misma que &lt;span style="font-weight: bold;"&gt;FECHANACIMIENTO&lt;/span&gt; y la misma que &lt;span style="font-weight: bold;"&gt;fechaNacimiento&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Sin embargo en este trabajo utilizaremos la siguiente convensión de nomenclatura:&lt;br /&gt;&lt;br /&gt;Todas las palabras reservadas de Pascal (&lt;span style="font-weight: bold;"&gt;while&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;repeat&lt;/span&gt;-&lt;span style="font-weight: bold;"&gt;until&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;, etc) las escribiremos en minúscula.&lt;br /&gt;&lt;br /&gt;Todos los nombres de variables deben comenzar con minúscula. Si el nombre de la variable está compuesto por más de una palabra entonces la primer inicial irá en minúscula pero las iniciales siguientes deben ir en mayúscula.&lt;br /&gt;&lt;br /&gt;Por ejemplo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fechaNacimiento&lt;/li&gt;&lt;li&gt;fecNac&lt;/li&gt;&lt;li&gt;nomPersona&lt;/li&gt;&lt;li&gt;edad&lt;/li&gt;&lt;li&gt;legajo&lt;/li&gt;&lt;li&gt;legajoEmpleado&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;Algoritmos y Estructuras de Datos UTN - UBA&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-2559949985685658000?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://holamundopascal.blogspot.com/feeds/2559949985685658000/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=994832637513226408&amp;postID=2559949985685658000&amp;isPopup=true' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2559949985685658000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2559949985685658000'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2007/08/capitulo-1_9518.html' title='Capítulo 1'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_X1IHMrfIpE8/RqSsuWgqvKI/AAAAAAAAAzI/FtTmbyEayZk/s72-c/lectura_.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-9118943844614793601</id><published>2008-06-20T00:56:00.000-03:00</published><updated>2008-06-27T14:28:31.884-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Algortimo de Huffman&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El algoritmo de Huffman es un algoritmo que permite comprimir y encriptar datos basándose en la probabilidad de ocurrencia de cada uno de los caracteres contenidos en el mensaje (o archivo) a comprimir/encriptar.&lt;br /&gt;&lt;br /&gt;El objetivo de este trabajo es aplicar el algoritmo de Huffman para desarrollar un programa que permita comprimir y descomprimir archivos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Teoría de Huffman&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El algotirmo de Huffman asigna a cada caracter del archivo un código (que llamaremos código Huffman) de longitud variable (medida en cantidad de bits). A los caracteres con mayor cantidad de ocurrencias se les asigna un código Huffman con menor longitud y a los que tienen menor cantidad de ocurrencias se les asigna un código con longitud mayor.&lt;br /&gt;&lt;br /&gt;A continuación vamos a analizar un ejemplo completo para comprender como funciona el algoritmo que utilizaremos para comprimir y descomprimir archivos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supongamos que tenemos que comprimir un archivo que contiene el siguiente texto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;COMO COME COCORITO COME COMO COSMONAUTA&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 1&lt;/span&gt;&lt;br /&gt;Contar las ocurrencias de cada caracter.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDH5Hw_x_pI/AAAAAAAAB4M/SKED-wQkb3U/s1600-h/ocurrencias.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDH5Hw_x_pI/AAAAAAAAB4M/SKED-wQkb3U/s400/ocurrencias.jpg" alt="" id="BLOGGER_PHOTO_ID_5202212956396453522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para contar las ocurrencias utilizamos una tabla (que luego implementaremos como un array de 0 a 255 registros) en la que almacenamos el caracter (en la posición del array que coincide con su&lt;a href="http://bp0.blogger.com/_X1IHMrfIpE8/RtV-l-5mBrI/AAAAAAAABSs/eduZ2qrWA5w/s1600-h/asciifull.gif"&gt; código ASCII&lt;/a&gt;) y la cantidad de ocurrencias de este caracter en el archivo (que llamaremos &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 2&lt;/span&gt;&lt;br /&gt;Creamos una &lt;a href="http://holamundopascal.blogspot.com/2007/08/capitulo-7.htm"&gt;lista ordenada&lt;/a&gt; ascendentemente por la cantidad de ocurrencias de cada caracter. Primero los menos ocurrentes y luego los más ocurrentes. Si dos caracteres ocurren con igual probabilidad entonces primero colocamos al que tiene menor valor ASCII. Por ejemplo: en la tabla vemos que los caractetes I, N, R, S, U ocurren una sola vez. Tienen la misma probabilidad de ocurrencia entre si por lo tanto en la lista ordenada que veremos a continuación los colocaremos por orden ascendente de su código ASCII (léase de izquierda a derecha y de arriba hacia abajo).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDH6Cw_x_qI/AAAAAAAAB4U/3GayvJNHGBM/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDH6Cw_x_qI/AAAAAAAAB4U/3GayvJNHGBM/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5202213970008735394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 3&lt;/span&gt;&lt;br /&gt;Tomamos los dos primeros nodos de la lista y creamos un pequeño &lt;a href="http://holamundopascal.blogspot.com/2008/03/capitulo-8.html"&gt;árbol binario&lt;/a&gt; que tandrá un nodo raíz con un caracter ficticio que llamaremos &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;*1&lt;/span&gt; (asterisco uno) y una probabilidad de ocurrencia igual a la suma de las probabilidades de los dos nodos que estamos procesando. En la rama derecha colocamos el primer nodo y en la rama izquierda colocamos el segundo nodo.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDH6wg_x_rI/AAAAAAAAB4c/DklKWhBl8Js/s1600-h/0.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDH6wg_x_rI/AAAAAAAAB4c/DklKWhBl8Js/s400/0.jpg" alt="" id="BLOGGER_PHOTO_ID_5202214755987750578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Luego insertamos el nuevo nodo en la lista respetando el criterio de ordenamiento. Si en la lista existe un caracter con la misma probabilidad (en este caso 2) la inserción la haremos a continuación del caracter existente.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDH7Eg_x_sI/AAAAAAAAB4k/qTqIJDiSLcc/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDH7Eg_x_sI/AAAAAAAAB4k/qTqIJDiSLcc/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5202215099585134274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora repetimos la operación tomando los nodos R(1) y S(1):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SDH9DA_x_uI/AAAAAAAAB40/j96ry8zq9ck/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDH9DA_x_uI/AAAAAAAAB40/j96ry8zq9ck/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5202217272838586082" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Continuamos con este proceso hasta obtener un único nodo cuya probabilidad (cantidad de ocurrencias) sea igual a la suma de las probabilidades de los caracteres del archivo.&lt;br /&gt;&lt;a href="http://holamundopascal.blogspot.com/2008/05/arbol-huffman-completo.html"&gt;El desarrollo completo del árbol puede verse en este link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SDH9dQ_x_vI/AAAAAAAAB48/zxqwzUAt-bs/s1600-h/12.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDH9dQ_x_vI/AAAAAAAAB48/zxqwzUAt-bs/s400/12.jpg" alt="" id="BLOGGER_PHOTO_ID_5202217723810152178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 4&lt;/span&gt;&lt;br /&gt;Con el árbol terminado, comenzamos a codificar los caracteres asignando &lt;span style="font-weight: bold;"&gt;0&lt;/span&gt; (cero) a cada nodo a la izquierda y &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt; (uno) a cada nodo a la derecha.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDH-yg_x_wI/AAAAAAAAB5E/RRSymBAKtqA/s1600-h/arbolcodif.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDH-yg_x_wI/AAAAAAAAB5E/RRSymBAKtqA/s400/arbolcodif.jpg" alt="" id="BLOGGER_PHOTO_ID_5202219188394000130" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Entonces para obtener la codificación Huffman de un caracter simplemente recorremos el árbol hasta llegar a la hoja que contiene el caracter que queremos codificar. Asignamos unos o ceros según nos indique camino que tomamos.&lt;br /&gt;&lt;br /&gt;Así, el código Huffman para codificar el caracter R será: &lt;span style="font-weight: bold;"&gt;10101&lt;/span&gt;, cuya longitud (que llamaremos &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt;) es &lt;span style="font-weight: bold;"&gt;5&lt;/span&gt;. En cambio para codificar el caracter M el código será: &lt;span style="font-weight: bold;"&gt;001 &lt;/span&gt;y su &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; = &lt;span style="font-weight: bold;"&gt;3&lt;/span&gt;. Y para codificar el caracter O (letra “O”) obtendremos el código: &lt;span style="font-weight: bold;"&gt;01&lt;/span&gt;, con &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;= &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Podemos observar que el caracter que más se repite en el texto (o archivo) que estamos procesando (la letra O) obtuvo un código de longitud menor (&lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;= &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;), en cambio el caracter R (uno de los que menos veces aparece) obtuvo un código de longitud mayor (&lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;= &lt;span style="font-weight: bold;"&gt;5&lt;/span&gt;). Y un caracter intermedio como la M que aparece 5 veces obtuvo un código de longitud intermedia: &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;= &lt;span style="font-weight: bold;"&gt;3&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Recordemos que cada carecter ocupa &lt;span style="font-weight: bold;"&gt;1 byte&lt;/span&gt; (8 bits). Huffman permite reemplazar los 8 bits de (por ejemplo) el caracter M por los 3 bits del código que obtuvimos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 5&lt;/span&gt;&lt;br /&gt;Volvamos a la tabla de ocurrencias para asignar el código Huffman (&lt;span style="font-weight: bold;"&gt;cod&lt;/span&gt;) y el &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;que le corresponde a cada caracter del texto que estamos procesando.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SDIACw_x_xI/AAAAAAAAB5M/oDHwINr74LY/s1600-h/ocurrencias2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDIACw_x_xI/AAAAAAAAB5M/oDHwINr74LY/s400/ocurrencias2.jpg" alt="" id="BLOGGER_PHOTO_ID_5202220567078502162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 6&lt;/span&gt;&lt;br /&gt;Para finalizar el proceso simplemente reemplazamos cada caracter por su código Huffman y luego agrupamos en paquetes de a 8 bits para obtener los bytes que serán el resultado del algoritmo.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SDIAoA_x_yI/AAAAAAAAB5U/OZeEsB2xiMc/s1600-h/codigo.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDIAoA_x_yI/AAAAAAAAB5U/OZeEsB2xiMc/s400/codigo.jpg" alt="" id="BLOGGER_PHOTO_ID_5202221207028629282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Como resultado logramos comprimir un texto de 39 bytes (39 caracteres) en solo 16 bytes. El algoritmo permite comprimir este texto casi un 59%.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/implementacion-huffman.html"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDICuw_x_zI/AAAAAAAAB5c/OC0CmNE8CRA/s400/siguiente.gif" alt="" id="BLOGGER_PHOTO_ID_5202223522016001842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-9118943844614793601?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/9118943844614793601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/9118943844614793601'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/tp-compresor-huffman.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_X1IHMrfIpE8/SDH5Hw_x_pI/AAAAAAAAB4M/SKED-wQkb3U/s72-c/ocurrencias.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-4773348878834296418</id><published>2008-05-23T16:07:00.025-03:00</published><updated>2008-06-27T10:18:39.275-03:00</updated><title type='text'>Capítulo 3</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Operadores Binarios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con estos operadores podemos realizar operaciones a nivel de bit sobre variables de tipo entero: &lt;span style="font-weight: bold;"&gt;byte&lt;/span&gt;&lt;span&gt; (1 byte)&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt;&lt;span&gt; (2 bytes)&lt;/span&gt;,  &lt;span style="font-weight: bold;"&gt;shortint&lt;/span&gt;&lt;span&gt; (1 byte con bit de signo)&lt;/span&gt;,  &lt;span style="font-weight: bold;"&gt;integer&lt;/span&gt;&lt;span&gt; (2 bytes con bit de signo)&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;longint&lt;/span&gt;&lt;span&gt; (4 bytes con bit de signo)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Recordemos que un número entero, que nosotros vemos y expresamos en decimal, internamente tiene una representación binaria. Por ejemplo:&lt;br /&gt;&lt;br /&gt;var a,b: integer;&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;a := &lt;span style="font-weight: bold;"&gt;77&lt;/span&gt;; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |&lt;span style="font-weight: bold; font-style: italic;"&gt;0&lt;/span&gt;0000000|01001101|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;b := &lt;span style="font-weight: bold;"&gt;-77&lt;/span&gt;; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |&lt;span style="font-weight: bold; font-style: italic;"&gt;1&lt;/span&gt;0000000|01001101|&lt;/span&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;Vemos que tanto &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; como &lt;span style="font-weight: bold;"&gt;b&lt;/span&gt; se representan en dos bytes (son de tipo &lt;span style="font-weight: bold;"&gt;integer&lt;/span&gt;). El bit más significativo (el más a la izquierda) se utiliza para representar el signo (ya que &lt;span style="font-weight: bold;"&gt;integer&lt;/span&gt; es un tipo signado): &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt; indica que el número es negativo mientras &lt;span style="font-weight: bold;"&gt;0&lt;/span&gt; (cero) indica que el número es positivo.&lt;br /&gt;&lt;br /&gt;Supongamos ahora que la variable &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; la definimos de tipo &lt;span style="font-weight: bold;"&gt;byte&lt;/span&gt; (no signado) y le asignamos el valor 77. Su representación binaria será:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SDsG7W7ufVI/AAAAAAAAB60/p2cvqfvHcjk/s1600-h/nbin.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDsG7W7ufVI/AAAAAAAAB60/p2cvqfvHcjk/s400/nbin.jpg" alt="" id="BLOGGER_PHOTO_ID_5204761411194879314" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se lo representa en un único byte y sin bit de signo. El bit más a la izquierda ahora representa un valor numérico por lo tanto en una variable de tipo &lt;span style="font-weight: bold;"&gt;byte &lt;/span&gt;podemos almacenar valores entre 0 y 255.&lt;br /&gt;&lt;br /&gt;Vemos también que cada bit representa una potencia de &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;. El bit más a la derecha (el menos significativo) representa la potencia cero (2 a la cero), el siguiente (hacia la izquierda) representa la potencia uno (2 a la uno)  y así sucesivamente. El valor 77 (decimal) se obtiene sumando las potencias de dos cuyos bits valen 1 (pintados en &lt;span style="color: rgb(102, 255, 255);"&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;celeste&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego de esta introducción podemos analizar los operadores binarios.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Operadores OR y AND binarios&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sean las siguientes definiciones:&lt;br /&gt;&lt;br /&gt;var x,y,z,t: byte;&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;x := 77; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |01001101|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;y := 194; &lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |11000010|&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;z := x &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt; Y; &lt;span style="color: rgb(255, 153, 0);"&gt;// ver explicacion&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;t :=  x &lt;span style="font-weight: bold;"&gt;AND&lt;/span&gt; y;  &lt;span style="color: rgb(255, 153, 0);"&gt;// ver explicacion&lt;/span&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;La variable &lt;span style="font-weight: bold;"&gt;z&lt;/span&gt; tendrá un &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt; en cada posición en la que &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt; (o ambos) tengan &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt; ya que el operador &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt; unirá los unos de ambos operandos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;x := 0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;00&lt;span style="font-weight: bold;"&gt;11&lt;/span&gt;0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;y := &lt;span style="font-weight: bold;"&gt;11&lt;/span&gt;0000&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;z&lt;/span&gt; := &lt;span style="font-weight: bold;"&gt;11&lt;/span&gt;00&lt;span style="font-weight: bold;"&gt;1111&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Entonces el resultado de &lt;span style="font-weight: bold;"&gt;x OR y&lt;/span&gt; (que asignamos a &lt;span style="font-weight: bold;"&gt;z&lt;/span&gt;) será: &lt;span style="font-weight: bold;"&gt;207&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La variable &lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; (a la que le asignamos el resultado de &lt;span style="font-weight: bold;"&gt;x AND y&lt;/span&gt;) solo tendrá un &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt; en aquellas posiciones en las que ambos operandos tengan &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;x := 0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;001101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;y := 1&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;000010&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; := 0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;000000&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En este caso la variable &lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; quedará con el valor &lt;span style="font-weight: bold;"&gt;64&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operador NOT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;var x,y,z,t: byte;&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;x := 77; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |01001101|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;y := &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;x; &lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;// ver explicacion&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;z := 0; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario |00000000|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;t :=  &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt; z;  &lt;span style="color: rgb(255, 153, 0);"&gt;// ver explicacion&lt;/span&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;El operador &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;"niega" cada posición del byte asignando 1 en aquellas posiciones en las que el byte tiene cero y cero en las posiciones en las que el byte tiene 1. Entonces:&lt;br /&gt;&lt;br /&gt;a &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; le asignamos 77 y a &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt; le asignamos &lt;span style="font-weight: bold;"&gt;NOT x&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;x := &lt;span style="color: rgb(102, 102, 102);"&gt;0&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;00&lt;/span&gt;11&lt;span style="color: rgb(102, 102, 102);"&gt;0&lt;/span&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;y := 1&lt;span style="color: rgb(102, 102, 102);"&gt;0&lt;/span&gt;11&lt;span style="color: rgb(102, 102, 102);"&gt;00&lt;/span&gt;1&lt;span style="color: rgb(102, 102, 102);"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;y&lt;/span&gt; queda con &lt;span style="font-weight: bold;"&gt;178&lt;/span&gt;. Luego a &lt;span style="font-weight: bold;"&gt;z&lt;/span&gt; le asignamos 0 y a &lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; le asignamos &lt;span style="font-weight: bold;"&gt;NOT z&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;z := &lt;span style="color: rgb(0, 0, 0);"&gt;00000000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;t := 11111111&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;t&lt;/span&gt; queda con 255.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desplazamiento (shift) de Bits&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los operadores de dezplazamiento permiten correr hacia la izquierda o hacia la derecha los bits de un número no signado.&lt;br /&gt;&lt;br /&gt;var x,y,z,t: byte;&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;x := 24; &lt;span style="color: rgb(255, 153, 0);"&gt;// en binario es: |00011000|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;y :=  x &amp;gt;&amp;gt; 2; &lt;span style="color: rgb(255, 153, 0);"&gt;// el resultado es: |00000110|&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;z :=  x &amp;lt;&amp;lt; 2;&lt;span style="color: rgb(255, 153, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;// el resultado es: |01100000|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;t :=  x &amp;lt;&amp;lt; 3; &lt;span style="color: rgb(255, 153, 0);"&gt;// el resultado es: |11000000|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;/span&gt;end.&lt;br /&gt;&lt;br /&gt;Como vemos, la "doble flecha" indica la dirección (izquierda o derecha) en la que queremos desplazar los bits del número binario. En este ejemplo: &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt; queda con el valor 6, &lt;span style="font-weight: bold;"&gt;z&lt;/span&gt; queda con 96 y &lt;span style="font-weight: bold;"&gt;t &lt;/span&gt;queda con 192.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema&lt;/span&gt;&lt;br /&gt;Una empresa toma la desición de que las fechas dentro de sus sistemas queden representadas en 2 bytes con el siguiente formato: Los 7 bits "más a la izquierda" representarán el año, los siguientes 4 bits (hacia la derecha) representarán el mes y los restantes 5 bits (hacia la derecha) representarán el día.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDsXR27ufWI/AAAAAAAAB68/-qzy0qIpSOU/s1600-h/fecha.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDsXR27ufWI/AAAAAAAAB68/-qzy0qIpSOU/s400/fecha.jpg" alt="" id="BLOGGER_PHOTO_ID_5204779389927980386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se pide&lt;br /&gt;&lt;br /&gt;1 - Desarrollar tres funciones llamadas &lt;span style="font-weight: bold;"&gt;getAnio&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;getMes &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;getDia&lt;/span&gt;, que reciban una fecha expresada en un &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt; (2 bytes sin signo) y retornen el año, el mes y el día (respectivamente) representados en la fecha pasada como parámetro.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2 - Desarrollar tres procedimientos llamados &lt;span style="font-weight: bold;"&gt;setAnio&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;setMes &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;setDia&lt;/span&gt;, que reciban un &lt;span style="font-weight: bold;"&gt;var word &lt;/span&gt;(que representa una fecha) y un valor que indicará el año, mes o día (respectivamente) que se desea asignar en la fecha recibida por referencia. Estas funciones permiten facilmente componer una fecha con el formato definido.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span&gt;Nota: El año debe considerarse de la siguiente manera: sea &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; el valor expresado en los 7 bits correspondientes al año entonces:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;año = 2000 - 50 + &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;Es decir: Si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; vale 50 representa al año 2000. Si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; vale 51 representa al año 2001. Si &lt;span style="font-weight: bold;"&gt;a&lt;/span&gt; vale 52 representa al año 2002, si vale 49 representa al año 1999 y así sucesivamente.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Desarrollaremos las seis funciones en una &lt;span style="font-weight: bold;"&gt;unit&lt;/span&gt; llamada &lt;span style="font-weight: bold;"&gt;untFechasBin.pas&lt;/span&gt;. Antes de comenzar analizaremos la sección &lt;span style="font-weight: bold;"&gt;interface&lt;/span&gt; de la &lt;span style="font-weight: bold;"&gt;unit&lt;/span&gt; para dejar en claro sus encabezados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;untFechasBin.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;unit&lt;/span&gt; untFechasBin&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax8"&gt;const&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      MASK_ANIO &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax5"&gt;65024&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;//&lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;|11111110|00000000|&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      MASK_MES  &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax5"&gt;480&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;   &lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;//&lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;|00000001|11100000|&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      MASK_DIA  &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax5"&gt;31&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;//&lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);" class="syntax2"&gt;|00000000|00011111|&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funciones&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setear&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;fecha&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; a&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setMes&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; m&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setDia&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; d&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funciones&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leer&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;fecha&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; getAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; getMes&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; getDia&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;&lt;span class="syntax8"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desarrollado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mas&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;abajo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Primero analizaremos un programa principal que invoque a las funciones para componer una fecha (en este caso la fecha 2 de octubre de 2008):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;testFechasBin.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;uses&lt;/span&gt; untFechasBin&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; f&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   f&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   setDia&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   setMes&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   setAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2008&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Dia:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; getDia&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Mes:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; getMes&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Anio:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt; getAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;f&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El formato definido para las fechas asigna 5 bits para representar el día. En 5 bits podemos almacenar números comprendidos entre cero y "(2 a la &lt;span style="font-style: italic;"&gt;n)&lt;/span&gt; -1", es decir: 31. Para representar el mes se asignaron 4 bits que permiten un rango numérico de entre cero y 15. Por último, para representar el año se asignan 7 bits con los que podemos representar valores de entre 0 y 127. Como este rango no es suficiente para representar un año de 4 dígitos se definió la regla indicada más arriba (50 representa al año 2000, etc).&lt;br /&gt;&lt;br /&gt;función &lt;span style="font-weight: bold;"&gt;getDia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta función es la más fácil de resolver. Los bits que representan al día son los 5 bits más a la derecha de los dos bytes del &lt;span style="font-weight: bold;"&gt;word &lt;/span&gt;que contiene la fecha. Si pudiésemos asignar cero a todos los otros bits y dejar intactos estos 5 bits, el valor decimal resultante será el día que tenemos que retornar.&lt;br /&gt;&lt;br /&gt;Para asignar cero a todos los otros bits y dejar intactos los 5 bits que representan el día tenemos que hacer un &lt;span style="font-weight: bold;"&gt;AND &lt;/span&gt;entre la fecha y un número que tenga unos en los primeros 5 bits y ceros en los bits restantes. Como estamos utilizando tipos &lt;span style="font-weight: bold;"&gt;word &lt;/span&gt;entonces "fabricamos" nuestro número en 2 bytes:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;|00000000|000&lt;span style="font-weight: bold;"&gt;11111&lt;/span&gt;|&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Este número binario representa al valor decimal: &lt;span style="font-weight: bold;"&gt;31&lt;/span&gt;. Decimos que es una "máscara para día". Si hacemos un &lt;span style="font-weight: bold;"&gt;AND &lt;/span&gt;entre una fecha (un &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt;) y 31 estaremos dejando intactos los primeros 5 bits y asignando ceros a los bits restantes.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;2:&lt;/span&gt;&lt;span class="syntax8"&gt;function&lt;/span&gt; getDia&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;3:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;4:&lt;/span&gt;   getDia&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_DIA&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;5:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;6:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;En la sección &lt;span style="font-weight: bold;"&gt;interface&lt;/span&gt; definimos tres constantes: &lt;span style="font-weight: bold;"&gt;MASK_DIA&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;MASK_MES&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;MASK_ANIO&lt;/span&gt; con el objetivo de "blanquear" los bits que no interesan y dejar "limpios" los bits que representan al día, mes y año respectivamente.&lt;br /&gt;&lt;br /&gt;función &lt;span style="font-weight: bold;"&gt;getMes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El análisis es el mismo: debemos "blanquear" (poner en cero) todos aquellos bits que no representan al mes y dejar intactos los 4 bits nos interesan. La máscara para el mes está definida en la sección &lt;span style="font-weight: bold;"&gt;interface&lt;/span&gt; y corresponde al valor decimal &lt;span style="font-weight: bold;"&gt;480&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;|0000000&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;|&lt;span style="font-weight: bold;"&gt;111&lt;/span&gt;00000|&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La diferencia con la función anterior es que en este caso los bits que representan al mes no están ubicados a la derecha del &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt;, están por el medio. Por esto, luego de aplicar la máscara tenemos que correrlos hacia la derecha para que su valor decimal coincida con el mes representado en la fecha.&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt; 6:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 7:&lt;/span&gt;&lt;span class="syntax8"&gt;function&lt;/span&gt; getMes&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 8:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 9:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;10:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_MES&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;11:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;5&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;12:&lt;/span&gt;   getMes&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;13:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;14:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;función &lt;span style="font-weight: bold;"&gt;getAnio&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El análisis es el mismo que para &lt;span style="font-weight: bold;"&gt;getMes&lt;/span&gt; solo que además hay que considerar lo que se definió: 50 representa al año 2000, y  año&amp;lt;50 o año&amp;gt;50 entonces representa al año 2000-50+año.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;14:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;15:&lt;/span&gt;&lt;span class="syntax8"&gt;function&lt;/span&gt; getAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;16:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;17:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;18:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_ANIO&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;19:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;9&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;20:&lt;/span&gt;   getAnio&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;2000&lt;/span&gt;&lt;span class="syntax18"&gt;-&lt;/span&gt;&lt;span class="syntax5"&gt;50&lt;/span&gt;&lt;span class="syntax18"&gt;+&lt;/span&gt;aux&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;21:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;22:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;procedimiento &lt;span style="font-weight: bold;"&gt;setDia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El procedimiento recibe la variable &lt;span style="font-weight: bold;"&gt;d&lt;/span&gt; que representa el día que tenemos que setear en la fecha&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; Entonces le aplicamos la máscara de día (por las dudas) y luego operamos la fecha y el día con el operador &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt;. Así asignaremos los bits indicados en &lt;span style="font-weight: bold;"&gt;d&lt;/span&gt; sin alterar los bits contenidos en &lt;span style="font-weight: bold;"&gt;fecha&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;18:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;19:&lt;/span&gt;&lt;span class="syntax8"&gt;procedure&lt;/span&gt; setDia&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; d&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;20:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;21:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;22:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;d &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_DIA&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;23:&lt;/span&gt;   fecha&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;OR&lt;/span&gt; aux&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;24:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;25:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;procedimiento &lt;span style="font-weight: bold;"&gt;setMes&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;El mismo análisis: primero corremos los bits 5 posiciones a la izquierda, luego le aplicamos la máscara de mes y por último aplicamos el &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutterH"&gt;10:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;11:&lt;/span&gt;&lt;span class="syntax8"&gt;procedure&lt;/span&gt; setMes&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; m&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;12:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;13:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;14:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;m&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax5"&gt;5&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;15:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_MES&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;16:&lt;/span&gt;   fecha&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;OR&lt;/span&gt; aux&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;17:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;18:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;procedimiento &lt;span style="font-weight: bold;"&gt;setAnio&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Idem anterior pero primero "decodificamos" el año aplicando la fórmula &lt;span style="font-weight: bold;"&gt;a-2000+50&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt; 1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 2:&lt;/span&gt;&lt;span class="syntax8"&gt;procedure&lt;/span&gt; setAnio&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; fecha&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; a&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 3:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;word&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 4:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 5:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;a&lt;span class="syntax18"&gt;-&lt;/span&gt;&lt;span class="syntax5"&gt;2000&lt;/span&gt;&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;50&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 6:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax5"&gt;9&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 7:&lt;/span&gt;   aux&lt;span class="syntax18"&gt;:=&lt;/span&gt;aux &lt;span class="syntax8"&gt;AND&lt;/span&gt; MASK_ANIO&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 8:&lt;/span&gt;   fecha&lt;span class="syntax18"&gt;:=&lt;/span&gt;fecha &lt;span class="syntax8"&gt;OR&lt;/span&gt; aux&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 9:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;10:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2007/08/capitulo-3.html"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDwKqG7ufXI/AAAAAAAAB7E/MbLybUjCne0/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5205046987865357682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-4773348878834296418?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/4773348878834296418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/4773348878834296418'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/operadores-binarios.html' title='Capítulo 3'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_X1IHMrfIpE8/SDsG7W7ufVI/AAAAAAAAB60/p2cvqfvHcjk/s72-c/nbin.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-4933860763182124452</id><published>2008-05-22T15:50:00.008-03:00</published><updated>2008-05-27T16:21:17.541-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis de untSz.pas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por último analizaremos la &lt;span style="font-weight: bold;"&gt;unit&lt;/span&gt; común a szzip.pas y szunzip.pas en la que se define la sección &lt;span style="font-weight: bold;"&gt;type&lt;/span&gt; y las funciones de manipulación a nivel bit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;untSz.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;  1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  2:&lt;/span&gt;&lt;span class="syntax8"&gt;unit&lt;/span&gt; untSz&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  4:&lt;/span&gt;&lt;span class="syntax8"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  5:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  6:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;----------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;CONSTANTES&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;----------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  9:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 10:&lt;/span&gt;   &lt;span class="syntax8"&gt;const&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 11:&lt;/span&gt;      EXTENSION_COD&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;.szcod&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 12:&lt;/span&gt;      EXTENSION_DAT&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;.szzip&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 13:&lt;/span&gt;      EXTENSION_LEN&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;.szlen&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 14:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 15:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 16:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 17:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DEFINICION&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DE&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;TIPOS&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 18:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 19:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 20:&lt;/span&gt;   &lt;span class="syntax8"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 21:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 22:&lt;/span&gt;      PNodo &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax18"&gt;^&lt;/span&gt;Nodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 23:&lt;/span&gt;      Nodo &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 24:&lt;/span&gt;         c&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 25:&lt;/span&gt;         n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 26:&lt;/span&gt;         izq&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 27:&lt;/span&gt;         der&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 28:&lt;/span&gt;         sig&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 29:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 30:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 31:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;16&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 32:&lt;/span&gt;      T16b &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;array&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax5"&gt;15&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 33:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 34:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 35:&lt;/span&gt;      RArray &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 36:&lt;/span&gt;         n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cantidad&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ocurrencias&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 37:&lt;/span&gt;         cod&lt;span class="syntax18"&gt;:&lt;/span&gt; T16b&lt;span class="syntax18"&gt;;&lt;/span&gt;  &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asignado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(max&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bits)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 38:&lt;/span&gt;         nCod&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;longitud&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(max&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 39:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 40:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 41:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 42:&lt;/span&gt;      TArray &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;array&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax5"&gt;255&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RArray&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 43:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 44:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 45:&lt;/span&gt;      FByte &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 46:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 47:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 48:&lt;/span&gt;      RLen &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 49:&lt;/span&gt;         c&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 50:&lt;/span&gt;         n&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 51:&lt;/span&gt;      &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 52:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 53:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 54:&lt;/span&gt;      FLen &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RLen&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 55:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 56:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 57:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 58:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DEFINICION&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DE&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FUNCIONES&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 59:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 60:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 61:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 62:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;potencia2(3)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;8&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 63:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; potencia2&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 64:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 65:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;dado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;string&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 66:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;representacion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;binaria&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 67:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;36&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00100100&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 68:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byteToBin(b)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'00100100'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 69:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;8&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 70:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 71:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;o&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;segun&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bit&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;i&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 72:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;o&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contanto&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izquierda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 73:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;derecha&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 74:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;25&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00011001&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 75:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;getBitAt(b,2)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 76:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;getBitAt(b,3)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 77:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; i&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 78:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 79:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;o&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bit&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 80:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;7&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izquierda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 81:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;derecha&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 82:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00000000&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 83:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setBitAt(b,0,1)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;10000000&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 84:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; b&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; pos&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; val&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 85:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 86:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;copia&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tgt&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bites&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;src&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenidos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 87:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;las&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posiciones&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hasta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inclusive)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 88:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desplazamiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;offset&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 89:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; copiarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; tgt&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;src&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 90:&lt;/span&gt;                       &lt;span class="syntax18"&gt;;&lt;/span&gt;desde&lt;span class="syntax18"&gt;,&lt;/span&gt;hasta&lt;span class="syntax18"&gt;,&lt;/span&gt;offset&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;shortint&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 91:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 92:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(sobrecarga)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 93:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;iden&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;trabajando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sobre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;T16b.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;La&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;salida&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 94:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contendra&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;solo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;primeros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;x&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bits&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comenzando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 95:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izquierda&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 96:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;:&lt;/span&gt; T16b&lt;span class="syntax18"&gt;;&lt;/span&gt; x&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 97:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 98:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(sobrecarga)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 99:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;idem&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;trabaja&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sobre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;T16b&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;100:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;b&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt; i&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;101:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;102:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(sobrecarga)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;103:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;iden&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;trabajando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sobre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;T16b&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;104:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; b&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt; pos&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; val&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;105:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;106:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ceros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;T16b&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;107:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setCeros&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; b&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;108:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;109:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;permite&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inicializar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;T16b&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;110:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;unos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ceros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenidos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sBin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;111:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sBin&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'100110011001100'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;112:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;exactamente&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;esos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;unos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ceros&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;113:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tgt&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(comenzando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izquierda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;114:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;completando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ceros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bits&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;restantes&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;115:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; setBits&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; tgt&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt; sBin&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;116:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;117:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;118:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FUNCIONES&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;PARA&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DEBUG&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;proveen&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;resueltas)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;119:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;120:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;muestra&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pantalla&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;"contenido"&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;121:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ndo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;122:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sig&amp;lt;&amp;gt;NIL&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tambien&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;muestra&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ndo^.sig^.n&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;123:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; mostrarNodo&lt;span class="syntax18"&gt;(&lt;/span&gt;ndo&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;124:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;125:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;e&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;invoca&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrarNodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;126:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorrido&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;127:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; mostrarLista&lt;span class="syntax18"&gt;(&lt;/span&gt;lst&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;128:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;129:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inOrden&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;130:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sus&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodos&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;131:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; mostrarArbol&lt;span class="syntax18"&gt;(&lt;/span&gt;p&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;132:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;133:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;134:&lt;/span&gt;&lt;span class="syntax8"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;135:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;136:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;137:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;138:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;139:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;140:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;141:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;La función &lt;span style="font-weight: bold;"&gt;potencia2&lt;/span&gt; (línea 63) recibe un valor &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; y debe retornar la potencia &lt;span style="font-style: italic;"&gt;n&lt;/span&gt;-ésima de 2. Por ejemplo si &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; es 5 retorna 2 "elevado a la" 5 = 32.&lt;br /&gt;&lt;br /&gt;En la línea 69 vemos la función &lt;span style="font-weight: bold;"&gt;byteToBin&lt;/span&gt;. Esta función se utiliza para debuggear. Recibe un byte y retorna un string de 8 caracteres "unos y ceros" tal que representen en binario al byte recibido.  La función está sobrecargada (ver línea 96) de forma tal que pueda aplicarse tanto a un tipo &lt;span style="font-weight: bold;"&gt;byte&lt;/span&gt;&lt;span&gt; como a un tipo&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;T16b&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En las líneas 77 y 84 se define la funcion &lt;span style="font-weight: bold;"&gt;getBitAt &lt;/span&gt;y el procedimiento &lt;span style="font-weight: bold;"&gt;setBitAt&lt;/span&gt;. La primera recibe un byte y una posición (contando de izquierda a derecha comenzando desde cero) y retorna 1 o 0 según el byte que reciba como parámetro tenga 1 o 0 en dicha posición. La segunda recibe un byte, una posición y un valor 1 o 0 y asigna ese valor en el bit del byte cuya posición se indica en el parámetro (siempre contando desde cero y de izquierda a derecha).&lt;br /&gt;&lt;br /&gt;Estas funciones también están sobrecargadas para trabajar con &lt;span style="font-weight: bold;"&gt;T16b &lt;/span&gt;(líneas 100 y 104).&lt;br /&gt;&lt;br /&gt;En la línea 89 vemos el procedimiento &lt;span style="font-weight: bold;"&gt;copiarBits&lt;/span&gt;. Basicamente lo que debe hacer es copiar un conjunto de bits de un byte (&lt;span style="font-weight: bold;"&gt;src&lt;/span&gt;) a otro byte (&lt;span style="font-weight: bold;"&gt;tgt&lt;/span&gt;). El conjunto de bits a copiar se delimita por los parámetros &lt;span style="font-weight: bold;"&gt;desde &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;hasta&lt;/span&gt;. El parámetro &lt;span style="font-weight: bold;"&gt;offset&lt;/span&gt; marca el desplazamiento.&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo de como debe funcionar este procedimiento:&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;uses&lt;/span&gt; untSz&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; src&lt;span class="syntax18"&gt;,&lt;/span&gt;tgt&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   src&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;231&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;11100111&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   tgt&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00000000&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;copio&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bit&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;6&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;offset&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;span class="syntax2"&gt;   &lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;  &lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   copiarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;,&lt;/span&gt;src&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;6&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;imprime:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00100100&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;copio&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bit&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;6&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;offset&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   tgt&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;vuelvo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;todo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;   &lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   copiarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;,&lt;/span&gt;src&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;6&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;imprime:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;00001001&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;copio&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bit&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;6&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;offset&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-2&lt;/span&gt;&lt;span class="syntax2"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   tgt&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;vuelvo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;todo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;   &lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;   copiarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;,&lt;/span&gt;src&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;6&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax18"&gt;-&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;tgt&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;imprime:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;10010000&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;En la línea 107 se define el procedimiento &lt;span style="font-weight: bold;"&gt;setCeros &lt;/span&gt;que recibe un &lt;span style="font-weight: bold;"&gt;T16b &lt;/span&gt;para inicializarlo en cero. Recordemos que un &lt;span style="font-weight: bold;"&gt;T16b &lt;/span&gt;no es más que un array de 16 bytes (numerados de 0 a 15) por lo tanto para resolver este procedimiento simplemente hay que recorrer el &lt;span style="font-weight: bold;"&gt;T16b &lt;/span&gt;asignando cero en cada posición.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El siguiente programa utiliza y prueba el funcionamiento de todas las funciones definidas en untSz.pas. El alumno puede utilizarlo como caso de prueba para asegurarse que las funciones están correctamente desarrolladas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;testUntSz.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;uses&lt;/span&gt; untSz&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; a&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; h&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;potencia2&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;64&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;6&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;potencia2(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;potencia2&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;potencia2(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;potencia2&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;7&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;potencia2(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;potencia2&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byteToBin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'11001001'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;201&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;byteToBin(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'11111111'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;255&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;byteToBin(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'00000000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; &lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;byteToBin(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;getBitAt&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;201&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retornar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;3&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  47:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  48:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  49:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retornar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  50:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;4&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  51:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  52:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  53:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retornar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  54:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  55:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  56:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  57:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retornar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  58:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;7&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  59:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  60:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  61:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  62:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setBitAt&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  63:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  64:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutterH"&gt;  65:&lt;/span&gt;   a&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  66:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  67:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'10000000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  68:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  69:&lt;/span&gt;   setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  70:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  71:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  72:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'10001000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  73:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;4&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  74:&lt;/span&gt;   setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  75:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  76:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  77:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'00001000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  78:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  79:&lt;/span&gt;   setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  80:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;a&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  81:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  82:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  83:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byteToBin&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(T16b)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  84:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  85:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  86:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;12&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ceros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'000000000000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  87:&lt;/span&gt;   setCeros&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  88:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;12&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  89:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  90:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  91:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setBits&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(T16b)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  92:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  93:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  94:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'11100111001110011010000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  95:&lt;/span&gt;   setBits&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;1110011100111001101&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  96:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;23&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  97:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt;  98:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  99:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;setBitAt&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(T16b)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 100:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 101:&lt;/span&gt;   setCeros&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 102:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 103:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'1000000000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 104:&lt;/span&gt;   setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 105:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 106:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 107:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostrar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;'1000100000'&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 108:&lt;/span&gt;   setBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;4&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 109:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;10&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 110:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 111:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 112:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;testeo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;getBitAt&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(T16b)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 113:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 114:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutterH"&gt; 115:&lt;/span&gt;   setBits&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;110011001100&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 116:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 117:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 118:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 119:&lt;/span&gt;   b&lt;span class="syntax18"&gt;:=&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 120:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;15&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 121:&lt;/span&gt; &lt;br /&gt;&lt;span class="gutter"&gt; 122:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 123:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;2&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 124:&lt;/span&gt;   b&lt;span class="syntax18"&gt;:=&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 125:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;15&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 126:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 127:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;debe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mostar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 128:&lt;/span&gt;   pos&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;4&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 129:&lt;/span&gt;   b&lt;span class="syntax18"&gt;:=&lt;/span&gt;getBitAt&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;pos&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 130:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;h=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;byteToBin&lt;span class="syntax18"&gt;(&lt;/span&gt;h&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax5"&gt;15&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;b&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 131:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 132:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Luego de desarrollar todas las funciones y compilar este programa la salida debe ser la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDxe527ufZI/AAAAAAAAB7U/FduqxxW4RRw/s1600-h/test.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDxe527ufZI/AAAAAAAAB7U/FduqxxW4RRw/s400/test.jpg" alt="" id="BLOGGER_PHOTO_ID_5205139617425030546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo-2.html"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDcQs27ufTI/AAAAAAAAB6k/9aDN5H8pppU/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5203646257296211250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-4933860763182124452?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/4933860763182124452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/4933860763182124452'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/untszpas.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_X1IHMrfIpE8/SDxe527ufZI/AAAAAAAAB7U/FduqxxW4RRw/s72-c/test.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-1242212912034108533</id><published>2008-05-20T00:56:00.025-03:00</published><updated>2008-05-27T15:18:46.924-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis del Descompactador&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para descomprimir los archivos la estrategia será la siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Recomponer el árbol Huffman original.&lt;/li&gt;&lt;li&gt;Recorrer leyendo "bit por bit" el archivo codificado y por cada bit leido bajar un nivel (comenzando desde la raíz) del árbol, a izquierda o a derecha según el bit leido sea 0 o 1. Así hasta llegar a una hoja, lo cual nos indicará que llegamos al caracter que debemos restaurar.&lt;/li&gt;&lt;li&gt;Cada caracter "restaurado" escribirlo en el nuevo archivo de salida que será el mismo que el que se comprimió con el compresor.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Analicemos el código.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;szunzip.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;uses&lt;/span&gt; untSz&lt;span class="syntax18"&gt;,&lt;/span&gt;untSzzip&lt;span class="syntax18"&gt;,&lt;/span&gt;untSzunzip&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   archDat&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;span class="syntax18"&gt;;&lt;/span&gt; archCod&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   b&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   p&lt;span class="syntax18"&gt;,&lt;/span&gt;aux&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   nBytesOri&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   nomArch&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   i&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; paramCount&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;      nomArch&lt;span class="syntax18"&gt;:=&lt;/span&gt;paramStr&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;      write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;ERROR:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Debe&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;especificar&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;el&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;archivo&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;descomprimir&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;USAGE:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;szunzip&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;nombreArchivo&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;      exit&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;   inicializarArray&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;levanto&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   nBytesOri&lt;span class="syntax18"&gt;:=&lt;/span&gt;leerLen&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_LEN&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;levanto&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;.cod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;   subirArchivoCod&lt;span class="syntax18"&gt;(&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_COD&lt;span class="syntax18"&gt;,&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;armo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;enlazada&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;   p&lt;span class="syntax18"&gt;:=&lt;/span&gt;crearLista&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;armo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;   listaToArbol&lt;span class="syntax18"&gt;(&lt;/span&gt;p&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;   grabarArchivo&lt;span class="syntax18"&gt;(&lt;/span&gt;p&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_DAT&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;                                      &lt;span class="syntax18"&gt;,&lt;/span&gt; nBytesOri&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El programa szunzip.pas recibe en línea de comandos el nombre del archivo original. Por ejemplo: dibujo.bmp. Con este nombre podrá obtener los nombres de los archivos dibujo.szlen, dibujo.szcod y dibujo.szzip.&lt;br /&gt;&lt;br /&gt;En la línea 15 verificamos que se haya pasado el nombre del archivo como argumento en línea de comandos y (si no lo pasaron) mostramos un mensaje de error.&lt;br /&gt;&lt;br /&gt;En la línea 27 leemos el archivo .szlen con la función &lt;span style="font-weight: bold;"&gt;leerLen&lt;/span&gt; que retorna el tamaño original del archivo. Recordemos que este archivo es un archivo de registros &lt;span style="font-weight: bold;"&gt;RLen&lt;/span&gt; y cada registro contiene la cantidad de ocurrencias de cada caracter que contenia el archivo original.&lt;br /&gt;&lt;br /&gt;En la línea 30 "restauramos" el array leyendo el archivo .szcod. Recordemos que este es un archivo de bytes (de tipo &lt;span style="font-weight: bold;"&gt;FByte&lt;/span&gt;) donde el primer byte indica un caracter (valor de 0 a 255), el segundo byte indica el &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; para ese caracter y los siguientes &lt;span style="font-style: italic;"&gt;m&lt;/span&gt; bytes representan el código Huffman (&lt;span style="font-weight: bold;"&gt;cod&lt;/span&gt;) con el que se codificó al caracter. Así con todos los caracteres codificados.&lt;br /&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;subirArchivoCod&lt;/span&gt; debe leer el archivo .szcod y completar los campos &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;cod &lt;/span&gt;del array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Teniendo el array cargado podemos crear la lista y el árbol Huffman con la función &lt;span style="font-weight: bold;"&gt;crearLista&lt;/span&gt; y el procedimiento &lt;span style="font-weight: bold;"&gt;listaToArbol&lt;/span&gt; que ya analizamos (y programamos) anteriormente (ver líneas 33 y 36).&lt;br /&gt;&lt;br /&gt;Por último el procedimiento &lt;span style="font-weight: bold;"&gt;grabarArchivo&lt;/span&gt;&lt;span&gt; (línea 38) &lt;/span&gt;lee el archivo .szzip y reescribe el archivo original procesando cada byte (y cada bit) leido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Analicemos la &lt;span style="font-weight: bold;"&gt;unit&lt;/span&gt; untSzunzip.pas donde se definen e implementan las funciones y procedimientos que utiliza szunzip.pas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;untSzunzip.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;unit&lt;/span&gt; untSzunzip&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   &lt;span class="syntax8"&gt;uses&lt;/span&gt; untSz&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nomArchLen&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FLen&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;carga&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;datos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;levanta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cantidad&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracteres&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tenia&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;original&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; leerLen&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;                   &lt;span class="syntax18"&gt;;&lt;/span&gt;nomArchLen&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nomArch&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FByte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;respetando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;criterio&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;grabo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;indica&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;luego&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;indica&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nCod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;luego&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;m&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;indican&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cod,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sube&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;estos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;datos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arr&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; subirArchivoCod&lt;span class="syntax18"&gt;(&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;                            &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arr&lt;span class="syntax18"&gt;:&lt;/span&gt; TArray&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;avanza&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;las&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ramas&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hasta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;llegar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hoja,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asi&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;obtiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;original&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;corresponde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;huffman&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(esta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;provee,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;necesario&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;programarla)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; procesarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arch&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;span class="syntax18"&gt;;&lt;/span&gt; p&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;                         &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; aux&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;                         &lt;span class="syntax18"&gt;;&lt;/span&gt;buffer&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;                         &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; nBytesOri&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nomArchDat&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FByte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;manda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procesar&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procesarBits.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Este&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;utiliza&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procesarBits&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; grabarArchivo&lt;span class="syntax18"&gt;(&lt;/span&gt;p&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt; nomArch&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;                          &lt;span class="syntax18"&gt;,&lt;/span&gt;nomArchDat&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;                          &lt;span class="syntax18"&gt;;&lt;/span&gt;nBytesOri&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;&lt;span class="syntax8"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;La función &lt;span style="font-weight: bold;"&gt;leerLen &lt;/span&gt;y el procedimiento &lt;span style="font-weight: bold;"&gt;subirCod &lt;/span&gt;ya fueron explicados.&lt;br /&gt;&lt;br /&gt;En la línea 26 aparece la definición del procedimiento &lt;span style="font-weight: bold;"&gt;procesarBits&lt;/span&gt; (cuya implementación se provee con el enunciado). Este procedimiento recibe un byte (leido desde el archivo .szzip) y procesa sus bits, bit por bit desplazándose correctamente por el árbol Huffman hasta llegar al caracter codificado en ese byte. Graba el el caracter en el (nuevo) archivo original y (si quedan bits por procesar en el byte) repite la operación hasta agotar los 8 bits.&lt;br /&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;grabarArchivo&lt;/span&gt; (línea 35) debe recorrer el archivo .szzip y por cada byte leido invocar a &lt;span style="font-weight: bold;"&gt;procesarBits&lt;/span&gt; para que recorra el árbol y recupere (y grabe) el caracter decodificado en el archivo original.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo.html"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDXNU27ufQI/AAAAAAAAB6M/G-YhOA6MuJE/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5203290702723579138" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;............................................. &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/untszpas.html"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDW-Lm7ufOI/AAAAAAAAB58/3k0l_3FfXHo/s400/siguiente.gif" alt="" id="BLOGGER_PHOTO_ID_5203274051135372514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-1242212912034108533?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/1242212912034108533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/1242212912034108533'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo-2.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_X1IHMrfIpE8/SDXNU27ufQI/AAAAAAAAB6M/G-YhOA6MuJE/s72-c/volver.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-2199430356495796965</id><published>2008-05-19T20:51:00.032-03:00</published><updated>2010-10-25T08:05:51.608-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Metodología de Trabajo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La implementación del algoritmo puede resultar verdaderamente compleja. Excede por mucho el alcance definido para una materia como "Programación I" o "Algoritmos Y Estructuras de Datos I".&lt;br /&gt;&lt;br /&gt;Sin embargo, considero que el alumno puede ser capáz de programar pequeñas funciones y procedimientos con un nivel creciente de complejidad de forma tal que las funciones más simples faciliten el desarrollo del código de las funciones más complejas, y así hasta lograr un programa principal simple, claro y prolijo.&lt;br /&gt;&lt;br /&gt;Por esto, el trabajo práctico consiste en desarrollar una serie de funciones con las cuales se podrá compilar el programa principal que se provee como parte del enunciado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Archivos que se Adjuntan &lt;/span&gt;&lt;span&gt;(descargar)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;szzip.pas - Programa principal del compresor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;untSzzip.pas - Librería de funciones del compresor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;szunzip.pas - Programa principal del descompresor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;untSzunzip.pas - Librería de funciones del descompresor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;untSz.pas - Librería de funciones y tipos de datos comunes&lt;/li&gt;&lt;li&gt;testUntSz.pas - Programa para testear la unit untSz.pas&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis del Compactador&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El siguiente código corresponde al programa principal del compactador.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;szzip.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;uses&lt;/span&gt; untSz&lt;span class="syntax18"&gt;,&lt;/span&gt;untSzzip&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   arch&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   p&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   cod&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   nCod&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   i&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   nomArch&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   nSize&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; paramCount&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;&amp;gt;&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;      nomArch&lt;span class="syntax18"&gt;:=&lt;/span&gt;paramStr&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;      write&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;ERROR:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;Debe&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;especificar&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;el&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;archivo&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;a&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;comprimir&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;      writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;USAGE:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;szzip&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;nombreArchivo&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;      exit&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;abro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;vamos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comprimir&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   assign&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   reset&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inicializo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;   inicializarArray&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cuento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;las&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ocurrencias&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   nSize&lt;span class="syntax18"&gt;:=&lt;/span&gt;contarOcurrencias&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;,&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;grabo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   grabarArchivoLen&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_LEN&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;creo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ordenada&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;   p&lt;span class="syntax18"&gt;:=&lt;/span&gt;crearLista&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt;mostrarLista(p);&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;crea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;partir&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;   listaToArbol&lt;span class="syntax18"&gt;(&lt;/span&gt;p&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;generando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asignar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;   setCeros&lt;span class="syntax18"&gt;(&lt;/span&gt;cod&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;   nCod&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  47:&lt;/span&gt;   generarCodigos&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;,&lt;/span&gt; p&lt;span class="syntax18"&gt;,&lt;/span&gt; cod&lt;span class="syntax18"&gt;,&lt;/span&gt; nCod&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  48:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  49:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;graba&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigos,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  50:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo...&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  51:&lt;/span&gt;   grabarArchivoCod&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_COD&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  52:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  53:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;reseteo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;volver&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leerlo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  54:&lt;/span&gt;   reset&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  55:&lt;/span&gt;   grabarArchivoDat&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;,&lt;/span&gt;arch&lt;span class="syntax18"&gt;,&lt;/span&gt;nomArch&lt;span class="syntax18"&gt;+&lt;/span&gt;EXTENSION_DAT&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  56:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  57:&lt;/span&gt;   close&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  58:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  59:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Lo primero que hacemos (línea 15) es verificar si nos están pasando como &lt;a href="http://holamundopascal.blogspot.com/2007/08/capitulo-3.html#acommandline"&gt;argumento en línea de comandos&lt;/a&gt; el nombre del archivo que tenemos que comprimir. Si no nos pasan este valor entonces mostramos un mensaje de error y una sugerencia sobre como se debe utilizar el programa.&lt;br /&gt;&lt;br /&gt;En línea de comandos nos pasan el nombre del archivo a comprimir. Recordemos que tenemos que recorrerlo una vez para contar la cantidad de ocurrencias de cada caracter y luego recorrerlo por segunda vez para reemplazar cada caracter por su códificación Huffman correspondiente.&lt;br /&gt;&lt;br /&gt;Tenemos un array (&lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt;) de registros &lt;span style="font-weight: bold;"&gt;RArray&lt;/span&gt; en el que vamos a contar las ocurrencias de los diferentes caracteres del archivo. El array es de 0 a 255 posiciones y utilizaremos el mismo código ASCII del caracter como índice de acceso al array. En la línea 29 invocamos a la función &lt;span style="font-weight: bold;"&gt;inicializarArray&lt;/span&gt; para asignar cero al campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; de cada &lt;span style="font-weight: bold;"&gt;RArray &lt;/span&gt;y setear ceros en  el campo &lt;span style="font-weight: bold;"&gt;cod&lt;/span&gt; (recordemos que es de tipo &lt;span style="font-weight: bold;"&gt;T16b&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;La función &lt;span style="font-weight: bold;"&gt;contarOcurrencias&lt;/span&gt; (línea 32) recorre el archivo para contar cuantas veces aparece cada caracter, incrementa el campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; de los registros del array y retorna la cantidad total de caracteres leidos. Es decir: retorna el size (en bytes) del archivo que estamos procesando.&lt;br /&gt;&lt;br /&gt;El objetivo de este trabajo práctico es entender e implementar una solución que permita comprimir y descomprimir archivos en base a la codificación Huffman. Para evitar que el alumno tenga que entrar en cuestiones y detalles ajenos a esto optamos por generar tres archivos de salida que contendrán la tabla de ocurrencias, los códigos Huffman y la información (codificada) contenida en el archivo original.&lt;br /&gt;&lt;br /&gt;Por ejemplo: si el archivo que vamos a comprimir es &lt;span style="font-weight: bold;"&gt;dibujo.bmp&lt;/span&gt; entonces, luego de correr el compresor (szzip.exe) tendremos los siguientes archivos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dibujo.bmp.szlen - Contiene registros &lt;span style="font-weight: bold;"&gt;RLen &lt;/span&gt;con la cantidad de ocurrencias de cada caracter.&lt;/li&gt;&lt;li&gt;dibujo.bmp.szcod - Contiene la codificación Huffman asignada a cada caracter.&lt;/li&gt;&lt;li&gt;dibujo.bmp.szzip - Contiene la información de dibujo.bmp codificada.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En la línea 35 invocamos al procedimiento &lt;span style="font-weight: bold;"&gt;grabarArchivoLen&lt;/span&gt; que recibe el array y el nombre del archivo que va a generar. Recordemos que en &lt;span style="font-weight: bold;"&gt;nomArch&lt;/span&gt; tenemos el nombre del archivo original (en nuestro ejemplo es "dibujo.bmp") entonces la expresión:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;nomArch+EXTENSION_LEN&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;será la concatenación de "dibujo.bmp" más ".szlen" (veremos más adelante que &lt;span style="font-weight: bold;"&gt;EXTENSION_LEN&lt;/span&gt; es una constante definida en untSz.pas que contiene el string ".szlen").&lt;br /&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;grabarArchivoLen&lt;/span&gt; recibe el array y el nombre del archivo a generar. Simplemente debe recorrer el array y para cada caracter que tenga al menos una ocurrencia en el archivo generamos un registro &lt;span style="font-weight: bold;"&gt;RLen &lt;/span&gt;y lo grabamos en el archivo de salida.&lt;br /&gt;&lt;br /&gt;El archivo .szlen contendrá la cantidad de ocurrencias de cada caracter contenido en el archivo original.&lt;br /&gt;&lt;br /&gt;En la línea 38 invocamos a la función &lt;span style="font-weight: bold;"&gt;crearLista&lt;/span&gt; que recibe el array y retorna un puntero al primer nodo de una lista enlazada cuyos nodos serán del tipo &lt;span style="font-weight: bold;"&gt;Nodo&lt;/span&gt;. La lista resultante estará ordenada ascendentemente por cantidad de ocurrencias y por código ASCII del caracter.&lt;br /&gt;&lt;br /&gt;En la línea 41, el procedimiento &lt;span style="font-weight: bold;"&gt;listaToArbol&lt;/span&gt; "convierte" la lista en un árbol según se explicó anteriormente de forma tal que (ahora) p apunta a la raíz del árbol Huffman.&lt;br /&gt;&lt;br /&gt;En la línea 47 el procedimiento &lt;span style="font-weight: bold;"&gt;generarCodigos&lt;/span&gt; (se provee con el enunciado en untSzzip.pas) recorre el árbol apuntado por &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; y asigna en los campos &lt;span style="font-weight: bold;"&gt;cod&lt;/span&gt; del array los códigos Huffman correspondientes.&lt;br /&gt;&lt;br /&gt;Con los códigos Huffman generados solo queda grabarlos en un archivo con extensión .szcod (línea 51) y luego codificar y la información y grabarla codificada en un archivo con extensión .szzip (línea 55).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Todas las funciones y procedimientos que utilizamos en szzip.pas están definidas e implementadas en la &lt;span style="font-weight: bold;"&gt;unit&lt;/span&gt; untSzzip.pas que analizaremos a continuación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;untSzzip.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;unit&lt;/span&gt; untSzzip&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;span class="syntax8"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax8"&gt;uses&lt;/span&gt; math&lt;span class="syntax18"&gt;,&lt;/span&gt; untSz&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DEFINICION&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;DE&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FUNCIONES&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;-----------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;elemento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; inicializarArray&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;utilizando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;acceder&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;directo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;corresponda&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;e&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;incrementar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contador&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(ubicado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;dicha&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cantidad&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leidos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; contarOcurrencias&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arch&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;                              &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;graba&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FLen&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;RLen&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cuyo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; grabarArchivoLen&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;                             &lt;span class="syntax18"&gt;;&lt;/span&gt;nomArchLen&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inserta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;respetando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;orden&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ascendente&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hay&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;igual&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ASCII&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; insertarOrdEnLista&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; lst&lt;span class="syntax18"&gt;,&lt;/span&gt; ndo&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;crea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asignando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;representado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;valor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;dicha&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Crea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ordenada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;menor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;primer&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(utilizar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;insertarOrdEnLista)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; crearLista&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(hasta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ahora)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;primer&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  47:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;e&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;incrementa&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lst&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  48:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;haciendo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;apunte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;segundo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  49:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;unico&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  50:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;este&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  51:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hace&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lst&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;apunte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;NIL&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  52:&lt;/span&gt;   &lt;span class="syntax8"&gt;function&lt;/span&gt; sacarPrimerNodo&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; lst&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  53:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  54:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;esta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ordenada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;menor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  55:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mayor&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;campo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;toma&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;dos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;primeros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  56:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodos,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;crea&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nuevo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  57:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n1^.1+n2^.n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;c&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;=&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;255.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Como&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;der.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  58:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nuevo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;como&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izq&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  59:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n2.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Luego&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;inserta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ordenado&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nuevo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  60:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  61:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(utiliza&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sacarPrimerNodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  62:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;insertarOrdEnLista)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  63:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; listaToArbol&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; p&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  64:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  65:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;generando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;le&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  66:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;corresponde&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hoja&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cuando&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;llega&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  67:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt;hoja&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asigna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;longitud&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  68:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;este&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;provee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;completo,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  69:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;necesario&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desarrollarlo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  70:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; generarCodigos&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;br /&gt;&lt;span class="gutter"&gt;  71:&lt;/span&gt;                           &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; p&lt;span class="syntax18"&gt;:&lt;/span&gt;PNodo&lt;br /&gt;&lt;span class="gutter"&gt;  72:&lt;/span&gt;                           &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; cod&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;span class="syntax18"&gt;;&lt;/span&gt; nCod&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  73:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  74:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;genera&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FByte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;informacion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  75:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;contenida&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array,de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;siguiente&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;manera:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  76:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;posicion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&amp;gt;0&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;graba&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  77:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ASCII&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  78:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;1&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nCod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  79:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;n&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;primeros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;significativos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  80:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ejemplo:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nCod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;5&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  81:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;unico&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;byte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  82:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;significativo,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nCod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;12&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  83:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;2&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;significativos&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  84:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; grabarArchivoCod&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;:&lt;/span&gt;TArray&lt;br /&gt;&lt;span class="gutterH"&gt;  85:&lt;/span&gt;                             &lt;span class="syntax18"&gt;;&lt;/span&gt;nomArchCod&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  86:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  87:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;este&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;provee&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;completo,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  88:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;necesario&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;desarrollarlo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  89:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; grabarBits&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; archDat&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;span class="syntax18"&gt;;&lt;/span&gt; cod&lt;span class="syntax18"&gt;:&lt;/span&gt;T16b&lt;br /&gt;&lt;span class="gutterH"&gt;  90:&lt;/span&gt;                       &lt;span class="syntax18"&gt;;&lt;/span&gt;nCod&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax8"&gt;var&lt;/span&gt; buffer&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  91:&lt;/span&gt;                       &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; tamBuff&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  92:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  93:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arch&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ya&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;viene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  94:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;reseteado),&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;abre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cuyo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nombre&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  95:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nomArchDat&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;FByte&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recorrer&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arch.&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  96:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;Por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leido&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;busca&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;su&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  97:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cod&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;e&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;invoca&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;grabarBits&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  98:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ocupe&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;grabar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  99:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bufferizando&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 100:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(utiliza&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;grabarBits)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 101:&lt;/span&gt;   &lt;span class="syntax8"&gt;procedure&lt;/span&gt; grabarArchivoDat&lt;span class="syntax18"&gt;(&lt;/span&gt;arr&lt;span class="syntax18"&gt;:&lt;/span&gt; TArray&lt;br /&gt;&lt;span class="gutter"&gt; 102:&lt;/span&gt;                             &lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arch&lt;span class="syntax18"&gt;:&lt;/span&gt;FByte&lt;br /&gt;&lt;span class="gutter"&gt; 103:&lt;/span&gt;                             &lt;span class="syntax18"&gt;;&lt;/span&gt;nomArchDat&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 104:&lt;/span&gt;&lt;span class="syntax18"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 105:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 106:&lt;/span&gt;&lt;span class="syntax8"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 107:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 108:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 109:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt; 110:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 111:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 112:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 113:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;inicializarArray&lt;/span&gt; (línea 13) simplemente debe recorrer el array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt; y asignar cero al campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; ya que luego, cuando contemos las ocurrencias de los caracteres, solo consideraremos aquellas posiciones del array cuyo campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; sea mayor que cero.&lt;br /&gt;&lt;br /&gt;La función &lt;span style="font-weight: bold;"&gt;contarOcurrencias&lt;/span&gt; (línea 21) debe recorrer el archivo &lt;span style="font-weight: bold;"&gt;arch&lt;/span&gt; y por cada byte leido acceder al array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt; para incrementar su campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;. Esta función debe retornar la cantidad de bytes leidos del archivo que, como leerá el archivo completo, coincide con el tamaño del archivo expresado en bytes.&lt;br /&gt;&lt;br /&gt;Como ya mencionamos, para realizar la codificación y (sobre todo) para poderla decodificar será necesario almacenar además la cantidad de ocurrencias de cada caracter. Esto lo haremos en un archivo separado cuya extensión será ".szlen" (se definió arbitrareamente).&lt;br /&gt;&lt;br /&gt;El archivo .szlen debe ser un archivo de registros &lt;span style="font-weight: bold;"&gt;RLen &lt;/span&gt;y debe contener un registro por cada caracter diferente contenido en el archivo que estamos procesando (o comprimiendo).  Según lo analizado más arriba esto lo podemos distinguir facilmente porque serán aquellos caracteres cuyo campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; en el array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt; será igual a cero. Este trabajo lo realiza el procedimiento &lt;span style="font-weight: bold;"&gt;grabarArchivoLen&lt;/span&gt; (línea 27).&lt;br /&gt;&lt;br /&gt;En las líneas 33 y 44 definimos los procedimientos &lt;span style="font-weight: bold;"&gt;insertarOrdenadoEnLista&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;crearLista&lt;/span&gt; con los cuales crearemos una lista enlazada de nodos tipo &lt;span style="font-weight: bold;"&gt;Nodo&lt;/span&gt; con la información contenida en el array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt;. La idea es: en &lt;span style="font-weight: bold;"&gt;crearLista&lt;/span&gt; recorrer el array &lt;span style="font-weight: bold;"&gt;arr&lt;/span&gt; y por cada caracter cuyo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; sea mayor que cero invocar a &lt;span style="font-weight: bold;"&gt;insertarOrdenadoEnLista&lt;/span&gt; para que inserte en la lista un nodo en representación de ese caracter.&lt;br /&gt;&lt;br /&gt;En la línea 52 la función &lt;span style="font-weight: bold;"&gt;sacarPrimerNodo&lt;/span&gt; "desenlaza" y retorna un puntero al primer nodo de la lista que, como es una lista ordenada ascendentemente por cantidad de ocurrencias y por código ASCII, será el nodo correspondiente al caracter menos ocurrente. La función desenlaza el nodo pero no lo libera (no le hace &lt;span style="font-weight: bold;"&gt;dispose&lt;/span&gt;) ya que ese mismo nodo pasará a ser una hoja del árbol Huffman que crearemos con el siguiente procedimiento.&lt;br /&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;listaToArbol &lt;/span&gt;(línea 63) debe recorrer la lista mientras &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; (primer nodo de la lista) no tenga siguiente elemento. Por cada iteración sacamos el primer nodo de la lista, y luego volvemos a sacar el primer nodo de la lista (tenemos los dos menos ocurrentes). Creamos un nuevo nodo con &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; = a la suma de los &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; de los dos nodos que sacamos, asignamos cualquier valor a &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt; y colocamos los dos nodos que sacamos de la lista como hijos derecho y izquierdo. Luego invocamos al procedimiento &lt;span style="font-weight: bold;"&gt;insertarOrdenado &lt;/span&gt;para que inserte el nuevo nodo (que ya es un pequeño árbol binario) en la lista.&lt;br /&gt;&lt;br /&gt;En la línea 70 se define el procedimiento &lt;span style="font-weight: bold;"&gt;generarCodigos&lt;/span&gt;. Este procedimiento se provee completo y, dada su complejidad, no se espera que lo desarrolle el alumno.&lt;br /&gt;&lt;br /&gt;Basicamente se trata de un recorrido en orden inverso sobre el árbol "acumulando" unos o ceros en cada llamada recursiva, según se esté accediendo al hijo derecho o izquierdo respectivamente.&lt;br /&gt;&lt;br /&gt;En la línea 84 se define el procedimiento &lt;span style="font-weight: bold;"&gt;generarArchivoCod&lt;/span&gt;. Este procedimiento debe generar el archivo que contiene los códigos Huffman que (a través del árbol) asignamos a cada caracter. El archivo tendrá extensión ".szcod" y será un archivo de bytes (tipo &lt;span style="font-weight: bold;"&gt;FByte&lt;/span&gt;) con la siguiente estructura: por cada caracter con &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; mayor que cero grabaremos 1 byte con el caracter, 1 byte con su &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;m&lt;/span&gt; bytes para grabar el código Huffman asociado al caracter. Recordemos que este código puede tener (en el peor de los casos) hasta 16 bytes. El valor &lt;span style="font-style: italic;"&gt;m&lt;/span&gt; lo calculamos dividiendo el &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; del código del caracter por 8.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;m&lt;/span&gt; = &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;div &lt;/span&gt;8 + 1&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Es decir: si &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;es 6 (seis bits) entonces &lt;span style="font-weight: bold;"&gt;nCod div &lt;/span&gt;8 será cero, más 1 será 1: utilizamos solo un byte para almacenar ese &lt;span style="font-weight: bold;"&gt;cod&lt;/span&gt;. Pero si &lt;span style="font-weight: bold;"&gt;nCod&lt;/span&gt; es 14 entonces &lt;span style="font-weight: bold;"&gt;nCod div &lt;/span&gt;8 será 1, más 1 es 2. Para almacenar un código de longitud 14 necesitaremos utilizar 2 bytes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://holamundopascal.blogspot.com/2008/05/implementacion-huffman.html"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDXN727ufRI/AAAAAAAAB6U/XuKCbATxpW0/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5203291372738477330" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;............................................ &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo-2.html"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDSIBA_x_2I/AAAAAAAAB50/6Kbt5xsR868/s400/siguiente.gif" alt="" id="BLOGGER_PHOTO_ID_5202933020548530018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-2199430356495796965?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2199430356495796965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2199430356495796965'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_X1IHMrfIpE8/SDXN727ufRI/AAAAAAAAB6U/XuKCbATxpW0/s72-c/volver.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-5869651518539083509</id><published>2008-05-19T19:46:00.019-03:00</published><updated>2008-05-27T12:13:34.422-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Implementación Del Algoritmo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Entrategia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La estrategia que proponemos para implementar un compresor (y luego un descompresor) de archivos basado en el algoritmo de Huffman es la siguiente.&lt;br /&gt;&lt;br /&gt;1 - Recorrer el archivo que vamos a comprimir y contar cuantas veces aparece cada caracter. Utilizaremos un array de 0 a 255 posiciones ya que cada caracter (o mejor dicho cada byte) que leamos seguro estará dentro de ese rango.&lt;br /&gt;&lt;br /&gt;2 - Crearemos (a partir del array del paso 1) una lista enlazada, ordenada por la cantidad de ocurrencias y (si es necesario) por el código ASCII del caracter (en caso de que existan caracteres con la misma probabilidad de ocurrencia).&lt;br /&gt;&lt;br /&gt;3 - Procesaremos la lista para obtener el árbol Hufman.&lt;br /&gt;&lt;br /&gt;4 - Procesamos el árbol para obtener los códigos Hufman y los &lt;span style="font-weight: bold;"&gt;nCod &lt;/span&gt;de los caracteres que componen el archivo que queremos comprimir. Los asignamos en el array.&lt;br /&gt;&lt;br /&gt;5 - Volvemos a recorrer el archivo y escribimos en un nuevo archivo el código Hufman que reemplaza a cada caracter leido.&lt;br /&gt;&lt;br /&gt;En si, la estrategia parece simple. De hecho es bastante lógica, pero lamentablemente nos encontraremos con algunas dificultades que le darán condimento a la resolución de este trabajo práctico.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Estructuras de Datos y Sección type&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;16&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;usaremos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;almacenar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;huffman&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hasta&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bits&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   T16b &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;array&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax5"&gt;15&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   RArray &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cantidad&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ocurrencias&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      cod&lt;span class="syntax18"&gt;:&lt;/span&gt; T16b&lt;span class="syntax18"&gt;;&lt;/span&gt;  &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;huffman&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(max&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bits)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      nCod&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;longitud&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;codigo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(max&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;128)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;array&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   TArray &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;array&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;span class="syntax5"&gt;255&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RArray&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;En este fragmento de la sección &lt;span style="font-weight: bold;"&gt;type&lt;/span&gt; vemos el registro &lt;span style="font-weight: bold;"&gt;RArray&lt;/span&gt; y el tipo &lt;span style="font-weight: bold;"&gt;TArray&lt;/span&gt;. Este es el tipo que define el array que utilizaremos como tabla para contar las ocurrencias de cada caracter y (luego) asignar el código Huffman y su longitud asociado a cada caracter.&lt;br /&gt;&lt;br /&gt;Notemos que no necesitamos un campo para almacenar el caracter en si ya que utilizaremos la posición del array como código ASCII del caracter. Es decir: si tenemos que codificar una "A" utilizaremos la posición 65 del array. Si tenemos que codificar una "C" utilizaremos la posición 67, y así.&lt;br /&gt;&lt;br /&gt;Aquí aparece el primer problema:&lt;br /&gt;&lt;br /&gt;El árbol Huffman puede tener a lo sumo: (&lt;span style="font-style: italic;"&gt;n&lt;/span&gt;+1)/2 niveles siendo &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; la cantidad de símbolos que pueden aparecer en el archivo. Como estamos considerando todos los caracteres (desde 0 hasta 255) resulta que (en el peor de los casos) el árbol Huffman podrá llegar a tener &lt;span style="font-weight: bold;"&gt;128 niveles&lt;/span&gt;. Es decir: podremos llegar a tener un código de hasta &lt;span style="font-weight: bold;"&gt;128 bits&lt;/span&gt; (o &lt;span style="font-weight: bold;"&gt;16 bytes&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Si el código más largo fuese de (por ejemplo) 8 bits entonces podríamos utilizar un tipo de datos &lt;span style="font-weight: bold;"&gt;byte &lt;/span&gt;para almacenarlo. Si fuese de 16 bits podríamos utilizar un tipo &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt;. Pero no existe ningún tipo entero de 16 bytes así que lo tendremos que "inventar". Lo llamamos &lt;span style="font-weight: bold;"&gt;T16b&lt;/span&gt; (tipo de 16 bytes) y lo implementamos sobre un array de 16 bytes (numerados de 0 a 15).&lt;br /&gt;&lt;br /&gt;Veamos ahora el tipo para definir el nodo con el que implementaremos la lista enlazada y luego el árbol de Huffman.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;   PNodo &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax18"&gt;^&lt;/span&gt;Nodo&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; n&lt;/span&gt;&lt;span class="syntax2"&gt;odo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;con&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;que&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;implementaremos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;lista&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;enlazada&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(luego)&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;arbol&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;huffman&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   Nodo &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      c&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;       &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;caracter&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;       &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cantidad&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ocurrencias&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;      izq&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;izquierdo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;      der&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;derecho&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;      sig&lt;span class="syntax18"&gt;:&lt;/span&gt; PNodo&lt;span class="syntax18"&gt;;&lt;/span&gt;    &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;al&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;siguiente&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Como vemos el mismo nodo nos servirá para las dos estructuras. Por eso tiene los campos &lt;span style="font-weight: bold;"&gt;izq &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;der &lt;/span&gt;(para implementar el árbol binario) y el campo &lt;span style="font-weight: bold;"&gt;sig &lt;/span&gt;(para implementar la lista enlazada).&lt;br /&gt;&lt;br /&gt;Notemos que el campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; lo definimos de tipo &lt;span style="font-weight: bold;"&gt;comp&lt;/span&gt;. Esto se debe a que (como ya vimos) el nodo raíz del árbol tendrá una probabilidad de ocurrencia igual a la cantidad de caracteres del archivo que estemos procesando por lo tanto, si el archivo fuese muy grande (por ejemplo 100 MB) el campo &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; deberá soportar un valor de 1*1024*1024*100 = 1024 a la 2 por 100 = 104.857.600.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solo queda por definir los tipos para los archivos que utilizaremos:&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;(lo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;analizaremos&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mas&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;adelante)&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   RLen &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;      c&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;      n&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;comp&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;len&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   FLen &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RLen&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tipo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comprimir&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;comprimido:&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;simplemente&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;bytes&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   FByte &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; &lt;span class="syntax10"&gt;byte&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Los tipos &lt;span style="font-weight: bold;"&gt;RLen &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;FLen &lt;/span&gt;los analizaremos más adelante, cuando sea necesario. El tipo &lt;span style="font-weight: bold;"&gt;FByte &lt;/span&gt;representa un &lt;span style="font-weight: bold;"&gt;archivo de bytes&lt;/span&gt; y nos permitirá leer cualquier tipo de archivo ya que, en definitiva, cualquier archivo no es más que una sucesión de bytes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://holamundopascal.blogspot.com/2008/05/tp-compresor-huffman.html"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDXOc27ufSI/AAAAAAAAB6c/FhcXxU5yZ1Y/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5203291939674160418" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.........................,................... &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/metodologia-de-trabajo.html"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDIRkA_x_0I/AAAAAAAAB5k/4yAGGlzCfW8/s400/siguiente.gif" alt="" id="BLOGGER_PHOTO_ID_5202239830006824770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-5869651518539083509?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/5869651518539083509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/5869651518539083509'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/implementacion-huffman.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_X1IHMrfIpE8/SDXOc27ufSI/AAAAAAAAB6c/FhcXxU5yZ1Y/s72-c/volver.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-6553193059938905332</id><published>2008-05-19T18:12:00.025-03:00</published><updated>2008-05-27T11:59:24.781-03:00</updated><title type='text'>TP - Compresor Huffman</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo Completo de Codificación Huffman&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Recordemos la frase que vamos a codificar:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;COMO COME COCORITO COME COMO COSMONAUTA&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Luego de contar la cantidad de ocurrencias de cada caracter creamos una lista ordenada de menor a mayor por cantidad de ocurrencias y por código ASCII como vemos a continuación:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDHt3w_x_bI/AAAAAAAAB2c/xHynT7tXolQ/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDHt3w_x_bI/AAAAAAAAB2c/xHynT7tXolQ/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5202200586890640818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En la lista vemos que si bien los caracteres I, N, R, S y U tiene una probabilidad de ocurrencia igual a 1, el orden en que fueron insertados respeta su código ASCII (que además coincide con el orden alfabético)&lt;br /&gt;&lt;br /&gt;Con la lista armada,  procesamos (e insertamos) los nodos I(1) y N(1):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDHvJg_x_cI/AAAAAAAAB2k/Vc7C_4NtPM8/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDHvJg_x_cI/AAAAAAAAB2k/Vc7C_4NtPM8/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5202201991344946626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Procesamos (e insertamos) los nodos R(1) y S(1):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SDHv6A_x_eI/AAAAAAAAB20/iEiqaTl8U24/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDHv6A_x_eI/AAAAAAAAB20/iEiqaTl8U24/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5202202824568602082" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Ahora procesamos U(1) y A(2):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDHwVw_x_fI/AAAAAAAAB28/S3QKFaF0mvc/s1600-h/4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDHwVw_x_fI/AAAAAAAAB28/S3QKFaF0mvc/s400/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5202203301309971954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora E(2) y T(2):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDHwog_x_gI/AAAAAAAAB3E/_Ztph-JzxfQ/s1600-h/5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDHwog_x_gI/AAAAAAAAB3E/_Ztph-JzxfQ/s400/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5202203623432519170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora *1(2) y *2(2):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDHxCw_x_hI/AAAAAAAAB3M/0Ld2EwB_LEw/s1600-h/6.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDHxCw_x_hI/AAAAAAAAB3M/0Ld2EwB_LEw/s400/6.jpg" alt="" id="BLOGGER_PHOTO_ID_5202204074404085266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora *3(3) y *4(4):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SDHxdA_x_iI/AAAAAAAAB3U/fVa_4OnwGHk/s1600-h/7.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SDHxdA_x_iI/AAAAAAAAB3U/fVa_4OnwGHk/s400/7.jpg" alt="" id="BLOGGER_PHOTO_ID_5202204525375651362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Procesamos *5(4) y ESP(5):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDHxyw_x_jI/AAAAAAAAB3c/jp2b7ZaZczo/s1600-h/8.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDHxyw_x_jI/AAAAAAAAB3c/jp2b7ZaZczo/s400/8.jpg" alt="" id="BLOGGER_PHOTO_ID_5202204899037806130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora será: M(5) y C(7):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SDHyFw_x_kI/AAAAAAAAB3k/fXv7NhKofq8/s1600-h/9.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SDHyFw_x_kI/AAAAAAAAB3k/fXv7NhKofq8/s400/9.jpg" alt="" id="BLOGGER_PHOTO_ID_5202205225455320642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Procesamos *6(7) y *7(9):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SDHyhQ_x_lI/AAAAAAAAB3s/5sg2sUaRNTY/s1600-h/10.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDHyhQ_x_lI/AAAAAAAAB3s/5sg2sUaRNTY/s400/10.jpg" alt="" id="BLOGGER_PHOTO_ID_5202205697901723218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Ahora será O(11) y *8(12):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SDHy5Q_x_mI/AAAAAAAAB30/wwJmujb_Gqg/s1600-h/11.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDHy5Q_x_mI/AAAAAAAAB30/wwJmujb_Gqg/s400/11.jpg" alt="" id="BLOGGER_PHOTO_ID_5202206110218583650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Por último procesamos *9(16) y *10(23):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/SDHzLg_x_nI/AAAAAAAAB38/wtDp0bCtUGs/s1600-h/12.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/SDHzLg_x_nI/AAAAAAAAB38/wtDp0bCtUGs/s400/12.jpg" alt="" id="BLOGGER_PHOTO_ID_5202206423751196274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holamundopascal.blogspot.com/2008/05/tp-compresor-huffman.html"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SDHzoQ_x_oI/AAAAAAAAB4E/ZJYnYIiIVCw/s400/volver.gif" alt="" id="BLOGGER_PHOTO_ID_5202206917672435330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-6553193059938905332?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/6553193059938905332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/6553193059938905332'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/arbol-huffman-completo.html' title='TP - Compresor Huffman'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_X1IHMrfIpE8/SDHt3w_x_bI/AAAAAAAAB2c/xHynT7tXolQ/s72-c/1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-2639167716677591916</id><published>2008-05-01T11:20:00.016-03:00</published><updated>2008-05-02T16:38:18.180-03:00</updated><title type='text'>Problema 8.3</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enunciado&lt;/span&gt;&lt;br /&gt;Una empresa con estructura "piramidal" requiere un programa que le permita procesar la liquidación de comisiones originadas por las ventas que realizaron los diferentes socios. Para esto cuenta con los siguientes archivos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SOCIOS.dat&lt;/span&gt; (ordenado por &lt;span style="font-weight: bold;"&gt;fechaIngreso&lt;/span&gt;)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;idSocio - 8 dígitos&lt;/li&gt;&lt;li&gt;nombre - string[30]&lt;/li&gt;&lt;li&gt;idSocioRef - 8 dígitos&lt;/li&gt;&lt;li&gt;fechaIngreso - ddmmaaaa&lt;/li&gt;&lt;li&gt;ultLiq - single (importe de la última liquidación)&lt;/li&gt;&lt;li&gt;acumLiq - double (acumulado de liquidaciones)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Este archivo contiene la información de los socios (vendedores) de la empresa. Cada socio fue referido (o reclutado) por otro socio. Esto lo refleja el campo &lt;span style="font-weight: bold;"&gt;idSocioRef&lt;/span&gt;. El "primer" socio (el presidente de la empresa) tendrá un &lt;span style="font-weight: bold;"&gt;idSocioRef &lt;/span&gt;con valor &lt;span style="font-weight: bold;"&gt;-1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VENTAS.dat&lt;/span&gt; (sin orden)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;idSocio&lt;/li&gt;&lt;li&gt;importe&lt;/li&gt;&lt;/ul&gt;Este archivo contiene el importe acumulado en el mes por las ventas de cada socio.&lt;br /&gt;&lt;br /&gt;La política de liquidación por ventas que aplica la empresa es la siguiente: a cada socio le corresponde el 70% de sus ventas. Del 30% restante, el 70% le corresponde al socio que lo refirió y el 30% le corresponde al que refirió al que lo refirió, y así sucesivamente.&lt;br /&gt;&lt;br /&gt;Se pide desarrollar un programa que:&lt;br /&gt;&lt;br /&gt;1 - Imprima un listado ordenado por &lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt; indicando su nombre, fecha de ingreso, liquidación anterior, última liquidación (la actual), porcentaje de incremento/decremento y total acumulado desde su ingreso.&lt;br /&gt;&lt;br /&gt;2 - Actualice el archivo SOCIOS.dat actualizando los valores de los campos &lt;span style="font-weight: bold;"&gt;ultLiq&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;acumLiq&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;Antes de comenzar vamos a plantear un ejemplo de como se deben liquidar las comisiones por ventas.&lt;br /&gt;&lt;br /&gt;El siguiente gráfico representa un ejemplo de la estructura piramidal de la empresa.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SBnV1Ab5AlI/AAAAAAAABz8/ZDhx6t9nTIY/s1600-h/referidos.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SBnV1Ab5AlI/AAAAAAAABz8/ZDhx6t9nTIY/s400/referidos.jpg" alt="" id="BLOGGER_PHOTO_ID_5195418751775343186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;En este ejemplo vemos que Pablo, Marcos y Ana son referidos de Juan. Pedro y Martín son referidos de Pablo y José es referido de Ana. Marcos, Pedro, Martín y José no refirieron a ningún socio (no trajeron nuevos vendedores a la empresa).&lt;br /&gt;&lt;br /&gt;Ahora supongamos que las ventas del mes fueron las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pedro: $300&lt;/li&gt;&lt;li&gt;Martín: $500&lt;/li&gt;&lt;li&gt;José: $250&lt;/li&gt;&lt;li&gt;Pablo: $600&lt;/li&gt;&lt;li&gt;Marcos: $100&lt;/li&gt;&lt;li&gt;Ana: $250&lt;/li&gt;&lt;li&gt;Juan: $200&lt;/li&gt;&lt;/ul&gt;Entonces:&lt;br /&gt;&lt;br /&gt;De los $300 de Pedro $210 (el 70%) le corresponden a él. De los $90 restantes $63 (el 70%) le correspondes a Pablo y los $27 restantes le corresponden a Juan.&lt;br /&gt;&lt;br /&gt;De los $500 de Martín $350 serán para él. De los $150 restantesn $105 serán para Pablo y $45 para Juan.&lt;br /&gt;&lt;br /&gt;De los $250 de José solo te tocan a él $175. De los $75 restantes $52.5 serán para Ana y $22.5 serán para Juan.&lt;br /&gt;&lt;br /&gt;De las ventas de Pablo, Marcos y Ana el 70% les corresponde a cada uno de ellos y el 30% le corresponden a Juan.&lt;br /&gt;&lt;br /&gt;A Juan le corresponde el 100% de sus ventas ya que no es referido de nadie. Es "el presidente" de la empresa y, como dice el refrán: "Del pasado hasta el presente la plata es para el presidente".&lt;br /&gt;&lt;br /&gt;Es decir: los ingresos de cada socio (ventas más comisiones) se calculan como el 70% de sus ventas más el 30% de los ingresos de sus referidos directos.&lt;br /&gt;&lt;br /&gt;Luego de este análisis podemos plantear la estrategia y las estructuras de datos para resolver el problema de manera óptima.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La estrategia con la que resolveremos el problema será la siguiente:&lt;br /&gt;&lt;br /&gt;1 - Indexar el archivo SOCIOS.dat en un árbol binario de búsqueda (ABB) ordenado por &lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt; donde cada nodo tendrá la posición del registro en el archivo, un acumulador, el &lt;span style="font-weight: bold;"&gt;idSocioRef  &lt;/span&gt;(idSocio del "padre" o socio que lo refirió y el puntero al los dos hijos (es un árbol binario).&lt;br /&gt;&lt;br /&gt;2 - Recorrer el archivo VENTAS.dat  y por cada registro "hacer la liquidación". Este proceso será recursivo ya que implica buscar en el ABB el nodo que corresponde al socio cuyas ventas estamos procesando, asignarle el 70% del importe y luego "hacer la liquidación" con su &lt;span style="font-weight: bold;"&gt;idSocioRef&lt;/span&gt; (idSocio de su padre) y el 30% restante del importe.&lt;br /&gt;&lt;br /&gt;3 - Luego de procesar las ventas (punto 2) recorrer el ABB con un recorrido de Orden Inverso para "ver" los registros ordenados por &lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt;, acceder directamente a cada registro del archivo de socios y (por cada socio) imprimir una línea del listado ya que (luego de acceder al archivo) tendremos todos los datos que necesitamos mostrar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Nombre, Fecha de Ingreso y Liq. Anterior los obtenemos luego del acceso directo al archivo de socios.&lt;/li&gt;&lt;li&gt;Ultima Liquidación lo tenemos en el campo acumulador del nodo del árbol.&lt;/li&gt;&lt;li&gt;Porcentaje de Incremento/Decremento es una relación entre la última liquidación y la liquidación actual, y&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Total Acumulado desde su Ingreso es el campo &lt;span style="font-weight: bold;"&gt;acumLiq &lt;/span&gt;del archivo de socios más la última liquidación.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Luego de imprimir actualizamos el archivo de socios.&lt;br /&gt;&lt;br /&gt;Con esto podemos plantear la sección &lt;span style="font-weight: bold;"&gt;type&lt;/span&gt; y el programa principal.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;socios&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;   RSocio &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;      idSocio&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;      nombre&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;30&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      idSocioRef&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      fechaIngreso&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;      ultLiq&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;single&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;      acumLiq&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;double&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;socios&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   FSocios &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RSocio&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ventas&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   RVenta &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;      idSocio&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;      importe&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;single&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ventas&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;   FVentas &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RVenta&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nodo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;puntero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;del&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;ABB&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   PArbol &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax18"&gt;^&lt;/span&gt;NArbol&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   NArbol &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;      idSocio&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;      pos&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;      idSocioRef&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;      acum&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;single&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;      izq&lt;span class="syntax18"&gt;:&lt;/span&gt; PArbol&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;      der&lt;span class="syntax18"&gt;:&lt;/span&gt; PArbol&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El programa principal refleja la estrategia planteada y lo vemos a continuación.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SBtm3gb5A0I/AAAAAAAAB10/UNRO40uL1cg/s1600-h/main1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SBtm3gb5A0I/AAAAAAAAB10/UNRO40uL1cg/s400/main1.jpg" alt="" id="BLOGGER_PHOTO_ID_5195859698887754562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SBtm3gb5A1I/AAAAAAAAB18/NKxnpKwCM5k/s1600-h/main2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SBtm3gb5A1I/AAAAAAAAB18/NKxnpKwCM5k/s400/main2.jpg" alt="" id="BLOGGER_PHOTO_ID_5195859698887754578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Como vemos, el programa principal es suficientemente claro. Abrimos los archivos y luego indexamos el archivo de socios con la función &lt;span style="font-weight: bold;"&gt;indexarSocios&lt;/span&gt; que devuelve un puntero a la raíz del ABB. Luego recorremos el archivo de ventas y por cada venta mandamos a "procesar la liquidación".&lt;br /&gt;&lt;br /&gt;Luego el procedimiento &lt;span style="font-weight: bold;"&gt;listarYActualizar &lt;/span&gt;debe recorrer el ABB con un recorrido de orden inverso y por cada nodo acceder directamente al archivo de socios para listar y luego actualizar los importes de la última liquidación y el acumulado.&lt;br /&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;liquidar &lt;/span&gt;recibe el puntero al ABB, el &lt;span style="font-weight: bold;"&gt;idSocio &lt;/span&gt;que estamos liquidando y el importe de sus ventas. Basicamente lo que debe hacer es buscar al socio en el ABB, acumular el 70% de su importe e invocarse recursivamente con el 30% restante y el &lt;span style="font-weight: bold;"&gt;idSocioRef&lt;/span&gt;. Así hasta llegar al socio cuyo &lt;span style="font-weight: bold;"&gt;idSocioRef&lt;/span&gt; es &lt;span style="font-weight: bold;"&gt;-1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SBnnuAb5AoI/AAAAAAAAB0U/mh-jFvYXiq8/s1600-h/liquidar.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SBnnuAb5AoI/AAAAAAAAB0U/mh-jFvYXiq8/s400/liquidar.jpg" alt="" id="BLOGGER_PHOTO_ID_5195438422725558914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;buscarSocio &lt;/span&gt;&lt;span&gt;busca&lt;/span&gt; el &lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt; en el ABB. Lo analizaremos más adelante.&lt;br /&gt;&lt;br /&gt;Siguiendo con el programa principal analizaremos el procedimiento &lt;span style="font-weight: bold;"&gt;listarYActualizar&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SBoUrgb5ApI/AAAAAAAAB0c/yy31C70Sa7k/s1600-h/listarYActualizar_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SBoUrgb5ApI/AAAAAAAAB0c/yy31C70Sa7k/s400/listarYActualizar_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5195487857799135890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SBoUsAb5AqI/AAAAAAAAB0k/cd_T3HaLSR8/s1600-h/listarYActualizar_2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SBoUsAb5AqI/AAAAAAAAB0k/cd_T3HaLSR8/s400/listarYActualizar_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5195487866389070498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Como vemos, este procedimiento simplemente hace un &lt;a href="http://holamundopascal.blogspot.com/2008/03/capitulo-8.html#recorridos"&gt;recorrido de orden inverso&lt;/a&gt; sobre el ABB y por cada nodo invoca al procedimiento &lt;span style="font-weight: bold;"&gt;procesar&lt;/span&gt; quien imprime una línea del listado y luego actualizar el registro del archivo de socios.&lt;br /&gt;&lt;br /&gt;Veamos ahora la función &lt;span style="font-weight: bold;"&gt;indexarSocios&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SBogugb5AtI/AAAAAAAAB08/oBWGLKmT83k/s1600-h/indexar_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SBogugb5AtI/AAAAAAAAB08/oBWGLKmT83k/s400/indexar_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5195501103478276818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;En esta función recorremos el archivo de socios y &lt;a href="http://holamundopascal.blogspot.com/2008/03/capitulo-8.html#abb"&gt;agregamos los datos de cada registro del archivo a un nodo en un ABB&lt;/a&gt;. Para agregar el nodo utilizamos el procedimiento  que desarrollamos a continuación. Este procedimiento recibe la raíz del ABB, el registro con los datos que utilizaremos para completar la información el nodo y la posición (&lt;span style="font-weight: bold;"&gt;pos&lt;/span&gt;) del registro dentro del archivo.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/SBtpkgb5A2I/AAAAAAAAB2E/RuyHldNMsrw/s1600-h/indexar_2a.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/SBtpkgb5A2I/AAAAAAAAB2E/RuyHldNMsrw/s400/indexar_2a.jpg" alt="" id="BLOGGER_PHOTO_ID_5195862671005123426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SBtqSwb5A3I/AAAAAAAAB2M/yW04s2RjW3U/s1600-h/indexar_2b.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/SBtqSwb5A3I/AAAAAAAAB2M/yW04s2RjW3U/s400/indexar_2b.jpg" alt="" id="BLOGGER_PHOTO_ID_5195863465574073202" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Por último, tenemos que desarrollar la función &lt;span style="font-weight: bold;"&gt;buscarSocio&lt;/span&gt; que utilizamos en el procedimiento &lt;span style="font-weight: bold;"&gt;liquidar&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/SBttSQb5A4I/AAAAAAAAB2U/Jmjm0KtR4KE/s1600-h/buscar.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/SBttSQb5A4I/AAAAAAAAB2U/Jmjm0KtR4KE/s400/buscar.jpg" alt="" id="BLOGGER_PHOTO_ID_5195866755519021954" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;La función &lt;span style="font-weight: bold;"&gt;buscarSocio&lt;/span&gt; recibe el puntero al ABB y la clave (&lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt;) por la cual buscar. Recordemos que un ABB (árbol binario de búsqueda) el criterio con el que se almacena la información es el siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;si es menor está a la izquierda&lt;/li&gt;&lt;li&gt;si es mayor está a la derecha&lt;/li&gt;&lt;/ul&gt;Con esta premisa entonces primero preguntamos si el valor que buscamos (&lt;span style="font-weight: bold;"&gt;idSocio&lt;/span&gt;) es menor que el valor del nodo actual (&lt;span style="font-weight: bold;"&gt;p^.idSocio&lt;/span&gt;). Si es así entonces tenemos que repetir la operación considerando al hijo izquierdo del nodo &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; ya que (por definición) si es menor estará ubicado a la izquierda. Si no es menor entonces preguntamos si es mayor. Si es así entonces repetimos la operación pero considerando al hijo derecho de &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt;. Si no entonces será igual y lo que retornamos es el mismo &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;Algoritmos y Estructuras de Datos UTN - UBA&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/SBonXAb5AyI/AAAAAAAAB1k/wSDSLRx1gfc/s1600-h/buscarSocio.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/994832637513226408-2639167716677591916?l=holamundopascal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2639167716677591916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/994832637513226408/posts/default/2639167716677591916'/><link rel='alternate' type='text/html' href='http://holamundopascal.blogspot.com/2008/05/empresa-piramidal.html' title='Problema 8.3'/><author><name>PabloSZ</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_X1IHMrfIpE8/SBnV1Ab5AlI/AAAAAAAABz8/ZDhx6t9nTIY/s72-c/referidos.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-994832637513226408.post-4865879202860919589</id><published>2008-03-04T10:19:00.056-02:00</published><updated>2008-04-28T17:55:19.189-03:00</updated><title type='text'>Capítulo 8</title><content type='html'>&lt;span style="color: rgb(255, 255, 255);"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Arboles y Recursividad&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Decimos que una definición es recursiva cuando "define en función de si misma". Un algoritmo es recursivo cuando para resolver el problema &lt;span style="font-weight: bold;"&gt;se invoca a si mismo&lt;/span&gt; una y otra vez hasta resolverlo.&lt;br /&gt;&lt;br /&gt;Para comprender esto lo mejor será analizar algunos casos típicos como la función matemática &lt;span style="font-weight: bold;"&gt;factorial&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Definimos la función &lt;span style="font-weight: bold;"&gt;factorial&lt;/span&gt; de la siguiente manera: Sea &lt;span style="font-style: italic;"&gt;x&lt;/span&gt; perteneciente al conjunto de los números naturales (incluyendo al cero) entonces:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;factorial(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;) = &lt;span style="font-style: italic;"&gt;x&lt;/span&gt;*factorial(&lt;span style="font-style: italic;"&gt;x&lt;/span&gt;-1)&lt;/li&gt;&lt;li&gt;factorial(0) = 1&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;La definición recurre a si misma para expresar lo que define. Es una definición &lt;span style="font-weight: bold;"&gt;recurrente&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;recursiva&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Desde el punto de vista de la programación, programar esta función recursiva no implica ni más ni menos que seguir al pie de la letra su definición matemática.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/R81LK_LIxMI/AAAAAAAABsA/eFoc9a72smE/s1600-h/factorialRec.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/R81LK_LIxMI/AAAAAAAABsA/eFoc9a72smE/s400/factorialRec.jpg" alt="" id="BLOGGER_PHOTO_ID_5173874199047488706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Como vemos, la función recibe un parámetro &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt;. Si &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; es igual a &lt;span style="font-weight: bold;"&gt;0&lt;/span&gt; entonces retorna &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;. Si &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; es mayor que cero entonces retorna el producto de &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; por "lo que retorna la misma función" invocándola con el parámetro (&lt;span style="font-weight: bold;"&gt;x-1&lt;/span&gt;).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;A continuación vemos un programa principal que lee un valor &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; y muestra el factorial de &lt;span style="font-weight: bold;"&gt;n &lt;/span&gt;utilizando la función recursiva.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/R81IivLIxJI/AAAAAAAABro/lq-5Zs60myY/s1600-h/factorialMain.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/R81IivLIxJI/AAAAAAAABro/lq-5Zs60myY/s400/factorialMain.jpg" alt="" id="BLOGGER_PHOTO_ID_5173871308534498450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En Pascal, lo anterior se codifica de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;testFactorial.pas&lt;/span&gt;&lt;span&gt;&lt;a href="http://www.surveymonkey.com/s.aspx?sm=QkkkEwoFMv3s2D1hx40Wuw_3d_3d%22%20target=%22_blank%22%20onclick=%22window.open%20%28this.href,%20this.target,%20%27width=750,height=550%27%29;%20return%20false;%22"&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;factorial&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recursiva&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;function&lt;/span&gt; factorial&lt;span class="syntax18"&gt;(&lt;/span&gt;x&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;longint&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; x&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;      factorial&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt; &lt;span class="syntax8"&gt;else&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      factorial&lt;span class="syntax18"&gt;:=&lt;/span&gt;x&lt;span class="syntax18"&gt;*&lt;/span&gt;factorial&lt;span class="syntax18"&gt;(&lt;/span&gt;x&lt;span class="syntax18"&gt;-&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;programa&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;principal&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; n&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;   &lt;span class="syntax9"&gt;write&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;Ingrese&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;un&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;valor:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   &lt;span class="syntax9"&gt;read&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;   &lt;span class="syntax9"&gt;write&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;El&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;factorial&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;de&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;es:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt; factorial&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Notemos que la función factorial puede resolverse también sin necesidad de utilizar recursividad. De hecho, ese fue uno de los primeros ejemplos que analizamos en este este trabajo.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/R81UqfLIxNI/AAAAAAAABsI/BP8hxSM7Ag0/s1600-h/factorialNoRec.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/R81UqfLIxNI/AAAAAAAABsI/BP8hxSM7Ag0/s400/factorialNoRec.jpg" alt="" id="BLOGGER_PHOTO_ID_5173884635818018002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si bien el algoritmo es bastante simple, esta versión resulta más compleja que la versión recursiva.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pila de Llamadas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para comprender bien el funcionamiento de los procedimientos y las funciones recursivas es fundamental notar que cada llamada (o invocación) a un procedimiento o función queda apilada en una "&lt;a href="http://es.wikipedia.org/wiki/Pila_%28estructura_de_datos%29#Pila_de_llamadas"&gt;pila de llamadas&lt;/a&gt;" de forma tal que cada procedimiento o función que se encuentre apilado no podrá finalizar su ejecución si antes no finalizaron los procedimientos y/o funciones que fueron llamados (apilados) con posterioridad.&lt;br /&gt;&lt;br /&gt;Para hacerlo más simple, si en la función &lt;span style="font-weight: bold;"&gt;f&lt;/span&gt; invocamos a la función &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt; y en la función &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt; invocamos a la función &lt;span style="font-weight: bold;"&gt;h&lt;/span&gt; entonces la primer función en finalizar su ejecución será &lt;span style="font-weight: bold;"&gt;h&lt;/span&gt;, luego &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt; y por último &lt;span style="font-weight: bold;"&gt;f&lt;/span&gt;. Y cuando finalice &lt;span style="font-weight: bold;"&gt;h&lt;/span&gt;, la función &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt; continuará su ejecución exactamente en la línea siguiente a la llamada a la función &lt;span style="font-weight: bold;"&gt;h&lt;/span&gt;. Y cuando finalice &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;f&lt;/span&gt; continuará su ejecución en la línea siguiente a la llamada a &lt;span style="font-weight: bold;"&gt;g&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Cuando tenemos el caso de una función recursiva, cada invocación recursiva (a si misma) será apilada en la pila de llamadas, así que la invocación a la función no terminará hasta que no terminen las invocaciónes que fueron apiladas posteriormente.&lt;br /&gt;&lt;br /&gt;Esto lo podemos probar con el siguiente ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;testRecursivo.pas&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recursivo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;procedure&lt;/span&gt; miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;comienza&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;(n=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; n&lt;span class="syntax18"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax5"&gt;4&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;finaliza&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;(n=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;programa&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;principal&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;   miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;En este programa vemos un procedimiento llamado &lt;span style="font-weight: bold;"&gt;miProcRecursivo&lt;/span&gt; que recibe un parámetro numérico. Lo primero que hace es decir "Comienza" y mostrar el valor del parámetro que recibe. Luego se invoca a si mismo solo si el parámetro recibido es menor que 4. Cuando se invoca a si mismo se pasa como parámetro &lt;span style="font-weight: bold;"&gt;n+1&lt;/span&gt; por lo que si había recibido un valor de &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; igual a &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;, la llamada siguiente (recursiva) recibirá un valor de &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; igual a &lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;. Por último, antes de terminar muestra un mensaje diciendo "Finaliza" con el valor del parámetro &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; que recibió.&lt;br /&gt;&lt;br /&gt;En el programa principal invocamos al procedimiento pasándole como parámetro el valor &lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;. La salida será la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/R-ja4lKJM1I/AAAAAAAABwQ/NzYcARqv5m0/s1600-h/testRecursivo.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/R-ja4lKJM1I/AAAAAAAABwQ/NzYcARqv5m0/s400/testRecursivo.jpg" alt="" id="BLOGGER_PHOTO_ID_5181632036871942994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La salida muestra la pila de llamadas: se llamó al procedimiento con el parámetro 1, luego con 2, luego con 3, luego con 4. El primero en finalizar fue el que recibió el parámetro 4, luego el 3, luego el 2, luego el 1. "El último que se llamó fue el primero que finalizó".&lt;br /&gt;&lt;br /&gt;Es muy importante notar que la función recursiva debe tener una condición de corte. En este ejemplo la condición de corte&lt;br /&gt;es &lt;span style="font-weight: bold;"&gt;if( n &amp;lt; 4 )&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Si no estuviese esta condición entonces el procedimiento se llamaría a si mismo permanentemente trayendo aparejadas dos consecuencias: primero el programa se colgaría ya que nunca retornará el control al programa principal y, segundo, dado que la pila de llamadas se implementa en memoria, en algún momento la memoria libre se acabará y tendremos un error llamado "stack overflow" que hará finalizar abruptamente la ejecución del programa.&lt;br /&gt;&lt;br /&gt;Vamos a probarlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;testRecursivo2.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procedimiento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recursivo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax8"&gt;procedure&lt;/span&gt; miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;comienza&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;(n=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;invocamos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recursivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;siempre,&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;sin&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;condicion&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;   miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;n&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nunca&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;se&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;llega&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;este&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;punto&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   writeln&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;finaliza&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;(n=&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;,&lt;/span&gt;n&lt;span class="syntax18"&gt;,&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax13"&gt;)&lt;/span&gt;&lt;span class="syntax13"&gt;'&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;programa&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;principal&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;   miProcRecursivo&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;El resultado es:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_X1IHMrfIpE8/R-mBMVKJM2I/AAAAAAAABwY/Z2TjfhTpucs/s1600-h/testRecursivo2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_X1IHMrfIpE8/R-mBMVKJM2I/AAAAAAAABwY/Z2TjfhTpucs/s400/testRecursivo2.jpg" alt="" id="BLOGGER_PHOTO_ID_5181814895104570210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El programa corta abruptamente tirando un "&lt;a href="http://community.freepascal.org:10000/docs-html/user/userch14.html"&gt;&lt;span style="font-weight: bold;"&gt;Runtime error 202&lt;/span&gt;&lt;/a&gt;". El código de error 202 indica que ocurrió un "Stack Overflow" (desbordamiento de la pila). Y, de hecho, lo que muestra en la consola (pantalla) es el "&lt;span style="font-weight: bold;"&gt;Stack Trace&lt;/span&gt;": estado de la pila de llamadas al momento de ocurrir el error.&lt;br /&gt;&lt;br /&gt;Volviendo a la función recursiva &lt;span style="font-weight: bold;"&gt;factorial&lt;/span&gt; ahora podemos notar que la condición de corte es &lt;span style="font-weight: bold;"&gt;if( x=0 )&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 8.1&lt;/span&gt;&lt;br /&gt;Se tiene el archivo &lt;span style="font-weight: bold;"&gt;EMPLEADOS.dat&lt;/span&gt; con la información de cada empleado de la compañia.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EMPLEADOS.dat&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;id &lt;/span&gt;- (integer)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;nombre &lt;/span&gt;- (string[40])&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;idJefe &lt;/span&gt;- (integer, hace referencia al &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; del jefe del empleado)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;El archivo está ordenado por &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; de forma tal que cada &lt;span style="font-weight: bold;"&gt;id &lt;/span&gt;coincide con el número de registro del archivo (&lt;span style="font-weight: bold;"&gt;menos 1&lt;/span&gt;, ya que los registros se numeran desde cero).&lt;br /&gt;&lt;br /&gt;El "gerente general" de la compañia, también figura como empleado y su &lt;span style="font-weight: bold;"&gt;idJefe&lt;/span&gt; será &lt;span style="font-weight: bold;"&gt;-1&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Se pide d&lt;/span&gt;esarrollar un programa interactivo que permita ingresar el &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; de un empleado y luego imprima toda la línea jerárquica a la cual responde el empleado cuyo &lt;span style="font-weight: bold;"&gt;id &lt;/span&gt;se ingresó.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;El problema se resuelve muy facilmente utilizando un procedimiento recursivo que llamaremos &lt;span style="font-weight: bold;"&gt;imprimirJefe&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Comencemos por definir la sección &lt;span style="font-weight: bold;"&gt;type &lt;/span&gt;para luego analizar el programa principal en el que haremos la invocación al procedimiento recursivo.&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax8"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;   REmpleado &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;      id&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;      nombre&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;40&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;      idJefe&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   FEmpleados &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; REmpleado&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Ahora veamos el programa principal.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/R82raBWrQbI/AAAAAAAABsg/YMZJZg_X8SE/s1600-h/mainEmp.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/R82raBWrQbI/AAAAAAAABsg/YMZJZg_X8SE/s400/mainEmp.jpg" alt="" id="BLOGGER_PHOTO_ID_5173980010447061426" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El programa principal es verdaderamente simple. Leemos el &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; del empleado a consultar y accedemos al archivo para averiguar su nombre y su jefe directo (&lt;span style="font-weight: bold;"&gt;idJefe&lt;/span&gt;). Imprimimos los títulos e invocamos al procedimiento &lt;span style="font-weight: bold;"&gt;imprimirJefe&lt;/span&gt; para que haga el resto del trabajo.&lt;br /&gt;&lt;br /&gt;Para acceder al archivo desarrollamos el procedimiento &lt;span style="font-weight: bold;"&gt;leer&lt;/span&gt; que recibe el &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; de un empleado y realiza el acceso directo y la lectura sobre el archivo. La información leida queda almacenada en el parámetro (por referencia) &lt;span style="font-weight: bold;"&gt;reg&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Notemos que a &lt;span style="font-weight: bold;"&gt;imprimirJefe&lt;/span&gt; lo estamos invocando con el parámetro &lt;span style="font-weight: bold;"&gt;reg.idJefe&lt;/span&gt; por lo tanto el procedimiento debe mostrar el nombre de este empleado (el jefe del empleado que originó la consulta) e invocarse a si mismo con el &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; de su jefe ("el jefe del jefe"). Así hasta que el empleado no tenga jefe.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/R82uahWrQcI/AAAAAAAABso/eJLfVmXiWwg/s1600-h/impJefe.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/R82uahWrQcI/AAAAAAAABso/eJLfVmXiWwg/s400/impJefe.jpg" alt="" id="BLOGGER_PHOTO_ID_5173983317571879362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;El procedimiento &lt;span style="font-weight: bold;"&gt;imprimirJefe &lt;/span&gt;recibe el &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; de un empleado, accede al archivo para recuperar su nombre (&lt;span style="font-weight: bold;"&gt;reg.nombre&lt;/span&gt;) y el &lt;span style="font-weight: bold;"&gt;id &lt;/span&gt;de su jefe (&lt;span style="font-weight: bold;"&gt;reg.idJefe&lt;/span&gt;). Muestra el nombre del empleado recibido y (si tiene jefe) se llama a si mismo pasándo como parámetro el &lt;span style="font-weight: bold;"&gt;id &lt;/span&gt;del jefe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;imprimirJefe &lt;/span&gt;es un procedimiento &lt;span style="font-weight: bold;"&gt;recursivo &lt;/span&gt;ya que resuelve su tarea &lt;span style="font-weight: bold;"&gt;invocándose a si mismo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problema 8.2&lt;/span&gt;&lt;br /&gt;Se tiene el archivo &lt;span style="font-weight: bold;"&gt;FAMILIAS.dat&lt;/span&gt; con la información de un conjunto de familias, con el siguiente formato.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FAMILIAS.dat&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;nombre &lt;/span&gt;- string[30]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;cantHijos &lt;/span&gt;- integer&lt;/li&gt;&lt;/ul&gt;El archivo está ordenado de forma tal que "para cada persona, sus hijos se encuentran a continuación". Veamos un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_X1IHMrfIpE8/R82x6BWrQdI/AAAAAAAABsw/6-Jw-03f3Dg/s1600-h/tablaHijos.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_X1IHMrfIpE8/R82x6BWrQdI/AAAAAAAABsw/6-Jw-03f3Dg/s400/tablaHijos.jpg" alt="" id="BLOGGER_PHOTO_ID_5173987157272642002" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el ejemplo vemos reflejados los datos de &lt;span style="font-weight: bold;"&gt;3&lt;/span&gt; familias:&lt;br /&gt;&lt;br /&gt;La familia de "Juan" tiene dos hijos: "Maria" (no tiene hijos) y "Carlos", que tiene un hijo: "Ezequiel" quien tiene dos hijos: "Martín" y "Romina" ambos sin hijos.&lt;br /&gt;&lt;br /&gt;La familia de "Alberto" (quien no tiene familia ya que no tiene hijos).&lt;br /&gt;&lt;br /&gt;La familia de "Marcelo" quien tiene un hijo: "Gerardo" quien tiene dos hijos: "Silvana" y "Karina" ambas sin hijos.&lt;br /&gt;&lt;br /&gt;Se pide hacer un programa que imprima un listado de todas las familias registradas en el archivo indicando el nombre del pariente más viejo (en el ejemplo serían "Juan", "Alberto" y "Marcelo") y la cantidad de integrantes que tiene cada familia (sumatoria de hijos, nietos, etc)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Análisis&lt;/span&gt;&lt;br /&gt;Para resolver este problema vamos a pensar en una función que llamaremos &lt;span style="font-weight: bold;"&gt;leerFamilia&lt;/span&gt;. Esta función retornará &lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;false &lt;/span&gt;según haya podido procesar correctamente los datos de una familia del archivo. Si retorna &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;, en los parámetros de salida retornará el nombre y la cantidad de integrantes de la familia que procesó.&lt;br /&gt;&lt;br /&gt;Con esta función (que luego analizaremos en detalle) el programa principal queda resuelto de la siguiente manera.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/R86MsRWrQeI/AAAAAAAABs4/pdffzs1sfpo/s1600-h/mainFlias.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/R86MsRWrQeI/AAAAAAAABs4/pdffzs1sfpo/s400/mainFlias.jpg" alt="" id="BLOGGER_PHOTO_ID_5174227714095923682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el programa principal abrimos el archivo y simplemente iteramos mientras la función tenga datos para procesar. Es decir: iteramos mientras la función retorne &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;. La misma función se encarga de asignar el nombre y la cantidad de miembros en las variables &lt;span style="font-weight: bold;"&gt;nomFlia &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;totMiembros &lt;/span&gt;por lo que en el programa principal simplemente mostramos sus contenidos para generar el listado que se pide en el enunciado.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_X1IHMrfIpE8/R8_9DBWrQiI/AAAAAAAABtY/qw75Cs0avxM/s1600-h/leerFlias01.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_X1IHMrfIpE8/R8_9DBWrQiI/AAAAAAAABtY/qw75Cs0avxM/s400/leerFlias01.jpg" alt="" id="BLOGGER_PHOTO_ID_5174632725216969250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_X1IHMrfIpE8/R8_9DxWrQjI/AAAAAAAABtg/tL06WCP6Ne0/s1600-h/leerFlias02.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_X1IHMrfIpE8/R8_9DxWrQjI/AAAAAAAABtg/tL06WCP6Ne0/s400/leerFlias02.jpg" alt="" id="BLOGGER_PHOTO_ID_5174632738101871154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La función se ocupa de recorrer el archivo por lo tanto debe controlar que no llegue el &lt;span style="font-weight: bold;"&gt;eof&lt;/span&gt;. Retorna &lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;false &lt;/span&gt;si leyó un registro y (en ese caso) asignó valores a los parámetros &lt;span style="font-weight: bold;"&gt;suma &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;nomFlia&lt;/span&gt;. Recordemos que al leer el último registro de un archivo la función &lt;span style="font-weight: bold;"&gt;eof&lt;/span&gt; retorna &lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;por este motivo el &lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;( &lt;span style="font-weight: bold;"&gt;eof&lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;arch&lt;/span&gt;) ) lo hacemos al comienzo de la función y si retorna &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt; entonces finalizamos la función retornando &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt; (no hay más registros por leer).&lt;br /&gt;&lt;br /&gt;Basicamente la función lee un registro (una persona), obtiene la cantidad de hijos de esta persona y luego entra en un &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; donde &lt;span style="font-weight: bold;"&gt;se llama a si misma&lt;/span&gt; tantas veces como hijos tiene la persona que leyó.&lt;br /&gt;&lt;br /&gt;Dentro del &lt;span style="font-weight: bold;"&gt;for &lt;/span&gt;se incrementa la variable &lt;span style="font-weight: bold;"&gt;suma&lt;/span&gt; (parámetro que recibe por referencia) por lo tanto, si la persona leida tiene tres hijos, el &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; iterará tres veces y la &lt;span style="font-weight: bold;"&gt;suma &lt;/span&gt;se incrementará en 3, pero a su vez, dentro del &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; se invoca a la función pasándole la misma variable &lt;span style="font-weight: bold;"&gt;suma&lt;/span&gt; por lo que si uno de los hijos de la persona leida tiene 5 hijos más, la llamada recursiva incrementará la (misma) variable &lt;span style="font-weight: bold;"&gt;suma &lt;/span&gt;otras cinco veces, y así.&lt;br /&gt;&lt;br /&gt;Notemos también que antes de ingresar al &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; preguntamos si &lt;span style="font-weight: bold;"&gt;suma&lt;/span&gt; es cero. En este caso estaremos ante la presencia de un "jefe de familia", entonces asignamos su nombre al parámetro &lt;span style="font-weight: bold;"&gt;nomFlia&lt;/span&gt;. Justamente la variable &lt;span style="font-weight: bold;"&gt;suma&lt;/span&gt; (que en el programa principal es &lt;span style="font-weight: bold;"&gt;totMiembros&lt;/span&gt;) se inicializa en cero antes de invocar a la función.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;familias.pas&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;seccion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;&lt;span class="syntax8"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;   RFamilia &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;record&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;      nombre&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;30&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;      cantHijos&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;   FFamilias &lt;span class="syntax18"&gt;=&lt;/span&gt; &lt;span class="syntax8"&gt;file&lt;/span&gt; &lt;span class="syntax8"&gt;of&lt;/span&gt; RFamilia&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leerFamilia&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;&lt;span class="syntax8"&gt;function&lt;/span&gt; leerFamilia&lt;span class="syntax18"&gt;(&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt; arch&lt;span class="syntax18"&gt;:&lt;/span&gt; FFamilias&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;                   &lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax8"&gt;var&lt;/span&gt; nomFlia&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;30&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;                   &lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax8"&gt;var&lt;/span&gt; suma&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;boolean&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;&lt;span class="syntax8"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  21:&lt;/span&gt;   reg&lt;span class="syntax18"&gt;:&lt;/span&gt; RFamilia&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  22:&lt;/span&gt;   nomFliaAux&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax8"&gt;string&lt;/span&gt;&lt;span class="syntax18"&gt;[&lt;/span&gt;&lt;span class="syntax5"&gt;30&lt;/span&gt;&lt;span class="syntax18"&gt;]&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  23:&lt;/span&gt;   i&lt;span class="syntax18"&gt;:&lt;/span&gt; &lt;span class="syntax10"&gt;integer&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  24:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  25:&lt;/span&gt;&lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  26:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;no&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hay&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;mas&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;datos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;en&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;el&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;archivo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;retorna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;false&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  27:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; eof&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  28:&lt;/span&gt;      leerFamilia&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax14"&gt;false&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  29:&lt;/span&gt;      exit&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;finaliza&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;aqui...&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  30:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  31:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  32:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;leo&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;registro&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  33:&lt;/span&gt;   &lt;span class="syntax9"&gt;read&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;,&lt;/span&gt;reg&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  34:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  35:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;si&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;suma&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;cero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;entonces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;es&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;un&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;"jefe"&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;flia&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  36:&lt;/span&gt;   &lt;span class="syntax8"&gt;if&lt;/span&gt;&lt;span class="syntax18"&gt;(&lt;/span&gt; suma&lt;span class="syntax18"&gt;=&lt;/span&gt;&lt;span class="syntax5"&gt;0&lt;/span&gt; &lt;span class="syntax18"&gt;)&lt;/span&gt; &lt;span class="syntax8"&gt;then&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  37:&lt;/span&gt;      nomFlia&lt;span class="syntax18"&gt;:=&lt;/span&gt;reg&lt;span class="syntax18"&gt;.&lt;/span&gt;nombre&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  38:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  39:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  40:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;itero&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tantas&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;veces&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;como&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;tiene&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;persona&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  41:&lt;/span&gt;   &lt;span class="syntax8"&gt;for&lt;/span&gt; i&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt; &lt;span class="syntax8"&gt;to&lt;/span&gt; reg&lt;span class="syntax18"&gt;.&lt;/span&gt;cantHijos &lt;span class="syntax8"&gt;do&lt;/span&gt; &lt;span class="syntax8"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  42:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  43:&lt;/span&gt;      suma&lt;span class="syntax18"&gt;:=&lt;/span&gt;suma&lt;span class="syntax18"&gt;+&lt;/span&gt;&lt;span class="syntax5"&gt;1&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt; &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;incremento&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;una&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;vez&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;por&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijo&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  44:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  45:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;invoco&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;recursivamente&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;para&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  46:&lt;/span&gt;      &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;procesar&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;de&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;hijos&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  47:&lt;/span&gt;      leerFamilia&lt;span class="syntax18"&gt;(&lt;/span&gt;arch&lt;span class="syntax18"&gt;,&lt;/span&gt;nomFlia&lt;span class="syntax18"&gt;,&lt;/span&gt;suma&lt;span class="syntax18"&gt;)&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  48:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  49:&lt;/span&gt;   &lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  50:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  51:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;la&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;funcion&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;returna&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;true&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;porque&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;pudimos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;asignar&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  52:&lt;/span&gt;   &lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;datos&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;a&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;los&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;parametros&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;nomFlia&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;y&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;suma&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  53:&lt;/span&gt;   leerFamilia&lt;span class="syntax18"&gt;:=&lt;/span&gt;&lt;span class="syntax14"&gt;true&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  54:&lt;/span&gt;&lt;span class="syntax8"&gt;end&lt;/span&gt;&lt;span class="syntax18"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  55:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  56:&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  57:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  58:&lt;/span&gt;&lt;span class="syntax2"&gt;//&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;programa&lt;/span&gt;&lt;span class="syntax2"&gt; &lt;/span&gt;&lt;span class="syntax2"&gt;principal&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt; 
