Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta Sentencias Repetitivas 1 La característica fundamental de la programación estructurada consiste en que todas las instrucciones tienen un único punto de entrada y un único punto de salida. Esto permite descomponer fácilmente un problema en subproblemas, reduciendo la complejidad y facilitando la programación Bibliografía Metodología de la programación. Dr. Osvaldo Cairó Battistutti Editorial Alfa Omega 1
Introducción En la práctica es muy común encontrar algoritmos cuyas operaciones que se deben ejecutar un número repetido de veces. A este conjunto de instrucciones que se ejecuta repetidamente se les conoce como ciclo o bucle. A cada repetición del grupo de sentencias pertenecientes a un ciclo se le conoce como iteración. Todo ciclo debe terminar de ejecutarse luego de un número finito de veces, es necesario en cada iteración, evaluar las condiciones necesarias para decidir si se debe seguir ejecutandose o no el ciclo. Un ciclo, siempre debe tener una condición de parada o fin de ciclo. En algunos algoritmos podemos establecer a priori el número de veces a iterar. Por otra parte, en algunos algoritmos no podemos establecer a priori el número de veces que ha de ejecutarse el ciclo, sino que este número dependerá de las proposiciones dentro del mismo. La condición de parada normalmente se indica al inicio o al final del bucle, de acuerdo a esta premisa podemos clasificar a las sentencias repetitivas en dos grupos: Con la condición de parada al inicio Con la condición de parada al final Dentro del grupo de sentencias repetitivas con la condición de parada al inicio tenemos a la sentencia MIENTRAS y a la sentencia PARA. Y dentro del grupo de sentencias con la condición al final tenemos a la sentencia REPETIR. Estructura repetitiva PARA La estructura PARA conocida comúnmente como FOR, es la estructura algorítmica repetitiva a utilizar cuando concemos el número de veces que debe iterar el ciclo. Este tipo de estructura está presente en todos los lenguajes de programación, ya sean estructurados u orientados a objetos. Por ejemplo, cuando necesitamos presentar los números pares que se encuentra en el rango de uno a cien. Sintaxis Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer secuencia_de_acciones FinPara Donde: variable_numérica: Corresponde al identificador de la variable que se utilizara para iterar. valor_inicial: Este es el valor que tomara la variable_numérica, desde el cual se iniciar el bucle. valor_final: Es el valor final de la variable_numérica, cuando se alcance este valor el bucle se detendra. paso: Este el valor de incremento o decremento que tomara la variable_numerica en cada iteración. 2
Representación gráfica PseInt utiliza la siguiente manera de representar el ciclo PARA Ejemplo: Deseamos presentar en pantalla los primeros 10 números naturales, nuestra variable_numerica deberá tomar el valor inicial 1 y tendrá como valor final 10 con un incremento o paso de 1. Tal como se muestra en el siguiente algoritmo: 1. Proceso cuentanumeros 2. Definir contador Como Entero; 3. Para contador<-1 Hasta 10 Con Paso 1 Hacer 4. Escribir "El valor de contador es: ", contador; 5. FinPara 6. FinProceso Diagrama de flujo: 3
Resultado: En este ejemplo la variable contador (definida en la linea 2) tomara el valor inicial 1 e ira incrementado su valor en la unidad hasta alcanzar el valor final, que en nuestro ejemplo es 10. La estructura algorítmica PARA se utiliza normalmente en casos donde el número de iteraciones es fijo y se conoce de antemano. Esta estructura repetitiva ejecuta las acciones del cuerpo del bucle un número especificado de veces y controla de modo automático (implícito) el número de iteraciones o pasos a través del cuerpo del bucle. Ejemplos estructura repetitiva PARA Ejemplo1 Escriba un algoritmo que solicite 20 números enteros y que cuente cuantos números pares se ingresaron. Datos de entrada Números ingresados por el usuario, cada uno de los cuales se ira almacenando en la variable num. Datos de salida Cantidad de números pares ingresados por parte del usuario. Variables a utilizar contador: Llevara el control de las iteraciones, en este caso serán 20 iteraciones. num: Almacena el número ingresado por parte del usuario. pares: Llevara el control de la cantidad de números pares ingresados. Procedimiento Colar el valor inicial de la variable pares a cero. Solicitar al usuario ingrese una serie de 20 valores, utilizando al ciclo PARA Verificar si el valor ingresado es par, si la comparación resulta ser verdadera se incrementará en uno el valor de la variable pares. 4
Solución 1. Proceso contarpares 2. Definir contador, num, pares Como Entero; 3. pares<-0; 4. 5. Para contador<-1 Hasta 20 Con Paso 1 Hacer 6. Escribir Sin Saltar "Ingrese el elemento ", contador; 7. Leer num; 8. 9. Si num % 2 = 0 Entonces 10. pares<-pares+1; 11. FinSi 12. FinPara 13. 14. Escribir "Se ingresaron un total de: ", pares, " numeros pares"; 15. FinProceso Diagrama de flujo 5
Resultado Ejemplo2 Cree un algoritmo que solicite 10 números enteros y que muestre en pantalla el promedio de los números ingresados. Datos de entrada: Serie de números ingresados por el usuario. Datos de salida: Promedio de los números ingresados por el usuario. Variables a utilizar contador: Esta variable llevara el control de las iteraciones del ciclo. num: Almacena el número ingresado por parte del usuario. suma: Sera la variable que almacena la suma de todos los números ingresados. promedio: Almacena el promedio de todos los números ingresados. Procedimiento : Darle el valor inicial de 0 a la variable suma. Solicitar al usuario ingrese una serie de 10 valores, esto se realizara utilizando el ciclo PARA. Dentro del ciclo PARA se irán sumando los valores ingresados. Al terminar el ciclo se calculara el promedio correspondiente. Presentar en pantalla el promedio obtenido. 6
Solución 1. Proceso calcularpromedio 2. Definir contador, num, suma Como Entero; 3. Definir promedio como real; 4. 5. suma<-0; 6. 7. Para contador<-1 Hasta 10 Con Paso 1 Hacer 8. Escribir Sin Saltar "Ingrese el elemento ", contador; 9. Leer num; 10. 11. suma<-suma + num; 12. FinPara 13. 14. promedio<-suma/10; 15. 16. Escribir "El promedio es: ", promedio; 17. 18. FinProceso Diagrama de flujo 7
Resultado Ejemplo3 Escriba un algoritmo que muestre en pantalla los números en el rango de 1 a 20 pero en orden descendente. Datos de entrada: El usuario no ingresara ningún dato para el funcionamiento del algoritmo. Datos de salida: Se presentara cada uno de los números indicados en el rango de 1 20 pero en orden inverso. Variables a utilizar contador: Variable que llevara el control de las iteraciones, en este caso serán 20 iteraciones. Procedimiento: Por medio del ciclo PARA realizaremos las 20 iteraciones, la variable contador tomara el valor inicial 20 e iremos disminuyendo en uno el valor de la variable hasta llegar al valor 1. Dentro del ciclo Para se irán presentando el valor correspondiente a la variable contador. Solución 1. Proceso cuentadoratras 2. Definir contador Como Entero; 3. Para contador<-20 Hasta 1 Con Paso -1 Hacer 4. Escribir contador; 5. FinPara 6. FinProceso 8
Diagrama de flujo Resultado 9
Estructura repetitiva MIENTRAS La estructura algorítmica MIENTRAS es quizás la estructura de repetición más sencilla, y sin embargo es considerada por muchos como la más potente. Su función consiste en ejecutar un número determinado de veces una secuencia de instrucciones, no obstante, este número de repeticiones depende de la condición de parada que contenga el propio ciclo. Por lo tanto el ciclo MIENTRAS se ejecutara hasta que la condición que se evalúa resulte ser falsa. Sintanxis Mientras expresion_logica Hacer secuencia_de_acciones FinMientras Representación gráfica PseInt utiliza la siguiente manera de representar el ciclo MIENTRAS La estructura repetitiva MIENTRAS permite ejecutar las instrucciones mientras la expresión_lógica sea verdadera. Si la primera vez que se evalúa la condición resulta falsa, la sentencia no se ejecutará ninguna vez. Ejemplo: 1. Proceso cuentanumeros 2. Definir contador Como Entero; 3. contador <- 1; 4. 5. Mientras contador <= 10 Hacer 6. Escribir "Repeticion numero ", contador; 7. contador <- contador + 1; 8. FinMientras 9. FinProceso Como se puede observar el ciclo MIENTRAS se ejecuta en diez ocasiones, estas repeticiones están dadas por el valor de la variable contador. La variable contador deberá ser incrementada dentro del gurpo de instrucciones del bucle, sino el ciclo nunca se detendrá. 10
Diagrama de flujo Resultado En la estructura repetitiva MIENTRAS el número de veces que se ejecute el bucle está determinado por la condición. Al ejecutar la instrucción mientras, lo primero que se evalúa es la condición Si la condición es falsa, no se toma ninguna acción y se prosigue con la instrucción siguiente al bucle. Si la condición es verdadera, se ejecuta el cuerpo del bucle y después se vuelve al inicio del bucle y se evalúa nuevamente la condición. 11
Ejemplos estructura repetitiva MIENTRAS Ejemplo1 Realice un algoritmo que muestre el resultado correspondiente a la suma de dos números, Esta suma se realizar implementado un ciclo por medio del cual se le sume la unidad al primero de los números ingresado hasta que el segundo número tome el valor 0. Datos de entrada: El usuario ingresara dos números enteros. Datos de salida: Se presentara en pantalla el valor correspondiente a la suma de ambos números. Variables a utilizar num1: Almacenara el primer valor ingresapor por el usuario. num2: Almacenara el segundo valor ingresado por el usuario y además controlara las iteraciones del ciclo Procedimiento: Se le solicitara al usuario el ingreso de los dos valores enteros Mientras el segundo valor sea mayor que 0, se ejecutara el ciclo. Dentro del grupo de sentencias del ciclo, se le sumara la unidad al primer valor ingresado por el usuario, luego se le restara la unidad al segundo valor ingresado por el usuario. Solución 1. Proceso sumalenta 2. Definir num1, num2 Como Entero; 3. 4. Escribir "Ingrese los valores a sumar "; 5. Leer num1, num2; 6. 7. Mientras num2>0 Hacer 8. num1<-num1+1; 9. num2<-num2-1; 10. FinMientras 11. 12. Escribir "La suma es: ", num1; 13. FinProceso 12
Diagrama de flujo Resultado Ejemplo2 Realizar un algoritmo que por medio de la estructura repetitiva MIENTRAS obtenga el valor mayor en una serie de 10 números ingresados por parte del usuario. Datos de entrada El usuario va a introducir los valores los cuales se van almacenando en una variable num. 13
Datos de salida Al terminar la ejecución del algoritmo se ha de presentar el valor mayor de los introducidos por parte del usuario. Variables a utilizar contador: Variable que llevara el control de las 10 iteraciones. vmayor: Variable en la que se almacena el valor mayor ingresado por parte del usuario num: Se utilizara para capturar los números ingresados por parte del usuario. Procedimiento - Antes de iniciar el ciclo, se le ha de solicitar al usuario ingrese el primero de los valores. - Este primer elemento ingresado se asume como el valor mayor, por lo tanto la variable vmayor tomara el valor de este primer elemento ingresado. - Por medio de un ciclo procederemos a pedir el restante de los elementos comparando cada uno con el valor de la variable vmayor y el elemento ingresado. Si el valor del elemento ingresado es mayor que el valor de la variable vmayor, se reemplaza el valor de este último por el valor ingresado por el usuario. Solución 1. Proceso mayorvalor 2. Definir contador, num, vmayor Como Entero; 3. 4. Escribir sin saltar "Ingrese el elemento 1 "; 5. Leer vmayor; 6. 7. contador<-2; 8. 9. Mientras contador <= 10 Hacer 10. Escribir sin saltar "Ingrese el elemento ", contador ; 11. Leer num; 12. 13. Si num > vmayor Entonces 14. vmayor <- num; 15. FinSi 16. 17. contador <- contador + 1; 18. FinMientras 19. 20. Escribir "El valor mayor introducido es: ", vmayor; 21. FinProceso 14
Diagrama de flujo Resultado 15
Ejemplo3 Realizar un algoritmo que por medio de la estructura repetitiva MIENTRAS presente en pantalla la tabla de multiplicar de un número ingresado por parte del usuario. Datos de entrada Número del que se presentara la tabla de multiplicar, este valor será almacenado en la variable num. Datos de salida Presentar en pantalla la tabla de multiplicar del número ingresado por parte del usuario. Procedimiento Solicitar el número al usuario Por medio del ciclo Mientras ir presentando en pantalla el resultado de multiplicar a la variable cuenta con el numero (num) ingresado por parte del usuario Variables a utilizar cuenta: Variable que llevara el control de las iteraciones, en este caso serán 12 iteraciones. num: Esta variable almacena el número ingresado por parte del usuario. Solución 1. Proceso tablamultiplicar 2. Definir cuenta, num Como Entero; 3. Escribir "Ingrese el numero "; 4. Leer num; 5. 6. cuenta<-1; 7. Mientras cuenta <= 12 Hacer 8. Escribir num, " x ", cuenta, " = ", cuenta*num; 9. cuenta<-cuenta+1; 10. FinMientras 11. FinProceso Diagrama de flujo 16
Resultado Ejercicios propuestos Ejercicio1 Elabore un algoritmo que presente los números pares que estén en el rango de 1 a 100. Realice dos versiones de este algoritmo una utilizando el ciclo Mientras y la otra utilizando el ciclo Para. Ejercicio2 Desarrollar un algoritmo que permita ingresar n números enteros y luego nos informe cuántos valores fueron pares y cuántos impares. Ejercicio3 Utilizando el ciclo Para, calcule la suma de los 500 primeros números enteros. Ejercicio4 Diseñe un algoritmo que lea una lista de notas de los N estudiantes de Lógica de programación y cuente el total de aprobados y el total de reprobados. Ejercicio5 Sumar los números enteros positivos múltiplos de 5 y que se encuentre en el rango de 1 100. Ejercicio6 Elaborar un algoritmo que solicite la edad de 20 personas y que muestre cuántos de ellos son mayores de edad y cuántos son menores de edad. Ejercicio7 Elaborar un algoritmo en pseudocódigo que calcule la suma de los números múltiplos de 3 y 7 a partir del número 9 y finaliza en el numero 45, no deben incluirse en la suma los números comprendidos entre 21 y 27. 17
Ejercicio8 Realice un programa que muestre en pantalla la suma de los números que estén en el rango de 1 a N, siendo N un número ingresado por el usuario. Ejercicio9 Realice un algoritmo que calcule la potencia de un número, el usuario ingresara el número correspondiente a la base y el número correspondiente al exponente. Utilice un ciclo que permita realizar el cálculo en cuestión. Ejemplo: 2 4 = 16, esto es 2*2*2*2 Ejercicio10 Desarrollar un algoritmo que por medio de la sentencia repetitiva Para que muestre la tabla de multiplicar de un número dado por el usuario. 18