P. 1
Programacion Logica - Modulo 2 - Lectura 2

Programacion Logica - Modulo 2 - Lectura 2

|Views: 2.065|Likes:
Publicado porMaria Tere

More info:

Published by: Maria Tere on Jul 24, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/03/2013

pdf

text

original

Sections

  • 2.1. Estructuras de programación
  • 1. Secuenciales 2. Repetitivas. 3. Selección.
  • 2.2. Estructuras secuencial
  • 2.3. Ejercicios usando estructura secuencial. Entrada y salida de información
  • 2.4. Estructura condicional
  • 2.5. Condicional simple: Si entonces
  • 2.6. Condicional doble: si entonces si-no fin-si
  • 2.7. Alternativa múltiple: Según… en caso de
  • 2.8. Ejercicios de aplicación
  • 3.1. Concepto de estructura de repetición
  • 3.2. Concepto de bucle e iteración
  • 3.3. Concepto de acumulador
  • 3.4. Concepto de contador
  • 3.5. Estructura repetir hasta
  • 3.6. Resolución de problemas usando repetir/hasta-que
  • 3.7. Estructura mientras
  • 3.8. Resolución de problemas usando Mientras
  • 3.9. Estructura Para
  • 3.10. Resolución de problemas usando Para
  • 3.11. Ejercicios de aplicación

Lectura 2: Programación Estructurada Unidad 2: Programación Estructurada

2.1. Estructuras de programación
Hay algunas consideraciones muy importantes a la hora de diseñar algoritmos. La legibilidad de los algoritmos y posteriormente de los programas que los codifican, exige que su diseño sea fácil de comprender y su flujo lógico fácil de seguir. La programación modular nos enseña a descomponer un programa en módulos más simples de programar, y la programación estructurada permite la escritura de programas fáciles de leer y modificar. La programación estructurada es una forma de escribir programas de forma clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración o repetitivas Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones. A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior. El teorema del programa estructurado, fue enunciado y demostrado por Böhm-Jacopini. Este teorema demuestra que todo programa puede escribirse utilizando únicamente tres tipos de instrucciones de control. Solamente con esas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante tres básicas. En un programa estructurado el flujo lógico se gobierna por las estructuras de control básicas, estas son: 1. Secuenciales. 2. Repetitivas. 3. Selección.

Ventajas de la programación estructurada 1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.

Materia: Programación Lógica Profesor: Ing. Silvia A. Carrera

-1-

2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí. 3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente. 4. Reducción de los costos de mantenimiento de los programas. 5. Programas más sencillos y más rápidos (ya que es más fácil su optimización). 6. Los bloques de código son auto explicativos, lo que facilita la documentación. 7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma directa, por estar prohibida su utilización, están incluidas implícitamente en las instrucciones de selección e iteración. 8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación. 9. La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.

Inconvenientes de la programación estructurada: El principal inconveniente de este método de programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo; esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero es recomendable para su mantenimiento y funcionalidad). En realidad, cuando se programa hoy en día (inicios del siglo XXI) se suelen utilizar, tanto las técnicas de programación estructurada como las de programación modular, de forma conjunta y por lo tanto es posible que cuando uno haga referencia a la programación estructurada esté considerando también las técnicas de modularizaciones.

Materia: Programación Lógica Profesor: Ing. Silvia A. Carrera

-2-

Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro de funciones o de procedimientos.

2.2. Estructuras secuencial
Una estructura secuencial, es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se desarrollan de tal manera que la salida de una es la entrada de la siguiente y así sucesivamente, hasta alcanzar el final del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica se muestra a continuación junto con la codificación en pseudocódigo:

2.3. Ejercicios usando estructura secuencial. Entrada y salida de información
Ej1) Calcular y mostrar por pantalla la suma y el producto de dos números enteros ingresados por teclado. Pseudocódigo: Algoritmo CalcularSumProd Var: entero: a, b, suma, prod //declaración de variables Inicio: Escribir („ingresar dos números enteros‟) // se solicita el ingreso de datos desde el teclado Leer (a,b ) // se toman los valores del teclado y se guardan en las posiciones de memoria //llamadas a y b suma  a +b // se realiza la suma de los contenidos de a y b prod  a * b // se realiza el producto de los contenidos de las variables a y b

Materia: Programación Lógica Profesor: Ing. Silvia A. Carrera

-3-

escribir ( ´la suma es:´, suma, ´y el producto es ´, prod) // se muestra por pantalla un mensaje //junto a los valores calculados fin // fin del algoritmo

El diagrama de flujo se muestra en la figura 1

Inicio

Escribir („ingresar dos números enteros‟)

Leer (a,b)

suma a +b prod  a*b

Escribir („la suma es‟, suma, „y el producto es‟,prod)

fin

Figura 1 Las dos barras inclinadas “//” indican que lo que sigue a continuación de ellas hacia la derecha es un comentario. Ej2) Calcular el salario neto de un trabajador, en función del número de horas trabajadas, precio de la hora de trabajo. Se considerarán descuentos fijos 20% del salario bruto. El salario neto se calcula como el salario bruto menos los impuestos.

Materia: Programación Lógica Profesor: Ing. Silvia A. Carrera

-4-

5. salNeto) fin // fin del algoritmo El diagrama de flujo se muestra en la figura 2 2. se utilizan para tomar decisiones lógicas. salBruto. Según-sea caso de. salario bruto y neto. Carrera -5- . si entonces si-no fin-si. 2. monto por hora ´) Leer (nombre. de ahí que también se llaman estructuras de decisión o alternativa Recordemos que una expresión se evalúa como verdadera o falsa. Pseudocódigo: Algoritmo Calcula_salarios Var: real: precioHora. Estructura condicional. salNeto. Las instrucciones selectivas o de condición.4. mostrar por pantalla nombre. precio hora y cantidad de horas.20* salBruto salNeto  salBruto – impuesto escribir ( nombre. cantHora) salBruto  cantHora * precioHora impuesto  0. Las estructuras condicionales se clasifican en:  Simples  Dobles  Múltiples Palabras reservadas de esta estructuras son: si entonces fin-si. La especificación formal de algoritmo tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Silvia A. Estas estructuras establecen distintas posibilidades o caminos a seguir según el resultado de una expresión.Ingresar nombre. Este es el caso cuando existe un número de terminado de posibles alternativas resultantes de la evaluación de una determinada condición. salBruto. Condicional simple: Si entonces Materia: Programación Lógica Profesor: Ing. impuesto cadena: nombre real: cantHoras Inicio: // se solicita el ingreso de datos desde el teclado //declaración de variables Escribir( ´ingresar nombre.precioHora. cantidad horas trabajadas.

impuesto Escribir (nombre.Evalúa una expresión. Palabras reservadas de esta estructura: si entonces fin-si Pseudocódigo Inicio Escribir(„ingresar nombre. Silvia A. salNeto) fin Figura 2 …… si (expresión lógica) entonces Materia: Programación Lógica Profesor: Ing. cantHora) salBruto cantHoras* precioHora impuesto 0. salBruto. Carrera -6- . si esta es verdadera ejecuta la acción o acciones especificadas. Es decir la estructura alternativa simple si-entonces ejecuta una o varias acciones cuando se cumple determinada condición. monto por hora‟) Leer (nombre. precioHora. es decir se saltean las instrucciones asociadas al si. cantidad horas trabajadas. si es falsa no realiza ninguna acción. y se prosigue con la programación.20 * salBruto salNeto  salBruto .

se muestra el diagrama de flujo. Si la expresión lógica resulta ser falsa. En la figura 3. que se encuentran a continuación de la palabra reservada entonces.6. En la figura 4. de esta estructura de selección simple. y las que sigue al si-no. Carrera -7- . si-no sentencia4 sentencia5 ……… fin-si sentencia 7 sentencia 8 ………. en función del cumplimiento o no de una determinada condición Evalúa una expresión lógica. Palabras reservadas de esta estructura: si entonces si-no fin-si El pseudocódigo de esta estructura de selección doble es: …… si (expresión lógica) entonces sentencia1 sentencia2 ……….sentencia1 sentencia2 sentenciaN fin-si sentencia4 sentencia5 ……… Observar que en el pseudocódigo las acciones que siguen a la palabra reservada. y se ejecutan las acciones asociadas al si-no. Esta forma de escribir aumenta la legibilidad de la estructura y este es el medio más idóneo para representar algoritmos. se saltean las acciones que se encuentras ubicadas después del entonces. Materia: Programación Lógica Profesor: Ing. si esta es verdadera ejecuta la acción o acciones especificadas. 2. se muestra el diagrama de flujo de esta estructura de selección doble. entonces. Silvia A. Condicional doble: si entonces si-no fin-si La estructura anterior es bastante limitada y normalmente se necesitará una estructura que permita elegir entre dos opciones o alternativas posibles. se encuentran indentadas en relación a las palabreas reservadas si y fin-si.

Este tipo de estructura se utiliza cuando el problema se presenta naturalmente dividido claramente en dos posibilidades. y cuestiones de este tipo. Carrera -8- . por lo tanto se puede implementar un filtro para impedir el ingreso de este elemento. Claramente en este requerimiento. el problema podría ser el ingreso del número 0. por ejemplo preguntarse si un número es primo o no lo es. Una codificación posible es: Materia: Programación Lógica Profesor: Ing. falsa Expresión lógica verdadera Sentencia1 Sentencia2 sentenciaN Sentencia4 Sentencia5 …………… Figura 3 Por ejemplo: 1) Desarrollar un algoritmo que permita determinar si un número ingresado por teclado es positivo o negativo. que advierta al usuario que no debe ingresar el número 0. el número ingresado o es positivo o es negativo. lo cual se puede hacer por codificación o desplegando un mensaje en pantalla. no hay otra posibilidad. Silvia A. determinar si un número es par o impar.

Carrera -9- . Silvia A.Algoritmo ClasificaNum Var: entero: num verdadera falsa Expresión lógica Sentencia4 Sentencia5 …………… Sentencia1 Sentencia2 ……… Sentencia 7 Sentencia 8 ……… Figura 4 inicio: mostrar ( „ingresar un número entero que no sea 0‟) leer ( num) si num > 0 entonces mostrar ( „el numero ingresado es positivo‟) si-no mostrar („el numero ingresado es negativo‟) fin si fin EXPLICACION: Materia: Programación Lógica Profesor: Ing.

emplearemos esta segunda opción.En la sección de declaración de variables. Silvia A. por lo tanto se puede implementar un filtro para impedir el ingreso de este elemento. como el anterior. Una codificación posible es: Algoritmo ClasificamParImpar Var: entero: num inicio: mostrar („ingresar un número entero que no sea 0‟) leer ( num) si (num mod 2) = 0 entonces mostrar („el numero ingresado es par‟) si-no mostrar („el numero ingresado es impar‟) fin si fin EXPLICACION: En la sección de declaración de variables. que advierta al usuario que no debe ingresar el número 0. En este requerimiento. Luego termina la estructura de selección doble con la palabra reservada fin-si. se declara una sola variable de tipo entero llamada num. En la sección de inicio (donde comienza la ejecución) la función estándar mostrar ( ) despliega una cadena de caracteres (conjunto de caracteres) en la pantalla. Si la condición resulta falsa. el número entero ingresado o es par o es impar. A continuación comienza la estructura de selección doble. no hay otra posibilidad. Si num es mayor que 0 entonces se despliega el mensaje ´el número ingresado es positivo. La palabra reservada fin. Carrera . En la sección de inicio (que se corresponde con la parte que es ejecutable en una codificación de cualquier lenguaje) la función estándar mostrar ( ) despliega una cadena de caracteres (conjunto de caracteres) en la pantalla. lo cual se puede hacer por codificación (para lo cual necesitaríamos una estructura repetitiva que aún no se han visto) o desplegando un mensaje en pantalla. indica que el algoritmo terminará. 2) Desarrollar un algoritmo que permita determinar si un número ingresado por teclado es par o impar. se muestra en la figura 5. Materia: Programación Lógica Profesor: Ing. se despliega el mensaje en pantalla: ´el número ingresado es negativo´.10 - . consiste en comparar el valor del número ingresado (num) con 0. El diagrama de flujo. en este caso la expresión lógica que se utiliza para determinar si un número es positivo. A continuación la función estándar leer () permite guardar el dato ingresado desde el teclado en la variable entera num. una situación problemática es el ingreso del número 0. se declara una sola variable de tipo entero llamada num. A continuación la función estándar leer () permite guardar el dato ingresado desde el teclado en la variable entera num.

Según que se elija uno de estos valores en la condición. consiste en comparar el resultado de la operación num mod 2 con cero. la comparación da como resultado verdadero. Materia: Programación Lógica Profesor: Ing. El valor de esta expresión se compara lógicamente con cero. 1.A continuación comienza la estructura de selección doble. Este resultado. Silvia A. Si el número ingresado fue par el resto de la división entera entre num y 2 da 0 (cero). con lo cual se despliega en pantalla un mensaje indicando esta situación. Recordemos que el operador binario mod determina el resto de una división entera entre num (dividendo) y 2 (divisor). En caso contrario el programa toma el otro camino lógico.11 - . desplegando el mensaje opuesto en pantalla.7. luego se compara con 0. verdadera falsa Expresión lógica Sentencia1 Sentencia2 ……… Sentencia4 Sentencia5 …………… Sentencia 7 Sentencia 8 ……… Figura 5 El diagrama de flujo. 2. L estructura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos. 2. se realizará una de las n acciones. Es bastante común tener situaciones donde se deba elegir entre más de dos alternativas. Alternativa múltiple: Según… en caso de. 3. El rombo en el diagrama de flujo.…n. en este caso la expresión lógica que se utiliza para determinar si un número es par. se muestra en la figura 6. Carrera . muestra un punto de bifurcación en el programa.

que solo puede ser entera o de tipo carácter. será el Materia: Programación Lógica Profesor: Ing. Silvia A. Según el valor que asuma esta variable.12 - .Esta expresión requiere una variable. con la cual se controla cual es el camino que se va a elegir. Carrera .

Carrera . Silvia A.inicio Mostrar (´Ingresar un número entero que no sea 0´) Ingresar (num) falso num > 0 verdadero Mostrar (el numero ingresado es negativo Mostrar (él número ingresado es positivo´) fin Figura 6 Materia: Programación Lógica Profesor: Ing.13 - .

en esta situación. La codificación en pseudocódigo es: …… Según-sea opción hacer caso op1: accion1 accion2 …. si esta palabra reservada se decide usar. caso opN: accionN1 accionN2 …. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo DiaSemana Var: entero: opcion inicio: mostrar („ingresar un número entero entre 1 y 7‟) leer (opción) según-sea opción hacer caso 1: mostrar („DOMINGO‟) caso 2: mostrar („LUNES‟) caso 3: mostrar („MARTES‟) caso 4: mostrar („MIERCOLES‟) caso 5: mostrar („JUEVES‟) caso 6: mostrar („VIERNES‟) caso 7: mostrar („SABADO‟) si-no: mostrar („ERROR‟) fin-según fin Materia: Programación Lógica Profesor: Ing. Silvia A. A continuación se presentan algunos ejemplos de esta estructura selectiva.camino lógico que se seguirá.14 - . si-no: accion5 accion6 fin-segun ………. El diagrama de flujo se muestra en la figura 7. Ej1) Se desea implementar un algoritmo que escriba por pantalla el nombre del día de la semana. ……. También es posible que el contenido de esta variable no sea igual a ninguno de los valores que expresamente se indique en los casos. el flujo del programa realiza las acciones asociadas al si-no. caso op2: accion3 accion4 …. según cuál sea el valor que una variable de tipo entero introducido por teclado. Carrera .

5. En la figura 8 se muestra el diagrama de flujo. Ej2) Se desea implementar un algoritmo que permita ingresar por teclado un número comprendido entre 1 y 10 (inclusive) y que el algoritmo determine si el número entero ingresado es par o impar. es decir se mostraría por pantalla el mensaje ERROR. y luego terminará el programa. Por ejemplo si el usuario introduce por teclado el entero5 entonces se mostrará por pantalla el mensaje: JUEVES. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo ParImpar Var: entero: dato Materia: Programación Lógica Profesor: Ing. Si el número que se ingresa no está comprendido en el intervalo cerrado que se pide. Luego de la comprobación se mostrará por pantalla un mensaje indicando si el número fue par o impar. 6 y 7. Carrera . terminar el programa indicando por pantalla tal situación.op1 opcion accion1 accion2 …… si-no op2 opN accion6 accion7 accion3 accion4 ……… accionN1 accionN2 ……… Figura 7 EXPLICACION: Se declara una variable entera llamada opción. Si el usuario llegase a introducir un valor distintos de estos. 2. 3.15 - . se ejecutaría la acción correspondiente al si-no. Los valores posibles para esta variable son: 1. Silvia A. 4.

16 - . Silvia A. Carrera .inicio Figura 8 Mostrar (‘ingresar un número entero entre 1 y 7’) Leer (opción) 1 si-no opcion Mostrar (´DOMINGO´) Mostrar (ÉRROR´) 2 6 7 Mostrar (´LUNES´) Mostrar (´SABADO´) 3 4 5 Mostrar (´VIERNES´) Mostrar (´MARTES´) Mostrar (´MIERCOLES´) Mostrar (´JUEVES´) fin Materia: Programación Lógica Profesor: Ing.

No es un anidamiento doble. es poco común. habiendo introducido un número válido. Entonces. hay una estructura dentro de otra.inicio: mostrar ( „ingresar un número entero entre 1 y 10‟) leer (dato) si dato > = 1 y dato < = 10 entonces según-sea dato hacer caso 1. 3.17 - . 5. Se utilizan dos casos. para ello se construye la siguiente expresión: dato > = 1 y dato < = 10 la expresión completa da verdadera cuando dato es mayor o igual 1 y a su vez ( simultáneamente) dato es menor o igual a 10. El siguiente código: Si ………. es decir una de las partes de la comparación o ambas partes de la comparación son falsas.Obeservar que dato se compara dos veces ( una vez por cada extremo del intervalo). Este operador binario. 4. Cantidad de estructuras en cascada (cualquiera sea su tipo) -1 = numero de anidamientos. y en el otro caso se colocan los números pares del intervalo separados por coma. lo cual lo hace muy interesante para el análisis.. 6. 10: mostrar („par‟) fin-según si-no mostrar(„error‟) fin-si fin EXPLICACION: Se declara una sola variable entera. El caso de aplicación de esta estructura. Silvia A. el resultado final del operador “y” da falso. entonces Según-sea ……. dato. La función leer ( ) permite capturar el ingreso del usuario y guardar ese calor en la variable dato. Es importante destacar el anidamiento de estructuras. 9: mostrar („impar‟) caso 2. Carrera . caso contrario. esta estructura lo que permite es procesar el programa si el número introducido está dentro del intervalo pedido. 7. A continuación hay una estructura selectiva doble. 8. entre ambas comparaciones se encuentra el operador ´y´ ( conjunción). Se usa la función mostrar ( ) para desplegar por pantalla un mensaje que solicita el ingreso de un número entero en el intervalo cerrado de 1 a 10. Materia: Programación Lógica Profesor: Ing. en uno de ellos se colocan todos los valores impares separados por coma. se pasa a la estructura de selección múltiple según-sea caso fin-según. hacer //……… Fin-según Fin-si Representa un anidamiento. da como resultado verdadero cuando ambas partes son verdaderas. que tiene este ejercicio.

Ej1) Se desea implementar un algoritmo que permita ingresar por teclado un número comprendido entre 1 y 10 (inclusive) y que el algoritmo determine si el número entero ingresado es múltiplo de dos. uno por cada día de la semana y un si-no para que entre por este punto de bifurcación. Si el número que se ingresa no está comprendido en el intervalo cerrado que se pide. cuando el número ingresado no esté comprendido entre 1 y 7. se pasa a la estructura de selección múltiple segúnsea caso fin-según. Silvia A. El algoritmo determinará si el número entero ingresado está o no en el intervalo válido. Entonces. 2. habiendo introducido un número. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Dia_Semana Var: entero: dia inicio: mostrar ( „ingresar un número que represente día de la semana‟) leer (dia) según-sea dia hacer caso 1: mostrar („domingo‟) caso 2: mostrar („lunes‟) caso 3: mostrar („martes‟) caso 4: mostrar („miércoles‟) caso 5: mostrar („jueves‟) caso 6: mostrar („viernes‟) caso 7: mostrar („sábado‟) si-no: mostrar („error‟) fin-según fin EXPLICACION: Se declara una sola variable entera. terminar el programa indicando por pantalla tal situación.Ej3) Se desea implementar un algoritmo que permita ingresar por teclado un número comprendido entre 1 y 7 (inclusive) correspondiente al día de la semana (1 representa Domingo).8. dia. Se utilizan 7 casos. terminar el programa indicando por pantalla tal situación. Ejercicios de aplicación. Luego de la comprobación se mostrará por pantalla un mensaje indicando mediante una cadena de caracteres el día que representa el número ingresado. Se usa la función mostrar ( ) para desplegar por pantalla un mensaje que solicita el ingreso de un número entero en el intervalo cerrado de 1 a 7. Luego de la comprobación se mostrará por pantalla un mensaje indicando el resultado. Una posible codificación puede ser la siguiente: Materia: Programación Lógica Profesor: Ing.18 - . Carrera . La función leer ( ) permite capturar el ingreso del usuario y guardar ese valor en la variable día. Si el número que se ingresa no está comprendido en el intervalo cerrado que se pide.

B. Silvia A. C. B. mayor) fin Materia: Programación Lógica Profesor: Ing. Carrera .Pseudocódigo Algoritmo Procesa_numero Var: entero: dato inicio: mostrar ( ´ingresar un número entero entre 1 y 10‟) leer (dato) si dato > = 1 y dato < = 10 entonces si dato mod 2 = 0 entonces mostrar („el número ingresado es par y está en el intervalo de 1 a 10‟) si-no mostrar („el número es impar y está comprendido en el intervalo de 1 a 10‟) fin-si si-no mostrar(„error‟) fin-si fin Ej2) Se desea implementar un algoritmo que permita ingresar por teclado tres números A. C) si A > B entonces si A > C entonces mayor  A si-no mayor  C fin-si si-no si B > C entonces mayor  B si-no mayor  C fin-si fin-si mostrar („el mayor número es: „.19 - . Mayor inicio: mostrar ( „ingresar tres números enteros‟) leer (A. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Muestra _mayor Var: entero: A. C enteros y que muestre por pantalla el número más grande. B.

dato2) resul  dato1 +dato2 mostrar (´la suma es : ´. Se tomará desde el teclado dos números enteros. El usuario ingresará un entero correspondiente a la operación que quiere realizar. result) caso 2: mostrar (´ingresar dos números enteros para multiplicar´) leer ( dato1. Mostrar un mensaje por pantalla de esta situación se da. dato2. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Menu_suma_mul Var: entero: dato1. result) si-no: mostrar (´error´) fin-según fin Ej4) Implementar un programa que permita determinar si dos números ingresados por teclado están ordenados en forma creciente.20 - . dato2 inicio: mostrar ( ´ingresar dos números enteros´) leer (dato1. 2 multiplicar. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Determina_orden Var: entero: dato1. Silvia A. Carrera .2 multiplicar´) leer (opcion) según-sea opcion hacer caso 1: mostrar (´ingresar dos números enteros para sumar´) leer ( dato1. dato2) result dato1 * dato2 mostrar (´la multipliocacion es:´.Ej3) Implementar un programa que permita mostrar por pantalla un menú con las opciones: 1 sumar. dato2) si dato1 < > dato2 entonces si dato1 < dato2 entonces mostrar (´los números fueron ingresados en forma ordenada de menor a mayor´) si-no mostrar (´los números fueron ingresados en forma ordenada de mayor a menor´) fin-si si-no mostrar (´los números ingresados son iguales´) Materia: Programación Lógica Profesor: Ing. opción. resul inicio: mostrar ( ´que operación desea realizar: 1 suma.

dato2 inicio: mostrar ( ´ingresar dos números enteros´) leer (dato1. dato4) prom  dato1 +dato2+dato3 +dato4 mostrar (´el promedio es:´.21 - . prom) fin Ej6) Realizar un algoritmo que determine si dos números introducidos por teclado uno de ellos es divisor del otro. dato2. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Determina_Divisibilidad Var: entero: dato1. dato3. Silvia A. dato4 real: prom inicio: mostrar ( ´ingresar cuatro números enteros´) leer (dato1.fin-si fin Ej5) Implementar un programa que permita leer 4 números enteros por teclado. Carrera . y muestre su promedio por pantalla. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo DeterminaPromedio Var: entero: dato1. dato2. dato3. dato2) si dato1 > dato2 entonces si (dato1 mod dato2) = 0 entonces mostrar (´los números son divisibles´) si-no mostrar (´los números no son divisibles´) fin-si si-no si (dato2 mod dato1) = 0 entonces mostrar (´los números son divisibles´) si-no mostrar (´los números no son divisibles´) fin-si fin-si fin Materia: Programación Lógica Profesor: Ing.

Bibliografía obligatoria para la unidad 2: “Fundamentos de programación. Unidad 3: Programación Estructurada: Estructura repetitiva 3. salida. Estructuras de datos y Objetos”. es decir: ……. Silvia A. Algoritmos. De lo contrario la iteración no acabaría nunca. para lograr la repetición de al menos una instrucción.22 - . una para leer desde el teclado la nota. la iteración se asocia a un número entero que indica el número de veces que se repite un trozo de código. ya sea que se conozca el número de notas a procesar. Por ejemplo si se desea sumar notas de alumnos. Se denomina iteración al hecho de repetir la ejecución de una secuencia de acciones.1. se necesitan dos sentencias. o por medio de una expresión o condición que se va modificando dentro del bloque de sentencias que forman el bucle. abren la posibilidad de realizar una secuencia de instrucciones más de una vez. Concepto de estructura de repetición Hasta ahora hemos trabajado. Concepto de bucle e iteración Un bucle. Las instrucciones iterativas o de repetición. Materia: Programación Lógica Profesor: Ing. Capítulo 4 (páginas 131 a 162).2. es una sección de código que se repite. Carrera . y otra que realice sumas parciales. 3. asignaciones. En este capítulo estudiaremos las distintas formas que existen en pseudocódigo. Hay una gran variedad de situaciones que requieren que una o varias instrucciones se repitan varias veces. Tercera edición. instrucciones secuenciales y de selección. ya sean cálculos u otro tipo de instrucciones. Luis Joyanes Aguilar. instrucciones de entrada. para este ejemplo. expresiones y operadores. Es decir cuando se termina de ejecutar la última instrucción del conjunto. el flujo de control retorna a la primera sentencia y comienza una nueva repetición de las sentencias que forman esa sección de código. Mc Graw Hill. Suma  0 // se inicializa una sola vez // sentencias que se repiten Leer ( nota) Suma  suma + nota Es necesario conocer alguna manera de detener la repetición.

Estructura repetir hasta Esta estructura repetitiva se utiliza cuando se desea que al menos un bloque se ejecute una vez. son variables que realizan funciones específicas dentro de un programa. Tanto el acumulador como el contador.23 - . en este caso hay que inicializar la variable a 1. la variable suma. se incrementa su valor ( 1 en la mayoría de los casos). en la mayoría de los casos) antes de comenzar su función.3. antes de comprobar la expresión de repetición. siendo preciso inicializarlo a cero. Concepto de contador Un contador es un campo de memoria dinámica cuyo valor se incrementa en una cantidad fija. También puede utilizarse en aquellas situaciones en las que hay que obtener un total como producto de distintas cantidades. 3. En general un contador se utiliza:  Para contar el número de veces que es necesario repetir una acción ( variable de control de un bucle)  Para contar un suceso en particular solicitado por los requerimientos del problema (asociado a un bucle o independientemente). y generalmente asociado a un bucle. Carrera . El bucle repetir /hasta-que.5. Concepto de acumulador Un acumulador es un campo de memoria dinámica cuyo valor se incrementa sucesivas veces en cantidades variables. Silvia A. se repite mientras el valor lógico de la expresión booleana sea falsa.4. Un contador toma un valor inicial (0. Es decir el bucle se ejecuta primero y luego se comprueba le expresión para producir una nueva repetición o no del bucle. si se desease calcular el promedio de notas en ese curso. El pseudocódigo de esta estructura se muestra a continuación: Materia: Programación Lógica Profesor: Ing. Se utiliza en aquellos casos en que se desee obtener un total de un conjunto de cantidades.3. se inicializa a 0. representa un acumulador: Suma  0 // se inicializa una sola vez //sentencias que se repiten Leer (nota) Suma  suma + nota Tener presente que la variable acumulador suma. 3. En el ejemplo de las notas de los alumnos de un curso. y cada vez que se presenta el suceso a contar. positiva o negativa.

Silvia A. Por ejemplo un programa necesita procesar edades. y seguirá en esta situación hasta que se introduzca un valor de edad válido. sentncia1 …………… sentenciaN falsa expresión verdadera Figura 9 Un uso muy frecuente de este tipo de estructura. es la validación de datos. Resolución de problemas usando repetir/hasta-que Ejemplo 1) Se desea implementar un programa que permita ingresar solo números enteros positivos.. por ejemplo un número entero comprendido entre 1 y 120.24 - . y mediante una estructura repetir/hasta-que se solicita ingresos de números que representen una edad válida.……………. repetir // sentencia1 // sentenciaN hasta que <expresión> ……… El diagrama de flujo de esta estructura se muestra en la figura 9. Carrera . es decir si el usuario introduce 999.6. el programa mostrará por pantalla el promedio de los 10 número enteros positivos ingresados desde el teclado. el programa desplegará un mensaje de error por pantalla y solicitará un nuevo ingreso de dato. 3. Materia: Programación Lógica Profesor: Ing. entonces se solicita el ingreso de la edad.

la condición es verdadera y por lo tanto el bucle no se repite. Si el número que se introduce no es mayor a 0. Ejemplo 2) Se desea implementar un programa que permita ingresar solo letras mayúsculas. se prosigue con el aumento del contador. El programa mostrará por pantalla las 20 primeras letras mayúsculas introducidas por teclado. si por el contrario el dato introducido es mayor a 0. entonces la condición de la estructura repetitiva es falsa y el bucle se repite. suma real: prom inicio: cont  0 suma  0 repetir cont cont + 1 repetir mostrar ( ´ingresar número entero mayor a cero´) leer (num) hasta-que num > = 0 suma  suma + num hasta-que cont > = 10 prom  suma / 10 mostrar ( “ el promedio es: “. Silvia A. es la que controla que se sumen los primeros 10 números enteros positivos. prom) fin EXPLICACION: Este ejercicio tiene algunas cuestiones interesantes. La estructura repetir/hasta-que interna controla que el número ingresado sea mayor a 0.Una posible codificación podría ser: Algoritmo CalculaPromedio Var: entero: cont. Tiene dos estructuras repetir/hasta-que anidadas. Otro aspecto interesante es que utiliza dos variables con funciones específicas.25 - . num. Carrera . es decir que sea positivo. es decir se pide un nuevo ingreso de dato desde el teclado. Una posible codificación podría ser: Algoritmo MuestraMayúsculas Var: entero: cont caracter: letra inicio: cont  0 repetir cont cont + 1 repetir mostrar ( ´ingresar letra mayúscula´) Materia: Programación Lógica Profesor: Ing. La estructura repetir (hasta-que más externa. la acumulación en la variable suma. y suma como acumulador. cont como contador.

y el factorial de 1! También es 1. con lo cual el bucle se repite. y como puede apreciarse el contador (variable cont) no se incrementa. La expresión: letra > = „A‟ y letra <= „Z‟. el usuario introduce una letra minúscula. de tipo carácter para guardar el ingreso que realice el usuario desde el teclado. para contar la cantidad de letras mostradas por pantalla (deben ser 20). La estructura repetir/hasta-que interna. si por el contrario.leer (letra) hasta-que (letra > = „A‟ y letra <= „Z‟) mostrar („letra‟) hasta-que cont > = 20 fin EXPLICACION: Para realizar este programa necesitamos dos variables de distinto tipo. otra. es la que permite que se muestren las 20 letras por pantalla. una de tipo entero: cont. Una posible codificación podría ser: Algoritmo CalculaFactorial Var: entero: num. Silvia A.26 - . Ejemplo 3) Desarrolla un algoritmo que permita calcular el factorial de un número N que responde a la fórmula: N! = N * (N-1) * (N-2) … 2* 1 3! = 3 * 2 * 1 = 6 5! = 5 * 4 * 3 * 2 * 1= 120 Solo existe el factorial de números enteros igual o mayor que 0 El factorial de un número es otro número. Por convención matemática el factorial de 0! Es 1. Hay dos estructuras repetir/hasta-que anidadas. Carrera . Recordemos que esta expresión solo da un resultado booleano verdadero. entonces esta expresión da como resultado verdadera y el bucle interno no se repite. La estructura repetir/hasta-que externa. en esta estructura la expresión que controla la iteración es una expresión de tipo y ó and. esto significa que una se ejecuta dentro de la otra. Si el usuario introduce una letra mayúscula. es la que valida que el carácter ingresado por teclado sea una letra mayúscula. cont real: fact inicio: mostrar ( „ingresar un número a calcular su factorial‟) // no se realiza la validación ingresar ( num) si num = 0 o num =1 entonces Materia: Programación Lógica Profesor: Ing. establece un intervalo cerrado. Además si el usuario ingresa un carácter que no sea letra (ni mayúscula ni minúscula) el bucle interno se repite. está estará fuera del intervalo y la expresión dará un resultado booleano falso. cuando ambas partes de la comparación son verdaderas.

El usuario no puede ingresar un número negativo. Dentro del si-no. El mismo algoritmo puede ser realizado con un contador que se incrementa en lugar de usar decrementos.fact  1 si-no fact  num cont  num-1 repetir fact  fact * cont cont  cont -1 hasta-que cont < =1 fin-si mostrar („El factorial de: „. Carrera . „es:‟ fact) fin EXPLICACION: En este ejercicio se ha omitido la validación del dato de entrada. en ambos casos por convención matemática su factorial es igual a 1. El factorial del número que ingrese el usuario se calcula y guarda en la variable real fact. en primer lugar porque no existe el factorial de un número negativo y en segundo lugar el algoritmo calcularía cualquier cosa.num. La estructura de selección doble se la utiliza para diferenciar el caso en el cual el usuario introduzca el 1 ó el número 0.27 - . es decir no se verifica que el usuario ingrese un número mayor o igual a cero. también es específico de los enteros grandes). La expresión matemática es: 5!= 1 * 2 * 3 * 4 *5= 120 La versión con contador que se incrementa es: Algoritmo CalculaFactorial Var: entero: num. por lo tanto no hay que realizar cálculo alguno. porque el tipo de dato real puede almacenar valores o cifras más grandes que los enteros (recordar que el tipo de dato real. está la iteración para realizar el cálculo que implica la expresión matemática del factorial de un número. no se utiliza un entero. Para cualquier otro número. Silvia A. debe emplearse la fórmula matemática ya mencionada. cont real: fact inicio: mostrar ( „ingresar un número a calcular su factorial‟) // no se realiza la validación ingresar ( num) si num = 0 o num =1 entonces fact  1 si-no Materia: Programación Lógica Profesor: Ing. no solo es para valores decimales.

la expresión vuelve a evaluarse.fact  1 cont  1 repetir fact  fact * cont cont  cont +1 hasta-que cont > num fin-si mostrar („El factorial de: „.7. el cuerpo del bucle no se ejecuta ninguna vez. El diagrama de flujo de esta estructura se muestra en la figura 10. //sentenciaN fin-mientras ……. „es:‟ fact) fin 3. si al llegar por primera vez al bucle mientras la condición es falsa. Tener presente que primero se evalúa la expresión P. si esta es verdadera. por algún requerimiento del problema. Es importante tener claro que si se desea que la iteración acabe en la expresión asociada al mientras debe haber alguna variable que cambie dentro del bucle. de lo contrario se corre el riesgo de generar estructuras repetitivas que no acaban nunca. Materia: Programación Lógica Profesor: Ing. A veces se desea generar bucles infinitos.num. Estructura mientras El bucle se repite mientras la expresión P sea cierta (verdadera). Carrera . Con cada nueva iteración. En pseudocódigo la estructura mientras tiene la siguiente forma: ……… mientras <expresión P> hacer //sentencia1 …….28 - . A esto se le llama bucle infinito.. entonces se ejecutan el conjunto de sentencias asociadas al mientras. la ejecución del bucle se repite siempre que la expresión de cómo resultado booleano: verdadero. Silvia A.

falsa P verdadera sentencia1 …………… sentenciaN Figura 10 Existen dos cuestiones particulares: ejecución de un bucle cero veces y ejecución de bucles infinitos. porque así se los elabora. Por ejemplo: …….29 - . Materia: Programación Lógica Profesor: Ing. entonces las sentencias asociadas al bucle. Esto dependerá de los requerimientos del problema a resolver. nunca se ejecutarían. Silvia A. EJECUCION DE UN BUCLE CERO VECES: Como lo primero que ocurre en una estructura mientras/fin-mientras es la evaluación de la expresión. claramente dato2 NO ES MAYOR que dato1.. Carrera . inicio dato1  5 dato2  1 mientras dato2 > dato1 hacer leer ( t) mostrar (t) dato2  dato2 + 1 fin-mientras …. No hay iteración. Las sentencias: leer ( t) mostrar (t) dato2  dato2 + 1 no se ejecutan nunca. si esta llegará a ser falsa la primera vez que se ingrese a esta estructura. BUCLES INFINITOS Algunos bucles no tienen fin. pues dato1 contiene el entero 5 y dato2 contiene el entero 1..

La expresión asociada al mientras en este ejemplo es 1. Los bucles sin fin no intencionados son perjudiciales para la programación y se deben evitar siempre. Un ejemplo de bucle infinito es el siguiente: ……………. NOTA IMPORTANTE: Las pruebas o test en la expresiones booleanas es conveniente que sean mayor o menor que ( > ó >) en lugar de pruebas de igualdad o desigualdad.30 - . El número 1 (uno) es siempre verdadero. Carrera . la N-ésima potencia de X. Resolución de problemas usando Mientras Ejemplo 1) Se desea implementar un programa que permita ingresar dos número enteros positivos: X y N. N) hasta-que (X>=1 y N > -1) mientras N > 0 hacer pot  pot * X N N -1 fin-mientras mostrar ( ´La potencia de base:‟. El programa deberá calcular y mostrar por pantalla. X. „ y exponente: „. 3. N real: pot inicio: pot  1 repetir mostrar („ ingresar la base y el exponente de la potencia a calcular) leer ( X. Silvia A.. „es:‟. en especial si las variables involucradas son de tipo real. N.8. pot) fin Materia: Programación Lógica Profesor: Ing. Son más seguras.Un bucle que nunca se termina se denomina bucle infinito o sin fin. por lo tanto este bucle no acaba nunca. inicio dato1  5 dato2  1 mientras 1 hacer leer ( t) mostrar (t) dato2  dato2 + 1 mostrar (dato2) fin-mientras …. Una posible codificación podría ser: Algoritmo CalculaProtencia Var: entero: X. y en especial en un lenguaje en particular.

mediante el algoritmo de restas sucesivas. Silvia A. El programa mostrará por pantalla el producto.B) acum  0 mientras A < > 0 hacer acum  acum + B A A -1 fin-mientras mostrar ( acum) fin Ejemplo 3) Se desea implementar un programa que permita obtener el cociente de dos números enteros positivos.Ejemplo 2) Se desea implementar un programa que permita obtener el producto de dos números enteros positivos. ingresados por teclado. Carrera . mediante el algoritmo de sumas sucesivas.4 = 6 Materia: Programación Lógica Profesor: Ing. 2x3= 2 + 2+ 2+ 2 =6 2x3=3+3 =6 Una posible codificación podría ser: Algoritmo CalculaProducto Var: entero: A.31 - . Se muestra el algoritmo con ejemplos numéricos: a) 10 / 5 Primera resta 10-5 =5 N =1 Segunda resta 5-5 = 0 N = N +1 = 2 Por lo tanto cociente es 2 ( el valor de N) y el resto es 0 b) 10/4 10 > 4  Primera resta acum = 1 10 .B. El programa mostrará por pantalla el producto. acum inicio: mostrar ( „ingresar dos números enteros positivos‟) leer (A. ingresados por teclado.

fin-para En cualquiera de las dos formas. v es una variable entera. que debe ser declarada en el programa en la sección var. En pseudocódigo esta estructura tiene la forma de: desde v  vi hasta vf inc/dec paso hacer // acciones …………….6 > 4  Segunda resta 6 .4 = 2 acum = acum + 1 = 2 2 > 4 FALSO el proceso termina Por lo tanto el cociente es 2 (valor de acum) y el resto es 2 (resultado de la última resta) Una posible codificación podría ser: Algoritmo CalculaCociente Var: entero: A. según el paso elegido. Una estructura de control muy común es el ciclo para o desde.B) acum  0 mientras A > B hacer acum  acum + 1 A A . Estructura Para En muchas ocasiones se conoce de antemano el número de veces que se desea que un bucle se repita. acum inicio: mostrar ( „ingresar dos números enteros positivos‟) leer (A.B fin-mientras mostrar ( „ el cociente es.32 - . Silvia A.B. No puede ocurrir al mismo tiempo ambas situaciones. A) fin 3. acum. Carrera . empleando como índice una variable que se incrementa o decrementa en forma automática. se usa especialmente cuando se desea iterar un número conocido de veces.9. y el resto de la división es:‟. Los valores vi y vf son los valores inicial y final que tomará automáticamente la variable v. esta estructura por lo tanto... En el formato de esta estructura hay que elegir entre incrementar o decrementar la variable de control v. Materia: Programación Lógica Profesor: Ing.‟. fin-desde o también puede escribirse con el para para v  vi hasta vf inc/dec paso hacer // acciones …………….

se finaliza la Materia: Programación Lógica Profesor: Ing. y luego de ejecutar todas las sentencias que estén comprendidas dentro de la estructura (bucle).  desde v  1 hasta 5 inc 2 hacer // acciones ……………. Cuando iteración tras iteración. 5. y se prosigue con la próxima instrucción que esté a continuación del fin-desde. que el caso anterior.Se puede obviar la palabra inc cuando el incremento sea de1.  desde v  1 hasta 5 // acciones …………….. cuando v = 10 se saltea el bucle de la estructura desde y se prosigue con la próxima instrucción después del findesde. por lo tanto el bucle se repite 3 veces. fin-desde hacer Tiene el mismo efecto. paso. se finaliza la iteración. La presentación de algunas situaciones aclarará lo expresado anteriormente. y bucle tras bucle se va indexando de 1. la variable se inicializa en 10 y con la ejecución de cada bucle se decrementa en 2. fin-desde En este caso. 3. en nuestro caso de la variable v. Cuando se desee decrementar la variable de control de la estructura siempre deberá aparecer la palabra dec (aunque el decremento sea en 1). la variable se inicializa en 1 y con la ejecución de cada bucle se incrementa en 2. En este caso v toma los valores 1.  desde v  10 hasta 2 dec 2 hacer // acciones ……………... la variable de control se inicializa en 5. con el primer valor de v que supere el valor 5.33 - . fin-desde hacer En este caso la variable v se inicializa en 1. El bucle se repite 5 veces. En la estructura para/desde. Silvia A.. con el primer valor de v que sea inferior a el valor 2. fin-desde En este caso. automáticamente la variable v se incrementa en 1.  desde v  5 hasta 9 // acciones ……………. representa el valor a sumar o restar del valor inicial de la variable de control de la estructura. la variable de control v alcance el valor v = 6 no se realizan más iteraciones. Carrera .

6. Dependiendo del problema a solucionar. Pero siempre es posible reemplazar una de ellas por otras. Carrera . con las mismas expresiones. Sin embargo. pero con una notación diferente. con algunas variantes sencillas. 4 y 2 por lo tanto el bucle se repite 5 veces. Eso significa que diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras.. por ejemplo si se deseara acular en una variable la suma de los 10 primeros números enteros positivos que ingresa un usuario desde el teclado. podríamos tener los siguientes códigos: a) Usando estructura mientras/fin-mientras …… inicio suma  0 cant  1 mientras cant <= 10 hacer leer ( dato) suma  suma + dato cant  cant + 1 fin-mientras mostrar ( suma) …….8.34 - . EQUIVALENCIA ENTRE LAS ESTRUCTURAS REPETITIVAS Las estructuras repetitivas hasta aquí vistas son equivalentes unas con otras. las funciones matemáticas y lógicas toman el significado usual que tienen en matemática y lógica. es posible que alguna de las estructuras de repetición se adapte más fácilmente que otra al mismo problema.. Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Silvia A. En este caso la variable v toma los valores 10.iteración. b) Usando estructura repetir/hasta-que …… inicio suma  0 cant  1 repetir leer ( dato) suma  suma + dato cant  cant + 1 hasta-que cant >10 mostrar ( suma) ……. c) Usando la estructura desde/fin-desde …… inicio suma  0 desde cant  1 hasta 10 hacer leer ( dato) suma  suma + dato Materia: Programación Lógica Profesor: Ing.

Resolución de problemas usando Para A continuación se presentarán algunos programas a modo de ejemplo del uso de esta estructura repetitiva.fin-desde mostrar ( suma) ……. Ejercicio 1) Se dispone de una lista de N números ingresados por teclado. En la figura 11 se muestran bucles correctamente anidados. es posible insertar un bloque dentro de otro. mayor Materia: Programación Lógica Profesor: Ing. se desea determinar y mostrar por pantalla el valor del número mayor que se haya ingresado. cant real: dato. a) Figura 11 b) 3. Una posible codificación podría ser: Algoritmo DeterminaMayor Var entero: N. Silvia A.35 - . mientras que en la figura 12 se muestran anidamientos incorrectos. Las reglas para construir estructuras repetitivas anidadas son iguales en ambos casos: la estructura interna debe estar totalmente incluida dentro de la externa y no puede bajo ningún aspecto existir solapamiento.10. ESTRUCTURAS REPETITIVAS ANIDADAS De igual forma que se puede anidar o encajar estructuras de selección. Carrera ..

mayor. Una posible codificación podría ser: Algoritmo DeterminaMayor_Menor Var entero: N. Silvia A. menor Materia: Programación Lógica Profesor: Ing. Carrera .36 - . cant real: dato. se desea determinar y mostrar por pantalla el valor del número mayor y del menor que se hayan ingresado al mismo tiempo.a) b) Figura 12 inicio leer (N) leer ( dato) mayor  dato desde cant  2 hasta N hacer leer ( dato) si mayor < dato entonces mayor  dato fin-si fin-desde mostrar ( mayor) fin Ejercicio 2) Se dispone de una lista de N números ingresados por teclado.

Carrera . cantN.inicio leer (N) leer ( dato) mayor  dato menor  dato desde cant  2 hasta N hacer leer ( dato) si mayor < dato entonces mayor  dato fin-si si menor > dato entonces menor  dato fin-si fin-desde mostrar ( mayor. total real: dato.sumaNeg/cantN) mostrar ( „la media de los valores positivos es:‟. sumaPos.37 - . sumaNeg inicio cantP  0 cantN  0 sumaPos  0 sumaNeg  0 desde total  1 hasta 100 hacer leer ( dato) si dato > 0 entonces cantP  cantP+1 sumaPos  sumaPos + dato fin-si si dato < 0 entonces sumaNeg  sumaNeg + dato cantN  cantN + 1 fin-si fin-desde mostrar ( „la media de los valores negativos es: „. sumaPos/cantN) fin Materia: Programación Lógica Profesor: Ing. Una posible codificación podría ser: Algoritmo DeterminaMedia_Positivos_Negativos Var entero: cantP. al mismo tiempo. Silvia A. se desea determinar y mostrar por pantalla la media de los números positivos y la media de los números negativos que se hubiesen ingresado. menor) fin Ejercicio 3) Se leen desde el teclado 100 números.

Realizar 20 ingresos. nota. cant. Una posible codificación puede ser: Algoritmo DeterminaNumero_Aprobados Var entero: N.11. Y se desea contar la cantidad de alumnos aprobados (nota 5 o mayor a 5). Carrera .38 - . Una codificación puede ser: Algoritmo MuestraMayúsculas Var caracter: dato entero: cant inicio cant  0 repetir leer ( dato) si (dato > = „A‟ y dato < = „Z‟) o (dato > = „a‟ y dato < = „z‟) entonces mostrar ( dato) fin-si cant cant +1 hasta-que cant > = 20 fin Materia: Programación Lógica Profesor: Ing. Ejercicios de aplicación.3. Silvia A. cantApro inicio leer (N) // cantidad de alumnos cantApro  0 desde cant  1 hasta N hacer leer ( nota) si nota > = 5 entonces cantAmayor  cantApro + 1 fin-si fin-desde mostrar ( cantApro) fin Ejemplo 2) Mostrar por pantalla solamente las letras mayúsculas ingresadas por teclado. Ahora se realizarán ejercicios variados con las estructuras repetitivas vistas: Ejemplo1) Se desea leer las calificaciones de N alumnos de una clase de Informática.

contiene números enteros con los que se corresponden las letras minúsculas. si la letra es mayúscula convertirla a minúscula para luego mostrarla por pantalla. la letra b el 98. La letra a minúscula le corresponde el número 97. Una codificación puede ser: Algoritmo MuestraMinúsculas Var caracter: dato entero: cont inicio cont  0 repetir leer ( dato) si (dato > = „a‟ y dato < = „z‟) entonces mostrar ( dato) fin-si si (dato > = „A‟ y dato < = „Z‟) entonces dato  dato + 32 mostrar (dato) fin-si cont  cont +1 hasta-que cant > = 50 fin EXPLICACION: Los caracteres se almacenan en memoria mediante una codificación en 0 y 1. etc. es una minúscula mostrarla por pantalla. La tabla ASCII. A cada carácter le corresponde un número entero que se representa en código ASCII. Es decir entre la A y la letra a minúscula existen 32 posiciones de la tabla. también les corresponden números enteros consecutivos. mayúscula y minúscula. Por lo tanto no es necesario recordar la constante 32. existe una constante igual a 32. Cuando la letra se coloca entre comillas simple. Carrera . la letra c el 99 y así hasta llegar a la letra z minúscula. Silvia A. Lo mismo ocurre para la letra B y b. se está haciendo referencia al número entero que representa su codificación en ASCII. la letra A mayúscula le corresponde el número 65. los números (de 0 a 9). basta con saber la siguiente relación …… Var Materia: Programación Lógica Profesor: Ing. la letra C el 67 y así hasta llegar a la letra Z mayúscula. Para la misma letra. los signos de puntuación.39 - . A las letras minúsculas. Si el carácter ingresado. Las letras mayúsculas les corresponden números enteros consecutivos. la letra B el 66. las mayúsculas.Ejemplo 3) Realizar 50 ingresos de caracteres por teclado.

Todos los caracteres que no sean minúsculas o mayúsculas ( se convierten) se cuentan como ingreso válido para alcanzar la cifra 50. Entonces. Carrera . ……… cont  „a‟ – „A‟ // cont contiene 32 cont  „t‟ – „T‟ // cont contiene 32 y así para cualquier letra mayúscula y minúscula. El programa termina. con la primer vocal ( sea mayúscula sea minúscula) que se ingrese. Ejemplo 4) Realizar ingresos de caracteres por teclado y mostrarlos por pantalla.40 - . Una codificación puede ser: Algoritmo MuestraCaracter Var caracter: dato lógico: flag // bandera inicio flag  verdadero mientras flag = verdadero hacer leer ( dato) según-sea dato hacer caso „a‟ : flag  falso caso „A‟ : flag  falso caso „e‟ : flag  falso caso „E‟ : flag  falso caso „i‟ : flag  falso caso „I‟ : flag  falso caso „o‟ : flag  falso caso „O‟ : flag  falso caso „u‟ : flag  falso caso „U‟ : flag  falso fin-segun si flag = verdadero entonces mostrar ( dato) fin-si fin-mientras fin Materia: Programación Lógica Profesor: Ing. cuando la estructura selectiva si/si-no detecta en la expresión que el carácter ingresado es una letra mayúscula. entonces a su valor entero ASCII le suma 32 para convertirla en la misma letra pero en su forma minúscula. Silvia A.entero: cont .

lado3 Cadena: clave inicio clave  XXX mientras no (clave = „salir‟) hacer leer ( lado1.41 - . Carrera . lado2.Ejemplo 5) Ingresar 3 números desde el teclado. Una codificación puede ser: Algoritmo Clasifica_triangulos Var Real: lado1. El programa termina cuando se introduzca la palabra salir. lado2. isósceles ( dos lados iguales) o escaleno (3 lados distintos). El programa mostrará por pantalla un mensaje indicando si el triángulo es equilátero ( 3 lados iguales). Estructuras de datos y Objetos”. lado3) si (lado1 =lado2) y (lado2 = lado3) entonces mostrar ( „equilátero‟) si-no si ( lado1 < > lado2) y ( lado2 < > lado3) entonces mostrar („ escaleno‟) si-no mostrar ( „isósceles‟) fin-si fin-si mostrar ( „para terminar introduzca la palabra salir en minúscula‟) leer( clave) fin-mientras fin Bibliografía obligatoria: “Fundamentos de programación. Capítulo 5 (páginas 163 a 203). Silvia A. Luis Joyanes Aguilar. Tercera edición. los números representan dimensiones de los lados de un triángulo. Materia: Programación Lógica Profesor: Ing. Algoritmos. Mc Graw Hill.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->