Modulo Grado11

9,019 views

Published on

Modulo informática Grado11

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
9,019
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
99
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Modulo Grado11

  1. 1. UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍAS DEPARTAMENTO DE OPERACIONES Y SISTEMAS PROGRAMA DE INGENIERÍA INFORMÁTICA INFORMÁTICA 1 (Algoritmos con Java) MATERIAL RECOPILADO POR LOS PROFESORES J. ANTONIO LEMOS B. Y EDUARDO VICTORIA Z. SANTIAGO DE CALI, FEBRERO DE 2007Informática 1. Versión 1.3 Enero de 2010 1.
  2. 2. ASIGNATURA: INFORMÀTICA 1CODIGO: 532219CREDITOS: 3PRERREQUISITOS: (Ninguno)CARACTERÍSTICAS: HOMOLOGABLE, VALIDABLEFACULTAD: INGENIERÍAPROGRAMA: INGENIERÎA INFORMÁTICA, ELECTRICA, MECANICA, ELECTRÓNICA, MECATRÓNICA, BIOMÉDICA, INDUSTRIAL, AMBIENTAL, MULTIMEDIADEPARTAMENTO QUE OFRECE: CIENCIAS DE LA INFORMACIÓNAREA: INFORMÂTICAPERIODO ACADÉMICO: 2007 – 1 ( Enero – Mayo )I. OBJETIVO GENERAL Capacitar al estudiante en el diseño e implementación de algoritmos computacionales, utilizando los conceptos básicos de la algoritmia, e introduciéndolo en el estudio de la programación orientada a objetos.II. OBJETIVOS ESPECÍFICOS • Identificar los sistemas básicos de numeración y sus operaciones fundamentales. • Comprender las operaciones básicas de la lógica booleana. • Modelar procesos mediante técnicas algorítmicas. • Reconocer y aplicar correctamente las diferentes estructuras de decisión y de repetición en programación de computadores. • Conocer y apropiar el paradigma Orientado a Objetos y su aplicación en la programación.III. CONTENIDO PROGRAMÁTICO UNIDAD 1 – Algoritmos 1.1 Procedimiento 1.2 Ciclo de Diseño 1.3 Definición 1.4 Propiedades de los Algoritmos 1.5 Representación de los datos 1.6 Estructuras secuenciales 1.7 Estructuras condicionales 1.8 Estructuras de repeticiónInformática 1. Versión 1.3 Enero de 2010 2.
  3. 3. 1.9 Ejercicios resueltos 1.10 Ejercicios propuestos UNIDAD 2 – Introducción a Java 2.1 Historia de Java 2.2 Características básicas de Java 2.2.1 Orientado a objetos puro 2.2.2 Simple 2.2.3 Distribuido 2.2.4 Robusto 2.2.5 Seguro 2.2.6 Arquitectura Neutral 2.2.7 Portable 2.2.8 Interpretado 2.2.9 Alto desempeño 2.2.10 Multihilos 2.2.11 Dinámico 2.3 La estructura de Java 2.4 Instalación de Java 2.5 Construcción básica de una aplicación 2.5.1 Edición 2.5.2 Compilación 2.5.3 Carga 2.5.4 Verificación 2.5.5 Ejecución UNIDAD 3 - Tipos de datos, variables y Operadores (Java) 3.1 Variables 3.1.1 Nombres de Variables 3.2 Palabras reservadas 3.3 Tipos de datos 3.3.1 Tipos Primitivos de Datos 3.3.2 Tipos Referencia a Objeto 3.4 Declaración e inicialización de las variables 3.5 Promoción de datos (Casting) 3.5.1 Conversión automática de Java 3.5.2 Conversión de tipos incompatibles 3.6 Visibilidad y vida de las variables 3.7. Operadores de java 3.7.1 Operadores aritméticos 3.7.2 Operador módulo ( % ) 3.7.3 Operadores de asignación 3.7.4 Operadores unarios 3.7.5 Operador instanceofInformática 1. Versión 1.3 Enero de 2010 3.
  4. 4. 3.7.6 Operador condicional ?: 3.7.8 Operadores de incremento y decremento 3.7.9 Operadores relacionales 3.7.10 Operadores lógicos boléanos 3.7.11 Operador de concatenación de cadenas de caracteres (+) 3.7.12 Operadores que actúan a nivel de bits 3.8 Precedencia y asociatividad de los operadores UNIDAD 4 - Sentencias de control en Java 4.1 Estructura Secuencial 4.1.1 Salida de datos estándar 4.1.2 Entrada de datos estándar 4.2 Sentencias de decisión o selección 4.2.1 Selección simple ( if ) 4.2.2 Selección doble ( if – else ; if – else - if ) 4.2.3 Selección múltiple ( switch ) 4.3 Sentencias de Repetición ( ciclos o bucles) 4.3.1 Ciclo para ( for ) 4.3.2 Ciclo mientras ( while ) 4.3.3 Ciclo haga mientras ( do – while ) UNIDAD 5 – Métodos 5.1 Definición de métodos 5.2 Paso de Parámetros 5.3 Llamado a Métodos Apendice A – Algunos conceptos de la programación orientada a objetos (P.O.O)IV. METODOLOGÍA Durante el curso se emplearán las siguientes Métodos Pedagógicos: • Clase: Mediante la cual el profesor da explicaciones sobre algunos temas, resuelve interrogantes y aclara dudas. Los estudiantes, por su parte, escuchan las exposiciones, toman notas, preguntan y participan opinando y aclarando dudas. • Estudio Independiente: El estudiante de manera independiente realiza lecturas, tareas, consulta libros, realiza composiciones escritas y ejercicios. • Taller: En el cual se realizan ejercicios de práctica de los conceptos revisados en el curso. • Tutoría: Donde profesor y estudiante trabajan sobre el proceso, las dificultades y los problemas que va teniendo el estudiante: le ayuda a interpretar lo que está ocurriendo. Trabajos de Consulta: 1. Sistemas de Numeración. Sistema Binario, Octal, Hexadecimal. Conversión entre sistemas. Suma, Resta, Multiplicación y División en Sistema Binario.Informática 1. Versión 1.3 Enero de 2010 4.
  5. 5. 2. Sistemas lógicos. Tautología y contradicciones, equivalencia lógica, enunciados condicional y bicondicional, y argumentos 3. Programación Orientada a Objetos. Historia, Características, Aspectos Básicos. Historia de JAVA.V. EVALUACIÓN La evaluación del curso considerará los siguientes momentos evaluativos: • Primer Examen Parcial • Segundo Examen Parcial • Examen Final (acumulativo) • Talleres • Prácticas • Quices • Trabajos de ConsultaVI. REFERENCIAS BIBLIOGRÁFICAS 1. Área de Informática UAO, Módulo de Informática 1, Publicaciones UAO. 2. CEBALLOS, Francisco J., JAVA 2 Curso de Programación. Ed. Alfaomega. Ra–Ma. 2000. 3. Joyanes Aguilar Luis & Zahonero Martínez Ignacio, “Programación en Java 2 – Algoritmos, Estructuras de Datos y Programación orientada a Objetos”, Ed. McGrawHill, 2002. 4. DEITEL, H.M., DEITEL, P. J. How to program Java. 3ª Edición. Ed. Prentice Hall. 2000. 5. FROUFE, Augustín. JAVA2 Manual de Usuario y Tutorial. 2ª Edición Ed. Alfa Omega 2000. 6. WU, Thomas C. Introducción a la programación orientada a objetos con Java. Ed. Mc Graw Hill. España. 2000. 7. ARNOW, David. WEISS, Gerald, Introducción a la programación con Java. Un enfoque orientado a objetos. Ed. Addison Wesley. España.2001 ELECTRÓNICAS 1. Descargar el software – J2SE, del sitio web: ) http://java.sun.com/javase/downloads/index.jsp 2. Descargar el editor – NetBeans del sitio web: http://www.netbeans.org/downloads/start.html?platform=windows&lang=en&option=all&versi on=6.7.1 3. Documentación de JAVA (JDK 1.6) http://java.sun.com/javase/downloads/index.jsp 4. Tutorial de Java http://java.sun.com/docs/books/tutorial/ 5. Free Electronic Books in Java and C++: http://www.ibiblio.org/pub/docs/books/eckel/Informática 1. Versión 1.3 Enero de 2010 5.
  6. 6. 6. Aprenda Java como si estuviera en primero http://www.abcdatos.com/tutoriales/tutorial/l7041.html 7. Tutorial de Java (Augustin Froufe) http://www.cica.es/formacion/JavaTut/ 8. Java en Castellano http://programacion.com/java/FUENTES DE DONDE SE RECOPILÓ EL MATERIAL PARA LA ELABORACIÓN DEESTE MÓDULO DE INFORMÁTICA I.- Universidad de Valencia, España, Depto. de Informática http://informatica.uv.es/docencia/fguia/TI/Libro/PDFs/CAPI4.pdf- Universidad de Oviedo,España, Depto. de Informática Profesor Daniel Gayo. http://di002.edv.uniovi.es/~dani/asignaturas/- Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros Industriales de San Sebastián. http://mat21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf- Matemáticas para Computación, Seymour Lipschutz, McGraw – Hill, 1992Informática 1. Versión 1.3 Enero de 2010 6.
  7. 7. UNIDAD 1. ALGORITMOS1.1 Procedimiento de Datos1.2 Ciclo de Diseño • Requerimiento - Características que se desea que posea un sistema o un software. • Diseño - proceso previo de configuración mental en la búsqueda de una solución en cualquier campo. • Especificación - documento técnico oficial que establece de forma clara todas las características, los materiales y los servicios necesarios para producir componentes destinados a la obtención de productos. • Implementación – Traducir a un lenguaje de programación concreto un algoritmo. • Formas y métodos para llevar a cabo algo.Informática 1. Versión 1.3 Enero de 2010 7.
  8. 8. 1.3 Concepto de AlgoritmoDefinición de algoritmo. Etimología del término algoritmoEn general, un algoritmo es una secuencia de instrucciones o pasos que es llevada a cabo de formamecánica y sistemática por un actor que se desenvuelve en un ambiente o entorno dado, para resolverun problema determinado en un tiempo finito.Esa es una definición válida de algoritmo. Otras posibles definiciones son las siguientes:Un algoritmo es un conjunto de instrucciones combinadas de forma adecuada para resolver undeterminado problema en una cantidad finita de tiempo. Cada instrucción es una indicación sencilla yno ambigua.Secuencia de instrucciones o pasos que es llevada a cabo de forma mecánica y sistemática por unactor que se desenvuelve en un ambiente o entorno dado, para resolver un problema determinado enun tiempo finito.Despues de los siguientes ejemplos, el lector debería tener bastante claro qué es un algoritmo, en quéconsiste y dar ejemplos de algoritmos. Ahora, es probable que se esté preguntando de dónde procedeel mismo término, “ALGORITMO”, ¿por qué denominamos “algoritmos” a los algoritmos y no“recetas” o “combinaciones de indicaciones sencillas y no ambiguas...”?El término proviene de Mahommed ibn Musa al-Khowârizmî (Mahommed, hijo de Musa, natural deKharizm), matemático persa del siglo IX; las matemáticas le deben la introducción del sistema denumeración actual y del álgebra.En su libro De numero indiorum (Sobre los números hindúes) proporciona las reglas para realizar lasoperaciones aritméticas (con los nuevos números, por supuesto), dichas reglas se denominaron “reglasde al-Khowârizmî” y, por deformación “algoritmos”, haciéndose extensivo el término a cualquierconjunto de reglas para resolver un problema determinado. Como nota curiosa, un esbozo del rostrode al-Khowârizmî aparece en la portada del clásico libro de Álgebra del Profesor Cubano AurelioBaldor, muy conocido en la Literaura de las Matemáticas Hispanoparlantes.Informática 1. Versión 1.3 Enero de 2010 8.
  9. 9. 1.4 Propiedades de los Algoritmos • Su lógica de construcción debe ser • Independiente del lenguaje • Simplicidad • Definido: sin ambigüedades • Preciso: orden específico de sentencias • Finito: principio y fin • Efectivo: Funciona y funciona de acuerdo a los requerimientosEjemplos de Algoritmos :Ejemplo 1:Elaborar el análisis general que responda a la pregunta: ¿Qué debo hacer para ver la película Avatar?. 1. Ir al cine donde proyectan Avatar. 2. Comprar una entrada. 3. Ver la película. 4. Regresar a casa.Ejemplo 2:Elaborar el análisis para obtener el área de un círculo y la longitud de su circunferencia. 1. Utilizar las fórmulas del área y la circunferencia en función del radio. 2. Las entradas de datos se reducen al dato correspondiente al radio del círculo. 3. Las salidas serán los datos solicitados: área y longitud de la circunferencia.Ejemplo 3:Instrucciones para subir una escalera[...] Las escaleras se suben de frente, pues hacia atrás o de costado resultan particularmenteincómodas. La actitud natural consiste en mantenerse de pie, los brazos colgando sin esfuerzo, lacabeza erguida aunque no tanto tal que los ojos puedan ver los peldaños inmediatamente superiores alque se pisa, y respirando lenta y regularmente. Para subir una escalera se comienza por levantar esaparte del cuerpo situada a la derecha abajo, envuelta casi siempre en cuero o gamuza, y que salvoexcepciones cabe exactamente en el escalón. Puesta en el primer peldaño dicha parte, que paraabreviar llamaremos pie, se recoge la parte equivalente de la izquierda (también llamada pie, pero queno ha de confundirse con el pie antes citado), y llevándola a la altura del pie, se le hace seguir hastacolocarla en el segundo peldaño, con lo cual en éste descansará el pie, y en el primero descansará elpie. Los primeros peldaños son siempre los más difíciles, hasta adquirir la coordinación necesaria.La coincidencia de nombre entre el pie y el pie hace difícil la explicación. Cuídese especialmente deno levantar al mismo tiempo el pie y el pie.Llegando en esta forma al segundo peldaño, basta repetir alternadamente los movimientos hastaencontrarse con el final de la escalera. Se sale de ella fácilmente, con un ligero golpe de talón que lafija en su sitio, del que no se moverá hasta el momento del descenso.Informática 1. Versión 1.3 Enero de 2010 9.
  10. 10. Ejemplo 4:Elaborar Tortilla de patatas a la española (6 personas)Ingredientes:- 2 vasos (de los de agua) de aceite (1/2 litro)- Sal- 8 huevos- 1 kg de patatasSe pelan las patatas, se lavan y se secan con un paño; se parten en dos a lo largo y después se cortanen láminas finitas. Se pone el aceite a calentar en la sartén y se fríen las patatas, moviéndolas de vezen cuando y echándoles un poco de sal.Una vez fritas (más o menos doradas, según gusten), se separan y se ponen a escurrir en un coladorgrande. Se quita el aceite sobrante de la sartén.Aparte se baten los huevos con tenedor y muy fuerte; se pone un poco de sal; en el mismo plato de loshuevos se echan las patatas y se mueven con un tenedor.En una sartén grande (o en dos pequeñas) se ponen 3 cucharadas soperas de aceite para que sólo cubrael fondo. Cuando está caliente se vierte la mezcla de huevos y patatas. Se mueve la sartén por elmango para que no se pegue la tortilla. Cuando se vea que está bien despegada y dorada (esto dependedel gusto de cada cual), se pone una tapadera encima, se vuelca la sartén y se escurre suavemente latortilla otra vez en la sartén. Se vuelve a mover por el mango y cuando esté cuajada (a gusto) se pasa auna fuente redonda y se sirve.Ejemplo 5:Algoritmo “infantil”: Multiplicación de números enterosPara obtener el producto de dos números enteros utilizando lápiz y papel se debe escribir el primerfactor (multiplicando) y, justo debajo y alineado a la derecha, el segundo factor (multiplicador).Se recorren todas las cifras del multiplicador de derecha a izquierda y se operan con cada una de lascifras el multiplicando, también de derecha a izquierda, escribiendo los resultados intermedios enlíneas separadas; cada línea estará desplazada una posición a la izquierda respecto a la líneainmediatamente superior.Una vez se han obtenido todos los resultados intermedios se suman columna a columnaobteniéndose el resultado final.Numerando cada uno de los pasos a seguir en cada uno de los algoritmos, formalizamos un poconuestro lenguaje cotidiano para escribir algoritmos, veamos:Informática 1. Versión 1.3 Enero de 2010 10.
  11. 11. Ejemplo 6:Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda dereemplazo y una llave inglesa.Los pasos del algoritmo son: 1. Inicio. 2. Aflojar los tornillos de la rueda pinchada con la llave inglesa. 3. Ubicar el gato mecánico en su sitio. 4. Levantar el gato hasta que la rueda pinchada pueda girar libremente. 5. Quitar los tornillos y la rueda pinchada. 6. Poner rueda de repuesto y los tornillos. 7. Bajar el gato hasta que se pueda liberar. 8. Sacar el gato de su sitio. 9. Apretar los tornillos con la llave inglesa. 10. Fin.Podríamos modificar este algoritmo, bien sea escribiendo más líneas de detalle ó uniendo algunospasos, y aún así funcionaría para resolver nuestro problema. Esto quiere decir que podemos teneralgoritmos diferentes, con diferente diseño, que resuelven el mismo problema. ¿Cuál de ellos es máseficiente, hablando desde el punto de vista computacional? Ese es tema de otro curso, por elmomento nos debemos concentrar en cuál algoritmo es más claro, cual es más fácil de entender.Ejemplo 7:Un cliente hace un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente,si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario lo rechaza. Elabore elalgoritmo correspondiente.Los pasos del algoritmo son: 1. Inicio. 2. Leer el pedido. 3. Examinar la ficha del cliente. 4. Si el cliente es solvente, aceptar pedido; en caso contrario, rechazarlo. 5. Fin.Ejemplo 8:Averiguar si un número entero positivo es primo o no, dado que conocemos la definición de númeroprimo: un número entero positivo, N, es primo si sólo puede dividirse por si mismo y por la unidad.Un método que nos puede dar la solución sería dividir sucesivamente el número por 2, 3, 4...N, y,según el resultado, podríamos resolver el problema. Un diseño del mismo sería: 1. Inicio. 2. Solicitar el valor del número entero positivo y guardarlo en la variable N 3. Poner X igual a 2 ( X = 2, donde X es una variable que representa a los posibles divisores de N ). 4. Dividir N por X ( o sea, operar N / X ) 5. Si el resultado de N / X es entero, entonces N no es primo ( pues esto indicaría que N es divisible entre X ) y saltar al punto 10; en caso contrario continuar el proceso en el siguiente punto, 6. 6. Incrementar el divisor X en una unidad ( X = X + 1 ) 7. Si X es menor que N saltar al punto 4, en caso contrario continuar el proceso en el siguiente punto, 8.Informática 1. Versión 1.3 Enero de 2010 11.
  12. 12. 8. Declarar que N es primo. 9. Saltar al Fin (punto 11). 10. Declarar que N no es primo. 11. Fin.Como parte del diseño de un algoritmo está la selección de aquél que sea razonablemente aceptable,entre todos los muchos posibles que resuelven el mismo problema (el ejemplo que acabamos de dares claramente mejorable, pues si N no era divisible por 2 no tiene mucho sentido volverse apreguntar si lo es por 4).Durante el diseño es posible y aconsejable, realizar comparaciones entre algoritmos que resuelven elmismo problema. La bondad de un algoritmo puede medirse por dos factores: • El tiempo que se necesita para ejecutarlo. Para tener una idea aproximada de ello, basta con saber el número de instrucciones de cada tipo necesarias para resolver el problema. • Los recursos que se necesitan para implementarlo.Así, una vez diseñado un primer algoritmo, conviene realizar una evaluación del mismo, cuestión aveces nada fácil. Si se decide que éste no es eficiente será necesario o bien diseñar uno nuevo o bienoptimizar el original. Optimizar un algoritmo consiste en introducir modificaciones en él, tendientesa disminuir el tiempo que necesita para resolver el problema o a reducir los recursos que utiliza.Por ejemplo, el algoritmo del número primo se optimiza si N se declara como primo cuando Xsupera a N / 2 y no esperar hasta que X llegue a N.Ejemplo 9:Realizar la suma de todos los números pares entre 2 y 1000.El problema consiste en sumar 2 + 4 + 6 + 8 + 10 + . . . + 998 + 1000.Utilizaremos las palabras SUMA y NUMERO (que llamaremos más tarde variables) pararepresentar las sumas sucesivas (2 + 4), (2 + 4 + 6), (2 + 4 + 6 + 8), etc.La solución se puede escribir con el siguiente algoritmo: 1. Inicio. 2. Establecer SUMA a 0. 3. Establecer NUMERO a 2. 4. Sumar NUMERO a SUMA. El resultado será el nuevo valor de la suma (SUMA). 5. Incrementar NUMERO en 2 unidades. 6. Si NUMERO <= 1000 bifurcar (ó, ir) al paso 4; en caso contrario, escribir el último valor de SUMA y terminar el proceso. 7. Fin.Si se estudia con atención cada uno de los algoritmos anteriores, descubriremos una serie decaracterísticas interesantes que definen la naturaleza de lo que es un algoritmo: • Un algoritmo resuelve un problema específico: subir una escalera, obtener una tortilla de patatas, hacer una multiplicación o determinar el máximo común divisor de dos números. • Un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado: una persona cuyo universo inmediato se reduce a su propio cuerpo y una escalera; un cocinero con una sartén, huevos, patatas, aceite, sal y cebolla; o un estudiante con lápiz y papel.Informática 1. Versión 1.3 Enero de 2010 12.
  13. 13. • Un algoritmo consta de una serie de pasos que deben llevarse a cabo siguiendo una secuencia marcada: algunos de los pasos, en uno de los algoritmos anteriores, serían: dar la vuelta a la tortilla, batir los huevos, pelar las patatas o cascar los huevos; dichos pasos deben aplicarse en un orden prefijado y no de cualquier manera. • Un algoritmo se aplica de forma mecánica: un algoritmo no precisa decisiones subjetivas ni creatividad en su ejecución, cualquiera con una receta adecuada para obtener tortilla de patatas logrará una tortilla de patatas. Sin embargo, sí es necesario un acto creativo para desarrollar un nuevo algoritmo. • Un algoritmo termina en un tiempo finito: todos los algoritmos deben finalizar, pueden tardar más o menos tiempo en lograr un resultado pero dicho tiempo debe ser finito.Diseño Descendente (Top Down), ó, Modular Los problemas complejos se pueden resolver más eficazmente cuando se descomponen ensubproblemas que sean más fáciles de resolver que el original. Este método se denomina divide yvencerás (Divide and conquere) y consiste en convertir un problema complejo en otros más simplesque, una vez resueltos, en su conjunto nos solucionen el original. Al procedimiento dedescomposición de un problema en subproblemas más simples, llamados módulos, para, acontinuación, seguir dividiendo estos subproblemas en otros más simples (otros módulos), se ledenomina diseño descendente (top down, en inglés). Las ventajas más importantes de este tipo dediseño son:1. El problema se comprende más fácilmente al dividirse en módulos o partes más simples. Cuando se realice la programación, utilizaremos esta idea constantemente, de forma que hablaremos también de subprogramas ó métodos ( procedimientos y / o funciones ).2. Las modificaciones en los módulos son más fáciles, pues estamos ante algoritmos más sencillos.3. La comprobación del problema se puede realizar más fácilmente, al poder localizar los posibles fallos con mayor precisión.Refinamiento por pasosDurante el diseño, entenderemos por refinamiento por pasos, la metodología por la que en un primeresbozo del algoritmo nos limitamos a señalar o describir un reducido numero de pasos, que deberánser expresados con mayor detalle posteriormente. Tras esta primera descripción, éstos se especificancon mayor minuciosidad, de forma más extensa y con más pasos específicos. En cada nivel derefinamiento hay que considerar dos fases: ¿Qué hace el módulo? para, a continuación, responder a¿Cómo lo hace? Como es natural, dependiendo de la complejidad del problema se necesitarándiferentes y sucesivos niveles de refinamiento antes de que pueda obtenerse un algoritmo consuficiente nivel de detalle. Así, en el ejemplo del cálculo de la longitud de una circunferencia y lasuperficie de su círculo, a pesar de presentar en su diseño un bajo nivel de complejidad, se puededescomponer en subproblemas más simples:1. leer datos de entrada,2. calcular superficie y longitud,3. escribir resultados.El ejemplo siguiente, nos muestra el diseño de un algoritmo para un problema de carácter nonuméricoInformática 1. Versión 1.3 Enero de 2010 13.
  14. 14. Ejemplo:Diseñar un algoritmo que responda a la pregunta: ¿Qué debo hacer para ver la película MatriX?.Un primer análisis nos conduce a un esbozo de solución, descomponiéndolo en cuatro módulossucesivos:1. Ir al cine donde proyectan MatriX2. Comprar una entrada3. Ver la película4. Regresar a casaEstos cuatro pasos se pueden refinar un poco más y así este problema lo podríamos descomponer dela siguiente forma, usando el lenguaje natural: INICIO ALGORITMO para ver la película MatriX consultar la cartelera de cines SI proyectan XYZ ENTONCES ir al teatro correspondiente SINO proyectan XYZ declarar el fracaso del objetivo y terminar SI hay cola ENTONCES ponerse en ella MIENTRAS haya personas delante en la cola HACER esperar el instante para avanzar en la cola preguntar si quedan entradas SI hay entradas ENTONCES comprar una entrada SINO quedan entradas declarar el fracaso del objetivo, regresar a casa y terminar encontrar el asiento correspondiente MIENTRAS proyectan la película HACER ver la película abandonar el cine regresar a casa FIN ALGORITMO para ver la película MatriXAlgunas de estas acciones son primitivas para nosotros; es decir, no es necesario descomponerlasmás, como el abandonar el cine. Sin embargo hay otras acciones que son susceptibles de mayordescomposición. Este es el caso de la acción: “encontrar el asiento correspondiente”si los números de los asientos están impresos en la entrada, esta acción compuesta se resuelve con elsiguiente algoritmo: INICIO ALGORITMO para encontrar el asiento del espectador caminar hasta llegar a la primera fila de asientos REPETIR comparar número de fila con número impreso en la boleta SI no son iguales, ENTONCES pasar a la siguiente fila HASTA_QUE se localice la fila correctaInformática 1. Versión 1.3 Enero de 2010 14.
  15. 15. MIENTRAS número de asiento no coincida con número impreso en la boleta HACER avanzar a través de la fila a la siguiente butaca sentarse en la butaca FIN ALGORITMO para encontrar el asiento del espectadorDe esta forma, podríamos seguir hasta la descomposición de las distintas acciones en instruccionessusceptibles de ser interpretadas directamente por el computador.Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmocomputacional; en caso contrario, se dice que es un algoritmo no computacional.Los que se trabajaran en el curso de informática 1, serán los algoritmos computacionales.Programación del AlgoritmoUna vez que el algoritmo está diseñado y representado, se debe pasar a la fase de resolución prácticadel problema con el computador. Esta fase se descompone a su vez en las siguientes subfases: (VerFigura 1.3)1. Codificación del algoritmo en un programa.2. Ejecución del programa3. Comprobación del programa. Programación del algoritmo Codificación en un Ejecución del Comprobación programa programa del programa Fig. 1.3 Programación del algoritmoLa fase de conversión de un algoritmo en instrucciones de un lenguaje de programación se denominacodificación. El código deberá estar escrito de acuerdo con la sintaxis del lenguaje de programación,ya que solamente las instrucciones sintácticamente correctas pueden ser interpretadas por elcomputador.Nótese que durante el proceso de programación, se debe separar el diseño del algoritmo de suposterior implementación en un lenguaje de programación específico. Por ello distinguimos entre elconcepto más general de programación y el más particular de codificación, que depende del lenguajede programación utilizado. Al llegar a este punto, es posible que el lector conozca al menos uno deestos lenguajes y éste es el momento en el que podría mostrar sus habilidades para efectuar unacodificación lo más correcta y eficiente posible.Tras la codificación del programa, éste deberá ejecutarse en un computador. El resultado de estaprimera ejecución es incierto, ya que existe una alta probabilidad de que aparezcan errores, bien en lacodificación, bien en el propio algoritmo. Por tanto, el paso siguiente consiste en comprobar elcorrecto funcionamiento del programa y en asegurarse, en la medida de lo posible, de la validez delos resultados proporcionados por la máquina.Informática 1. Versión 1.3 Enero de 2010 15.
  16. 16. Formas de describir un algoritmoDado que los algoritmos permiten resolver problemas de forma mecánica, está claro que resulta muyinteresante compartir dicho algoritmo de tal manera que otras personas puedan conocerlo y aplicarlo;así surge el problema de describir los algoritmos de forma tal que todas las características que losdefinen se mantengan invariables.Lenguaje natural. La primera y más sencilla forma de describir un algoritmo es empleando el lenguajenatural; por ejemplo, el algoritmo para encontrar las raíces de una ecuación de segundo grado (ó,ecuación cuadrática) del tipo aX 2 + bX + C = 0 ( a diferente de cero ), podría describirse así:1. Definir (o, leer) los coeficientes de la ecuación de segundo grado: a, b y c , donde a no es cero.2. Determinar el valor del discriminante: d = b 2 - 4ac.3. Si el discriminante es cero, sólo hay una solución: -b / (2a).4. Si el discriminante es positivo, hay dos soluciones: (-b ± d ) / (2a).5. Si el discriminante es negativo, no hay soluciones reales.La ventaja fundamental es la facilidad de comprensión, pues cualquier persona (hispanoparlante, porsupuesto) que lea dicho algoritmo podría entenderlo y aplicarlo; sin embargo, son varios losproblemas que plantea describir un algoritmo de esta forma: • El lenguaje natural no es universal, este algoritmo sería completamente inútil para los no hispanoparlantes. • El lenguaje natural es ambiguo y, por tanto, susceptible de errores. • El lenguaje natural es demasiado amplio, lo que para una persona puede ser una instrucción sencilla, puede no serlo para otra y, desde luego, no lo será para un computador.Por todo ello, se han buscado nuevas formas de describir los algoritmos que, cuando menos, sean másuniversales, estén mejor delimitadas y no sean ambiguas; dos técnicas que logran esto son losorganigramas y las notaciones en pseudocódigo.Diagramas de Flujo (Organigramas)Los diagramas de flujo u organigramas permiten describir los algoritmos de forma gráfica; para elloutilizan una serie de bloques que indican distintas circunstancias y flechas que muestran bajo quécondiciones se pasa de un bloque a otro.Algunos de los símbolos son los siguientes:Informática 1. Versión 1.3 Enero de 2010 16.
  17. 17. A continuación, se muestra un organigrama que describe el algoritmo anterior.Informática 1. Versión 1.3 Enero de 2010 17.
  18. 18. Los organigramas presentan varias ventajas frente al lenguaje natural: • Los símbolos son universales. • Son menos propensos a la ambigüedad. • Por estar basados en un número pequeño de bloques y reglas para su empleo permiten delimitar mejor los algoritmos. • Se aproximan más a la forma en que trabaja el computador.Sin embargo: • El hecho de emplear símbolos supone que una persona que desconozca los símbolos puede tener dificultades para comprender el algoritmo o no entenderlo en absoluto. • Aunque los símbolos son universales, el texto que se coloca en su interior sigue siendo lenguaje natural. • La representación gráfica puede resultar bastante tediosa y, en el caso de algoritmos complejos, extremadamente confusa. • Un computador no es capaz de utilizar una representación visual como descripción de un algoritmo.Actualmente, los organigramas no son muy utilizados, aunque para mostrar el funcionamiento dealgoritmos sencillos continúan resultando prácticos.1.5 PseudocódigoEl pseudocódigo pretende juntar en un solo tipo de representación las ventajas del lenguaje natural yde los organigramas sin ninguno de sus problemas; por tanto, el pseudocódigo: • Es fácilmente comprensible para una persona que lo vea por vez primera. • Está bien delimitado. • Elimina las ambigüedades del lenguaje natural. • Se representa de una forma compacta.De esta forma, el pseudocódigo se suele ver como un subconjunto de un lenguaje natural queproporciona un número limitado de operaciones para la construcción de algoritmos; la única finalidaddel pseudocódigo (como de los organigramas) es la comunicación entre seres humanos.La ventajas del uso del pseudocódigo residen en: • Su uso en la planificación de un programa; permitiendo que el programador se pueda concentrar en la lógica y en las estructuras de control y no tenga que preocuparse, por ahora, de detalles acerca de las reglas sintácticas y semánticas de un lenguaje específico. • Consecuentemente, es más fácil de modificar en el caso de que se descubran errores o anomalías en la lógica del algoritmo. • Aunque el pseudocódigo es independiente del lenguaje de alto nivel que vaya a utilizarse, un algoritmo expresado en pseudocódigo puede ser traducido más fácilmente a muchos de dichos lenguajes.Elementos de construcción de un algoritmo: • Inicio del algoritmoInformática 1. Versión 1.3 Enero de 2010 18.
  19. 19. • Finalización del algoritmo • Comentarios • Declaración de variables • Expresiones • Instrucciones de Salida • Instrucciones de Entrada Inicio y finalización del algoritmo- Inicio del algoritmoalgoritmo NombreAlgoritmo { principal ( ) { }}- Finalización del algoritmoEjemplos de iniciar y finalizar un algoritmo:algoritmo Edad { principal ( ) { // Cuerpo del Algoritmo …… }} ComentariosLos comentarios son la documentación interna del algoritmo. Y se hacen de 2 formas, las cuales son: Párrafo o bloque (más de una línea): Inicia con /* Termina con */ Una línea: Inicia con //Ejemplos de comentarios:// Este es comentario de una línea/* Este es un comentario de un bloquede líneas. Este es un comentario de unbloque de líneas.*/Nota: Los comentarios se insertan en el cuerpo del algoritmo.Informática 1. Versión 1.3 Enero de 2010 19.
  20. 20. VariablesUna variable es una localización o casilla en la memoria principal que almacena un valor que puedecambiar en el transcurso de la ejecución del programa. Cuando un programa necesita almacenar undato, necesita una variable. Toda variable tiene un nombre ó identificador, un tipo de dato, el valorconcreto que va a guardar y una dirección en la memoria del computador. Dicho de otra forma,Son espacios de memoria reservados para guardar datos que pueden variar durante la aplicación de unalgoritmo. El tipo de la variable depende del tipo de dato que pueda guardar. Antes de poder utilizaruna variable es necesario declararla especificando su tipo de dato y su nombre. Para declarar variablesusaremos los siguientes formatos:Declaración de una variable:tipo_de_variable nombre_de_la_variable = valor_inicial;Declaración de varias variables con el mismo tipo de dato:tipo_de_variables nombre_de_la_variable1 = valor_inicial, nombre_de_la_variable2 = valor_inicial,nombre_de_la_variable3 = valor_inicial, ... , nombre_de_la_variableN = valor_inicial ;Donde: tipo_de_variable Depende del tipo de dato que va a guardar la variable y se nombra con dicho tipo. El tipo puede ser: Primitivos: entero (si la variable almacenará un número entero) , real (si la variable almacenará un número con parte decimal) , caracter (si la variable almacenará un caracter), booleana (si la variable almacenará el valor verdadero o el valor falso, también conocida como de tipo logico). Objetos: cadena (si la variable almacenará un conjunto de caracteres). nombre_de_la_variable Nombres (ó identificadores) válidos de las variables. El nombre de una variable debe comenzar con un carácter alfabetico o un símbolo de subrayado ( _ ) . Los demás caracteres del nombre pueden ser alfabéticos (a..z, A..Z), numéricos (0..9) y el carácter subrayado ( _). Debe considerarse también que una letra mayúscula se considera diferente de una letra minúscula. No tiene restricción en su longitud No pueden contener ningún otro carácter (*, +, ?, =, (, ), /, &, %, $, #, !, @, …). No se pueden utilizar las palabras clave reservadas para el lenguaje, estas varían de acuerdo al lenguaje utilizado. Deben ser auto-documentadas y Generalmente se escribe en letras minúsculasNombres de variables no validas: • edad_#01 • _coeficiente(4)Informática 1. Versión 1.3 Enero de 2010 20.
  21. 21. • 4_nombre_del_Trabajador • v@lorTerminal • nombre de programa • número 1 • SUELDO-45Ejemplos de declaración de variables:La siguiente instrucción declara la variable edad de tipo ENTERA y la variable descuento de tipoReal.entero edad=0;real descuento=0.0;Esto crea las casillas de memoria edad y descuento. Luego de la creación, las variables estáninicializadas en cero ( 0 ). edad 0 descuento 0La siguiente instrucción declara las variables nota1, nota2 y nota3, todas de tipo REAL.real nota1=0.0, nota2=0.0, nota3=0.0;Esto crea los casilleros de memoria nota1, nota2 y nota3. Luego de la creación, las variables estáninicializadas en cero ( 0 ). nota1 0 nota2 0 nota3 0entero valor1= 0;caracter respuesta = ‘s’;real valor_2 = 3.14;cadena nombre = “ ”;booleano respuesta2 = verdadero; ConstantesSon variables que después de habérseles asignado una valor, éste no cambia durante el proceso deaplicación del algoritmo. El nombre de las constantes, generalmente, se escribe en letras mayúsculas.Informática 1. Versión 1.3 Enero de 2010 21.
  22. 22. Ejemplos de constantes:real PI = 3.141592;real porcentaje = 0.25; Expresiones Conjunto de valores, variables, constantes y operadores relacionados matemáticamente o lógicamente, asignados a una variable. Permite mover contenidos de memoria de una posición a otra Su resultado es representado por las variables. Asigna valores a una posición de memoria.Ejemplos de Expresiones:promedio = (n1 + n2 + n3)/3; // Donde n1=4, n2=3 y n3=1suma = suma + numero;num1 > num2nombre_completo = nombre + apellido;entero Resultado = numero_1 + numero_2;cadena Nombre = “Jesús Antonio”;real _Sueldo = 45.36 + 854687;booleana Flag = true;caracter Vocal = ‘X’;booleana Opcion = 45 > 0 && true && (18+12)/2 > 0;booleana Otra_Opcion = true && (false || true); Instrucciones de SalidaConsiste en entregar resultados al usuario mediante el dispositivo estándar de salida, la pantalla. Yasea, mostrar el valor de una variable o alguna información que desee desplegar al usuario. En general,la forma para realizar esta acción, se expresa en el pseudocódigo mediante la palabra imprimir de lasiguiente forma: Sintaxis imprimir (“El Texto que se va a imprimir”); imprimir (nombre_de_variable); imprimir (“El texto ”+ nombre_de_variable);Nota: En este caso, el simbolo + es llamado operador de concatenacion y es utilizado para encadenardos elementos y formar un dato tipo cadena.Informática 1. Versión 1.3 Enero de 2010 22.
  23. 23. Ejemplos de Instrucciones de Salida: • Si se desea desplegar una cadena Hola Mundo: imprimir ( “Hola Mundo” ) ; • Si se desea desplegar el valor almacenado en la variable importeCompra: imprimir ( importeCompra ) ; • Si se desea desplegar la cadena El Valor Del Area Es: seguida del valor almacenado en la variable area: imprimir ( “El Valor Del Area Es: ” +area) ; Pero en el imprimir se puede tener muchas combinaciones entre variables y cadenas, como por ejemplo: Suponiendo que se han hecho las siguientes declaraciones: real area=70.4; entero valor = 21; cadena nombre = “Carlos”; • imprimir ( “El Valor Del Area Es: ” +area+“ Metros Cuadrados”) ; entonces el anterior ejemplo nos desplegaría en pantalla: El Valor Del Area Es: 70.4 Metros Cuadrados • imprimir ( “El Terreno De : ” +area+“ Tiene Un Costo De: ” +valor+“ Pesos Por Metro Cuadrado y vendido por”+nombre); entonces el anterior ejemplo nos desplegaría en pantalla: El Terreno De : 70.4 Tiene Un Costo De: 21 Pesos Por Metro Cuadrado NOTA: Observe que en las cadenas se dejaron espacios para que en al momento de desplegarse en pantalla, este espacio entre palabras sea conservado. Instrucciones de EntradaConsiste en obtener y almacenar en una variable, datos de entrada entregados por el usuario desde undispositivo de entrada estándar (como el teclado). En general, la acción de ingresar un dato desde undispositivo de entrada a una variable, se expresa en el pseudocódigo de la siguiente forma: Sintaxis variable = leer (“mensaje de captura “);Ejemplos de Instrucciones de Entrada: variable2 = leer (“Digite el segundo valor ”); Suponiendo que se han hecho las siguientes declaraciones: real area=0.0;Informática 1. Versión 1.3 Enero de 2010 23.
  24. 24. entero valor=0; cadena nombre=“”; • nombre = leer ( “Ingrese su nombre ”) ; entonces la anterior instrucción nos almacenaría el nombre ingresado por el usuario en la variable nombre. • valor = leer( “Ingrese el valor de venta por metros cuadrados ”) ; entonces la anterior instrucción nos almacenaría el valor por metro cuadrado ingresado por el usuario en la variable valor. • area = leer ( “Ingrese el area del terreno ”) ; entonces la anterior instrucción nos almacenaría el area del terreno ingresado por el usuario en la variable area. Por ejemplo, la instrucción: real estatura=0.0; estatura = leer(“Digite la estatura: “ ) ; solicita el ingreso de un valor, desde algún dispositivo de entrada (como el teclado), para la variable estatura. OperadoresSon símbolos que establecen una relación aritmética, lógica o relacional entre datos. Tabla 1.1 Operadores aritméticosInformática 1. Versión 1.3 Enero de 2010 24.
  25. 25. Tabla 1.2 Operadores relacionales Tabla 1.3 Operadores lógicosInformática 1. Versión 1.3 Enero de 2010 25.
  26. 26. Reglas de jerarquía de los operadores aritméticosCuando una expresión aritmética tiene más de un operador aritmético, el orden de aplicación de losoperadores sigue un orden preciso determinado por las reglas de jerarquía de los operadoresaritméticos, que se muestran en la siguiente tabla: Tabla 1.4 Reglas de Jerarquía de los Operadores Aritméticos, Relacionales y Lógicos Operadores Precedencia posfijo expr++ expr-- unario ++expr --expr +expr -expr ~ ! multiplicativo */% aditivo +- cambio << >> >>> relacionales < > <= >= instanceof equivalencia == != AND bit a bit & OR bit a bit exclusivo ^ OR bit a bit inclusivo | AND logico && OR logico || ternario ?: asignacion = += -= *= /= %= &= ^= |= <<= >>= >>>=Si existen paréntesis anidados, se evalúa primero la expresión en el paréntesis más interno. Sivarios operadores o paréntesis tienen la misma jerarquía, la evaluación será de izquierda aderecha.Suponga que tenemos estos dos valores:valor1=1, valor2=5;Ejemplo 1:resultado = 10 * ++ valor1;resultado = 10 * 2; //Aumento primero la variable valor1 en uno, es decir su nuevo valor es 2resultado = 20;resultado = 10 * valor1++;resultado = 10 * 1; //Primero realizo el producto y luego aumento la variable valor1 en uno, es decir su valor final es 2resultado = 10;Informática 1. Versión 1.3 Enero de 2010 26.
  27. 27. Ejemplo 2:valor1>0 && valor2++ <=5 V && (5<=5) V && V VEl valor final de valor2 es de 6, por tener el acumulador (++) como posfijoEjemplo 3:valor1>0 && ++valor2 <=5 V&& (6<=5) V&& F FPor haber un acumulador (++) como prefijo, primero se incrementa valor2,obteniendo como nuevo valor 6 y luego realiza la operación lógica.Ejemplo 4:true && valor2 – 4 < valor1 || valor1-- < valor2 – 4 1 1 F F F FEjemplo: ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?Solución e = a/b/c;Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:Primero, se dividirá a entre b. Segundo, el resultado ya obtenido de a / b se dividirá entre c.Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiereninguna pareja de paréntesis.Ejemplo:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?Informática 1. Versión 1.3 Enero de 2010 27.
  28. 28. Solución c = a*b*c/d/e;Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:Primero, se multiplicará a por b.Segundo, el resultado ya obtenido de a * b se multiplicará por c.Tercero, el resultado ya obtenido de a * b * c se dividirá entre d.Cuarto, el resultado ya obtenido de a * b * c / d se divivirá entre e.Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiereninguna pareja de paréntesis.Ejercicio: ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?Solución e = 4 / ((a + b) / (c / d)) + v / (w / p) + 5 * m * n * q ;Aplicando las reglas de jerarquía de los operadores aritméticos:Primero, se sumará a más b.Segundo, se dividirá c entre d.Tercero, el resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido de c/d.Cuarto, se dividirá 4 entre el resultado ya obtenido de ( (a+b)/(c/d) )Quinto, se dividirá w entre p.Sexto, se dividirá v entre el resultado ya obtenido de (w/p).Séptimo, se multiplicará 5 por m.Octavo, se multiplicará el resultado ya obtenido de 5*m por n.Noveno, se multiplicará el resultado ya obtenido de 5*m*n por q.Décimo, se sumará el resultado ya obtenido de 4/( (a+b)/(c/d) ) más el resultado ya obtenido dev/(w/p).Undécimo, se sumará el resultado ya obtenido de 4/( (a+b)/(c/d) ) + v/(w/p) más el resultado yaobtenido de 5*m*n*q.Se ha utilizado la mínima cantidad posible de paréntesis. Pueden usarse paréntesis adicionales, lo queno es un error. Por ejemplo, otra solución posible que arroja el mismo resultado final es: e = (4/((a+b)/(c/d))) + (v/(w/p)) + (5*m*n*q) ;Note que usando correctamente las reglas de jerarquía, es posible usar menos parejas de paréntesis.Informática 1. Versión 1.3 Enero de 2010 28.
  29. 29. FUNCIONES NATIVAS • Existen cálculos que han sido, previamente organizados y definidos, mediante funciones, que son expresiones automáticas dirigidas a resolver cierto tipo de cómputo numérico o lógico. • Las funciones “devuelven” un valor representado por cierto tipo de dato, dependiendo de su naturaleza de procesamiento. • Por tanto es factible y significativo, asignar ese resultado a una variable que pueda “contenerlo”. • equivalente en español - Minúscula Sintaxis función (argumento1, argumento2, …); Los argumentos, corresponden a los valores que evalúa la función. Ejemplos de Funciones: raiz (valor real) : calcula la raiz cuadrada de un número real o entero. Devuelve un valor real. absoluto (valor real) : calcula el valor absoluto de un número real o entero. Devuelve un valor real. potencia(valor real, valor entero) : calcula la potencia de un valor real o entero (base) elevado a una potencia entera. Devuelve un valor real. seno (valor real) : calcula el seno de un valor dado en radianes. Devuelve un valor real. ASIGNACIÓN A UNA VARIABLE variable = función (argumentos);1.6 Estructuras SecuencialesLa estructura secuencial es la más sencilla de todas, simplemente indica alprocesador que debe ejecutar de forma consecutiva una lista de acciones (quepueden ser, a su vez, otras estructuras de control); para construir una secuencia deacciones basta con escribir cada acción en una linea diferente. A continuación semuestra una composición secuencial de acciones en notación algorítmica. real a=0.0, b=0.0, c=0.0; a=leer(“Digite a ” ) ; b=leer( “Digite b ” ) ; c = a+b; imprimir ( “c tiene un valor de “ + c ) ;Existe una forma alternativa de expresar una estructura secuencial escribiendo varias acciones en lamisma línea pero utilizando el punto y coma ( ; ) como separador. Sin embargo, esta última notaciónes desaconsejable puesto que puede llegar a hacer el código bastante difícil de leer.Informática 1. Versión 1.3 Enero de 2010 29.
  30. 30. real a=0.0, b=0.0, c=0.0; a=leer(“Digite a ” ) ; b=leer( “Digite b ” ) ; c = a + b ; imprimir ( “c tiene un valor de “ + c ) ;Por último, es necesario señalar un aspecto importante de la composición secuencial y es que noes conmutativa.Para mostrar lo realizado hasta ahora tenemos este ejemplo:Algoritmo para expresar en centímetros y en pulgadas una cantidad dada en metros. Esta es unasolución en pseudocódigo utilizando los conceptos computacionales descriptos en las paginasanteriores. La solución considera que 1 metro = 100 centímetros y que 1 pulgada = 2.54 centímetros. Datos de Entrada Proceso Información (con tipos) (con tipos)real cantidad_metros = leer(“Digite la longitud en metros: real cantidad_metros ”) cantidad_centimetros cantidad_pulgadas cantidad_centimetros = cantidad_metros * 100 cantidad_pulgadas = cantidad_centimetros / 2.54 imprimir (cantidad_metros + “, en centímetros, equivale a: ” + cantidad_centimetros ) imprimir (cantidad_metros + c, en pulgadas, equivale a: ” + cantidad_pulgadas )algoritmo Conversion{ principal(){ // Declara las variables m, c y p real cantidad_metros=0.0, cantidad_centimetros=0.0 , cantidad_pulgadas=0.0; // Lectura y asignación de las variables cantidad_metros = leer(“Digite la longitud en metros: ”); // Calcula la cantidad equivalente en centímetros y lo asigna a la variable c cantidad_centimetros = cantidad_metros * 100 ; // Calcula la cantidad equivalente en pulgadas y lo asigna a la variable p cantidad_pulgadas = cantidad_centimetros / 2.54 ; // Muestra los valores de las variables c y p: imprimir(cantidad_metros + “, en centímetros, equivale a: “ + cantidad_centimetros ); imprimir(cantidad_metros + c, en pulgadas, equivale a: “ + cantidad_pulgadas ) ; }}Informática 1. Versión 1.3 Enero de 2010 30.
  31. 31. Datos de Entrada Proceso Información (con tipos) (con tipos)real radio = leer(“Digite el valor del radio: ”) real radio PI = 3.1415926535 area area = PI * potencia(radio,2) imprimir (“El área del cículo de radio “+radio+” es “+area)algoritmo AreaCirculo { principal () { // Declaración de variables real radio = 0.0; real area = 0.0; real PI = 3.1415926535; // Captura de datos radio = leer (“Digite el valor del radio: ”); //Cálculos area = PI * potencia(radio,2); // Salida de datos imprimir (“El área del cículo de radio “+radio+” es “+area); }}1.7 Estructura CondicionalesLa estructura alternativa permite bifurcar el “flujo” del programa en función de una expresión lógica.Disponemos de tres estructuras alternativas diferentes: alternativa simple, alternativa doble yalternativa múltiple.1.7.1 Estructura Condicional SimpleEsta estructura permite evaluar una expresiónlógica y en función de dicha evaluación ejecutaruna acción (o composición de acciones) o noejecutarla; también se la suele denominar si-entonces.A continuación se muestra la notación algorítmicapara la estructura alternativa simple. si (<expresión lógica>) entonces acciones si la expresión lógica es verdadera fin_siInformática 1. Versión 1.3 Enero de 2010 31.
  32. 32. En seudocódigo la instrucción si–simple se presenta así: si( <condición> ) { // Bloque de instrucciones que se ejecuta si la condición es verdadera. } // Fin del bloque del siEn el siguiente ejemplo, se calcula la longitud de una circunferencia si el radio es positivo: si ( radio > 0 ) { longitud = 2 * 3.1416 * radio ; }Ejemplo: Dada la edad de una persona, imprimir un mensaje solo si ella cumple con la mayoría deedad Datos de Entrada Proceso Información (con tipos) (con tipos)entero edad=leer(“Digite la edad de la persona”) cadena edad cumple si edad >=18 cumple=“Cumple con la mayoría de edad” imprimir (cumple) CondicionesLenguaje natural:La edad debe ser mayor o igual a 18 para poder votarExpresion lógica:edad >=18algoritmo MayoriaDeEdad { principal () { entero edad=0; cadena cumple=“”; //Lectura de las variables edad=leer(“Digite la edad de la persona”); si (edad>=18){ cumple=“Cumple con la mayoría de edad”; } imprimir(cumple) ; }}Informática 1. Versión 1.3 Enero de 2010 32.
  33. 33. 1.7.2 Estructura Condicional DobleLa estructura alternativa doble es similar a la anterior, con la salvedad de que en este tipo de estructurase indican acciones no sólo para la rama “verdadera” sino también para la “falsa”; es decir, en caso deque la expresión lógica evaluada sea cierta, se ejecuta una acción o grupo de acciones y, en el caso deque sea falsa, se ejecuta un grupo diferente de acciones. La sintáxis en la notación algorítmica es laque se muestra a continuación:si (<expresión lógica>) entonces acciones si la expresión lógica es verdaderasi no acciones si la expresión lógica es falsafin_siEn seudocódigo la instrucción si–entonces simple se presenta así: si( <condición> ) { // Bloque de instrucciones que se ejecuta si la condición es verdadera. } // Fin del bloque del si sino { // Bloque de instrucciones que se ejecuta si la condición es falsa. } // Fin del bloque del sinoEn el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es positivo y, encaso contrario, se proporciona un mensaje de error: si ( radio > 0 ) { longitud = 2 * 3.1416 * radio ; } sino { //si radio <= 0 imprimir ( “Radio incorrecto” ) ; }Informática 1. Versión 1.3 Enero de 2010 33.
  34. 34. Ejemplo: Dada la edad de una persona, imprimir un mensaje indicando si es mayor de edad o no Datos de Entrada Proceso Información (con tipos) (con tipos)entero edad = leer (“Digite la edad de la persona”) cadena edad cumple si edad >=18 cumple=“Cumple con la mayoría de edad” sino cumple=“No Cumple con la mayoría de edad” imprimir (cumple) CondicionesLenguaje natural:La edad debe ser mayor o igual a 18 para poder votarExpresion lógica:edad >=18algoritmo MayoriaDeEdad { principal () { //Declaración de las variables entero edad=0; cadena cumple=“”; //Lectura de las variables edad = leer (“Digite la edad de la persona”); si (edad>=18){ cumple=Cumple con la mayoría de edad”; }sino{ cumple=“No Cumple con la mayoría de edad” ; } imprimir(cumple) ; }}Informática 1. Versión 1.3 Enero de 2010 34.
  35. 35. Ejemplo: Informar si un estudiante ha superado o no un determinado examen consistente en 20preguntas de igual valor y calcular su nota en caso de aprobar. Datos de Entrada Proceso Información (con tipos) (con tipos)entero num_correctas = leer (“Digite el numero de preguntas real num_correctas contestadas correctamente”) nota cadena si num_correctas < 12 pasaExamen pasaExamen=“No ha superado Vd. el examen” sino nota = num_correctas * 0.25 pasaExamen= “aprobó Vd. con un ” + nota imprimir (pasaExamen); CondicionesLenguaje natural:El numero de preguntas correctas debe ser menor a 12 para perder examenExpresion lógica:num_correctas < 12algoritmo AprobarExamen1{ principal () { //Declaración de las variables entero num_correctas=0; real nota=0.0; cadena pasaExamen=“”; //Asignación y lectura de las variables num_correctas = leer (“Digite el numero de preguntas contestadas correctamente”); si (num_correctas<0 && num_correctas>20){ imprimir (“Error:el rango (posibles respuesta correctas)es de 0-20”); //valido la entrada de } //datos si (num_correctas < 12) { pasaExamen=“No ha superado Vd. el examen”; } sino { //si num_correctas >12 nota = num_correctas * 0.25; pasaExamen = “aprobó Vd. con un ” + nota; } imprimir (pasaExamen); }}Informática 1. Versión 1.3 Enero de 2010 35.
  36. 36. Ejemplo:Supongamos que tenemos un algoritmo para averiguar si un número es impar o par, que puede serdescrito narrativamente de la siguiente forma: “Si el residuo de la división entera del número entredos ( 2 ) es igual a cero, entonces el número es par. En caso contrario; es decir, si el residuo es uno (1 ), entonces el número digitado es impar. Existe un operador que permite determinar de maneradirecta el residuo ( o resto ) de la división de dos números.Definición: El residuo ( ó resto ) de la división de dos números a y b se denota como “a % b”, selee “a módulo b” y nos arroja el residuo de la división de a y b. Ejemplo: 83 % 5 = 4, pues elcociente es 20 y el residuo es 3, que es la respuesta. Este algoritmo escrito en pseudocódigo quedaasí: Datos de Entrada Proceso Información (con tipos) (con tipos)entero n=leer(“Digite un número entero”) CADENA n tipo si n % 2 == 0 tipo = n + “ es par” sino tipo = n + “es impar” imprimir (tipo); CondicionesExpresion lógica:num_correctas < 12algoritmo ImparPar1{ principal () { //Declarcion de la variable entero n=0 ; cadena tipo=“”; //Lectura de la variable n=leer(“Digite un número entero”); //Procesos de Calculos si( n % 2 == 0 ) { tipo= n + “ es par”; } sino{ tipo=n + “ es impar”; } imprimir (tipo); }}Informática 1. Versión 1.3 Enero de 2010 36.
  37. 37. 1.7.3 Estructura Condicional MultipleEsta estructura evalúa una expresión quepuede tomar n valores (enteros ocaracteres, pero nunca reales ni cadenas) yejecuta una acción o grupo de accionesdiferente en función del valor tomado porla expresión selectora.La sintáxis en la notación algorítmica esla que se muestra a continuación: segun expresión caso valor1: acción 1 break; caso valor2: acción 2 break; ... caso valorN: acción n break; default: acción fin segúnEn seudocódigo orientado a Java, la instrucción según–casos se presenta así: segun( <expresión entera o caracter> ) { caso valor1: // Bloque de instrucciones que se ejecuta si la expresión // toma el valor valor1 break ; caso valor2: // Bloque de instrucciones que se ejecuta si la expresión // toma el valor valor2 break; // . . . . . . caso valorN: // Bloque de instrucciones que se ejecuta si la expresión // toma el valor valorN break; default : // Bloque de instrucciones que se ejecuta si la expresión // NO toma ninguno de los valores arriba indicados break; // Aquí está de sobra… } // Llave de fin de la estructura de decisión múltipleInformática 1. Versión 1.3 Enero de 2010 37.
  38. 38. Notas: 1.- El otro caso o caso por defecto es opcional. Si no se implementa, entonces la estructura no será ejecutada en aquel caso en el que la expresión nunca tome alguno de los valores especificados en los casos. 2.- La instrucción break ; también es opcional. Si no se usa alguna de las instrucciones break; entonces la ejecución continúa hasta encontrar la siguiente instrucción break ; o la llave del fin de la estructura de decisión.En el siguiente ejemplo se proporciona como salida el número de días de un mes dado: segun ( mes ) { // Abre según caso caso 1: caso 3: caso 5: caso 7: caso 8: caso 10: caso 12: imprimir ( “31” ) ; break; caso 4: caso 6: caso 9: caso 11: imprimir ( “30” ) ; break; caso 2: imprimir ( “28” ) ; break; default: imprimir ( “Mes incorrecto” ) ; break; // Aquí está de sobra… } // Termina la ejecución de la estructura de selección múltipleNota: Observar que es posible agrupar varios casos que conduzcan a la ejecución de un bloque común a ellos.1.5.4. Estructura condicional – SI anidadossi ( <condición 1> ) { // Bloque de instrucciones que se ejecuta si la condición 1 es verdadera.} // Fin del bloque del si para la condición 1sino{ si( <condición 2> ) { // Bloque de instrucciones que se ejecuta si la condición 2 es verdadera. } // Fin del bloque del si para la condición 2// . . . sino { si( <condición N> ) { // Bloque de instrucciones que se ejecuta si la condición N es verdadera. } // Fin del bloque del si para la condición N sino { // Bloque por defecto: instrucciones que se ejecutan si ninguna condición // anterior es verdadera } // Fin del bloque por defecto } // Fin del bloque del sino} // Llave de fin de la estructura si anidadaInformática 1. Versión 1.3 Enero de 2010 38.
  39. 39. Nota: El último sino ( Bloque por defecto ) es opcional. Si no se implementa, entonces laestructura no será ejecutada en aquel caso en el que todas las condiciones sean falsas.Ejemplo:Algoritmo para la ecuación cuadrática del tipo aX 2 + bX + C = 0 ( a diferente de cero ). Datos de Entrada Proceso Información (con tipos) (con tipos)real solución=“” real a, b, c discr, s1, s2 a = leer (“¿Cuánto vale A?”) cadena b = leer (“¿Cuánto vale B?”) solucion c = leer (“¿Cuánto vale C?”) discr = ( b * b – 4 * a * c ) si discr == 0 s1 = -b / (2 * a) solucion = “Existen dos soluciones iguales, cuyo valor es: “ + s1 sino si discr > 0 s1 = ( -b + raiz(discr) ) / (2 * a) s2 = ( -b - raiz(discr) ) / ( 2 * a) solucion = “Las soluciones son: ”+ s1 + “ y “+ s2 sino solucion = “No hay soluciones en el conjunto de los números reales.” imprimir (solucion) CondicionesExpresiones lógicas:discr == 0discr > 0algoritmo EcuacionCuadrática{ principal () { //Declarcion de las variables real a=0, b=0, c=0 ;// Declaración de tres variables del tipo número real ( los 3 coeficientes ). real discr=0; // Declaración de la variable para el discriminante de la ecuación. real s1=0, s2=0; // Declaración de dos variables para las soluciones ( ó raíces ) de la ecuación. cadena solución=“”; imprimir(“Deme los coeficientes y resolveré una ecuación de 2º grado” );Informática 1. Versión 1.3 Enero de 2010 39.
  40. 40. // Lectura y Asignación de las variables: a=leer(“¿Cuánto vale A?”); b=leer (“¿Cuánto vale B?”); c=leer (“¿Cuánto vale C?”); // Cálculo del discriminante de la ecuación cuadrática: discr = ( b * b – 4 * a * c ) ; // en discr asigne el valor de la expresión entre paréntesis. si( discr == 0 ){ // ‘ == ‘ significa ‘ igual a ‘ s1 = -b / (2 * a) ; // En s1 asigne el valor de la expresión del segundo miembro solución = “Existen dos soluciones iguales, cuyo valor es: “ + s1; } sino{ si( discr > 0 ) { s1 = ( -b + raiz(discr) ) / (2 * a) ;// En s1 asigne el valor de la expresión del segundo //miembro s2 = ( -b - raiz(discr) ) / ( 2 * a) ; // En s2 asigne el valor de la expresión del segundo //miembro solución = “Las soluciones son: ” + s1 + “ y “ + s2; }sino { solución = “No hay soluciones en el conjunto de los números reales.” ; } } imprimir(solucion); }}1.8 Estructuras de RepeticiónLa estructura repetitiva o iterativa permite, como su propio nombre lo indica, repetir una acción (ogrupo de acciones); dicha repetición puede llevarse a cabo un número prefijado de veces o dependerde la evaluación de una expresión lógica. Existen tres tipos de estructuras repetitivas: para(ó desde-hasta), mientras y haga-mientras.1.8.1 Estructura de Repetición para (ó desde-hasta)Esta estructura permite repetirla ejecución de una acción o deun grupo de acciones unnúmero determinado de veces;la sintáxis es la siguiente:Informática 1. Versión 1.3 Enero de 2010 40.
  41. 41. A continuación se muestran algunos ejemplos: para (entero n=1; n < =10; n++){ imprimir (“n = ”+n ); } // Fin del paraEl ciclo anterior imprime por pantalla los números del 1 al 10.Ahora, preste atención al siguiente Pseudocódigo: para (entero n=10; n < =0; n++){ imprimir (“n =”+n); } //Fin del paraEl bucle anterior no se ejecuta nunca puesto que, de entrada, la condición n <= 0 (con n inicializadoen 10) va a ser falsa, es decir arroja false. ¿Qué ocurriría si, en el ciclo anterior, se cambia de < por >? para (entero n=10; n >=0; n++){ imprimir (“n =”+n); } //Fin del paraEl bucle anterior es infinito puesto que la condición n >= 0 (con n inicializado en 10) siempre va a serverdadera, es decir me arroja true.Si queremos hacer el ejemplo de n <= 0 (con n inicializado en 10), pero con paso – 2, el Pseudocódigose puede escribir así: para (n=10; n < =0 ; n = n - 2){ imprimir (“n =”+ n); } //Fin del paraEste bucle escribe los números pares de 10 a 0 en orden inverso.Ejemplo:Escriba un algoritmo que sume los “N” primeros números enteros. Datos de Entrada Proceso Información (con tipos) (con tipos)REAL suma=0 REAL n suma n = leer(“Ingrese n”) para entero contador = 1; contador <= n;contador++ suma += contador imprimir(“La suma es: ” + suma);Informática 1. Versión 1.3 Enero de 2010 41.
  42. 42. CondicionesExpresion lógica:contador <= nalgoritmo Suma { principal () { entero suma=0, n=0; n = leer(“Ingrese n”); para (entero contador = 1; contador <= n ; contador++){ suma += contador; } imprimir(“La suma es: ” + suma); } }Ejemplo:Escriba un algoritmo que calcule el promedio del curso de informática 1, sabiendo que se tienen “N”estudiantes.Datos de Entrada Proceso Información (con tipos) (con tipos)REAL acumula=0 REAL N, nota promedio, n=leer(“Ingrese n”) acumula para entero contador = 1; contador <= n ;contador++ nota = leer(“Ingrese nota: “ + contador + “ : “) acumula += nota promedio = acumula/n imprimir (“Promedio es: ” + promedio) CondicionesExpresion lógica:contador <= nalgoritmo Promedio { principal () { entera n=0;Informática 1. Versión 1.3 Enero de 2010 42.
  43. 43. real nota=0.0, promedio=0.0, acumula=0; n=leer(“Ingrese n); para (entero contador = 1; contador <= n ; contador++){ nota = leer(“Ingrese nota: “ + contador + “ : “); acumula += nota; } promedio = acumula/n; imprimir(“Promedio es: ” + promedio); } }1.8.2 Estructura de Repetición mientrasCuando usamos la estructura mientras: • Cuando sea necesario ejecutar los mismos pasos varias veces y se conoce el número de veces que desea repetirse. • Cuando sea necesario ejecutar los mismos pasos varias veces y NO se conoce el número de veces que desea repetirse. • Si la condición es cierta el cuerpo del ciclo se ejecuta, sino la ejecución del ciclo termina. • Si la condición es inicialmente falsa el ciclo no se ejecuta ni una sola vez. Sintaxis General: mientras ( <expresión lógica> ) acción FIN mientrasInformática 1. Versión 1.3 Enero de 2010 43.
  44. 44. A continuación se muestra un ejemplo que solicita al usuario el radio de una circunferencia mientrasel radio introducido sea incorrecto: mientras (radio<=0) { //se ejecuta mientras el radio sea mayor que 0 radio = leer(Ingrese el radio); imprimir (“Radio :” +radio); } //Fin del mientrasNotar que mientras radio < = 0 el ciclo se ejecuta.Ejemplo:Escriba un algoritmo que lea e imprima todos los nombre de un grupo de estudiantes:Datos de Entrada Proceso Información (con tipos) (con tipos)cadena seguir = ‘S’ cadena nombre nombres=“” nombrescaracter seguir mientras (seguir == ‘S’) nombre=leer(“Ingrese Nombre”) nombres+=nombre seguir=leer(“Desea continuar”) Condicionesseguir == ‘S’ algoritmo Nombres { principal () { caracter seguir=‘S’; cadena nombre=“”, nombres=“”; mientras (seguir == ‘S’){ nombre = leer(“Ingrese Nombre”); nombres+=nombre; continuar = leer(“Desea continuar”); } imprimir(nombres); } }Informática 1. Versión 1.3 Enero de 2010 44.
  45. 45. Ejemplo:Escriba un algoritmo que calcule el promedio del curso de informática I.Datos de Entrada Proceso Información (con tipos) (con tipos)real seguir = ‘S’ ENTERA nota cuenta=0 cuentacaracter acumlua=0 REAL seguir promedio, mientras (seguir== “S) acumula cuenta++ nota=leer(“Ingrese nota: “ + cuenta + “ : ”) acumula += nota nota=leer(“Desea Continuar”) promedio = acumula/cuenta; imprimir(“Promedio es: ” + promedio); Condicionesseguir == ‘S’ algoritmo Promedio { principal () { entero cuenta=0; real nota, promedio, acumula; caracter seguir = ‘S’; seguir = leer(“Desea Continuar”); mientras (seguir== ‘S’){ cuenta++; nota=leer(“Ingrese nota: “ + cuenta + “ : “); acumula += nota; seguir=leer(“Desea Continuar”); } promedio = acumula/cuenta; imprimir(“Promedio es: ” + promedio); } } 1.8.3 Estructura de Repetición haga-mientras • Cuando sea necesario ejecutar los mismos pasos varias veces y se conoce el número de veces que desea repetirse.Informática 1. Versión 1.3 Enero de 2010 45.
  46. 46. • Cuando sea necesario ejecutar los mismos pasos varias veces y NO se conoce el número de veces que desea repetirse. • Si la condición es cierta el cuerpo del ciclo se ejecuta, sino la ejecución del ciclo termina. • Si la condición es inicialmente falsa el ciclo no se ejecuta ni una sola vez. • Primero ejecuta y luego evalúa la condición de finalización • Usada para validacionesInformática 1. Versión 1.3 Enero de 2010 46.
  47. 47. 1.9 EJERCICIOS RESUELTOSNOTA: se realizara la abstracción SIN APLICAR validaciones con el ciclo haga mientras atodos los ejercicios resueltos, pero UNICAMENTE al primer ejercicio se realizara laabstracción con dicha validacion. Ademas en la parte de pseudocogo si se incluye paraTODOS los ejercicios las validaciones con el ciclo haga mientras.Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo. Considereque: area = base x altura, y, perimetro = 2 x (base+altura).Sin validación con el ciclo haga mientras: Datos de Entrada Proceso Información (con tipos) (con tipos)real base=leer (“Digite la medida de la base del rectangulo”) real base, altura area, perimetro altura=leer(“Digite la medida de la altura del rectangulo”) area = base*altura perímetro = 2*(base+altura) imprimir (“Area :” +area) imprimir (“Perimetro:” +perimetro)Con validación con el ciclo haga mientras: Datos de Entrada Proceso Información (con tipos) (con tipos)real haga real base, altura base=imprimir (“Digite la medida de la base del area, perimetro rectangulo”) mientras(base<0) haga altura=imprimir (“Digite la medida de la altura del rectangulo”) mientras(altura<0) area = base*altura perímetro = 2*(base+altura) imprimir (“Area :” +area) imprimir (“Perimetro:” +perimetro)Informática 1. Versión 1.3 Enero de 2010 47.
  48. 48. Condicionesaltura<0base<0algoritmo Rectangulo { principal () { // Declaración de variables real base=0.0, altura=0.0, area=0.0perímetro=0.0; // Asignación o Lectura de Datos haga{ base=leer (“Digite la medida de la base del rectangulo”); } mientras(base<0); //Se valida el ingreso de datos para la base haga{ altura=leer(“Digite la medida de la altura del rectangulo”); } mientras(altura<0); //Se valida el ingreso de datos para la altura // Proceso de cálculo area = base*altura; perímetro = 2*(base+altura); // Salida de resultados imprimir (“Area :” +area); imprimir (“Perimetro:” +perimetro); }}Ejercicio 2:- Diseñe un pseudocódigo para convertir una longitud dada en metros a sus equivalentesen centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centímetros, 1 pulgada = 2.54centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.Informática 1. Versión 1.3 Enero de 2010 48.
  49. 49. Datos de Entrada Proceso Información (con tipos) (con tipos)real cmetr =leer(“Digite longitud en metros”) real cmetr ccent, cpulg, ccent = cmetr * 100 cpies, cyard cpulg = ccent / 2.54 cpies = cpulg / 12 cyard = cpies / 3 imprimir( "Cantidad equivalente en centimetros: " + ccent + " cm" ) imprimir ( "Cantidad equivalente en pulgadas: " + cpulg + " pulgadas" ) imprimir ( "Cantidad equivalente en pies: " + cpies + " pies" ) imprimir ( "Cantidad equivalente en yardas: " + cyard + " yardas" ) Condicionescmetr<0algoritmo Conversiones1{ principal () { // Declaración de variables real cmetr=0.0,ccent=0.0, cpies=0.0, cpulg=0.0, cyard=0.0; // Asignación y lectura de variables haga{ cmetr =leer(“Digite longitud en metros”); } mientras(cmetr<0); //Se valida el ingreso de datos para la cmetr // Proceso de cálculo ccent = cmetr * 100; cpulg = ccent / 2.54; cpies = cpulg / 12; cyard = cpies / 3; // Salida de resultados imprimir ( "Cantidad equivalente en centimetros: " + ccent + " cm" ) ; imprimir ( "Cantidad equivalente en pulgadas: " + cpulg + " pulgadas" ) ; imprimir ( "Cantidad equivalente en pies: " + cpies + " pies" ) ; imprimir ( "Cantidad equivalente en yardas: " + cyard + " yardas" ) ; }}Informática 1. Versión 1.3 Enero de 2010 49.

×