ESTRUCTURAS REPETITIVAS parte1 parte2

Más sobre estructuras repetitivas

Hemos  dicho que este tipo de estructuras marcan como orden de ejecución la reiteración de una serie de acciones basándose en un bucle.

 

Un BUCLE (loop, en inglés) es un trozo de algoritmo cuyas instrucciones son repetidas un cierto número de veces, mientras se cumple una cierta condición que ha de ser claramente especificada. La condición podrá ser verdadera o falsa, y se comprobará en cada paso o iteración del bucle.

 

Básicamente, existen tres tipos de estructuras repetitivas; los bucles "mientras..." (o "while"), los bucles "repetir... mientras que" (o "do... while") y los bucles "desde" (o "bucles for"). Vamos a verlas todas dentro de un ejemplo para clarificar los dos párrafos iniciales, que quedan tan bonitos como oscuros para quien nunca ha visto un bucle (ni es verde ni tiene antenas, lo siento %-D ).

 

Sólo un poco de teoría más antes de pasar a los ejemplos para cada una de las estructuras repetitivas; hay que hacer notar que todo bucle consta de tres partes básicas, a saber:

Decisión: donde se evalúa la condición y, en caso de ser cierta, se ejecuta el...

Cuerpo del bucle: son las instrucciones que queremos ejecutar repetidamente un cierto número de veces.

Salida del bucle: es la condición que dice cuándo saldremos de hacer repeticiones ("mientras protestes, seguirás fregando platos", en cuanto dejas de protestar, se acabó fregar más platos).

 

Una forma de controlar un bucle es mediante una variable llamada CONTADOR, cuyo valor se incrementa o decrementa en una cantidad constante en cada repetición que se produzca.

 

También, en los bucles suele haber otro tipo de variables llamadas ACUMULADOR, cuya misión es almacenar una cantidad variable resultante de operaciones sucesivas y repetidas. Es como un contador, con la diferencia que el incremento/decremento es variable.

 

Es sobre contadores, acumuladores donde incrementamos la cantidad de ejercicios. Pero  además incluimos otro tema el cual es el de los switches (interruptores) he aquí el concepto:

 

Un Siwtch permite que un bucle que permanezca dando vueltas o iterando hasta que el swtich cambia de estado veamos el caso siguiente:

 

Hacer un programa que lea números y los acumule hasta que se ingrese cero. Mostrar cuanto acumulo (es decir la suma de todos ellos)


Inicio

            Switch = 1

            Acumulador = 0

            Mientras Switch = 1 hacer

                        Leer Numero

                        Si Numero = 0 entonces

                                    Swtich = 0

                        Si no

                                    acumulador = acumulador + Numero

                        Fin_si

            Fin_mientras

            Escribir “La suma de todos ellos es :”, acumulador

Fin

 

Observe que:

            1.- El numero de vueltas no se conoce

            2.- En cada vuelta acumulador acumula lo que tiene la variable numero

            3.- el ejemplo puede quedar de la siguiente forma tambien:

 

Inicio

            numero  = 1

            Acumulador = 0

            Mientras numero  <> 0  hacer

                        Leer numero  

                        acumulador = acumulador + Numero

                        Fin_si

            Fin_mientras

            Escribir “La suma de todos ellos es :”, acumulador

Fin

 

En este caso la variable numero hace de switch y las vueltas son controladas por la variable numero cuando se tenga que numero vale cero dejará de dar vueltas.

 

Ejercicios resueltos:

 

Ejercicio 1)

Hacer un programa que lea los resultados de los partidos de un equipo de futbol ante sus adversarios y diga cuanto puntaje acumuló, cuantos goles a favor tiene y cuantos goles en contra tiene:

 

Inicio

            Switch = 1

            Golesfavor = 0

            Golescontra = 0

            Puntos = 0

            PartidosJugados = 0

            Mientras Switch = 1 hacer

                        Escribe “Desea Registrar un partido (digite 1 para si  o 0  para no)”

                        Leer Switch

                        Si Switch = 1 entonces

                                    Escribir “Introduce el resultado del partido:”

                                    Leer Golesmiequipo,Golesdeladversario

                                    Si Golesmiequipo = Golesdeladversario entonces

                                                Escribe “Empate”

                                                Puntos = Puntos + 1

                                    Fin_Si

                                    Si Golesmiequipo > Golesdeladversario entonces

                                                Escribe “Ganamos”

                                                Puntos = Puntos + 3

 

                                    Fin_Si

                                    Si Golesmiequipo < Golesdeladversario entonces

                                                Escribe “Perdimos”

                                    Fin_Si

                                    Golesfavor = Golesfavor + Golesmiequipo

                                    Golescontra = Golescontra + Golesdeladversario

                                    PartidosJugados = PartidosJugados + 1

                        Fin_si

            Fin_Mientras

            Escribe Puntos,Golesfavor,GolesContra

Fin

 

Recomiendo:

Haga un seguimiento de este ejercicio con variables y valores

 

Ejercicio 2 )

Hacer un algoritmo que realice las 50 primeras potencias de 5.

 

Inicio

   desde n=1 hasta 50 hacer

      Escribe 5^n

   fin_desde

Fin

 

 

Ejercicio 3 )

Realizar un algoritmo que obtenga la suma de los números pares hasta 100. 

 

Inicio

   suma = 0

   numero = 2

   mientras numero <= 100 hacer

      suma = suma + numero

      numero = numero + 2

   fin_mientras

Fin

 

Ejercicio 4)

Hacer una tabla del multiplicador en forma creciente.

Inicio

   Leer n

   x = 1

   mientras x <= 12 hacer

      R = n * x

      Escribe n, x, R

      x = x + 1

   fin_mientras

Fin

 

Ejercicio 5)

Hacer un programa que calcule el factorial de un número.

 

Inicio

   Leer n

   i = 1

   X = 1

   mientras X = 1 hacer

      X = i * X

      i = i + 1

   fin_mientras

   Escribir X

Fin

 

Ejercicio 6)

Hacer un programa que calcule la suma y el producto de los

números pares comprendidos entre 20 y 400 ambos inclusive.

 

Inicio

   S = 0

   P = 1

   X = 20

   mientras X <= 400 hacer

      S = S + X

      P = P * X

      X = X + 1   

   fin_mientras

   Escribir S, P

Fin

 

 

Ejercicios propuestos:

 

1.- Hacer un programa que de vueltas  y en cada vuelta  realice las potencias de 5.

   En cada vuelta se pide al operador SI DESEA CONTINUAR (1 o 0)  si el operador ingresa un cero ya no continuará dando vuleltas.

 

2.- Hacer un programa que lea 100 números y  se desea saber cual fue el numero mayor.

3.- Hacer un programa que lea 500 números y  se desea saber cual fue el numero menor.

4.- Hacer un programa que lea 200 números y  se desea saber en cuanto difiere el mayor del mayor.

5.- Hacer un programa que registre las totales de creditos por alumno y el numero de cursos por alumno que llevan cada alumno de la universidad, se desea saber cual es el promedio de creditos que suelen llevar los alumnos en la universidad, y se desea saber el promedio de cursos que suelen llevar los alumnos de la universidad.

6.- En el ejercicio anterior diga en cuales numeros de matricula se registraron alumnos con un solo curso.(use un contador matricula = matricula + 1).

7.- En el ejercicio anterior diga en cuales numeros de matricula se registraron alumnos con mas de un curso. (use un contador matricula = matricula + 1).

8.- Realice los ejercicios con desde, mientras y repetir

9.- Revise los ejercicios de la página http://enriquebarrueto1.tripod.com/norevisados.htm

y construya un programa que me diga cuantos ejercicios de estructuras repetitivas hay en esta página (usar contador).