Algorítmica y Complejidad Curso 2012 / 2013 Examen Final 2 de julio de 2013 Apellidos............................................................................................................................... Nombre .......................................................................... Nº de Matrícula .......................... EJERCICIO 1 (5 puntos) (35 minutos) Indicar la cota superior de complejidad (O-grande) en función de N para el procedimiento “Prueba” que aparece en cada caso. Se supone que hay un programa principal, que no se muestra, en el que aparecen las definiciones necesarias. procedure Prueba (N : natural) is begin if N > 10 then x := 2 * N; else for i in 1..N loop x := 2 * N; end loop; end if; end Prueba; O( ) procedure Prueba (N : natural) is begin if N > 10 then x := 2 * N; else for i in 1..N-1 loop for j in 1..N loop x := 2 * N; end loop; end loop; end if; end Prueba; O( procedure Prueba (N : natural) is begin if N > 10 then for i in 1..N loop x := 2 * N; end loop; else for i in 1..N-1 loop for j in 1..N loop x := 2 * N; end loop; end loop; end if; end Prueba; O( ) ) procedure Prueba (N : natural) is begin for i in 1..n loop for j in 1..i loop x := 2 * N; end loop; end loop; end Prueba; O( ) procedure Prueba (N : natural) is begin x := 0; loop x := x + N; exit when x > 100; end loop; end Prueba; O( ) procedure Prueba (N : natural) is begin x := 0; loop x := 1 + (2 * x); exit when x > N; end loop; end Prueba; O( ) procedure Prueba (N : natural) is procedure vueltas is begin for i in 1..N loop for j in 1..N loop x := x + 1; end loop; end loop; end vueltas; begin x := 1; if n > 10 then vueltas; else for i in 1..N loop vueltas; end loop; end if; end Prueba; O( ) procedure Prueba (N : natural) is begin x := 0; loop x := x + (2 * N); exit when x > 100; end loop; end Prueba; O( ) procedure Prueba (N : natural) is A : array (1..100) of integer; begin x := N; for i in A'range loop A(i) := N + x; x := x + 1; end loop; end Prueba; O( ) procedure Prueba (N : natural) is procedure vueltas is begin for i in 1..N loop for j in 1..N loop x := x + 1; end loop; end loop; end vueltas; begin x := 1; if n < 10 then vueltas; else for i in 1..N loop vueltas; end loop; end if; end Prueba; O( )