Está en la página 1de 20

ALGORITMOS EJEMPLOS DE ALGORITMOS

EJEMPLO #1 Problema: Hallar la suma de los primeros 10 nmeros enteros y luego mostrar dicha suma.

ALGORITMOS Fase de Anlisis


ANALISIS DEL PROBLEMA.- En esta fase de solucin al problema, estudiamos el problema a fin de poder entender QUE es lo que se tiene como problema y a lo cual se va a plantear una solucin ALGORITMICA.

Del anlisis de este problema podemos deducir que:


- Los primeros nmeros enteros son: 1, 2, 3, 4, etc

- Luego lo que se quiere calcular es:


1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = ?

ALGORITMOS Fase de Anlisis


Prosiguiendo con el anlisis, se puede ver que primero debemos obtener los numeros para luego sumarlos. Una forma de obtenerlos es con el contador, el cual se compone de 2 pasos: N 0 y N N + 1 Los 2 pasos son asignaciones, el primero inicializa N en 0 y el segundo incrementa este valor inicial en 1. Al ejecutarse repetitivamente la segunda asignacin, el 1 se convierte en 2, luego en 3, despus en 4, etc. Por lo tanto conseguimos generar los numeros enteros: 1, 2, 3, 4, etc.

ALGORITMOS Fase de Anlisis


La asignacin N N + 1 genera estos nmeros enteros, en base al recalculo de la expresin del lado derecho (N + 1 ), que le asigna un nuevo valor en cada iteracin a N, de la siguiente manera: Inicialmente N es 0 Pero el lado derecho, o sea N + 1 se calcula como sigue:
Direccin Contenido

N
N

0
1 0 + 1 = El nuevo valor de N 1

ALGORITMOS Fase de Anlisis


Pero esta segunda asignacin (N N + 1) se la hace repetitivamente. Luego, un recalculo del lado derecho dara lo siguiente:
Direccin Contenido

N N

1 2

1 + 1 = El nuevo valor de N

ALGORITMOS Fase de Anlisis


Otro recalculo de N N + 1 cambiara el 2 por el 3 de la manera siguiente:

Direccin Contenido

N N

2 3

2 + 1 = El nuevo valor de N

ALGORITMOS Fase de Anlisis


Luego, se puede ver que este calculo repetitivo del lado derecho, genera los numeros enteros requeridos para efectuar la suma. Es decir: Direccin
N 0 1 2 3

Contenido
4 5 6 7
8 9

ALGORITMOS Fase de Anlisis


Obtenidos los numeros, solo resta sumarlos. Esto se consigue con el acumulador: S 0 y S S + X El recalculo de lado derecho de la segunda asignacin (S + X ) asigna un nuevo valor en cada iteracin a S. Inicialmente S es 0 Y el lado derecho, o sea S + X se calcula como sigue:
Direccin Contenido

X
S

7
0 7 0 + 7 = El nuevo valor de S 7

ALGORITMOS Fase de Anlisis


Si cambiamos el X del acumulador S S + X por nuestro N del contador anteriormente visto, es decir que la segunda asignacin ahora seria S S + N. Luego, lo que se acumula en S es: Si el lado derecho S + N se calcula como sigue:
Direccin Contenido

N
S

1
0 1 0 + 1 = El nuevo valor de S 1

ALGORITMOS Fase de Anlisis


Pero N es el contador (NN+1), en una siguiente iteracin el 1 actual se incrementar a 2. Luego, lo que ahora se acumulara en S es: Si el lado derecho S + N se calcula como sigue: S N

Direccin Contenido

N S

1 2 1 3
1 + 2 = El nuevo valor de S 3

ALGORITMOS Fase de Anlisis


N el contador, en una siguiente iteracin incrementar el 2 actual a 3. Luego, lo que ahora se acumulara en S es: Si el lado derecho S + N se calcula como sigue:
Direccin Contenido

N S

1 2 3 1 3 6

N 6

= El nuevo valor de S

3 + 3

ALGORITMOS Fase de Anlisis


Finalmente se puede ver que, una combinacin apropiada del contador y el acumulador puede producir el resultado buscado: CONTADOR ACUMULADOR

N0 NN+1

S0 SS+N

La combinacin apropiada seria juntar los elementos que no se repiten en primer lugar y luego los que se repiten.

ALGORITMOS Fase de Diseo


Inicialmente el algoritmo con estos elementos se vera as:

1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N


El orden entre los pasos 1 y 2 no es importante

Pero si entre el paso 3 y 4, ya que el primer numero N en acumularse en S debe ser el 1, eso se consigue con este orden.

ALGORITMOS Fase de Diseo Luego, la parte del algoritmo que genera los 10 enteros y los acumula es:
1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3
QUE SE EJECUTA EN EL ORDEN INDICADO POR LAS FLECHAS

ALGORITMOS Fase de Diseo Luego, la parte del algoritmo que genera los 10 enteros y los acumula es:
1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3

LOS PASOS 3,4 y 5 SE REPETIRAN UNA Y OTRA VEZ

ALGORITMOS Fase de Diseo


Con este algoritmo la primera vez que se ejecuta el paso 3, N se pone en 1 1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3 con lo que el paso 4 hace que el primer N que se acumula en S sea 1 ( N es 1, el primer entero)

ALGORITMOS Fase de Diseo


La segunda vez que se ejecuta el paso 3, N se pone en 2 (se incrementa en 1) 1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3

Con lo que el paso 4 hace que el segundo N, que se acumule en S sea 2 ( N es 2, el segundo entero)

ALGORITMOS Fase de Diseo 1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3
El paso 5 obliga a repetir los pasos 3 y 4, pero a su vez controla las veces que se repetirn estos. Si la condicin (N<10) se cumple para algn N, entonces se vuelve al paso 3.

ALGORITMOS Fase de Diseo La ultima vez que se ejecuta el paso 3, N se pone en 10, con lo que el ultimo N que se acumula en S es 10. 1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3
En este punto se advierte que con N igual a 10, ya no se cumple la condicin (N<10) en el paso 5, por lo cual el control ya no vuelve al paso 3.

ALGORITMOS Fase de Diseo


El algoritmo ya concluyo el calculo de la suma y solo resta mostrar el resultado que no es mas que dicha suma. Esto se debe ejecutar como el paso 6. 1.- S 0 2.- N 0 3.- N N + 1 4.- S S + N 5.- Si N < 10 Entonces ir a 3 6.- Mostrar S 7.- FIN Que mostrara el contenido de S, como el resultado final (La Suma).