You are on page 1of 4

Elementos de Programaci on. ETSIT.

1o C
Tema 5 Decisiones y Buclesa on de Ejercicios Relaci
30 de octubre de 2001

V
1

Decisiones y Bucles
(a) Considera el siguiente c odigo, en el que Pi (i = 1, 2, 3, 4) son segmentos de c odigo cualesquiera:
si a > sinosi sinosi sinosi finsi 0 entonces P1 b <> 0 entonces P2 a == b entonces P3 a == 0 entonces P4

Para qu e valores de a y b se ejecuta P4? (b) Transforma el siguiente c odigo en la instrucci on de selecci on m as simple que encuentres:
si a < b entonces si b<0 entonces P finsi sinosi a == b entonces si b == 0 entonces Q sinosi b > 0 entonces P finsi finsi

(c) Bajo qu e condiciones terminan las siguientes instrucciones? Suponer que a es un n umero entero cualquiera:
n = n + 1 // a) mientras n <> 50 hacer n = n - 1 finmientras // b) mientras n <> 50 hacer n = n - a finmientras // c) mientras n <> 50 hacer si n<50 entonces finsi si n>50 finsi finmientras // d) mientras n <> 50 hacer mientras n <=100 hacer n = n + 1 finmientras finmientras entonces n = n - 1

2 Dise na y optimiza un algoritmo que calcule n umeros combinatorios. 3 Cu antas veces se ejecutar a la Acci on I en

DECISIONES Y BUCLES
// b) cont=0 mientras cont < 10 hacer si cont = 10 entonces Acci on I finsi cont = cont + 1 finmientras

// a) cont=0 mientras cont < 10 hacer cont = cont + 1 si cont = 10 entonces Acci on I finsi finmientras

4 Cu al es el valor de la variable booleana test despu es de la ejecuci on de los siguientes bucles:


test = TRUE para contador = 1 hasta N hacer test = NOT test finpara test = N MOD 2 == 0 para contador = 1 hasta N hacer test = NOT test finpara

5 Qu e rango de valores pueden tomar X e Y para garantizar que el siguiente algoritmo iterativo termina?
a = X; b = Y; repetir mientras a>b hacer a = a - b; finmientras; mientras b>a hacer b = b - a; finmientras hasta que a == b;

6 Escribe un algoritmo que calcule el valor de S para un n umero real X dado utilizando la siguiente serie: X2 X3 S = 1+X + + +... 2! 3! El valor de S se calcular a con un error menor que = 0.0001, lo que corresponde, como serie de Taylor que es, a no a nadir m as t erminos cuando el u ltimo ya sea menor que . 7 Confecciona un bucle que lea de alg un dispositivo de entrada un texto de car acter en car acter hasta localizar un punto, y que al nal d e como salida el n umero de comas encontradas, y el n umero de caracteres leidos. 8 Escribe un algoritmo que lea un n umero natural N y dibuje un tri angulo de asteriscos con base y altura N . Por ejemplo si N = 5 deber a dibujarse: * * * * * * * * * * * * * * *

DECISIONES Y BUCLES

9 Escribe un algoritmo que lea un n umero natural N y un car acter. La salida debe ser un rombo compuesto del car acter y de la anchura que especica el n umero N . Por ejemplo, si N es 5 y el car acter es *, el rombo ser a: * * * * * * * * * 10 Escribe un algoritmo que imprima una pir amide de d gitos como la de la gura, tomando como entrada el n umero de las de la misma. 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 3 2 1 4 3 2 1 * * * * * * * * * * * * * * * *

11 Escribe un algoritmo que lea un lista de n umeros enteros terminada en 0, y que encuentre y escriba en la pantalla la posici on de la primera y de la u ltima ocurrencia del n umero 12 dentro de la lista. Si el n umero 12 no est a en la lista, el algoritmo deber a escribir 0. Por ejemplo, si el octavo n umero de la lista es el u nico 12, entonces 8 ser a la primera y la u ltima posici on de las ocurrencias de 12. 12 Dise na un algoritmo que diga si un n umero dado por el usuario es primo o no es primo. 13 Dise na un algoritmo que encuentre todos los n umeros primos menores que un n umero dado N . 14 Dise na un algoritmo que encuentre el primer n umero perfecto mayor que 28. Un n umero es perfecto si coincide con la suma de sus divisores. Por ejemplo, 28 es perfecto ya que 28 = 1 + 2 + 4 + 7 + 14. 15 Dada una sucesi on, de longitud indeterminada, de ceros y unos, construir un algoritmo que permita calcular el tama no de la mayor subsucesi on ordenada de menor a mayor. La sucesi on se lee desde el teclado, y el nal viene dado por el n umero 2. 16 Dise na un algoritmo que determine si la cadena abc aparece en una sucesi on de caracteres cuyo nal viene dado por el car acter \r. 17 Escribe un segmento de c odigo que asigne a la variable fact el factorial de un n umero n 0, siendo {fact = (i 1)!, i n + 1} el invariante del bucle que contiene. (i representa la variable contadora del bucle). 18 Sea f : N N una funci on biyectiva y F (n N ) N la funci on que implementa a f. Demuestra que existe otra funci on G(n N ) N que implementa a la funci on inversa f 1 . 19 Implementa una secuencia de sentencias que calculen la n- esima potencia de un n umero positivo x, siendo n una constante conocida, de manera que el invariante del bucle que contiene sea: Inv = {i 0, pot = xni } donde i es la variable contadora del bucle y pot la variable en la que se van acumulando los sucesivos productos.

DECISIONES Y BUCLES

20 Para calcular la suma de las n primeras potencias de 2: 20 + 21 + . . . + 2n , n0

hemos dise nado el c odigo siguiente. Si es incorrecto, modif calo para que funcione. Cu al es el invariante del bucle que contiene?
i = 0; s = 0; j = 1; mientras i <= n hacer j = 2 * j; s = s + j; i = i + 1; finmientras;

21 Escribe un algoritmo que encuentre el mayor, el menor y la media aritm etica de una colecci on de N n umeros le dos por el teclado donde N es el primero de los n umeros le dos y el resto son los datos en s . 22 Dise nar un algoritmo para calcular el M aximo Com un Divisor de dos n umeros naturales x e y por el m etodo de Euclides de forma iterativa. Este m etodo establece las siguientes premisas: mcd(x, y) = mcd(x, xMODy) x>y mcd(x, y) mcd(y, x) mcd(x, 0) 0 23 Dise nar un algoritmo que calcule el n umero natural mayor y m as cercano a la ra z cuadrada de otro n umero natural usando como primitivas s olo sumas y restas. 24 Dise na un algoritmo que lea un n umero n por telcado y calcule el n- esimo n umero de la serie de Fibonacci. Los dos primeros n umeros de esta serie son el cero y el uno, y a partir de estos cada n umero se calcula realizando la suma de los dos anteriores.

You might also like