Ejercicio 14 b y d

Ejercicio 14 b y d

de Enzo Roman Gimenez Umpierrez -
Número de respuestas: 2

Buenas, no me queda claro por qué la parte d del ejercicio es distinta de la b. En la parte b seguí la estrategia de asumir que el primer elemento del vector es el mínimo y luego con un bucle for fui comparando elemento a elemento en el vector: 

v=[-1000 1 4 5 6 -765 8 9 -1 -500 -1001 700]; %Vector de prueba, el mínimo es -1001

minim=v(1);

n=length(v);

for i=2:n

  if v(i) <minim

         minim=v(i);

  endif

endfor


Está bien razonado? El script también es valido para la parte d? (Porque lo ejecuto con un vector de naturales y anda sin problema). Agradezco una mano, gracias! 




En respuesta a Enzo Roman Gimenez Umpierrez

Re: Ejercicio 14 b y d

de Eduardo Fernandez -

Hola Enzo,

Tenés razon en que el código de b también funciona y da la solución correcta para d.  Pero hay una diferencia fundamental entre ambas partes: en d) se asume que los elementos del vector son "no negativos". Esto implica que si al recorrer el vector te encontrás un 0 ya podés parar, porque no vas a encontrar un no negativo menor. Es un tema de eficiencia computacional. Quizá el primer elemento ya es 0, ¿para qué recorrerlo todo? Entonces, nosotros en el curso controlamos que se den cuenta de eso. 

Pregúntense: ¿Es mejor resolverlo con un FOR o con un WHILE? Por ejemplo, si el problema obliga a recorrer todo el vector (sumar los elementos de un vector), entonces queremos que se den cuenta y utilicen un FOR. Por otra parte, si la iteración puede detenerse en cualquier momento porque se cumple la condición deseada, se utiliza WHILE, así en cada iteración se controla si se cumplió la condición (en este caso si el vector contiene un 0). 

Esto lo controlaremos en los parciales y en los exámenes. Es más, cuando pensamos las letras procuramos que esté más o menos balanceada la cantidad de ejercicios que se resuelvan usando FOR y usando WHILE. Quitamos una cantidad de puntos importante si usan WHILE pudiendo usar FOR o al revés. 

En conclusión, es buena idea que en cada ejercicio te preguntes si se resuelve con FOR o con WHILE (o con qué combinación de ambos). 

Espero que esto les aclare el panorama. En los prácticos siempre hacemos hincapié en este punto, y en el teórico también. Vean los videos si no vienen a clase. 

saludos,

Eduardo