Conjunto Mínimo de Instrucciones:

 

            Como ya bien sabemos el Lenguaje While consta de cuatro instrucciones de asignación:

 

                                                                                  Xi:=Xj

                                                                                                              Xi:=Xj + 1

                                                                                  Xi:=Xj – 1         ( 0 -1 = 0)

                                                                                  Xi:=0

 

            La primera pregunta que debemos plantearnos es si dicho  juego de instrucciones es mínimo.Para ello, debemos ver si es posible implementar alguna instrucción con el resto de la sintaxis del lenguaje o bien demostrar que esto no es posible.

           

            ×Veamos la instrucción Xi:=0 :

 

       ×Esta instrucción puede realizarse fácilmente con el bucle indefinido y con la instrucción de decrementar de la siguiente manera:

 

                                              while Xi ¹ 0 do

                                                        Xi:=Xi-1

                                               od

                             ×Aunque es preferible la realización anterior, otra posible simulación  podría ser la siguiente:                                                                                                                   

 

                  Dentro de la Semántica Informal vimos que aquellas variables que no son de entrada se inicializan implícitamente a cero.Por lo que existe la posibilidad de obtener el cero mediante la asignación de la variable Xi , que es a la que queremos dar el valor nulo, a la variable Xj con j = p+1.Siendo Xj una variable que sabemos con total seguridad que no ha sido utilizada aún.Pues ‘p’ es el número total de variables utilizadas por el programa en el instante que realizamos la asignación Xi:=Xj.

 

                             

            Ya estamos en disposición de poder asegurar que el juego de instrucciones del que consta el Lenguaje While no es mínimo.Quedando nuestro juego de instrucciones como sigue:

 

                                                                                  Xi:=Xj

                                                                                                  Xi:=Xj + 1

                                                                                              Xi :=Xj– 1         ( 0 -1 = 0)

 

            La siguiente cuestión que debemos plantearnos es si este conjunto de instrucciones ya es mínimo o puede reducirse todavía  más.

 

            ×Veamos la instrucción Xi:=Xj :

 

   ×Esta instrucción puede realizarse con la utilización de las instrucciones de incremento y decremento de la siguiente manera:

                                               

                                                while Xi ¹ 0 do

            Nos aseguramos                      Xi:=Xi-1

              que Xi valga 0.            od

                                               

                                               

                                                while Xk ¹ 0 do

            Nos aseguramos                      Xk:=Xk-1       Utilizamos Xk para que la asignación no sea destructiva, es decir,

              que Xk valga 0.           od                                                      para que el valor de Xj no se pierda.

                                               

                                                while Xj ¹ 0 do

                                                           Xj:=Xj-1;

                                                           Xi:=Xi+1;

                                                           Xk:=Xk+1

                                                od

                                                while Xk ¹ 0 do

                                                           Xk:=Xk-1;         Con este bucle devolvemos a Xj su valor.

                                                           Xj:=Xj+1

                                                od

                                               

                  Nuestro conjunto de instrucciones queda como sigue:

 

                                                                                  Xi:=Xj + 1

                                                                                  Xi :=Xj – 1         ( 0 -1 = 0)

 

                 

             × Restricción del conjunto encontrado:

                             

Podemos restringir todavía más el conjunto encontrado estableciendo que las instrucciones con las que vamos a trabajar son:

 

                                                                                  Xi:=Xi + 1

                                                                                  Xi :=Xi – 1         ( 0 -1 = 0)

 

                         Así realizamos la simulación de Xi:=Xj-1 como sigue:

                                                                      

                                                         (1, 2, programa)

 

                                                           programa:        Xj:=Xj-1

                                                                                  while Xj ¹ 0 do

                                                                                               Xi:=Xi+1;           Con Xi como variable auxiliar

                                                                                              Xj:=Xj-1

                                                                                   od

                         Y la simulación de Xi:=Xj + 1 como sigue:

 

                                                         (1, 2, programa)

 

                                                           programa:       Xj:=Xj+1

                                                                                  while Xi ¹ 0 do

                                                                                               Xi:=Xi-1;            Con Xj como variable auxiliar

                                                                                              Xj:=Xj+1

                                                                                   od

 

 

          Este es el conjunto de instrucciones más pequeño que he encontrado.Lo cual no significa que no pueda reducirse todavía más.

                                                                                                                            

                                                                                                                             Volver.