Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: arts en 8 Diciembre 2012, 02:33 am



Título: Duda en seudocodigo
Publicado por: arts en 8 Diciembre 2012, 02:33 am
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
Código:
<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...


Título: Re: Duda en seudocodigo
Publicado por: Ferno en 8 Diciembre 2012, 18:31 pm
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!


Título: Re: Duda en seudocodigo
Publicado por: arts en 8 Diciembre 2012, 20:09 pm
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 !