<?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-4275640842700569697</id><updated>2011-11-27T17:10:00.313-08:00</updated><category term='Proyectos'/><category term='UTFSM'/><category term='Videos'/><category term='Ayudantia'/><category term='Teatro en Austria'/><category term='Contactame'/><category term='Papers Escritos'/><category term='Articulos Escritos'/><category term='Cursos'/><category term='Mis Pinturas'/><category term='Noticias'/><category term='Investigacion'/><category term='Fotos'/><category term='entrepreneurship'/><category term='Inicio'/><category term='Ayudantia Pascal'/><category term='4MINDS'/><category term='Curriculum'/><title type='text'>Pancho Riveros</title><subtitle type='html'>Francisco Riveros Escobar</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-5216368620645955425</id><published>2008-10-10T19:54:00.001-07:00</published><updated>2008-10-10T19:54:17.561-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Cursos'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><category scheme='http://www.blogger.com/atom/ns#' term='4MINDS'/><title type='text'>Seminario de JAVA (2006)</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAU4jVznVI/AAAAAAAAA2o/td5_0UbL6XU/s1600-h/clip_image001%5B3%5D.gif"&gt;&lt;img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="52" alt="clip_image001" src="http://lh3.ggpht.com/foward/SPAU5m2M-vI/AAAAAAAAA2s/qmxLHPOuV9g/clip_image001_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Dictado por la empresa hace mucho tiempo&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4Minds Software Ltda.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://www.4minds.cl"&gt;www.4minds.cl&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Índice&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.- Programación orientada a objetos Pág. 4&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Paradigma de la programación &lt;b&gt;Pág. 4&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Propiedades y comportamiento de los objetos &lt;b&gt;Pág. 4&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Propuestas de un modelo de diseño &lt;b&gt;Pág. 5&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Diagramas de clases &lt;b&gt;Pág. 6&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.- Introducción en java Pág. 7&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Características de java &lt;b&gt;Pág. 7&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Compilación y ejecución de programas &lt;b&gt;Pág. 7&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Compilador de Java &lt;b&gt;Pág. 8&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nuestro primer programa java &lt;b&gt;Pág. 8&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Programar comentarios &lt;b&gt;Pág. 9&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Variables y constantes &lt;b&gt;Pág. 9&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Variables finales &lt;b&gt;Pág. 10&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nombre de variables &lt;b&gt;Pág. 10&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Alcance de variables &lt;b&gt;Pág. 11&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Operadores de java &lt;b&gt;Pág. 11&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Precedencia de los operadores en java &lt;b&gt;Pág. 13&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Expresiones y sentencias &lt;b&gt;Pág. 13&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sentencias de control de flujo &lt;b&gt;Pág. 13&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;if-else &lt;b&gt;Pág. 14&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;switch &lt;b&gt;Pág. 15&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sentencias de bucle &lt;b&gt;Pág. 16&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;while y do-while &lt;b&gt;Pág. 16&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;for &lt;b&gt;Pág. 17&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Clase System &lt;b&gt;Pág. 18&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Secuencias de escape &lt;b&gt;Pág. 19&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.- Clases Pág. 20&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Árbol de clases &lt;b&gt;Pág. 20&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Tipos de clases &lt;b&gt;Pág. 20&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Declarar, inicializar y usar un objeto &lt;b&gt;Pág. 20&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Referenciar variables de un objeto &lt;b&gt;Pág. 21&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sentencia static &lt;b&gt;Pág. 21&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nuestro primer objeto Java &lt;b&gt;Pág. 22&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Eliminar objetos Java &lt;b&gt;Pág. 23&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Interfaces &lt;b&gt;Pág. 23&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Clases anónimas &lt;b&gt;Pág. 24&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.- Paquetes Pág. 25&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sentencia Import &lt;b&gt;Pág. 25&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Archivos JAR &lt;b&gt;Pág. 25&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Classpath &lt;b&gt;Pág. 26&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Creación de paquetes &lt;b&gt;Pág. 27&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Árbol de paquetes o subpaquetes &lt;b&gt;Pág. 27&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase Object &lt;b&gt;Pág. 28&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Conversión de tipos &lt;b&gt;Pág. 28&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Algunas clases de Java &lt;b&gt;Pág. 29&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Math &lt;b&gt;Pág. 29&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Integer &lt;b&gt;Pág. 30&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Random &lt;b&gt;Pág. 31&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;StringTokenizer &lt;b&gt;Pág. 32&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Runtime &lt;b&gt;Pág. 33&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.- Vectores y matrices Pág. 34&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Secuencias de variables &lt;b&gt;Pág. 34&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Arreglos unidimensionales &lt;b&gt;Pág. 34&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Algoritmos &lt;b&gt;Pág. 35&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.- Herencia: Subclases y superclases Pág. 36&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Herencia simple &lt;b&gt;Pág. 36&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;¿Que variable miembro hereda una subclase? &lt;b&gt;Pág. 36&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Escribir clases, atributos y métodos finales &lt;b&gt;Pág. 39&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Clases y métodos abstractos &lt;b&gt;Pág. 39&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Jerarquía de composición &lt;b&gt;Pág. 39&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.- Errores y excepciones Pág. 41&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La jerarquía de las excepciones &lt;b&gt;Pág. 41&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Uso de try, catch y finally &lt;b&gt;Pág. 42&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Pila de llamadas &lt;b&gt;Pág. 44&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Lanzar excepciones &lt;b&gt;Pág. 45&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Capturar excepciones más genéricas &lt;b&gt;Pág. 46&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.- Streams Pág. 47&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Flujo de datos &lt;b&gt;Pág. 47&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Lecturas y escrituras en archivos usando streams &lt;b&gt;Pág. 49&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;FileReader y FileWriter &lt;b&gt;Pág. 52&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Objetos persistentes &lt;b&gt;Pág. 52&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.- AWT &lt;/b&gt;&lt;b&gt;Pág. 54&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Interfaces gráficas &lt;b&gt;Pág. 54&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Componentes y contenedores &lt;b&gt;Pág. 54&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Clase Component &lt;b&gt;Pág. 54&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;Button &lt;b&gt;Pág. 55&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Choice &lt;b&gt;Pág. 56&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;CheckBox &lt;b&gt;Pág. 57&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;List &lt;b&gt;Pág. 57&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Clase Containers &lt;b&gt;Pág. 58&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Window &lt;b&gt;Pág. 59&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Frame &lt;b&gt;Pág. 59&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Dialog &lt;b&gt;Pág. 59&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Panel &lt;b&gt;Pág. 59&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.- Applets &lt;/b&gt;&lt;b&gt;Pág. 60&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;¿Que son los applets? &lt;b&gt;Pág. 60&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El AppletViewer &lt;b&gt;Pág. 60&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Métodos &lt;b&gt;Pág. 60&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nuestro Primer applet &lt;b&gt;Pág. 61&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sonidos en los applets &lt;b&gt;Pág. 62&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.- Programación orientada a objetos.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.1.- Paradigma de la programación.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Cuando utilizamos una computadora, lo que buscamos una solución a un problema. Pero ellas entienden lenguaje &lt;b&gt;binario&lt;/b&gt;, y solo son capaces de sumar &lt;b&gt;bits&lt;/b&gt; y mover &lt;b&gt;bytes&lt;/b&gt; de un lugar a otro. Como programadores, debemos indicarle a la computadora que es lo que deseamos que ella realicé, y para ello nos vemos en la obligación de utilizar un lenguaje de programación. Éste es un lenguaje intermedio, que luego será traducido a binario, siendo una herramienta que nos permite dar órdenes a la computadora sobre como resolver un problema en particular.&lt;/p&gt;  &lt;p&gt;La forma en que especifiquemos la solución depende del paradigma de programación que utilicemos. Los paradigmas son un modelo que representa un enfoque específico para el desarrollo de sistemas. No existe paradigma mejor que otro, hay situaciones en que uno resulta más adecuado, todos tienen ventajas y desventajas. El paradigma en que nos enfocaremos en esta ocasión es el de &amp;quot;&lt;b&gt;Programación Orientada a Objetos&lt;/b&gt;&amp;quot; (POO).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.1.1.- Propiedades y comportamiento de los objetos.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;¿Qué es un objeto? La respuesta es simple, basta con mirar a nuestro alrededor para ver que estamos rodeados de objetos. Si observamos más detalladamente veremos que estos objetos tienen &lt;b&gt;propiedades&lt;/b&gt; o &lt;b&gt;atributos&lt;/b&gt;. Por ejemplo, el objeto auto tiene motor, ruedas y asientos. El objeto avión posee estas mismas propiedades, pero se diferencian en que el avión puede volar y el auto no. Vale decir, los objetos también tienen un comportamiento propio.&lt;/p&gt;  &lt;p&gt;Entonces, un objeto es una &lt;b&gt;entidad&lt;/b&gt; compleja que posee &lt;b&gt;propiedades&lt;/b&gt; (datos, atributos) y &lt;b&gt;comportamiento&lt;/b&gt; (funcionalidad, métodos). Además, cada objeto expone una &lt;b&gt;interfaz&lt;/b&gt; a otros objetos que indica cómo éstos pueden interactuar (comunicarse) con él. Esta interfaz provee un conjunto de métodos. La interfaz del automóvil estará dada por los &lt;b&gt;métodos&lt;/b&gt; &amp;quot;arranca&amp;quot;, &amp;quot;frena&amp;quot;, &amp;quot;dobla&amp;quot;, etc., y es a través de ellos que podemos interactuar con el objeto (&lt;b&gt;Figura 1&lt;/b&gt;).    &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;Auto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;Nombre del objeto&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;motor&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;ruedas&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;atributos&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;asientos&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;arranca()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;frena()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;métodos&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;dobla()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Representación del objeto Auto con sus atributos y métodos.&lt;/p&gt;  &lt;p&gt;Cabe aclarar que el comportamiento es exclusivo del objeto. Si bien algunos objetos a simple vista son iguales, internamente pueden ser muy distintos. Por ejemplo, un automóvil cuyo motor utiliza bencina y otro diesel. Si aprendemos a manejar uno, sin problema podemos manejar el otro. Ambos objetos se nos presentan de la misma forma, pero sus motores son muy distintos. Es decir, los objetos presentan la misma interfaz pero ocultan información de su funcionamiento, esto se conoce como &lt;b&gt;encapsulamiento&lt;/b&gt;, y gracias a él se puede cambiar un objeto por otro que presente la misma interfaz, y todo debería funcionar igual.&lt;/p&gt;  &lt;p&gt;Cuando definimos un objeto lo hacemos en función de otros objetos conocidos. Si alguien nos dice &amp;quot;un auto es como una moto, pero tiene cuatro ruedas&amp;quot;, nos define al automóvil a través de un objeto de similares características. Sin darnos cuenta hacemos &lt;b&gt;clasificaciones&lt;/b&gt;. Generalizando, nos damos cuenta de que ambos son medios de transporte. En el paradigma de objetos esto es conocido como &lt;b&gt;herencia&lt;/b&gt;, y es útil para no tener que definir &lt;b&gt;comportamientos&lt;/b&gt; de forma repetitiva.&lt;/p&gt;  &lt;p&gt;Por ejemplo, tendremos un objeto transporte, que tendrá propiedades como &amp;quot;cantidad de pasajeros&amp;quot;, &amp;quot;numero de puertas&amp;quot;, etc., y métodos como &amp;quot;anda&amp;quot;, &amp;quot;frena&amp;quot; y &amp;quot;dobla&amp;quot;. De esta manera definiríamos un automóvil como un transporte, agregando las particularidades del automóvil que no estén definidas en transporte.&lt;/p&gt;  &lt;p&gt;Ahora que sabemos agrupar &lt;b&gt;clases&lt;/b&gt;, podríamos agregar más objetos a nuestro modelo, como por ejemplo el objeto avión. Es decir, las clases simplemente son conjuntos de objetos que comparten propiedades y comportamientos. El objeto avión definido como un transporte heredará las propiedades y los métodos de éste. Notamos que no es lo mismo hacer andar un avión que un automóvil, de tal forma que necesitamos agregar el método anda para que el avión vuele y el automóvil ruede. Esto se denomina &lt;b&gt;polimorfismo&lt;/b&gt;, y nos permite tener comportamientos distintos de un método para objetos diferentes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAU6q4pJRI/AAAAAAAAA2w/W30-lcuTfO4/s1600-h/clip_image002%5B3%5D.gif"&gt;&lt;img title="clip_image002" style="display: inline" height="85" alt="clip_image002" src="http://lh5.ggpht.com/foward/SPAU7uxGycI/AAAAAAAAA20/fR0z-GDs1rU/clip_image002_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;Revisando el ejemplo del transporte, automóvil y avión notamos que existe una jerarquía, a la cabeza está transporte y de éste cuelgan el avión y el automóvil. En este paradigma esto se denomina &lt;b&gt;jerarquía de herencia&lt;/b&gt; (&lt;b&gt;figura 2&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 2&lt;/b&gt;. Árbol de jerarquía de herencias. En este caso,&lt;/p&gt;  &lt;p&gt;los objetos Avión y Automóvil heredan del objeto Transporte.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAU8FtPG6I/AAAAAAAAA24/UauQittCMZ8/s1600-h/clip_image003%5B3%5D.gif"&gt;&lt;img title="clip_image003" style="display: inline" height="59" alt="clip_image003" src="http://lh4.ggpht.com/foward/SPAU86bUVzI/AAAAAAAAA28/W0EI6tp3N3o/clip_image003_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;El automóvil, además de ser un objeto y un transporte, esta &lt;b&gt;compuesto&lt;/b&gt; de por otros objetos, como un volante, radio, pedales, etc. Aquí nos encontramos frente a una jerarquía de elementos. Esta se conoce como &lt;b&gt;jerarquía de composición&lt;/b&gt; y sirve para representar que uno o más objetos están dentro de otro (&lt;b&gt;figura 3&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 3&lt;/b&gt;. Árbol de jerarquía de composición. En este caso,&lt;/p&gt;  &lt;p&gt;el Automóvil esta compuesto por los objetos Volante, Radio y Pedal.&lt;/p&gt;  &lt;p&gt;Para finalizar, si tenemos un solo objeto automóvil, esto no significa que nuestro programa podrá tener un solo automóvil. Para entender esto debemos conocer el concepto de &lt;b&gt;instancia&lt;/b&gt;, que nos permite crear la cantidad de automóviles que deseemos. Para lograr esto, cada objeto deberá tener un método que nos permita crear una instancia de éste.&lt;/p&gt;  &lt;p&gt;Una clase no está limitada a comportarse sólo como lo define su padre, sino que además puede definir un comportamiento propio, es decir, se pueden agregar nuevos métodos en ella.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.2.- Propuesta de un modelo de diseño.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Suponiendo el juego Gato, en donde dos participantes tienen fichas y por turno las ubican en un tablero de 3x3. Para resolver el problema lo primero que vamos a hacer es determinar los objetos.   &lt;br /&gt;A simple vista tenemos &amp;quot;Jugador&amp;quot;, &amp;quot;Tablero&amp;quot; y &amp;quot;Ficha&amp;quot;. Cada una de las fichas será una instancia de la clase ficha. El tablero tiene casilleros, así que agregamos &amp;quot;Casilla&amp;quot; a la lista de objetos. Por otra parte, el jugador puede ser &amp;quot;Humano&amp;quot; o la &amp;quot;Computadora&amp;quot;, que también son agregados a la lista de objetos.&lt;/p&gt;  &lt;p&gt;Una vez que estamos seguros de haber determinado todos los objetos debemos agregarle atributos y métodos a cada uno. Comenzando por Tablero, el atributo más importante que posee son las casillas. Entre sus métodos tenemos &amp;quot;ponerFicha()&amp;quot;, y para verificar si hay ganador esta &amp;quot;buscarLinea()&amp;quot;. Para el objeto Casilla tenemos el atributo dos atributos, su &amp;quot;coordenada&amp;quot; y el otro es el objeto Ficha. El objeto Jugador, que tiene varias instancias del objeto ficha. Y finalmente Humano tiene el atributo nombre y Computadora tiene el atributo inteligencia, lo que nos permite un juego con varios niveles.&lt;/p&gt;  &lt;p&gt;Una vez determinado los atributos y métodos de los objetos, debemos determinar la jerarquía de herencia, en donde los objetos Computadora y Humano heredan del objeto Jugador. Para la jerarquía de composición tenemos que el Tablero esta compuesto de Casillas y el Jugador de Fichas.&lt;/p&gt;  &lt;p&gt;Esto que se hizo es un modelo simplificado de representación. Una vez terminado ya estamos listos para escribir el código correspondiente.&lt;/p&gt;  &lt;p&gt;Cuando modelamos tendemos a creer que nuestra representación es la más clara que existe, pero puede ser difícil de comprender para otros. Para evitar esto existen herramientas que ayudan al modelado de la programación orientada a objetos a través de estándares. Una de las más utilizadas es &lt;b&gt;UML &lt;/b&gt;(Unified Modeling Language).&lt;/p&gt;  &lt;p&gt;Esta herramienta provee de varias representaciones. Algunas son muy comunes, tanto que ya hemos utilizado varias de ellas. UML utiliza como herramientas los diagramas gráficos para representar el sistema. A continuación haremos una explicación del más útil para comprender la orientación a objetos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1.2.1.- Diagrama de clases.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los diagramas de clases representan un conjunto de elementos del modelo que son estáticos, como las clases y los tipos, sus contenidos y las relaciones que se establecen entre ellos (&lt;b&gt;Figura 4&lt;/b&gt;).    &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;Jugador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;           &lt;p&gt;Tablero&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;Ficha1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;           &lt;p&gt;Casilla&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;Ficha2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;...&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;FichaN&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;           &lt;p&gt;elegirCasilla()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;           &lt;p&gt;ponerFicha()&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="107"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="61"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="106"&gt;           &lt;p&gt;buscarLinea()&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 4&lt;/b&gt;. Diagrama de clases del Gato.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.- Introducción a java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.1.- Características de java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las principales características de java respecto a otros lenguajes de programación son las siguientes:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Simple&lt;/b&gt;: Java ofrece toda la funcionalidad de un lenguaje potente, y a la vez elimina las cosas más confusas y menos usadas de otros lenguajes. Además implementa el &lt;b&gt;garbage collector &lt;/b&gt;(recolector de basura), gracias al cual el programador no debe asegurar el correcto uso de memoria, como en &lt;i&gt;C++&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Orientado a objetos&lt;/b&gt;: Fue diseñado como un lenguaje orientado a objetos desde el principio, a diferencia de &lt;b&gt;C++&lt;/b&gt;, que fue una extensión de &lt;i&gt;C&lt;/i&gt;. En java, cada objeto se agrupa en estructuras encapsuladas con sus datos y métodos que manipulan esos datos.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Distribuido&lt;/b&gt;: Java proporciona una colección de clases para uso en aplicaciones de red, que permite abrir &lt;b&gt;sockets&lt;/b&gt; y establecer y aceptar conexiones con servidores o clientes remotos. Lo que facilita la creación de aplicaciones distribuidas.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Interpretado y compilado a la vez&lt;/b&gt;: Java es compilado ya que su código fuente se transforma en una suerte de código de máquina (&lt;b&gt;bytecodes&lt;/b&gt;) semejantes a instrucciones en &lt;b&gt;Assembler&lt;/b&gt;. Es interpretado ya que dichos bytecodes se pueden ejecutar directamente en cualquier máquina en que se haya instalado el intérprete.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Robusto&lt;/b&gt;: Java fue diseñado para crear sistemas fiables. Para ellos proporciona muchas comprobaciones en compilación y en tiempo de ejecución.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Seguro&lt;/b&gt;: Ya que por naturaleza es distribuido, la seguridad es vital. Implementa barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Multiplataforma&lt;/b&gt;: Como esta diseñado para soportar aplicaciones distribuidas, y considerando lo heterogéneo de las redes, como Internet, necesitaba ser independiente de la plataforma. Den esta manera una aplicación se puede ejecutar desde un PC a un celular.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Multitarea&lt;/b&gt;: Soporta sincronización de múltiples hilos de ejecución (&lt;b&gt;multithreading&lt;/b&gt;) a nivel de lenguaje.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Dinámico&lt;/b&gt;: El lenguaje y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Además se pueden enlazar nuevos módulos de código bajo demanda, procedentes incluso desde la Red.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.2.- Compilación y ejecución de programas.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Antes de comenzar deberos conseguir una distribución de Java de &lt;b&gt;Sun Microsystems&lt;/b&gt; en su versión para desarrolladores. Podemos descargarla de &lt;a href="http://www.java.sun.com/"&gt;www.java.sun.com&lt;/a&gt;. De acuerdo a nuestras necesidades debemos elegir una distribución particular. Las más populares son:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;J2SE &lt;/b&gt;(&lt;b&gt;Java 2 Platform Standard Edition&lt;/b&gt;): La edición estándar provee un entorno para desarrollo de aplicaciones de escritorio y applets. Esta distribución se divide en dos categorías: &lt;b&gt;Core Java&lt;/b&gt; y &lt;b&gt;Desktop Java&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;J2EE &lt;/b&gt;(&lt;b&gt;Java 2 Platform Enterprise Edition&lt;/b&gt;): Es la más difundida en el mercado empresarial, ya que define los estándares para desarrollar soportando todas las posibilidades de Java. Además posee herramientas para el desarrollo de servicios Web.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;J2ME &lt;/b&gt;(&lt;b&gt;Java 2 Platform Micro Edition&lt;/b&gt;): Sirve para el desarrollo donde el soporte en el cual va a residir la aplicación sea reducido en cuanto a sus capacidades de almacenamiento. Es ideal para desarrollar aplicaciones para teléfonos celulares y PDAs.&lt;/p&gt;  &lt;p&gt;Una vez elegida la distribución debemos tener en cuenta que existen dos versiones.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;SDK &lt;/b&gt;(&lt;b&gt;Standard Development Kit&lt;/b&gt;): Provee de herramientas de desarrollo estándar.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;JRE &lt;/b&gt;(&lt;b&gt;Java Runtime Environment&lt;/b&gt;): Provee el entorno de ejecución de Java.&lt;/p&gt;  &lt;p&gt;Lo ideal es tener ambas versiones, &lt;b&gt;SDK&lt;/b&gt; para programar, compilar y probar, y &lt;b&gt;JRE&lt;/b&gt; para instalar en el PC donde se ejecutará la aplicación.&lt;/p&gt;  &lt;p&gt;En nuestro caso utilizaremos la distribución &lt;b&gt;J2SE&lt;/b&gt;. Además podemos elegir un &lt;b&gt;IDE &lt;/b&gt;(&lt;b&gt;I&lt;/b&gt;&lt;b&gt;ntegrated Development Environment&lt;/b&gt;) que nos facilite el trabajo de compilación y ejecutar desde la línea de comando. Utilizaremos Eclipse, y puede ser bajado desde la página &lt;a href="http://www.eclipse.org/"&gt;www.eclipse.org&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Una vez instalado el lenguaje Java podemos ver que en la carpeta principal, en el subdirectorio llamado &lt;b&gt;bin&lt;/b&gt;, encontraremos, entre otros, los siguientes ejecutables de Java:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;java.exe&lt;/b&gt;: es el lanzador de aplicaciones de Java.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;javaw.exe&lt;/b&gt;: es el lanzador gráfico de aplicaciones.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;javac.exe&lt;/b&gt;: es el compilador de Java.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.2.1.- Compilador de Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAU94loe_I/AAAAAAAAA3A/Nx2ef-Tl368/s1600-h/clip_image004%5B3%5D.gif"&gt;&lt;img title="clip_image004" style="display: inline" height="126" alt="clip_image004" src="http://lh5.ggpht.com/foward/SPAU-oYGIKI/AAAAAAAAA3E/l8HzP1E_lfo/clip_image004_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;Una de las características del compilador Java es que junta su código en un archivo objeto de formato independiente sin que sea primordial la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (&lt;b&gt;run time&lt;/b&gt;) puede ejecutar ese código objeto, sin importar que la máquina en que ha sido generado (&lt;b&gt;figura 1&lt;/b&gt;). Actualmente existen sistemas &lt;b&gt;run time&lt;/b&gt; para &lt;b&gt;Solaris&lt;/b&gt;, &lt;b&gt;SunOs&lt;/b&gt;, &lt;b&gt;Windows&lt;/b&gt;, &lt;b&gt;Linux&lt;/b&gt;, &lt;b&gt;Iris&lt;/b&gt;, &lt;b&gt;Aix&lt;/b&gt;, &lt;b&gt;Mac&lt;/b&gt; y &lt;b&gt;Apple&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Ambiente de ejecución de Java.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.- Nuestro primer programa Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ahora que sabemos como compilar y ejecutar programas, realizaremos nuestro primer programa:&lt;/p&gt;  &lt;p&gt;public class HolaMundo&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Hola mundo!!&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida del programa será:&lt;/p&gt;  &lt;p&gt;Hola mundo!!&lt;/p&gt;  &lt;p&gt;Ahora analicemos la estructura del programa. El nombre del objeto esta determinado por &lt;b&gt;public class HolaMundo&lt;/b&gt;, mientras que el método principal esta dado por &lt;b&gt;public static void main(String argv[])&lt;/b&gt;, a través del cual se lanzaran todas las aplicaciones, y cada aplicación ejecutará un solo main por cada ejecución.&lt;/p&gt;  &lt;p&gt;Las llaves determinan los bloques de ejecución, y más adelante veremos que también determinarán el alcance de las variables. El punto y coma es el separador de instrucciones, es decir, maraca el fin de una instrucción y el comienzo de la otra. También podemos notar que no todas las líneas comienzas desde el margen izquierdo, esto es conocido como &lt;b&gt;identación&lt;/b&gt;, y es útil al el programador para leer mas fácilmente el código, ya que determina los bloques de ejecución con mayor claridad.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.1.- Programar comentarios.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los &lt;b&gt;comentarios&lt;/b&gt; nos sirven de guía, o para que otro programador vea nuestro código y lo entienda rápidamente. Existen, entre otros, los siguientes tipos:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Comentario simple&lt;/b&gt;: se usa para hacer alguna anotación rápida sobe la línea de código siguiente o anterior, El modo de uso es el siguiente: &lt;/p&gt;  &lt;p&gt;// Esto es un comentario simple&lt;/p&gt;  &lt;p&gt;Si queremos escribir varias líneas utilizando este tipo de comentario debemos colocar la doble barra al comienzo de cada línea.&lt;/p&gt;  &lt;p&gt;// Para hacer un comentario simple de varias líneas&lt;/p&gt;  &lt;p&gt;// debemos anteponer doble barra a cada una de las líneas&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Comentario de varias líneas&lt;/b&gt;: se usa para escribir aclaraciones de más de una línea. Se utiliza de la siguiente manera:&lt;/p&gt;  &lt;p&gt;/*&lt;/p&gt;  &lt;p&gt;Este es un comentario&lt;/p&gt;  &lt;p&gt;de varias líneas&lt;/p&gt;  &lt;p&gt;*/&lt;/p&gt;  &lt;p&gt;De todos modos se puede usar para comentarios de una línea:&lt;/p&gt;  &lt;p&gt;/* Esto es un comentario de una línea */&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.2.- Variables y constantes.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las &lt;b&gt;variables&lt;/b&gt; son utilizadas para almacenar datos, y como su nombre lo indica, cambian a lo largo de la ejecución del programa. Cuando termina un bloque de ejecución, las variables declaradas en él mueren.&lt;/p&gt;  &lt;p&gt;Cada variable posee un &lt;b&gt;tipo de dato&lt;/b&gt; asociado, que determina el espacio utilizado, los valores que puede almacenar y las operaciones que se pueden realizar con ellos. Las &lt;b&gt;constantes&lt;/b&gt; tienen el mismo concepto, sólo que no varían durante la ejecución del programa. Los tipos de datos primitivos soportados son:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Tipo de datos&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;Tamaño&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Valores que puede tomar&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Boolean&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;1 byte&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;true o flase&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Char&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;2 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Cualquier carácter ASCII&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Byte&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;1 byte&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Entero entre -128 y 127&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Short&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;2 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Entero entre -32.768 y 32.767&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Int&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;4 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Entero entre -2.147.483.648 y 2.147.483.647&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Long&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;8 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Entero entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Float&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;4 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Decimal de -3.402823E38 y -1.401298E-45&lt;/p&gt;            &lt;p&gt;y de 1.401298E-45 a 3.402823E38&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Duble&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="78"&gt;           &lt;p&gt;8 bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="410"&gt;           &lt;p&gt;Decimal de -1.79769313486232E308 a -4.94065645841247E-324&lt;/p&gt;            &lt;p&gt;y de 4.94065645841247E-324 a 1.79769313486232E308&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 1&lt;/b&gt;. Tipos de datos primitivos.&lt;/p&gt;  &lt;p&gt;Además Java provee un conjunto de datos secundarios, llamados así porque son datos compuestos. Estos datos son:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;String&lt;/b&gt; (compuesto por una serie de char).&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Array&lt;/b&gt; (compuesto por una serie de cualquier tipo de dato primitivo).&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Antes de utilizar una variable debemos declararla. Veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;public class Declaracion&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaramos i de tipo long&lt;/p&gt;  &lt;p&gt;long i;&lt;/p&gt;  &lt;p&gt;// Declaramos j de tipo entero y la inicializamos en 0&lt;/p&gt;  &lt;p&gt;int j = 0;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Ahora que ya hemos declarado variables podemos utilizarlas. A continuación veremos un ejemplo, en donde además se informa el resultado por pantalla.&lt;/p&gt;  &lt;p&gt;public class Prueba&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaramos j de tipo entero y la inicializamos en 0&lt;/p&gt;  &lt;p&gt;int j = 0;&lt;/p&gt;  &lt;p&gt;// Sumamos 1 a i&lt;/p&gt;  &lt;p&gt;i = i + 1;&lt;/p&gt;  &lt;p&gt;// Imprimimos en pantalla&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El valor de i es&amp;quot; + i);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.2.1.- Variables Finales.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;No se pueden declarar constantes como &lt;b&gt;const&lt;/b&gt;, esta es una palabra que fue reservada para uso futuro. Si queremos declarar una constante debemos declarar una variable final de la siguiente forma:&lt;/p&gt;  &lt;p&gt;final float a = 4.0f;&lt;/p&gt;  &lt;p&gt;De esta forma la variable no puede ser modificada durante la ejecución del programa. De tener una línea de código que intenta modificar dicha variable se producirá un error en tiempo de compilación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.2.2.- Nombres de variables.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las variables pueden tomar cualquier nombre, sin embargo hay una serie de palabras reservadas que no se pueden utilizar como identificadores. El conjunto de palabras reservadas puede clasificarse según el tipo de instrucción.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Tipos de datos y retorno&lt;/b&gt;: boolean, byte, short, long, void, char, double, float, int, return, strictfp.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Paquetes y clases&lt;/b&gt;: class, super, final, extends, interface, native, static, volatile, import, new, instanceof, abstracts, implements, synchronized, this, transient.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Modificadores de acceso&lt;/b&gt;: public, private, protected, package.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ciclos y condiciones&lt;/b&gt;: if, switch, break, for, while, else, case, default, do, continue.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Manejo de excepciones&lt;/b&gt;: throws, try, finally, throw, catch.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Reservadas para uso futuro&lt;/b&gt;: goto, assert, const.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;Por convención, los nombres de las variables empieza con minúscula, y en caso de que éste se encuentre compuesto de varias palabras, las restantes comenzarán con mayúscula. Por ejemplo, un nombre de variable puede ser fechaDeNacimiento. El guión bajo es aceptable en caso de constantes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.3.2.3.- Alcance de una variable.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Para entender el alcance de una variable, también llamado &lt;b&gt;scope&lt;/b&gt;, primero debemos definir lo que son las &lt;b&gt;variables globales&lt;/b&gt; y las &lt;b&gt;variables locales&lt;/b&gt;. La primera puede ser usada en todo el programa, mientras que la segunda solo puede utilizarse dentro del bloque en que fue definida. La diferencia entre ambos tipos es precisamente el alcance. Veamos un ejemplo del alcance de las variables:&lt;/p&gt;  &lt;p&gt;public class AlcanceVariable&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;static int j = 0;&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Definimos un bloque de ejecución abriendo llaves&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int a = 0;&lt;/p&gt;  &lt;p&gt;a = a + 1;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Se cierra el primer bloque y se crea un segundo bloque&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int c = 2;&lt;/p&gt;  &lt;p&gt;c = c + j;&lt;/p&gt;  &lt;p&gt;c = c + a; // Instrucción inválida, a no existe en este bloque&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Se cierra el segundo bloque de ejecución&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;En este ejemplo la variable j es global a la clase, esto nos indica que en todo el programa se puede acceder a ella. La variable a es local al primer bloque de ejecución, cuando este bloque es ejecutado por completo la variable a deja de existir. En el segundo bloque, se puede sumar c con j, ya que c es local al bloque y j es global a la clase. La tercera instrucción de dicho bloque es invalida, ya que la variable a murió cuando terminó el primer bloque de ejecución.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.4.- Operadores Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los operadores pueden dividirse en siete grupos, a continuación podemos ver una tabla con los operadores de cada grupo:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores básicos&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="185"&gt;           &lt;p&gt;Opera Sobre&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="303"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="185"&gt;           &lt;p&gt;Objetos, datos miembro&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="303"&gt;           &lt;p&gt;Accede a miembros del objeto&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;(&amp;lt;Tipo&amp;gt;)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="185"&gt;           &lt;p&gt;Tipos de datos&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="303"&gt;           &lt;p&gt;Convierte a un tipo de dato&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;instanceof&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="185"&gt;           &lt;p&gt;Objetos&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="303"&gt;           &lt;p&gt;Provee información sobre la instancia&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 2&lt;/b&gt;. Tabla de operadores básicos.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores aritméticos&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;++/--&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Incrementa o decrementa en uno la variable a la que se le ponga como sufijo (ej.: i++) o prefijo (ej.: ++i)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;+/-&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Invierte el signo de una variable&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;*&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Multiplicación&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;/&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;División&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Resto de la división&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;+/-&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Suma/Resta&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 3&lt;/b&gt;. Tabla de operadores aritméticos.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores lógicos&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;¡&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Invierte el valor de un bolean&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;amp;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Operador AND (Y lógico) a nivel de bits&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;^&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;XOR a nivel de bits&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;|&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Operador OR (O lógico) a nivel de bits&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;amp;&amp;amp;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Operador AND condicional&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;||&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Operador OR condicional&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 4&lt;/b&gt;. Tabla de operadores lógicos.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores de asignación&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;Ejemplo&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;           &lt;p&gt;Equivalencia&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Asignación simple de derecha a izquierda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;a=b+c&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;+=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Evalúa a la derecha y suma a la izquierda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;a+=b&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;           &lt;p&gt;a=a+b&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;-=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Evalúa a la derecha y resta a la izquierda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;a-=b&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;           &lt;p&gt;a=a-b&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;*=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Evalúa a la derecha y multiplica a la izquierda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;a*=b&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;           &lt;p&gt;a=a*b&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="85"&gt;           &lt;p&gt;/=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="370"&gt;           &lt;p&gt;Evalúa a la derecha y divide a la izquierda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p&gt;a/=b&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="70"&gt;           &lt;p&gt;a=a/b&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 5&lt;/b&gt;. Tabla de operadores de asignación.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores de comparación&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;lt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Menor a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Mayor a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;lt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Menor o igual a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Mayor o igual a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;==&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Igual a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;!=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Distinto a&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 6&lt;/b&gt;. Tabla de operadores de comparación.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operadores de nivel de bits&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;~&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;NOT&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;lt;&amp;lt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a izquierda&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt;&amp;gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a derecha&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a derecha y complementa con ceros a la izquierda&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;amp;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;AND&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;!&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;OR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;^&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;XOR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;lt;&amp;lt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a izquierda con asignación&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt;&amp;gt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a derecha con asignación&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&amp;gt;&amp;gt;&amp;gt;=&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="488"&gt;           &lt;p&gt;Traslado a derecha y complementa con ceros a la izquierda con asignación&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 7&lt;/b&gt;. Tabla de operadores de nivel de bits.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Operador ternario&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="301"&gt;           &lt;p&gt;Operador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="302"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="301"&gt;           &lt;p&gt;(expresión 1)?(expresión 2):expresión 3;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="302"&gt;           &lt;p&gt;Evalúa la expresión 1, si es verdadera ejecuta la expresión 2, de lo contrario ejecuta la expresión 3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 8&lt;/b&gt;. Tabla de operador ternario.&lt;/p&gt;  &lt;p&gt;El operador &lt;b&gt;instanceof&lt;/b&gt; permite saber si un objeto pertenece o no a una clase determinada. Es un operador binario y se utiliza de la siguiente manera:    &lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;NombreDeLaInstancia instanceof NombreDeLaClase&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Devuelve &lt;b&gt;true&lt;/b&gt; si el objeto pertenece a la clase y &lt;b&gt;false&lt;/b&gt; en caso contrario.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.4.1.- Precedencia de operadores en Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La precedencia determina en qué orden se van a resolver las operaciones. La siguiente tabla nos muestra la precedencia de operadores en Java.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;Orden&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;Operación&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;[] ()&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;++ -- ! - instanceof&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;new (type) expresión&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;* / %&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;+ -&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&amp;lt;&amp;lt; &amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&amp;lt; &amp;gt; &amp;lt;= &amp;gt;=&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&amp;amp;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;^&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;11&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;!&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;12&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&amp;amp;&amp;amp;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;!!&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;? :&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;15&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;= += -= *= /= %= ^=&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;16&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&amp;amp;= != &amp;lt;&amp;lt;= &amp;gt;&amp;gt;= &amp;gt;&amp;gt;&amp;gt;=&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 9&lt;/b&gt;. Precedencia de operadores en Java.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.5.- Expresiones y sentencias.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Una &lt;b&gt;expresión&lt;/b&gt; es un conjunto de variables unidas por &lt;b&gt;operadores&lt;/b&gt;. Una expresión que termina en &lt;b&gt;punto y coma &lt;/b&gt;es una &lt;b&gt;sentencia&lt;/b&gt;. En una línea pueden ser incluidas varias sentencias, aunque es recomendable utilizar una línea para cada sentencia, ya que facilita la lectura y la comprensión del programa.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.6.- Sentencias de control de flujo.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Estas &lt;b&gt;sentencias&lt;/b&gt; o &lt;b&gt;instrucciones&lt;/b&gt;, como su nombre lo indica, son utilizadas para controlar el flujo del programa, es decir, qué instrucción deberá ejecutar a continuación nuestro programa. A menudo requerimos que no se ejecuten una detrás de la otra, sino que el programa decida un camino en particular. A continuación vamos a ver las sentencias de control de flujo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.6.1.- if-else.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta sentencia significa &amp;quot;si – si no&amp;quot;, si sucede algo hace una cosa, si no, hace otra. Es utilizada para generar bifurcaciones o saltos. Su sintaxis es:&lt;/p&gt;  &lt;p&gt;if(condición)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Instrucciones que se ejecutarán &lt;/p&gt;  &lt;p&gt;si la condición se cumple*/&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;else&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Instrucciones que se ejecutarán &lt;/p&gt;  &lt;p&gt;Si la condición no se cumple*/&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Cuando se cumple una condición se dice que es verdadera, y se representa con &lt;b&gt;true&lt;/b&gt;, si no, es falsa, y es representada por &lt;b&gt;false&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;En algunas ocasiones necesitamos que el programa haga algo si se cumple la condición, pero si no se cumple, queremos que no haga nada, esto quiere decir que no necesitamos el &lt;b&gt;else&lt;/b&gt;. Aunque también podemos tener varias bifurcaciones condicionales del tipo &lt;b&gt;if-else&lt;/b&gt; &lt;b&gt;if&lt;/b&gt;. Veamos un ejemplo en donde apreciemos las distintas formas de utilizar la sentencia &lt;b&gt;if-else&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;public class pruebaIfElse&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int i = 2;&lt;/p&gt;  &lt;p&gt;if(i == 1)&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables es uno&amp;quot;);&lt;/p&gt;  &lt;p&gt;else&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables es distinta de uno&amp;quot;);&lt;/p&gt;  &lt;p&gt;i = i + 2;&lt;/p&gt;  &lt;p&gt;if(i == 3)&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables es tres&amp;quot;);&lt;/p&gt;  &lt;p&gt;else if (i == 4)&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables es cuatro&amp;quot;);&lt;/p&gt;  &lt;p&gt;else&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables no tomó ningún valor esperado&amp;quot;);&lt;/p&gt;  &lt;p&gt;i = i – 3;&lt;/p&gt;  &lt;p&gt;if(i &amp;gt; 0)&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La variables es positiva, y es: &amp;quot; + i);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Si analizamos el programa, vemos que declaramos la variable i, y es inicializada en 2, a continuación verificamos si es igual a 1, ya que esta condición es false, el programa ejecuta el bloque del else, así se obtiene la siguiente salida:&lt;/p&gt;  &lt;p&gt;La variable es distinta de uno&lt;/p&gt;  &lt;p&gt;Luego sumamos 2 a i, quedando en 4, y preguntamos si es igual a 3, como esto es false, continuamos con el siguiente bloque, preguntando si i es igual a 4, ya que esta condición es true se genera la siguiente salida:&lt;/p&gt;  &lt;p&gt;La variable es cuatro&lt;/p&gt;  &lt;p&gt;Por ultimo, restamos 3 a la variable i, quedando en 1, luego verificamos si i es mayor que 0, lo que es true, obteniendo la salida:&lt;/p&gt;  &lt;p&gt;La variable es positiva, y es: 1&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.6.2.- switch.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La sentencia &lt;b&gt;switch&lt;/b&gt; se utiliza cuando una variable puede tomar distintos valores, y dependiendo de cual tome el programa seguirá un camino diferente. Su sintaxis es la siguiente:&lt;/p&gt;  &lt;p&gt;switch(variable)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;case valor1: // instrucciones para valor 1&lt;/p&gt;  &lt;p&gt;case valor2: // instrucciones para valor 2&lt;/p&gt;  &lt;p&gt;...&lt;/p&gt;  &lt;p&gt;case valorN: // instrucciones para valor N&lt;/p&gt;  &lt;p&gt;default: // instrucciones por defecto&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La palabra reservada &lt;b&gt;case&lt;/b&gt; define los posibles caminos según el valor de la variable. Al final encontramos la instrucción &lt;b&gt;default&lt;/b&gt;, y este bloque será ejecutado si la variable no toma ninguno de los valores contemplados. Esta instrucción es opcional, ya que si deseamos que el programa no haga nada en caso de que la variable tome un valor distinto a los contemplados, simplemente la omitimos. La sentencia &lt;b&gt;switch&lt;/b&gt; puede analizar variables del tipo &lt;b&gt;char&lt;/b&gt;, &lt;b&gt;byte&lt;/b&gt;, &lt;b&gt;short&lt;/b&gt; o &lt;b&gt;int&lt;/b&gt;, o expresiones que devuelvan resultados de los tipos mencionados.&lt;/p&gt;  &lt;p&gt;Además, esta sentencia ejecutará el caso que cumpla con la condición, y todos los que siguen hasta el final. Si deseamos que ejecute de forma excluyente el caso que cumpla con el valor de la variable, debemos agregar al final de cada bloque la instrucción de corte &lt;b&gt;break&lt;/b&gt;. Para el caso &lt;b&gt;default&lt;/b&gt; no es necesario agregar &lt;b&gt;break&lt;/b&gt;, ya que es el último caso, y de ejecutarse, no habrán casos posteriores.&lt;/p&gt;  &lt;p&gt;Ahora veremos un ejemplo:&lt;/p&gt;  &lt;p&gt;public class pruebaSwitch&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int i = 2;&lt;/p&gt;  &lt;p&gt;swith(i)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;case 1: System.out.println(&amp;quot;primer caso&amp;quot;);&lt;/p&gt;  &lt;p&gt;break;&lt;/p&gt;  &lt;p&gt;case 2: System.out.println(&amp;quot;segundo caso&amp;quot;);&lt;/p&gt;  &lt;p&gt;case 3: System.out.println(&amp;quot;tercer caso&amp;quot;);&lt;/p&gt;  &lt;p&gt;default: System.out.println(&amp;quot;otro caso&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida que produce el programa será:&lt;/p&gt;  &lt;p&gt;segundo caso&lt;/p&gt;  &lt;p&gt;tercer caso&lt;/p&gt;  &lt;p&gt;otro caso&lt;/p&gt;  &lt;p&gt;En el ejemplo i toma el valor 2, de tal modo que el caso está contemplado en la segunda instrucción del &lt;b&gt;switch&lt;/b&gt;, es decir, en case 2. Se ejecuta el caso que cumple la condición, pero como este no posee &lt;b&gt;break&lt;/b&gt;, también ejecuta las instrucciones siguientes, hasta el final. Pero si modificamos el programa para que i tome el valor 1, la salida seria:&lt;/p&gt;  &lt;p&gt;Primer caso&lt;/p&gt;  &lt;p&gt;Ya que luego de ejecutarse la instrucción correspondiente a case 1, se ejecuta la instrucción de corte, por lo que no se ejecutan los bloques siguientes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.7.- Sentencias de bucle.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En un programa, cada sentencia es ejecutada una sola vez. Sin embrago, algunas veces necesitamos ejecutar varias veces una instrucción o un conjunto de instrucciones. El número de veces que deberá ser ejecutada dicha instrucción está dado por una condición.&lt;/p&gt;  &lt;p&gt;Cuando usamos ciclos condicionales debemos asegurarnos que el corte de control se cumpla, de lo contrario el programa se quedará atrapado en el ciclo y no terminará nunca.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.7.1- while y do-while&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;En un ciclo &lt;b&gt;while&lt;/b&gt; ejecuta un bloque mientras sea verdadera una condición. Su sintaxis es la siguiente:&lt;/p&gt;  &lt;p&gt;while(condición)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* bloque que se ejecutará mientras&lt;/p&gt;  &lt;p&gt;la condición sea verdadera*/&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Supongamos que deseamos mostrar por pantalla los números impares menores que 10. El código de dicho programa sería:&lt;/p&gt;  &lt;p&gt;public class pruebaWhile&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int i = 1;&lt;/p&gt;  &lt;p&gt;while(i&amp;lt;10)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(i);&lt;/p&gt;  &lt;p&gt;i = i + 2;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;no hay mas números impares&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida del programa seria:&lt;/p&gt;  &lt;p&gt;1&lt;/p&gt;  &lt;p&gt;3&lt;/p&gt;  &lt;p&gt;5&lt;/p&gt;  &lt;p&gt;7&lt;/p&gt;  &lt;p&gt;9&lt;/p&gt;  &lt;p&gt;no hay mas números impares&lt;/p&gt;  &lt;p&gt;El programa ejecutó el bloque cinco veces. Cada una de las ejecuciones es conocida como iteración. En el comienzo, i toma el valor 1, por lo que la condición del &lt;b&gt;while&lt;/b&gt; es true, entonces ejecuta el bloque, imprime 1, y luego suma 2 a la variable, quedando en 3. Cuando termina el bloque vuelve a revisar la condición del &lt;b&gt;while&lt;/b&gt;, que nuevamente es verdadera, ejecutando el bloque una vez más. Así sucesivamente. Cuando i toma el valor 11, se vuelve a verificar la condición del &lt;b&gt;while&lt;/b&gt;, pero esta vez es false, por lo que termina el &lt;b&gt;while&lt;/b&gt;, saliendo del bloque de iteración, y continúa ejecutando el resto del programa.&lt;/p&gt;  &lt;p&gt;En algunos casos necesitamos que el bloque de iteración sea ejecutado por lo menos una vez, para luego verificar la condición, si ésta es true ejecuta nuevamente el bloque, de lo contrario el ciclo es terminado. Para ello existe la sentencia llamada &lt;b&gt;do-while&lt;/b&gt;, con la siguiente sintaxis:&lt;/p&gt;  &lt;p&gt;do&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* bloque que se ejecutará mientras&lt;/p&gt;  &lt;p&gt;la condición sea verdadera*/&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;while(condición)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.7.2.- for.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta sentencia es útil cuando deseamos realizar un número determinado de iteraciones. Se utiliza de la siguiente forma:&lt;/p&gt;  &lt;p&gt;for(inicio; condición; iteración)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* bloque de ejecución*/&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Por ejemplo, si necesitamos imprimir los números entre 0 y 5 debemos realizar 6 iteraciones, desde el 0 al 5, y debemos saltar de uno en uno. El código será éste:&lt;/p&gt;  &lt;p&gt;public class pruebaFor&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int i;&lt;/p&gt;  &lt;p&gt;for(i = 0; i&amp;lt;6; i++)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(i);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida generada es:&lt;/p&gt;  &lt;p&gt;0&lt;/p&gt;  &lt;p&gt;1&lt;/p&gt;  &lt;p&gt;2&lt;/p&gt;  &lt;p&gt;3&lt;/p&gt;  &lt;p&gt;4&lt;/p&gt;  &lt;p&gt;5&lt;/p&gt;  &lt;p&gt;Esta sentencia funciona así. Primero inicializa la variable i en 0, esta parte se ejecuta una sola vez. Luego verifica la condición, como es true ejecuta el bloque de iteración. Una vez terminado dicho bloque, ejecuta la tercera parte del &lt;b&gt;for&lt;/b&gt;, incrementando i en 1. Ahora vuelve a corroborar la condición, volviendo a ejecutar el bloque, ya que sigue siendo true. Así sucesivamente, hasta que adquiere el valor 6, dado que 6 no es menor que 6, el ciclo se da por terminado.&lt;/p&gt;  &lt;p&gt;La decisión de utilizar &lt;b&gt;for&lt;/b&gt; o &lt;b&gt;while&lt;/b&gt; dependerá exclusivamente del programador, ya que en cualquier caso se puede usar ambas sentencias para resolver el mismo problema. Aunque es recomendable utilizar &lt;b&gt;for&lt;/b&gt;, ya que el código resulta más simple para su lectura. Para el ejemplo anterior, el código del programa utilizando &lt;b&gt;while&lt;/b&gt; es el siguiente:&lt;/p&gt;  &lt;p&gt;public class pruebaWhileFor&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int i = 0;&lt;/p&gt;  &lt;p&gt;while(i&amp;lt;6)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(i);&lt;/p&gt;  &lt;p&gt;i++;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.8.- Clase System.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A lo largo de este texto hemos utilizado la clase &lt;b&gt;System&lt;/b&gt; para imprimir valores por pantalla, pero esta clase representa varios recursos del sistema, y nos permite acceder a ellos independientemente del sistema operativo que estemos usando. Esta clase no se puede inicializar, y todas sus variables y métodos están declarados como &lt;b&gt;static&lt;/b&gt;, y en todo momento sólo existirá una instancia de dicha clase en el sistema. Para utilizar sus variables y métodos sólo debemos invocarlos. Por ejemplo, para utilizar la variable out lo hacemos así:&lt;/p&gt;  &lt;p&gt;System.out&lt;/p&gt;  &lt;p&gt;De la misma forma procedemos para utilizar &lt;b&gt;println&lt;/b&gt; de la instancia &lt;b&gt;out&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Hola mundo!! &amp;quot;);&lt;/p&gt;  &lt;p&gt;Esto es conocido como &lt;b&gt;Standard I/O&lt;/b&gt;, por input/output, en español entrada/salida.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;System.in&lt;/b&gt;: entrada estándar (Standard input). Se utiliza para leer una entrada de datos del usuario.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;System.out&lt;/b&gt;: salida estándar (Standard output). Se usa para mostrar información al usuario.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;System.err&lt;/b&gt;: error estándar (Standard error). Se utiliza para mostrar mensajes de error al usuario.&lt;/p&gt;  &lt;p&gt;Otro método útil de la clase &lt;b&gt;System&lt;/b&gt; es &lt;b&gt;getProperty()&lt;/b&gt;, el cual no entrega información valiosa acerca del sistema. Por ejemplo, con la siguiente línea obtenemos el nombre de usuario del sistema:&lt;/p&gt;  &lt;p&gt;System.getProperty(&amp;quot;user.name&amp;quot;);&lt;/p&gt;  &lt;p&gt;En la siguiente tabla vemos todas las propiedades que podemos entregarle como parámetro a este método, y que obtenemos con ello:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Propiedad&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;file.separator&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Separador de archivos&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.class.path&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Classpath de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.class.version&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Versión del árbol de clases de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.home&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Directorio de instalación de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.vendor&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Nombre del distribuidor de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.vendor.url&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Dirección de Internet del distribuidor de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;java.version&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Versión de Java&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;line.separator&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Separador de línea&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;os.arch&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Arquitectura del sistema operativo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;os.name&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Nombre del sistema operativo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;os.version&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Versión del sistema operativo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;path.separatoe&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Separador de caminos&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;user.dir&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Directorio actual de trabajo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;user.home&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Directorio Home del usuario&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;&amp;quot;user.name&amp;quot;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Nombre del usuario&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 10&lt;/b&gt;. Lista de propiedades del método &lt;b&gt;getProperty()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;A través de &lt;b&gt;System&lt;/b&gt;, también podemos forzar la ejecución del recolector de basura. Para realizar este procedimiento sólo hay que ejecutar la siguiente instrucción:&lt;/p&gt;  &lt;p&gt;System.gc()&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2.9.- Secuencias de escape.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los lenguajes poseen caracteres especiales conocidos como &lt;b&gt;caracteres de escape&lt;/b&gt;. Una serie de estos caracteres es conocida como &lt;b&gt;secuencia de escape&lt;/b&gt;. Cuando en una línea de texto aparece uno de estos caracteres, el compilador sabe que debe se trata de un &lt;b&gt;carácter de escape&lt;/b&gt;, y qué por lo tanto debe tratarlo de forma especial. Sabemos que una línea de texto debe estar entre comillas. Por ejemplo, la siguiente sentencia:&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Esto es una línea de texto&amp;quot;);&lt;/p&gt;  &lt;p&gt;Imprime por pantalla:&lt;/p&gt;  &lt;p&gt;Esto es una línea de texto&lt;/p&gt;  &lt;p&gt;Si deseamos que la palabra línea se imprima entre comillas, y lo hacemos de la siguiente manera:&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Esto es una &amp;quot;línea &amp;quot; de texto &amp;quot;);&lt;/p&gt;  &lt;p&gt;El compilador arrojará un error, porque interpreta el mensaje como &amp;quot;Esto es una &amp;quot; y el resto no lo entiende. Entonces, la forma correcta de hacerlo es usando caracteres de escape:&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Esto es una \&amp;quot;línea\&amp;quot; de texto&amp;quot;);&lt;/p&gt;  &lt;p&gt;Ahora, cuando el compilador encuentre el carácter \, sabrá que se trata de un carácter especial y sabrá cómo manejarlo. Esta sentencia nos produce la siguiente salida por pantalla:&lt;/p&gt;  &lt;p&gt;Esto es una &amp;quot;línea&amp;quot; de texto&lt;/p&gt;  &lt;p&gt;A continuación se muestran los caracteres de escape posibles y su uso.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Carácter&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;Secuencia de escape&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Contra barra&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\\&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Backspace&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\b&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Retorno de carro&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\r&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Comilla doble&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\&amp;quot;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Form feed&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\f&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Tab horizontal&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\t&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Nueva línea&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\n&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Carácter octal&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\DDD&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Comilla simple&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\’&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="146"&gt;           &lt;p&gt;Carácter unicode&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="326"&gt;           &lt;p&gt;\uHHHH&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 11&lt;/b&gt;. Secuencias de escape.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.- Clases.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.1.- Árbol de clases.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Como lenguaje orientado a objetos puro, en Java todo es una clase o forma parte de una. Lo más tedioso para los programadores que ya tienen alguna experiencia con otros lenguajes es, quizás, conocer todas las clases del árbol de Java, pero una vez entendido cómo está construido dicho árbol, es mucho más fácil incorporar nuevas clases ya implementadas a nuestra aplicación.&lt;/p&gt;  &lt;p&gt;Entonces, cualquier aplicación de Java se entiende como una extensión del &lt;b&gt;árbol de clases&lt;/b&gt;. A diferencia de &lt;b&gt;C++&lt;/b&gt;, no se pueden declarar métodos o variables globales, se pueden simular a través de la sentencia &lt;b&gt;static&lt;/b&gt;. La única sentencia que se puede usar fuera de una clase es &lt;b&gt;import&lt;/b&gt;, pero el compilador reemplaza la sentencia con el contenido del archivo que se indique.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.1.1.- Tipos de clases.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Si nos fijamos en los ejemplos que hemos desarrollado, notamos que todas las clases fueron definidas como &lt;b&gt;public&lt;/b&gt;. Sin embargo, existen 4 modificadores para definir el tipo de clase:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;public&lt;/b&gt;: son las que más libertades poseen, ya que se puede acceder directamente ellas desde otras clases, o por medio de herencia. También son accesibles dentro del mismo paquete en que se han declarado, o desde otros paquetes a través de &lt;b&gt;import&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;abstract&lt;/b&gt;: una clase de este tipo tiene al menos un método abstracto. Este tipo de clase no se &lt;b&gt;instancia&lt;/b&gt;, sino que se utiliza como clase base para la herencia.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;final&lt;/b&gt;: es una clase que termina una herencia. Se puede ver como una hoja del árbol de clases. Desde este tipo de clases no se puede heredar.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;synshronizable&lt;/b&gt;: este modificador especifica que todos los métodos definidos en ella son sincronizados, es decir, que no se puede acceder al mismo tiempo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.2.- Declarar, inicializar y usar un objeto.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Cuando creamos una instancia de un objeto, debemos hacerlo a través de un &lt;b&gt;constructor&lt;/b&gt;. El constructor pertenece al objeto, y lo que hace es tomar todos los recursos necesarios para que el objeto funcione correctamente, y devuelve la instancia del objeto. Entonces, cuando utilizamos la sentencia &lt;b&gt;new&lt;/b&gt;, lo que estamos haciendo es llamar al constructor del objeto.&lt;/p&gt;  &lt;p&gt;Para declarar un objeto se utiliza una sintaxis similar a la usada para declarar variables, es decir:&lt;/p&gt;  &lt;p&gt;NombreDelObjeto nombreDeLaVariable = new NombreDelObjeto();&lt;/p&gt;  &lt;p&gt;La sentencia &lt;b&gt;new&lt;/b&gt; sirve para indicar que queremos una nueva instancia del objeto, y debemos tener en cuenta que este operador nos devuelve una referencia a un objeto, y que esta referencia debe ser asignada a una variable que pueda referenciar dicho objeto.&lt;/p&gt;  &lt;p&gt;Si deseamos crear un objeto de la clase &lt;b&gt;Character,&lt;/b&gt; tenemos que saber que su constructor es parametizado, y el parámetro que recibe es del tipo &lt;b&gt;char&lt;/b&gt;. Para crear una instancia de &lt;b&gt;Character&lt;/b&gt; de nombre c, e inicializada con el parámetro a debemos ejecutar la siguiente sentencia:&lt;/p&gt;  &lt;p&gt;Character c = new Character('a');&lt;/p&gt;  &lt;p&gt;Utilizando el método &amp;quot;&lt;b&gt;charValue()&lt;/b&gt; de la clase &lt;b&gt;Character&lt;/b&gt; podemos ordenarle al objeto que devuelva el valor con que fue instanciado. Para el ejemplo anterior, se envía un mensaje a la instancia c por medio del método &lt;b&gt;charValue()&lt;/b&gt;, obteniendo el char a. El comando para hacer esto es:&lt;/p&gt;  &lt;p&gt;c.charValue()&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.3.- Referenciar variables de un objeto.&lt;/b&gt;    &lt;br /&gt;En ocasiones, las variables y métodos que están dentro de un objeto don públicas, es decir, que no están encapsuladas. En estos casos las podemos referenciar, sin la necesidad de crear un objeto, desde cualquier parte de nuestra aplicación. Para ejemplificar esto, veamos las variables &amp;quot;MAX_VALUE&amp;quot; y &amp;quot;MIN_VALUE&amp;quot; de la clase &lt;b&gt;Integer&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;class PruebaInteger&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public PruebaInteger()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Se muestran las variables públicas de la clase Integer&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Máximo entero: &amp;quot; +Integer.MAX_VALUE);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Mínimo entero: &amp;quot; +Integer.MIN_VALUE);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida de este programa será:&lt;/p&gt;  &lt;p&gt;Máximo entero: 2147483647&lt;/p&gt;  &lt;p&gt;Mínimo entero: -2147483648&lt;/p&gt;  &lt;p&gt;No confundamos el objeto &lt;b&gt;Integer&lt;/b&gt; con el tipo de datos primitivo &lt;b&gt;int&lt;/b&gt;. En este caso, &lt;b&gt;Integer&lt;/b&gt; es la clase que representa al tipo de dato &lt;b&gt;int&lt;/b&gt;, y provee métodos para el manejo de este tipo de dato. En Java todos los tipos de datos primitivos están representados por un objeto. Tenemos el objeto &lt;b&gt;Long&lt;/b&gt; para &lt;b&gt;long&lt;/b&gt;, &lt;b&gt;Character&lt;/b&gt; para &lt;b&gt;char&lt;/b&gt;, &lt;b&gt;Double&lt;/b&gt; para &lt;b&gt;double&lt;/b&gt;, etc.&lt;/p&gt;  &lt;p&gt;Dado que &amp;quot;MAX_VALUE&amp;quot; y &amp;quot;MIN_VALUE&amp;quot; son variables públicas de la clase &lt;b&gt;Integer&lt;/b&gt;, podemos referencialas directamente, sin una instancia. Por otra parte, para respetar un estándar, cuando declaremos variables de este tipo lo haremos siempre en mayúsculas.&lt;/p&gt;  &lt;p&gt;En Java existen cuatro niveles de acceso, y todos son válidos para métodos y variables. Los niveles de acceso son los siguientes:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;public&lt;/b&gt;: se puede acceder a las variables y métodos de instancia publica desde cualquier lugar.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;protected&lt;/b&gt;: sólo las subclases de la clase pueden acceder a las variables y métodos de instancia protegidos.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;private&lt;/b&gt;: Las variables y métodos de instancia privados sólo son accesibles desde dentro de la clase. No son accesibles desde las subclases.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;friendly&lt;/b&gt;: si no se especifica el control de acceso, las variables y métodos de instancia se declaran automáticamente como friendly (amigables). El concepto es el mismo que para &lt;b&gt;protected&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.3.1.- Sentencia static.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En algunos casos vamos a necesitar que una variable no cambie de valor para ninguna instancia de la clase, es decir, que exista una única copia de la variable de instancia. Para esto se utiliza la sentencia &lt;b&gt;static&lt;/b&gt;. Sirve tanto para variables como métodos. Pero un método declarado como &lt;b&gt;static&lt;/b&gt; no podrá acceder a ninguna variable de la clase, ésta es una regla de acceso. Por lo tanto, los métodos estáticos sólo pueden modificar variables estáticas o variables locales. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAU_hHn0UI/AAAAAAAAA3I/Vmngk2saseE/s1600-h/clip_image005%5B3%5D.gif"&gt;&lt;img title="clip_image005" style="display: inline" height="125" alt="clip_image005" src="http://lh3.ggpht.com/foward/SPAVAmK8p4I/AAAAAAAAA3M/PiZLTAizzIg/clip_image005_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Ejemplo de referencia de varios objetos a una&lt;/p&gt;  &lt;p&gt;variable static. A1, A2 y A3 son instancias de A.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.4.- Nuestro primer objeto Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A continuación crearemos la clase &amp;quot;empleado&amp;quot;, que nos sirve para mantener la información de los empleados de una compañía.&lt;/p&gt;  &lt;p&gt;public class Empleado&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Los datos miembros son declarados como privados&lt;/p&gt;  &lt;p&gt;private int legajo;&lt;/p&gt;  &lt;p&gt;private String nombre; &lt;/p&gt;  &lt;p&gt;private float sueldo;&lt;/p&gt;  &lt;p&gt;// Variable pública y estática que almacena el sueldo base de los empleados&lt;/p&gt;  &lt;p&gt;public static flota SUELDO_BASE = 150f;&lt;/p&gt;  &lt;p&gt;// En el constructor por defecto vamos a inicializar las variables&lt;/p&gt;  &lt;p&gt;public Empleado()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.legajo = 0;&lt;/p&gt;  &lt;p&gt;this.nombre = new String();&lt;/p&gt;  &lt;p&gt;this.sueldo = 0.0f;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;/* En el constructor parametrizado inicializaremos las&lt;/p&gt;  &lt;p&gt;variables con los parámetros correspondientes */&lt;/p&gt;  &lt;p&gt;public Empleado(int legajo, String nombre, float sueldo)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.legajo = legajo;&lt;/p&gt;  &lt;p&gt;this.nombre = nombre;&lt;/p&gt;  &lt;p&gt;this.sueldo = sueldo;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// El método getSueldo nos va a devolver el sueldo del empleado&lt;/p&gt;  &lt;p&gt;public flota getSueldo&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(this.sueldo);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Se inicializan dos empleados, uno por medio de el constructor&lt;/p&gt;  &lt;p&gt;parametrizado y el otro utilizando el constructor por defecto */&lt;/p&gt;  &lt;p&gt;Empleado emp1 = new Empleado();&lt;/p&gt;  &lt;p&gt;Empleado emp2 = new Empleado(20, &amp;quot;Pablo&amp;quot;, 700f);&lt;/p&gt;  &lt;p&gt;//Mostraremos los sueldos de emp1 y emp2, además el sueldo base&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Sueldo de empleado 1: &amp;quot; +emp1.getSueldo());&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Sueldo de empleado 2: &amp;quot; +emp2.getSueldo());&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Sueldo base: &amp;quot; +emp1.SUELDO_BASE);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida por pantalla que este programa genera es:&lt;/p&gt;  &lt;p&gt;Sueldo de empleado 1: 0.0&lt;/p&gt;  &lt;p&gt;Sueldo de empleado 2: 700.0&lt;/p&gt;  &lt;p&gt;Sueldo base: 150.0&lt;/p&gt;  &lt;p&gt;Podemos notar que a lo largo de este ejemplo se utilizó la palabra reservada &lt;b&gt;this&lt;/b&gt;. Ésta se utiliza cuando se desea hacer referencia a una variable o a un método que es propio de la clase. Por ejemplo, en el constructor parametrizado, vemos que a &amp;quot;this.nombre&amp;quot;, la variable nombre de la clase, le asigna &amp;quot;nombre&amp;quot;, el nombre recibido como parámetro.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.5.- Eliminar objetos Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En el ejemplo anterior, cuando termina el bloque de ejecución del &lt;b&gt;main&lt;/b&gt;, mueren las instancias emp1 y emp2. No debemos preocuparnos de eliminar los objetos, ya que el &lt;b&gt;Garbage Collector&lt;/b&gt; (recolector de basura) se encargará de eliminar de la memoria los objetos que ya no estén referenciados por nadie.&lt;/p&gt;  &lt;p&gt;El &lt;b&gt;Garbage Collector&lt;/b&gt; llamará al método &lt;b&gt;finalize()&lt;/b&gt; de cada objeto que encuentre sin referencia. La función de este método es destruir un objeto por orden del &lt;b&gt;Garbage Colector&lt;/b&gt;. Como en Java todas las clases heredan de &lt;b&gt;Object&lt;/b&gt;, y ésta tiene el método &lt;b&gt;finalize()&lt;/b&gt; implementado. En otras palabras, todos los objetos que componen Java tienen un método &lt;b&gt;finalize()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.6.- Interfaces.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las interfaces son definiciones de clases abstractas. Éstas pueden contener métodos, pero todos ellos deben ser abstractos. Para los atributos, todos deben ser declarados como &lt;b&gt;static final&lt;/b&gt;, o sea, constantes. Ahora veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;public interface Circulo&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public void dibujar();&lt;/p&gt;  &lt;p&gt;public double getRadio();&lt;/p&gt;  &lt;p&gt;public double getDiametro();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Ahora, toda clase que implemente círculo deberá definir los tres métodos obligatorios. Veamos un ejemplo en donde implementemos la interfaz.&lt;/p&gt;  &lt;p&gt;public class CirculoImplementado implements Circulo&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;double radio;&lt;/p&gt;  &lt;p&gt;public CirculoImplementado(double r)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.radio = r;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void dibujar()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Puedo declarar el método y no agregarle código&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public double getRadio()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(this.radio);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public double getDiametro()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(2*this.radio);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Note que aparece la palabra reservada&lt;b&gt; implements&lt;/b&gt;, y es a través de ella que declaramos que vamos a implementar la interfaz Circulo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.6.1.- Clases anónimas.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Una clase anónima es aquella que esta definida e instanciada en el mismo punto. Llevan ese nombre ya que dichas clases no tienen nombre de clase, y por lo tanto no pueden tener constructor y sólo puede existir una instancia de la clase.&lt;/p&gt;  &lt;p&gt;Veamos el ejemplo de la interfaz Circulo, ahora vamos a declararla como anónima:&lt;/p&gt;  &lt;p&gt;public class CirculoAnonimo&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public CirculoAnonimo(double r)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaro la clase anónima&lt;/p&gt;  &lt;p&gt;new Circulo()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;double radio;&lt;/p&gt;  &lt;p&gt;public void dibujar()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public double getRadio()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(this.radio);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public double getDiametro()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(2*this.radio);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;};&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Se recomienda usar las clases anónimas solamente cuanto éstas tengas a lo más un atributo y dos métodos. Siempre que sea posible, debemos evitar el uso de clases anónimas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.- Paquetes.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.1.- La sentencia import.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Como ya hemos visto, la sentencia &lt;b&gt;import&lt;/b&gt; sirve para importar clases o conjuntos de clases (paquetes) desde el árbol de clases. Debemos recordar que las clases que fueron declaradas como &lt;b&gt;public&lt;/b&gt; dentro del paquete son las únicas que se pueden importar.&lt;/p&gt;  &lt;p&gt;Lo mas difícil de recordar, cuando se aprende Java, es donde se encuentra cada clase, es decir, el árbol de clases. Debemos tener en cuenta que los paquetes, además de contener clases, podrían tener otros paquetes. Se puede hacer una analogía entre los paquetes y los directorios y subdirectorios por un lado, y los archivos y las clases por otro, ya que la organización utilizada para mantener el árbol de clases es la misma.&lt;/p&gt;  &lt;p&gt;Por otra parte, debemos tener en cuenta que existe un conjunto de paquetes generales que contienen a otros paquetes y clases agrupados según su función, es decir, que no es necesario conocer todo el árbol de clases para comenzar a programar, sino que iremos incorporando nuevos paquetes y clases a medida que vayamos aprendiendo el lenguaje.&lt;/p&gt;  &lt;p&gt;import java.until.Vector;&lt;/p&gt;  &lt;p&gt;Esto nos indica que dentro del paquete &lt;b&gt;java&lt;/b&gt; se encuentra un paquete llamado &lt;b&gt;until&lt;/b&gt;, y es dentro de el que está la clase &lt;b&gt;Vector&lt;/b&gt;. Ahora, si necesitamos la clase &lt;b&gt;LinkedList&lt;/b&gt;, que también se encuentra dentro de &lt;b&gt;until&lt;/b&gt;, debemos agregar el siguiente &lt;b&gt;import&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;import java.until.Vector;&lt;/p&gt;  &lt;p&gt;import java.until.LinkedList;&lt;/p&gt;  &lt;p&gt;Ahora, si deseamos importar todas las clases publicas que se encuentran dentro del paquete &lt;b&gt;until&lt;/b&gt;, debemos hacerlo así:&lt;/p&gt;  &lt;p&gt;import java.until.*;&lt;/p&gt;  &lt;p&gt;Al usar &lt;b&gt;import&lt;/b&gt; debemos tener en cuenta que al final de una sentencia debe haber una clase publica o un asterisco que haga referencia al menos a una clase. Por lo tanto la ésta sentencia es incorrecta:&lt;/p&gt;  &lt;p&gt;import java.until; // until es un paquete y no una clase&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.2.- Archivos JAR.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Luego de desarrollar nuestras aplicaciones, necesitamos distribuirlas de forma práctica y sencilla. Esto lo logramos a través de los archivos &lt;b&gt;JAR&lt;/b&gt;, que pueden contener un conjunto de paquetes y clases, de tal forma que, agregando el archivo a nuestro proyecto extendemos el árbol de clases. Todas las clases que contenga el archivo &lt;b&gt;JAR&lt;/b&gt; las importamos por medio de la sentencia &lt;b&gt;import&lt;/b&gt;. El comando utilizado para crear estos archivos es:&lt;/p&gt;  &lt;p&gt;jar{ctxu}[vfm0M] [nombre del jar] [archivo mainfest] [-C directorio] archivos&lt;/p&gt;  &lt;p&gt;Las opciones más comunes son:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;Comando&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Resultado&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;C&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Crea un nuevo archivo JAR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;T&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Muestra el contenido de un archivo JAR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;X&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Extrae las clases de un archivo JAR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;U&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Actualiza un JAR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;V&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Genera salida por pantalla&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;F&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Especifica el nombre del archivo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;M&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Incluye un archivo manifies&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;           &lt;p&gt;0&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="288"&gt;           &lt;p&gt;Sólo almacenamiento, sin compresión&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 1&lt;/b&gt;. Comandos para crear archivos &lt;b&gt;JAR&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Ahora, como ejemplo, crearemos un archivo &lt;b&gt;JAR&lt;/b&gt; con las clases del ejemplo de interfaces, las clases eran Circulo y CirculoImplementado. El comando para crear ejemplo.jar seria:&lt;/p&gt;  &lt;p&gt;jar cvf ejemplo.jar Circulo.class CirculoImplementado.class&lt;/p&gt;  &lt;p&gt;Ahora, la forma de ejecutar dicho archivo es mediante el comando &lt;b&gt;java&lt;/b&gt;, pero debemos especificar cual de las clases del &lt;b&gt;JAR&lt;/b&gt; contiene el programa principal (main). Para ello se usa el &lt;b&gt;manifes&lt;/b&gt;, o archivo manifiesto. Ahora debemos crear un archivo manifiesto para nuestro &lt;b&gt;JAR&lt;/b&gt;, que será de texto plano y quedará así:&lt;/p&gt;  &lt;p&gt;Manifest-Version: 1.0&lt;/p&gt;  &lt;p&gt;Main-Class: PruebaHerencia&lt;/p&gt;  &lt;p&gt;Ahora podemos ejecutar el ejemplo con el comando &lt;b&gt;java&lt;/b&gt; de la siguiente manera:&lt;/p&gt;  &lt;p&gt;java -jar ejemplo.jar&lt;/p&gt;  &lt;p&gt;El formato del archivo &lt;b&gt;JAR&lt;/b&gt; es similar al de los archivos &lt;b&gt;ZIP&lt;/b&gt;, por lo que utilizando una herramienta como &lt;b&gt;WinZip&lt;/b&gt; podemos ver el contenido de estos archivos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.3.- Classpath.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El &lt;b&gt;classpath&lt;/b&gt; es el camino de las clases, y sirve para indicarle a Java dónde están las clases que queremos usar. Podemos definir el classpath de dos formas, una primera es usando la opción ­&lt;b&gt;-classpath&lt;/b&gt; del intérprete Java, la segunda es definiendo una variable de entorno en el sistema operativo. Cada una tiene sus ventajas y desventajas. Si lo definimos como variable de entorno no tenemos que escribir el classpath cada vez que compilamos o ejecutamos nuestra aplicación, pero el classpath puede cambiar de acuerdo con la aplicación.&lt;/p&gt;  &lt;p&gt;Supongamos la siguiente clase:&lt;/p&gt;  &lt;p&gt;import CirculoImplementado;&lt;/p&gt;  &lt;p&gt;public class PruebaCamino&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;CirculoImplementado a = new CirculoImplementado();&lt;/p&gt;  &lt;p&gt;public CirculoAnonimo()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Como vemos, estamos usando la clase CirculoImplementado, que se encuentra dentro del archivo ejemplo.jar, por eso lo importamos con la sentencia &lt;b&gt;import&lt;/b&gt;. Para poder compilar y ejecutar esta clase debemos agregar ejemplo.jar en el &lt;b&gt;classpath&lt;/b&gt;, y así extender el árbol de clases de Java, pidiéndole que incorpore las clases Circulo y CirculoImplementado. Suponiendo que el archivo ejemplo.jar se encuentra en c:\misJar, el código para compilar es el siguiente:&lt;/p&gt;  &lt;p&gt;javac -classpath c:\misJar\ejemplo.jar PruebaCamino.java&lt;/p&gt;  &lt;p&gt;Y el código para ejecutar es:&lt;/p&gt;  &lt;p&gt;java -classpath c:\misJar\ejemplo.jar PruebaCamino.java&lt;/p&gt;  &lt;p&gt;Además, podemos utilizar más de una clase, que estén en distintas partes del disco. Para hacerlo debemos agregar a nuestro &lt;b&gt;classpath&lt;/b&gt; todos los caminos separados con un punto y coma (;) si estamos en &lt;b&gt;Windows&lt;/b&gt; o con dos puntos (:) si estamos en &lt;b&gt;Linux&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Si deseamos crear la variable de entorno debemos hacerlo utilizando el comando &lt;b&gt;set&lt;/b&gt;, usando el mismo criterio:&lt;/p&gt;  &lt;p&gt;set CLASSPATH=c:\misJar\ejemplo.jar&lt;/p&gt;  &lt;p&gt;Ahora, para compilar y ejecutar se utilizaría, respectivamente:&lt;/p&gt;  &lt;p&gt;javac PruebaCamino.java&lt;/p&gt;  &lt;p&gt;java PruebaCamino.java&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.4.- Creación de paquetes.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ahora que sabemos cómo usar paquetes y crear distribuciones, falta saber cómo crear estos paquetes, es decir, cómo agrupar nuestras clases según un criterio. Para esto existe la sentencia &lt;b&gt;package&lt;/b&gt;. Esta sentencia se agrega al principio del archivo, y su sintaxis es:&lt;/p&gt;  &lt;p&gt;package nombreDelPaquete;&lt;/p&gt;  &lt;p&gt;Con esta línea se declara que la clase que está a continuación pertenece al paquete declarado. Por medio de la sentencia &lt;b&gt;import&lt;/b&gt;, lo que evitamos es el conflicto entre nombres de clases. Es decir que en Java podemos tener varias clases con el mismo nombre, pero si deseamos usar dos en el mismo programa, estaremos obligados a usarlas con el nombre completo en cada referencia. Esto ocurre por ejemplo con la clase &lt;b&gt;Date&lt;/b&gt;, que se encuentra en el paquete &lt;b&gt;java.until&lt;/b&gt; y en &lt;b&gt;java.sql&lt;/b&gt;. Si deseamos usarlas, no podemos hacer:&lt;/p&gt;  &lt;p&gt;import java.until.Date;&lt;/p&gt;  &lt;p&gt;import java.sql.Date;&lt;/p&gt;  &lt;p&gt;public class PruebaImport&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Date s;&lt;/p&gt;  &lt;p&gt;Date m;&lt;/p&gt;  &lt;p&gt;public PruebaImport()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Esto nos arrojará un error de doble &lt;b&gt;import&lt;/b&gt;, porque no sabrá si queremos declarar las variables como &lt;b&gt;Date&lt;/b&gt; de &lt;b&gt;java.until&lt;/b&gt; o de &lt;b&gt;java.sql&lt;/b&gt;. La forma correcta de hacerlo es:&lt;/p&gt;  &lt;p&gt;import java.until.Date;&lt;/p&gt;  &lt;p&gt;import java.sql.Date;&lt;/p&gt;  &lt;p&gt;public class PruebaImport&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;java.until.Date s;&lt;/p&gt;  &lt;p&gt;java.sql.Date m;&lt;/p&gt;  &lt;p&gt;public PruebaImport()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;De esta forma declaramos a s como &lt;b&gt;Date&lt;/b&gt; del paquete &lt;b&gt;java.until&lt;/b&gt; y a m como &lt;b&gt;Date&lt;/b&gt; del paquete &lt;b&gt;java.sql&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.4.1.- Árbol de paquetes o subpaquetes.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En algunos casos necesitamos crear un paquete dentro de otro, por ejemplo, supongamos que deseamos armar la estructura de la &lt;b&gt;Figura&lt;/b&gt;&lt;b&gt;1&lt;/b&gt;:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="116"&gt;           &lt;p&gt;Sistema&lt;/p&gt;         &lt;/td&gt;          &lt;td width="85"&gt;           &lt;p&gt;Paquete&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="61"&gt;&lt;/td&gt;          &lt;td width="55"&gt;&lt;/td&gt;          &lt;td width="85"&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="116"&gt;           &lt;p&gt;Personas&lt;/p&gt;         &lt;/td&gt;          &lt;td width="85"&gt;           &lt;p&gt;Paquete&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="61"&gt;&lt;/td&gt;          &lt;td width="55"&gt;&lt;/td&gt;          &lt;td width="85"&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="116"&gt;           &lt;p&gt;Empleado&lt;/p&gt;         &lt;/td&gt;          &lt;td width="85"&gt;           &lt;p&gt;Clase&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Estructura de paquetes que deseamos lograr.&lt;/p&gt;  &lt;p&gt;La declaración para la clase Empleado será:&lt;/p&gt;  &lt;p&gt;// Declaro que empleado está dentro de personas, y personas dentro de sistema&lt;/p&gt;  &lt;p&gt;package sistema.personas;&lt;/p&gt;  &lt;p&gt;public class Empleado&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public Empleado()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Ahora, cuando necesitemos usar Empleado, el &lt;b&gt;import&lt;/b&gt; será:&lt;/p&gt;  &lt;p&gt;import sistema.personas.*;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.5.- La clase Object.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Como ya hemos visto anteriormente, &lt;b&gt;Object&lt;/b&gt; es la clase superior de la jerarquía de Java, lo que equivale a decir que todas las clases de Java dependen de &lt;b&gt;Object&lt;/b&gt;. Esta clase define algunos métodos que por herencia tendrán todas las clases de Java. Los métodos más importantes son:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;clone()&lt;/b&gt;: crea un objeto a partir de otro de la misma clase. Si no puede hacerlo, lanza una excepción del tipo &lt;b&gt;CloneNotSupportedException&lt;/b&gt;. Si queremos que nuestras clases tengas esta capacidad, debemos implementar la interfaz &lt;b&gt;Clonable&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;equals()&lt;/b&gt;: sirve para saber si dos objetos son iguales. Devuelve &lt;b&gt;true&lt;/b&gt; si son referencia de la misma clase, o si son objetos diferentes pero con iguales valores en sus variables miembro, de lo contrario retorna &lt;b&gt;false&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;toString()&lt;/b&gt;: devuelve una cadena que contiene una representación del objeto como cadena de caracteres.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;finalize()&lt;/b&gt;: es llamado por el &lt;b&gt;Garbage Collector&lt;/b&gt; para eliminar un objeto.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;notify()&lt;/b&gt;, &lt;b&gt;notifyAll()&lt;/b&gt; y &lt;b&gt;wait()&lt;/b&gt;: como Java fue creado en un momento en que la teoría de hilos estaba totalmente desarrollada, tenemos estos tres métodos que sirven para programar cualquier objeto Java como un &lt;b&gt;Thread&lt;/b&gt; (hilo).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.6.- Conversión de tipos.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A veces tenemos determinada clase de datos, pero lo necesitamos representado en otro tipo. Este cambio podemos necesitarlo entre tipos de datos primitivos. La conversión de tipos o &lt;b&gt;casting&lt;/b&gt; es de una variable de mayor a una de menor precisión, debemos hacerla explícitamente porque es una conversión insegura y puede provocar errores. Para hacer la conversión explícita hay que anteponer el tipo al que deseamos convertir entre paréntesis. Por ejemplo, supongamos que hacemos la división entre dos &lt;b&gt;double&lt;/b&gt; y queremos almacenar el resultado en un &lt;b&gt;float&lt;/b&gt;. Entonces haremos:&lt;/p&gt;  &lt;p&gt;double b=4;&lt;/p&gt;  &lt;p&gt;double c=2;&lt;/p&gt;  &lt;p&gt;float a = (double) (b/c)&lt;/p&gt;  &lt;p&gt;Entre clases el casting es igual, sólo que conceptualmente no estamos reduciendo ni aumentando la precisión, sólo estamos cambiando la referencia.&lt;/p&gt;  &lt;p&gt;Object a;&lt;/p&gt;  &lt;p&gt;Integer b = (Integer) a;&lt;/p&gt;  &lt;p&gt;Es bastante común hacerlo para usar los métodos de la clase a la cual convertimos, por que en la clase actual no tenemos dichos métodos. Sin embargo, para el casting entre clases, Java obliga a que entre ellas haya una relación por herencia. La conversión es implícita de la subclase a la superclase, y explícita si es a la inversa, es decir, de la superclase a la subclase.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.- Algunas clases de Java.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A continuación mencionaremos las clases más usadas de Java, y alguno de sus métodos. Además, entregaremos una serie de aspectos relevante que hay que conocer de una clase antes de usarla. Ellos son:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Descripción&lt;/b&gt;: para describir brevemente para qué sirve la clase.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Tipo&lt;/b&gt;: para saber cómo está declarada la clase.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: para saber en qué rama del árbol de clases se encuentra.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: cuál es la superclase, es decir, de quién hereda.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: si tiene subclases, cuáles son.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;: para saber qué interfaz implementa, en caso de que lo haga.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: cuáles son sus atributos miembro.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;: cómo se crea la clase en caso de ser instanciada.&lt;/p&gt;  &lt;p&gt;Finalmente, los métodos más usados los veremos mediante ejemplos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.1.- Math.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta clase nos provee una serie de métodos para evaluar las funciones matemáticas más comunes. A continuación describimos sus principales características:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Tipo&lt;/b&gt;: public final class.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: &lt;b&gt;java.lang&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: &lt;b&gt;java.lang.Object&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: dos constantes &lt;b&gt;static&lt;/b&gt;: &lt;b&gt;E&lt;/b&gt; y &lt;b&gt;PI&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;: no tiene, recuerde que todos sus atributos y métodos son estáticos.&lt;/p&gt;  &lt;p&gt;Ahora veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;import java.lang.*;&lt;/p&gt;  &lt;p&gt;public class UsoClaseMath&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public UsoClaseMath()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El valor de PI es: &amp;quot; +Math.PI);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La raíz cuadrada de 25 es: &amp;quot; +Math.sqrt(25));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;5 elevado al cuadrado es: &amp;quot; +Math.pow(5,2));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El coseno de 60 es: &amp;quot; +Math.cos(60));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El seno de 60 es: &amp;quot; +Math.sen(60));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;La tangente de 60 es: &amp;quot; +Math.tan(60));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El valor absoluto de -10 es: &amp;quot; +Math.abs(-10));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El mínimo entre 2 y 8 es: &amp;quot; +Math.min(2,8));&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El máximo entre 2 y 8 es: &amp;quot; +Math.max(2,8));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new UsoClaseMath();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida del programa es:&lt;/p&gt;  &lt;p&gt;El valor de PI es: 3.3141592653589793&lt;/p&gt;  &lt;p&gt;La raíz cuadrada de 25 es: 5.0&lt;/p&gt;  &lt;p&gt;5 elevado al cuadrado es: 25.0&lt;/p&gt;  &lt;p&gt;El coseno de 60 es: -0.9524129804151563&lt;/p&gt;  &lt;p&gt;El seno de 60 es: -0.3048106211022167&lt;/p&gt;  &lt;p&gt;La tangente de 60 es: 0.320040389379563&lt;/p&gt;  &lt;p&gt;El valor absoluto de -10 es: 10&lt;/p&gt;  &lt;p&gt;El mínimo entre 2 y 8 es: 2&lt;/p&gt;  &lt;p&gt;El máximo entre 2 y 8 es: 8&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.2.- Integer.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase &lt;b&gt;Integer&lt;/b&gt; representa el tipo de dato primitivo &lt;b&gt;int&lt;/b&gt;. Sus principales características:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: &lt;b&gt;java.lang&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: &lt;b&gt;java.lang.Number&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;: &lt;b&gt;Comparable&lt;/b&gt;, &lt;b&gt;Serializable&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: Tiene tres constantes &lt;b&gt;static&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;MAX_VALUE&lt;/b&gt;: el valor máximo representable por &lt;b&gt;int&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;MIN_VALUE&lt;/b&gt;: el valor mínimo representable por &lt;b&gt;int&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;TYPE&lt;/b&gt;: el tipo de dato que representa.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;Integer(int value)&lt;/b&gt;, que crea una instancia &lt;b&gt;Integer&lt;/b&gt; a partir del tipo primitivo &lt;b&gt;int.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;Integer(String s)&lt;/b&gt;, que crea una instancia &lt;b&gt;Integer&lt;/b&gt; a partir del objeto &lt;b&gt;String&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Ejemplo de uso:&lt;/p&gt;  &lt;p&gt;public class UsoClaseInteger&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Integer c;&lt;/p&gt;  &lt;p&gt;public UsoClaseInteger()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Creamos un Integer desde un int&lt;/p&gt;  &lt;p&gt;Integer a = new Integer(1);&lt;/p&gt;  &lt;p&gt;// Creamos un Integer desde un String&lt;/p&gt;  &lt;p&gt;Integer b = new Integer(&amp;quot;1&amp;quot;);&lt;/p&gt;  &lt;p&gt;// Si compareTo devuelve 0 quiere decir que los dos Integer son iguales&lt;/p&gt;  &lt;p&gt;if(a.compareTo(b) == 0)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// intValue() devuelve el int con que está instanciado Integer&lt;/p&gt;  &lt;p&gt;int suma = a.intValue() + b.intValue();&lt;/p&gt;  &lt;p&gt;c = new Integer(suma);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Convertimos el Integer a String usando el método toString()&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;El resultado es: &amp;quot; +c.toString());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new UsoClaseInteger();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Luego, la salida por pantalla es:&lt;/p&gt;  &lt;p&gt;El resultado es: 2&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.3.- Random.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta clase genera números &lt;b&gt;pseudorandom&lt;/b&gt;. Sus características son:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: &lt;b&gt;java.until&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: &lt;b&gt;java.until.Object&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: &lt;b&gt;SecureRandom&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;: &lt;b&gt;Serializable&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;Random()&lt;/b&gt;: Crea un nuevo generador de números aleatorios.&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;Random(long seed)&lt;/b&gt;: Crea un nuevo generador de números aleatorios a partir de una semilla para no repetir secuencias.&lt;/p&gt;  &lt;p&gt;Ejemplo de uso:&lt;/p&gt;  &lt;p&gt;import java.until.*;&lt;/p&gt;  &lt;p&gt;public class UsoClaseRandom&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public UsoClaseRandom()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Random r = new Random()&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Flotantes pseudoaleatorios:&amp;quot;);&lt;/p&gt;  &lt;p&gt;for(int i = 0; i &amp;lt; 5; i++)&lt;/p&gt;  &lt;p&gt;System.out.print(r.nextFloat() + &amp;quot; &amp;quot;);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;\nEnteros pseudoaleatorios entre 0 y 50:&amp;quot;);&lt;/p&gt;  &lt;p&gt;for(int i = 0; i &amp;lt; 5; i++)&lt;/p&gt;  &lt;p&gt;System.out.print(r.nextInt(50) + &amp;quot; &amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new UsoClaseRandom();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Luego, la salida por pantalla es:&lt;/p&gt;  &lt;p&gt;Flotantes pseudoaleatorios:&lt;/p&gt;  &lt;p&gt;0.22639495 0.8039619 0.51486355 0.37433088 0.26232278&lt;/p&gt;  &lt;p&gt;Enteros pseudoaleatorios entre 0 y 50:&lt;/p&gt;  &lt;p&gt;30 6 41 45 18&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.4.- StringTokenizer.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase &lt;b&gt;StringTokenzer&lt;/b&gt; permite dividir un &lt;b&gt;String&lt;/b&gt; entre &lt;b&gt;tokens&lt;/b&gt;, o delimitadores, de forma simple. Sus principales características:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: &lt;b&gt;java.until&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: &lt;b&gt;java.until.Object&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;: &lt;b&gt;Enumeration&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;StringTokenizer(String str)&lt;/b&gt;: crea un string &lt;b&gt;tokenizer&lt;/b&gt; a partir de un string.&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;StringTokenizer(String str, String delim)&lt;/b&gt;: crea un string &lt;b&gt;tokenizer&lt;/b&gt; a partir de un string, permitiendo declarar cuál es el delimitador.&lt;/p&gt;  &lt;p&gt;- &lt;b&gt;StringTokenizer(String str, String delim, bolean returnDelims)&lt;/b&gt;: crea un string &lt;b&gt;tokenizer&lt;/b&gt; a partir de un string, permitiendo declarar cuál es el delimitador y si el delimitador es parte de la cadena devuelta.&lt;/p&gt;  &lt;p&gt;Ejemplo de uso:&lt;/p&gt;  &lt;p&gt;import java.until.*;&lt;/p&gt;  &lt;p&gt;public class UsoClaseStringTokenizer&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;String cadena = &amp;quot;Diego|27|011-4486-5863|Amabay 258|1754&amp;quot;&lt;/p&gt;  &lt;p&gt;public UsoClaseStringTokenizer()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Creamos el objeto con la cadena y el delimitados&lt;/p&gt;  &lt;p&gt;StringTokenizer stk = new StringTokenizer(cadena,&amp;quot;|&amp;quot;,);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Cantidad de tokens: &amp;quot; +stk.countTokens());&lt;/p&gt;  &lt;p&gt;// Mientras haya más tokend&lt;/p&gt;  &lt;p&gt;while(stk.hasMoreTokens())&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Tomo el siguiente y lo muestro&lt;/p&gt;  &lt;p&gt;System.out.println(stk.nexElement());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Cantidad de tokens: &amp;quot; +stk.countTokens());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new UsoClaseStringTokenizer();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida del programa es:&lt;/p&gt;  &lt;p&gt;Cantidad de tokens: 5&lt;/p&gt;  &lt;p&gt;Diego&lt;/p&gt;  &lt;p&gt;27&lt;/p&gt;  &lt;p&gt;011-4486-5863&lt;/p&gt;  &lt;p&gt;Amabay 258&lt;/p&gt;  &lt;p&gt;1754&lt;/p&gt;  &lt;p&gt;Cantidad de tokens: 0&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.7.5.- Runtime.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase &lt;b&gt;Runtime&lt;/b&gt; permite a la aplicación comunicarse con el sistema operativo en el cual se está ejecutando. Sus características son:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Ubicación&lt;/b&gt;: &lt;b&gt;java.until&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Superclase&lt;/b&gt;: &lt;b&gt;java.until.Object&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Subclase&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Implementa&lt;/b&gt;:-&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Atributos&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Constructores&lt;/b&gt;: -&lt;/p&gt;  &lt;p&gt;Veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;public class UsoClaseRuntime&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public UsoClaseStringRuntime()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Runtime rt = Runtime.getRuntime();&lt;/p&gt;  &lt;p&gt;try{&lt;/p&gt;  &lt;p&gt;// A través del método exec() ejecutamos notepad de Windows&lt;/p&gt;  &lt;p&gt;rt.exec(&amp;quot;C:\\WINDOWS\\NOTEPAD:EXE&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;match(Exception ex){}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new UsoClaseRuntime();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.- Vectores y matrices. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.1.- Secuencias de variables.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Muchas veces, cuando programamos, nos encontramos con variables que tienes cosas en común y que guardan elación entre sí. Una de las herramientas que se utilizan para almacenar estas secuencias de variables son los vectores (&lt;b&gt;array&lt;/b&gt;), en otras palabras, éstos representan una secuencia de cosas.&lt;/p&gt;  &lt;p&gt;La representación más común de vectores es la siguiente:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="38"&gt;           &lt;p&gt;J&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;A&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;V&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;A&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Representación de un arreglo.&lt;/p&gt;  &lt;p&gt;Los vectores no son conjuntos, porque en un conjunto no importa el orden y no se pueden repetir elementos. En un vector podemos tener el mismo elemento repetido todas las veces que lo necesitemos.&lt;/p&gt;  &lt;p&gt;Para acceder a un elemento del vector lo hacemos a través de su índice. En nuestro ejemplo de la &lt;b&gt;Figura&lt;/b&gt;&lt;b&gt; 1&lt;/b&gt;, dicho índice va de 0 a 3, es decir, que el elemento de la posición 2 es V (&lt;b&gt;Figura 2&lt;/b&gt;).    &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="38"&gt;           &lt;p&gt;Longitud = 4&lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="38"&gt;           &lt;p&gt;J&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;A&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;V&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;A&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="38"&gt;           &lt;p&gt;0&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;Índices&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 2&lt;/b&gt;. Propiedades de un array.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.2.- Arreglos unidimensionales.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los arreglos unidimensionales no son más que vectores de una dimensión. La definición de estos vectores es la siguiente:&lt;/p&gt;  &lt;p&gt;TipoDeDato nombreDelVector[] = new TipoDeDato[cantidad de elementos];&lt;/p&gt;  &lt;p&gt;Por ejemplo, para definir un vector de diez números enteros, se hace de la así:&lt;/p&gt;  &lt;p&gt;int vector[] = new int[10];&lt;/p&gt;  &lt;p&gt;Para cargar el vector, sencillamente lo hacemos a través del índice. Supongamos que deseamos poner un número en la quinta posición del vector. Recordemos ahora que la quinta posición lleva el índice cuatro, ya que el índice de los vectores comienza desde cero.&lt;/p&gt;  &lt;p&gt;vector[4] = 8; // En el índice 4 se cargo el número 8&lt;/p&gt;  &lt;p&gt;Ahora vamos a usar la sentencia &lt;b&gt;for&lt;/b&gt; para cargar el vector completo:&lt;/p&gt;  &lt;p&gt;for(int i=9; i&amp;lt;10; i++)&lt;/p&gt;  &lt;p&gt;vector[i] = i;&lt;/p&gt;  &lt;p&gt;Entonces el vector queda como se observa a continuación:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="38"&gt;           &lt;p&gt;0&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;          &lt;td width="38"&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 3&lt;/b&gt;. Vector cargado con un &lt;b&gt;for&lt;/b&gt; de 0 a 9.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.3.- Algoritmos.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En Java existe la clase &lt;b&gt;Collections&lt;/b&gt;, la cual implementa una buena cantidad de algoritmos estáticos que operan sobre colecciones.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;sort()&lt;/b&gt;: implementa un método de ordenamiento mediante &lt;b&gt;MerdeSort&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;reverse()&lt;/b&gt;: invierte el orden de los elementos del arreglo.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;binarySearch()&lt;/b&gt;: implementa búsqueda binaria de un elemento en particular.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;copy()&lt;/b&gt;: recibe dos listas y copia todos los elementos de una lista a la otra.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;fill()&lt;/b&gt;: llena el arreglo con un objeto determinado. Es muy útil para &amp;quot;limpiar&amp;quot;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;max()&lt;/b&gt;: devuelve el máximo de acuerdo con un comparador.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;min()&lt;/b&gt;:devuelve el mínimo de acuerdo con un comparador.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.- Herencia: Subclases y superclases.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.1.- Herencia simple.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Hay veces que estamos frente a objetos que presentan entre sí ciertas similitudes. Por ejemplo, si tenemos la clase Persona, a partir de ella podemos definir Empleado, Alumno, Cliente, etc., ya que todos son personas. Frente a esto, la programación orientada a objetos provee la herencia, de forma tal que podemos construir objetos a partir de otros, de los cuales heredará sus atributos y métodos.&lt;/p&gt;  &lt;p&gt;Java implementa la &lt;b&gt;herencia simple&lt;/b&gt;, es decir que cada clase puede tener sólo una superclase. Para declarar que una clase hereda de otra se una la palabra reservada &lt;b&gt;extends&lt;/b&gt; y a continuación el nombre de la superclase. Recordemos que en java &amp;quot;todas&amp;quot; las clases heredan de otra (&lt;b&gt;Figura 1&lt;/b&gt;), ya que, de no especificar la superclase, se asume que hereda de &lt;b&gt;java.lang.Object&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAVBhaFzNI/AAAAAAAAA3Q/3HJNgDT-yt4/s1600-h/clip_image006%5B3%5D.gif"&gt;&lt;img title="clip_image006" style="display: inline" height="58" alt="clip_image006" src="http://lh4.ggpht.com/foward/SPAVDJprUnI/AAAAAAAAA3U/NfXZfE99SiM/clip_image006_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 1&lt;/b&gt;. &lt;b&gt;Number&lt;/b&gt; es superclase o clase padre de &lt;b&gt;Integer&lt;/b&gt;, &lt;b&gt;Float&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;y &lt;b&gt;Double&lt;/b&gt;. A su vez, éstas son subclases o clases hijas de &lt;b&gt;Number&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.1.1.- ¿Que variable miembro hereda una subclase?.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La herencia depende del modificador que tenga la variable miembro de la clase, es decir, cómo está declarada la clase. Recordemos que los modificadores de los métodos y las variables pueden ser &lt;b&gt;public&lt;/b&gt;, &lt;b&gt;protected&lt;/b&gt; o &lt;b&gt;private&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;La herencia o el acceso a esos métodos y variables depende también de si la clase de la cual heredamos se encuentra en el mismo paquete de clase que estamos programando o en otro.&lt;/p&gt;  &lt;p&gt;En Tabla 1 y Tabla 2 vemos la visibilidad de acuerdo con los modificadores.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Modificador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Se hereda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Es accesible&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Si modificador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Public&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Protected&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Private&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 1&lt;/b&gt;. Acceso y herencia de métodos de clases&lt;/p&gt;  &lt;p&gt;que se encuentran dentro del mismo paquete.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Modificador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Se hereda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Es accesible&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Si modificador&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Public&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Protected&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;Sí&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="119"&gt;           &lt;p&gt;Private&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="91"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="103"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 2&lt;/b&gt;. Acceso y herencia de métodos de clases&lt;/p&gt;  &lt;p&gt;que se encuentran en otros paquete.&lt;/p&gt;  &lt;p&gt;Ahora vamos a implementar la clase Persona, y a partir de ella vamos implementaremos la clase alumno, para ejemplificar la teoría (&lt;b&gt;Figura 2&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAVDst9EII/AAAAAAAAA3Y/AgdlotdfQyQ/s1600-h/clip_image007%5B3%5D.gif"&gt;&lt;img title="clip_image007" style="display: inline" height="87" alt="clip_image007" src="http://lh4.ggpht.com/foward/SPAVEvJd2rI/AAAAAAAAA3c/Xq8xQOG9h10/clip_image007_thumb.gif?imgmax=800" width="131" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 2&lt;/b&gt;. Alumno hereda de Persona.&lt;/p&gt;  &lt;p&gt;public class Persona&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Note que codigo es declarado private y nombre protected&lt;/p&gt;  &lt;p&gt;private int codigo;&lt;/p&gt;  &lt;p&gt;protected String nombre;&lt;/p&gt;  &lt;p&gt;// El constructor no hace nada&lt;/p&gt;  &lt;p&gt;public Persona()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;/* Se definen los métodos set y get, para poner y sacar,&lt;/p&gt;  &lt;p&gt;respectivamente, el valor de codigo, ya que éste es privado */&lt;/p&gt;  &lt;p&gt;public void setCodigo(int codigo)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.codigo = codigo;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void getCodigo()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(this.codigo);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// También agregamos los métodos para acceder al nombre&lt;/p&gt;  &lt;p&gt;public void setNombre(String nombre)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.nombre = nombre;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void getNombre()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return(this.nombre);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Este método muesta los datos de la persona&lt;/p&gt;  &lt;p&gt;public void mostrar()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Código: &amp;quot; +this.codigo);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Nombre: &amp;quot; +this.nombre);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Ahora veamos la clase alumno:&lt;/p&gt;  &lt;p&gt;// Usamos extends para declarar que Alumno está heredando a Persona&lt;/p&gt;  &lt;p&gt;public class Alumno extends Persona&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Declaramos los datos de Alumno, nombre y codigo&lt;/p&gt;  &lt;p&gt;no debemos declararlas porque se heredan */&lt;/p&gt;  &lt;p&gt;float int notaPrimerCertamen;&lt;/p&gt;  &lt;p&gt;float int notaSegundoCertamen;&lt;/p&gt;  &lt;p&gt;public Alumno(int codigo, String nombre, float notaPrimero, float notaSegundo)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Con super hacemos referencia a la variable nombre de la clase padre&lt;/p&gt;  &lt;p&gt;super.nombre = nombre;&lt;/p&gt;  &lt;p&gt;// Como codigo es privado se debe acceder a él a través del método setCodigo&lt;/p&gt;  &lt;p&gt;super.setCodigo(codigo);&lt;/p&gt;  &lt;p&gt;// Se inicializan las variables de Alumno&lt;/p&gt;  &lt;p&gt;this.notaPrimerCertamen = notaPrimero;&lt;/p&gt;  &lt;p&gt;this.notaSegundoCertamen = notaSegundo;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;private float getPromedio()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return((this.notaPrimerCertamen + this.notaSegundoCertamen)/2);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Este método muesta los datos del alumno y el promedio&lt;/p&gt;  &lt;p&gt;public void mostrar()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Usamos mostrar de la superclase y agregamos el promedio&lt;/p&gt;  &lt;p&gt;super.mostrar();&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Promedio: &amp;quot; +this.getPromedio());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Finalmente, para probar el ejemplo hacemos la clase Prueba Herencia, que instancia un Alumno y una Persona:&lt;/p&gt;  &lt;p&gt;public class PruebaHerencia&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public PruebaHerencia()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void mail(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Creamos una instancia Alumno y hacemos referencia al método mostrar del alumno&lt;/p&gt;  &lt;p&gt;Alumno a = new Alumno(1,&amp;quot;Diego&amp;quot;,80,100);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;-Alumno-&amp;quot;);&lt;/p&gt;  &lt;p&gt;a.mostrar();&lt;/p&gt;  &lt;p&gt;/* Creamos una instancia Persona. Luego se hace&lt;/p&gt;  &lt;p&gt;referencia al método mostrar de persona */&lt;/p&gt;  &lt;p&gt;Persona p = new Persona()&lt;/p&gt;  &lt;p&gt;p.setCodigo(10);&lt;/p&gt;  &lt;p&gt;p.setNombre(&amp;quot;Fabián&amp;quot;);&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;-Persona-&amp;quot;);&lt;/p&gt;  &lt;p&gt;p.mostrar();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;La salida de este programa es:&lt;/p&gt;  &lt;p&gt;-Alumno-&lt;/p&gt;  &lt;p&gt;Código: 1&lt;/p&gt;  &lt;p&gt;Nombre: Diego&lt;/p&gt;  &lt;p&gt;Promedio: 90.0&lt;/p&gt;  &lt;p&gt;-Persona-&lt;/p&gt;  &lt;p&gt;Código: 10&lt;/p&gt;  &lt;p&gt;Nombre: Fabián&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.2.- Escribir clases, atributos y métodos finales.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Cuando escribimos una clase, podemos usar la sentencia &lt;b&gt;final&lt;/b&gt;, para asegurarnos de que no habrá subclases de ésta, es decir, las clases declaradas como &lt;b&gt;final&lt;/b&gt; serán siempre hojas del árbol de clases.&lt;/p&gt;  &lt;p&gt;También podemos declarar métodos como &lt;b&gt;final&lt;/b&gt;, para asegurarnos de que no serán sobrecargados o sobrescritos por una subclase de la clase que los contiene.&lt;/p&gt;  &lt;p&gt;En el caso de los atributos o datos miembro de una clase, cuando sean declarados como &lt;b&gt;final&lt;/b&gt;, tendremos la certeza de que, una vez inicializado, no cambiará de valor durante toda la ejecución del programa. Podemos usar &lt;b&gt;final&lt;/b&gt; en los atributos de la clase para simular constantes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.3.- Clases y métodos abstractos.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Una clase abstracta es una que está incompleta, y sólo ésta puede tener métodos abstractos. Éstos son aquellos que están declarados y pueden ser usados, pero todavía no están implementados. Una clase puede tener métodos abstractos si los hereda de una clase abstracta, o bien, si los tiene declarados explícitamente. Las clases abstractas no pueden ser instanciadas &amp;quot;nunca&amp;quot;, si lo hacemos provocaremos un error en tiempo de compilación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.4.- Jerarquía de composición.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En el &lt;b&gt;Capítulo 1&lt;/b&gt; mencionamos que no sólo existía la jerarquía de herencia, sino que también existe la jerarquía de composición, Esta última puede ser vista como &amp;quot;&lt;b&gt;contiene&lt;/b&gt;&amp;quot; o &amp;quot;&lt;b&gt;tiene&amp;quot;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Aunque éste sea el caso más difícil de percibir, aún sigue siendo el caso más común de común de composición. Esto sucede cuando, en vez de usar los tipos de datos primitivos de Java para definir los atributos de una clase, lo hacemos con objetos que representan dichos tipos de datos.&lt;/p&gt;  &lt;p&gt;Analicemos el siguiente ejemplo:&lt;/p&gt;  &lt;p&gt;public class Empleado&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Integer codigo;&lt;/p&gt;  &lt;p&gt;String nombre;&lt;/p&gt;  &lt;p&gt;Double sueldo;&lt;/p&gt;  &lt;p&gt;Direccion direccion;&lt;/p&gt;  &lt;p&gt;public Empleado()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;En este caso tenemos la clase Empleado, que &amp;quot;contiene&amp;quot; tres objetos: &lt;b&gt;Integer&lt;/b&gt;, &lt;b&gt;String&lt;/b&gt;, y &lt;b&gt;Double&lt;/b&gt;. Además el empleado tiene una dirección, representada a través del siguiente Objeto.&lt;/p&gt;  &lt;p&gt;public class Direccion&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;String calle;&lt;/p&gt;  &lt;p&gt;Integer numero;&lt;/p&gt;  &lt;p&gt;public Direccion()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Note que la composición no se da solamente con la clase Direccion, ya que &lt;b&gt;Integer&lt;/b&gt;, &lt;b&gt;String&lt;/b&gt; y &lt;b&gt;Double&lt;/b&gt; también son clases (&lt;b&gt;Figura 3&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 3&lt;/b&gt;. Composición de las clases Empleado y Direccion.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPAVFiuWolI/AAAAAAAAA3g/WtFjcJsd6Zg/s1600-h/clip_image008%5B3%5D.gif"&gt;&lt;img title="clip_image008" style="display: inline" height="73" alt="clip_image008" src="http://lh6.ggpht.com/foward/SPAVGbmQvNI/AAAAAAAAA3k/ZgiJM-m6IEQ/clip_image008_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;7.- Errores y excepciones.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.1.- La jerarquía de las excepciones.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;De la ejecución de nuestros programas va a surgir una serie de errores que debemos manejar de alguna manera. Para esto debemos determinar qué los provoca y, una vez definido eso, analizar qué camino tomar, evitar el error, mostrar un mensaje comprensible para el usuario, abortar la ejecución del programa, etc.   &lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="68"&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;&lt;/td&gt;          &lt;td&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAVHPCxjpI/AAAAAAAAA3o/fpZcbcNpBwg/s1600-h/clip_image009%5B3%5D.gif"&gt;&lt;img title="clip_image009" style="display: inline" height="101" alt="clip_image009" src="http://lh4.ggpht.com/foward/SPAVH9J41cI/AAAAAAAAA3s/IRP0uDLrEIs/clip_image009_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;br /&gt;Java define una excepción como un objeto que es una instancia de la clase &lt;b&gt;Throwable&lt;/b&gt; o alguna de sus subclases. Es decir que estamos ante una jerarquía de excepciones (&lt;b&gt;Figura 1&lt;/b&gt;). Para comenzar, de &lt;b&gt;Throwable&lt;/b&gt; heredan las clases &lt;b&gt;Error&lt;/b&gt; y &lt;b&gt;Exception&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Parte de la jerarquía de errores y excepciones de Java.&lt;/p&gt;  &lt;p&gt;Por lo general, un error tiende a provocarse en condiciones anormales, eso significa que no tiene sentido o no es posible capturarlo. Por ejemplo, &lt;b&gt;OutOfMemoryError&lt;/b&gt; indica que no hay más memoria. Debido a la imposibilidad de capturar los errores, el programa termina.&lt;/p&gt;  &lt;p&gt;De la clase &lt;b&gt;Error&lt;/b&gt; se heredan las siguientes:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;AWTError&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;LinkageError&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;ThreadDeath&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;VirtualMachineError&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las excepciones, en cambio, se producen dentro de condiciones normales, es decir que no sólo es posible capturarlas, sino que también el lenguaje nos obliga a capturarlas y manejarlas. Hay algunas excepciones que son las más conocidas, por ejemplo, las que heredan de &lt;b&gt;Exception&lt;/b&gt;, que son las siguientes:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;ClassNotFoundException&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;InterruptedException&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;IOException&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;RuntimeException&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;SQLException&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Hasta ahora hablamos de errores y excepciones, pero sin embargo existe otro conjunto de excepciones que el lenguaje no nos obliga a capturar y manejar, pero si queremos, podemos hacerlo. Éstas son conocidas como &lt;b&gt;RuntimeException&lt;/b&gt;, excepciones generadas en tiempo de ejecución, que reflejan un error de codificación e imprimen en pantalla un mensaje de error.&lt;/p&gt;  &lt;p&gt;Nunca olvidemos que una excepción no es un error, sino un evento que nuestro programa no sabe cómo manejar. Siempre que se provoque una excepción, podemos capturarla y manejarla, o evitarla cambiando la lógica del programa.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.2.- Uso de try, catch y finally.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Para capturar y manejar las excepciones, Java proporciona tres palabras reservadas, estas son &lt;b&gt;try&lt;/b&gt;, &lt;b&gt;catch&lt;/b&gt; y &lt;b&gt;finally&lt;/b&gt;. Para comenzar veremos &lt;b&gt;try&lt;/b&gt; y &lt;b&gt;catch&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Entre un &lt;b&gt;try&lt;/b&gt; y un &lt;b&gt;catch&lt;/b&gt; vamos a escribir el código de programa que pueda provocar una excepción. La estructura general es la siguiente:&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Acá va el bloque de ejecución que puede provocar una excepción&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(NombreDeLaExcepcion instancia)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Aca va el bloque de ejecución que maneja la excepción en caso de producirse&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;En el &lt;b&gt;catch&lt;/b&gt; va el nombre de la excepción que deseamos capturar. Si no sabemos qué excepción es, recordemos que hay una jerarquía de excepciones, de tal forma que se puede poner la clase padre de todas las excepciones: &lt;b&gt;Exception&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;No todos los errores deben ser listados al declarar un método. Las instancias de la clase &lt;b&gt;Error&lt;/b&gt; y&lt;b&gt; RunTimeException&lt;/b&gt; no deben ser listadas, pues tienen un tratamiento especial porque pueden ocurrir en cualquier lugar dentro de nuestro programa. Se dan situaciones de las que no somos directamente responsables y que producen estas excepciones, como la situación de &lt;b&gt;OutOfMemoryError&lt;/b&gt;. Hay solamente seis tipos de excepciones que pueden ser listadas en cláusulas &lt;b&gt;throws&lt;/b&gt; dentro de &lt;b&gt;java.lang&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Veamos un ejemplo que produce una excepción, pero no vamos a capturarla, para analizar un poco la salida de error.&lt;/p&gt;  &lt;p&gt;// Vamos a crear un paquete de pruebas&lt;/p&gt;  &lt;p&gt;package pruebas;&lt;/p&gt;  &lt;p&gt;// Importamos java.until.* para usar la clase Vector&lt;/p&gt;  &lt;p&gt;import java.until.*;&lt;/p&gt;  &lt;p&gt;public class PruebaError&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaramos el vector&lt;/p&gt;  &lt;p&gt;Vector v = new Vector();&lt;/p&gt;  &lt;p&gt;public PruebaError()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;c.addElement(new String(&amp;quot;Sergio&amp;quot;));&lt;/p&gt;  &lt;p&gt;c.addElement(new String(&amp;quot;Francisco&amp;quot;));&lt;/p&gt;  &lt;p&gt;c.addElement(new String(&amp;quot;Hismael&amp;quot;));&lt;/p&gt;  &lt;p&gt;c.addElement(new String(&amp;quot;Erich&amp;quot;));&lt;/p&gt;  &lt;p&gt;// Note que el for intentará recorrer un vector de diez elementos&lt;/p&gt;  &lt;p&gt;for(int i=0; i&amp;lt;10; i++)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Tomamos el elemento de la posición i y lo muestro&lt;/p&gt;  &lt;p&gt;System.out.println(v.get(i));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Creamos el objeto pero no lo referenciamos ya&lt;/p&gt;  &lt;p&gt;que no vamos a usar más que el constructor */&lt;/p&gt;  &lt;p&gt;new PruebaError();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Luego de compilar este programa, lo ejecutamos y obtenemos esta salida:&lt;/p&gt;  &lt;p&gt;Sergio&lt;/p&gt;  &lt;p&gt;Francisco&lt;/p&gt;  &lt;p&gt;Ismael   &lt;br /&gt;Erich&lt;/p&gt;  &lt;p&gt;java.lang.ArrayIndexOutOfBoundsException: Array index out of range:&lt;/p&gt;  &lt;p&gt;at java.until.Vector.get(Vector.java:699)&lt;/p&gt;  &lt;p&gt;at pruebas.PruebaError.&amp;lt;init&amp;gt;(PruebaError.java:19)&lt;/p&gt;  &lt;p&gt;at pruebas.PruebaError.main(PruebaError.java:26)&lt;/p&gt;  &lt;p&gt;Exception in thread &amp;quot;main&amp;quot;&lt;/p&gt;  &lt;p&gt;El programa no causa ningún error de compilación, pero sí un error de ejecución. Esto es un &lt;b&gt;RuntimeException&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Analizando el error vemos, primero, el nombre de la excepción provocada, en este caso &lt;b&gt;ArrayIndexOutOfBoundsException&lt;/b&gt;, y a continuación, el mensaje de error. Luego de informar la excepción, muestra la línea exacta en que fue provocada. Es conveniente leer esto de abajo hacia arriba, de manera tal que podamos ver dónde empezó todo e ir siguiéndolo con nuestro código. Vemos que todo empezó en la línea 26, de paquete pruebas, en la clase PruebaError, en el método &lt;b&gt;main&lt;/b&gt;. Si vamos a esta línea vemos que es donde creamos el objeto PruebaError. Seguimos hacia arriba, y ahora vemos que el error está en la línea 19 del paquete pruebas, en el objeto PruebaError, en el constructor, por eso dice &lt;b&gt;&amp;lt;init&amp;gt;&lt;/b&gt;. Si vemos en el código, en esta línea es donde sacamos un elemento del vector, es entonces cuando determinamos cuál es la línea de código que provoca el error y por qué.&lt;/p&gt;  &lt;p&gt;Ahora debemos elegir una solución. Podemos cambiar el límite del &lt;b&gt;for&lt;/b&gt; de 10 a 4, para asegurarnos de no querer sacar más elementos, o podemos capturar la excepción y manejarla. Para capturar la excepción debemos poner las líneas que provocaron la excepción entre un &lt;b&gt;try&lt;/b&gt; y un &lt;b&gt;catch&lt;/b&gt;. En el ejemplo anterior debemos encerrar al &lt;b&gt;for&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;for(int i=0; i&amp;lt;10; i++)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Tomamos el elemento de la posición i y lo muestro&lt;/p&gt;  &lt;p&gt;System.out.println(v.get(i));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(ArrayIndexOutOfBoundsException e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Intentó sacar más elementos!!&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Ahora, la salida es:&lt;/p&gt;  &lt;p&gt;Sergio&lt;/p&gt;  &lt;p&gt;Francisco&lt;/p&gt;  &lt;p&gt;Ismael   &lt;br /&gt;Erich&lt;/p&gt;  &lt;p&gt;Intentó sacar más elementos!!&lt;/p&gt;  &lt;p&gt;Como vemos, lo único que logramos es mostrar el mismo error, sólo que de manera mas comprensible. En ciertos casos, vamos a usar el bloque &lt;b&gt;catch&lt;/b&gt; para evitar el error, no sólo para mostrarlo.&lt;/p&gt;  &lt;p&gt;El lenguaje no nos obliga a capturar las excepciones que se provocan en tiempo de ejecución, sin embargo, éstas se producen, y muy a menudo. Entonces, empezará ejecutando el &lt;b&gt;try&lt;/b&gt;, si se produce alguna excepción, corta el &lt;b&gt;try&lt;/b&gt; y ejecuta el &lt;b&gt;catch&lt;/b&gt;. Finalmente, lo que va en el bloque &lt;b&gt;finally&lt;/b&gt;, se ejecutará siempre, haya habido excepciones o no. Algo muy común es usar dicho bloque para limpiar variables, cerrar archivos, restablecer conexiones, es decir, tareas que hayan podido quedar truncadas según se haya ejecutado el &lt;b&gt;try&lt;/b&gt; completo o no.&lt;/p&gt;  &lt;p&gt;La estructura de un bloque con try, catch y finally es la siguiente:&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Acá va el bloque de ejecución que puede provocar una excepción&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(NombreDeLaExcepcion instancia)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Aca va el bloque de ejecución que maneja la excepción en caso de producirse&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;finally&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;//Este bloque se ejecuta siempre, sin importar si ejecutó el bloque del try o del catch&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Java nos obliga a capturar algunas excepciones, y a manejarlas de alguna manera, es decir, que encerremos la línea que produce dicha excepción dentro de un &lt;b&gt;try&lt;/b&gt; y un &lt;b&gt;catch&lt;/b&gt;. Pero, si no queremos manejarla dentro del bloque, podemos lanzar la excepción hacia arriba, para que el bloque que llame a éste se encargue de manejar la excepción. Es decir, que la excepción le deberá manejar el padre en la pila de llamadas. Antes de continuar, veamos de qué se trata esto de la pila de llamadas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.2.1.- Pila de llamadas.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La pila de llamadas es un arreglo que cera el intérprete de Java en tiempo de ejecución para saber en todo momento quién llamó a quién. Esto sirve al programa para saber dónde tiene que seguir ejecutando cuando termina un bloque de ejecución.&lt;/p&gt;  &lt;p&gt;La pila de llamadas para el ejemplo anterior lo podemos observar a continuación:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SPAVIvr485I/AAAAAAAAA3w/hXv7rF69CbI/s1600-h/clip_image010%5B3%5D.gif"&gt;&lt;img title="clip_image010" style="display: inline" height="45" alt="clip_image010" src="http://lh5.ggpht.com/foward/SPAVJk56PqI/AAAAAAAAA30/M4SKcPqkDAE/clip_image010_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 2&lt;/b&gt;. Pila de llamadas de Java.&lt;/p&gt;  &lt;p&gt;Entonces, cuando una excepción no es tratada en el método donde se produce, Java buscar un bloque &lt;b&gt;try catch&lt;/b&gt; en el método que lo trajo al actual. Si la excepción se lanza hasta el tope de la pila de llamadas sin encontrar un administrador específico para la excepción, entonces la ejecución se detendrá y dará un mensaje. Es decir, podemos suponer que Java nos está proporcionando un bloque &lt;b&gt;try catch&lt;/b&gt; implícito, que imprime un mensaje de error, indica las últimas entradas en la pila de llamadas y sale. Este mensaje es el &lt;b&gt;stack trace&lt;/b&gt; o camino de la pila. Para imprimir un &lt;b&gt;stack trace&lt;/b&gt; en una excepción capturada, lo hacemos a través del método &lt;b&gt;printStackTrace()&lt;/b&gt; de &lt;b&gt;Exception&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.3.- Lanzar excepciones.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Entonces, si no queremos manejar la excepción y deseamos que lo haga el padre en la pila de llamadas, usamos la sentencia &lt;b&gt;throws&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;package pruebas;&lt;/p&gt;  &lt;p&gt;public class PruebaThrow&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public PruebaThrow&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// El método devuelve el resultado de la división&lt;/p&gt;  &lt;p&gt;public flota divide(int a, int b) throws ArithmeticException&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Esta línea provoca la excepción que el throws lanza hacia arriba en la pila&lt;/p&gt;  &lt;p&gt;return(a/b);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;PruebaThrow p = new PruebaThrow();&lt;/p&gt;  &lt;p&gt;// La llamada provocará un ArithmeticException causado por la división por 0&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;flota c = p.divide(15,0);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(ArithmeticException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Imprimimos un mensaje de error&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error de división por 0&amp;quot;);&lt;/p&gt;  &lt;p&gt;// Imprimimos el stack trace&lt;/p&gt;  &lt;p&gt;ex.printStackTrace();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;El método divide es el que provoca la excepción, pero a través de &lt;b&gt;throws&lt;/b&gt;, la lanza hacia arriba para que la maneje su padre en la pila de llamadas. Aquí, el padre es el &lt;b&gt;main&lt;/b&gt;. Este se encargará de manejar la excepción provocada.&lt;/p&gt;  &lt;p&gt;Ahora vamos a agregar un nuevo método a nuestra clase, que también puede provocar una excepción, esta vez, un &lt;b&gt;ClassCastException&lt;/b&gt;. Este método es:&lt;/p&gt;  &lt;p&gt;// Convierte de Object a Integer&lt;/p&gt;  &lt;p&gt;public Integer convertir(Object a)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;return((Integer)a);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;A continuación, el bloque de ejecución puede provocar un &lt;b&gt;ArithmeticException&lt;/b&gt; o un &lt;b&gt;ClassCastException&lt;/b&gt;. Para poder manejar ambas excepciones, sólo debemos agregar un nuevo &lt;b&gt;catch&lt;/b&gt;, es decir que podemos tener cuantos &lt;b&gt;catch&lt;/b&gt; como necesitemos. El nuevo &lt;b&gt;main&lt;/b&gt; y bloque &lt;b&gt;try &lt;/b&gt;catch quedarían así:&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;PruebaThrow p = new PruebaThrow();&lt;/p&gt;  &lt;p&gt;/* La primera sentencia provocará un ArithmeticException causado por la división&lt;/p&gt;  &lt;p&gt;por 0. La segunda un ClassCastException por intentar convertir de Float a Integer */&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;flota c = p.divide(15,0);&lt;/p&gt;  &lt;p&gt;p.convertir(new Flota(c));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(ArithmeticException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error de división por 0&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(ClassCastException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error Convirtiendo Float a Integer&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7.4.- Capturar excepciones más genéricas. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Como vimos en el ejemplo anterior, podemos tener cuantos &lt;b&gt;catch&lt;/b&gt; creamos necesarios, pero también vimos que con agregar sólo una línea al bloque de ejecución se provocaba una excepción que el programa no estaba preparado para manejar.&lt;/p&gt;  &lt;p&gt;Aprovechando la jerarquía de excepciones, podemos reemplazar todos los &lt;b&gt;catch&lt;/b&gt; de excepciones particulares por la superclase &lt;b&gt;Exception&lt;/b&gt;, haciendo una captura genérica. Ahora el &lt;b&gt;main&lt;/b&gt; del ejemplo anterior quedaría así:&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;PruebaThrow p = new PruebaThrow();&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;flota c = p.divide(15,0);&lt;/p&gt;  &lt;p&gt;p.convertir(new Flota(c));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(Exception ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error!!&amp;quot;);&lt;/p&gt;  &lt;p&gt;ex.printStackTrace();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Veamos el mensaje de error. Ahora no sabemos cuál es la excepción que se provocó, porque estamos capturando la excepción genérica. Nos queda por analizar el mensaje, a través del objeto &lt;b&gt;getMessage()&lt;/b&gt;, o el &lt;b&gt;stack trace&lt;/b&gt;, a través de &lt;b&gt;printStackTrace()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.- Streams. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.1.- Flujo de datos. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAVKNEJF0I/AAAAAAAAA34/RMWJ84SBT1k/s1600-h/clip_image011%5B3%5D.gif"&gt;&lt;img title="clip_image011" style="display: inline" height="27" alt="clip_image011" src="http://lh3.ggpht.com/foward/SPAVK2G_g-I/AAAAAAAAA38/tYljZ6e5rjk/clip_image011_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;La información podrá ser representada por algún tipo de Java, es decir, podrá ser &lt;b&gt;Object&lt;/b&gt;, &lt;b&gt;String&lt;/b&gt;, &lt;b&gt;Charater&lt;/b&gt;, etc. Para poder leer y escribir esta información hay que manejar flujos de información, y para esto Java provee los &lt;b&gt;streams&lt;/b&gt; (&lt;b&gt;Figura 1&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1&lt;/b&gt;. Stream de entrada y stream de salida.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAVLkFbAyI/AAAAAAAAA4A/_kS3wMCaq3M/s1600-h/clip_image012%5B3%5D.gif"&gt;&lt;img title="clip_image012" style="display: inline" height="160" alt="clip_image012" src="http://lh3.ggpht.com/foward/SPAVMSodzWI/AAAAAAAAA4E/1gpbjNdKFik/clip_image012_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;Entonces, los streams representan flujos de datos o de información. Estos flujos podrán ser de entrada o de salida. Generalmente, los algoritmos para manejar los datos son los siguientes:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 2&lt;/b&gt;. Secuencia de algoritmos de lectura y escritura.&lt;/p&gt;  &lt;p&gt;El problema radica ahora en el dispositivo del cual estamos leyendo o escribiendo, es decir, si bien el algoritmo es similar para cualquier dispositivo, no es lo mismo leer o escribir datos del disco duro que de otra PC en una red.&lt;/p&gt;  &lt;p&gt;Para que no tengamos que preocuparnos por los tipos de dispositivos, Java ofrece el paquete &lt;b&gt;java.io&lt;/b&gt; (java input/output). Este paquete contiene un conjunto de clases que nos permitirán manejar cualquier flujo de entrada/salida. Las clases están divididas según dos categorías: &lt;b&gt;flujos de caracteres&lt;/b&gt; (character stream) y &lt;b&gt;flujos de bytes&lt;/b&gt; (bytes stream).&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://lh4.ggpht.com/foward/SPAVNPuvUyI/AAAAAAAAA4I/k3jKjglyit8/s1600-h/clip_image013%5B3%5D.gif"&gt;&lt;img title="clip_image013" style="display: inline" height="142" alt="clip_image013" src="http://lh4.ggpht.com/foward/SPAVOPsLj5I/AAAAAAAAA4M/VJjfrigzYuY/clip_image013_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Bytes stream&lt;/b&gt;: sirve para el manejo de entradas y salidas de bytes, y su uso lógicamente está orientado a la lectura y escritura de datos binarios. Las clases más usadas para el tratamiento de flujos de bytes son &lt;b&gt;ImputStream&lt;/b&gt; y &lt;b&gt;OutputStream &lt;/b&gt;(&lt;b&gt;Figura 3&lt;/b&gt; y &lt;b&gt;Figura 4&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 3&lt;/b&gt;. Árbol de clases de &lt;b&gt;Byte Stream ImputStream&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAVOvFh2_I/AAAAAAAAA4Q/xgg9G5FQry8/s1600-h/clip_image014%5B3%5D.gif"&gt;&lt;img title="clip_image014" style="display: inline" height="98" alt="clip_image014" src="http://lh5.ggpht.com/foward/SPAVPkYKmfI/AAAAAAAAA4U/vCZQGVT8GP8/clip_image014_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 4&lt;/b&gt;. Árbol de clases de &lt;b&gt;Byte Stream OutputStream&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://lh5.ggpht.com/foward/SPAVQssm_1I/AAAAAAAAA4Y/hZhVKyqthYY/s1600-h/clip_image015%5B3%5D.gif"&gt;&lt;img title="clip_image015" style="display: inline" height="150" alt="clip_image015" src="http://lh6.ggpht.com/foward/SPAVRYm8rXI/AAAAAAAAA4c/RuEHVoGZ_hg/clip_image015_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Character streams&lt;/b&gt;: sirven para el manejo de entradas y salidas de caracteres. Dichos flujos usan codificación Unicote y, por lo tanto, se pueden internacionalizar. Las dos clases para este caso son &lt;b&gt;Read&lt;/b&gt; y &lt;b&gt;Write&lt;/b&gt; (&lt;b&gt;Figura 5&lt;/b&gt; y &lt;b&gt;Figura 6&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 5&lt;/b&gt;. Árbol de clases de &lt;b&gt;Character Stream Read&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 6&lt;/b&gt;. Árbol de clases de &lt;b&gt;Character Stream Write&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPAVSODR4RI/AAAAAAAAA4g/78Me3PRW52A/s1600-h/clip_image016%5B3%5D.gif"&gt;&lt;img title="clip_image016" style="display: inline" height="198" alt="clip_image016" src="http://lh5.ggpht.com/foward/SPAVTN1ox1I/AAAAAAAAA4k/nAbZmxHTR8E/clip_image016_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.2.- Lecturas y escrituras en archivos usando streams . &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El caso más común en que necesitaremos usar streams será el de archivos. Para esto, encontramos las clases &lt;b&gt;FileOutputStream&lt;/b&gt;, &lt;b&gt;FileInputStream&lt;/b&gt;, &lt;b&gt;FileReader&lt;/b&gt; y &lt;b&gt;FileWriter&lt;/b&gt;. Comenzaremos por &lt;b&gt;FileOutputStream&lt;/b&gt;, el cual, como su nombre lo indica, crea un flujo de datos de salida de un archivo.&lt;/p&gt;  &lt;p&gt;package pruebas;&lt;/p&gt;  &lt;p&gt;import java.io.*;&lt;/p&gt;  &lt;p&gt;public class PruebaArchivoSalida&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public PruebaArchivoSalida()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaramos la variable miArchivo del tipo FileOutputStream&lt;/p&gt;  &lt;p&gt;FileOutputStream miArchivo;&lt;/p&gt;  &lt;p&gt;// Declaramos el String para gravar en el archivo&lt;/p&gt;  &lt;p&gt;String dato = new String();&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Creamos el archivo a través del constructor&lt;/p&gt;  &lt;p&gt;de la clase FileOutputStream(String nombre) */&lt;/p&gt;  &lt;p&gt;miArchivo = new FileOutputStream(&amp;quot;C:\\archivo.txt&amp;quot;);&lt;/p&gt;  &lt;p&gt;// Grabamos 5 líneas&lt;/p&gt;  &lt;p&gt;for(int i = 0; i&amp;lt;5; i++)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Grabamos el número de línea. Agregamos al final la&lt;/p&gt;  &lt;p&gt;secuencia de escape \n para que no grabe todo seguido*/&lt;/p&gt;  &lt;p&gt;dato = &amp;quot;Línea (&amp;quot; +i +&amp;quot;) \n&amp;quot;;&lt;/p&gt;  &lt;p&gt;/* Recordemos que el método write espera un array de bytes, así&lt;/p&gt;  &lt;p&gt;que usamos el método getBytes() de String para obtener esto */&lt;/p&gt;  &lt;p&gt;miArchivo.write(dato.getBytes());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Cerramos el archivo&lt;/p&gt;  &lt;p&gt;miArchivo.close();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(IOException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Tanto el constructor como los métodos write y close lanzan&lt;/p&gt;  &lt;p&gt;una excepción del tipo IOException que debemos capturar */&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error: &amp;quot; +ex.getMessage());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void mail(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new PruebaArchivoSalida();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Este programa no genera ninguna salida por pantalla, pero, si todo va bien, genera un archivo en el directorio raíz del disco C. Este archivo se abre con cualquier editor de textos. Aunque debemos tener en cuenta que algunos editores no soportan las secuencias de escape y las representan con algún otro carácter. En el archivo generado vemos:&lt;/p&gt;  &lt;p&gt;Línea (0)&lt;/p&gt;  &lt;p&gt;Línea (1)&lt;/p&gt;  &lt;p&gt;Línea (2)&lt;/p&gt;  &lt;p&gt;Línea (3)&lt;/p&gt;  &lt;p&gt;Línea (4)&lt;/p&gt;  &lt;p&gt;Ahora, aprovechando que tenemos un archivo generado, usaremos &lt;b&gt;FileInputStream&lt;/b&gt; para abrirlo, leerlo y mostrarlo por pantalla.&lt;/p&gt;  &lt;p&gt;package pruebas;&lt;/p&gt;  &lt;p&gt;import java.io.*;&lt;/p&gt;  &lt;p&gt;public class PruebaArchivoEntrada&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;public PruebaArchivoEntrada()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Declaramos la variable miArchivo del tipo FileInputStream&lt;/p&gt;  &lt;p&gt;FileInputStream miArchivo;&lt;/p&gt;  &lt;p&gt;// Creamos el array de byte para almacenar la información que leemos del archivo&lt;/p&gt;  &lt;p&gt;byte linea[] = new byte[55];&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Abrimos el archivo a través del constructor&lt;/p&gt;  &lt;p&gt;de la clase FileInputStream(String nombre) /*&lt;/p&gt;  &lt;p&gt;miArchivo = new FileInputStream(&amp;quot;C:\\archivo.txt&amp;quot;);&lt;/p&gt;  &lt;p&gt;miArchivo.read(linea);&lt;/p&gt;  &lt;p&gt;/* Debemos convertir el byte[] a String para que la información&lt;/p&gt;  &lt;p&gt;leída del archivo sea entendible para nosotros */&lt;/p&gt;  &lt;p&gt;System.out.println(new String(linea));&lt;/p&gt;  &lt;p&gt;// Cerramos el archivo&lt;/p&gt;  &lt;p&gt;miArchivo.close();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(IOException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;/* Tanto el constructor como los métodos read y close lanzan&lt;/p&gt;  &lt;p&gt;una excepción del tipo IOException que debemos capturar */&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error: &amp;quot; +ex.getMessage());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void mail(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;new PruebaArchivoEntrada();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Para simplificar el ejemplo, creamos el array de 55, ya que sabíamos de antemano que eso era lo que ocupaba el archivo de bytes. De esa forma se pudo leer el archivo completo en una sola lectura. Generalmente no sabemos qué tamaño ocupa el archivo, peor aún, el archivo va a ir cambiando de tamaño. Para manejar esto hay que hacer un programa similar al de escritura, es decir, usando un ciclo.&lt;/p&gt;  &lt;p&gt;Por otra parte, el error capturado de esta manera, si lo hubiera, no nos permite especificarle al usuario si se provocó cuando quisimos abrir el archivo, grabarlo o cerrarlo. La forma correcta sería capturar la excepción cada vez que quisiéramos hace algo con el archivo, para poder informar mejor el error o manejarlo de alguna manera.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.2.1.- FileReader y FileWriter. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las clases anteriores, como vimos, eran stream de bytes. &lt;b&gt;FileReader&lt;/b&gt; y &lt;b&gt;FileWriter&lt;/b&gt;, en cambio, son stream de char, es decir que, tomando como referencia los ejemplos anteriores, cambiando los array de bytes por array de char y convirtiendo cada cadena a array char, vamos a obtener los mismos resultados.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;8.3.- Objetos persistentes. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En algunas ocasiones necesitaremos no perder la instancia de un objeto cuando termine el programa, es decir, precisaremos guardar dicha información contenida en el objeto. Para esto se usan los objetos persistentes.&lt;/p&gt;  &lt;p&gt;Para programar un objeto persistente debemos implementar la interfaz &lt;b&gt;Serializable&lt;/b&gt; del paquete &lt;b&gt;java.io&lt;/b&gt;. Simplemente declaramos la clase como:&lt;/p&gt;  &lt;p&gt;public class ObjetoPersistente implements Serializable&lt;/p&gt;  &lt;p&gt;Una vez hecho esto, debemos crear un método que se encargue de grabar el objeto a través del método &lt;b&gt;writeObject()&lt;/b&gt; de &lt;b&gt;ObjectOutputStream&lt;/b&gt;. Para ejemplificar, implementaremos el código de la clase ObjetoPersistente.&lt;/p&gt;  &lt;p&gt;import java.io.*;&lt;/p&gt;  &lt;p&gt;public class ObjetoPersistente implements Serializable&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;String nombre;&lt;/p&gt;  &lt;p&gt;String apellido;&lt;/p&gt;  &lt;p&gt;int edad;&lt;/p&gt;  &lt;p&gt;public ObjetoPersistente(String n, String a, int e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;this.nombre = n;&lt;/p&gt;  &lt;p&gt;this.apellido = a;&lt;/p&gt;  &lt;p&gt;this.edad = e;&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Implementamos el método guardarObjeto&lt;/p&gt;  &lt;p&gt;public void guardarObjeto()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;try{&lt;/p&gt;  &lt;p&gt;// Creamos el archivo&lt;/p&gt;  &lt;p&gt;FileOutputStream archivo = new FileOutputStream(&amp;quot;C:\\objeto.ser&amp;quot;);&lt;/p&gt;  &lt;p&gt;// Creamos el stream de salida del objeto&lt;/p&gt;  &lt;p&gt;ObjectOutputStream out = new ObjectOutputStream(archivo);&lt;/p&gt;  &lt;p&gt;// Grabamos el objeto&lt;/p&gt;  &lt;p&gt;out.writeObject(this);&lt;/p&gt;  &lt;p&gt;out.flush();&lt;/p&gt;  &lt;p&gt;// Cerramos el stream&lt;/p&gt;  &lt;p&gt;out.close;&lt;/p&gt;  &lt;p&gt;// Cerramos el archivo&lt;/p&gt;  &lt;p&gt;archivo.close();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(IOException ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Error al grabar objeto: &amp;quot; +ex.getMessage());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;ObjetoPersistente op = new ObjetoPersistente(&amp;quot;Miguel&amp;quot;,&amp;quot;Alvarado&amp;quot;,22);&lt;/p&gt;  &lt;p&gt;op.guardarObjeto();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Como resultado obtendremos el archivo objeto.ser con la información del objeto. Note en el ejemplo que el método &lt;b&gt;writeObject()&lt;/b&gt; recibe &lt;b&gt;this&lt;/b&gt; como parámetro, se deduce que se puede implementar el método fuera de la clase y enviarle el objeto seriablizable. En nuestro caso, la línea sería:&lt;/p&gt;  &lt;p&gt;out.writeObject(op);&lt;/p&gt;  &lt;p&gt;Es decir, en la instancia de ObjetoPersistente, para mostrar esto modificaremos el main para leer el objeto grabado. Antes de modificar el main, haremos la sobrecarga del método &lt;b&gt;toString()&lt;/b&gt; para mostrar cómo quedó instanciado el objeto al final de la ejecución. Ahora sí, el main será:&lt;/p&gt;  &lt;p&gt;public static void main(String argv[])&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;try&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;FileInputStream archivo = new FileInputStream(&amp;quot;C:\\abjeto.ser&amp;quot;);&lt;/p&gt;  &lt;p&gt;ObjectInputStream in = new ObjectInputStream(archivo);&lt;/p&gt;  &lt;p&gt;/* Leemos el objeto, y como readObject devuelve un objero lo&lt;/p&gt;  &lt;p&gt;convertimos a ObjetoPersistente y lo referenciamos con op */&lt;/p&gt;  &lt;p&gt;ObjetoPersistente op = (ObjetoPersistente)in.readObject();&lt;/p&gt;  &lt;p&gt;in.close();&lt;/p&gt;  &lt;p&gt;archivo.close();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;catch(Exception ex)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;ex.printStackTrace();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;System.out.println(&amp;quot;Instanciado con: &amp;quot; +opLeido.toString());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;La salida del programa será:&lt;/p&gt;  &lt;p&gt;Instanciado con: Miguel Alvarado de 22 años de edad&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.- AWT.&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.1.- Interfaces gráficas de usuario. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Hoy en día, una de las cosas más importantes de los sistemas es la interfaz de usuario. Al usuario final no le interesan las características técnicas de nuestro software, pero sí, que sea fácil de usar. Para lograr una &lt;b&gt;GUIs&lt;/b&gt; (Graphical User Interface, en español &lt;b&gt;interfaces gráficas de usuario&lt;/b&gt;) vamos a usar &lt;b&gt;AWT&lt;/b&gt; (&lt;b&gt;Abstract Windows Toolkit&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;Debido a que Java es multiplataforma, provee un conjunto de herramientas para poder construir aplicaciones gráficas multiplataforma. El problema, a veces, consiste en que cuando migramos a otra plataforma, posiblemente no veamos lo mismo en una plataforma que en otra. Por este motivo, hay que tener en cuenta que la versión de &lt;b&gt;AWT&lt;/b&gt; que &lt;b&gt;SUN&lt;/b&gt; lanzó al mercado fue desarrollada en sólo dos meses y representa, quizás, el punto más débil del lenguaje. Esta situación hace que construir una ventana simple se vuelva una tarea complicada y muy tediosa.&lt;/p&gt;  &lt;p&gt;La biblioteca &lt;b&gt;AWT&lt;/b&gt; contiene un conjunto completo de clases y métodos para dar soporte al uso de ventanas y a las &lt;b&gt;GUIs&lt;/b&gt;. La estructura básica del AWT se basa en &lt;b&gt;Componentes&lt;/b&gt; y &lt;b&gt;Contenedores&lt;/b&gt;. La versión actual del &lt;b&gt;AWT&lt;/b&gt; se puede resumir en los puntos que se exponen a continuación:&lt;/p&gt;  &lt;p&gt;· Los Contenedores contienen Componentes, que son los controles básicos.&lt;/p&gt;  &lt;p&gt;· No se usan posiciones fijas de los Componentes, sino que están situados a través de una disposición controlada (&lt;b&gt;layouts&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;· El común denominador de más bajo nivel se acerca al teclado, mouse y manejo de eventos.&lt;/p&gt;  &lt;p&gt;· Alto nivel de abstracción respecto al entorno de ventanas en que se ejecute la aplicación.&lt;/p&gt;  &lt;p&gt;· La arquitectura de la aplicación es dependiente del entorno de ventanas, en vez de tener un tamaño fijo.&lt;/p&gt;  &lt;p&gt;· Depende bastante de la plataforma en que se ejecuta la aplicación.&lt;/p&gt;  &lt;p&gt;· Carece de un formato de recursos. No se puede separar el código de lo que es propiamente interfaz. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.2.- &lt;/b&gt;&lt;b&gt;Componentes y Contenedores.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Una interfaz gráfica está construida en base a elementos gráficos básicos, los Componentes. Típicos ejemplos de estos Componentes son los botones, barras de desplazamiento, etiquetas, listas, cajas de selección o campos de texto. Los Componentes permiten al usuario interactuar con la aplicación y proporcionar información desde el programa al usuario sobre el estado del programa. En AWT, todos los Componentes de la interfaz de usuario son instancias de la clase &lt;b&gt;Component&lt;/b&gt; o uno de sus subtipos.&lt;/p&gt;  &lt;p&gt;Los Componentes no se encuentran aislados, sino agrupados dentro de Contenedores. Los Contenedores contienen y organizan la situación de los Componentes; además, los Contenedores son en sí mismos Componentes y como tales pueden ser situados dentro de otros Contenedores. También contienen el código necesario para el control de eventos, cambiar la forma del cursor o modificar el icono de la aplicación. En el AWT, todos los Contenedores son instancias de la clase &lt;b&gt;Container&lt;/b&gt; o uno de sus subtipos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.3.- &lt;/b&gt;&lt;b&gt;Clase Component.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Component&lt;/b&gt; es una clase abstracta que representa todo lo que tiene una posición, un tamaño, que puede ser pintado en pantalla y puede recibir eventos. No tiene constructores públicos, ni puede ser instanciada. Sin embargo, puede ser extendida para proporcionar una nueva característica incorporada a Java, conocida como componentes &lt;b&gt;Lightweight&lt;/b&gt;. Los Objetos derivados de dicha clase que se incluyen en &lt;b&gt;AWT&lt;/b&gt; son los que aparecen a continuación:&lt;/p&gt;  &lt;p&gt;· Button&lt;/p&gt;  &lt;p&gt;· Canvas&lt;/p&gt;  &lt;p&gt;· Checkbox&lt;/p&gt;  &lt;p&gt;· Choice&lt;/p&gt;  &lt;p&gt;· Container&lt;/p&gt;  &lt;p&gt;- Panel&lt;/p&gt;  &lt;p&gt;- Window&lt;/p&gt;  &lt;p&gt;- Dialog&lt;/p&gt;  &lt;p&gt;- Frame&lt;/p&gt;  &lt;p&gt;· Label&lt;/p&gt;  &lt;p&gt;· List&lt;/p&gt;  &lt;p&gt;· Scrollbar&lt;/p&gt;  &lt;p&gt;· TextComponent&lt;/p&gt;  &lt;p&gt;- TextArea&lt;/p&gt;  &lt;p&gt;- TextField&lt;/p&gt;  &lt;p&gt;Sobre estos Componentes se podrían hacer más agrupaciones y quizá la más significativa es la que diferencia los Componentes según el tipo de entrada. Así habría Componentes con entrada de tipo no-textual como los botones de pulsación (&lt;b&gt;Button&lt;/b&gt;), las listas (&lt;b&gt;List&lt;/b&gt;), botones de marcación (&lt;b&gt;Checkbox&lt;/b&gt;), botones de selección (&lt;b&gt;Choice&lt;/b&gt;) y botones de comprobación (&lt;b&gt;CheckboxGroup&lt;/b&gt;), Componentes de entrada y salida textual como los campos de texto (&lt;b&gt;TextField&lt;/b&gt;), las áreas de texto (&lt;b&gt;TextArea&lt;/b&gt;) y las etiquetas (&lt;b&gt;Label&lt;/b&gt;), y otros Componentes, en donde se encontrarían algunos como las barras de desplazamiento (&lt;b&gt;Scrollbar&lt;/b&gt;), zonas de dibujo (&lt;b&gt;Canvas&lt;/b&gt;) e incluso los Contenedores (&lt;b&gt;Panel&lt;/b&gt;, &lt;b&gt;Window&lt;/b&gt;, &lt;b&gt;Dialog&lt;/b&gt; y &lt;b&gt;Frame&lt;/b&gt;), que también pueden considerarse como Componentes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.3.1.- &lt;/b&gt;&lt;b&gt;Button.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase &lt;b&gt;Button&lt;/b&gt; es una clase que produce un componente de tipo botón con un título. El constructor más utilizado es el que permite pasarle como parámetro una cadena, que será la que aparezca como título e identificador del botón en el interfaz de usuario. Así:&lt;/p&gt;  &lt;p&gt;Button nombreBoton = new Button(&amp;quot;título&amp;quot;);&lt;/p&gt;  &lt;p&gt;Pone al alcance del programador una serie de métodos entre los que destacan por su utilidad los siguientes:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;Método&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="431"&gt;           &lt;p&gt;Descripción&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;addActionListener()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="431"&gt;           &lt;p&gt;Añade un receptor de eventos de tipo Action producidos por el botón.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;getLabel()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="431"&gt;           &lt;p&gt;Devuelve la etiqueta o título del botón.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;removeActionListener()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="431"&gt;           &lt;p&gt;Elimina el receptor de eventos para que el botón deje de realizar acción alguna.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;setLabel()&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="431"&gt;           &lt;p&gt;Fija el título o etiqueta visual del botón.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tabla 1&lt;/b&gt;. Algunos métodos de la clase &lt;b&gt;Button&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ActionListener&lt;/b&gt; es uno de los eventos de tipo semántico. Un evento de tipo &lt;b&gt;Action&lt;/b&gt; se produce cuando el usuario pulsa sobre un objeto &lt;b&gt;Button&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;A continuación veremos un ejemplo, utilizando sólo un botón con una etiqueta que dice &amp;quot;Oprima aquí&amp;quot;. Al oprimir dicho botón haremos que el programa muestre el número de veces que se ha hecho clic sobre el botón. El código es el siguiente:&lt;/p&gt;  &lt;p&gt;import java.applet.*;&lt;/p&gt;  &lt;p&gt;import java.awt.*;&lt;/p&gt;  &lt;p&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;public class PruebaButton extends Applet implements ActionListener&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;private Button boton;&lt;/p&gt;  &lt;p&gt;private int cuenta = 0;&lt;/p&gt;  &lt;p&gt;public void init()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;boton = new Button(&amp;quot;Oprima aquí&amp;quot;);&lt;/p&gt;  &lt;p&gt;add(boton);&lt;/p&gt;  &lt;p&gt;boton.addActionListener(this);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void actionPerformed(ActionEvent event)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;cuenta++;&lt;/p&gt;  &lt;p&gt;repaint();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void paint(Graphics g)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;d.drawString(&amp;quot;El número de veces que se a oprimido el botón es: &amp;quot; +cuenta, 10, 50);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.3.2.- Choice&lt;/b&gt;&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Un cuadro de opción es una lista de opciones similar a un menú. Puede elegirse un elemento de la lista haciendo clic sobre el mismo. Luego, el elemento seleccionado aparece como la única parte visible de la lista.&lt;/p&gt;  &lt;p&gt;Para crear un cuadro de opción, veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;import java.awt.*;&lt;/p&gt;  &lt;p&gt;import java.applet.Applet;&lt;/p&gt;  &lt;p&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;public class PruebaChoice extends Applet implements ItemLisetner&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;private Choice colorOpcion;&lt;/p&gt;  &lt;p&gt;public void init()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;colorOpcion = new Choice();&lt;/p&gt;  &lt;p&gt;colorOpcion.add(&amp;quot;Rojo&amp;quot;);&lt;/p&gt;  &lt;p&gt;colorOpcion.add(&amp;quot;Blanco&amp;quot;);&lt;/p&gt;  &lt;p&gt;colorOpcion.add(&amp;quot;Azul&amp;quot;);&lt;/p&gt;  &lt;p&gt;add(colorOpcion);&lt;/p&gt;  &lt;p&gt;colorOpcion.addItemListener(this);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void itemStateChanged(ItemEvent e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;if(e.getSource() == colorOpcion)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;String unaOpcion = e.getItem().toString();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.3.3.- Checkbox&lt;/b&gt;&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ésta es una manera en la que el usuario puede especificar una o más opciones al hacer clic en una casilla de verificación. También se pueden agrupar en &lt;b&gt;CheckboxGrup&lt;/b&gt;, que son un grupo de &lt;b&gt;Checkbox&lt;/b&gt; que comparten la característica de que sólo una de las casillas puede seleccionarse a la vez. Los grupos de opciones son útiles para algunos programas, por ejemplo para seleccionar color, como vemos en el siguiente código:&lt;/p&gt;  &lt;p&gt;import java.awt.*;&lt;/p&gt;  &lt;p&gt;import java.applet.Applet;&lt;/p&gt;  &lt;p&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;public class PruebaCheckbox extends Applet implements ItemLisetner&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;private CheckboxGroup c;&lt;/p&gt;  &lt;p&gt;private Checkbox rojo, blanco, azul;&lt;/p&gt;  &lt;p&gt;public void init()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;c = new CheckboxGroup;&lt;/p&gt;  &lt;p&gt;rojo = new Checkbox(&amp;quot;Rojo&amp;quot;, c, false);&lt;/p&gt;  &lt;p&gt;add(rojo);&lt;/p&gt;  &lt;p&gt;rojo.addItemListener(this);&lt;/p&gt;  &lt;p&gt;blanco = new Checkbox(&amp;quot;Blanco&amp;quot;, c, true);&lt;/p&gt;  &lt;p&gt;add(blanco);&lt;/p&gt;  &lt;p&gt;blanco.addItemListener(this);&lt;/p&gt;  &lt;p&gt;azul = new Checkbox(&amp;quot;Azul&amp;quot;, c, false);&lt;/p&gt;  &lt;p&gt;add(azul);&lt;/p&gt;  &lt;p&gt;azul.addItemListener(this);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void itemStateChanged(ItemEvent e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;if((e.getSource() == rojo) || (e.getSource() == blanco) || (e.getSource() == azul))&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;showStatus(&amp;quot;Estado de Grupo = &amp;quot; + rojo.getState() + &amp;quot;\t&amp;quot; + blanco.getState()&lt;/p&gt;  &lt;p&gt;+ &amp;quot;\t&amp;quot; + azul.getState());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.3.4.- List&lt;/b&gt;&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Este elemento es una lista de cadenas de texto, de la cual pueden seleccionarse uno o más elementos. Se proporciona una barra de desplazamiento para avanzar hacia arriba o abajo. Su constructor es:&lt;/p&gt;  &lt;p&gt;List lista = new List(3, false);&lt;/p&gt;  &lt;p&gt;Aquí, el primer parámetro especifica que sólo habrá tres elementos visibles en la lista a la vez, mientras que el segundo nos indica que sólo podremos seleccionar un elemento de la lista.&lt;/p&gt;  &lt;p&gt;Ahora podemos ver un ejemplo:&lt;/p&gt;  &lt;p&gt;import java.awt.*;&lt;/p&gt;  &lt;p&gt;import java.applet.Applet;&lt;/p&gt;  &lt;p&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;public class PruebaList extends Applet implements ItemLisetner&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;private List lista;;&lt;/p&gt;  &lt;p&gt;public void init()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;lista = new List(3, false);&lt;/p&gt;  &lt;p&gt;lista.add(&amp;quot;leche&amp;quot;);&lt;/p&gt;  &lt;p&gt;lista.add(&amp;quot;azúcar&amp;quot;);&lt;/p&gt;  &lt;p&gt;lista.add(&amp;quot;té&amp;quot;);&lt;/p&gt;  &lt;p&gt;lista.add(&amp;quot;café&amp;quot;);&lt;/p&gt;  &lt;p&gt;add(lista);&lt;/p&gt;  &lt;p&gt;lista.addActionListener(this);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;public void actionPerformed(ActionEvent e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;if(e.getSource() == lista)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;String listaSeleccion = lista.getSelectedItem();&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Si deseamos una lista de la que se pueda seleccionar más de un elemento, entonces el segundo parámetro del método constructor debe ser true.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.4.- &lt;/b&gt;&lt;b&gt;Clase Container.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La clase &lt;b&gt;Container&lt;/b&gt; es una clase abstracta derivada de &lt;b&gt;Component&lt;/b&gt;, que representa a cualquier componente que pueda contener otros componentes. Se trata, en esencia, de añadir a la clase &lt;b&gt;Component&lt;/b&gt; la funcionalidad de adición, sustracción, recuperación, control y organización de otros Componentes.&lt;/p&gt;  &lt;p&gt;Al igual que la clase &lt;b&gt;Component&lt;/b&gt;, no dispone de constructores públicos y, por lo tanto, no se pueden instanciar objetos de la clase &lt;b&gt;Container&lt;/b&gt;. Sin embargo, sí se puede extender para implementar los componentes &lt;b&gt;Lightweight&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;AWT proporciona varias clases de Contenedores:&lt;/p&gt;  &lt;p&gt;· Panel&lt;/p&gt;  &lt;p&gt;- Applet&lt;/p&gt;  &lt;p&gt;· ScrollPane&lt;/p&gt;  &lt;p&gt;- Window&lt;/p&gt;  &lt;p&gt;- Dialog&lt;/p&gt;  &lt;p&gt;o FileDialog&lt;/p&gt;  &lt;p&gt;- Frame&lt;/p&gt;  &lt;p&gt;Aunque los que se pueden considerar como verdaderos contenedores son &lt;b&gt;Window&lt;/b&gt;, &lt;b&gt;Frame&lt;/b&gt;, &lt;b&gt;Dialog&lt;/b&gt; y &lt;b&gt;Panel&lt;/b&gt;, porque los demás son subtipos con algunas características determinadas y solamente útiles en circunstancias muy concretas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.4.1.- &lt;/b&gt;&lt;b&gt;Window.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Es una superficie de pantalla de alto nivel, una ventana. Una instancia de la clase &lt;b&gt;Window&lt;/b&gt; no puede estar enlazada o embebida en otro Contenedor.&lt;/p&gt;  &lt;p&gt;Una instancia de esta clase no tiene ni título ni borde, así que es un poco difícil de justificar su uso para la construcción directa de un interfaz gráfico, porque es mucho más sencillo utilizar objetos de tipo &lt;b&gt;Frame&lt;/b&gt; o &lt;b&gt;Dialog&lt;/b&gt;. Dispone de varios métodos para alterar el tamaño y título de la ventana, o los cursores y barrar de menús.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.4.2.- &lt;/b&gt;&lt;b&gt;Frame.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Una aplicación que utiliza ventanas necesita crear explícitamente dichas ventanas en la pantalla. Esta área se conoce como &lt;b&gt;Frame&lt;/b&gt; (marco). La manera más sencilla en que una aplicación puede crear un marco es heredar (o extender) de la clase de biblioteca &lt;b&gt;Frame&lt;/b&gt;. Para crear un marco se hace así:&lt;/p&gt;  &lt;p&gt;nombreFrame = new Frame(&amp;quot;título&amp;quot;);&lt;/p&gt;  &lt;p&gt;Ahora veamos algunos métodos de esta clase:&lt;/p&gt;  &lt;p&gt;// Cambiamos su tamaño a 250 píxeles de ancho y 200 de alto&lt;/p&gt;  &lt;p&gt;nombreFrame.setSize(250, 200);&lt;/p&gt;  &lt;p&gt;// Lo hacemos visible&lt;/p&gt;  &lt;p&gt;nombreFrame.setVisible(true);&lt;/p&gt;  &lt;p&gt;// Agregamos un botón al Frame&lt;/p&gt;  &lt;p&gt;Button b1 = new Button(&amp;quot;Botón&amp;quot;);&lt;/p&gt;  &lt;p&gt;nombreFrame.add(b1);&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.4.3.- &lt;/b&gt;&lt;b&gt;Dialog.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Es una superficie de pantalla de alto nivel, ventana, con borde y título, que permite entradas al usuario. La clase &lt;b&gt;Dialog&lt;/b&gt; extiende la clase &lt;b&gt;Window&lt;/b&gt;, que extiende la clase &lt;b&gt;Container&lt;/b&gt;, que extiende a la clase &lt;b&gt;Component&lt;/b&gt;. Y su controlador de posicionamiento por defecto es el &lt;b&gt;BorderLayout&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;De los constructores proporcionados por esta clase, destaca el que permite que el diálogo sea o no modal. Todos los constructores requieren un parámetro &lt;b&gt;Frame&lt;/b&gt; y, algunos de ellos, permiten la especificación de un parámetro booleano que indica si la ventana que abre el diálogo será modal o no. Si es modal, todas las entradas del usuario serán recogidas por esta ventana, bloqueando cualquier entrada que se pudiese producir sobre otros objetos presentes en la pantalla. Posteriormente, si no se ha especificado que el diálogo sea modal, se puede hace que adquiera esta característica invocando al método &lt;b&gt;setModal()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;9.4.4.- &lt;/b&gt;&lt;b&gt;Panel.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Un panel es una forma de agrupar varios componentes de manera conveniente. No tiene un contorno ni alguna otra forma de verse en pantalla, es como un contorno invisible. Por ejemplo, si deseamos que haya cientos de botones en la parte superior de la ventana y otros en la parte inferior, podemos crear paneles separados APRA cada uno de los grupos, y luego especificar que panel debe ir arriba y cual abajo. Su constructor es: &lt;/p&gt;  &lt;p&gt;Panel p newPanel();&lt;/p&gt;  &lt;p&gt;Luego podemos agregar componentes a ese panel:&lt;/p&gt;  &lt;p&gt;Button b1 = new Button(&amp;quot;Oprímame&amp;quot;);&lt;/p&gt;  &lt;p&gt;Button b2 = new Button(&amp;quot;No, oprímame a mí&amp;quot;);&lt;/p&gt;  &lt;p&gt;p.add(b1);&lt;/p&gt;  &lt;p&gt;p.add(b2);&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.- Applet.&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.1.- ¿Que son los applet?. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Son pequeños programas, comúnmente denominados componentes, ya que se van a embeber en otras aplicaciones, que se enlazan a una página Web. El enlace se logra a través de la etiqueta &lt;b&gt;APPLET&lt;/b&gt; de &lt;b&gt;HTML&lt;/b&gt;. Cuando el navegador que está levantando nuestra página encuentra esta etiqueta, entiende que debe ejecutar un applet, para ello levanta primero la maquina virtual y solicita los archivos necesario para la correcta ejecución del applet. Los problemas de esta implementación son los siguientes: la configuración de seguridad del navegador, los applet son pesados y en una ren lenda es posible que no se puedan ejecutar. Por lo tanto, cuando programemos applets deberemos tratar de que sean livianos y que no sean demasiado relevantes para que alguien que no desee ejecutarlos pueda seguir navegando en nuestra página sin problemas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.2.- El AppletViewer. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El applet asume que el código se está ejecutando desde dentro de un navegador. Para que no dependamos de un navegador, podemos hacer uso del &lt;b&gt;AppletViewer&lt;/b&gt;, que tiene el aspecto de un pequeño navegador. Éste espera como argumento el nombre del fichero &lt;b&gt;HTML&lt;/b&gt; que debe cargar, no se le puede pasar directamente un programa Java. Este fichero &lt;b&gt;HTML&lt;/b&gt; debe contener una marca que especifica el código que cargará el AppletViewer.&lt;/p&gt;  &lt;p&gt;Esta marca, como ya vimos, es la etiqueta de &lt;b&gt;html APPLET&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;&amp;lt;HTML&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;APPLET CODE=PruebaApplet.class WIDTH=300 HEIGHT=100&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/APPLET&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/HTML&amp;gt;&lt;/p&gt;  &lt;p&gt;De esta manera el AppletViewer genera un espacio de navegación con un área gráfica donde se va a ejecutar nuestro applet PruebaApplet.class.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.3.- Métodos. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Antes de entrar de lleno en el código, vamos a ver los métodos propios de la clase &lt;b&gt;Applet&lt;/b&gt; y para qué sirven.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;init()&lt;/b&gt;: este método es llamado cada vez que la clase se carga por primera vez. El applet puede sobrecargar este método para fijar el tamaño del applet, cargar imágenes y sonidos necesarios para la ejecución del applet, y la asignación de valores a las variables globales a la clase que se utilice.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;start()&lt;/b&gt;: su función es hacer que el applet comience la ejecución. El método &lt;b&gt;start()&lt;/b&gt; de la clase &lt;b&gt;Applet&lt;/b&gt; no hace nada. Cada vez que la zona de visualización del applet queda expuesta, se llama a este método automáticamente, aunque podemos modificarlo para que el applet siga activo aun cuando no está expuesto a la visión.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;stop()&lt;/b&gt;: detiene la ejecución del applet. Se llama cuando el applet desaparece de la pantalla. Este método también hay que rescribirlo.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;destroy()&lt;/b&gt;: es llamado cuando ya no se va a usar más el applet, cuando se necesita que sean liberado todos los recursos dispuestos por el applet, por ejemplo, cuando se cierra el navegador. Como el sistema no sabe qué recursos usa el applet, entonces debemos rescribir este método para liberarlos de forma correcta.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;paint(Graphics g)&lt;/b&gt;: este método es llamado cada vez que el área de dibujo del applet necesita ser actualizada. La clase &lt;b&gt;Applet&lt;/b&gt; dibuja un rectángulo gris en el área, y la clase derivada debe sobrecargar este método para dibujar lo que necesite. El sistema llama en forma automática a este método cada vez que la zona de visualización del applet cambia. Este cambio puede deberse a que la página se actualiza, a que el applet queda tapado por otra ventana, queda fuera de la pantalla, etc. El método recibe como parámetro un objeto del tipo &lt;b&gt;Graphics&lt;/b&gt; que delimita la zona que será pintada.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;update(Graphics g)&lt;/b&gt;: ésta es la función que realmente se llama cuando se necesita una actualización de la pantalla. La clase &lt;b&gt;Applet&lt;/b&gt; simplemente limpia e área y llama al método &lt;b&gt;paint()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;repaint&lt;/b&gt;: llamando a este método se podrá forzar la actualización de un applet.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.4.- Nuestro Primer applet. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;package prueba;&lt;/p&gt;  &lt;p&gt;import java.awt.*;&lt;/p&gt;  &lt;p&gt;import java.applet.*;&lt;/p&gt;  &lt;p&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;public class PruebaApplet extends Applet&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;GridBagLayout gridBagLayout1 = new GridBagLayout();&lt;/p&gt;  &lt;p&gt;TextField TxNumeroUno = new TextField();&lt;/p&gt;  &lt;p&gt;TextField TxNumeroDos = new TextField();&lt;/p&gt;  &lt;p&gt;Button BotonSumar = new Button();&lt;/p&gt;  &lt;p&gt;TextField TxResultado= new TextField();&lt;/p&gt;  &lt;p&gt;public PruebaApplet()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Inicializa el applet&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;public void init()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;// Acá ponemos el código para armar la ventana&lt;/p&gt;  &lt;p&gt;this.setLayout(gridBagLayout1);&lt;/p&gt;  &lt;p&gt;TxResultado.setEnabled(false);&lt;/p&gt;  &lt;p&gt;BotonSumar.setLabel(&amp;quot;Sumar&amp;quot;);&lt;/p&gt;  &lt;p&gt;BotonSumar.addActionListener(new java.awt.event.ActionListener()&lt;/p&gt;  &lt;p&gt;{ public void actionPerformed(ActionEvent e)&lt;/p&gt;  &lt;p&gt;{ BotonSumar_actionPerformed(e); }});&lt;/p&gt;  &lt;p&gt;this.add(TxNumeroUno, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,&lt;/p&gt;  &lt;p&gt;GridBagConstraints.CENTER, GridBagConstraints.NONE,&lt;/p&gt;  &lt;p&gt;new Insets(20, 20, 1, 20), 50, 0));&lt;/p&gt;  &lt;p&gt;this.add(TxNumeroDos, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,&lt;/p&gt;  &lt;p&gt;GridBagConstraints. CENTER, GridBagConstraints.NONE,&lt;/p&gt;  &lt;p&gt;new Insets(1, 20, 20, 20), 50, 0));&lt;/p&gt;  &lt;p&gt;this.add(BotonSumar, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,&lt;/p&gt;  &lt;p&gt;GridBagConstraints. CENTER, GridBagConstraints.NONE,&lt;/p&gt;  &lt;p&gt;new Insets(0, 0, 0, 0), 0, 0));&lt;/p&gt;  &lt;p&gt;this.add(TxResultado, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0,&lt;/p&gt;  &lt;p&gt;GridBagConstraints. CENTER, GridBagConstraints.NONE,&lt;/p&gt;  &lt;p&gt;new Insets(20, 20, 20, 20), 50, 0));&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;// Acción del botón sumar&lt;/p&gt;  &lt;p&gt;void BotonSumar_actionPerformed(ActionEvent e)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;int numeroUno = Integer.parseInt(TxNumeroUno.getText());&lt;/p&gt;  &lt;p&gt;int numeroDos = Integer.parseInt(TxNumeroDos.getText());&lt;/p&gt;  &lt;p&gt;int resultado = numeroUno + numeroDos;&lt;/p&gt;  &lt;p&gt;TxResultado.setText(new Integer(resultado).toString());&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;Si intentamos ejecutarlo por consola, nos dará un error, ya que ésta ya no es una aplicación de consola, sino un applet. Y para ejecutarla, necesitamos embeberla en una página HTML. Así:&lt;/p&gt;  &lt;p&gt;&amp;lt;html&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;head&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;title&amp;gt;&lt;/p&gt;  &lt;p&gt;Página HTML de prueba&lt;/p&gt;  &lt;p&gt;&amp;lt;/title&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/head&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;body&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;h1&amp;gt;Ingrese dos números y presione el botón sumar&amp;lt;/h1&amp;gt;.&amp;lt;br&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;applet&lt;/p&gt;  &lt;p&gt;codebase = &amp;quot;.&amp;quot;&lt;/p&gt;  &lt;p&gt;code = &amp;quot;prueba.PruebaApplet.class&amp;quot;&lt;/p&gt;  &lt;p&gt;name = &amp;quot;PruebaApplet&amp;quot;&lt;/p&gt;  &lt;p&gt;width = &amp;quot;400&amp;quot;&lt;/p&gt;  &lt;p&gt;height = &amp;quot;300&amp;quot;&lt;/p&gt;  &lt;p&gt;hspace = &amp;quot;0&amp;quot;&lt;/p&gt;  &lt;p&gt;vspace = &amp;quot;0&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.5.- Sonidos en los applet. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los applet pueden incluir sonidos a través de la interfaz &lt;b&gt;AudioClip&lt;/b&gt;. El archivo de sonido puede ser cargado desde una dirección URL a través del método &lt;b&gt;getAudioClip()&lt;/b&gt; para su posterior ejecución, o a través del método &lt;b&gt;play()&lt;/b&gt;, también desde una URL, con la diferencia que este método lo carga y lo ejecuta. Otros métodos importantes que provee esta interfaz son &lt;b&gt;loop()&lt;/b&gt; para repetir el sonido una vez que termine, y &lt;b&gt;stop()&lt;/b&gt; para detener la ejecución del sonido.    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="599"&gt;           &lt;p&gt;&lt;b&gt;Observación :&lt;/b&gt; Cualquier error o falta de algun tema porfavor contactarse a &lt;a href="mailto:mascotas@gmail.com"&gt;friveros&lt;/a&gt; at 4minds .cl&amp;#160; Gracias!&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt; Texto Bajo Licencia Creative Commons para mas información visite &lt;a href="http://www.4minds.cl"&gt;www.4minds.cl&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-5216368620645955425?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/5216368620645955425/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=5216368620645955425' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/5216368620645955425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/5216368620645955425'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/seminario-de-java-2006.html' title='Seminario de JAVA (2006)'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh3.ggpht.com/foward/SPAU5m2M-vI/AAAAAAAAA2s/qmxLHPOuV9g/s72-c/clip_image001_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-7514435893263962820</id><published>2008-10-10T19:46:00.001-07:00</published><updated>2008-10-10T19:46:03.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Papers Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Delitos E-legales en el Mundo</title><content type='html'>&lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="632"&gt;         &lt;p&gt;Francisco Riveros E. fjrivero@inf.utfsm.cl &lt;/p&gt;          &lt;p&gt;Textos: “CRIMINALIDAD INFORMÁTICA”, “LEGISLACIÓN ESPAÑA”,” LEGISLACIÓN SOBRE DELITOS INFORMATICOS PERÚ”, e Internet.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Resumen&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El creciente avance que ha generado el desarrollo y el uso en general del uso de las tecnologías de la información en el quehacer del ser humano, influye y revoluciona los patrones de comportamiento y las relaciones sociales entre ellos. Debido a esta gran diversificación y globalización de las tecnologías de información, se desarrollan una serie de normativas en este ámbito bajo la disciplina del derecho, la cual hoy en día tiene que responder a nuevos y complejos problemas que se presentan, por la flexibilidad y la creación de nuevas Tecnologías. En donde también, la inexistencia de una legislación penal adecuada, posibilita la impunidad y desprotección jurídica a la sociedad en general. Para soslayar estos problemas es que los países toman diversas medidas para modificar continuamente sus legislaciones, hasta ser coadyuvados por organizaciones las cuales por medio de expertos ayudan a los estados para combatir este tema en conjunto.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Opinión&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En el plano internacional se considero como definición de delito informático a “Ese acto ilegal, no ético o no autorizado que involucra el procesamiento de datos y la transmisión de los mismos”. Bajo este concepto, podemos ver que en los estados en el mundo se han adoptado diversas normativas y legislaciones para poder resguardarse sobre el problema de la e-legalidad. Pero el problema que se presenta, es que las legislaciones planteadas se adoptan a la tecnología vigente en el tiempo de la promulgación, esto provoca un gran vacio legal ya que las tecnologías de la información son muy flexibles y avanzan en el tiempo muy rápido, por lo que es necesario siempre una actualización a la legislación sobre los delitos informáticos en el tiempo. &lt;/p&gt;  &lt;p&gt;Según las Naciones Unidas tenemos tres tipos de delitos: 1) Fraudes cometidos mediante manipulación de computadoras, 2) Daños o modificaciones de programas informáticos y 3) Acceso no autorizado a servicios y sistemas Informáticos. Bajo estos perfiles si revisamos el código Penal Español [&lt;a href="#_ftn1_3041" name="_ftnref1_3041"&gt;[1]&lt;/a&gt;] podemos observar que no contempla directamente los delitos denominados “informáticos”, pero describe conductas delictivas descritas en el “Convenio sobre la Ciberdelincuencia” [&lt;a href="#_ftn2_3041" name="_ftnref2_3041"&gt;[2]&lt;/a&gt;], en la que los datos o sistemas informáticos son instrumentos de comisión o el objeto del delito. En esta legislación se pone mucho énfasis en el descubrir secretos o vulnerar la intimidad de otra persona bajo los tópicos de las TI. En cambio, si analizamos el Código Penal Peruano [&lt;a href="#_ftn3_3041" name="_ftnref3_3041"&gt;[3]&lt;/a&gt;], se pone explícitamente temas técnicos como la violación de base de datos, sistema o red de computadoras en todo sentido [&lt;a href="#_ftn4_3041" name="_ftnref4_3041"&gt;[4]&lt;/a&gt;], o también se abarca ampliamente el tema sobre la pornografía infantil en Internet. De estas diferencias podemos inferir que se deben a las diversas situaciones enfrentadas por los estados para apaliar el problema de la delincuencia informática, pero tales medidas no logran una integración globalizada del tema. Por esto es vital que las legislaciones sean tomadas en conjunto por los estados bajo ciertos consensos ya que la problemática de los delitos informáticos requiere un estudio multidisciplinario con miras a determinar la forma más eficaz de luchar contra ellos, con un abordaje jurídico y técnico que se ponga especial atención en la prevención y en la detección de vulnerabilidades.&lt;/p&gt;  &lt;hr align="left" width="33%" size="1" /&gt;  &lt;p&gt;&lt;a href="#_ftnref1_3041" name="_ftn1_3041"&gt;[1]&lt;/a&gt; http://delitosinformaticos.com/legislacion/espana.shtml&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref2_3041" name="_ftn2_3041"&gt;[2]&lt;/a&gt; http://194.179.107.38/media/Convenio_Ciberdelincuencia.pdf&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref3_3041" name="_ftn3_3041"&gt;[3]&lt;/a&gt; http://delitosinformaticos.com/legislacion/peru.shtml&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref4_3041" name="_ftn4_3041"&gt;[4]&lt;/a&gt; Capítulo XI, Delitos Informáticos, los artículos 208a y 208b&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-7514435893263962820?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/7514435893263962820/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=7514435893263962820' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/7514435893263962820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/7514435893263962820'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/delitos-e-legales-en-el-mundo.html' title='Delitos E-legales en el Mundo'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-5005012098571674089</id><published>2008-10-10T19:40:00.001-07:00</published><updated>2008-10-10T19:40:59.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><title type='text'>“Política Cambiaria en Chile”</title><content type='html'>&lt;p&gt;Trabajo Escrito por H Alayo S Labbe y Francisco Riveros&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. Introducción &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En este trabajo, presentaremos como se ha manifestado la política cambiaria en chile, dividiendo por periodos históricos que marcaron hitos en la economía. En primera instancia, mostraremos una pequeña referencia teórica para explicar los determinantes del tipo de cambio y su incidencia en la economía. Luego analizaremos el periodo antes de 1973, posteriormente analizaremos el periodo entre el 1973 y 1990, para luego analizar el periodo de la década de los 90’s, finalización con la situación actual del país, en donde expondremos las políticas adoptadas por la autoridad de la época frente al caos económico heredado del gobierno de la Unidad Popular, para luego hacer frente a las crisis internacionales.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. Marco Teórico&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El tipo de cambio en palabras sencillas, es la cotización de una moneda en términos de otra moneda; Este expresa el numero de moneda que hay que dar para obtener una unidad de otra moneda, la cotización o tipo de cambio se determina por la relación entre la oferta y la demanda de divisas, en otras palabras, el tipo de cambio se determina por la relación entre la oferta y la demanda de moneda nacional con el fin de realizar las operaciones internacionales del país.&lt;/p&gt;  &lt;p&gt;Al ser el tipo de cambio una variable económica clave, la determinación del sistema cambiario es relevante y debe estar vinculada, a más de los objetivos y prioridades de política. En el caso de los objetivos de la política cambiaria, la elección del régimen de tipo de cambio puede estar, condicionada a controlar la inflación, a disminuir la volatilidad del producto o a incrementar la competitividad de las exportaciones.&lt;/p&gt;  &lt;p&gt;En general, dada la importancia del tipo de cambio en la asignación de recursos y en la transmisión de las expectativas, dos serían las características básicas que debería poseer un régimen óptimo:&lt;/p&gt;  &lt;p&gt;· Reducir al máximo los movimientos bruscos, no predecibles y transitorios del tipo de cambio.&lt;/p&gt;  &lt;p&gt;· Ajustarse a sus movimientos permanentes.&lt;/p&gt;  &lt;p&gt;En consecuencia, en los regímenes más extremos de tipo de cambio, no cumplen con estos requisitos, por lo que se ha generado un nuevo concepto o interés en los tipos de cambio “administrados”, lo que llamamos: Bandas&lt;i&gt; Cambiarias&lt;/i&gt;. Esta política de bandas respondería a las características señaladas anteriormente, ya que pretende manejar el tipo de cambio real mediante el establecimiento de una zona objetivo en términos de paridad cambiaria&lt;a href="#_ftn1_5507" name="_ftnref1_5507"&gt;[1]&lt;/a&gt;. &lt;a name="tc"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tipos de Cambio:&lt;/b&gt;    &lt;br /&gt;En los tipos de cambio puede existir flexibilidad o rigidez, como un conjunto de infinitas variables dentro de los tipos de cambio, como se detallan a continuación:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Tipos de cambios rígidos y flexibles.&lt;/li&gt;    &lt;li&gt;Tipos de cambios fijos y variables.&lt;/li&gt;    &lt;li&gt;Tipos de cambios únicos y múltiples.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a name="_Toc443789409"&gt;&lt;/a&gt;&lt;b&gt;1. &lt;/b&gt;&lt;b&gt;Cambio Rígido     &lt;br /&gt;&lt;/b&gt;El tipo de cambio rígido es aquel cuyas fluctuaciones están contenidas dentro de un margen determinado. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. &lt;/b&gt;&lt;b&gt;Cambio Flexible     &lt;br /&gt;&lt;/b&gt;El tipo de cambio flexible es aquel cuyas fluctuaciones no tienen límites precisamente determinados, lo que no significa que tales fluctuaciones sean ilimitadas o infinitas.     &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="428"&gt;           &lt;p&gt;&lt;a name="_Toc443789411"&gt;&lt;/a&gt;&lt;b&gt;3.1&lt;/b&gt; &lt;b&gt;Uniones Monetarias:               &lt;br /&gt;&lt;/b&gt;Es cuando el país renuncia a la emisión de moneda propia, con lo cual el tipo de cambio desaparece como variable.              &lt;br /&gt;&lt;b&gt;3.2 Incorporación a una moneda individual:               &lt;br /&gt;&lt;/b&gt;Es cuando el país de origen engancha su moneda a la de un país importante, que usualmente es el principal socio comercial, así mismo existen formas duras y blandas de enganche.              &lt;br /&gt;&lt;b&gt;3.3 Enganches a una cesta de Monedas               &lt;br /&gt;&lt;/b&gt;Son arreglos fijados en relación a un conjunto de monedas de los países con la que se realiza la mayor porción de intercambio comercial.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. &lt;/b&gt;&lt;b&gt;Cambio Fijo&lt;/b&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Comprenden aquellos arreglos cambiarios en los cuales el tipo de cambio esta ordinariamente &amp;quot;Anclado&amp;quot; a otras monedas y solo es modificado de forma discrecional y poco frecuente en circunstancias extraordinarias. Dependiendo del país, se divide en lo siguiente:&lt;/p&gt;  &lt;p&gt;&lt;a name="_Toc443789412"&gt;&lt;/a&gt;&lt;b&gt;4. &lt;/b&gt;&lt;b&gt;Cambio Único      &lt;br /&gt;&lt;/b&gt;El tipo de cambio único, como su nombre lo indica, es aquel que rige para todas las operaciones cambiarias, cualquiera que sea su naturaleza o magnitud. Se tolera cierta diferencia entre los tipos de compra y de venta de la divisa&lt;sup&gt; &lt;/sup&gt;como margen operativo para los cambistas en cuanto a sus gastos de administración y operación y beneficio normal. El ideal del FMI es el sistema de cambios únicos, que no admite discriminación en cuanto a las fuentes de origen de las divisas ni en cuanto a las aplicaciones de las mismas en los pagos internacionales.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.- Historia de las Políticas Cambiarias en Chile&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.1 Política Cambiaria Antes de 1973 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Desde 1930 a 1973 la economía chilena se caracterizó por una escasa importancia asignada al sector externo como un factor importante para su desarrollo, razón por la que la política cambiaria estuvo relegada a un segundo plano, sirviendo sólo como complemento otras políticas para el logro de objetivos considerados prioritarios a lo largo de distintos periodos.&lt;/p&gt;  &lt;p&gt;Con el objetivo de preservar el funcionamiento de la economía y su nivel de ingreso, ante las fuertes variaciones que pudiese presentar la economía global, se postuló la creación de un sector industrial el cual pudiese sustentar un ritmo de crecimiento mas estable, cuyo desarrollo apoyaría la existencia de demanda interna, la cuál hasta ese entonces era satisfecha con importaciones. Esto hacia necesario proteger dicho sector, lo que hizo necesario instaurar barreras arancelarias y restricciones cuantitativas a la internación de mercaderías, para así asegurar el mercado local. &lt;/p&gt;  &lt;p&gt;La política cambiaria se mantuvo prácticamente invariable desde 1932 hasta 1956 y consistió en el establecimiento de una amplia gama de tipos de cambio, tanto para los retornos de las exportaciones como para las importaciones.&lt;/p&gt;  &lt;p&gt;En 1956 se intento simplificar las normas de operación del comercio exterior y una reestructuración del sistema de cambios múltiples, dejando un tipo de cambio para las mercaderías y otro para el turismo y transacciones de capital. Esto, buscaba una apertura de la economía al exterior y una revitalización del sector privado como elementos vitales para el crecimiento económico del país, ya que se estimaba que la estrategia de industrialización forzada se había agotado. Luego, hasta fines de la década del sesenta se busco combinar la acción estatal y la del sector privado, de manera de impulsar el crecimiento económico, buscando además, una expansión del mercado interno mediante la creación de acuerdos de integración regional como ALALC y Pacto andino. Esto requería modificaciones en materia de política cambiaria y arancelaria. Así, en la primera se establece una política de tipo de cambio con devaluaciones programadas, con la finalidad de mantener un nivel del tipo de cambio real. En la segunda, se plantea una política de desgravación sistemática tendiente a estableces un arancel externo mínimo.&lt;/p&gt;  &lt;p&gt;Durante el periodo 1971 a 1973, el país experimento un proceso acelerado de estatización y un retorno a la idea de crecimiento hacia adentro, lo que condenso todos los problemas que se habían presentado en los periodos anteriores. Además, hubo un quiebre del sistema institucional y un desajuste generalizado de los mercados, entre ellos el sector externo, con un tipo de cambio múltiple, restricciones cuantitativas al comercio y abandono de la etapa iniciada en el periodo anterior.&lt;/p&gt;  &lt;p&gt;En síntesis, la estrategia de desarrollo aplicada en Chile en el periodo previo a 1973 tuvo como norma general la industrialización basada en la sustitución de importaciones conjuntamente con un rol activo y de intervención estatal creciente en la economía.&lt;/p&gt;  &lt;p&gt;La carencia de objetivos definidos en la política cambiaria condujo a una manipulación indebida del tipo de cambio, lo que conllevo a la aparición de múltiples tasas cambiarias dependiendo de los productos que se importaban o exportaban.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.2&lt;/b&gt; &lt;b&gt;Política Cambiaria durante el periodo 1973-1989 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El marco económico inicial está marcado por un desequilibrio en la balanza de pagos, agotamiento de los recursos internacionales, deuda externa, restricciones no arancelarias y aumento de las tasas de inflación, correspondiendo al Banco Central ser operador y ejecutor de la nueva política cambiaria, lo que permitió al país abandonar la de economía cerrada, iniciando la integración comercial en el exterior; &lt;/p&gt;  &lt;p&gt;La función del tipo de cambio fue básicamente la de servir como instrumento regulador del nivel del comercio exterior, adoptando una política cambiaria de pequeñas devaluaciones, efectuadas por el Banco Central., lo que permitió mantener un tipo de cambio acorde con las condiciones económicas impuestas en el corto plazo. Por fechas, las etapas son:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ENE ’73 – JUN ’76: &lt;/b&gt;Tipo de cambio reptante, que es devaluar, periódicamente y con ajustes pequeños, el tipo de cambio de acuerdo a la diferencia entre las tasas de inflación doméstica y externa relevantes. &lt;/p&gt;  &lt;p&gt;El tipo de cambio fue utilizado como instrumento de incentivos al sector exportador; como instrumento que permita reflejar verdaderamente la relación entre los precios internos y los internacionales., como apoyo a la apertura comercial y financiera al exterior. Además se determinó la necesidad de efectuar, en primer termino, una reducción de los niveles arancelarios vigentes. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;JUN ’76 – FEB ’78:&lt;/b&gt; se procedió a revaluar el peso en 10% (el dólar baja de $19,75 a $17,77); el tipo de cambio aumento primero en un 4%, y después 3%. Para los periodos siguientes el reajuste del tipo de cambio se hizo en la forma ya habitual, que era la correspondiente a la tasa de variación del IPC habido en el mes anterior.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;FEB ’78 – JUN ’79:&lt;/b&gt; En febrero de 1978 el gobierno anuncio un cambio de política cambiaria, que consultaba tasas decrecientes de devaluación. Estas equivalían, aproximadamente a la inflación mensual registrada en el mes anterior. Se partió con una tasa decreciente de 2,5%, para llegar en diciembre a 0,7%. Se mantendría esta política durante el año siguiente, teniendo como meta la mantención del tipo de cambio real para garantizar a los exportadores rentabilidad, pero también permitir traer al país los productos que se requieren del extranjero a precios razonables.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;JUN ’79 – ’82: &lt;/b&gt;Este periodo se caracterizo por un desarrollo acelerado y estable en todas las áreas de la economía (El PGB real creció 8,3% en 1979 y 7,5% en 1980) Entre 1981 y 1982, se produjo una violenta alza en el costo real del crédito interno, introduciendo un tercer elemento que le restaba competitividad a la industria de bienes transables, obligándola a operar con un costo financiero real excesivamente alto.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;’83 – ’89: &lt;/b&gt;Este período comienza con una total confusión que refleja la crisis total en que se encontraba la economía. Así, en conjunto con la devaluación de 1982, l tipo de cambio se liga a una canasta de monedas, la que se reajustaba diariamente un 0,2%. &lt;/p&gt;  &lt;p&gt;La crisis externa generada en el período anterior obligaba a las autoridades a generar recursos externos para hacer frente a la escasez de divisas en que se encontraba el país, se generó una fuerte devaluación en la moneda. Aparte de las devaluaciones se implementa una política de significativo ajuste del gasto público, para que de este modo se le pueda dar un mayor espacio a la devaluación sin producir presiones inflacionarias; el objetivo primordial era hacer frente a la restricción externa (nula apertura de capitales), por lo que la inflación pasó a ser un objetivo secundario; en la última etapa del período fue frecuente modificar la regla de indización del dólar acuerdo por considerarse excesivas las variaciones del IPC (en 1988 se modificó 3 veces); entre junio de 1989 y el primer trimestre de 1990 el tipo de cambio se mantuvo pegado al limite superior de la banda de flotación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.3 Política cambiaria en los años 90&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La política cambiaria en Chile, experimentó un cambio sustancial después de la crisis de 1982 y 1983. El tipo de cambio se devaluó diariamente. En ese entonces Chile estaba saliendo de una crisis de la deuda, acompañada de gran depreciación; se había llegado a máximos históricos del tipo de cambio oficial. En enero de 1992 la banda de flotación del mercado cambiario fue ampliada +/- 10% con lo que surgió una ola de expectativas revaluatorias alimentadas por ingresos de capitales. &lt;/p&gt;  &lt;p&gt;Por ese tiempo y durante varios meses circuló por el Banco Central la proposición de iniciar, dentro de la banda, una flotación “sucia” o regulada. Los que propusieron esta intervención argumentaban que las normas vigentes, de banda pura, con un mercado informal crecientemente activo conducían a un tipo de cambio que se inclinaría hacia los extremos de la banda. La reevaluación brusca de casi 10% del tipo de cambio oficial entre Enero y Febrero de 1992 contribuyó a que el Banco Central iniciase la flotación sucia en Marzo. En ese tiempo, el tipo de cambio observado fluctuó en un rango de entre 1 y 8 puntos sobre el piso; vale decir, habitualmente pegado al piso, con activas compras por el Banco pero también con ventas esporádicas.&lt;/p&gt;  &lt;p&gt;La ampliación de la banda creo expectativas respecto de que el Banco Central renunciaba a tratar de frenar presiones revaluatorias y defender la exportación, dando al mercado la determinación de la tasa observada en un rango más amplio. Con la definición de la flotación regulada, el Banco Central volvía a tener una gran capacidad de conducción que permitía fortalecer las variables de largo plazo en la determinación del tipo de cambio que enfrentaban los productores de rubros importables y exportables.&lt;/p&gt;  &lt;p&gt;Luego de esta situación el Banco Central se vio presionado por el descenso de las tasas de interés de Estados Unidos; hecho que no pasó a mayores, pues Chile gozaba de un auge notable con una tasa de aumento del PIB situada en dos dígitos. Dada esta situación, el Banco Central quiso elevar en vez de reducir las tasas de interés internas; y aumentó la tasa de encaje para los ingresos de capitales, evitando así un estímulo al arbitraje.&lt;/p&gt;  &lt;p&gt;En julio de 1992 se reemplazó al dólar como vínculo directo del tipo de cambio oficial por una canasta de monedas como nuevo tipo de cambio de referencia; hecho que introdujo mayor incertidumbre cambiaria a las operaciones en dólares en el corto plazo. Sin embargo, se dio una mayor estabilidad a los valores en pesos de los retornos de exportaciones. El desempeño efectivo del mercado en esa época, muestra que las apreciaciones cambiarias que se registraron en el periodo tendieron al equilibrio, consistentes además con la desaparición de causas de la crisis de los ochenta y con las mejoras netas de productividad de los productos chilenos.&lt;/p&gt;  &lt;p&gt;El escenario de abundancia de flujos de capitales luego del 1995, tuvo al tipo de cambio casi pegado al piso de la banda hasta fines de 1997. Dada la existencia de expectativas abrumadoras a favor de la apreciación y el gran diferencial entre las tasas de rentabilidad esperada entre el peso y el dólar se brindó a los inversionistas extranjeros oportunidades muy lucrativas al refugiarse en la moneda nacional. Más allá de su adhesión formal a una banda móvil, el Banco Central en 1996 y 1997 estaba aceptando la flexibilidad cambiaria hacia la apreciación. A fin de reducir el piso de la banda, las autoridades hicieron ajustes contradictorios de las ponderaciones asignadas a cada moneda, provocando que la vinculación con una canasta de monedas perdiera credibilidad. También hubo una sobreestimación de la inflación externa usada para determinar el tipo de cambio, hecho que generó una reevaluación adicional de 10% entre 1995 y 1997.&lt;/p&gt;  &lt;p&gt;Finalmente a fines del 1997, cuando la crisis asiática se sintió y las expectativas de apreciación cambiaron a expectativas de depreciación, el Banco Central frenó fuertemente las presiones al alza del tipo de cambio por la vía de la venta masiva de divisas. A mediados de 1998 se redujo la amplitud de la banda junto con una intensificación de un ajuste liderado por alzas en la tasa de interés de instancia del Banco al 14,5% real; todo ello se hizo para dar la señal de que el Banco Central no cedería a las presiones devaluatorias del mercado. Posteriormente, luego de ampliar la banda a fines del 1998, en septiembre de 1999 se suspendió el compromiso de la banda como un modo de facilitar el ajuste del tipo de cambio.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.4 Política Cambiaria en el estado actual &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Desde el año 2000, la economía chilena se ha visto impactada por variados disturbios derivados del ambiente internacional: por una parte la inestabilidad de economías emergentes, como la Argentina y, por otro, la confirmación de que economías más desarrolladas tendrían desempeños más pobres; como la de Estados Unidos.&lt;/p&gt;  &lt;p&gt;En su historia, nuestro país ha experimentado diferentes regímenes cambiarios; hechos que muchas veces terminaron por aumentar, en vez de disminuir, los ajustes macroeconómicos. La razón se basa en que una economía como la chilena, pequeña, abierta al exterior y rica en recursos naturales debe tener un tipo de cambio real que fluctúe de forma considerable.&lt;/p&gt;  &lt;p&gt;En 1999 el Banco Central tomó un régimen de flotación que ha permitido que la política monetaria sea usada para objetivos inflacionarios, hecho que además, ha permitido que el tipo de cambio sea una variable importante que absorbe los shocks externos, haciendo que los ajustes sean más eficientes y menos costosos.&lt;/p&gt;  &lt;p&gt;En este régimen de flotación, el Banco Central no puede tratar de fijar un precio para el dólar y se permite que el mercado encuentre el equilibrio adecuado y congruente con los fundamentos de la economía. Hasta el 2001, el tipo de cambio real se depreció en términos reales casi un 30% respecto de 1999, dada la caída de los términos de intercambio y el deterioro del crecimiento internacional. La caída mencionada en términos de intercambio, implica que las exportaciones son más baratas que las importaciones, es decir, la valoración relativa por los bienes nacionales es menor internacionalmente.&lt;/p&gt;  &lt;p&gt;El presidente del Banco Central, Sr. Vittorio Corbo ha mencionado que &lt;i&gt;“el marco de políticas macroeconómicas que se han perfeccionado en Chile en los últimos 15 años, incluyendo la flotación del tipo de cambio, es el más apropiado para una economía pequeña, integrada al resto del mundo que está sujeta frecuentemente a estos cambios en su entorno.”&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Hoy en día, Chile continúa en un ciclo expansivo y relativamente ordenado con excelentes condiciones externas. La caída del tipo de cambio real se basa en favorables términos de intercambio, muy influenciados por el alto precio del cobre. Por otro lado, el Banco Central ha seguido un proceso de reducción gradual del estímulo monetario con aumentos de la tasa de interés y el valor de las exportaciones ha alcanzado sus máximos niveles en el primer trimestre de 2006. De la misma forma, la apreciación real del tipo de cambio a partir del segundo trimestre de 2006 (8% más que el promedio entre los años 1999 y 2005) ha hecho que los intercambios estén sobre promedios históricos y los costos de financiamientos externos estén históricamente bajos.&lt;/p&gt;  &lt;p&gt;Chile ha optado por este régimen de flotación cambiaria por sus experiencias anteriores y por una mejor compresión de los fenómenos involucrados. Se dice que de los años 70 se aprendió de la disciplina fiscal, en los 80 de la financiera y en los 90 de la flexibilidad cambiaria. Lo destacable de está flotación es la flexibilidad que se tiene para hacer frente a choques externos reales, favoreciendo una respuesta rápida a través de los precios relativos con menor impacto en el producto y el empleo. Este régimen de flotación facilita ajustes a choques financieros internacionales y no permite que el país esté tan vulnerable a una crisis de balanza de pagos. También, es destacable que el tipo de cambio flexible permite implementar políticas monetarias autónomas, enfocadas al logro de una meta de inflación que permita estabilizar el producto en torno al producto potencial. Por último, es preciso mencionar que la actual política cambiaria genera más incentivos al sector privado, llevando a menores niveles de endeudamiento externo, una menor dolarización de pasivos domésticos y una asignación más eficiente del riesgo cambiario al interior de la economía.&lt;/p&gt;  &lt;p&gt;Sin lugar a dudas, la adopción de un régimen de flotación cambiaria da flexibilidad, evitando costosos ajustes ante alteraciones de condiciones, tanto externas como internas. Este sistema de flotación, más el sistema financiero sólido imperante hoy en día, han evitado las crisis cambiarias en nuestro país.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.- Conclusiones&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;En el periodo 1930 a 1973,&lt;/b&gt; la economía chilena se caracterizó por una escasa importancia asignada al sector externo como un factor importante para su desarrollo, razón por la que la política cambiaria estuvo relegada a un segundo plano, sirviendo sólo como complemento otras políticas para el logro de objetivos considerados prioritarios a lo largo de distintos periodos.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;En el periodo de 1973 a 1990,&lt;/b&gt; Entre el 73-76 se mantuvo vigente la política cambiaria, arancelaria y de fomento de exportaciones, que permitió duplicarles en un año, excluyendo el cobre. Entre los años 77-78 se creo una situación de competencia externa se estableció una mas estrecha relación entre el nivel del arancel y el tipo de cambio; El periodo de los años 79-82 se caracterizo por un desarrollo acelerado y estable en todas las áreas de la economía (El PBI real creció 8,3% en 1979 y 7,5% en 1980y 8,3% promedio de los nueve meses de 1981 con relación a igual lapso de 1980). Entre los años 83-89. el objetivo primordial en esta época era hacer frente a la restricción externa (nula apertura de capitales), que atravesaba el país, por lo que la inflación pasó a ser un objetivo secundario. La banda de flotación se amplió en sucesivas ocasiones durante este período. Comenzó con un 0,5% en 1984, lo que era visto como un precio razonable entre los precios de compra y venta. En junio de 1985 se amplió cerca del 2%, en enero de 1988 a cerca del 3% y en junio de 1989 a casi el 5%.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;En la década de los 90,&lt;/b&gt; La banda de flotación establece que el sistema pueda resultar excesivamente manejado por el gobierno. Sin embargo, ello brinda la posibilidad a las autoridades de intervenir directamente cuando las circunstancias lo requieran, en función de proteger los intereses de la nación.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;A contar de 1999 hasta hoy&lt;/b&gt;, en chile se estableció el mercado de libre flotación para el dólar lo que permitió a través de la aplicación de una buena política monetaria, mantener los índices macroeconómicos que convirtieron a chile en una de las economías más estables de América.&lt;/li&gt; &lt;/ul&gt;  &lt;hr align="left" width="33%" size="1" /&gt;  &lt;p&gt;&lt;a href="#_ftnref1_5507" name="_ftn1_5507"&gt;[1]&lt;/a&gt; &lt;u&gt;Paridad Cambiaria&lt;/u&gt;: La teoría de la paridad cambiaria se basa en el concepto de que la política cambiaria debe utilizarse para mantener el equilibrio del sector externo de la economía. Esta teoría plantea que la tasa de cambio de equilibrio en el largo plazo es aquella que permite alcanzar el equilibrio de la balanza de pagos en un determinado periodo de tiempo. Esta paridad cambiaria es la relación entre la inflación interna del país y las inflaciones de los países con que comercia. Si la inflación interna del país es mayor, se encuentra en una situación de atraso cambiario, mientras que la situación inversa implica una posición de adelanto cambiario.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-5005012098571674089?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/5005012098571674089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=5005012098571674089' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/5005012098571674089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/5005012098571674089'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/poltica-cambiaria-en-chile.html' title='“Política Cambiaria en Chile”'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-3620668044824024174</id><published>2008-10-10T19:38:00.001-07:00</published><updated>2008-10-10T19:38:43.873-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Cursos'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Aplicaciones de SVD en Biología</title><content type='html'>&lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width="299"&gt;         &lt;p&gt;Daniel Anguita&lt;/p&gt;       &lt;/td&gt;        &lt;td width="299"&gt;         &lt;p&gt;2273081-9&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="299"&gt;         &lt;p&gt;Marcos Fuentes F.&lt;/p&gt;       &lt;/td&gt;        &lt;td width="299"&gt;         &lt;p&gt;2273011-8&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="299"&gt;         &lt;p&gt;Sergio E. Labbé S.&lt;/p&gt;       &lt;/td&gt;        &lt;td width="299"&gt;         &lt;p&gt;2273031-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="299"&gt;         &lt;p&gt;Francisco J. Riveros E.&lt;/p&gt;       &lt;/td&gt;        &lt;td width="299"&gt;         &lt;p&gt;2273036-3&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="299"&gt;         &lt;p&gt;Marcelo Salazar&lt;/p&gt;       &lt;/td&gt;        &lt;td width="299"&gt;         &lt;p&gt;2273045-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;Lunes 3 de Julio de 2006&lt;/p&gt; &lt;b&gt;   &lt;p&gt;     &lt;br /&gt;&lt;/p&gt; &lt;/b&gt;  &lt;h3&gt;1 Resumen&lt;/h3&gt;  &lt;p&gt;La descomposición en valores singulares (SVD) es utilizada en diferentes áreas de la biología actualmente. En general, SVD se utiliza para el análisis de conjuntos de datos, que a menudo son grandes y “ruidosos”.&lt;/p&gt;  &lt;p&gt;Entre las numerosas aplicaciones de SVD en la biología, se destacan en este trabajo tres: Dinámica de proteínas, Análisis de micro-arreglos de datos e Ingeniería inversa en redes genéticas. En cuanto a la dinámica de proteínas, se utiliza la SVD para analizar el movimiento de la hemoglobina muscular (myoglobin) respecto de la dinamica molecular. Según este método sirve para descomponer una trayectoria dinámica molecular hacia dentro de los modos fundamentales del movimiento atómico. &lt;/p&gt;  &lt;p&gt;El análisis de micro-arreglos (&lt;i&gt;microarrays&lt;/i&gt;) de datos, sirve para comparar distintos micro-arreglos de ADN. Se utiliza SVD en este campo, con el fin de obtener los “genes propios” (&lt;i&gt;eigengenes&lt;/i&gt; o filas de la matriz V de la SVD) y el “análisis propio” (&lt;i&gt;eigenassays&lt;/i&gt; o columnas de la matriz U de la SVD). Así, se comparan las muestras a través de estos dos parámetros obtenidos de la SVD, de donde se extraen patrones. El objetivo de encontrar estos patrones es lograr clasificar genes, inferir las funciones de los genes. Además, se busca clasificar enfermedades comparando con un micro-arreglo normal y estudiar los efectos de un estímulo interno.&lt;/p&gt;  &lt;p&gt;La SVD, también es útil en la ingeniería inversa a redes de genes. La idea, es utilizar SVD para encontrar los mínimos cuadrado para encontrar la expresión que permita localizar una familia de soluciones, es decir, de tomar una matriz que representa genes y experimentos, y a través de mínimos cuadrados, encontrar la mejor familia de soluciones posibles.&lt;/p&gt;  &lt;p&gt;Por otro lado, en este trabajo se agregan otros experimentos en los que se usan para analizar las capacidades metabólicas de dos especies de bacterias, comprobándose en estas dos que el “helicobacter pylori” tiene una red metabólica mas rígida que la “Haemophilus influenzae” para la producción de aminoácidos; Siendo la SVD, capaz de identificar los principales puntos de control para la regulación. Luego como punto principal del uso de SVD, fue que gracias a este procedimiento, se pudo aplicar a grandes números de ejemplos, por lo que se ocupan en grandes redes de genoma, antes difíciles de aplicar sin una transformación.&lt;/p&gt;  &lt;h3&gt;2 Introducción&lt;/h3&gt;  &lt;p&gt;La descomposición en valores singulares (SVD), es una herramienta en el álgebra lineal muy potente, que es muy usada para diversos ámbitos de investigación tanto como para análisis sintácticos como para la biología, entre otros casos. La SVD permite, a través de una serie de operaciones lineales elementales (todas las que involucran suma y/o multiplicación de filas y/o columnas), descomponer la información contenida en la matriz de datos y representar, en otras tres matrices, aspectos singulares o característicos de aquella información.&lt;/p&gt;  &lt;p&gt;El principio de descomposición involucra la reducción del elevado numero de dimensiones con que los datos son descritos en la primera matriz, las que impiden distinguir los valores singulares. La reducción, en tanto, consiste en desechar la información incidental (es datos irrelevantes) considerado como ruido en los datos, proporcionando así un modelo de distribución normalizado de las frecuencias o modelo sin ruido, el que redunda en una representación matemática mas compacta y, por tanto, mas simple de computar.&lt;/p&gt;  &lt;p&gt;Las matrices resultantes de la operación son:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Matriz ortogonal (&lt;b&gt;U&lt;/b&gt; en la Figura 1): obtenida al procesar linealmente el número de columnas (ortogonal) de la matriz original (A en el ejemplo de la Figura 1). En esta matriz se representan datos como vectores en espacios de datos.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPARTCD8bhI/AAAAAAAAA1A/m0rPz7Zjeqg/s1600-h/clip_image002%5B3%5D.jpg"&gt;&lt;img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="146" alt="clip_image002" src="http://lh6.ggpht.com/foward/SPARUC6RPMI/AAAAAAAAA1E/Ihd5yWHpE5o/clip_image002_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Figura 1 : &lt;/b&gt;Representación de matriz ortogonal&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;b) Matriz transpuesta (&lt;b&gt;V&lt;/b&gt; en la Figura 2): obtenida al permutar las filas por las columnas), proporcionando una disposición ortogonal de los elementos de la fila A través de esta transposición se presentan documentos como vectores en espacios de datos. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPARU10UlsI/AAAAAAAAA1I/9bq-_Cj-t0U/s1600-h/clip_image003%5B3%5D.jpg"&gt;&lt;img title="clip_image003" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="92" alt="clip_image003" src="http://lh6.ggpht.com/foward/SPARWHix5RI/AAAAAAAAA1M/LkgsimC4woI/clip_image003_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 2 :&lt;/b&gt; Representación de matriz transpuesta. &lt;/p&gt;  &lt;p&gt;c) Matriz diagonal (&lt;b&gt;E&lt;/b&gt; en la Figura 3):&lt;b&gt; &lt;/b&gt;obtenida al procesar linealmente el número de filas, el número de columnas y la cantidad de dimensiones de la matriz original (A). La matriz diagonal representa el valor singular de (A) y en ella todos los elementos que no pertenecen a la diagonal son nulos o iguales a cero. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPARXErPyYI/AAAAAAAAA1Q/BErNYrQ5qKw/s1600-h/clip_image005%5B3%5D.jpg"&gt;&lt;img title="clip_image005" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="191" alt="clip_image005" src="http://lh5.ggpht.com/foward/SPARYcb7mHI/AAAAAAAAA1U/Zlv4KXOJSzM/clip_image005_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 3 :&lt;/b&gt; Representación de matriz diagonal. &lt;/p&gt;  &lt;p&gt;Las tres nuevas matrices (&lt;b&gt;U&lt;/b&gt;), (&lt;b&gt;V&lt;/b&gt;) y (&lt;b&gt;E&lt;/b&gt;) dan origen a los vectores singulares de la representación matricial del corpus (&lt;b&gt;A&lt;/b&gt;), a saber, vector de palabras, de documentos y de valor singular, respectivamente .La Figura 4, que se presenta a continuación, grafica la factorización con SVD. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPARZFNQzXI/AAAAAAAAA1Y/-50WF9ZMPIo/s1600-h/clip_image007%5B3%5D.jpg"&gt;&lt;img title="clip_image007" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="118" alt="clip_image007" src="http://lh3.ggpht.com/foward/SPARZ8czCeI/AAAAAAAAA1c/5Y3qPt7S0MY/clip_image007_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;Figura 4 :&lt;/b&gt; Representación de SVD&lt;/p&gt;  &lt;p&gt;Si las tres nuevas matrices fueran multiplicadas, el producto resultante sería semejante, pero nunca idéntico a la matriz original, pues las dimensiones de esta ya han sido reducidas y solo puede ser reconstituida la información esencial, producto definido como valor singular (matriz &lt;b&gt;E&lt;/b&gt;) y vectores singulares (matrices &lt;b&gt;U&lt;/b&gt; y &lt;b&gt;V&lt;/b&gt;). De este modo, tras la SVD se obtiene una información que no está directamente disponible en la primera representación matricial, sino que está latente en ella .&lt;/p&gt;  &lt;h3&gt;3 Tema de Aplicación&lt;/h3&gt;  &lt;h4&gt;3.1 Dinámica de Proteínas&lt;/h4&gt;  &lt;p&gt;Como dijimos anteriormente en la introducción, por medio del análisis del SVD se ha usado para caracterizar a las proteínas dinámicas. En este caso se usa una SVD para analizar el movimiento de la hemoglobina muscular (myoglobin).Ya que según el profesor Romo [&lt;a href="#_ftn1_7362" name="_ftnref1_7362"&gt;[1]&lt;/a&gt;], usando los métodos de dinámica molecular, es posible medir las posiciones atómicas de todos los átomos muestreados durante una simulación.&lt;/p&gt;  &lt;p&gt;En el método de dinámica molecular se trabaja de la siguiente forma en un software:&lt;/p&gt;  &lt;p&gt;Se leen los parámetros que especifican las condiciones de la corrida tales como la temperatura inicial, el numero de partículas, la posición de las partículas (estructura fcc, bcc, etc.) la densidad, el paso de tiempo Δt, tiempo total de simulación, etc.&lt;/p&gt;  &lt;p&gt;Se inicializa el sistema, esto es, se asignan las posiciones y las velocidades iniciales.&lt;/p&gt;  &lt;p&gt;Se calculan las fuerzas sobre todas las partículas.&lt;/p&gt;  &lt;p&gt;Se integran las ecuaciones de movimiento de Newton. Este paso así como el anterior conforman el loop central de la simulación. Ellos son repetidos hasta haber calculado la evolución temporal del sistema durante el tiempo total de simulación deseado. Se van guardando las posiciones, velocidades, fuerzas, etc., durante cada paso en un archivo para luego ser procesadas.&lt;/p&gt;  &lt;p&gt;Después de haber completado lo anterior, se calculan y se imprimen los diferentes promedios relevantes. &lt;/p&gt;  &lt;p&gt;En otros experimentos el Prof. Ozkan, uso la SVD para el estudio si dos-estados proteínicos se pliegan en caminos o canales (funnels). El plegamiento proteico, es la segunda traducción del mensaje genético, este completa la información transferida del DNA al producto final, la proteína activa. En otras palabras, para entender completamente este proceso, es necesario descifrar el código de plegamiento, la segunda parte del mensaje genético:&lt;/p&gt;  &lt;p&gt;DNA → RNA → cadena polipeptídica → ¿Proceso de plegamiento? →Proteina activa&lt;/p&gt;  &lt;p&gt;Según el estudio de Ozkan, mostró que el modelo de plegamiento puede producir que esconda intermediarios. Una gran multiplicidad de trayectorias fueron observadas a nivel microscópico, empero estas colapsaban al esconder intermediarios a nivel microscópico corriendo en paralelo. Esta SVD fue usada para procesar estos datos, bajando a un nivel que podría ser analizado visualmente. Una matriz de 32 x M, fue creada fuera de M conformaciones de los 16mer cadenas de aminoácidos. Aquí las eigenfilas de los dos más grandes valores singulares fueron usadas como eje para un grafico 3-dimensional con el eje-z representando a la energía. Así, una representación de dos dimensiones de la energía de vista fue desarrollada usando la SVD. Por ejemplo podemos ver una vista para configuraciones para 4 o más contactos:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPARbClEFgI/AAAAAAAAA1g/vCrUjwiLR1o/s1600-h/clip_image009%5B3%5D.gif"&gt;&lt;img title="clip_image009" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="147" alt="clip_image009" src="http://lh3.ggpht.com/foward/SPARcTyFgHI/AAAAAAAAA1k/L6k-_D_vKag/clip_image009_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;3.2 Análisis de Micro-Arreglos de Datos.&lt;/h4&gt;  &lt;p&gt;Los micro arreglos de datos, se entienden como matrices en las que las filas corresponden a genes, mientras que las columnas son experimentos, por lo que cada entrada de la matriz a&lt;sub&gt;ij&lt;/sub&gt;, es la respuesta del gen i cuando se aplica el experimento j. En la siguiente figura se muestra la descomposición.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPARdQBUkBI/AAAAAAAAA1o/kjiDorq0d-E/s1600-h/clip_image010%5B3%5D.gif"&gt;&lt;img title="clip_image010" style="display: inline" height="136" alt="clip_image010" src="http://lh5.ggpht.com/foward/SPAReQP_guI/AAAAAAAAA1s/IGh_uB_iJzw/clip_image010_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En este caso, las columnas de la matriz U de la SVD recibe el nombre de “análsis propio”, mientras que las filas de la matriz V “genes propios” (de ahora en adelante se utilizan los nombres en inglés que están en la figura. La idea, es que la respuesta de un gen frente a un estimulo, se puede escribir como combinación lineal del eigengen, mientras que la expresión de un experimento, como combinación lineal de un eigenassay.&lt;/p&gt;  &lt;p&gt;Alineando el procedimiento con los fundamentos de la SVD, tenemos que la matriz que contiene los datos experimentales, se descompone en sus vectores propios y en otros que deforman estos vectores. La SVD tradicional, muestra que la matriz de datos en este caso parte de una circunferencia formada por los vectores propios de norma 1, y que se amplifica con la matriz que contiene los valores singulares, para luego rotar el producto de lo anterior y generar una hiper-elipse rotada a partir de la circunferencia de radio 1. La matriz de valores singulares y las columnas de la matriz U de eigenassays, representan los estímulos proporcionados a los genes en estado natural que son representados por las filas de la matriz V.&lt;/p&gt;  &lt;h4&gt;3.3 Ingeniería Inversa en Redes Genéticas&lt;/h4&gt;  &lt;p&gt;Si un sistema se encuentra operando cerca de un estado estable, las dinámicas (fluctuaciones de la concentración en una red de genes) se pueden aproximar a través de la ecuación:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SPARfEkOwKI/AAAAAAAAA1w/4T0rWwcojYY/s1600-h/clip_image012%5B3%5D.gif"&gt;&lt;img title="clip_image012" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="34" alt="clip_image012" src="http://lh3.ggpht.com/foward/SPARgBHKrUI/AAAAAAAAA10/bzqIQEVL8RI/clip_image012_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Donde x, es la concentración de mRNAs que reflejan los niveles de expresión de los genes, los λ&lt;sub&gt;i&lt;/sub&gt;, representan las tasas de auto-degradación, las W&lt;sub&gt;ij&lt;/sub&gt;, describe el tipo y fuerza de la interacción entre los genes i y j, las b&lt;sub&gt;i&lt;/sub&gt;, son el estímulo interno, y ε&lt;sub&gt;i &lt;/sub&gt;representan el ruido.&lt;/p&gt;  &lt;p&gt;Un experimento aplica un estímulo y usa un micro-arreglo para medir las concentraciones de N mRNAs diferentes. Al repetir M veces este experimento, se puede obtener una estimación de x. &lt;/p&gt;  &lt;p&gt;Ahora, la ecuación anterior, puede escribirse en forma matricial, de la siguiente manera:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPARhFXN32I/AAAAAAAAA14/7iLPe7iIerE/s1600-h/clip_image014%5B3%5D.gif"&gt;&lt;img title="clip_image014" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="37" alt="clip_image014" src="http://lh3.ggpht.com/foward/SPARiuYMuoI/AAAAAAAAA18/ZwUhtw5oxCY/clip_image014_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Donde la matriz A es una combinación de W, es decir, que la solución para A, permite obtener W, que es lo que se busca.&lt;/p&gt;  &lt;p&gt;El objetivo de la ingeniería inversa, es usar la matriz medida B, X y X’ para deducir A y por lo tanto la matriz de conectividad W. Tomando la transpuesta del sistema anterior, queda: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPARjiFpisI/AAAAAAAAA2A/obxaf3dC1E4/s1600-h/clip_image016%5B3%5D.gif"&gt;&lt;img title="clip_image016" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="29" alt="clip_image016" src="http://lh6.ggpht.com/foward/SPARkiCzjWI/AAAAAAAAA2E/VraM9CPjMJA/clip_image016_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si M = N, y además X es de rango completo, basta con invertir X para encontrar A. Sin embargo, típicamente, M es mucho mayor que N por el alto costo de perturbaciones y medidas. Por lo tanto, se tiene un problema indeterminado. Una forma de abordar el problema es utilizando la SVD, donde al descomponer la transpuesta de X queda:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SPARlsrggmI/AAAAAAAAA2I/vLfM3AOCKLQ/s1600-h/clip_image018%5B3%5D.gif"&gt;&lt;img title="clip_image018" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="36" alt="clip_image018" src="http://lh6.ggpht.com/foward/SPARmc9EVzI/AAAAAAAAA2M/NW-hDgWOxog/clip_image018_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si se asume que todos los valores singulares de la transpuesta de X están al final de la diagonal de W, se puede obtener una solución particular para A:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPARnfNKH4I/AAAAAAAAA2Q/i6zYAPNG7J4/s1600-h/clip_image020%5B3%5D.gif"&gt;&lt;img title="clip_image020" style="display: inline" height="60" alt="clip_image020" src="http://lh3.ggpht.com/foward/SPARoV_9zII/AAAAAAAAA2U/GvPfawo9JMs/clip_image020_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Donde 1/w&lt;sub&gt;j&lt;/sub&gt; se reemplaza por 0 si w&lt;sub&gt;j&lt;/sub&gt; = 0.&lt;/p&gt;  &lt;p&gt;Por lo anterior, sabemos que todas las posibles soluciones son:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SPARpc8wimI/AAAAAAAAA2Y/Y3WyFd4doCo/s1600-h/clip_image022%5B3%5D.gif"&gt;&lt;img title="clip_image022" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="36" alt="clip_image022" src="http://lh3.ggpht.com/foward/SPARqEry1pI/AAAAAAAAA2c/wc6GRKK2U1c/clip_image022_thumb.gif?imgmax=800" width="179" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La solución a elegir, es aquella que los errores de mínimos cuadrados. Este método, trata de encontrar una solución que se acerque lo más posible a la encontrada.&lt;/p&gt;  &lt;p&gt;Cabe señalar que las redes de genes a menudo son poco densas, esto quiere decir que la mayoría de los genes no interactúa con otros. Por lo que en vez de buscar una solución con el mínimo error cuadrático, se busca por una solución con el mínimo número de conexiones, o la “matriz de escasez”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPARrL_sAbI/AAAAAAAAA2g/2ebCr86ezeE/s1600-h/clip_image024%5B3%5D.gif"&gt;&lt;img title="clip_image024" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="86" alt="clip_image024" src="http://lh5.ggpht.com/foward/SPARsazLMeI/AAAAAAAAA2k/25CJwcqp_mU/clip_image024_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En el gráfico de la izquierda, se muestra el número de errores (E), cometidos por la ingeniería inversa como una función de M, el número de medidas.&lt;/p&gt;  &lt;p&gt;El segundo gráfico, muestra el número crítico de medidas, M&lt;sub&gt;c&lt;/sub&gt;, requerida para cubrir correctamente la matriz de conectividad, en función de N, el tamaño de la red para sistemas lineales. Los círculos muestran los datos , mientras que la recta, es la aproximación por mínimos cuadrados.&lt;/p&gt;  &lt;h4&gt;3.4 Otros Problemas&lt;/h4&gt;  &lt;p&gt;Sobre otras aplicaciones de la SVD, podemos ver el uso para analizar las capacidades metabólicas de dos especies de bacterias. El análisis del espacio de soluciones y la dominancia del primer valor singular revelo que la “&lt;i&gt;Helicobacter pylori&lt;/i&gt;” tiene una red metabólica mas rígida que la “&lt;i&gt;Haemophilus influenzae&lt;/i&gt;” para la producción de aminoácidos. Así la SVD fue capaz de identificar las principales ramas de la red que pueden ser identificados como principales puntos de control para la regulación.&lt;/p&gt;  &lt;p&gt;En ese estudio se mostró que la SVD de una matriz (W) formada para un &lt;i&gt;random&lt;/i&gt; de ejemplos desde el espacio de soluciones en el estado estacionario de las redes metabólicas hRBC (&lt;i&gt;human red blood cell&lt;/i&gt;) dan acercamientos similares dentro de las propiedades regulatorias de la red, tal como fueron obtenidas con la SVD de P, obtenida de los Extreme pathways (ExPas). Estos nuevos acercamientos tienen dos principales ventajas. Primero, esto funciona con una representación directa de las formas del espacio de soluciones metabólicos sin el factor de unión de una distribución no uniforme de los Extreme pathways y segundo, que el procedimiento SVD puede ser aplicado a grandes números de ejemplos, tal como sería producido desde las redes genome-scale.&lt;/p&gt;  &lt;h3&gt;4 Aporte Grupal&lt;/h3&gt;  &lt;p&gt;Dinámica de Proteínas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En este caso, SVD provee de un método para descomponer una trayectoria dinámica molecular hacia dentro de los modos fundamentales del movimiento atómico. Los vectores singulares derechos, son proyecciones de las estructuras de proteínas sobre estos modos fundamentales mostrando el movimiento de la proteína en una base generalizada de bajas dimensiones. En este caso, análisis estadísticos de los vectores singulares derechos, pueden ser usados para clasificar sub-estados configuracionales discretos en la proteína. Luego, el retrato del espacio configuracional formado desde los vectores singulares derechos, pueden también ser usados para visualizar un movimiento complejo de dimensiones altas, y asimismo para examinar la magnitud del espacio muestreado por la simulación.&lt;/p&gt;  &lt;p&gt;Análisis de Micro-Arreglos de Datos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los micro-arreglos son una de las últimas brechas en la biología molecular, el cual permite el monitoreo de la expresión de genes de miles de millones en paralelo y ya se esta produciendo una gran cantidad de información con estos datos. El análisis y manejo de estos datos se a convertido en uno de los mayores cuellos de botella en la utilización de esta tecnología. El fondo de los micro-arreglos son las imágenes, donde deben ser transformadas a expresiones matriciales de genes, es decir, tablas donde las filas representan genes y las columnas representan varios muestreos como tejidos finos de las condiciones experimentales, y los numeros en cada celda caracterizan a nivel de expresión particular de cada gen en una muestra particular. Estas matrices deben ser analizadas posteriormente, si cualquier conocimiento adyacente a los procesos biológicos es extraído.&lt;/p&gt;  &lt;p&gt;Ingeniería Inversa en Redes Genéticas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Descubriendo y entendiendo la complejidad de la interacción molecular que se traduce en un organismo vivo es uno de los restos más interesante de la biología molecular moderna. Por esto se usa ingeniería inversa optimizada buscando la reconstrucción de red de interacción entre genes dinámicos. La aproximación se basa en los micro-arreglos de datos y los conocimientos de la biología actual. Así se identifican estructuras de redes buscando sistemas ordinarios de ecuaciones diferenciales, las cuales simulan comportamientos que pueden encajar en la expresión de los genes. Métodos de re-muestreo son aplicados para validar el modelo de red dinámica.&lt;/p&gt;  &lt;p&gt;Este algoritmo fue aplicado para diferenciar los distintos micro-arreglos de DNA.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;5 Conclusiones&lt;/h3&gt;  &lt;p&gt;No cabe la menor duda que la técnica SVD, junto al gran avance computacional, se esta transformando en algo esencial y relevante para la biología, debido a que entrega la información de un punto de vista factorizado, sino que también esta filtra información redundante que muchas veces no hacen mas que entorpecer la etapa de análisis. La importancia de la SVD en biología puede ser apreciada si se revisan papers relacionados con el tema, de los cuales 81 realizan una referencia a esta técnica desde el año 2002, donde se mencionan nuevas técnicas y usos de esta descomposición de datos. Como los biólogos se han adaptado mejor a nuevas técnicas y herramientas, el uso de la SVD continuará creciendo en un futuro cercano.&lt;/p&gt;  &lt;hr align="left" width="33%" size="1" /&gt;  &lt;p&gt;&lt;a href="#_ftnref1_7362" name="_ftn1_7362"&gt;[1]&lt;/a&gt; Romo T.D., Clarage J.B., Sorensen D.C., Phillips G.N., Jr. Automatic identification of&lt;/p&gt;  &lt;p&gt;discrete substates in proteins: singular value decomposition analysis of timeaveraged&lt;/p&gt;  &lt;p&gt;crystallographic refinements. Proteins 1995; 22:311-21.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-3620668044824024174?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/3620668044824024174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=3620668044824024174' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/3620668044824024174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/3620668044824024174'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/aplicaciones-de-svd-en-biologa.html' title='Aplicaciones de SVD en Biología'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh6.ggpht.com/foward/SPARUC6RPMI/AAAAAAAAA1E/Ihd5yWHpE5o/s72-c/clip_image002_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-2659789059045540868</id><published>2008-10-10T19:32:00.001-07:00</published><updated>2008-10-10T19:41:37.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><title type='text'>BANCO CENTRAL E INFLACION</title><content type='html'>&lt;h5 align="center"&gt;( TRABAJO ESCRITO EN EL 2006 PARA ECONOMIA I/A)&lt;/h5&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;El origen del Banco Central de Chile.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central de Chile fue creado en virtud del decreto ley N° 486 del 21 de agosto de 1925, promulgado bajo el gobierno de don Arturo Alessandri Palma. &lt;/p&gt;  &lt;p&gt;Abrió sus puertas al público el lunes 11 de enero de 1926. La institución comenzó sus actividades con un capital nominal de 150 millones de pesos de los cuales aproximadamente el 13% era aportado por el Estado, el 40% por los bancos comerciales nacionales y extranjeros que operaban en Chile y el 47% restante por el público mediante la suscripción de acciones. &lt;/p&gt;  &lt;p&gt;Ismael Tocornal Tocornal y Francisco Garcés Gana eran el presidente y vicepresidente respectivamente.&lt;/p&gt;  &lt;p&gt;La primera ley orgánica del Banco Central estuvo vigente hasta julio de 1953, cuando fue publicado el Decreto con Fuerza de Ley N° 106, dando origen a la segunda ley orgánica del Banco. En esta nueva ley, el Banco Central fue concebido como una institución autónoma de duración indefinida, cuyo objetivo fundamental consistía en “propender al desarrollo ordenado y progresivo de la economía nacional mediante una política monetaria y crediticia que, procurando evitar tendencias inflacionistas o depresivas, permita el mayor aprovechamiento de los recursos productivos del país”.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Los objetivos de la autonomía: una visión económica. &lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;a) Estabilidad de la moneda&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La actual ley orgánica constitucional del Banco Central de Chile establece, en su artículo 3°, que uno de los objetivos básicos del Instituto Emisor es velar por la estabilidad de la moneda. Esto significa evitar que el valor de la moneda se deprecie por efectos de la inflación. Así, es tarea del Banco Central preocuparse de que la inflación sea baja y estable.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;b) Normal funcionamiento de los pagos internos&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El artículo 3° de la ley orgánica constitucional del Banco Central de Chile establece el segundo objetivo básico del instituto emisor, el velar por el normal funcionamiento de los pagos internos.&lt;/p&gt;  &lt;p&gt;Se entiende por sistema de pagos internos el conjunto de instituciones e instrumentos que facilitan la realización de transacciones en la economía. Por lo general se incluyen como componentes principales dentro de éste el circulante y los depósitos a la vista (cheques) en los bancos. Estos son los instrumentos que más usados en las transacciones que realizan los agentes económicos; una falla en su normal funcionamiento afectaría todo el sistema de pagos, con graves daños reales para la economía.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;c) Normal funcionamiento de los pagos externos &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El artículo 3° de la ley orgánica constitucional establece, finalmente, que el Banco Central de Chile debe velar por el normal funcionamiento de los pagos externos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Políticas del Banco Central&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;A) Descripción de las principales políticas &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. Política monetaria&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central debe proteger el valor de la moneda nacional, el peso, buscando que la inflación sea baja y estable. El propósito de mantener una inflación baja y estable, que es la forma en que se interpreta en la práctica el concepto de estabilidad de precios.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. Política cambiaria&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Existe una política en estos momentos de flotación cambiaria, en donde el Banco Central regula por medio de esta cualquier alteración que sufra el mercado financiero, esto es, cualquier variación en los precios, corrigiendo de esta manera una inflación o deflación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. Política financiera &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central es el prestamista de última instancia de la economía, y por tanto provee liquidez a las instituciones que enfrentan problemas temporales de caja. El Banco Central también tiene facultades regulatorias en los pagos de intereses sobre cuentas corrientes y razones de crédito. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;B) Mecanismos de transmisión y el horizonte de política&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La transmisión de los cambios en la política monetaria hacia el resto de la economía sucede a través de varios canales y toma un tiempo relativamente largo y variable en materializarse. Así, son diversos los mecanismos a través de los cuales una determinada acción de política (reflejada en un cambio en la tasa de interés de política) puede tener impacto en la inflación y la actividad. Una política monetaria más restrictiva incide en un menor gasto privado en inversión y consumo y, por esa vía, afecta a la brecha entre la demanda agregada y el producto potencial y, finalmente, a la inflación. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;C) Características de la conducción de la política monetaria&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las reuniones del Consejo con la Comisión de Hacienda del Senado son fundamentales para mantener a la sociedad informada y compenetrada de la discusión y conducción macroeconómicas, así como para que el Banco Central reciba retroalimentación respecto de las políticas seguidas y de la percepción existente respecto a ellas. Las decisiones de política se toman en reuniones mensuales, las cuales son anunciadas públicamente con seis meses de anticipación. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;D) Conducción operativa de la política monetaria&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La meta operacional de mediano plazo se define en términos de la variación del índice de precios al consumidor (IPC). Este indicador, sin embargo, puede mostrar un grado relativamente alto de volatilidad mes a mes, como resultado de variaciones de los precios de alimentos perecibles y de combustibles. Por lo tanto, para interpretar la información de precios periódicamente y a corto plazo (hasta doce meses), el Banco Central centra su atención preferentemente en mediciones de inflación subyacente o de tendencia, en particular la variación del IPC subyacente (el índice total excluyendo verduras, frutas y combustibles) que registra el Instituto Nacional de Estadísticas. Para proyectar la evolución de la tendencia de la inflación en un horizonte de mediano plazo, entre 12 y 24 meses, se usan ambos indicadores, cuestión que no plantea problemas prácticos ni de interpretación, puesto que ambos registros tienden a coincidir en un horizonte de dos años.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Funciones y Organización&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;A) Funciones &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Emisión:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;El Banco Central tiene la potestad exclusiva para emitir billetes y acuñar monedas. Los billetes y monedas emitidos por el Banco Central son los únicos medios de pago con poder liberatorio, circulación ilimitada y curso legal en todo el país.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Regulación de la cantidad de dinero en circulación y de crédito:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central puede abrir líneas de crédito, otorgar refinanciamiento y descontar y redescontar documentos negociables en moneda nacional o extranjera, a las empresas bancarias y sociedades financieras; fijar las tasas de encaje que, en proporción a sus depósitos y obligaciones, deban mantener esas entidades y las cooperativas de ahorro y crédito; ceder documentos de su cartera de colocaciones o de inversiones a bancos y financieras y adquirir de las mismas, documentos de sus carteras de colocaciones o de inversiones, y, finalmente, realizar operaciones de mercado abierto.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Regulación del sistema financiero y del mercado de capitales:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central está facultado para regular las captaciones de fondos del público por parte de las empresas bancarias, sociedades financieras y cooperativas de ahorro y crédito; fijar los intereses máximos que puedan pagar las mismas entidades sobre depósitos a la vista; dictar las normas y limitaciones a que deben sujetarse los bancos y financieras en materia de avales y fianzas en moneda extranjera; fijar las relaciones entre las operaciones activas y pasivas de las empresas bancarias, sociedades financieras y cooperativas de ahorro y crédito; reglamentar el funcionamiento de las cámaras compensadoras; y autorizar los sistemas de reajuste que utilicen en sus operaciones de crédito de dinero en moneda nacional las empresas bancarias, sociedades financieras y cooperativas de ahorro y crédito. En las operaciones de crédito de dinero en moneda nacional en que no es parte alguna de estas entidades, se puede pactar libremente cualquier sistema de reajuste, sin necesidad de autorización del Banco Central.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Facultades para cautelar la estabilidad del sistema financiero:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Estas atribuciones son fundamentalmente dos: primero, conceder a las empresas bancarias y sociedades financieras créditos en caso de urgencia por un plazo no superior a noventa días, cuando éstas presenten problemas derivados de una falta transitoria de liquidez, operaciones que están dentro de la función de prestamista de última instancia que corresponde a los bancos centrales; y segundo, conceder créditos o adquirir activos a esas mismas entidades cuando hayan presentado proposiciones de convenio o hayan sido declaradas en liquidación forzosa.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5. Funciones del Banco como agente fiscal:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central, a solicitud del Ministro de Hacienda, puede actuar como agente fiscal en la contratación de créditos externos e internos y en aquellas operaciones que sean compatibles con las finalidades de la institución.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;6. Atribuciones en materias internacionales:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Son facultades del Banco, entre otras, participar y operar con los organismos financieros extranjeros o internacionales; contratar toda clase de créditos en el exterior; emitir títulos y colocarlos en el extranjero; conceder créditos a estados extranjeros, bancos centrales o entidades bancarias o financieras extranjeras o internacionales, cuando dichos créditos tengan por objeto facilitar el cumplimiento de los objetivos del Banco; y mantener, administrar y disponer de sus reservas internacionales, ya sea en el país o en el exterior.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;7. Facultades en materia de operaciones de cambios internacionales:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central tiene la potestad para formular y administrar las políticas cambiarias. No obstante, las políticas de comercio exterior corresponden al Presidente de la República, las cuales son implementadas a través de diversos ministerios y el Servicio Nacional de Aduanas. El Banco Central mantiene, sin embargo, sistemas de información de las operaciones de comercio exterior en relación con sus implicancias cambiarias (retorno y liquidación de exportaciones y cobertura de importaciones).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;8. Funciones estadísticas:&lt;/strong&gt; El Banco Central debe publicar oportunamente las principales estadísticas macroeconómicas nacionales, incluyendo aquellas de carácter monetario y cambiario, de balanza de pagos y las cuentas nacionales.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;B) Organización &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Consejo&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;La autoridad máxima del Banco Central es el Consejo, que tiene a su cargo la dirección y administración del Banco, correspondiéndole ejercer todas las facultades y atribuciones que la ley orgánica le encomienda.&lt;/p&gt;  &lt;p&gt;El Consejo está compuesto por cinco miembros designados por el Presidente de la República, previo acuerdo del Senado. Duran en sus cargos diez años, pudiendo ser reelegidos por períodos iguales, renovándose uno cada dos años. El presidente del Consejo, que también lo es del Banco, es designado por el Presidente de la República de entre los miembros del Consejo por un período de cinco años, o el tiempo menor que le reste como consejero. El vicepresidente es elegido por el mismo Consejo de entre sus miembros.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autoridades del Banco&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VITTORIO CORBO LIOI&lt;/strong&gt; es presidente del Consejo del Banco Central de Chile desde mayo de 2003.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;JOSÉ DE GREGORIO R. &lt;/strong&gt;es Vicepresidente del Banco Central de Chile desde diciembre de 2003. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;JORGE DESORMEAUX J.&lt;/strong&gt;, es consejero del Banco Central de Chile desde diciembre de 1999.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;MANUEL MARFAN L. &lt;/strong&gt;es consejero del Banco Central de Chile desde diciembre de 2003.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ENRIQUE MARSHALL RIVERA&lt;/strong&gt; es Consejero del Banco Central desde diciembre de 2005.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Inflación&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Índice de Inflación&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La inflación supone que existe un aumento del precio de los bienes en general. Para poder medir ese aumento, se crean diferentes índices que miden el crecimiento medio porcentual de una &lt;i&gt;cesta de bienes&lt;/i&gt; ponderada en función de lo que se quiera medir.&lt;/p&gt;  &lt;p&gt;El índice más corrientemente utilizado para medir la inflación es el "índice de precios al consumidor" o &lt;a href="http://es.wikipedia.org/wiki/IPC"&gt;IPC&lt;/a&gt;, el cual indica porcentualmente la variación en el precio promedio de los bienes y servicios que adquiere un consumidor típico en dos periodos de tiempo, usando como referencia lo que se denomina en algunos países la &lt;i&gt;cesta básica&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;En términos generales un proceso inflacionario se inicia por diversas causas, siendo una de las mas comunes la que se origina por un desequilibrio significativo entre la oferta y la demanda, es decir, cuando por diversas presiones económicas la demanda de bienes y servicios es superior a la oferta disponible de los mismos a los precios actuales, o cuando la oferta está limitada por la baja productividad o por restricciones del mercado.&lt;/p&gt;  &lt;p&gt;&lt;a name="Efectos_de_la_inflaci.C3.B3n_sobre_la_ec"&gt;&lt;/a&gt;&lt;b&gt;Efectos de la inflación sobre la economía&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La inflación no necesariamente es perjudicial para la economía de un país, siempre que sea moderada, es decir que no exceda digamos entre un 3 o 5%. La inflación moderada se considera como el elemento que engrasa las ruedas de la industria y comercio.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Otros efectos negativos de la inflación son:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Incrementa la incertidumbre afectando negativamente la inversión y el ahorro. Aumenta el consumo de bienes durables, ya que los consumidores anticipan compras de estos. &lt;/p&gt;  &lt;p&gt;Redistribuye los ingresos de los pensionados o poseedores de instrumentos de renta fija a aquellos que tienen fuentes de ingresos más flexibles, como por ejemplo empleados que reciban aumentos de sueldo ajustados a la inflación. &lt;/p&gt;  &lt;p&gt;Favorece al prestatario y perjudica al prestamista, por cuanto el valor del dinero disminuye en función del tiempo. Este factor es particularmente importante en relación al endeudamiento de los gobiernos ya que éstos reducen su deuda real por la pérdida de valor de la moneda. De aquí que la inflación sea vista como un impuesto. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Grados de inflación &lt;/b&gt;&lt;a name="2"&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Inflación moderada:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Cuando la subida de los precios sigue una tendencia gradual y lenta, con una variación anual de unos pocos puntos porcentuales, no se considera como problema económico y por el contrario, puede incluso llegar a estimular la actividad económica.  &lt;br /&gt;&lt;b&gt;Inflación crónica o galopante:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;Se conoce como inflación crónica al crecimiento continuo y elevado de precios, con variaciones anuales que oscilan entre el 10 y el 30% en algunos países industrializados y en la gran mayoría de países en vías de desarrollo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Hiperinflación:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Es la forma más extrema, los aumentos persistentes de los precios pueden provocar la crisis de todo el sistema económico. Cuando los precios aumentan en forma persistente, el temor a que los precios continúen subiendo induce al mayor gasto de las familias y de las empresas y a la compra de bienes de capital para no mantener ahorros ociosos que se deprecian. Esta psicosis inflacionaria acentúa las presiones sobre los precios lo cual hace aumentar aún más la inflación. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Principales consecuencias de la inflación&lt;/b&gt;&lt;a name="4"&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En las economías desarrolladas las inflaciones moderadas se han considerado estimulantes siempre que no sobrepasen los límites críticos, los cuales ejercen efectos destructivos sobre la economía interna de un país, entre los que se destacan:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Distorsión del mercado&lt;/i&gt;&lt;/b&gt;   &lt;br /&gt;&lt;b&gt;&lt;i&gt;Deterioro de la calidad de vida&lt;/i&gt;&lt;/b&gt;   &lt;br /&gt;&lt;b&gt;&lt;i&gt;Desestímulo a la producción&lt;/i&gt;&lt;/b&gt;   &lt;br /&gt;&lt;b&gt;&lt;i&gt;Desestímulo al ahorro&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Fuga de capitales&lt;/i&gt;&lt;/b&gt;   &lt;br /&gt;&lt;b&gt;&lt;i&gt;Déficit en la balanza comercial&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cura de la inflación&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La cura de la inflación debe estar basada en un mecanismo monetario-cambiario que genere tasas de expansión monetaria que no excedan sustancialmente a la tasa de crecimiento del PIB.&lt;/p&gt;  &lt;p&gt;Por &lt;b&gt;reforma monetaria&lt;/b&gt; entendemos un cambio de moneda que establezca nuevas reglas para su emisión. Muchos países industrializados y en vías de desarrollo, en algún momento de su historia económica, han hecho reformas monetarias. Así, en Argentina el austral reemplazó al peso y en 1991 el peso argentino reemplazó al austral. En Brasil el cruzado reemplazó al cruceiro y el real recientemente reemplazó al cruzado. Pero para que las reformas monetarias sean exitosas es menester la existencia de nuevas reglas para su emisión, pues si no es así se pueden repetir los mismos errores que hicieron necesario, en su momento, cambiar de moneda.&lt;/p&gt;  &lt;p&gt;El banco central, en Septiembre de 1999, el objetivo nominal sobre el tipo de cambio —representado en la existencia de una banda cambiaria— fue abandonado, adoptándose un régimen de flotación cambiaria. Ello eliminó una posible fuente de incoherencia en el diseño de régimen de política; el único compromiso del Banco Central es ahora mantener la inflación en la meta, además de reflejar la confianza de la autoridad en el mercado para determinar de manera autónoma el valor de la moneda nacional. En un mundo de alta volatilidad internacional y apertura de capitales, el mantener un compromiso cambiario no es sólo una tarea difícil sino que, como bien lo enseñan recientes experiencias, potencialmente muy costoso. La flexibilidad cambiaria elimina este compromiso, centrando todos los esfuerzos del Banco Central en la meta de inflación, la cual se convierte en el ancla nominal de la economía, evitando posibles confusiones. Adicionalmente, la flotación cambiaria confiere a la economía flexibilidad para enfrentar los shocks externos, facilitando un ajuste que de lo contrario podría ser pospuesto y, por ende, más complejo. &lt;/p&gt;  &lt;p&gt;La flexibilidad cambiaria, sin embargo, no significa que el Banco Central de Chile no pueda intervenir en el mercado cambiario en situaciones excepcionales, si es que considera que la trayectoria de la moneda se ha alejado mucho de su valor de equilibrio, y es posible que existan costosas reversiones en el futuro. Tales intervenciones, sin embargo, son medidas transparentes y fundadas, definiéndose de manera explícita los plazos y montos involucrados, además de fundamentarse con claridad las razones que motivan estas acciones de excepción.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;CONCLUSION&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El Banco Central presenta informes de política monetaria, el que se enmarca dentro del esquema de metas de inflación que éste utiliza. Ahora que la inflación ya está en el rango fijado como meta de largo plazo, el objetivo principal de la política monetaria es mantener la inflación dentro de dicho rango y para este fin citado informe cumple con el rol fundamental, cual es, mantener informado al público de las razones que subyacen al accionar del Banco Central.&lt;/p&gt;  &lt;p&gt;La operatoria de la política de metas de inflación requiere que el Banco Central oriente su accionar a lograr que la inflación proyectada se mantenga dentro de la meta fijada. Dado que la política monetaria opera con rezagos, para poder cumplir su objetivo el Banco Central tiene que tener la capacidad para proyectar la inflación para un período de tiempo en el cual la política monetaria sea capaz de afectarla(12 a 24 meses). Esta proyección debe considerar la forma en la cual ésta se genera y la evolución más probable en el tiempo de aquellos determinantes que no están bajo su control (el precio internacional del petróleo, la tasa de interés internacional, la evolución del producto y el comercio mundial, etc.). En este esquema, el Banco Central determina su tasa de política –tasa de instancia- tomando en cuenta las proyecciones de inflación para los próximos 12 a 24 meses. Dentro de este esquema, los shocks temporales que afectan la inflación observada, pero no la proyectada, no requieren de un cambio de política.&lt;/p&gt;  &lt;p&gt;Lo se discute principalmente es sobre la importancia de tener como objetivo principal del Banco Central el logro de una inflación baja y predecible. Esto no significa que se privilegie el logro de una inflación baja por sobre un crecimiento alto, sino que reconoce que de acuerdo a la teoría y no en el producto. Además, el lograr una inflación baja y predecible es la principal contribución que se puede hacer la política monetaria al logro de una tasa de crecimiento alta y sostenida. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-2659789059045540868?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/2659789059045540868/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=2659789059045540868' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/2659789059045540868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/2659789059045540868'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/banco-central-e-inflacion.html' title='BANCO CENTRAL E INFLACION'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-4660333232595985982</id><published>2008-10-10T19:24:00.001-07:00</published><updated>2008-10-10T19:24:18.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fotos'/><title type='text'>Fotos Antiguas</title><content type='html'>&lt;p&gt;Digamos que son unas fotos antiguas y las quise subir… del 2006 mas o menos en el laboratorio Intel Motorola.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SPAOK-KHxkI/AAAAAAAAA0o/WPZPULdpubk/s1600-h/logo_pord_over%5B2%5D.gif"&gt;&lt;img title="logo_pord_over" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="55" alt="logo_pord_over" src="http://lh5.ggpht.com/foward/SPAOLz01DdI/AAAAAAAAA0s/lDlPy_ZVQ0A/logo_pord_over_thumb.gif?imgmax=800" width="163" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lh3.ggpht.com/foward/SPAOQHamhxI/AAAAAAAAA0w/zFPFcl2wQGU/s1600-h/10-08-06_2006%5B2%5D.jpg"&gt;&lt;img title="10-08-06_2006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="184" alt="10-08-06_2006" src="http://lh4.ggpht.com/foward/SPAORFSfscI/AAAAAAAAA00/KrwpOunVzUA/10-08-06_2006_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/foward/SPAOSvWTkVI/AAAAAAAAA04/p_jT301yCz4/s1600-h/10-08-06_2007%5B2%5D.jpg"&gt;&lt;img title="10-08-06_2007" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="10-08-06_2007" src="http://lh3.ggpht.com/foward/SPAOUJhSsaI/AAAAAAAAA08/Qm4Q1Gfw_h0/10-08-06_2007_thumb.jpg?imgmax=800" width="184" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-4660333232595985982?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/4660333232595985982/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=4660333232595985982' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4660333232595985982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4660333232595985982'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/fotos-antiguas.html' title='Fotos Antiguas'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh5.ggpht.com/foward/SPAOLz01DdI/AAAAAAAAA0s/lDlPy_ZVQ0A/s72-c/logo_pord_over_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-4246194830442915821</id><published>2008-10-10T19:20:00.001-07:00</published><updated>2008-10-10T19:20:10.220-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fotos'/><category scheme='http://www.blogger.com/atom/ns#' term='Curriculum'/><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='4MINDS'/><category scheme='http://www.blogger.com/atom/ns#' term='Proyectos'/><title type='text'>Mi Oficina!! …cuando tenia mi empresa :(</title><content type='html'>&lt;p&gt;Bueno como pueden ver en la foto este era mi espacio donde realizaba mis funciones administrativas, programaticas y estudio … en mi antigua empresa 4MINDS Software LTDA. Viejos y buenos recuerdos…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SPANPuKQwOI/AAAAAAAAA0g/l8VxaQWnWaY/s1600-h/PICT3707%5B2%5D.jpg"&gt;&lt;img title="PICT3707" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="184" alt="PICT3707" src="http://lh4.ggpht.com/foward/SPANVHDDX2I/AAAAAAAAA0k/kVed1YST37k/PICT3707_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-4246194830442915821?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/4246194830442915821/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=4246194830442915821' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4246194830442915821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4246194830442915821'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/mi-oficina-cuando-tenia-mi-empresa.html' title='Mi Oficina!! …cuando tenia mi empresa :('/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh4.ggpht.com/foward/SPANVHDDX2I/AAAAAAAAA0k/kVed1YST37k/s72-c/PICT3707_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-401977768398147412</id><published>2008-10-10T19:07:00.001-07:00</published><updated>2008-10-10T19:09:32.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia Pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Ayudantía 6</title><content type='html'>&lt;h2&gt;Problema&lt;/h2&gt;  &lt;p&gt;Existe un experimento de física cuyo resultado esta dado en dos archivos. &lt;/p&gt;  &lt;p&gt;Un archivo llamado &lt;b&gt;nombre.dat &lt;/b&gt;que contiene registros con el nombre del experimento (&lt;b&gt;string[10]&lt;/b&gt;)&lt;b&gt;,&lt;/b&gt;y el numero de muestras realizadas en dicho experimento(&lt;b&gt;Integer&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;El otro archivo, &lt;b&gt;muestra.dat &lt;/b&gt;contiene números enteros correspondientes a los resultados de los experimentos.&lt;/p&gt;  &lt;p&gt;Desarrolle un programa que lea y genere un tercer archivo de registros llamado &lt;b&gt;resultado.dat&lt;/b&gt;, en el cual se almacene el nombre del experimento y el promedio de las muestras como un número real.    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="576"&gt;           &lt;p&gt;&lt;b&gt;Resultado&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="576"&gt;           &lt;p&gt;program Fisica;&lt;/p&gt;            &lt;p&gt;Type&lt;/p&gt;            &lt;p&gt;registro1=RECORD&lt;/p&gt;            &lt;p&gt;nombre :string[10];&lt;/p&gt;            &lt;p&gt;numero:Integer;&lt;/p&gt;            &lt;p&gt;end;&lt;/p&gt;            &lt;p&gt;registro2=RECORD&lt;/p&gt;            &lt;p&gt;nombre2:string[10];&lt;/p&gt;            &lt;p&gt;resultado:Real;&lt;/p&gt;            &lt;p&gt;end;&lt;/p&gt;            &lt;p&gt;Arch1=FILE OF registro1;&lt;/p&gt;            &lt;p&gt;Arch2=FILE OF integer;&lt;/p&gt;            &lt;p&gt;Arch3=FILE OF registro2;&lt;/p&gt;            &lt;p&gt;Var&lt;/p&gt;            &lt;p&gt;a:Arch1;&lt;/p&gt;            &lt;p&gt;b:Arch2;&lt;/p&gt;            &lt;p&gt;c:Arch3;&lt;/p&gt;            &lt;p&gt;x,i,suma:Integer;&lt;/p&gt;            &lt;p&gt;temp:registro1;&lt;/p&gt;            &lt;p&gt;temp2:registro2;&lt;/p&gt;            &lt;p&gt;begin&lt;/p&gt;            &lt;p&gt;ASSIGN(a,'nombre.dat');&lt;/p&gt;            &lt;p&gt;ASSIGN(b,'muestra.dat');&lt;/p&gt;            &lt;p&gt;ASSIGN(c,'resultado.dat');&lt;/p&gt;            &lt;p&gt;RESET(a);&lt;/p&gt;            &lt;p&gt;RESET(b);&lt;/p&gt;            &lt;p&gt;REWRITE(c);&lt;/p&gt;            &lt;p&gt;while not EOF a do&lt;/p&gt;            &lt;p&gt;begin&lt;/p&gt;            &lt;p&gt;READ(a,temp);&lt;/p&gt;            &lt;p&gt;temp2.nombre:=temp1.nombre2;&lt;/p&gt;            &lt;p&gt;suma:=0;&lt;/p&gt;            &lt;p&gt;for i=1 to temp.numero do&lt;/p&gt;            &lt;p&gt;begin&lt;/p&gt;            &lt;p&gt;READ(b,x);&lt;/p&gt;            &lt;p&gt;suma:=suma+x;&lt;/p&gt;            &lt;p&gt;end;&lt;/p&gt;            &lt;p&gt;temp2.resultado:=suma/temp.numero;&lt;/p&gt;            &lt;p&gt;WRITE(c,temp2);&lt;/p&gt;            &lt;p&gt;end;&lt;/p&gt;            &lt;p&gt;CLOSE(a);&lt;/p&gt;            &lt;p&gt;CLOSE(b);&lt;/p&gt;            &lt;p&gt;CLOSE(c);&lt;/p&gt;            &lt;p&gt;end.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;nombre.dat&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;Exp_1 3             &lt;br /&gt;Exp_2 2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;muestra.dat&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;4 2 6 4 1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;nombre.dat&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="140"&gt;           &lt;p&gt;Exp_1 4.0             &lt;br /&gt;Exp_2 2.5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-401977768398147412?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/401977768398147412/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=401977768398147412' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/401977768398147412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/401977768398147412'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/ayudanta-6.html' title='Ayudantía 6'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-494030675820692688</id><published>2008-10-10T19:06:00.001-07:00</published><updated>2008-10-10T19:09:32.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia Pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Arreglos Unidimensionales</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Es una estructura de datos en el que se almacena una colección de datos del mismo tipo.&lt;/p&gt;  &lt;p&gt;Se declaran en la sección TYPE:&lt;/p&gt;  &lt;p&gt;Type &lt;/p&gt;  &lt;p&gt;Nombre_arreglo = Array[1..N] of tipo_de_dato;&lt;/p&gt;  &lt;p&gt;Ejem:&lt;/p&gt;  &lt;p&gt;Type &lt;/p&gt;  &lt;p&gt;Vector:= Array[1..7] of Integer;&lt;/p&gt;  &lt;p&gt;Var &lt;/p&gt;  &lt;p&gt;A:Vector;&lt;/p&gt;  &lt;p&gt;Sacar Promedio de un arreglo:&lt;/p&gt;  &lt;p&gt;For i=1 to 7 Do&lt;/p&gt;  &lt;p&gt;Suma := suma + A[i];&lt;/p&gt;  &lt;p&gt;Suma := suma/7;&lt;/p&gt;  &lt;p&gt;Para escribir un arreglo :&lt;/p&gt;  &lt;p&gt;Writeln(A[5]);&lt;/p&gt;  &lt;p&gt;Read(A[3]); o A[3]:= x &lt;/p&gt;  &lt;p&gt;Read(x);&lt;/p&gt;  &lt;p&gt;Para leer completamente &lt;/p&gt;  &lt;p&gt;For i:=1 to 7 Do&lt;/p&gt;  &lt;p&gt;Read(A[i]);&lt;/p&gt;  &lt;p&gt;Ejemplo    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="576"&gt;           &lt;p&gt;Program promedio;&lt;/p&gt;            &lt;p&gt;Const&lt;/p&gt;            &lt;p&gt;N=57;&lt;/p&gt;            &lt;p&gt;Type&lt;/p&gt;            &lt;p&gt;Vector = Array[1..N] of Integer;&lt;/p&gt;            &lt;p&gt;Var&lt;/p&gt;            &lt;p&gt;A:Vector;&lt;/p&gt;            &lt;p&gt;Suma,i:Integer;&lt;/p&gt;            &lt;p&gt;Prom : Real;&lt;/p&gt;            &lt;p&gt;Begin&lt;/p&gt;            &lt;p&gt;For i :=1 to N do &lt;/p&gt;            &lt;p&gt;Begin &lt;/p&gt;            &lt;p&gt;Writeln(‘ingrese dato ‘,i);&lt;/p&gt;            &lt;p&gt;Read(A[i]);&lt;/p&gt;            &lt;p&gt;End;&lt;/p&gt;            &lt;p&gt;Suma:=0;&lt;/p&gt;            &lt;p&gt;For i :=1 to N do &lt;/p&gt;            &lt;p&gt;Suma:= suma + A[i]&lt;/p&gt;            &lt;p&gt;Prom:= suma/N;&lt;/p&gt;            &lt;p&gt;Writeln(‘el promedio es ‘,prom);&lt;/p&gt;            &lt;p&gt;END.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-494030675820692688?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/494030675820692688/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=494030675820692688' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/494030675820692688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/494030675820692688'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/arreglos-unidimensionales.html' title='Arreglos Unidimensionales'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-4583663565798329172</id><published>2008-10-10T19:03:00.001-07:00</published><updated>2008-10-10T19:09:32.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia'/><category scheme='http://www.blogger.com/atom/ns#' term='UTFSM'/><category scheme='http://www.blogger.com/atom/ns#' term='Ayudantia Pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Ayudantía I de Pascal</title><content type='html'>&lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h1&gt;Ayudantía desarrollada en la UTFSM. Este documento es un draft o sea falta modificar algunas cosas yo solo ocupaba esto como apoyo. &lt;/h1&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="163"&gt;         &lt;p&gt;Ayudantía I &lt;/p&gt;          &lt;p&gt;Francisco Riveros E.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="288"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="125"&gt;         &lt;p&gt;21/03/2006&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;I .&lt;/b&gt;Introducción: Programas antiguos -&amp;gt;Programación de ahora.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;II. &lt;/b&gt;INTRODUCCION PSEUDOCODIGO&lt;b&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAJeqRZahI/AAAAAAAAA0I/d0dtF5LpyFw/s1600-h/clip_image002%5B3%5D.gif"&gt;&lt;img title="clip_image002" style="display: inline" height="129" alt="clip_image002" src="http://lh6.ggpht.com/foward/SPAJfUsUbXI/AAAAAAAAA0M/TT69wUXt9W4/clip_image002_thumb.gif?imgmax=800" width="200" border="0" /&gt;&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;    &lt;table cellspacing="1" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;PALABRA&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;UTILIZACIÓN&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;ABRE&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Abre un archivo&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;CASO&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Selección entre múltiples alternativas&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;CIERRA&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Cierra un archivo&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;ENTONCES &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Complemento de la selección &lt;/strong&gt;&lt;b&gt;               &lt;br /&gt;&lt;/b&gt;&lt;strong&gt;SI - ENTONCES&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;ESCRIBE&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Visualiza un dato en pantalla&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;FIN&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Finaliza un bloque de instrucciones&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;HASTA&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Cierra la iteración HAZ - HASTA&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;HAZ&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Inicia la iteración HAZ - HASTA&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;INICIO&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Inicia un bloque de instrucciones&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;LEER&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Leer un dato del teclado&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;MIENTRAS &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Inicia la iteración mientras &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;strong&gt;NO&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;strong&gt;Niega la condición que le sigue&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;II.a &lt;/b&gt;&lt;strong&gt;SELECCIÓN &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;También conocida como la estructura SI-CIERTO-FALSO, plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición o predicado; equivale a la instrucción IF de todos los lenguajes de programación y se representa gráficamente de la siguiente manera:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SPAJgahOHCI/AAAAAAAAA0Q/883k_D0y5bI/s1600-h/clip_image003%5B4%5D.gif"&gt;&lt;img title="clip_image003" style="display: inline" height="213" alt="clip_image003" src="http://lh5.ggpht.com/foward/SPAJhPd4hQI/AAAAAAAAA0U/RBN7NFBPegk/clip_image003_thumb.gif?imgmax=800" width="157" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;III.&lt;/b&gt; ESTRUCTURA GENERAL DE UN PROGRAMA PASCAL&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Program&lt;/strong&gt;&lt;strong&gt; &lt;i&gt;identificador&lt;/i&gt; ; {cabecera opcional en Turbo Pascal}&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Uses&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;i&gt;identificadores&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Label&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;i&gt;lista de etiquetas &lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;; {sección de etiquetas}&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Const &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;definiciones de constantes&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;declaración de tipos de datos definidos por el usuario&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;declaración de variables&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Procedure &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;definiciones de procedimientos&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;definiciones de funciones&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;{cuerpo del programa}&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;sentencias&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;end.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="576"&gt;           &lt;pre&gt;&lt;strong&gt;Program&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;MiPrimerPrograma&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;strong&gt;{cabecera}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;Uses &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;Crt&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;strong&gt;{declaraciones}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;Const&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;iva&lt;/strong&gt;&lt;strong&gt; =&lt;/strong&gt;&lt;strong&gt;0.10&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;cadena&lt;/strong&gt;&lt;strong&gt; =&lt;/strong&gt;&lt;strong&gt;string&lt;/strong&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;strong&gt;];&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt; meses&lt;/strong&gt;&lt;strong&gt;&amp;#160; =&lt;/strong&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;..&lt;/strong&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;sueldo&lt;/strong&gt;&lt;strong&gt; :&lt;/strong&gt;&lt;strong&gt;real&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;numero&lt;/strong&gt;&lt;strong&gt; :&lt;/strong&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;nombre &lt;/strong&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;strong&gt;cadena&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;Nmes&lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; :&lt;/strong&gt;&lt;strong&gt;meses&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;ClrScr&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;strong&gt;{Limpia la pantalla}&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;Write&lt;/strong&gt;&lt;strong&gt; (&lt;/strong&gt;&lt;strong&gt;'Escribe tu nombre : '&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;strong&gt;Visualiza información en pantalla}&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;nombre&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;strong&gt;{Leer un dato del teclado}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'Bienvenido '&lt;/strong&gt;&lt;strong&gt;, &lt;/strong&gt;&lt;strong&gt;nombre&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; {Visualiza información en pantalla}&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;Readkey&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;strong&gt;{Espera la pulsación de una tecla}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;ClrScr&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/pre&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;ADVERTENCIA:&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Todo objeto referenciado en un programa debe haber sido previamente definido.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;IV. &lt;/strong&gt;&lt;strong&gt;IDENTIFICADORES&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;En la mayoría de los programas de computador, es necesario manejar datos de entrada o de salida, los cuales necesitan almacenarse en la memoria principal del computador en el tiempo de ejecución. Para poder manipular dichos datos, necesitamos tener acceso a las localidades de memoria donde se encuentran almacenados; esto se logra por medio de los nombres de los datos o IDENTIFICADORES.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Las reglas para formar los identificadores en Pascal son las siguientes: &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Pueden estar compuestos de caracteres alfabéticos, numéricos y el carácter de subrayado ( _ ). &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Deben comenzar con un carácter alfabético o el carácter de subrayado. &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Puede ser de cualquier longitud (sólo los 63 primeros caracteres son significativos). &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;No se hace distinción entre mayúsculas y minúsculas. &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;No se permite el uso de los IDENTIFICADORES RESERVADOS en los nombres de variables, constantes, programas o sub-programas.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;i&gt;Identificadores válidos&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Nombre&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Cadena&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Edad_Maxima&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;X_Y_Z&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Etiqueta2&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;i&gt;Identificadores no válidos&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Num&amp;amp;Dias&lt;/strong&gt;&lt;strong&gt;&lt;i&gt; &lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;: carácter &amp;amp; no válido&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;X nombre&lt;/strong&gt;&lt;strong&gt; : Contiene un blanco&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; : es una palabra reservada&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;eje@s&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;: carácter @ no válido &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;V. &lt;/b&gt;DEFINICION DE CONSTANTES&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;El identificador reservado Const debe encabezar la instrucción, seguido por una lista de asignaciones de constantes. Cada asignación de constante debe consistir de un identificador seguido por un signo de igual y un valor constante, como se muestra a continuación: &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Const&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;valor_maximo&lt;/strong&gt;&lt;strong&gt; =&lt;/strong&gt;&lt;strong&gt;255&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;precision &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; =&lt;/strong&gt;&lt;strong&gt;0.0001&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;palabra_clave&lt;/strong&gt;&lt;strong&gt;=&lt;/strong&gt;&lt;strong&gt;'Tutankamen'&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;encabezado &lt;/strong&gt;&lt;strong&gt;&amp;#160; =&lt;/strong&gt;&lt;strong&gt;' NOMBRE DIRECCION TELEFONO '&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;CONSTANTES PREDEFINIDAS : &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Nombre&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="122"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Valor&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;pi &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;real&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="122"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;3.1415926536&lt;/strong&gt;&lt;strong&gt; (Sólo en Turbo Pascal)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;boolean&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="122"&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;boolean&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="122"&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;MaxInt&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="71"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td width="122"&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;32767&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;VI. &lt;/strong&gt;&lt;strong&gt;DEFINICION DE TIPOS&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;i&gt;La asignación de tipos a los datos tiene dos objetivos principales:&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Detectar errores de operaciones en programas.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Determinar cómo ejecutar las operaciones.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Los tipos definidos por el programador pueden utilizarse para definir nuevos tipos, por ejemplo : &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;entero&lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = &lt;/strong&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160; i,n :entero;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;&lt;strong&gt;VI.a &lt;/strong&gt;&lt;strong&gt;TIPOS ENTEROS&lt;/strong&gt;&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tipos enteros predefinidos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Rango&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Formato&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;byte&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;0 .. 255&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;8 bits sin signo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;-32768 .. 32767&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;16 bits con signo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;longint&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;-247483648 .. 2147483647&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;32 bits con signo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;shortint&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;-128 .. 127&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;8 bits con signo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;word&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;0 .. 65535&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;16 bits sin signo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;VI.b &lt;strong&gt;TIPOS REALES&lt;/strong&gt;&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;REAL &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;En el contexto de Pascal, un número real es aquel que está compuesto de una parte entera y una parte decimal, separadas por un punto. El rango de estos números está dado entre los valores 1E-38 y 1E+38 .&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;BOOLEAN &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Un valor de tipo boolean puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false, los cuales están definidos de tal manera que false &amp;lt; true . &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;CHAR &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Un valor de tipo char es cualquier carácter que se encuentre dentro del conjunto ASCII ampliado, el cual está formado por los 128 caracteres del ASCII más los 128 caracteres especiales que presenta, en este caso, IBM.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;Los valores ordinales del código ASCII ampliado se encuentran en el rango de 0 a 255. Dichos valores pueden representarse escribiendo el carácter correspondiente encerrado entre apóstrofes. &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Así podemos escribir : &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 'A'&lt;/strong&gt;&lt;strong&gt; &amp;lt; 'a' &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Que significa : &amp;quot; El valor ordinal de A es menor que el de a &amp;quot; o &amp;quot; A está antes que a &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;STRING&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Un tipo&lt;/strong&gt;&lt;strong&gt; string&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;(cadena)&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;es una secuencia de caracteres de cero o más caracteres correspondientes al código ASCII, escrito en una línea sobre el programa y encerrado entre apóstrofos. &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;El tratamiento de cadenas es una característica muy potente de Turbo Pascal que contiene ISO Pascal estándar.&lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ejemplos:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;VAR&lt;br /&gt;  &lt;br /&gt;Nombre : String[30]; &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;{Permite un máximo de 30 caracteres en la variable, si no es 255}&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Nombre := 'Ernesto Chávez';&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;WriteLn (Nombre[5]); &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;{Visualiza el 5to caracter de la cadena}&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;END.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 'Turbo Pascal'&lt;/strong&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;strong&gt;'Tecnológico'&lt;/strong&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;strong&gt; #13#10&amp;#160; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td valign="top" width="576"&gt;&lt;br /&gt;        &lt;p&gt;&lt;strong&gt;&lt;i&gt;Nota: &lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;        &lt;ul&gt;&lt;br /&gt;          &lt;li&gt;&lt;strong&gt;&lt;i&gt;Una cadena sin nada entre los apóstrofos se llama cadena nula o cadena vacía.&lt;/i&gt;&lt;/strong&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;          &lt;li&gt;&lt;strong&gt;&lt;i&gt;La longitud de una cadena es el número de carácteres encerrados entre los apóstrofos.&lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;&lt;i&gt;&lt;/i&gt;&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;        &lt;/ul&gt;&lt;br /&gt;      &lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;  &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;PROGRAM Test;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;VAR&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160; x : REAL;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ variable name is x, type is real&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160; i : INTEGER:&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ variable name is i, type is integer&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160; c : CHAR;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ variable name is c, type is character&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160; s : STRING;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ variable name is s, type is string&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;BEGIN&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; x := -34.55;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid real number assigned to variable x }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; x := -3.9E-3;&amp;#160;&amp;#160; &lt;i&gt;{ valid real number assigned to variable x }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; WRITELN(x);&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ x contains the value -3.9E-3 }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; i := 10;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid integer number assigned to variable i }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; i := i * i;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid (!) - i will be 100 now }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; i := 9933;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid integer number assigned to variable i }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; i := -99999;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;invalid&lt;/b&gt; integer - too small }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; i := 999.44;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;invalid&lt;/b&gt; assignment - types do not match }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; c := '1';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid character assigned to variable c }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; c := 1;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;invalid&lt;/b&gt; assignment - types do not match }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; c := 'Bert';&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;invalid&lt;/b&gt; assignment - types do not match }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; c := 'd';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ valid character assigned to variable c }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; WRITELN(c);&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ c contains the value 'd' }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; d := 'c';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;unknown&lt;/b&gt; variable - the variable d is not declared }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; WRITELN(s);&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;{ &lt;b&gt;invalid&lt;/b&gt; reference - s has undefined value }&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;END.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;b&gt;VII. &lt;/b&gt;OPERADORES&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;En Pascal, se manejan tres grupos de operadores:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.itlp.edu.mx/publica/tutoriales/pascal/u2_2_6_1.html"&gt;&lt;strong&gt;ARITMÉTICOS &lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.itlp.edu.mx/publica/tutoriales/pascal/u2_2_6_2.html"&gt;&lt;strong&gt;RELACIONALES &lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.itlp.edu.mx/publica/tutoriales/pascal/u2_2_6_3.html"&gt;&lt;strong&gt;LÓGICOS &lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;1.- OPERADORES ARITMETICOS BASICOS.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Operador&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Operación&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Operandos&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Suma&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;real , integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a + b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;suma de a y b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;- &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Resta&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;real , integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a - b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Diferencia de a y b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;*&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Multiplicación&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;real , integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a * b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Producto de a por b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;/&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;División&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;real , integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a / b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Cociente de a por b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;div&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;División entera&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a div b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Cociente entero de a por b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;mod&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Módulo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;a mod b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Resto de a por b&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Conviene observar lo siguiente: &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Cuando los dos operandos sean del tipo integer, el resultado será de tipo integer. &lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Cuando cualquiera de los dos operandos, o ambos, sean del tipo real, el resultado será de tipo real. &lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Cuando, en la operación div, OPERANDO-1 y OPERANDO-2 tienen el mismo signo, se obtiene un resultado con signo positivo; si los operandos difieren en signo, el resultado es negativo y el truncamiento tiene lugar hacia el cero. &lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ejemplos: &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; div 3&amp;#160;&amp;#160;&amp;#160;&amp;#160; = 2&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (-7) div (-3)&amp;#160; = 2 &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (-7) div 3&amp;#160;&amp;#160;&amp;#160;&amp;#160; = -2&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; div (-3)&amp;#160; = -2 &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15.0&lt;/strong&gt;&lt;strong&gt; div 3.0&amp;#160;&amp;#160; = no válido&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15 &lt;/strong&gt;&lt;strong&gt;&amp;#160; div (4/2) = no válido&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;La operación div almacena sólo la parte entera del resultado, perdiéndose la parte fraccionaria (truncamiento).&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol start="start"&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;La operación MODULO está definida solamente para OPERANDO-2 positivo. El resultado se dará como el entero no negativo más pequeño que puede ser restado de OPERANDO-1 para obtener un múltiplo de OPERANDO-2 ; por ejemplo : &lt;/strong&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mod 3&amp;#160;&amp;#160;&amp;#160; = 0&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;7&amp;#160; &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; mod 3&amp;#160;&amp;#160;&amp;#160; = 1&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;(-6)&amp;#160; mod 3&amp;#160;&amp;#160;&amp;#160; = 0&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;(-7)&amp;#160; mod 3&amp;#160;&amp;#160;&amp;#160; = -1&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;(-5)&amp;#160; mod 3&amp;#160;&amp;#160;&amp;#160; = -2&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;(-15) mod (-7) = -1&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;i&gt;En la operaciones aritméticas, debe asegurarse que el resultado de sumar, restar o multiplicar dos valores, no produzca un resultado fuera de los rangos definidos por la implementación para los diferentes tipos. &lt;/i&gt;&lt;/strong&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.- OPERADORES RACIONALES&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Símbolo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Significado&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;=&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;IGUAL que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;NO IGUAL que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;MENOR que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;MAYOR que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;&amp;lt;=&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;MENOR o IGUAL que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;&amp;gt;=&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;MAYOR o IGUAL que&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ejemplos&lt;br /&gt;  &lt;table cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Relación&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;20 = 11&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;15 &amp;lt; 20&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;PI &amp;gt; 3.14&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;'A' &amp;lt; 20&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;'A' = 65&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;3.- OPERADORES LOGICOS&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;NOT&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sintaxis : not operando&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Descripción : Invierte el valor de verdad de operando. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;AND &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sintaxis : operando.1 and operando.2 &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Descripción : Produce un resultado con valor de verdad true cuando ambos operandos tienen valor de verdad true; en cualquier otro caso el resultado tendrá un valor de verdad false. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;OR &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sintaxis : operando.1 or operando.2 &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Descripción : Produce un resultado con valor de verdad false cuando ambos operadores tienen valores de verdad false; en cualquier otro caso el resultado tendrá un valor de verdad true. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Expresiones&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Precedencia de operadores&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;- (Menos unario)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;* / div mod and shl shr&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;+ - or xor&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;= &amp;lt;&amp;gt; &amp;gt; &amp;lt; &amp;gt;= &amp;lt;=&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Las reglas de evaluación para las expresiones son : &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Si todos los operadores en una expresión tienen la misma precedencia, la evaluación de las operaciones se realiza de izquierda a derecha. &lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Cuando los operadores sean de diferentes precedencias, se evalúan primero las operaciones de más alta precedencia (en una base de izquierda a derecha ), luego se evalúan las de precedencia siguiente, y así sucesivamente. &lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;Las reglas 1) y 2) pueden ser anuladas por la inclusión de paréntesis en una expresión.&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ejemplos :&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;·&amp;#160; &lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt; + &lt;u&gt;2*5&lt;/u&gt;&amp;#160;&amp;#160; {*,+}&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160; 4&lt;/strong&gt;&lt;strong&gt; + 10 =14&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;·&amp;#160; &lt;strong&gt;&lt;u&gt;20&lt;/u&gt;&lt;/strong&gt;&lt;strong&gt;&lt;u&gt;*4&lt;/u&gt;&lt;/strong&gt;&lt;strong&gt; div&lt;/strong&gt;&lt;strong&gt; 5&amp;#160; &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; {Igual prioridad de izquierda a derecha : *,div}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;80&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;div&lt;/strong&gt;&lt;strong&gt; 5 = 16&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt; - 5 * (20+(6/2))&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt; - 5 * (20+(6/2)) = 3 - 5 * (20 + 3)&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;{paréntesis más interno}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;= 3 - 5 * 23 {segundo paréntesis}&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;= 3 - 115 {Multiplicación}&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;= -112 {resta}&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;b&gt;VIII.&lt;/b&gt;INSTRUCCIONES DE ASIGNACION&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;numero &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; := &lt;/strong&gt;&lt;strong&gt;100&lt;/strong&gt;&lt;strong&gt; ;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;importe &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; :=&lt;/strong&gt;&lt;strong&gt; precio&lt;/strong&gt;&lt;strong&gt; * &lt;/strong&gt;&lt;strong&gt;cantidad&lt;/strong&gt;&lt;strong&gt; ; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;hipotenusa&lt;/strong&gt;&lt;strong&gt; :=&lt;/strong&gt;&lt;strong&gt; sqrt&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;sqr&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;cateto_op&lt;/strong&gt;&lt;strong&gt;)+&lt;/strong&gt;&lt;strong&gt;sqr&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;cateto_ad&lt;/strong&gt;&lt;strong&gt; ));&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;begin &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;strong&gt;suma&lt;/strong&gt;&lt;strong&gt;&amp;#160; := &lt;/strong&gt;&lt;strong&gt;1000.0&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;incr&amp;#160; &lt;/strong&gt;&lt;strong&gt;:= &lt;/strong&gt;&lt;strong&gt;20.0&lt;/strong&gt;&lt;strong&gt;; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;total&lt;/strong&gt;&lt;strong&gt; :=&lt;/strong&gt;&lt;strong&gt; suma&lt;/strong&gt;&lt;strong&gt; + &lt;/strong&gt;&lt;strong&gt;incr&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;{Obsérvese la ausencia de punto y coma&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160; al final de la instrucción}&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;READLN y READ &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;nombre&lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; :&lt;/strong&gt;&lt;strong&gt;string&lt;/strong&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;strong&gt;] ;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;edad&amp;#160; &lt;/strong&gt;&lt;strong&gt;&amp;#160;&amp;#160; :&lt;/strong&gt;&lt;strong&gt;integer&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;estatura &lt;/strong&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;strong&gt;real&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; .&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; .&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; .&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;nombre&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;estatura&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;WRITELN Y WRITE&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Write&amp;#160; &lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'! HOLA '&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'AMIGOS !'&lt;/strong&gt;&lt;strong&gt;); &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ejemplo&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Valor&lt;/strong&gt;&lt;strong&gt;:= 25.0776;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Sentencias&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Resultados&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Comentario&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt; (Valor);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;2.5077600000E+01&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(Valor:2);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;2.5E+01&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(Valor:2:1);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;25.1 &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Notese el redondeo&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(Valor:2:4);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;25.0776&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(Valor:2:8);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;25.07760000&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;('Tec':1);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Tec&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;('Tec':3);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Tec&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;('Tec':5);&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;_ _ Tec &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Espacios vacios _&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;IX. IF-THEN-ELSE&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Dado que una condición produce un valor verdadero o falso, se necesita una sentencia de control que ejecute determinada sentencia si la condición es verdadera , y otra si es falsa. En Pascal esta alternativa se realiza con la sentencia IF-THEN-ELSE. A continuación se describe el diagrama de flujo y el formato de la sentencia.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/foward/SPAJhx51zxI/AAAAAAAAA0Y/_PEw73C3snE/s1600-h/clip_image003%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image003[1]" style="display: inline" height="213" alt="clip_image003[1]" src="http://lh5.ggpht.com/foward/SPAJi4Ep34I/AAAAAAAAA0c/DgjSQLrXwpE/clip_image003%5B1%5D_thumb.gif?imgmax=800" width="157" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Formatos de la sentencia&lt;/strong&gt;&lt;strong&gt; IF&lt;/strong&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;table cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;if&lt;/strong&gt;&lt;strong&gt; &amp;lt;condición&amp;gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; then&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;lt;instrucción_1&amp;gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; else&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;lt;instrucción_2&amp;gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;        &lt;td&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;if&lt;/strong&gt;&lt;strong&gt; &amp;lt;condición&amp;gt; then&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;lt;instrucción_1&amp;gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;#160; else&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;          &lt;pre&gt;&lt;strong&gt;&amp;lt;instrucción_2&amp;gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;        &lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;En este caso, primero se evalúa condición y si el resultado arroja un valor de verdad(verdadero), se ejecuta instrucción_1 ; en caso contrario se ejecuta instrucción_2.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;La condición es una &lt;i&gt;expresión Booleana&lt;/i&gt; que puede ser verdadera o falsa (&lt;i&gt;true o false&lt;/i&gt;). Una &lt;i&gt;expresión Booleana &lt;/i&gt;se forma comparando valores de las expresiones utilizando &lt;/strong&gt;&lt;a href="http://www.itlp.edu.mx/publica/tutoriales/pascal/u2_2_6_2.html"&gt;&lt;strong&gt;operadores de relación&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; (relacionales) o &lt;i&gt;comparación&lt;/i&gt; y los &lt;/strong&gt;&lt;a href="http://www.itlp.edu.mx/publica/tutoriales/pascal/u2_2_6_3.html"&gt;&lt;strong&gt;&lt;i&gt;operadores lógicos&lt;/i&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;i&gt; &lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;vistos anteriormente.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ejemplos :&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;&lt;strong&gt;Sin ELSE&lt;/strong&gt;&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Program&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Edades&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Uses&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Crt&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt; : &lt;/strong&gt;&lt;strong&gt;integer &lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'Escribe tu edad : '&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt; ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt; if&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt; &amp;gt;=&lt;/strong&gt;&lt;strong&gt; 18&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;then&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'!Eres Mayor de edad !'&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'Esta instrucción siempre se ejecuta'&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;ReadKey&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Con ELSE:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Program&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Edades&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Uses&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Crt&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;Var&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt; : &lt;/strong&gt;&lt;strong&gt;integer &lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'Escribe tu edad : '&lt;/strong&gt;&lt;strong&gt;) ;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;ReadLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt;) ;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;if&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;edad&lt;/strong&gt;&lt;strong&gt; &amp;gt;= &lt;/strong&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;then&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'!Eres Mayor de edad !'&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'!Ya puedes Votar!'&lt;/strong&gt;&lt;strong&gt;) &lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;else&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;begin&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'!Eres Menor de edad !'&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'!Aún no puedes votar!'&lt;/strong&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;strong&gt;WriteLn&lt;/strong&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;'Esta instrucción siempre se ejecuta'&lt;/strong&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt; ReadKey&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;end&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-4583663565798329172?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/4583663565798329172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=4583663565798329172' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4583663565798329172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/4583663565798329172'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/ayudanta-i-de-pascal.html' title='Ayudantía I de Pascal'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh6.ggpht.com/foward/SPAJfUsUbXI/AAAAAAAAA0M/TT69wUXt9W4/s72-c/clip_image002_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-2628850369587602032</id><published>2008-10-08T21:17:00.001-07:00</published><updated>2008-10-08T21:19:54.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><title type='text'>Video Explicativo y Didáctico De la Crisis Económica de Hoy en Día.</title><content type='html'>&lt;h2&gt;&lt;span style="font-size:100%;"&gt;Aquí navegando por la web, encontré un video súper bueno que explica de manera didáctica y fácil como y que sucede con la crisis económica que esta tan en boga hoy en día, espero que pueda servir de algo. (Video lo saque de &lt;a title="http://www.dreig.eu/caparazon/" href="http://www.dreig.eu/caparazon/"&gt;http://www.dreig.eu/caparazon/&lt;/a&gt; – Blog Muy bueno):&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://dotsub.com/media/f7077a3a-c54d-458c-8340-8541db728c91/e/m" frameborder="0" height="347" width="420"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-2628850369587602032?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/2628850369587602032/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=2628850369587602032' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/2628850369587602032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/2628850369587602032'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/video-explicativo-y-didctico-de-la.html' title='Video Explicativo y Didáctico De la Crisis Económica de Hoy en Día.'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-6805494363480120850</id><published>2008-10-04T09:24:00.001-07:00</published><updated>2008-10-04T09:25:31.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fotos'/><title type='text'>Fotos</title><content type='html'>&lt;h1&gt;Recopilación de Fotos de ayer y hoy aquí:&lt;/h1&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://panchoriveros.blogspot.com/2008/09/fotos.html"&gt;         &lt;h2&gt;Fotos de mi Intercambio en Austria (PARTE I)&lt;/h2&gt;       &lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://panchoriveros.blogspot.com/2008/09/fotos-parte-2.html"&gt;         &lt;h2&gt;Fotos de mi Intercambio en Austria (PARTE II)&lt;/h2&gt;       &lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;       &lt;h3&gt;agregare otras fotos…&lt;/h3&gt;     &lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-6805494363480120850?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/6805494363480120850/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=6805494363480120850' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/6805494363480120850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/6805494363480120850'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/fotos.html' title='Fotos'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-9193259477477799441</id><published>2008-10-02T09:10:00.001-07:00</published><updated>2008-10-10T19:09:32.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>TRIZ para Software ( TRIZ for Software)</title><content type='html'>&lt;h1&gt;&lt;em&gt;Analogía de Patrones de Software&lt;/em&gt;&lt;/h1&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc201998021"&gt;Introducción&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Triz ha llegado a ser muy poderoso para resolver problemas y para crear soluciones innovadoras. Triz es principalmente usado para problemas mecánicos y en la forma actual, no tanto para problemas eléctricos de software. Pero para aplicar TRIZ al software tenemos que aplicar los principios de inventiva. Esos principios de inventiva son usados para resolver un problema algorítmico definiendo una situación ideal, analizando las contradicciones y usando los principios para desarrollar un mejor algoritmo. (Un algoritmo inteligente es como algo equivalente a una construcción inteligente en la Ing. Mecánica).&lt;/p&gt;  &lt;p&gt;La traducción desde los Principios de Inventiva al Software es muy difícil de hacer para muchos. Incluso para usuarios expertos en TRIZ.&lt;/p&gt;  &lt;p&gt;La traducción hecha por &lt;i&gt;Kevin Rea [Kev-01] &lt;/i&gt;ayuda mucho pero solo si uno estas trabajando en un área de aplicación que es el caso de programación concurrente.    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="498"&gt;           &lt;p&gt;&lt;b&gt;Un camino mejor es usar la metodología de Genrich Altschuller analizando las patentes en Ingeniería de Software y desarrollando completamente un nuevo conjunto de Principios de inventiva y Matriz de Contradicciones.&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt; Esto nos abre un camino para poder seguir en nuestra investigación aplicando conceptos de Triz y viendo diversas analogías a este. Las próximas secciones veremos puntos importantes que en el Software resaltan muchos problemas con lo que Triz puede ser una ayuda para romper estas barreras. Asimismo en la otra sección veremos el primer acercamiento a Triz aplicado al software con la respectiva matriz y principios generados por analogías por el autor Darell Mann.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998022"&gt;Algoritmos Rápidos&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los Ejemplos que son descritos en la base de datos TRIZ conciernen el desarrollo de algoritmos rápidos y confiables usando recursos limitados (tales como tamaño de memoria y velocidad del procesador). Tenemos que existen un sin número de patentes comerciales donde algunos son exitosos algoritmos o standards que pueden ser comercialmente interesantes, por ejemplo,   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="299"&gt;           &lt;p&gt;&lt;b&gt;Algoritmos&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="299"&gt;           &lt;p&gt;&lt;b&gt;Función&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="299"&gt;           &lt;p&gt;&lt;b&gt;MP3&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="299"&gt;           &lt;p&gt;Procesamiento de Sonido&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="299"&gt;           &lt;p&gt;&lt;b&gt;MPEG&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="299"&gt;           &lt;p&gt;Procesamiento de Video&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="299"&gt;           &lt;p&gt;&lt;b&gt;Algoritmos de Búsqueda Rápida&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="299"&gt;           &lt;p&gt;Google&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Tabla 1 - Algoritmos y funciones&lt;/p&gt;  &lt;p&gt;Así podemos formarnos una idea, de que tener un conjunto de patentes de software podría ayudarnos a crear una matriz y principios y hacer lo que hizo Altshuller con las patentes. &lt;/p&gt;  &lt;p&gt;Un autor llamado Graham Rawlinson concluye que: &amp;quot;TRIZ es muy útil, pero a menudo no acierta con las soluciones derivadas&amp;quot;, esto quiere decir que a pesar de que Triz nos ayude a resolver nuestros problemas, no siempre vamos a tener la solución que queríamos o la solución esperada, es decir, no es la “panacea”.&lt;/p&gt;  &lt;p&gt;El desarrollo de algoritmos rápidos ha sido sujeto de investigación desde inicios de los sesenta. (Cuando los computadores eran caros y los recursos eran limitados). Aunque muchos de los métodos desarrollados en ese entonces son todavía validos.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998023"&gt;Ley de Moore&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La ley de Moore expresa que aproximadamente cada dos años se duplica el número de transistores en un circuito integrado. Se trata de una ley empírica, formulada por el co-fundador de Intel, Gordon E. Moore el 19 de abril de 1965, cuyo cumplimiento se ha podido constatar hasta hoy.&lt;/p&gt;  &lt;p&gt;Entonces con esa ley se decía que no habría un hardware que pudiera dar solución a los problemas de software que en los cuales se necesitaba de nuevo Hardware para poder realizar las tareas en un modo eficiente, ya que cuando el software probaba que es muy lento, o requiere mucha memoria, simplemente se espera por un nuevo hardware y el problema es resuelto automáticamente.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Crear algoritmos rápidos es importante cuando el Hardware requerido no es todavía disponible dentro un periodo largo de tiempo,&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;En ingeniería mecánica hay un desafío continuo en crear nuevos productos y tratar con crecientes contradicciones. En muchos productos las limitaciones técnicas han sido (casi) alcanzadas. Por ejemplo, por 100 años los automóviles han manejado bajo motores a combustión, 30 años después el avión comercial Concorde es el avión volando a velocidades supersónicas y así sucesivamente. O sea esto llega cada vez a hacer mas y mas difícil para desarrollar nuevos productos e incrementar la funcionalidad llega a ser pequeño. &lt;/p&gt;  &lt;p&gt;Un ejemplo:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="14"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="555"&gt;           &lt;p&gt;Supongamos que un ingeniero mecánico de una empresa automotriz va hacia su jefe y le dice: &amp;quot;Jefe, soy capaz de hacer nuestro motor un 5% más eficiente&amp;quot;. Su Jefe probablemente le responda: &amp;quot;Estoy atónito, tomate todo tu tiempo que tu necesites y no olvides escribir una patente&amp;quot;.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="14"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="555"&gt;           &lt;p&gt;Ahora si un Ingeniero de Software va hacia su jefe y le dice: &amp;quot; Jefe, yo puedo hacer trabajar nuestro software 5% más rápido&amp;quot;, su jefe probablemente responda, &amp;quot; Eso no es de importancia ahora, el próximo mes nosotros obtendremos un nuevo procesador el cual trabaja dos veces más rápido. Vuelve a tu trabajo, que todavía tienes 20 Bugs que resolver antes que termine esta semana, así que no malgastes mas tu tiempo&amp;quot;.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998024"&gt;Tamaño del Software&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Tal como la memoria disponible se incrementa 2 veces en 18 meses, así también las líneas de código. Sin embargo, productos de software están llegando a ser más grandes cada año y más gente necesita desarrollar este software. Es más la moda como sistemas abiertos, subcontratación, re-uso, están disponibles para sobrepasar esto. Todo esto crea situaciones que son más complejas resultando en proyectos fuera de tiempo, software no confiable y clientes insatisfechos.&lt;/p&gt;  &lt;p&gt;El principal desafío hoy en día es manejar esta creciente complejidad. Desde comienzos de los noventas hay un fuerte énfasis sobre los procesos de software. Muchas organizaciones están usando la capacidad madura de los modelos u otros frameworks para mejorar sus procesos de desarrollo de software.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998025"&gt;Desarrollo de Arquitecturas&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Otro camino para tratar con el incremento en la complejidad es crear una arquitectura de software. Una arquitectura de software provee de la estructura técnica para un proyecto. Una buena arquitectura hace que el resto del trabajo sea más fácil, pero una mala arquitectura hacer que el resto del trabajo sea casi imposible.&lt;/p&gt;  &lt;p&gt;En la creación de arquitecturas se tiene que tratar con las demandas conflictivas. La arquitectura desempeña requerimientos funcionales y no funcionales. Ejemplos de requerimientos no funcionales son:&lt;/p&gt;  &lt;p&gt;· Portabilidad&lt;/p&gt;  &lt;p&gt;· Mantención&lt;/p&gt;  &lt;p&gt;· Flexibilidad&lt;/p&gt;  &lt;p&gt;· Extensibilidad &lt;/p&gt;  &lt;p&gt;· Reusabilidad&lt;/p&gt;  &lt;p&gt;Estos requerimientos no-funcionales son también conocidos como &lt;i&gt;Soft Intents. &lt;/i&gt;En algunas áreas de aplicación un grafico de &lt;i&gt;softgoal&lt;/i&gt; interdependencia es usado para visualizar estos conflictos. La mayoría de las soluciones son ajustadas a la &amp;quot;medida&amp;quot; entre estas demandas conflictivas. Difícilmente incluso todas estas demandas son completadas.&lt;/p&gt;  &lt;p&gt;TRIZ podría ser muy útil en resolver estas peticiones conflictivas (Contradicciones) en una manera más satisfactoria. Desde que las arquitecturas son también usadas en otros campos como ing. Mecánica nosotros podemos aprender desde la aplicación de TRIZ en este campo.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998026"&gt;Modas de una evolución tecnológica&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Debido a que rápidamente se incrementan las capacidades del software es difícil decir cómo serán estos en el futuro. Es difícil imaginar que es posible en el futuro y que será exitoso. &lt;/p&gt;  &lt;p&gt;Triz se enfoca en la evolución tecnológica y esto podría ser usado para identificar las posibilidades de futuro. Combinado con modas comerciales, esto ayuda en definir productos exitosos en una temprana edad. &lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc201998027"&gt;Triz para el Software&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La utilización de los ordenadores como instrumentos de ayuda a las diferentes actividades humanas ha cobrado tal importancia que hoy resulta casi inconcebible subsistir en un mundo tan competitivo sin su uso. Se puede decir que su aplicación ha cubierto todas las esferas de la actividad humana, siendo previsible que el uso de ordenadores vaya en aumento cada vez más.&lt;/p&gt;  &lt;p&gt;Estos datos son suficiente argumento para sostener la importancia que tiene la investigación sobre el mejor uso de tales instrumentos mediante la elaboración de aplicaciones para estas.&lt;/p&gt;  &lt;p&gt;Puede TRIZ ser aplicado para el diseño y creación de software? parece ser una cuestión que se plantea por un número cada vez mayor de empresas. Se propone en este documento indagar sobre el terreno y hacer sugerencias en cuanto a lo que un &amp;quot;TRIZ de Software” puede hacer. &lt;/p&gt;  &lt;p&gt;Teniendo en cuenta los distintos autores (Darrel Mann, entre otros) al respecto, parece probable suponer que la sugerencia será, sí, TRIZ puede ser aplicado a software. No obstante a habida cuenta de algunos debates de TRIZ y software, parece que la respuesta positiva no es tan evidente.&lt;/p&gt;  &lt;p&gt;Uno de los autores (Ikovenko&lt;a href="#_ftn1_8657" name="_ftnref1_8657"&gt;[1]&lt;/a&gt;) habla en torno a este tema en el TRIZ Centrum conferencia en 2003 y llegó a la conclusión de que, básicamente, desde el desarrollo de software se encuentra aún en una etapa temprana de su evolución, en otras palabras, que &lt;i&gt;el desarrollo de software&lt;/i&gt; es un arte y no una ciencia en si. Por lo que no era todavía probable que se prestara para al tratamiento de TRIZ, ya que no era considerado una ciencia como tal. &lt;/p&gt;  &lt;p&gt;Mas franco aún fue Karasik&lt;a href="#_ftn2_8657" name="_ftnref2_8657"&gt;[2]&lt;/a&gt;, fue más vehemente en su despido de las posibilidades de aplicar TRIZ para problemas de software, &lt;i&gt;“siendo un equipo un científico y un ingeniero un software”&lt;/i&gt; los 40 principios no serán aplicables a ingeniería de software bajo ninguna circunstancia.&lt;/p&gt;  &lt;p&gt;El &lt;i&gt;trigger&lt;/i&gt; para Karasik para incurrir en tal afirmación de primer orden fue la investigación &lt;/p&gt;  &lt;p&gt;Publicada acerca de la lista de los 40 Principios de Inventiva para Software de Rea&lt;a href="#_ftn3_8657" name="_ftnref3_8657"&gt;[3]&lt;/a&gt;.haciendo una analogía de la situación es que los 40 Principios de Inventiva - o la mayoría de ellos por lo menos - se puede observar en el diseño de software, considerada absurda para el.&lt;/p&gt;  &lt;p&gt;Sobre la base anterior de experiencias y el extenso análisis de las patentes realizadas durante el programa de investigación para la actualización de TRIZ, es nuestra firme convicción de que tiene TRIZ algo de importancia para ofrecer a ingenieros de software. &lt;/p&gt;  &lt;p&gt;Sin embargo a diferencia de las materias ciencias duras: mecanica, hidráulica, etc. lo que ya podemos ver es que el sesgo y la orientación de las distintas herramientas de TRIZ es muy diferente a la de software que en otros campos de aplicación. Por lo que el autor (Darrel mann) con el fin de explorar los prejuicios que, sin embargo, en primer lugar hay que estudiar el contexto y los límites de lo que es y lo que no es un problema 'software'. Una buena forma de comenzar esta exploración, según Mann, entonces, es mediante la Ley de Sistema de Integridad TRIZ&lt;a href="#_ftn4_8657" name="_ftnref4_8657"&gt;[4]&lt;/a&gt; (modificada) y ver cómo esto podría ser aplicado a sistemas informáticos. Es decir si un &lt;i&gt;problema de software&lt;/i&gt; puede ser situado bajo esta perspectiva, así como las demás áreas lo han hecho, estos últimos no tendrían ningún impedimento para ser aplicado a través de TRIZ.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SOTyY6eaFnI/AAAAAAAAAMM/FA1ieQiOxKE/s1600-h/clip_image002%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image002[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="83" alt="clip_image002[1]" src="http://lh3.ggpht.com/foward/SOTyZ_VvzyI/AAAAAAAAAMQ/YPB2gVnt94M/clip_image002%5B1%5D_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Imagen 1 - Imagen de referencia&lt;/p&gt;  &lt;p&gt;La primera pregunta que surge después de pensar en este modelo, es aplicable a software? La respuesta es sí, podemos aplicar recursivamente el modelo en varios niveles jerárquicos .En el nivel del software subrutina, por ejemplo, podríamos pensar en el &lt;i&gt;'motor'&lt;/i&gt; como los algoritmos que figuran en la rutina, &lt;i&gt;la transmisión&lt;/i&gt; como la llamada a la subrutina, &lt;i&gt;la herramienta&lt;/i&gt; como los resultados calculados por la rutina y el &lt;i&gt;control&lt;/i&gt;, las diferentes líneas de código en el software que asegurarse de que las cosas sucedan en la secuencia correcta y con la lógica deseada. El &lt;i&gt;‘campo (interface)'&lt;/i&gt; es un poco más grande, pero si pensamos en él como un &amp;quot;campo de la comunicación” la lógica sigue intacta. La misma analogía se puede aplicar en forma progresiva a los niveles jerárquicos más altos en que nos fijamos en los sistemas desde la perspectiva del sistema operativo, idioma, etc. Ya sea cualquier nivel que veamos, en última instancia el &amp;quot;sistema&amp;quot; tiene que interactuar con algo fuera de la sistema (&lt;i&gt;‘campo (interface)'&lt;/i&gt;). Siendo esto cosa fuera del sistema ser otra rutina de programa o el usuario mismo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998028"&gt;Problemas de Software&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Los &lt;i&gt;'Problemas de Software'&lt;/i&gt; quizás a diferencia de los sistemas o ciencias convencionales es que sólo empezarán a ocurrir cuando se examinan los vínculos entre el software y el mundo exterior. Por lo tanto la única práctica, entonces, cuando nos encontramos en la identificación de modelos funcionales que contienen relaciones negativas es cuando llegamos a la interfaz con el mundo exterior. Ya que un fragmento de código no interacciona «Inadecuadamente» con otro, pero un pedazo de código muy a menudo interactúa inadecuadamente con una pieza de hardware o con un usuario.&lt;/p&gt;  &lt;p&gt;Es probable que esto significa que vamos a estar pensando en como TRIZ como herramienta en la resolución de problemas, en un instrumento algo a un diferente nivel de detalle en el punto de inicio de un modelo de análisis de la función.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998029"&gt;Triz para Software&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Bajo los aspectos mencionados anteriormente, Darrell Mann, lo obtuvo. Bajo los mismos procedimientos y analogías efectuadas a los 40 principios de TRIZ es posible resolver un problema de software mediante TRIZ.&lt;/p&gt;  &lt;p&gt;De esta manera a continuación se expondrá las ideas y procedimientos para efectuar tal resultado.&lt;/p&gt;  &lt;p&gt;Darrel Mann propone la siguiente estructura, de desarrollo y análisis del problema.&lt;/p&gt;  &lt;p&gt;Definición:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. &lt;/b&gt;Resultado Ideal Final.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. &lt;/b&gt;Explorar el problema.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. &lt;/b&gt;Subversión análisis.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4. &lt;/b&gt;&lt;b&gt;Matriz de contradicciones&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Generación de Solución:&lt;/p&gt;  &lt;p&gt;1. &lt;b&gt;Principios Inventivos&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;2. Tendencias/Evolución Potencial.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Si bien la estructura anterior de procedimiento fue propuesta por Mann puede ser aplicada bajo cualquier ciencia; solo la matriz y los principios inventivos conforman obra de Mann y su utilización es única para “Problemas de Software”.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998030"&gt;Definición&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Para esta primera aproximación Mann, baso su propuesta bajo dos perspectivas esenciales, en primer lugar bajo la utilización de siete pilares de exploración del problema y en segundo lugar las contradicciones en relación con los factores y/o parámetros que la conforman.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998031"&gt;Siete Pilares de “TRIZ para Software”&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;i&gt;&lt;u&gt;&lt;/u&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Esta aproximación responde a las características y entendimiento del problema en cuestión. Es decir apoya a situarse en el problema y observar las características de este último, de manera que al momento de encontrar una solución a través de los principios inventivos por medio de la matriz de contradicciones resulte la más apropiada.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Idealidad&lt;/i&gt;: atenta a encontrar cada vez mayor acerca de lo bueno, la disminución de lo malo.(&lt;i&gt;“Si mismo”,autorepararse,autodaptarse,etc)&lt;/i&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;· &lt;i&gt;Emergente&lt;/i&gt;: producir un a solución o atentar o situación relevante en el contexto de la situación del problema.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Funcional:&lt;/i&gt; en el contexto de un software, esta existe para el software proporcionar una función útil, ya sea a otras piezas de software o de una pieza de hardware o un ser humano indep. del producto como tal. &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Contradicción:&lt;/i&gt; La contradicción de la eliminación de estrategias se puede utilizar para acelerar la evolución de cualquier sistema. Las contradicciones tienden a ocurrir en las interfaces entre software y el mundo exterior en su totalidad mas que en lugar de «dentro» del software. &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Recursos&lt;/i&gt;: Todo dentro y alrededor de un sistema que no se utiliza al máximo de su potencial es un recurso. &lt;/li&gt;    &lt;li&gt;Espacio/Tiempo/Interface: la comprensión efectiva de un problema requiere conocimiento de cómo un sistema se ve afectado por efectos espaciales, temporales y cuestiones interfaciales. &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Recursion&lt;/i&gt;: se refiere al fenómeno según el cual ciertos fenómenos de sistema se repiten en los diferentes niveles jerárquicos. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;&lt;a name="_Toc201998032"&gt;Subversión Análisis&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Atenta a generar los errores que pudiera tener el sistema y de esta manera “&lt;i&gt;Si el fallo ocurre, entonces los recursos necesarios para hacerlo suceder deben estar presentes en el sistema” &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Por lo que&lt;i&gt; &lt;/i&gt;Subversión es el análisis sobre la búsqueda de esos recursos, se trata de «inventar fracaso&amp;quot;;¿Qué podría ir mal, irá mal, ¿Qué podría ir mal en el futuro, va a salir mal. Para así dar paso a las contradicciones y resolver el problema en cuestión.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Identificar el Problema- donde y cuando.&lt;b&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Amplificar el problema.(como hacer que ocurra todo el tiempo)&lt;b&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Formula el problema invertido.&lt;/li&gt;    &lt;li&gt;Identificar los componentes necesarios.&lt;b&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Identificar los recursos en el sistema.&lt;b&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;&lt;a name="_Toc201998033"&gt;Matriz de Contradicciones&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;El clásico &lt;i&gt;TRIZ Contradicción Matrix&lt;/i&gt; ha sido objeto de actualizaciones muchas veces en los últimos tiempos, primero a través de la publicación de “Matrix 2003&lt;a href="#_ftn5_8657" name="_ftnref5_8657"&gt;[5]&lt;/a&gt;” (para negocios) y, a continuación, más recientemente, un matriz de problemas empresariales. A pesar de pasar por varios pasos hacia     &lt;br /&gt;lo que es relevante para los problemas que enfrentan los ingenieros de software y la búsqueda de muchas las patentes de software que había algo que aportar a la construcción de la herramienta, Matrix 2003 contiene mucho de lo que se consideró fuera de poner a los usuarios de software. De ahí que en 2003 se decidió que era necesario crear una matriz a medida para problemas de software. Esto matriz ya se ha concluido, y se convertido a disposición del público por primera vez cuando el libro &lt;i&gt;&amp;quot;TRIZ para ingenieros de software&amp;quot;&lt;/i&gt; se público.&lt;/p&gt;  &lt;p&gt;La tabla de continuación ilustra los parámetros que componen las partes de la nueva Matriz.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Size (Static)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Size (Dynamic)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Amount of Data&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Interface&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Speed&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Accuracy&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Stability&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Ability to Detect/Measure&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Loss of Time&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Loss of Data&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Harmful Effects Generated By System&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Adaptability/Versatility&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Compatibility/Connectability&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Ease Of Use&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Reliability/Robustness&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Security&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Aesthetics/Appearance&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Harmful Effects On System&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;System Complexity&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Control Complexity&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;p&gt;Automation&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Parámetros de la nueva, Software Matrix&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El método de funcionamiento de la nueva Matriz es exactamente el mismo que el utilizado en las demás Matrices; el usuario tiene que identificar lo que ellos desean mejorar en su sistema, entonces que es lo que les impide hacer la mejora. Desde aquí es necesario entonces &lt;i&gt;traducir&lt;/i&gt; los detalles del conflicto (el par mejora y empeoramiento) de la Matriz de la lista de parámetros con mi problema que corresponde mas estrechamente con los detalles. A partir de ahí, la matriz apreciara los más probable principios de inventiva utilizados por otros para solucionar el desafío con éxito del par conflictos. &lt;/p&gt;  &lt;p&gt;Esta nueva Matriz es el resultado del estudio de alrededor de 40000 patentes de software y el diseño soluciones. No obstante el número está limitado por el hecho de que actualmente sólo los EE.UU. es la concesión de software las patentes.&lt;/p&gt;  &lt;p&gt;Un ejemplo sencillo, sin embargo, ha de servir al doble propósito de demostrar cómo la matriz fue compilada (&lt;i&gt;patentes&lt;/i&gt;) y cómo un usuario puede hacer uso de la herramienta.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;US6, 785.819 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta patente se concedió a Mitsubishi Denki Kabushki Kaisha el 31 de agosto de 2004 (en realidad algún tiempo después de la Matriz de trabajo se completó). Los antecedentes de la patente como descrito en la divulgación es el siguiente (extracto):&lt;/p&gt;  &lt;p&gt;&lt;i&gt;“Recientemente, los sistemas informático que utiliza LAN se están adoptando en las organizaciones. Comúnmente, una pluralidad de LAN ubicadas en diversos lugares en una organización de la red entre oficinas están conectadas por completo para formar una intranet. La extensión de más, una extranet que incluye la organización aliada a las empresas a formar una red total también se está convirtiendo en generalizada. Hay varias formas de conectar una pluralidad de LAN ubicadas en diversos lugares. Para dar un ejemplo, hay un caso de utilizar a bajo costo a Internet en lugar de una línea arrendada. En este caso, el acceso desde el exterior debe ser regulado, por lo que un servidor de seguridad general, se recurre a una frontera de fuera y dentro de la red. Esto ayuda a aumentar el factor de seguridad dentro de la LAN. El firewall es una técnica que sólo permite el acceso desde el exterior a una ubicación específica o para una aplicación específica de la LAN………. En un sistema de red informática, los servicios bajo un entorno LAN como el uso compartido de archivos, impresión a la impresora común, o el uso de la CPU del servidor no puede ser aprobado debido al firewall. En consecuencia, en los casos en que se desea obtener un ciertos datos o un programa a partir de otros ubicación, a continuación, uno sólo puede confiar en alguien en el otro lugar para datos requeridos utilizando un canal independiente, o sólo puede basarse en un método de envío de medios de comunicación como una cinta “.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;El problema de este modo identificados por los inventores es un conflicto entre los deseos paralelo a mejorar la capacidad de transferencia de datos y mantener la seguridad.&lt;/p&gt;  &lt;p&gt;Traduciendo estos requisitos en los términos de la Matriz de Software, se pone en manifiesto el conflicto en la pareja ilustrada a continuación:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SOTyaXAue7I/AAAAAAAAAMU/3yfA53pJxMs/s1600-h/clip_image004%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image004[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="41" alt="clip_image004[1]" src="http://lh4.ggpht.com/foward/SOTya4lYbII/AAAAAAAAAMY/bfy4UXhymhg/clip_image004%5B1%5D_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;US6, 785,819 conflicto traducido en términos de, The Software Matriz.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los inventores de la patenten ocuparon un Agente de software para lograr la solución.(en la figura se puede apreciar a través del principio 24,que es Intermediario, por lo que ahora cualquier problema de esta índole concurre a esta patente de Agentes).&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998034"&gt;Generación de Solución&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;La primera cosa que decir sobre el tema de los principios de inventiva es que el autor (Darrel Mann) confirmó la existencia de los mismos 40 principios como los que se encuentran en el TRIZ clásico. Como se dio en el caso con la técnica de conversión a los &lt;i&gt;principios de gestión&lt;/i&gt;, se tuvieron que modificar algunos de los términos del principio para que las descripciones se adaptaran de mejor manera al contexto de software, pero más allá de eso, se han mantenido las mismas.&lt;/p&gt;  &lt;p&gt;Esto último se apoya ya que no ha habido a la fecha ingenieros de software que hayan identificado estrategias de inventiva que no encajen en los principios existentes. La lista de principios que presenta la modificación de los títulos se ilustra a continuación:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="295"&gt;           &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;               &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;1. Segmentation&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;2. Extraction&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;3. Local Quality&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;4. Asymmetry&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;5. Combination&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;6. Universality&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;7. ‘Nested Doll’&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;8.&lt;i&gt; Counterbalance&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;9. Prior Counter-Action&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;             &lt;/tbody&gt;&lt;/table&gt;            &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;               &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;10. Prior Action&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;11. Prior Cushioning&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;12. &lt;i&gt;Remove Tension&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;13. ‘The Other Way Round’&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;14. &lt;i&gt;Loop&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;15. Dynamics&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;16. &lt;i&gt;Slightly Less/Slightly More&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;17. Another Dimension&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;18. &lt;i&gt;Vibration&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;             &lt;/tbody&gt;&lt;/table&gt;            &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;               &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;19. Periodic Action&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;20. Continuity of Useful Action&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;21&lt;i&gt;. Hurrying&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;22. ‘Blessing in Disguise’&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;23. Feedback&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;24. Intermediary&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;             &lt;/tbody&gt;&lt;/table&gt;         &lt;/td&gt;          &lt;td valign="top" width="295"&gt;           &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;               &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;25. Self-Service&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;26. Copying&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;27. Cheap/Short Living&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;28. Another Sense&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;29. Fluidity&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;30. Thin &amp;amp; Flexible&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;31. Holes&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;32. Colour Changes&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;33. Homogeneity&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;34. Discarding and Recovering&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;35. Parameter Changes&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;36. Paradigm Shift&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;37. Relative Change&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;38. Enrich&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;39. Calm&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="280"&gt;                   &lt;p&gt;&lt;i&gt;40. Composite Structures&lt;/i&gt;&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;             &lt;/tbody&gt;&lt;/table&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;40 Principios de Inventiva.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;También conviene señalar a este respecto es el hallazgo adicional de la investigación hecha por Mann, que la mayoría de los problema de software las soluciones parecen fusionar las ideas de varios principios.&lt;/p&gt;  &lt;p&gt;Para efectos prácticos de ejemplificación se muestran solo algunos principios respecto a su analogía clásica hacia la de software. (no obstante se anexan al final en un tabla todos los principios con su descripción de inglés)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. &lt;/b&gt;&lt;b&gt;Segmentation&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Software Analogy&lt;/b&gt;: Dividir un sistema en componentes autónomos.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5. &lt;/b&gt;&lt;b&gt;Combination&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Software Analogy: &lt;/b&gt;Hacer ejecutar procesos en paralelo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;7. Nesting (Matrioshka)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Software Analogy&lt;/b&gt;: Heredar la funcionalidad de otros objetos de sus respectivas clases dentro de una clase base.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;18.Vibration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Software Analogy:&lt;/b&gt; cambiar el ritmo de ejecución de un algoritmo en el contexto de tiempo, hasta lograr. el resultado deseado.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998035"&gt;Secuencia de uso (frecuencia) de los Principios de Inventiva&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;El análisis aquí descrito se basa en los mismos 40000 soluciones de software utilizado para compilar la Matriz de software. El método de presentar nuestras conclusiones es exactamente el mismo que recientemente se ha utilizado para la actualización de la matriz técnica y de. El software Principio de frecuencia de secuencia, es el siguiente:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SOTybag4LDI/AAAAAAAAAMc/6apxQyfkafo/s1600-h/clip_image006%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image006[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="77" alt="clip_image006[1]" src="http://lh3.ggpht.com/foward/SOTyb6-PR6I/AAAAAAAAAMg/1Chy2np2i1g/clip_image006%5B1%5D_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Secuencia de frecuencia de los 40 Principios de Inventiva.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;En comparación con la matriz clásica de triz, es la siguiente (por efectos de procesador de textos, la tabla quedo en la página siguiente):&lt;/p&gt;  &lt;p&gt;La columna cambio (&lt;i&gt;change&lt;/i&gt;) indica que se han producido algunos cambios muy importantes que han tenido lugar entre la matriz clásica y la nueva matriz de software. En menor medida también ha habido algunos cambios en. Los mayores subidas en la lista la oferta muestran de manera más interesante las diferencias entre estrategias de resolución de conflictos de software y problemas técnicos: &lt;/p&gt;  &lt;p&gt;Las subidas de los Principios 37 ( «Cambio relativo&amp;quot; en nuestra aplicación de software) y 7 ( 'Muñeca Rusa ') son más indicativos de la facilidad con que estas dos estrategias pueden ser desplegadas en un contexto de software. Agrupamiento (Muñeca rusa) en particular, puede ser algo que añade una considerable complejidad en un sistema físico, pero en una pieza de software el uso de esta estrategia se limita solamente a exigir la creación de nuevas líneas de código. El aumento del principio “Cambio relativo” es también debido a la facilidad con que este estrategia puede ser desplegado en un entorno digital.&lt;/p&gt;  &lt;p&gt;En cuanto a los Principios que caen en la lista, parece claro que hay algunos de los Principios que son más difíciles de interpretar en el contexto de software. Por ejemplo el Principio 18 («vibraciones»), 30 (”Flexible y delgado”), 31 ('Holes') y 36 («la fase de transición»). Si bien todos los ejemplos de software de estos principios pueden ser encontrados, su existencia es poco frecuente y, a veces, la imaginación necesaria es muy alta. El análisis detallado de la secuencia de prioridad se ilustra en mostrada anteriormente, de hecho, muestran que hay una gran diferencia en la frecuencia del uso de los 16 principales principios en comparación con el 24 inferiores.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SOTycdtNHAI/AAAAAAAAAMk/MUEqlbzdZiA/s1600-h/clip_image008%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image008[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="clip_image008[1]" src="http://lh3.ggpht.com/foward/SOTyc-Jbk2I/AAAAAAAAAMo/zRFKQUTXXF8/clip_image008%5B1%5D_thumb.gif?imgmax=800" width="193" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Comparación entre la matriz de Software y la Clásica.&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc201998036"&gt;Idealidad y Tendencias&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Pasando de contradicciones, otro instrumento importante en el contexto del software parece ser La Idealidad y las Tendencias parte de TRIZ. &lt;/p&gt;  &lt;p&gt;Una gran parte de la investigación subyacente para TRIZ-Software de ha examinado los patrones que existen en la evolución del software como los sistemas de salto discontinua de una manera de hacer las cosas a otro. Esto se debe a que esperamos que el conocimiento de esas tendencias nos permitirá acelerar considerablemente la evolución de las actuales sistemas de la misma manera que está empezando a suceder con los sistemas técnicos que estamos participando.&lt;/p&gt;  &lt;p&gt;Si bien este punto escapa al desarrollo de la investigación, nos pareció interesante mencionarlo ya que forma de una herramienta de gran apoyo para triz, especialmente para problemas de software. Ya que permite observar las tendencias a futuro de en un área tan volátil como la informática que permanece en constante evolución. De esta manera al momento de utilizar los principios observaremos nuestra tendencia de acuerdo a nuestra solución propuesta.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SOTydbga3iI/AAAAAAAAAMs/LeIPfj4_Uzk/s1600-h/clip_image010%5B1%5D%5B2%5D.jpg"&gt;&lt;img title="clip_image010[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="115" alt="clip_image010[1]" src="http://lh3.ggpht.com/foward/SOTyd5z30II/AAAAAAAAAMw/QNes9K3aSVk/clip_image010%5B1%5D_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Radar de Comparación, Actual y Potencial de Tendencias.&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc201998037"&gt;Diseñando Patrones de Software con Triz&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Triz como ya mencionamos anteriormente, aparte de ser ocupado para la física, química, y otras ciencias, también puede ser aplicado a los procesos de negocios y a los procesos de software. Es así como el análisis de Triz y los patrones de diseño, visualizamos ciertas analogías que pueden ser estructuradas para mejorar y ayudar a los ingenieros de software.&lt;/p&gt;  &lt;p&gt;Para entrar en contexto un patrón de diseño es:&lt;/p&gt;  &lt;p&gt;• una solución estándar para un problema común de programación&lt;/p&gt;  &lt;p&gt;• una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios&lt;/p&gt;  &lt;p&gt;• un proyecto o estructura de implementación que logra una finalidad determinada&lt;/p&gt;  &lt;p&gt;• un lenguaje de programación de alto nivel&lt;/p&gt;  &lt;p&gt;• una manera más práctica de describir ciertos aspectos de la organización de un programa&lt;/p&gt;  &lt;p&gt;• Conexiones entre componentes de programas&lt;/p&gt;  &lt;p&gt;• La forma de un diagrama de objeto o de un modelo de objeto.&lt;/p&gt;  &lt;p&gt;Así describiremos un &lt;i&gt;subconjunto&lt;/i&gt; de los 23 patrones de diseño que fueron desarrollados por los &lt;i&gt;Gang of Four&lt;/i&gt; [1] como instancias de los principios de resolución de problemas encontrados por la teoría TRIZ de Genrich Altshuller´s. Nosotros podemos ver en un análisis temprano, las similaridades entre los patrones de diseño y Triz, esto es que ambos sistemas son un conjunto de heurísticas, derivados desde observaciones de soluciones exitosas para problemas comunes.&lt;/p&gt;  &lt;p&gt;Luego de un profundo análisis, nosotros podemos encontrar fuertes links entre los patrones estructurales del grupo de los &lt;i&gt;Gang of Four&lt;/i&gt; y un conjunto especifico de principios de TRIZ.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998038"&gt;Contradicciones Espacio-Tiempo&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Los científicos de la computación tienen dos bien conocidas fuerzas que son el espacio y el tiempo (dos características de los sistemas). Así el problema general es que tal como la característica del sistema del tiempo decrece (se mejora), la característica del sistema de espacio se incrementa (se empeora). En cambio, tal como la característica del sistema del espacio decrece (mejora), la característica del sistema de tiempo decrece (se empeora).&lt;/p&gt;  &lt;p&gt;Un ejemplo ilustrativo de contradicciones de espacio-tiempo:&lt;/p&gt;  &lt;p&gt;Se encuentra un problema con las bases de datos que mientras más información ellos guardan, más lento el sistema se pone.&lt;/p&gt;  &lt;p&gt;Sin embargo, mientras más información ellos tienen, más comúnmente podemos encontrar la información que nosotros queremos, debido a una pregunta realizada.&lt;/p&gt;  &lt;p&gt;Si identificamos en la matriz de contradicciones de 39x 39 TRIZ sería lo siguiente:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="203"&gt;           &lt;p&gt;&lt;b&gt;Problemas&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="236"&gt;           &lt;p&gt;&lt;b&gt;Principios de Triz&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="203"&gt;           &lt;p&gt;&lt;b&gt;&amp;quot;el acceso a mas respuestas e información&amp;quot;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="236"&gt;           &lt;p&gt;Volumen de un objeto estático (Característica del sistema 8)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="203"&gt;           &lt;p&gt;&lt;b&gt;&amp;quot;incremento de tiempo necesario para encontrar una respuesta&amp;quot;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="236"&gt;           &lt;p&gt;Tiempo de acción de un objeto estacionario ( Característica del sistema 16)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;La intersección de tiempo de acción de un objeto estacionario a lo largo del eje horizontal (se empeora) y volumen de un objeto estático (se mejora) nos indica 3 potenciales soluciones desde los 40 principios:&lt;/p&gt;  &lt;p&gt;· 35 - Transformación de Propiedades&lt;/p&gt;  &lt;p&gt;· 34 - Rechazo y regeneración de las partes&lt;/p&gt;  &lt;p&gt;· 38 - Oxidación acelerada.&lt;/p&gt;  &lt;p&gt;El principio 34 incluye: &amp;quot; Después de completar esta función o llegar a ser útil, un elemento del objeto es rechazado (descartado, disuelto, evaporado, etc.) o modificado durante el proceso de trabajo&amp;quot;. Esta descripción contiene la esencia de la definición de &lt;b&gt;CACHE, &lt;/b&gt;el cual es una solución común a un problema inicial con base de datos.&lt;/p&gt;  &lt;p&gt;Examinando el problema general de mas y mas tiempo (empeora) tomando un orden a través de una sobre-abundancia de información (se mejora), la solución de TRIZ encuentra muy bien descrito en el principio 34 la idea de un &lt;b&gt;FAQ, o una lista de Preguntas frecuentemente hechas - &lt;/b&gt;otro ejemplo de un &lt;b&gt;CACHE.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc201998039"&gt;Diseño de Patrones y TRIZ&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998040"&gt;1. Adapter Pattern y el principio Mediador (Mediator Principle)&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;El patrón adaptador, como su propio nombre nos puede hacer ver, se usa para convertir el interface de una clase a la de otra, entendiendo en este caso interface como el conjunto de métodos que ofrece una clase para su manipulación por código, no la herramienta que usa el usuario final de nuestra aplicación. Lo que haremos será escribir métodos con nuestra interface deseada que deleguen el trabajo en los de la interface ya existente.&lt;/p&gt;  &lt;p&gt;Las razones para querer hacer algo así pueden ser de muy distinta naturaleza, y pueden ir desde:&lt;/p&gt;  &lt;p&gt;Querer integrar una clase ya existente pero que no podemos modificar en una nueva jerarquía de clases, que por ejemplo implemente una nueva interfaz, podemos querer limitar el interface de una clase.&lt;/p&gt;  &lt;p&gt;Querer hacerlo simplemente porque la convención de nombres usada en la clase original, que tampoco podemos o queremos cambiar, no se ajusta a la nuestra. &lt;/p&gt;  &lt;p&gt;§ Esta última razón puede parecer un poco absurda pero puede ser bastante frustrante recibir miles de errores de compilación por trabajar con métodos del estilo &lt;i&gt;GetName&lt;/i&gt; en lugar de &lt;i&gt;getName&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;o Esta adaptación se puede hacer de dos formas :&lt;/p&gt;  &lt;p&gt;Adaptación por herencia&lt;/p&gt;  &lt;p&gt;Adaptación por composición.&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc201998041"&gt;1.3 Adaptación por herencia&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;Aquí haremos que la clase que implementa la nueva interface extienda de la original y añadiremos a esta los métodos que consideremos oportunos.&lt;/p&gt;  &lt;p&gt;Por ejemplo:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="453"&gt;           &lt;p&gt;public class Usuario{&lt;/p&gt;            &lt;p&gt;protected String nombre;&lt;/p&gt;            &lt;p&gt;protected String password;&lt;/p&gt;            &lt;p&gt;. . .&lt;/p&gt;            &lt;p&gt;public Usuario (String nombre, String password){&lt;/p&gt;            &lt;p&gt;. . .&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;public String GetNombre (){&lt;/p&gt;            &lt;p&gt;return nombre;&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;public String GetPassword (){&lt;/p&gt;            &lt;p&gt;return password;&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;. . .&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Según las convenciones de programación, nos damos cuenta de que esas dos G de Getxxx darán muchos problemas. Entonces suponiendo que esta clase ya esta en sistemas productivos y por tanto no podemos hacer algo tan simple como cambiar esa letra, optamos por extender esa clase, de forma que el sistema siga trabajando correctamente con las clases antiguas, para así evitarnos errores de compilación innecesarios.   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="520"&gt;           &lt;p&gt;public class BuenUsuario &lt;b&gt;extends&lt;/b&gt; Usuario{&lt;/p&gt;            &lt;p&gt;public BuenUsuario (String nombre, String password){&lt;/p&gt;            &lt;p&gt;super (nombre, password);&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;public String getNombre (){&lt;/p&gt;            &lt;p&gt;return GetNombre();&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;public String getPassword (){&lt;/p&gt;            &lt;p&gt;return GetPassword();&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="67"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Al hacerlo así, nos aprovechamos aparte de las ventajas de la herencia, haciendo que los métodos de otras clases que usen la clase usuario puedan seguir funcionando sin retocarlos.&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc201998042"&gt;1.2 Adaptación por Composición&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;Esta ocurre en algunos casos donde no podemos usar la herencia, ya sea porque queremos integrar esa clase en una jerarquía nueva y ya estemos heredando de otra clase, o ya sea por causa de modificadores de acceso como &lt;b&gt;private&lt;/b&gt; o &lt;b&gt;final&lt;/b&gt; que impidan que se hereden algunas características de la clase, o simplemente que no queramos que la nueva clase tenga el interface completo de la original. En ese caso tendremos que usar la composición, es decir, incluir la clase a adaptar como un atributo de la adaptadora.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998043"&gt;2. Composite and Iterator Pattern y el principio de Universalidad (Universality Principle)&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Como desarrollador se tienen variadas listas para utilizar. Cada una de éstas pueden estar y lo más probable es que así sea, en distintos formatos. Es útil para crear una interfaz a través de la cual los objetos en las diferentes listas puedan sea accesados. Una segunda interfaz es creada para moverse a través de las listas (en el formato entregado por la interfaz de la lista). Esta interfaz, a través de la cual los objetos de la lista son accesados, es llama &lt;i&gt;iterator&lt;/i&gt; (iterador). La representación (implementación) de la lista no es de ninguna consecuencia, el retorno de la siguiente lista de objetos de importancia primaria.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;PRINCIPIO 6 - UNIVERSALIDAD&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Promueve uniformidad de función, uso uniforme de un objeto para distintos propósitos, o la aplicación de los mismos requerimientos o características para distintos objetos, situaciones o acciones.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998044"&gt;3. Decorator Pattern y los principios de Agrupamiento y/o Membranas Flexibles&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;El decorator pattern dinámicamente agrega funcionalidad a un objeto. Usando éste patrón, es una forma de evitar crear subclases (clases hijas) para proveer funcionalidad extendida. Este patrón comienza con una superclase de un componente particular, C. El objeto actual que vamos a “decorar”, es una subclase de C, el que llamaremos c. El objeto decorador, d, en realidad referencia valores en c. Una subclase del decorador en realidad crea la funcionalidad adicional provista por la clase decorador.&lt;/p&gt;  &lt;p&gt;PRINCIPIO 7 – AGRUPAMIENTO&lt;/p&gt;  &lt;p&gt;Aplica cuando un objeto cabe dentro o pasa a través de otro.&lt;/p&gt;  &lt;p&gt;PRINCIPIO 30 – MEMBRANAS FLEXIBLES&lt;/p&gt;  &lt;p&gt;Receta el reemplazo de las construcciones tradicionales con construcciones de peliculas delgadas o membrana flexibles. Además, un objeto puede ser aislado de su ambiente con una película delgada.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998045"&gt;4. Facade Pattern y el principio de la consolidación&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Dada una colección de interfaces, un cliente (usuario) debería sólo tener que tratar con un sistema de interfaz unificada cuando trata de acceder a los datos. La interfaz de mayor nivel es el llamado patrón fachada. Es una implementación directa de la Ley de Remeter, la que encapsula el principio de mínimo conocimiento (“los amigos solo hablando con amigos”).&lt;/p&gt;  &lt;p&gt;PRINCIPIO 5 – CONSOLIDACION&lt;/p&gt;  &lt;p&gt;Entrega funciones o partes de un sistema a una relación que crea nuevos resultados. Un ejemplo es combinar la habilidad para reproductor de reproducir múltiples formatos (DVD, mp3, etc).&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998046"&gt;5. Flyweight Pattern y el principio de transición hacia una nueva dimensión&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Existen momentos en los que uno necesita tener, literalmente, miles de instancias de un objeto. Cada objeto es relativamente simple, usualmente llamando a unos pocos métodos. Un ejemplo de esto, podría ser un procesador de palabras basado en web que talvez tiene 2560 lugares para poder ubicar caracteres. Caracteres cualquiera pueden aparecer o desaparecer (dos métodos). El patrón flyweight entrega un administrador para organizar cada uno de los pequeños objetos (configurando los caracteres en 80 por columna y 32 por fila por cada página). Los objetos carácter son responsables de su propia administración. (Mostrando o no una letra, número, símbolo o estando en blanco).&lt;/p&gt;  &lt;p&gt;PRINCIPIO 17 – TRANCISION HACIA UNA NUEVA DIMENSION&lt;/p&gt;  &lt;p&gt;Sugiere cambiar la orientación de un sistema agregando una dimensión. Esta nueva dimensión puede poner menor tensión en una dimensión ya existente, o puede agregar una dimensión de control.&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998047"&gt;6. Proxy Patterm y los principios de Cambio de parámetro y/o transición de fase&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;El patrón Proxy es usado para controlar el acceso a un objeto. Como ejemplo, hay momentos en lo que un usuario querrá solicitar que una imagen sea mostrada. Si el tamaño de ésta es un poco grande, entonces debería tomar un tiempo no mínimo en aparecer (quizás una animación flash). Prácticas de buena usabilidad recomendarían que un pequeño cartel animado que diga “Cargando” aparezca mientras se carga en memoria para reproducirse un gran archivo flash. Introduzca el patrón comentado para poder realizar esto, poner un cartel de “cargando” mientras la imagen está lista para ser mostrada, y luego mostrarla.&lt;/p&gt;  &lt;p&gt;PRINCIPIO 35 – CAMBIOS DE PARAMETRO&lt;/p&gt;  &lt;p&gt;Sugiere cambiar el estado físico de un objeto (de gas a líquido por ejemplo). Cambiar la concentración o consistencia. Cambiar el grado de flexibilidad. Cambiar la temperatura. &lt;/p&gt;  &lt;p&gt;PRINCIPIO 36 – TRANSICION DE FASE &lt;/p&gt;  &lt;p&gt;Sugiere usar el fenómeno que ocurre durante el cambio de fase (cambio de volumen, ganancia o pérdida de calor) &lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc201998048"&gt;Ejemplos de Patrones&lt;/a&gt;&lt;/h3&gt;  &lt;h4&gt;&lt;a name="_Toc201998049"&gt;Proxy pattern&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Se desea guardar una lista de usuarios registrados, pero no sé exactamente donde. La idea es que dependiendo del valor de un checkbox ( en el que el usuario elige si está conectado a internet o no ), debo mandar los datos a servidor ( en formato XML ) o guardarlos en disco en un Shared Object&lt;/p&gt;  &lt;p&gt;Esta es una misión para el Patrón Proxy, debido a que se quiere aislar el proceso de guardar los datos del resto del programa, simplemente hacerlo y olvidarse de cómo o dónde se guarda.&lt;/p&gt;  &lt;p&gt;Eso es lo que hace este patrón. El proxy guarda una referencia a un objeto, que es quien realmente se encargará de ejecutar la acción. Pero es el proxy el que crea ese objeto, por lo que puede crear una instancia de una u otra clase dependiendo de ciertas condiciones en tiempo de ejecución&lt;/p&gt;  &lt;p&gt;Por tanto, todas las clases que puedan ser instanciadas por el proxy, deben implementar el mismo interfaz. Y dependiendo del tipo de proxy, puede ser una buena idea que incluso él mismo implemente ese interfaz, para que se pueda eliminar si es necesario. &lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;&lt;a name="_Toc201998050"&gt;Decorator Pattern&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Supongamos que tenemos una clase existente &lt;i&gt;Ventana&lt;/i&gt; y queremos añadirle funcionalidad para que muestre un borde alrededor. Podemos crear una subclase &lt;i&gt;VentanaConBorde&lt;/i&gt; que herede de &lt;i&gt;Ventana&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Hasta aquí todo bien, pero supongamos que surge la necesidad de crear una ventana que muestre un pequeño botón de ayuda con un signo de interrogación (?) en su parte superior. Entonces tenemos las siguientes opciones:&lt;/p&gt;  &lt;p&gt;· Crear otra subclase de Ventana: VentanaConBotónDeAyuda.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Problema:&lt;/b&gt; No cubre la necesidad de tener ventanas con bordes y botón de ayuda a la vez.&lt;/p&gt;  &lt;p&gt;· Crear una subclase de VentanaConBorde: VentanaConBordeYBotonDeAyuda.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Problema:&lt;/b&gt; No tenemos una ventana con botón de ayuda y sin borde.&lt;/p&gt;  &lt;p&gt;· Crear clases para todas las combinaciones posibles de funcionalidades.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Problema:&lt;/b&gt; Con este ejemplo tendríamos cuatro clases: Ventana, VentanaConBorde, VentanaConBotonDeAyuda y VentanaConBordeYBotonDeAyuda; con tres funcionalidades tendríamos ocho clases y con cuatro, ¡dieciséis!&lt;/p&gt;  &lt;p&gt;El patrón &lt;b&gt;Decorator&lt;/b&gt; soluciona este problema de una manera mucho más sencilla y extensible. Se crea a partir de &lt;i&gt;Ventana&lt;/i&gt; la subclase abstracta &lt;i&gt;VentanaDecorator&lt;/i&gt; y, heredando de ella, &lt;i&gt;BordeDecorator&lt;/i&gt; y &lt;i&gt;BotonDeAyudaDecorator&lt;/i&gt;. &lt;i&gt;VentanaDecorator&lt;/i&gt; encapsula el comportamiento de &lt;i&gt;Ventana&lt;/i&gt; y utiliza composición recursiva para que sea posible añadir tantas &amp;quot;capas&amp;quot; de Decorators como se desee. Podemos crear tantos &lt;i&gt;Decorators&lt;/i&gt; como queramos heredando de &lt;i&gt;VentanaDecorator&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Flyweight Pattern&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Crear una clase &lt;i&gt;PelotaFlyweight&lt;/i&gt;, que contendrá la información común (radio y color) y otra clase &lt;i&gt;PelotaConcreta&lt;/i&gt;, que contendrá las coordenadas concretas de cada pelota y una referencia a un objeto de tipo &lt;i&gt;PelotaFlyweight&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Al crearse instancias de &lt;i&gt;PelotaConcreta&lt;/i&gt;, se les deberá proveer de referencias a la instancia de &lt;i&gt;PelotaFlyweight&lt;/i&gt; adecuada a nuestras necesidades.&lt;/p&gt;  &lt;p&gt;En este caso solamente tendríamos una instancia de &lt;i&gt;PelotaFlyweight&lt;/i&gt;, puesto que hemos dicho que todas nuestras pelotas tienen el mismo radio y color, pero pensando en un ejemplo en el que tuviéramos varios grupos de pelotas, y dentro de cada uno de los cuales se compartieran el radio y el color, se puede utilizar &lt;b&gt;Flyweight&lt;/b&gt; conjuntamente con el patrón Factory, de tal modo que este último, en el momento en que se le soliciten instancias de &lt;i&gt;PelotaConcreta&lt;/i&gt; con determinadas características (mismo radio y color que el solicitado), compruebe si ya existe un &lt;i&gt;PelotaFlyweight&lt;/i&gt; con ese radio y color, y devuelva esa referencia o, en caso de que no exista, la cree y la registre. &lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc201998051"&gt;Facade Pattern&lt;/a&gt;&lt;/h4&gt;  &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="620"&gt;         &lt;pre&gt;&lt;b&gt;class&lt;/b&gt; UserfriendlyDate&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; GregorianCalendar gcal;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; public UserfriendlyDate(String isodate_ymd) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String[] a = isodate_ymd.split(&amp;quot;-&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gcal = new GregorianCalendar(Integer.valueOf(a[0]).intValue(),&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Integer.valueOf(a[1]).intValue()-1 /* !!! */, Integer.valueOf(a[2]).intValue());&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; public String toString() { return new Formatter().format(&amp;quot;%1$tY-%1$tm-%1$td&amp;quot;, gcal).toString();}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;/** Cliente */&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&lt;b&gt;class&lt;/b&gt; FacadePattern&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; public static void main(String[] args) &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UserfriendlyDate d = new UserfriendlyDate(&amp;quot;1980-08-20&amp;quot;);&amp;#160;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;Date: &amp;quot;+d);&amp;#160;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; d.addDays(20);&amp;#160;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;20 days after: &amp;quot;+d);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;        &lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;      &lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;  &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name="_Toc201998052"&gt;Bridge Pattern&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class Abstraccion&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private Implementador implementador;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void setImplementador(Implementador implementador)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.implementador = implementador;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Implementador getImplementador()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return implementador;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void operacion()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; implementador.operacion();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class AbstraccionRefinada extends Abstraccion&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void operacion()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; super.operacion();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public interface Implementador&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public abstract void operacion();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class ImplementacionA implements Implementador&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void operacion()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;implementacion A&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class ImplementacionB implements Implementador&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void operacion()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;implementacion B&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class PruebaBridge&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static void main(String arg[])&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Abstraccion abstraction = new AbstraccionRefinada();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; abstraction.setImplementador(new ImplementacionA());&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; abstraction.operacion();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name="_Toc201998053"&gt;Composite Pattern&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Imaginemos que necesitamos crear una serie de clases para guardar información acerca de una serie de figuras que serán círculos, cuadrados y triángulos. Además necesitamos poder tratar también grupos de imágenes porque nuestro programa permite seleccionar varias de estas figuras a la vez para moverlas por la pantalla.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En principio tenemos las clases &lt;i&gt;Círculo&lt;/i&gt;, &lt;i&gt;Cuadrado&lt;/i&gt; y &lt;i&gt;Triángulo&lt;/i&gt;, que heredarán de una clase padre que podríamos llamar &lt;i&gt;Figura&lt;/i&gt; e implementarán todas la operación pintar(). En cuanto a los grupos de &lt;i&gt;Figuras&lt;/i&gt; podríamos caer en la tentación de crear una clase particular separada de las anteriores llamada &lt;i&gt;GrupoDeImágenes&lt;/i&gt;, también con un método pintar().&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;    &lt;br /&gt;Problema.&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Esta idea de separar en clases privadas componentes (figuras) y contenedores (grupos) tiene el problema de que, para cada uno de los dos atributos, el método pintar() tendrá una implementación diferente, aumentando la complejidad del sistema.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El patrón &lt;b&gt;composite &lt;/b&gt;da una solución elegante a este problema, de la que además resulta en una implementación más sencilla.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A la clase &lt;i&gt;Figura&lt;/i&gt; la llamaríamos &lt;i&gt;Gráfico&lt;/i&gt; y de ella extenderían tanto &lt;i&gt;Círculo&lt;/i&gt;, &lt;i&gt;Cuadrado&lt;/i&gt; y &lt;i&gt;Triángulo&lt;/i&gt;, como &lt;i&gt;GrupoDeImágenes&lt;/i&gt;. Además, ésta última tendría una relación todo-parte de multiplicidad * con &lt;i&gt;Gráfico&lt;/i&gt;: un &lt;i&gt;GrupoDeImágenes&lt;/i&gt; contendría varios &lt;i&gt;Gráficos&lt;/i&gt;, ya fuesen éstos &lt;i&gt;Cuadrados&lt;/i&gt;, &lt;i&gt;Triángulos&lt;/i&gt;, u otras clases &lt;i&gt;GrupoDeImágenes&lt;/i&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Así, es posible definir a un grupo de imágenes recursivamente. Por ejemplo, un objeto cuya clase es &lt;i&gt;GrupoDeImágenes&lt;/i&gt; podría contener un &lt;i&gt;Cuadrado&lt;/i&gt;, un &lt;i&gt;Triángulo&lt;/i&gt; y otro &lt;i&gt;GrupoDeImágenes&lt;/i&gt;, este grupo de imágenes podría contener un &lt;i&gt;Círculo&lt;/i&gt; y un &lt;i&gt;Cuadrado&lt;/i&gt;. Posteriormente, a este último grupo se le podría añadir otro &lt;i&gt;GrupoDeImágenes&lt;/i&gt;, generando una estructura de composición recursiva en árbol, por medio de muy poca codificación y un diagrama sencillo y claro.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/foward/SOTyeRZ1GaI/AAAAAAAAAM0/FsHQfS9QDtQ/s1600-h/clip_image012%5B1%5D%5B2%5D.jpg"&gt;&lt;img title="clip_image012[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="110" alt="clip_image012[1]" src="http://lh6.ggpht.com/foward/SOTyfLjxTGI/AAAAAAAAAM4/UmIgpRHWTp8/clip_image012%5B1%5D_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name="_Toc201998054"&gt;Adapter Pattern&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El patrón adaptador, como su propio nombre nos puede hacer ver, se usa para convertir el interface de una clase a la de otra.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Implementación:&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En otras palabras, un adaptador es típicamente implementado utilizando herencia múltiple, al crear una subclase del adaptador que herede los métodos privados y, permitiendo que herede además, la interfaz pública de las clases que definen la interfaz requerida.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="_Toc201998055"&gt;Conclusiones&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Se ha demostrado con este informe que la mayoría de las patentes de software y la implementación de nuevos principios pueden ayudar a formar una nueva matriz y generar la base para una nueva investigación para una Matriz totalmente limpia solo para software. Es así como el autor Darell Mann ha introducido una investigación importante respecto a este tema, por lo que un próximo trabajo estaría en crear y formar Triz para el software implementando nuevas matrices y generando nuevas soluciones con patentes de software innovadoras.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="_Toc201998056"&gt;Referencias&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;b&gt;http://www.systematic-innovation.com&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Ikovenko, S., ‘Laws Of Engineering System Evolution In Software Development’,keynote paper at TRIZ Centrum, 3rd European TRIZ-Conference, ETH Zurich, March 2003.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Karasik, Y., editorial comment, Anti-TRIZ Journal, Vol.2, No.2, and private email correspondence, 8 September 2004.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;[Kev-01] Rea, K., ‘TRIZ and Software - 40 Principle Analogies, Partes 1 and 2’, TRIZ Journal, Septiembre y Noviembre 2001. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., ‘Hands-On Systematic Innovation’, CREAX Press, June 2002.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Espejo, R., Harnden, R., ‘The Viable System Model’, John Wiley &amp;amp; Sons, New York, 1989.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., ‘Hands-On Systematic Innovation For Business &amp;amp; Management’, IFR Press, August 2004.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., ‘TRIZ For Software Engineers’, IFR Press, October 2004.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., Dewulf, S., Zlotin, B., Zusman, A., ‘Matrix 2003: Updating The TRIZ Contradiction Matrix’, CREAX Press, Belgium, July 2003.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., ‘Comparing The Classical And New Contradiction Matrix, Part 2 – Zooming In’, TRIZ Journal, July 2004.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Paulk, M.C., Weber, C.V., Garcia, S.M., Chrissis, M.B., Bush, M., ‘Key Practices Of The Software Maturity Model’, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pennsylvania.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., Dewulf, S., ‘Evolutionary Potential In Technical And Business Systems’, TRIZ Journal, June 2002.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Mann, D.L., ‘Ideality And Self-X’, paper presented at 1st ETRIA TRIZ Future Conference, Bath, November 2001.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Rea, K., ‘Applying TRIZ to Software Problems’, TRIZ Journal, October 2002.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="_Toc201998057"&gt;Anexos&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SOTyfmT9KMI/AAAAAAAAAM8/0VFzZiwfHIw/s1600-h/clip_image014%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image014[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="clip_image014[1]" src="http://lh6.ggpht.com/foward/SOTygTcctXI/AAAAAAAAANA/IUwZ3F4TOqs/clip_image014%5B1%5D_thumb.gif?imgmax=800" width="190" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Resumen, Analogía 40 principios de Inventiva TRIZ (1-20).&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/foward/SOTygzLMx-I/AAAAAAAAANE/mGbd5l0NgQs/s1600-h/clip_image016%5B1%5D%5B2%5D.gif"&gt;&lt;img title="clip_image016[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="clip_image016[1]" src="http://lh4.ggpht.com/foward/SOTyhX3CV0I/AAAAAAAAANI/yWJaywN6pmY/clip_image016%5B1%5D_thumb.gif?imgmax=800" width="205" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Resumen, Analogía 40 principios de Inventiva TRIZ (21-40).&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name="_Toc201998058"&gt;Patentes en el software&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Patentar una idea o un producto no es algo nuevo, es más, ésta se lleva a cabo hace mucho tiempo, si bien en algunos casos puede ser vista como una medida arbitraria, también premiar de alguna forma al inventor de un producto u objeto que añada funcionalidad a alguno existente, o éste tenga funcionalidad por si sólo.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Una patente, al igual que un derecho de autor (copyright), entrega a un autor un derecho exclusivo o monopólico respecto a su creación o invención intelectual.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El problema nace al afirmar que está sujeto a patente y que no.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Por ejemplo, el autor de un libro tiene el derecho de autor respecto a éste, ese derecho le otorga protección literaria como artística sobre su obra, pero es de un índole más estético. Con esto nos referimos a que el uso de frases o el argumento de la obra está protegido, tanto para su copia como reproducción, pero no así el género de ésta. Osea, puede tener derecho sobre su obra, pero no sobre el género “crimen/suspenso”, esto permite que existan más escritores que se dediquen a escribir obras de ésa índole, y protege al autor de una copia.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Dentro de las cosas no patentables están por ejemplo; variedades vegetales o animales, inventos en biotecnología y microbiología, productos farmacéuticos y medicamentos esenciales en la lista de la OMS, descubrimientos, teorías científicas ni métodos matemáticos, descubrimiento de materias existentes en la naturaleza, etc.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El software cae en el medio de la polémica, y es a su vez un caso emblemático.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Si bien existen miles de patentes de software, existe un gran número de detractores de éstas, haciendo que en Europa se lleve discutiendo durante varios años el si es posible o no patentar el software.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Respecto al tema que nos atañe, si bien existen grandes cantidades de productos de software patentados, también existe un número mayor de productos que no lo están, siendo un tema complicado y delicado la patentabilidad o no.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Existen a nivel internacional distintas oficinas que conceden patentes y las administra.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Entre éstas está la Oficina Europea de Patentes (OEP), quien presenta una gran cantidad de detractores respecto a nuestro tema. En el caso de Estados Unidos, la práctica de patentar software es realizada comúnmente.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finalmente en éste sentido, si bien existe una gran controversia, respecto a la patentabilidad o no del software, en éstos momentos, existen una gran cantidad de patentes, lo que permitiría avanzar en el análisis de éstas, trabajo ya iniciado por Darrel Mann, y formular finalmente una teoría de TRIZ pero aplicada directamente al desarrollo o la búsqueda de innovación en el software.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr align="left" width="33%" size="1" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="#_ftnref1_8657" name="_ftn1_8657"&gt;[1]&lt;/a&gt; Ikovenko, S, “Laws of Engineering System Evolution In Software Development”,·3rd European TRIZ- Conference, ETH Zurich, March 2003.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="#_ftnref2_8657" name="_ftn2_8657"&gt;[2]&lt;/a&gt; Karasik, Y., editorial comment, Anti-TRIZ Journal, Vol.2, No.2, and private email correspondence, 8 September 2004.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="#_ftnref3_8657" name="_ftn3_8657"&gt;[3]&lt;/a&gt; Rea, K., ‘TRIZ and Software - 40 Principle Analogies, Parts 1 and 2’, TRIZ Journal, September and November 2001.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="#_ftnref4_8657" name="_ftn4_8657"&gt;[4]&lt;/a&gt; Mann, D.L., ‘Hands-On Systematic Innovation’, CREAX Press, June 2002.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="#_ftnref5_8657" name="_ftn5_8657"&gt;[5]&lt;/a&gt; Mann, D.L., Dewulf, S., Zlotin, B., Zusman, A., ‘Matrix 2003: Updating The TRIZ Contradiction Matrix’, CREAX Press, Belgium, July 2003.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-9193259477477799441?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/9193259477477799441/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=9193259477477799441' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/9193259477477799441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/9193259477477799441'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/triz-para-software-triz-for-software.html' title='TRIZ para Software ( TRIZ for Software)'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh3.ggpht.com/foward/SOTyZ_VvzyI/AAAAAAAAAMQ/YPB2gVnt94M/s72-c/clip_image002%5B1%5D_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-307325575354779335</id><published>2008-10-02T09:05:00.001-07:00</published><updated>2008-10-10T19:09:32.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Metodología TRIZ</title><content type='html'>&lt;p&gt;&lt;b&gt;Resumen&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; es una teoría sobre la cual se ha desarrollado una metodología, un conjunto de herramientas basados en modelos para la generación de ideas y soluciones innovadoras para resolver problemas; proveyendo de herramientas y métodos para usarse en formulación de problemas, análisis de sistemas, entre otros. Respecto a lo que aquí compete este documento tiene por objeto proporcionar un análisis y una comprensión del método &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; a fin de aportar ideas a fin de esclarecer el funcionamiento de esta última para asegurar una interpretación y una implementación futura de manera adecuada.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;1 Introducción.&lt;/h3&gt;  &lt;p&gt;TRIZ es el acrónimo ruso de Teoría para la Resolución de Problemas Inventivos. A grandes rasgos TRIZ es un método sistemático para incrementar la creatividad, basado en el estudio de los modelos de evolución de patentes y en otros tipos de soluciones a problemas. Donde independientemente de la forma de como se resuelven los problemas ya sea de forma intuitiva y/o estructurada, encontrarán que el método les proporciona ideas adicionales y en el caso contrario encontrarán que les proporciona estructuras adicionales con el fin de las personas que resuelven los problemas encuentren soluciones totalmente innovadoras e ingeniosas.&lt;/p&gt;  &lt;p&gt;Este método surge del análisis que inició y consolidó Genrich S. Altshuller y que sus discípulos han continuado hasta el estudio de más de 2,5 millones de patentes de todo el mundo. Basándose en la lógica y los datos, y no la intuición, lo que hace que el equipo del proyecto tenga la capacidad para resolver estos problemas con creatividad.&lt;/p&gt;  &lt;h3&gt;2 Descripción.&lt;/h3&gt;  &lt;p&gt;Hemos podido observar que el razonamiento discurre por unos caminos ya establecidos por nuestro cerebro y por ende siendo muy difícil que surjan ideas o soluciones novedosas. Así pues para la invención de una solución a partir de una necesidad y/o para resolución de un problema, generalmente se aplica el conocimiento que dominamos. Por lo que si la solución ideal al problema cae fuera de nuestro dominio o experiencia propia, resulta imposible acertar con ella.&lt;/p&gt;  &lt;p&gt;Una manera es que se tiende a imaginar y a evaluar distintas alternativas a modo de ensayo/error. Donde dicha forma depende del azar para encontrar antes o después una solución, por consiguiente es aquí donde Altshuller con su metodología &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; trata de evitar y/o evita esto último con su sistema.&lt;/p&gt;  &lt;p&gt;Bajo esta premisa &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; se inicia con la hipótesis de que hay principios universales de la creatividad. Si estos principios pudieran ser identificados y codificados, podrían ser enseñado a la gente para hacer que el proceso de creatividad al encontrar una solución sea más previsible. En otras palabras como se refiere en el medio &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; funciona bajo la premisa: “&lt;i&gt;Alguien en algún lugar ya ha resuelto este problema (o uno muy similar a él.)...La creatividad radica en que ahora la búsqueda de esa solución y su adaptación a al problema en particular”.&lt;/i&gt;Es decir si la solución existe adecuarla de manera creativa a mi problema&lt;i&gt; &lt;/i&gt;en cuestión. &lt;/p&gt;  &lt;p&gt;Gráficamente esto se ve representado de la siguiente manera:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/foward/SOTxXWMYU_I/AAAAAAAAAME/5xpB3SU3Sog/s1600-h/clip_image002%5B3%5D.gif"&gt;&lt;img title="clip_image002" style="display: inline" height="103" alt="clip_image002" src="http://lh5.ggpht.com/foward/SOTxX7NZDZI/AAAAAAAAAMI/EAYwNfH40pY/clip_image002_thumb.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figura 1. Método Resolución, &lt;i&gt;TRIZ.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;En la figura anterior se puede observar que las flechas representan la transformación de una formulación del problema o solución a otro. Estas últimas representan el análisis tangente de los problemas y la utilización de la bases de datos de TRIZ. Exponiendo el pensamiento por analogía a desarrollar la solución específica. Este paso de cuatro enfoques de la resolución de problemas que fuerza al usuario a superar los prejuicios inherentes psicológicos suele ser el fundamento psicológico de las técnicas de ideación bajo el cual trabaja la metodología &lt;b&gt;&lt;i&gt;TRIZ.&lt;/i&gt;&lt;/b&gt; Es decir Aquí, el problema particular es elevado hacia un problema estándar de naturaleza análoga o similar para encontrar la solución respectiva.&lt;/p&gt;  &lt;p&gt;Por ejemplo, Supongamos que necesitemos diseñar un dispositivo rotatorio cuya salida es 100 rpm, a partir de un motor eléctrico de CA 2300 rpm. &lt;/p&gt;  &lt;p&gt;El problema estándar análogo es como reducir la velocidad del motor. &lt;/p&gt;  &lt;p&gt;La solución estándar análoga es un reductor de velocidad o caja de transmisión a engranaje, luego este reductor será diseñado con apropiadas dimensiones, peso, torque, etc.&lt;/p&gt;  &lt;p&gt;Sin embargo el problema radica en problemas inventivos, es decir, donde la solución causa otros problemas, es decir que cuando algo se mejora, otras condiciones empeoran, cayendo en una contradicción técnica. Dependiendo de la complejidad del problema, el número de prueba y error variará enormemente. &lt;/p&gt;  &lt;p&gt;No obstante si la solución cae dentro de nuestro conocimiento, el número de prueba y error será algo menor pero aun así no deja de ser un método irracional.&lt;/p&gt;  &lt;p&gt;Es decir &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; se sustenta, si la solución no se alcanza se debe ser capaz de buscar más allá de su experiencia y conocimiento, es decir deberá incursionar en otros campos. Luego el número de pruebas crecerá dependiendo de lo bien que pueda manejar las herramientas psicológicas como el brainstorming, intuición y la creatividad. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;No obstante el problema más patente y/o la desventaja más visible que presenta &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; es que la mayoría de estas herramientas psicológicas tales como la experiencia y la intuición, &lt;b&gt;&lt;i&gt;son difíciles de transmitir a otra persona dentro de una&lt;/i&gt;&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; organización ( sección 2.1,condiciones - &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;ü&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;)&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;u&gt;.&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Ya que las soluciones consideradas están dentro de la propia experiencia de uno, sin embargo se puede extrapolar en buscar en tecnologías alternativas para desarrollar nuevos conceptos de solución que sean familiares a los demás participantes dentro de la organización. Ejemplo: un ingeniero mecánico puede encontrar una solución a su problema fuera del campo de su experiencia.&lt;/p&gt;  &lt;h4&gt;&lt;i&gt;2.1 &lt;/i&gt;Condiciones de &lt;i&gt;TRIZ&lt;/i&gt;&lt;/h4&gt;  &lt;p&gt;Su autor Geinrich Altshuller, construye una teoría bajo la cual TRIZ se debe apoyar bajo las siguientes condiciones:&lt;/p&gt;  &lt;p&gt;· Ser un procedimiento sistemático paso a paso.&lt;/p&gt;  &lt;p&gt;· Ser una guía a través de amplios espacios de solución para dirigir los pasos a la solución ideal.&lt;/p&gt;  &lt;p&gt;· Ser repetitible y confiable y no dependiente de las herramientas psicológicas. &lt;/p&gt;  &lt;p&gt;· Debe permitir el acceso al cuerpo del conocimiento inventivo.&lt;/p&gt;  &lt;p&gt;· Debe permitir agregar elementos al cuerpo de conocimiento inventivo.&lt;/p&gt;  &lt;p&gt;· Ser lo suficientemente amigable para los diseñadores siguiendo la aproximación general para la resolución de los problemas inventivos. (ü)&lt;/p&gt;  &lt;p&gt;Además Altshuller, menciona que para alcanzar una solución ideal se deben eliminar las soluciones de compromiso o trade off, es decir eliminar totalmente las causas. &lt;/p&gt;  &lt;p&gt;Donde todas estas patentes inventivas se clasificaron en 5 niveles:   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&lt;b&gt;NIVEL&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;&lt;b&gt;GRADO NOVEDAD&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;&lt;b&gt;Nº PATENTES&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;&lt;b&gt;FUENTE CONOCIMIENTO&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Solución Aparente&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;32%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;Conocimiento Personal.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Mejora moderada&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;45%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;Conocimiento dentro de la empresa.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Mejora importante&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;18%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;Conocimiento dentro del sector.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Concepto Nuevo&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;4%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;Conocimiento fuera del sector.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Descubrimiento&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="156"&gt;           &lt;p&gt;1%&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="240"&gt;           &lt;p&gt;Todo el conocimiento.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Altshuller se dio cuenta de que la mayoría de problemas ( niveles 1 y 2 ) se podían resolver aplicando correctamente los conocimientos habituales , sin embargo los &lt;b&gt;niveles 3 y 4, &lt;/b&gt;cuya solución está fuera del conocimiento habitual o implican una percepción novedosa, podrían beneficiarse de TRIZ.&lt;/p&gt;  &lt;p&gt;Finalmente generalmente un 90 % de los problemas que se encaran fueron ya resueltos en algún lugar bajo un cierto tipo de conocimiento, de modo que si se pudiese seguir un camino hacia la solución ideal, arrancando desde el nivel más bajo de su experiencia y conocimiento personal y llegar a trabajar hacia los niveles más altos, la mayoría de las soluciones podrían ser deducidas rápido desde la Gestión de los Conocimientos.&lt;/p&gt;  &lt;p&gt;Estos Conocimientos son las patentes que tanto menciona Altshuller y que son indispensables pare el desarrollo y descubrimientos de soluciones en la actualidad bajo &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt; exponiéndose bajo base teórica con ciertos postulados de los cuales los tres principales son:&lt;/p&gt;  &lt;p&gt;1. “La mayoría de los sistemas hechos por el hombre evolucionan siguiendo pautas predeterminadas, en vez de modo aleatorio. Estas pautas se pueden conocer a través del estudio de la evolución de varios sistemas y el conocimiento adquirido y se las puede utilizar para acelerar la evolución de otros sistemas”.&lt;/p&gt;  &lt;p&gt;2. “La mayoría de los sistemas técnicos que existen tienen recursos redundantes, es decir, tienen mas recursos de los necesarios para realizar las funciones para las que fueron concebidos. Como consecuencia, casi todos los sistemas pueden realizar su función de forma más efectiva o realizar funciones adicionales, sin necesidad de ser modificados”. &lt;/p&gt;  &lt;p&gt;3. “Se pueden encontrar formas comunes de resolver problemas o de mejorar un sistema, basadas en las etapas de evolución predeterminadas, mediante el análisis histórico de las invenciones. Esto permite que el conocimiento para la innovación pueda ser recogidos y transferidos”&lt;/p&gt;  &lt;h3&gt;3 Área de Aplicación.&lt;/h3&gt;  &lt;p&gt;Dentro de las actividades en que se desarrollan los procesos de creación de ideas o soluciones nuevas es necesario introducir actividades que permitan incorporar planteamientos innovadores. Las acciones innovadoras podrán estar dentro del ámbito de modificaciones, las innovaciones increméntales o las radicales dependiendo del alcance y dimensión del proceso específico de un producto y/o actividad determinada. No se contemplan las acciones innovadoras propias de procesos de producción, montaje y calidad por ser de tipo horizontal y no específico de un tipo de producción concreto.&lt;/p&gt;  &lt;p&gt;Por lo que su área de aplicación abarca cualquier ámbito donde se requieren soluciones innovadoras a problemas de cualquier índole en cuestión. Donde en las fases iniciales del proceso es dónde las acciones innovadoras deben estar potenciadas y apoyadas por técnicas y metodologías específicas (&lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt;) que deben, por lo general, desarrollarse de manera simultánea, aunque las valoraciones y conclusiones, además de efectuarse de manera individualizada, deberán relacionarse globalmente interrelacionando conceptos y orientaciones para confirmar y obtener líneas de acción en el desarrollo, evitando al máximo la incertidumbre y el riesgo.&lt;/p&gt;  &lt;p&gt;Áreas más destacadas de aplicación de la metodología &lt;b&gt;&lt;i&gt;TRIZ&lt;/i&gt;&lt;/b&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Reducir costes.&lt;/li&gt;    &lt;li&gt;Simplificar el producto&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;- Reducir número de piezas y subconjuntos.&lt;/p&gt;  &lt;p&gt;- Facilitar el montaje, desmontaje y reparaciones.&lt;/p&gt;  &lt;p&gt;· Mejorar las prestaciones de la función.&lt;/p&gt;  &lt;p&gt;· Permitir elevar los niveles de calidad y acabados.&lt;/p&gt;  &lt;p&gt;· Incorporar tecnologías no aplicadas hasta ese momento en el sector.&lt;/p&gt;  &lt;p&gt;· Dar respuesta a las necesidades del consumidor mediante una solución de producto radicalmente diferente.&lt;/p&gt;  &lt;p&gt;· Benchmarking. &lt;/p&gt;  &lt;p&gt;· Análisis de tendencias.&lt;/p&gt;  &lt;p&gt;· Estudios económicos, antropológicos y sociales.&lt;/p&gt;  &lt;p&gt;· Estudios mercados y análisis de productos.&lt;/p&gt;  &lt;h3&gt;4 Referencias Bibliográficas.&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.triz-journal.com/"&gt;http://www.triz-journal.com/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.triz.net/"&gt;http://www.triz.net/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;“TRIZ, La metodología mas moderna para inventar o innovar tecnológicamente de manera sistemática”&lt;/i&gt;; Enrique Rico Arzate, 2004.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275640842700569697-307325575354779335?l=panchoriveros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panchoriveros.blogspot.com/feeds/307325575354779335/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4275640842700569697&amp;postID=307325575354779335' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/307325575354779335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275640842700569697/posts/default/307325575354779335'/><link rel='alternate' type='text/html' href='http://panchoriveros.blogspot.com/2008/10/metodologa-triz.html' title='Metodología TRIZ'/><author><name>Francisco Riveros Escobar</name><uri>http://www.blogger.com/profile/16556281442876671130</uri><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://lh5.ggpht.com/foward/SOTxX7NZDZI/AAAAAAAAAMI/EAYwNfH40pY/s72-c/clip_image002_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275640842700569697.post-538151693222610169</id><published>2008-10-02T09:03:00.001-07:00</published><updated>2008-10-10T19:09:32.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Articulos Escritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Investigacion'/><title type='text'>Aplicación de TRIZ en diversas áreas</title><content type='html'>&lt;h3 align="justify"&gt;&lt;a name="_Toc196235336"&gt;Introducción&lt;/a&gt;&lt;/h3&gt;  &lt;p align="justify"&gt;La resolución y/o búsqueda de una solución óptima a un problema es un acto realizado día a día por todos los seres humanos, desde enigmas domésticos hasta grandes problemas ingenieriles o técnicos. &lt;/p&gt;  &lt;p align="justify"&gt;El problema radica en que generalmente el método utilizado en la búsqueda de la solución, o soluciones, no es el más indicado, llegando incluso a ser una barrera más que una ayuda en algunos casos.&lt;/p&gt;  &lt;p align="justify"&gt;En la actualidad el avance de la tecnología y el crecimiento de la empresas, y la competencia entre ellas, produce que se utilicen métodos que ayuden en el aumento de productividad y la disminución de los costos. Es así que BPM, outsourcing, six sigma, etc., son opciones que pueden tomar las empresar para realizar lo antes mencionado y mucho más. Pero siempre es necesario mejorar e innovar en los métodos utilizados.&lt;/p&gt;  &lt;p align="justify"&gt;Tomando en cuenta lo anterior, existe la necesidad de una pauta o teoría que nos indique los pasos necesarios a seguir en la búsqueda de una solución o la optimización de una, evitando pasos innecesarios y dejando de lado las limitaciones impuestas por nosotros mismos al dominio de éstas.&lt;/p&gt;  &lt;p align="justify"&gt;Es así que aparece TRIZ en el horizonte como una teoría sólida y utilizada en la actualidad en la búsqueda de soluciones a distintos tipos de problemas pudiendo ser aplicadas con tal de innovar en los métodos antes mencionados, siendo el fin de éste papper el de entregar al lector una introducción en la aplicación de TRIZ a BPM, Outsourcing y six sigma.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3 align="justify"&gt;&lt;a name="_Toc196235337"&gt;Aplicación de TRIZ&amp;#160; a Outsourcing en Tecnología de la Información     &lt;br /&gt;&lt;/a&gt;Introducción&lt;/h3&gt;  &lt;p align="justify"&gt;Outsourcing o subcontratación, también llamado &lt;b&gt;tercerización&lt;/b&gt; o &lt;b&gt;externalización&lt;/b&gt;, es el proceso económico en el cual una empresa determinada mueve o destina los recursos orientados a cumplir ciertas tareas, a una empresa externa, por medio de un contrato. Esto se da especialmente en el caso de la &lt;i&gt;subcontratación&lt;/i&gt; de empresas especializadas. Para ello, pueden contratar sólo al personal, en cuyo caso los recursos los aportará el cliente (instalaciones,&amp;#160; hardware y software), o contratar tanto el personal como los recursos. Por ejemplo, una compañía dedicada a las demoliciones puede subcontratar a una empresa dedicada a la evacuación de residuos para la tarea de deshacerse de los escombros de las unidades demolidas, o una empresa de transporte de bienes puede subcontratar a una empresa especializada en la identificación o empaquetación.    &lt;br /&gt;La idea de este punto es mostrar como varios de los componentes de la metodología TRIZ pueden ser aplicados en la ingeniería de software y en modelos de negocio de la industria de outsourcing orientado a la TI.&lt;/p&gt;  &lt;h4 align="justify"&gt;   &lt;br /&gt;&lt;a name="_Toc196235338"&gt;Aplicando TRIZ&lt;/a&gt;&lt;/h4&gt;  &lt;p align="justify"&gt;Como se sabe, TRIZ fue desarrollado por Genrich Altshuller quien desarrollo un método para encontrar nuevas soluciones a problemas de innovación, es así que junto a sus colegas analizaron miles de patentes con tal de generar la metodología. Uno de los conceptos básicos de TRIZ es que las soluciones innovadoras deben remover contradicciones técnicas. Por ejemplo, los diseñadores de sistemas de información encontraron contradicciones, como la mejora de la calidad frente a la programación de nuevas características, mejora del manejo de memoria frente a la mejora de la facilidad de diseño. Compañías de outsourcing también saben de contradicciones en la gestión- mantener el costo de los sueldos en aumento cuando los beneficios marginales están bajando o cómo hacerlo bien cuando sus clientes no los están haciendo.   &lt;br /&gt;Altshuller descubrió que los principios de innovación que se pueden encontrar en una industria pueden ser aplicados a otra, es de esta forma que TRIZ se ha esparcido en un gran espectro de industrias, incluso un gran número de las que figuran dentro del &lt;i&gt;Fortune 500 &lt;/i&gt;como&lt;i&gt; P&amp;amp;G y Ford &lt;/i&gt;u otras como&lt;i&gt; Samsung&lt;/i&gt; lo estan utilizando. Tal como hemos visto, TRIZ es una tecnología ya madura y en plena utilización, por lo tanto vale la pena preguntarse como utilizarla dentro del outsourcing.    &lt;br /&gt;Tal como lo definimos anteriormente, outsourcing es una palabra que denota un proceso mediante el cual las tareas pueden ser ejecutadas por una entidad externa a un costo inferior y con un menor tiempo para el mercado. Esencialmente, la externalización a evolucionado debido a una contradicción técnica en el software (es decir, el incremento de los beneficios y la calidad mientras se reducen los costos de mano de obra). Outsourcing comenzó principalmente en la industria de TI, debido a la facilidad de transportar bits y bytes en lugar de los bienes materiales y es lenta pero segura, haciendo incursiones en otras industrias.&lt;/p&gt;  &lt;p align="justify"&gt;L
