Download Sentencias R epetitiva M ientras
Document related concepts
Transcript
Lógica de programación 1 Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta 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 AlfaOmega II semestre de 2015 Sentencias Repetitiva Mientras Universidad Nacional Autónoma de Nicaragua - León Lógica de programación 2 Introducción Como hemos mencionado en el tema anterior en ocasiones vamos a encontrar algoritmos cuyas operaciones se deban ejecutar un número repetido de veces formando un ciclo de ejecución de sentencias. Además también se menciono que un ciclo, siempre debe tener una condición de parada o fin de ciclo. La condición de parada de un ciclo se puede indicar 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. En esta etapa hablaremos del funcionamiento de las sentencias MIENTRAS y REPETIR.. 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 Donde: expresion_logica: es cualquier expresión lógica cuyo resultado sea verdadero o falso. 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 expresión lógicaresulta falsa, el conjunto de sentencias pertenecientes al ciclo no se ejecutaran. II semestre de 2015 Lógica de programación 3 Representación gráfica PseInt utiliza la siguiente manera de representar el ciclo MIENTRAS Ejemplo: 1. 2. 3. 4. 5. 6. 7. 8. 9. Proceso cuentaNumeros Definir contador Como Entero; contador <- 1; Mientras contador <= 10 Hacer Escribir "Repeticion numero ", contador; contador <- contador + 1; FinMientras FinProceso Diagrama de flujo Resultado II semestre de 2015 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 que en un inicio vale 1. La variable “contador” deberá ser incrementada dentro del grupo de instrucciones del bucle, sino el ciclo nunca se detendrá. Lógica de programación 4 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 expresión lógica ➢ Si la expresión lógica resulta falsa, no se toma ninguna acción y se prosigue con la instrucción siguiente al bucle. ➢ Pero si la expresión lógica resulta verdadera, se ejecuta el cuerpo del bucle y después se vuelve al inicio del bucle y se evalúa nuevamente la expresión. Ejemplos estructura repetitiva MIENTRAS Ejemplo1 Este ejemplo muestra un algoritmo que presenta el valor correspondiente a la suma de dos números enteros, Esta suma se realizar implementado un ciclo por medio del cual se le ira sumando la unidad al primero de los números ingresado y luego se le restara la unidad al segundo número. Deteniendo en proceso hasta que el segundo de los números 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 ingresado por 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Proceso SumaLenta Definir num1, num2 Como Entero; Escribir sin saltar "Ingrese el valor del 1er numero "; Leer num1; Escribir sin saltar "Ingrese el valor del 2do numero "; Leer num2; Mientras num2 > 0 Hacer num1 <- num1+1; num2 <- num2-1; FinMientras Escribir "La suma es: ", num1; FinProceso II semestre de 2015 Lógica de programación Diagrama de flujo 5 Resultado ¿Qué pasa si queremos sumar 4 y 0? Cuando se desea sumar un numero cualquiera con el cero, al evaluarse la expresión lógica del ciclo mientras resultara falsa, por lo tanto no se ejecutaran las sentencias que forman parte del ciclo mientras. Ejemplo2 Este ejemplo muestra un algoritmo que por medio de la estructura repetitiva MIENTRAS solicita al usuario el ingreso de 10 valores y luego presenta en pantalla el valor mayor ingresado por parte del usuario. Datos de entrada • El usuario va a introducir los valores los cuales se van almacenando en una variable “num”. 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 II semestre de 2015 Lógica de programación 6 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Proceso MayorValor Definir contador, num, vmayor Como Entero; Escribir sin saltar "Ingrese el elemento 1 "; Leer vmayor; contador<-2; Mientras contador <= 10 Hacer Escribir sin saltar "Ingrese el elemento ", contador ; Leer num; Si num > vmayor Entonces vmayor <- num; FinSi contador <- contador + 1; FinMientras Escribir "El valor mayor introducido es: ", vmayor; FinProceso Diagrama de flujo Resultado II semestre de 2015 Lógica de programación 7 Ejemplo3 Este ejemplo muestra por medio de la estructura repetitiva MIENTRAS 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Proceso TablaMultiplicar Definir cuenta, num Como Entero; Escribir sin saltar "Ingrese el numero "; Leer num; cuenta<-1; Mientras cuenta <= 12 Hacer Escribir num, " x ", cuenta, " = ", cuenta*num; cuenta<-cuenta+1; FinMientras FinProceso Diagrama de flujo Resultado II semestre de 2015 Lógica de programación 8 Ejemplo4 El siguiente ejemplo muestra un algoritmo en el cual se solicitan 10 números enteros y presenta 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. • numero: Almacena el numero ingresado por parte del usuario en cada iteración. • 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 : • Definir las variables a utilizar. • Asignar el valor 0 a la variable suma • Solicitar al usuario ingrese una serie de 10 valores, esto se realizara utilizando el ciclo Mientras. ◦ Dentro del ciclo Mientras se irán sumando los valores ingresados. Almacenando el resultado en la variable suma. • Al terminar el ciclo se calculara el promedio. • Presentar en pantalla el promedio obtenido. Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Proceso CalcularPromedio Definir contador, numero, suma Definir promedio como real; Como Entero; suma<-0; contador<-1; Mientras contador <= 10 Hacer Escribir Sin Saltar "Ingrese el elemento ", contador; Leer numero; suma<-suma + numero; contador<-contador+1; FinMientras promedio<-suma/10; Escribir "El promedio es: ", promedio; FinProceso II semestre de 2015 Lógica de programación Diagrama de flujo 9 Resultado Ejemplo5 Calcular la suma siguiente: 100 + 98 + 96 + 94 + . . . + 0 en este orden Datos de entrada: • No hay datos de entrada Datos de salida: • La suma de cada uno de los números pertenecientes a la serie Variables a utilizar • num: esta variable controla la cantidad de iteraciones del ciclos • sum: almacena la suma de los números de la serie II semestre de 2015 Lógica de programación 10 Procedimiento : • Definir las variables a utilizar. • Asignar el valor 100 a la variable mun, asignar el valor 0 a la variable sum • Crear el ciclo Mientras, el cual se repetirá hasta que el valor de num sea menor que 0 ◦ Sumar cada numero de la serie ◦ Restar 2 al valor actual de la variable num Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Proceso SerieNumeros Definir num, sum como entero; num<-100; sum<-0; Mientras num >= 0 Hacer sum<-sum+num; num<-num-2; FinMientras Escribir "La suma es ", sum; FinProceso Solución Resultado II semestre de 2015 Lógica de programación 11 Estructura repetitiva REPETIR La estructura repetitiva REPETIR permite ejecutar al menos una vez su bloque repetitivo, a diferencia de MIENTRAS y PARA que podían no ejecutarse. Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo ya que la condición de parada de la estructura repetitiva está al final del bloque a REPETIR. Sintaxis Repetir secuencia_de_acciones Hasta Que expresion_logica La estructura repetitiva REPETIR permite la ejecución del grupo de sentencias al menos una vez. Puesto que la condición de parada será evaluada hasta que se ejecute el grupo de sentencias, el ciclo REPETIR se ejecutara hasta que la condición de parada resulte ser verdadera. Representación gráfica PseInt utiliza la siguiente manera de representar el ciclo REPETIR Ejemplo: Deseamos presentar en pantalla los primeros 10 números naturales 1. Proceso contarNumeros 2. Definir contador Como Entero; 3. contador <- 1; 4. 5. Repetir 6. Escribir "Repeticion numero ", contador; 7. contador <- contador + 1; 8. Hasta Que contador > 10 9. FinProceso II semestre de 2015 Lógica de programación 12 Diagrama de flujo Resultado En la sentencia repetitiva REPETIR, la condición de parada se comprueba al final del bucle. Lo que permite que el bucle se ejecute al menos una vez antes de comprobar la condición de parada. El bucle se repite mientras la condición sea falsa y termina cuando sea verdadera (contrario a la sentencia mientras). Ejemplos estructura repetitiva REPETIR Ejemplo1 El siguiente ejemplo muestra un algoritmo en el cual se solicitan 10 números enteros y presenta 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. • numero: Almacena el numero ingresado por parte del usuario en cada iteración. • suma: Sera la variable que almacena la suma de todos los números ingresados. • promedio: Almacena el promedio de todos los números ingresados. II semestre de 2015 Lógica de programación 13 Procedimiento : • Definir las variables a utilizar. • Asignar el valor 0 a la variable suma • Solicitar al usuario ingrese una serie de 10 valores, esto se realizara utilizando el ciclo Repetir. ◦ Dentro del ciclo Repetir se irán sumando los valores ingresados. Almacenando el resultado en la variable suma. • Al terminar el ciclo se calculara el promedio. • Presentar en pantalla el promedio obtenido. Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Proceso CalcularPromedio Definir contador, numero, suma Definir promedio como real; Como Entero; suma<-0; contador<-1; Repetir Escribir Sin Saltar "Ingrese el elemento ", contador; Leer numero; suma<-suma + numero; contador<-contador+1; Hasta Que contador > 10 promedio<-suma/10; Escribir "El promedio es: ", promedio; FinProceso Resultado II semestre de 2015 Lógica de programación 14 Diagrama de flujo Ejemplo2 En el siguiente ejemplo le pediremos al usuario que nos indique si desea que se continué ejecutando el ciclo, dentro del ciclo se presentara en pantalla un número aleatorio generado por la función AZAR. Datos de entrada • El usuario ingresara “S” o “N” como respuesta a la pregunta de confirmación Datos de salida • Se presentara en pantalla el valor generado de forma aleatoria Variables a utilizar • continuar: captura la respuesta del usuario a la pregunta de confirmación Procedimiento • Dentro del grupo de sentencias del ciclo se presentara en pantalla el valor generado por la función AZAR, Luego se preguntara al usuario si desea continuar. II semestre de 2015 Lógica de programación 15 Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. Proceso numeroAzar Definir continuar Como Caracter; Repetir Escribir "Numero generado al azar: ", azar(100); Escribir "Desea continuar S / N "; Leer continuar; Hasta Que continuar = "N" | continuar = "n" FinProceso Diagrama de flujo Resultado II semestre de 2015 Lógica de programación 16 Ejemplo3 El siguiente ejemplo muestra la tabla de multiplicar de un numero, dicho numero sera ingresado por el 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Proceso TablaMultiplicar Definir cuenta, num Como Entero; Escribir sin saltar "Ingrese el numero "; Leer num; cuenta<-1; Repetir Escribir num, " x ", cuenta, " = ", cuenta*num; cuenta<-cuenta+1; Hasta Que cuenta > 12 FinProceso Diagrama de flujo Resultado II semestre de 2015 Lógica de programación 17 Ejemplo4 En este ejemplo se muestra como presentar un menú en pantalla, este menú use presentara hasta que el usuario seleccione salir. Datos de entrada • Se ingresara un número (correspondiente a la opción del usuario), cuyo valor se almacenara en la variable opción. Datos de salida • Se presentara en pantalla un mensaje que indique el valor de la opción ingresada por parte del usuario. Variables a utilizar • opción: variable de tipo entero, almacenara el valor correspondiente al número ingresado por parte del usuario. Procedimiento • Utilizando el ciclo REPETIR, se presentara un menú con 4 opciones. El usuario ingresara un número que puede o no estar en el rango de 14. • Si el valor ingresado esta fuera de rango, se vuelve a mostrar cada una de las opciones. • El ciclo se repetirá hasta que el usuario ingrese un número en el rango de 14 Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Proceso ejemploMenu Definir opcion Como Entero; Repetir Escribir "1.- Ingrese 1 para esta Opcion"; Escribir "2.- Ingrese 2 para esta Opcion"; Escribir "3.- Ingrese 3 para esta Opcion"; Escribir "4.- Ingrese 4 para esta Opcion"; Escribir "¿Que opcion desea: ?"; Leer opcion; Hasta Que opcion >= 1 & opcion <= 4 Escribir "Opcion ingresada: ", opcion; FinProceso II semestre de 2015 Lógica de programación 18 Diagrama de flujo Resultado II semestre de 2015 Lógica de programación 19 Ejemplo5 Calcular la suma siguiente: 100 + 98 + 96 + 94 + . . . + 0 en este orden Datos de entrada: • No hay datos de entrada Datos de salida: • La suma de cada uno de los números pertenecientes a la serie Variables a utilizar • num: esta variable controla la cantidad de iteraciones del ciclos • sum: almacena la suma de los números de la serie Procedimiento : • Definir las variables a utilizar. • Asignar el valor 100 a la variable mun, asignar el valor 0 a la variable sum • Crear el ciclo Repetir, el cual se repetirá hasta que el valor de num sea menor que 0 ◦ Sumar cada numero de la serie ◦ Restar 2 al valor actual de la variable num Solución Solución 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Proceso SerieNumeros Definir num, sum como entero; num<-100; sum<-0; Repetir sum<-sum+num; num<-num-2; Hasta Que num < 0 Escribir "La suma es ", sum; FinProceso Resultado II semestre de 2015 Lógica de programación 20 REPETIR vs MIENTRAS Como ya hemos mencionado anteriormente, la estructura repetitiva REPETIR evalúa la condición de parada al final, luego de haber ejecutado todas las sentencias que forman parte del ciclo. Lo que permite que el bucle se ejecute al menos una vez antes de comprobar la condición de parada, el bucle se repite mientras la condición sea falsa y termina cuando sea verdadera (contrario a la sentencia mientras). Las estructuras repetitivas MIENTRAS y PARA evalúan la condición de parada al inicio del bucle, por lo tanto para que el ciclo se ejecute la expresión lógica debe ser verdadera desde el principio. Veamos el siguiente ejemplo en el que se muestra un ciclo en el que se solicitan números enteros al usuario, el ciclo se detendrá cuando se ingrese un valor negativo. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Proceso leerEnteros Definir contador, num Como Entero; contador<-0; Escribir "Ingrese un numero entero: "; Leer num; Mientras num >= 0 Hacer contador<-contador+1; Escribir "Ingrese un numero entero: "; Leer num; FinMientras Escribir "Se ingresaro ", contador, " numeros"; FinProceso En este ejemplo, para poder ingresar al ciclo primero se evalúa la expresión lógica (condición de parada) y después se ejecutan las sentencias que forman parte del ciclo. ¿Qué pasa si ingresamos un número negativo desde el principio?. Al ingresar un número negativo desde el principio las sentencias que forman parte del ciclo no se ejecutaran. Como se muestra en la siguiente captura. Veamos que pasa si utilizamos el ciclo REPETIR 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Proceso leerEnteros Definir contador, num Como Entero; contador<-0; Repetir Escribir "Ingrese un numero entero: "; Leer num; contador<-contador+1; Hasta Que num < 0 Escribir "Se ingresaron ", contador, " numeros positivos"; FinProceso Al utilizar el ciclo REPETIR, se ejecutan el grupo de sentencias pertenecientes al ciclo y posteriormente se evalúa la condición de parada. II semestre de 2015 Lógica de programación 21 Ejercicios propuestos Ejercicio1 Realice un algoritmo que presente en pantalla la una serie de números llamada la conjetura de ULAM en honor del matemático S. Ulam . Por ejemplo: 26,13,40,20,10,5,16,84,2,1. Para presentar los números que corresponden a la conjetura de ULAM, seguimos los siguientes pasos: • Comience con cualquier entero positivo. • Si es par, se divide entre 2; si es impar, se multiplica por 3 y se le suma 1. • Obtenga enteros sucesivamente repitiendo el proceso . • Al final, obtendrá el número 1, independientemente del entero inicial. Deberá solicitar al usuario un valor, el que será el primero de la lista. Ejercicio2 Realizar un programa que nos pida un número n, y nos diga cuantos números impares hay entre 1 y n. Para este realice una versión utilizando mientras y otra versión utilizando para. Ejercicio3 Hacer un algoritmo que simule el comportamiento de un cronómetro digital desde 0 segundos hasta llegar a 5 minutos en cuenta progresiva. Ejercicio4 Hacer un algoritmo que simule el comportamiento de un cronómetro digital en cuenta regresiva desde 5 minutos hasta 0 segundos. Ejercicio5 Obtenga el seno, coseno y tangente de los números ubicados en un rango expresados en ángulos, dichos ángulos (ángulo inicial y ángulo final) serán ingresados por el usuario. Considere un aumento de 10° . II semestre de 2015