En CU00118A página 69 tenemos estos esquemas:
Al respecto podemos indicar lo siguiente:
- Son esquemas un tanto complejos para una fase de estudio inicial de fundamentos de programación y no necesariamente hay que saber construirlos o interpretarlos "de un plumazo", pues se tratan en profundidad en niveles más avanzados.
- Sí es interesante saber lo que representan, de forma general, estos esquemas. Comentamos algo al respecto:
Una vez sabemos la metodología que aplicamos para resolver un problema como el de una ordenación de números con un método concreto, un esquema de este tipo sirve para definir cómo ha de ejecutarse dicho proceso de forma que una persona que no sepa lo que está haciendo, sea capaz de obtener resultados simplemente siguiendo el esquema.
En este sentido, el esquema se lee de la siguiente manera: se van extrayendo los órdenes posibles desde 1 hasta n para irlos asignando. Al número que hemos extraido en este momento preciso lo llamamos a. Evaluamos si a = 1, este sería el caso de que todavía no tenemos ningún elemento en la serie ordenada. Si es así, forzosamente el primer elemento extraído, que es v(1) es puesto en primer lugar, es decir, o(1) = v(1).
Si no es así entramos en un subproceso donde empezamos una nueva cuenta que va desde 1 hasta a-1 y al número que hemos extraido en un momento preciso lo llamamos m. Vamos realizando comparaciones entre v(a) y o(m). Cuando un valor resulta superior a un orden tenemos que realizar el proceso especial de "Desplazar y saltar a extraer el siguiente valor de a"
Quizás en este momento del curso no debamos saber plantear ni entender el esquema, pero sí sería interesante que tratáramos de seguirlo entrando con unos datos de partida.
Por ejemplo, si mis datos de partida son 33 - 2 - 17, tenemos que n = 3 y que v(1) = 33, v(2) = 2 y v(3) = 17
Entro en el esquema: vamos a extraer desde 1 hasta 3. Primero extraigo el 1 y en este momento digo que a = 1
Evalúo la condición ¿a=1? Sí - > Entonces asigno o(1) = v(1), es decir , o(1) = 33
Paso al principio y extraigo el siguiente valor de a. Ahora a = 2 (en cada paso vamos sumando 1 hasta llegar a n)
Evalúo la condición. ¿a=1? No, prosigo.
Extraemos de 1 a a-1, como a ahora vale 2, extraemos de 1 a 1, es decir, sólo extraemos el 1 y decimos que en este momento m=1
v(1) > o(1)? No, prosigo
m = a-1? Como m es 1 y a-1 es 1, sí se cumple, por tanto o(a)=v(a), es decir, o(2)=v(2) , es decir, o(2) = 2
Ya no podemos extraer más m porque ya llegamos al límite.
Pasamos al siguiente valor de a.
a=1? no
Extraemos desde 1 a a-1, es decir de 1 a 3. Ahora m=1
v(3)>o(1)? no, prosigo
m=a-1? no, prosigo
Ahora extraemos m=2
v(3)>o(2) ? Sí - > Tengo que ejecutar el desplazamiento. Con el desplazamiento o(3)=o(2), es decir, o(3) =2
Una vez termino el desplazamiento prosigo a extraer el siguiente valor de a. Como a tenía que ir desde 1 hasta n, siendo n 3 y ya hemos llegado a 3, el proceso termina.