cobertura de bucles

13

Click here to load reader

Upload: juan-esteban-puerta-cano

Post on 10-Jul-2015

309 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Cobertura de Bucles

Andres Felipe Cano Cadavid [email protected]

Tecnologico de Antioquia

23 de Septiembre del 2013

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 2: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Cobertura de Bucles

Se centra exclusivamente en la validez de las construcciones de bucles:

Simples

Anidados

Concatenados

No Estructurados

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 3: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

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 numeromaximo de pasos permitidos por el bucle).

Hacer n − 1, n y n + 1 pasos por el bucle.

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 4: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Ejemplos

Ejemplo

Algorithm 1 ejemplo1(x, y)1: while (x < 100 and x > 0) do2: x = x − 103: end while4: if (y < 20 and x %2 = 0 then5: y = y + 206: else7: y = y − 208: end if9: return 2 ∗ x + y

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 5: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Ejemplos

Ejemplo

Algorithm 2 divisores(n)1: nro = 12: while (nro <= n/2) do3: if (n%nro == 0) then4: Escribir nro5: end if6: nro = nro + 17: end while

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 6: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Ejemplos

Bucles Anidados

Si se empleara el mismo enfoque de prueba de bucles simples a losbucles anidados, el numero de pruebas aumentarıa considerablementepor lo cual se sugiere emplear el siguiente enfoque:

Comenzar por el bucle mas interior. Establecer o configurar losdemas bucles con sus valores mınimos.

Llevar a cabo las pruebas de bucles simples para el bucle masinterior, mientras se mantienen los parametros de iteracion de losbucles externos en sus valores mınimos. Anadir otras pruebas paravalores fuera de rango o excluidos.

Progresar hacia fuera, llevando a cabo pruebas para el siguientebucle, pero manteniendo todos los bucles externos en sus valoresmınimos y los demas bucles anidados en sus valores tıpicos.

Continuar hasta que se hayan probado todos los bucles.

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 7: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Ejemplos

Ejemplo

Algorithm 3 ejemplo2(A , n, m)1: if (n < 10 and m < 20) then2: suma = 03: i = 14: while (i ≤ n) do5: j = 16: while j ≤ m do7: suma = suma + A [i][j]8: j = j + 19: end while

10: i = i + 111: end while12: return suma/(n ∗m)13: end if

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 8: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

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 delo contrario se debe emplear el enfoque de bucles anidados.

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 9: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Ejemplos

Ejemplo

Algorithm 4 ejemplo(A , n)1: menor = A [n]2: distancia = 03: i = n − 14: while (i > 0) do5: if menor > A [i] then6: menor = A [i]7: end if8: i = i − 19: end while

10: i = n11: while (i > 0) do12: distancia = A [i] −menor13: i = i − 114: end while15: return distanciaAndres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 10: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Bucles No Estructurados

Siempre que sea posible estos bucles deben redisenarse.

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 11: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Pares

Algorithm 5 pares(x)1: i = 22: while (i <= x) do3: Escribir i4: i = i + 25: end while

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 12: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

Palindromo

Algorithm 6 palindromo(palabra)1: n = length(palabra)2: if (n > 20) then3: Escribir ’Palabra muy larga’4: else5: if (n == 0) then6: Escribir ’No es una palabra’7: else8: i = 19: palabra2 =′′

10: while (i <= n) do11: palabra2 = palabra[i]12: i = i + 113: end while14: if (palabra = palabra2) then15: Escribir ’Es palindromo’16: end if17: end if18: end if

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles

Page 13: cobertura de bucles

Cobertura de BuclesBucles Simples

Bucles AnidadosBucles Concatenados

Bucles No EstructuradosEjercicios

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: else6: i = 17: while (i <= n1) do

8: distancia[i][1] = i

9: i = i + 110: end while11: j = 112: while (i <= n2) do

13: distancia[1][j] = j

14: j = j + 115: end while16: i = 217: while (i <= n1) do

18: j = 219: 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: end while22: end while23: end if24: return distancia

Andres Felipe Cano Cadavid [email protected] Cobertura de Bucles