1. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Cobertura de Bucles
´
Andres Felipe Cano Cadavid acanocad@gmail.com
´
Tecnologico de Antioquia
23 de Septiembre del 2013
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
2. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Cobertura de Bucles
Se centra exclusivamente en la validez de las construcciones de bucles:
Simples
Anidados
Concatenados
No Estructurados
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
3. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Bucles Simples
Se les aplica el siguiente conjunto de pruebas:
Pasar por alto totalmente el bucle.
Pasar una sola vez por el bucle.
Pasar dos veces por el bucle.
´
Hacer m pasos por el bucle con m < n (donde n es el numero
´
maximo de pasos permitidos por el bucle).
Hacer n − 1, n y n + 1 pasos por el bucle.
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
4. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Ejemplo
Algorithm 1 ejemplo1(x, y)
1: while (x < 100 and x > 0) do
2:
x = x − 10
3: end while
4: if (y < 20 and x %2 = 0 then
5:
y = y + 20
6: else
7:
y = y − 20
8: end if
9: return 2 ∗ x + y
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
5. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Ejemplo
Algorithm 2 divisores(n)
1: nro = 1
2: while (nro <= n /2) do
3:
if (n %nro == 0) then
4:
Escribir nro
5:
end if
6:
nro = nro + 1
7: end while
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
6. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Bucles Anidados
Si se empleara el mismo enfoque de prueba de bucles simples a los
´
bucles anidados, el numero de pruebas aumentar´a considerablemente
ı
por lo cual se sugiere emplear el siguiente enfoque:
´
Comenzar por el bucle mas interior. Establecer o configurar los
´
demas bucles con sus valores m´nimos.
ı
´
Llevar a cabo las pruebas de bucles simples para el bucle mas
´
´
interior, mientras se mantienen los parametros de iteracion de los
˜
bucles externos en sus valores m´nimos. Anadir otras pruebas para
ı
valores fuera de rango o excluidos.
Progresar hacia fuera, llevando a cabo pruebas para el siguiente
bucle, pero manteniendo todos los bucles externos en sus valores
´
m´nimos y los demas bucles anidados en sus valores t´picos.
ı
ı
Continuar hasta que se hayan probado todos los bucles.
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
7. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Ejemplo
Algorithm 3 ejemplo2(A , n, m)
1: if (n < 10 and m < 20) then
2:
suma = 0
3:
i=1
4:
while (i ≤ n) do
5:
j=1
6:
while j ≤ m do
7:
suma = suma + A [i ][j ]
8:
j =j+1
9:
end while
10:
i =i+1
11:
end while
12:
return suma /(n ∗ m)
13: end if
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
8. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Bucles Concatenados
Estos bucles se pueden probar utilizando el enfoque de bucles simples,
siempre y cuando cada uno de los bucles sea independiente del resto de
lo contrario se debe emplear el enfoque de bucles anidados.
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
9. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Ejemplos
Ejemplo
Algorithm 4 ejemplo(A , n)
1: menor = A [n ]
2: distancia = 0
3: i = n − 1
4: while (i > 0) do
5:
if menor > A [i ] then
6:
menor = A [i ]
7:
end if
8:
i =i−1
9: end while
10: i = n
11: while (i > 0) do
12:
distancia = A [i ] − menor
13:
i =i−1
14: end while
Andres distancia
15: return´ Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
10. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Bucles No Estructurados
´
˜
Siempre que sea posible estos bucles deben redisenarse.
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
11. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Pares
Algorithm 5 pares(x)
1: i = 2
2: while (i <= x) do
3:
Escribir i
4:
i =i+2
5: end while
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
12. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Palindromo
Algorithm 6 palindromo(palabra)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
n = length (palabra )
if (n > 20) then
Escribir ’Palabra muy larga’
else
if (n == 0) then
Escribir ’No es una palabra’
else
i=1
palabra2 =
while (i <= n) do
palabra2 = palabra [i ]
i =i+1
end while
if (palabra = palabra2) then
Escribir ’Es palindromo’
end if
end if
end if
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles
13. Cobertura de Bucles
Bucles Simples
Bucles Anidados
Bucles Concatenados
Bucles No Estructurados
Ejercicios
Levenshtein
Algorithm 7 levenshtein(palabra1, palabra2)
1: n1 = length (palabra1)
2: n2 = length (palabra2)
3: if (n1 > 50 or n1 == 0 or n2 > 50 or n2 == 0) then
4:
Escribir ’Palabras no validas’
5: else
6:
i=1
7:
while (i <= n1 ) do
8:
distancia [i ][1] = i
9:
i =i+1
10:
end while
11:
j=1
12:
while (i <= n2 ) do
13:
distancia [1][j ] = j
14:
j =j+1
15:
end while
16:
i=2
17:
while (i <= n1 ) do
18:
j=2
19:
while (j <= n2 ) do
20:
distancia [i ][j ] = min(distancia [i − 1][j ]+ 1, distancia [i ][j − 1]+ 1, distancia [i − 1][j − 1]+((palabra1[i − 1] == palabra2[j − 1])?0 :
1))
21:
22:
23:
24:
end while
end while
end if
return distancia
´
Andres Felipe Cano Cadavid acanocad@gmail.com
Cobertura de Bucles