Principios de Algoritmo
Semana 5
Docente: Carlos Jara Alva
Estructuras repetitivas
• Las computadoras están especialmente diseñadas para todas aquellas aplicaciones en las cuales una operación o conjunto de ellas deben repetirse muchas veces. Un tipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones un numero determinado de veces.
Estructuras repetitivas
• Las estructuras que repiten una secuencia de instrucciones un numero determinado de veces de denominan bucles y se denomina iteración al hecho de repetir la ejecución de una secuencia de acciones.
Sintaxis
Inicio
//inicializacion de variables
Repetir
acciones s1, s2,…
salir según condición
acciones sn, sn+1
Fin_repetir
Estructura mientras (while)
• La estructura repetitiva mientras, es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condición. Cuando se ejecuta la instrucción mientras, la primera cosa que sucede es que se evalúa la condición. Si se evalúa que es falsa, no se toma ninguna acción y el programa prosigue. Si es verdadera, entonces se ejecuta el cuerpo del bucle.
Sintaxis mientras
Ejemplo 1
• Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras numero y contador (contara el numero de enteros positivos). Se supone que se leen numero positivos y se detiene el bucle cuando se lee un numero negativo o cero.
Algoritmo cuenta_enteros
Entero: numero, Contador
Inicio
Contador 0
Leer (numero)
Mientras numero > 0 hacer
Leer (numero)
Contador Contador + 1
Fin_mientras
Escribir ‘El numero de enteros positivos es:’, Contador
fin
Explicación del ejercicioContador 0 : inicializar contador a 0
Leer numero : leer primer numero
Mientras numero > 0 hacer: comprobar si numero > 0. si es así, continuar con el paso 4, sino continuar con el paso 7.
Sumar 1 al contador: incrementar contador
Leer numero: leer el siguiente numero
Regresar al paso 3
Escribir contador
Ejecución de un bucle cero veces
Inicio
n 5
s 0
Mientras n<4 hacer
leer x
s s + x
Fin_mientras
fin
En este ejemplo se aprecia que nunca se cumplirá la condición, por lo cual se ejecutara la acción fin, y no se ejecutara ninguna acción del bucle.
Ejemplo 2:
algoritmo Numeros_del_1_al_10 entero contador
inicio contador ← 1 /* Inicialización del contador */ hacer escribir( contador ) /* Salida */ contador ← contador + 1 /* Incremento */ mientras ( contador <= 10 ) /* Condición */ fin
Explicación del ejercicio:• En primer lugar, se le asigna el valor 1 a contador (acción
1).• A continuación, se ejecuta el bloque de instrucciones del
bucle hacer... mientras, mostrándose por pantalla el valor de contador (acción 2) y, después, se incrementa en 1 el valor de la variable contador (acción 3).
• Una vez ejecutado el bloque de instrucciones, se evalúa la condición de salida del bucle ( contador <= 10 ) (acción 4) y, puesto que, es verdadera, se ejecuta, de nuevo, el bloque de instrucciones.
• Y así sucesivamente, mientras que, la condición sea verdadera, o dicho de otro modo, hasta que, la condición sea falsa.
• En este algoritmo, el bloque de instrucciones del bucle se ejecuta diez veces (iteraciones).
Ejemplo 3:
Se quiere diseñar el algoritmo de un programa que:
• Pida por teclado un número (dato entero).
• Pregunte al usuario si desea introducir otro o no.
• Repita los pasos 1º y 2º, mientras que, el usuario no responda 'n' de (no).
• Muestre por pantalla la suma de los números introducidos por el usuario.
algoritmo Suma_de_numeros_introducidos_por_el_usuario caracter seguir entero acumulador, numero
inicio /* En acumulador se va a guardar la suma de los números introducidos por el usuario. */ acumulador ← 0hacer escribir( "Introduzca un número entero: " ) leer( numero ) acumulador ← acumulador + numero escribir( "¿Desea introducir otro número (s/n)?: " ) leer( seguir )mientras ( seguir <> 'n' ) /* Mientras que el usuario desee introducir más números, el bucle iterará. */escribir( "La suma de los números introducidos es: ",acumulador )fin
Diferencias entre un bucle mientras y un
bucle hacer...mientras
Ejemplo 4.
Hacer un algoritmo que lea 5 números y determine la suma entre ellos.
INICIO
ENTERO: N, i, SUMA
i=1
SUMA=0
MIENTRAS(i <=5) HAGA
MOSTRAR( 'DIGITE UN NUMERO')
LEER (N)
SUMA= SUMA+N
i= i+1
FIN MIENTRAS
MOSTRAR ('LA SUMA ES:', SUMA)
FIN
Ejemplo 6:Modificar el anterior algoritmo para que obtenga el promedio de los 5 números.
INICIO
ENTERO: N,i, SUMA
REAL: PROMEDIO
i=1
SUMA=0
MIENTRAS (i <=5) HAGA
MOSTRAR ('DIGITE UN NUMERO')
LEER (N)
SUMA=SUMA+N
i=i+1
PROMEDIO=SUMA/5
FIN MIENTRAS.
MOSTRAR ('EL PROMEDIO ES:', PROMEDIO)
FIN
Ejemplo 7:Se quiere diseñar el algoritmo de un programa que:• Pida por teclado la nota (dato real) de una asignatura.• En el caso de que la nota sea incorrecta, muestre por
pantalla el mensaje: "ERROR: Nota incorrecta, debe ser >= 0 y <= 20".
• Repita los pasos 1º y 2º, mientras que, la nota introducida sea incorrecta.
• Muestre por pantalla: "APROBADO", en el caso de que la nota sea mayor o igual que 12. “DESAPROBADO", en el caso de que la nota sea menor que 12.
algoritmo Calificacion_segun_nota real notainicio escribir( "Introduzca nota (real): " ) leer( nota ) /* Si la primera nota introducida por el usuario es correcta, el bucle no itera ninguna vez. */ mientras ( nota < 0 o nota > 20 ) escribir( "ERROR: Nota incorrecta, debe ser >= 0 y <= 20" ) escribir( "Introduzca nota (real): " ) leer( nota ) fin_mientras /* Mientras que el usuario introduzca una nota incorrecta, el bucle iterará. Y cuando introduzca una nota correcta, el bucle finalizará. */ si ( nota >= 12 ) escribir( "APROBADO" ) sino escribir( "SUSPENDIDO" ) fin_si fin
Ejemplo 8:Realizar un algoritmo para sumar consecutivamente y cuando la suma sea superior a 100 deje de pedir números y muestre el total.
INICIO
ENTERO: N SUMA
SUMA=0
MIENTRAS(SUMA<=100)
MOSTRAR ('DIGITE UN NUMERO')
LEER(N)
SUMA=SUMA+N
FIN MIENTRAS
MOSTRAR ('LA SUMA ES:', SUMA)
FIN