Duda en seudocodigo

Iniciado por arts, 8 Diciembre 2012, 02:33 AM

0 Miembros y 1 Visitante están viendo este tema.

arts

Muy buenas, estaba viendo uno de los ejemplos que tengo y no entiendo bien una cosilla en un método de ordenación sucesivo de menores. El ejemplo dice dado un array de 100 elementos ordenar de menor a mayor usando el método de ordenación sucesivo de menores.


Mi pregunta viene en el método de proc_intercambio
<ordenar>
Inicio
  Tabla Tb(100)
  <cargar_tabla>
  <orde_sucesivo_de_menores>
  <proc_intercambio>
Fin

<orde_sucesivo_de_menores>
Inicio
  Para i desde 1 hasta 99
        Min = Tb(i)
        pos_ele = i
       Para j desde j=i+1 hasta 100
            Si min > Tb(j)
                entonces
                   min = Tb(j)
                   pos_ele = j
            Fin_si
       Fin_para
       <proc_intercambio>
   Fin_para
Fin


<proc_intercambio>
Inicio
  aux = Tb(i)
  Tb(i) = Tb(pos_ele)
  Tb(pos_ele) = aux
Fin


En este ultimo método tengo una duda, yo simplemente haría en la 2ª linea en vez de Tb(i) = Tb(pos_ele) pondría sin dudarlo Tb(i) = min pero ahora al ver la solución no entiendo si están las dos formas bien hechas o no.

¿Están bien las dos formas ? ¿ no ? ¿ Que diferencia tiene si esque hace cosas diferentes ?
Por lo que yo entiendo estaría simplemente metiendo en tb(i) el valor min cosa que es lo que quiero ya que se quedo guardado, de la otra forma creo qu elo que hace es lo mismo pero en vez de meter el valor le estoy diciendo una posición del array que contiene justamente el min creo o no...

Ferno

Depende de cómo estés manejando el pseudocódigo pero en teoría sí, lo que vos decís también está bien.

El tema viene cuando utilices un lenguaje de programación "real". Debido a que una variable (como por ejemplo "min") no podrás usarla en el procedimiento correspondiente a menos que la pases por parámetro. (si te marea ésto, lee un poco por internet, pero tampoco te angusties porque veo que no le están dando importancia).

Como en este pseudocódigo parece que no le dan bola al ámbito de las variables (porque también estás usando "pos_ele" en el procedimiento), entonces te diría que es exactamente lo mismo lo que vos decís y lo que está plasmado en el code.

Pero te comento, el procedimiento "intercambio" lo vas a ver generalmente como está en el code!

Saludos!

arts

Gracias!, ya veo lo que dices, en efecto creo que no le estamos haciendo mucho caso al ambito de las variables si desde cierto punto puedo acceder a otro, etc...

Gracias, me has resuelto la duda !