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-

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

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

entonces. se muestra el diagrama de flujo. 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 ………. y las que sigue al si-no. Materia: Programación Lógica Profesor: Ing. 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. En la figura 3. Carrera -7- . Si la expresión lógica resulta ser falsa. En la figura 4. de esta estructura de selección simple. Esta forma de escribir aumenta la legibilidad de la estructura y este es el medio más idóneo para representar algoritmos. Silvia A. 2.6.sentencia1 sentencia2 sentenciaN fin-si sentencia4 sentencia5 ……… Observar que en el pseudocódigo las acciones que siguen a la palabra reservada. si-no sentencia4 sentencia5 ……… fin-si sentencia 7 sentencia 8 ………. se muestra el diagrama de flujo de esta estructura de selección doble. si esta es verdadera ejecuta la acción o acciones especificadas. se encuentran indentadas en relación a las palabreas reservadas si y fin-si. y se ejecutan las acciones asociadas al si-no. en función del cumplimiento o no de una determinada condición Evalúa una expresión lógica. que se encuentran a continuación de la palabra reservada entonces. se saltean las acciones que se encuentras ubicadas después del entonces.

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. determinar si un número es par o impar. Claramente en este requerimiento. y cuestiones de este tipo.Este tipo de estructura se utiliza cuando el problema se presenta naturalmente dividido claramente en dos posibilidades. el número ingresado o es positivo o es negativo. por lo tanto se puede implementar un filtro para impedir el ingreso de este elemento. Silvia A. lo cual se puede hacer por codificación o desplegando un mensaje en pantalla. Carrera -8- . no hay otra posibilidad. que advierta al usuario que no debe ingresar el número 0.

Silvia A. Carrera -9- .Algoritmo ClasificaNum Var: entero: num verdadera falsa Expresión lógica Sentencia1 Sentencia2 ……… Sentencia4 Sentencia5 …………… 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.

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. El diagrama de flujo. 2) Desarrollar un algoritmo que permita determinar si un número ingresado por teclado es par o impar. Materia: Programación Lógica Profesor: Ing. Silvia A. como el anterior. el número entero ingresado o es par o es impar. 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.En la sección de declaración de variables. En este requerimiento. se declara una sola variable de tipo entero llamada num. 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. Luego termina la estructura de selección doble con la palabra reservada fin-si. Si la condición resulta falsa. indica que el algoritmo terminará. Si num es mayor que 0 entonces se despliega el mensaje ´el número ingresado es positivo. una situación problemática es el ingreso del número 0. Carrera . se declara una sola variable de tipo entero llamada num. no hay otra posibilidad. se muestra en la figura 5. en este caso la expresión lógica que se utiliza para determinar si un número es positivo. consiste en comparar el valor del número ingresado (num) con 0. emplearemos esta segunda opción. por lo tanto se puede implementar un filtro para impedir el ingreso de este elemento.10 - . A continuación la función estándar leer () permite guardar el dato ingresado desde el teclado en la variable entera num. A continuación comienza la estructura de selección doble. que advierta al usuario que no debe ingresar el número 0. se despliega el mensaje en pantalla: ´el número ingresado es negativo´. 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. A continuación la función estándar leer () permite guardar el dato ingresado desde el teclado en la variable entera num. La palabra reservada fin.

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

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

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

……. caso opN: accionN1 accionN2 ….camino lógico que se seguirá. si-no: accion5 accion6 fin-segun ………. el flujo del programa realiza las acciones asociadas al si-no. El diagrama de flujo se muestra en la figura 7. si esta palabra reservada se decide usar. 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.14 - . 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. según cuál sea el valor que una variable de tipo entero introducido por teclado. Ej1) Se desea implementar un algoritmo que escriba por pantalla el nombre del día de la semana. Silvia A. Carrera . A continuación se presentan algunos ejemplos de esta estructura selectiva. en esta situación. La codificación en pseudocódigo es: …… Según-sea opción hacer caso op1: accion1 accion2 …. caso op2: accion3 accion4 ….

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

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

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

Luego de la comprobación se mostrará por pantalla un mensaje indicando el resultado. La función leer ( ) permite capturar el ingreso del usuario y guardar ese valor en la variable día. habiendo introducido un número. Si el número que se ingresa no está comprendido en el intervalo cerrado que se pide. 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. Silvia A. El algoritmo determinará si el número entero ingresado está o no en el intervalo válido. 2.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). Una posible codificación puede ser la siguiente: Materia: Programación Lógica Profesor: Ing. terminar el programa indicando por pantalla tal situación. Carrera . uno por cada día de la semana y un si-no para que entre por este punto de bifurcación.18 - . cuando el número ingresado no esté comprendido entre 1 y 7. Si el número que se ingresa no está comprendido en el intervalo cerrado que se pide. se pasa a la estructura de selección múltiple segúnsea caso fin-según. 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. dia. Se utilizan 7 casos. 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. 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. Ejercicios de aplicación. terminar el programa indicando por pantalla tal situación. Entonces.8.

Carrera . 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: „. Mayor inicio: mostrar ( „ingresar tres números enteros‟) leer (A. B.19 - .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. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Muestra _mayor Var: entero: A. B. C enteros y que muestre por pantalla el número más grande. C. mayor) fin Materia: Programación Lógica Profesor: Ing. B. Silvia A.

20 - . dato2) resul  dato1 +dato2 mostrar (´la suma es : ´. 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. opción. Mostrar un mensaje por pantalla de esta situación se da. 2 multiplicar. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Menu_suma_mul Var: entero: dato1. Se tomará desde el teclado dos números enteros. dato2) result dato1 * dato2 mostrar (´la multipliocacion es:´. Silvia A.Ej3) Implementar un programa que permita mostrar por pantalla un menú con las opciones: 1 sumar. dato2 inicio: mostrar ( ´ingresar dos números enteros´) leer (dato1. resul inicio: mostrar ( ´que operación desea realizar: 1 suma.2 multiplicar´) leer (opcion) según-sea opcion hacer caso 1: mostrar (´ingresar dos números enteros para sumar´) leer ( dato1. El usuario ingresará un entero correspondiente a la operación que quiere realizar. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Determina_orden Var: entero: dato1. Carrera . result) caso 2: mostrar (´ingresar dos números enteros para multiplicar´) leer ( dato1. dato2. 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.

dato3. y muestre su promedio por pantalla. dato4 real: prom inicio: mostrar ( ´ingresar cuatro números enteros´) leer (dato1. prom) fin Ej6) Realizar un algoritmo que determine si dos números introducidos por teclado uno de ellos es divisor del otro. dato2. dato2. Carrera . 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. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo DeterminaPromedio Var: entero: dato1. dato3. dato2 inicio: mostrar ( ´ingresar dos números enteros´) leer (dato1.21 - .fin-si fin Ej5) Implementar un programa que permita leer 4 números enteros por teclado. dato4) prom  dato1 +dato2+dato3 +dato4 mostrar (´el promedio es:´. Silvia A. Una posible codificación puede ser la siguiente: Pseudocódigo Algoritmo Determina_Divisibilidad Var: entero: dato1.

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

3. 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.5. la variable suma. Carrera . 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. 3. Concepto de acumulador Un acumulador es un campo de memoria dinámica cuyo valor se incrementa sucesivas veces en cantidades variables. en este caso hay que inicializar la variable a 1. se inicializa a 0. 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). siendo preciso inicializarlo a cero. son variables que realizan funciones específicas dentro de un programa. Es decir el bucle se ejecuta primero y luego se comprueba le expresión para producir una nueva repetición o no del bucle. Silvia A. positiva o negativa. y generalmente asociado a un bucle. Tanto el acumulador como el contador. 3. También puede utilizarse en aquellas situaciones en las que hay que obtener un total como producto de distintas cantidades. Concepto de contador Un contador es un campo de memoria dinámica cuyo valor se incrementa en una cantidad fija. Estructura repetir hasta Esta estructura repetitiva se utiliza cuando se desea que al menos un bloque se ejecute una vez.4. Se utiliza en aquellos casos en que se desee obtener un total de un conjunto de cantidades.3. El bucle repetir /hasta-que. y cada vez que se presenta el suceso a contar. se incrementa su valor ( 1 en la mayoría de los casos).23 - . antes de comprobar la expresión de repetición. Un contador toma un valor inicial (0. En el ejemplo de las notas de los alumnos de un curso. en la mayoría de los casos) antes de comenzar su función. se repite mientras el valor lógico de la expresión booleana sea falsa.

Carrera . 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.6. repetir // sentencia1 // sentenciaN hasta que <expresión> ……… El diagrama de flujo de esta estructura se muestra en la figura 9. Silvia A.24 - .. sentncia1 …………… sentenciaN falsa expresión verdadera Figura 9 Un uso muy frecuente de este tipo de estructura. y seguirá en esta situación hasta que se introduzca un valor de edad válido. y mediante una estructura repetir/hasta-que se solicita ingresos de números que representen una edad válida. es decir si el usuario introduce 999. 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 programa necesita procesar edades. Materia: Programación Lógica Profesor: Ing.……………. es la validación de datos. 3. entonces se solicita el ingreso de la edad. por ejemplo un número entero comprendido entre 1 y 120.

El programa mostrará por pantalla las 20 primeras letras mayúsculas introducidas por teclado. y suma como acumulador. Silvia A.25 - . Tiene dos estructuras repetir/hasta-que anidadas. cont como contador. 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. se prosigue con el aumento del contador. Ejemplo 2) Se desea implementar un programa que permita ingresar solo letras mayúsculas. es decir que sea positivo. es la que controla que se sumen los primeros 10 números enteros positivos. 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 condición es verdadera y por lo tanto el bucle no se repite.Una posible codificación podría ser: Algoritmo CalculaPromedio Var: entero: cont. prom) fin EXPLICACION: Este ejercicio tiene algunas cuestiones interesantes. Si el número que se introduce no es mayor a 0. La estructura repetir (hasta-que más externa. La estructura repetir/hasta-que interna controla que el número ingresado sea mayor a 0. Carrera . num. 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: “. la acumulación en la variable suma. es decir se pide un nuevo ingreso de dato desde el teclado. Otro aspecto interesante es que utiliza dos variables con funciones específicas.

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. es la que valida que el carácter ingresado por teclado sea una letra mayúscula. para contar la cantidad de letras mostradas por pantalla (deben ser 20). Además si el usuario ingresa un carácter que no sea letra (ni mayúscula ni minúscula) el bucle interno se repite. otra. La estructura repetir/hasta-que interna. establece un intervalo cerrado. con lo cual el bucle se repite. de tipo carácter para guardar el ingreso que realice el usuario desde el teclado. 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. Silvia A. una de tipo entero: cont. Por convención matemática el factorial de 0! Es 1. esto significa que una se ejecuta dentro de la otra. el usuario introduce una letra minúscula.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. está estará fuera del intervalo y la expresión dará un resultado booleano falso. La expresión: letra > = „A‟ y letra <= „Z‟. Si el usuario introduce una letra mayúscula. Una posible codificación podría ser: Algoritmo CalculaFactorial Var: entero: num. La estructura repetir/hasta-que externa. si por el contrario. Recordemos que esta expresión solo da un resultado booleano verdadero. y como puede apreciarse el contador (variable cont) no se incrementa. Carrera . es la que permite que se muestren las 20 letras por pantalla. cuando ambas partes de la comparación son verdaderas. Hay dos estructuras repetir/hasta-que anidadas. en esta estructura la expresión que controla la iteración es una expresión de tipo y ó and. entonces esta expresión da como resultado verdadera y el bucle interno no se repite.26 - . y el factorial de 1! También es 1.

no se utiliza un entero.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: „. 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. Silvia A. debe emplearse la fórmula matemática ya mencionada. es decir no se verifica que el usuario ingrese un número mayor o igual a cero. 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.27 - . „es:‟ fact) fin EXPLICACION: En este ejercicio se ha omitido la validación del dato de entrada. Dentro del si-no. 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. porque el tipo de dato real puede almacenar valores o cifras más grandes que los enteros (recordar que el tipo de dato real. El usuario no puede ingresar un número negativo. está la iteración para realizar el cálculo que implica la expresión matemática del factorial de un número. en primer lugar porque no existe el factorial de un número negativo y en segundo lugar el algoritmo calcularía cualquier cosa.num. Para cualquier otro número. no solo es para valores decimales. 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. El mismo algoritmo puede ser realizado con un contador que se incrementa en lugar de usar decrementos. también es específico de los enteros grandes). Carrera .

Con cada nueva iteración. „es:‟ fact) fin 3.28 - . si esta es verdadera. 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.num. En pseudocódigo la estructura mientras tiene la siguiente forma: ……… mientras <expresión P> hacer //sentencia1 ……. Materia: Programación Lógica Profesor: Ing. Tener presente que primero se evalúa la expresión P. la expresión vuelve a evaluarse. el cuerpo del bucle no se ejecuta ninguna vez. si al llegar por primera vez al bucle mientras la condición es falsa. El diagrama de flujo de esta estructura se muestra en la figura 10.7. //sentenciaN fin-mientras …….. de lo contrario se corre el riesgo de generar estructuras repetitivas que no acaban nunca. por algún requerimiento del problema. A veces se desea generar bucles infinitos. 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. Silvia A.fact  1 cont  1 repetir fact  fact * cont cont  cont +1 hasta-que cont > num fin-si mostrar („El factorial de: „. Estructura mientras El bucle se repite mientras la expresión P sea cierta (verdadera). Carrera . A esto se le llama bucle infinito.

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

pot) fin Materia: Programación Lógica Profesor: Ing. 3. y en especial en un lenguaje en particular. la N-ésima potencia de X. X. N.30 - . por lo tanto este bucle no acaba nunca. „es:‟.Un bucle que nunca se termina se denomina bucle infinito o sin fin. 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.. N real: pot inicio: pot  1 repetir mostrar („ ingresar la base y el exponente de la potencia a calcular) leer ( X. 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: ……………. Carrera . „ y exponente: „. El programa deberá calcular y mostrar por pantalla. El número 1 (uno) es siempre verdadero. La expresión asociada al mientras en este ejemplo es 1. Silvia A. Una posible codificación podría ser: Algoritmo CalculaProtencia Var: entero: X. Son más seguras. Resolución de problemas usando Mientras Ejemplo 1) Se desea implementar un programa que permita ingresar dos número enteros positivos: X y N.8. en especial si las variables involucradas son de tipo real. 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:‟. inicio dato1  5 dato2  1 mientras 1 hacer leer ( t) mostrar (t) dato2  dato2 + 1 mostrar (dato2) fin-mientras ….

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. Silvia A. ingresados por teclado. ingresados por teclado. mediante el algoritmo de sumas sucesivas. 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 . mediante el algoritmo de restas sucesivas.31 - . El programa mostrará por pantalla el producto.Ejemplo 2) Se desea implementar un programa que permita obtener el producto de dos números enteros positivos. Carrera . 2x3= 2 + 2+ 2+ 2 =6 2x3=3+3 =6 Una posible codificación podría ser: Algoritmo CalculaProducto Var: entero: A. acum inicio: mostrar ( „ingresar dos números enteros positivos‟) leer (A.B. El programa mostrará por pantalla el producto.4 = 6 Materia: Programación Lógica Profesor: Ing.

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

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

con algunas variantes sencillas.8. Sin embargo. Silvia A. 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. En este caso la variable v toma los valores 10. pero con una notación diferente.. 6. es posible que alguna de las estructuras de repetición se adapte más fácilmente que otra al mismo problema. con las mismas expresiones. las funciones matemáticas y lógicas toman el significado usual que tienen en matemática y lógica. 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..34 - .iteración. 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) ……. Pero siempre es posible reemplazar una de ellas por otras. Eso significa que diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras. Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. EQUIVALENCIA ENTRE LAS ESTRUCTURAS REPETITIVAS Las estructuras repetitivas hasta aquí vistas son equivalentes unas con otras. 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) ……. 4 y 2 por lo tanto el bucle se repite 5 veces. Dependiendo del problema a solucionar. Carrera .

Ejercicio 1) Se dispone de una lista de N números ingresados por teclado. Carrera .10. Resolución de problemas usando Para A continuación se presentarán algunos programas a modo de ejemplo del uso de esta estructura repetitiva. En la figura 11 se muestran bucles correctamente anidados. ESTRUCTURAS REPETITIVAS ANIDADAS De igual forma que se puede anidar o encajar estructuras de selección.fin-desde mostrar ( suma) ……. Silvia A.. se desea determinar y mostrar por pantalla el valor del número mayor que se haya ingresado.35 - . Una posible codificación podría ser: Algoritmo DeterminaMayor Var entero: N. cant real: dato. 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. es posible insertar un bloque dentro de otro. a) b) Figura 11 3. mayor Materia: Programación Lógica Profesor: Ing.

Carrera . Silvia A. 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.b) a) 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.36 - . Una posible codificación podría ser: Algoritmo DeterminaMayor_Menor Var entero: N. mayor. menor Materia: Programación Lógica Profesor: Ing.

37 - . al mismo tiempo. menor) fin Ejercicio 3) Se leen desde el teclado 100 números. total real: dato. Una posible codificación podría ser: Algoritmo DeterminaMedia_Positivos_Negativos Var entero: cantP.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. cantN. Silvia A. Carrera . sumaPos/cantN) fin Materia: Programación Lógica Profesor: Ing. 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. sumaPos.sumaNeg/cantN) mostrar ( „la media de los valores positivos es:‟. 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: „.

3. 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. Una posible codificación puede ser: Algoritmo DeterminaNumero_Aprobados Var entero: N. Ejercicios de aplicación. Realizar 20 ingresos. nota. Silvia A. 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. Carrera . cant. Y se desea contar la cantidad de alumnos aprobados (nota 5 o mayor a 5). 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.38 - .11.

los números (de 0 a 9). contiene números enteros con los que se corresponden las letras minúsculas. la letra b el 98. Lo mismo ocurre para la letra B y b. la letra c el 99 y así hasta llegar a la letra z minúscula. La tabla ASCII. la letra C el 67 y así hasta llegar a la letra Z mayúscula. A las letras minúsculas. Para la misma letra. la letra A mayúscula le corresponde el número 65. Es decir entre la A y la letra a minúscula existen 32 posiciones de la tabla. Cuando la letra se coloca entre comillas simple. es una minúscula mostrarla por pantalla. basta con saber la siguiente relación …… Var Materia: Programación Lógica Profesor: Ing. Las letras mayúsculas les corresponden números enteros consecutivos. existe una constante igual a 32. la letra B el 66.39 - .Ejemplo 3) Realizar 50 ingresos de caracteres por teclado. A cada carácter le corresponde un número entero que se representa en código ASCII. Silvia A. 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. La letra a minúscula le corresponde el número 97. se está haciendo referencia al número entero que representa su codificación en ASCII. las mayúsculas. mayúscula y minúscula. los signos de puntuación. si la letra es mayúscula convertirla a minúscula para luego mostrarla por pantalla. Si el carácter ingresado. Por lo tanto no es necesario recordar la constante 32. también les corresponden números enteros consecutivos. Carrera . etc.

40 - . Todos los caracteres que no sean minúsculas o mayúsculas ( se convierten) se cuentan como ingreso válido para alcanzar la cifra 50. Carrera . Ejemplo 4) Realizar ingresos de caracteres por teclado y mostrarlos por pantalla. entonces a su valor entero ASCII le suma 32 para convertirla en la misma letra pero en su forma minúscula. ……… cont  „a‟ – „A‟ // cont contiene 32 cont  „t‟ – „T‟ // cont contiene 32 y así para cualquier letra mayúscula y minúscula. Entonces.entero: cont . cuando la estructura selectiva si/si-no detecta en la expresión que el carácter ingresado es una letra mayúscula. 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. Silvia A. con la primer vocal ( sea mayúscula sea minúscula) que se ingrese. El programa termina.

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

Sign up to vote on this title
UsefulNot useful