Lógica de programación 1 - ING.KARINA ESQUIVEL ... · PDF filePseInt utiliza la...

21
Lógica de programación 1 Sentencias Repetitiva Mientras 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 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 II semestre de 2015

Transcript of Lógica de programación 1 - ING.KARINA ESQUIVEL ... · PDF filePseInt utiliza la...

Lógica de programación 1

Sentencias Repetitiva M

ientras

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

La característica fundamental de la programación estructurada consiste enque todas las instrucciones tienen un único punto de entrada y un único puntode salida. Esto permite descomponer fácilmente un problema ensubproblemas, reduciendo la complejidad y facilitando la programación

BibliografíaMetodología de la programación. Dr. Osvaldo Cairó BattistuttiEditorial Alfa­Omega

II semestre de 2015

Lógica de programación 2

Introducción

Como hemos mencionado en el tema anterior en ocasiones vamos a encontrar algoritmos cuyas operaciones sedeban ejecutar un número repetido de veces formando un ciclo de ejecución de sentencias. Además también semenciono 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 premisapodemos 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   sentenciaMIENTRAS  y a la sentencia  PARA.  Y dentro del grupo de sentencias con la condición al final tenemos a lasentencia 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 esconsiderada por muchos como la más potente. Su función consiste en ejecutar un número determinado de vecesuna secuencia de instrucciones, no obstante, este número de repeticiones depende de la condición de parada quecontenga el propio ciclo. 

Por lo tanto el ciclo MIENTRAS se ejecutara hasta que la condición que se evalúa resulte ser falsa.

SintanxisMientras expresion_logica Hacersecuencia_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  seaverdadera. Si  la primera vez que se evalúa la expresión lógicaresulta falsa, el conjunto de sentenciaspertenecientes al ciclo no se ejecutaran.

II semestre de 2015

Lógica de programación 3

Representación gráficaPseInt utiliza la siguiente manera de representar el ciclo MIENTRAS 

Ejemplo: 

1. Proceso cuentaNumeros2. Definir contador Como Entero;3. contador <- 1;4. 5. Mientras contador <= 10 Hacer6. Escribir "Repeticion numero ", contador;7. contador <- contador + 1;8. FinMientras9. FinProceso

Como   se   puede   observar   el   cicloMIENTRAS  se   ejecuta   en   diezocasiones,   estas   repeticiones   estándadas   por   el   valor   de   la   variable“contador”,  la que en un inicio vale1.  La variable “contador” deberá serincrementada   dentro   del   grupo   deinstrucciones del bucle, sino el ciclonunca se detendrá.

Diagrama de flujo Resultado

II semestre de 2015

Lógica de programación 4

En la estructura repetitiva MIENTRAS el número de veces que se ejecute el bucle está determinado por lacondició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ónsiguiente al bucle. ➢ Pero si  la  expresión lógica resulta  verdadera,  se  ejecuta  el  cuerpo  del  bucle y después se vuelveal inicio del bucle y se evalúa nuevamente la expresión. 

Ejemplos estructura repetitiva MIENTRAS

Ejemplo1Este ejemplo muestra un algoritmo que presenta el valor correspondiente a la suma de dos números enteros, Estasuma se realizar  implementado un ciclo por medio del  cual  se  le  ira sumando la unidad al  primero de  losnúmeros  ingresado y luego se le restara  la unidad al  segundo número.  Deteniendo en proceso hasta que elsegundo 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ón1. Proceso SumaLenta2. Definir num1, num2 Como Entero;3.4. Escribir sin saltar "Ingrese el valor del 1er numero ";5. Leer num1;6. Escribir sin saltar "Ingrese el valor del 2do numero ";7. Leer num2;8.9. Mientras num2 > 0 Hacer10. num1 <- num1+1;11. num2 <- num2-1;12. FinMientras13.14. Escribir "La suma es: ", num1;15. FinProceso

II semestre de 2015

Lógica de programación 5

Diagrama de flujo 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 mientrasresultara falsa, por lo tanto no se ejecutaran las sentencias que forman parte del ciclo mientras.

Ejemplo2Este ejemplo muestra un algoritmo que por medio de la estructura repetitiva MIENTRAS solicita al usuario  elingreso 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 queel valor de la variable   “vmayor”, se reemplaza el valor de este último por el valor ingresado por elusuario.

Solución1. Proceso MayorValor2. Definir contador, num, vmayor Como Entero;3.4. Escribir sin saltar "Ingrese el elemento 1 ";5. Leer vmayor;6.7. contador<-2;8. Mientras contador <= 10 Hacer9. Escribir sin saltar "Ingrese el elemento ", contador ;10. Leer num;11.12. Si num > vmayor Entonces13. vmayor <- num;14. FinSi15.16. contador <- contador + 1;17. FinMientras18.19. Escribir "El valor mayor introducido es: ", vmayor;20. FinProceso

Diagrama de flujo Resultado

II semestre de 2015

Lógica de programación 7

Ejemplo3Este ejemplo muestra por medio de la estructura repetitiva MIENTRAS en pantalla la tabla de multiplicar de unnú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ón1. Proceso TablaMultiplicar2. Definir cuenta, num Como Entero;3. Escribir sin saltar "Ingrese el numero ";4. Leer num;5.6. cuenta<-1;7. Mientras cuenta <= 12 Hacer8. Escribir num, " x ", cuenta, " = ", cuenta*num;9. cuenta<-cuenta+1;10. FinMientras11. FinProceso

Diagrama de flujo Resultado

II semestre de 2015

Lógica de programación 8

Ejemplo4El siguiente ejemplo muestra un algoritmo en el cual se solicitan 10 números enteros y presenta en pantalla elpromedio 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ón1. Proceso CalcularPromedio2. Definir contador, numero, suma Como Entero;3. Definir promedio como real;4.5. suma<-0;6. contador<-1;7.8. Mientras contador <= 10 Hacer9. Escribir Sin Saltar "Ingrese el elemento ", contador;10. Leer numero;11.12. suma<-suma + numero;13. contador<-contador+1;14. FinMientras15.16. promedio<-suma/10;17. Escribir "El promedio es: ", promedio;18. FinProceso

II semestre de 2015

Lógica de programación 9

Diagrama de flujo Resultado

Ejemplo5Calcular 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ón1. Proceso SerieNumeros2. Definir num, sum como entero;3. num<-100;4. sum<-0;5.6. Mientras num >= 0 Hacer7. sum<-sum+num;8. num<-num-2;9. FinMientras10.11. Escribir "La suma es ", sum;12. 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  deMIENTRAS y PARA que podían no  ejecutarse.  Esta  estructura   repetitiva  se  utiliza  cuando conocemos  deantemano que por   lo menos una vez se ejecutará  el  bloque repetitivo ya que la condición de parada de  laestructura repetitiva está al final del bloque a REPETIR.

SintaxisRepetirsecuencia_de_acciones

Hasta Que expresion_logica

La estructura repetitiva REPETIR permite la ejecución del grupo de sentencias al menos una vez. Puesto que lacondición de parada será evaluada hasta que se ejecute el grupo de sentencias,  el ciclo REPETIR se ejecutarahasta que la condición de parada resulte ser verdadera.

Representación gráficaPseInt utiliza la siguiente manera de representar el ciclo REPETIR 

Ejemplo:Deseamos presentar en pantalla los primeros 10 números naturales

1. Proceso contarNumeros2. Definir contador Como Entero;3. contador <- 1;4.5. Repetir6. Escribir "Repeticion numero ", contador;7. contador <- contador + 1;8. Hasta Que contador > 109. 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 quepermite que el bucle se ejecute al menos una vez antes de comprobar la condición de parada.  El bucle serepite  mientras  la  condición sea  falsa  y  termina   cuando   sea verdadera    (contrario a     la  sentenciamientras).

Ejemplos estructura repetitiva REPETIR

Ejemplo1El siguiente ejemplo muestra un algoritmo en el cual se solicitan 10 números enteros y presenta en pantalla elpromedio 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ón1. Proceso CalcularPromedio2. Definir contador, numero, suma Como Entero;3. Definir promedio como real;4.5. suma<-0;6. contador<-1;7.8. Repetir9. Escribir Sin Saltar "Ingrese el elemento ", contador;10. Leer numero;11.12. suma<-suma + numero;13. contador<-contador+1;14. Hasta Que contador > 1015.16. promedio<-suma/10;17. Escribir "El promedio es: ", promedio;18. FinProceso

Resultado

II semestre de 2015

Lógica de programación 14

Diagrama de flujo

Ejemplo2En 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ón1. Proceso numeroAzar2. Definir continuar Como Caracter;3.4. Repetir5. Escribir "Numero generado al azar: ", azar(100);6. Escribir "Desea continuar S / N ";7. Leer continuar;8. Hasta Que continuar = "N" | continuar = "n"9. FinProceso

Diagrama de flujo

Resultado

II semestre de 2015

Lógica de programación 16

Ejemplo3El 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ón1. Proceso TablaMultiplicar2. Definir cuenta, num Como Entero;3. Escribir sin saltar "Ingrese el numero ";4. Leer num;5.6. cuenta<-1;7. Repetir8. Escribir num, " x ", cuenta, " = ", cuenta*num;9. cuenta<-cuenta+1;10. Hasta Que cuenta > 12 11. FinProceso

Diagrama de flujo Resultado

II semestre de 2015

Lógica de programación 17

Ejemplo4En 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 1­4.• 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 1­4

Solución1. Proceso ejemploMenu2. Definir opcion Como Entero;3.4. Repetir5. Escribir "1.- Ingrese 1 para esta Opcion";6. Escribir "2.- Ingrese 2 para esta Opcion";7. Escribir "3.- Ingrese 3 para esta Opcion";8. Escribir "4.- Ingrese 4 para esta Opcion";9. Escribir "¿Que opcion desea: ?";10. Leer opcion;11. Hasta Que opcion >= 1 & opcion <= 412.13. Escribir "Opcion ingresada: ", opcion;14. 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

Ejemplo5Calcular 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ón1. Proceso SerieNumeros2. Definir num, sum como entero;3. num<-100;4. sum<-0;5.6. Repetir7. sum<-sum+num;8. num<-num-2;9. Hasta Que num < 010.11. Escribir "La suma es ", sum;12. 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 alfinal, luego de haber ejecutado todas las sentencias que forman parte del ciclo. Lo que permite que el bucle seejecute al menos una vez antes de comprobar la condición de parada, el bucle se repite mientras la condición seafalsa 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 tantopara 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, elciclo se detendrá cuando se ingrese un valor negativo.

1. Proceso leerEnteros2. Definir contador, num Como Entero;3. contador<-0;4.5. Escribir "Ingrese un numero entero: ";6. Leer num;7.8. Mientras num >= 0 Hacer9. contador<-contador+1;10. Escribir "Ingrese un numero entero: ";11. Leer num;12. FinMientras13.14. Escribir "Se ingresaro ", contador, " numeros";15. FinProceso

En este ejemplo, para poder ingresar al ciclo primero se evalúa la expresión lógica (condición de parada) ydespués se ejecutan las sentencias que forman parte del ciclo. ¿Qué pasa si ingresamos un número negativodesde el principio?. Al ingresar un número negativo desde el principio las sentencias que forman parte del ciclono se ejecutaran. Como se muestra en la siguiente captura.

Veamos que pasa si utilizamos el ciclo REPETIR

1. Proceso leerEnteros2. Definir contador, num Como Entero;3. contador<-0;4.5. Repetir6. Escribir "Ingrese un numero entero: ";7. Leer num;8. contador<-contador+1;9. Hasta Que num < 010.11. Escribir "Se ingresaron ", contador, " numeros positivos";12. FinProceso

Al utilizar el ciclo REPETIR, se ejecutan el grupo de sentencias pertenecientes al ciclo y posteriormente seevalúa la condición de parada. 

II semestre de 2015

Lógica de programación 21

Ejercicios propuestos

Ejercicio1Realice un algoritmo que presente en pantalla la una serie de números llamada la conjetura de ULAM en honordel 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.

Ejercicio2Realizar un programa que nos pida un número n, y nos diga cuantos números impares hay entre 1 y n. Para esterealice una versión utilizando mientras y otra versión utilizando para.

Ejercicio3Hacer un algoritmo que simule el comportamiento de un cronómetro digital desde 0 segundos hasta llegar a 5minutos en cuenta progresiva. 

Ejercicio4Hacer un algoritmo que simule el comportamiento de un cronómetro digital en cuenta regresiva desde 5 minutoshasta 0 segundos.

Ejercicio5Obtenga 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