![Page 1: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/1.jpg)
Tema 2:El lenguaje GOTO
Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla
Teorıa de la ComputabilidadCurso 2010–11
TC0, 2010–11 Lenguaje GOTO 2.1
![Page 2: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/2.jpg)
Modelos de computacion
El lenguaje GOTOSintaxisSemanticaFunciones computables
MacrosEjemplosExpansion de macros
TC0, 2010–11 Lenguaje GOTO 2.2
![Page 3: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/3.jpg)
Modelos de Computacion
I Un Modelo de Computacion proporciona una definicionmatematica precisa del concepto de algoritmo.
I Un Programa es la expresion formal de un algoritmo en unmodelo.
I Caracterısticas generales:1. Especificacion:
I Datos de entrada y salida (suelen ser del mismo tipo).I Operaciones basicas.
Acciones primitivas que actuan sobre los datos de entrada.
2. Implementacion e Interpretacion:I Sintaxis: reglas gramaticales para la construccion de los
procedimientos mecanicos (programas).I Semantica: definicion logico-matematica de las funciones o
relaciones que definen los procedimientos.
TC0, 2010–11 Lenguaje GOTO 2.3
![Page 4: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/4.jpg)
Funciones Computables
Un modelo de computacion, M, viene dado por:
I Un conjunto de datos de entrada y salida, DM .
I Un conjunto de programas PM (descrito por la sintaxis de M).
I Una descripcion del modo en que cada programa calcula unafuncion.
Sea P un programa en un modelo de computacion M.
I Asociamos a P una funcion sobre la estructura de datos
[[P]]M : D∗− −→ D donde, D∗ =⋃
k∈N−{0}
Dk
[[P]]M(d)= resultado de ejecutar P sobre el dato d .
Donde para cada aridad k , [[P]](k)M = [[P]]M �Dk
I Una funcion k-aria f : Dk− −→ D es M–computable siexiste un M-programa P tal que [[P]](k) = f . Denotamos porM–COMP al conjunto de funciones M–computables
TC0, 2010–11 Lenguaje GOTO 2.4
![Page 5: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/5.jpg)
Modos de Computacion
Asocian a la semantica del modelo una definicion de solucion.
I Modo secuencial-determinista.La ejecucion sobre un dato es unica. Resuelve el problema demanera exacta.
I Modo paralelo. Ejecuta diversas tareas en procesadoresdistintos. Resuelve el problema de manera exacta.
I Modo no determinista.Admite instrucciones que pueden elegir entre dos o masopciones. Resuelve un problema si entre sus posiblessoluciones proporciona una solucion exacta del mismo.
I Modo probabilista.Los programas son deterministas, pero se admite comosoluciones programas que, con cierta probabilidad,proporcionan una solucion exacta del problema.
TC0, 2010–11 Lenguaje GOTO 2.5
![Page 6: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/6.jpg)
El Lenguaje GOTO
Es un modelo secuencial y determinista con conjunto de datos: N.
I Sintaxis:
1. Variables:
De entrada: X1(= X ),X2,X3, ...De salida: YAuxiliares: Z1(= Z ),Z2,Z3, ...
2. Etiquetas: A1,B1,C1,D1,E1,A2,B2,C2,D2,E2, . . .I Notacion: A = A1, B = B1, C = C1, D = D1, E = E1.
3. Instrucciones: Para cada variable V y cada etiqueta L:I Incremento: V ←− V + 1I Decremento: V ←− V − 1I Condicional: IF V 6= 0 GOTO LI Skip: V ←− VI Instrucciones etiquetadas: Para cada etiqueta K :
[K ] V ←− V + 1[K ] V ←− V − 1[K ] IF V 6= 0 GOTO L[K ] V ←− V
TC0, 2010–11 Lenguaje GOTO 2.6
![Page 7: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/7.jpg)
Programas GOTO
I Un programa GOTO (un G–programa) es una sucesion finitade instrucciones del lenguaje GOTO, P = I1, I2, .., In, cuyaultima instruccion NO es Y ←− Y .
I Si P = I1, . . . , In es un programa GOTO el numero n sedenomina longitud del programa y se denota por |P|.
I Caso lımite: el Programa Vacıo (con 0 instrucciones).
I Denotaremos por GOTOP al conjunto de los G-programas.
I Ejemplo:
P :
[A] X ←− X − 1
Y ←− Y + 1IF X 6= 0 GOTO A
I Cada programa expresa un procedimiento para calcular unacierta funcion (parcial) de Nn en N. El modo en que cadaprograma lleva a cabo esto se determina mediante lasemantica del lenguaje GOTO.
TC0, 2010–11 Lenguaje GOTO 2.7
![Page 8: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/8.jpg)
Estados
Sea P un programa GOTO.
I Denotamos al conjunto de las variables del lenguaje GOTOmediante VAR.
I var(P) conjunto de variables que aparecen en P.
I Un estado de P es una aplicacion σ : VAR → N.
I Un estado es, esencialmente, una tabla variable–valor queguarda el valor de las variables del programa en un momentodado. Por ello, a veces, escribiremos V = m en lugar deσ(V ) = m.
TC0, 2010–11 Lenguaje GOTO 2.8
![Page 9: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/9.jpg)
Descripciones instantaneas
Sea P un programa GOTO.
I Una descripcion instantanea, (d.i.) de P, es un pars = (i , σ) donde 1 ≤ i ≤ |P|+ 1 y σ es un estado de P.
I Cuando i = 1 y σ(V ) = 0 para toda variable V , salvo unnumero finito de variables de entrada, la d.i. se denominainicial.
I Cuando i = |p|+ 1, la d.i. se denomina terminal.
I Si s = (i , σ), escribiremos s(V ) en lugar de σ(V ).
TC0, 2010–11 Lenguaje GOTO 2.9
![Page 10: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/10.jpg)
Semantica
Sea P un programa y s = (j , σ) y s ′ = (j ′, σ′) descripcionesinstantaneas de P con j 6= |p|+ 1.Diremos que s ′ es la descripcion instantanea siguiente de s enla computacion de P, y escribimos s `p s ′, si:
I Caso 1: Ij ≡ V ←− V + 1, s(V)=m. Entonces j ′ = j + 1 yI σ′ es σ sustituyendo V = m por V = m + 1.
I Caso 2: Ij ≡ V ←− V − 1, s(V)=m. Entonces j ′ = j + 1 yI Si m > 0, σ′ es σ sustituyendo V = m por V = m − 1.I Si m = 0, σ′ = σ
I Caso 3: Ij es de tipo SKIP. Entonces j ′ = j + 1 y σ′ = σ.I Caso 4: Ij ≡ IF V 6= 0 GOTO L. Entonces σ′ = σ y
I Si s(V ) = 0, entonces j ′ = j + 1I Si s(V ) 6= 0
I Si existe k tal que Ik es la primera instruccion etiquetada conL, entonces j ′ = k
I Si no existe tal k, j ′ = |p|+ 1
TC0, 2010–11 Lenguaje GOTO 2.10
![Page 11: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/11.jpg)
Computacion de un programa
Una computacion de un programa P es una sucesion de d.i. de P,s = s1, . . . , sk , . . . tal que:
I s1 = (1, σ) es una d.i. inicial.
I Para todo k , con sk no terminal, existe k + 1 tal quesk `p sk+1
Una computacion s de p es finita si y solo si existe k tal que sk esterminal. En tal caso, escribiremos P(s) ↓ y diremos que dichacomputacion para. En caso contrario, la computacion s es infinita;escribiremos P(s) ↑ y diremos que no para.
Lema. Para todo P ∈ GOTOP se verifica:
I Ausencia de bloqueo: Para toda d .i ., s, no terminal, existe s ′
tal que s `p s ′.
I Determinismo: Para cada d .i . inicial existe una unicacomputacion.
TC0, 2010–11 Lenguaje GOTO 2.11
![Page 12: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/12.jpg)
Ejemplo
[A] IF X 6= 0 GOTO BZ −→ Z + 1IF Z 6= 0 GOTO E
[B] X −→ X − 1Y −→ Y + 1IF X 6= 0 GOTO A
s1 = (1, {X = 3, Y = 0, Z = 0})s2 = (4, {X = 3, Y = 0, Z = 0})s3 = (5, {X = 2, Y = 0, Z = 0})s4 = (6, {X = 2, Y = 1, Z = 0})s5 = (1, {X = 2, Y = 1, Z = 0})s6 = (4, {X = 2, Y = 1, Z = 0})s7 = (5, {X = 1, Y = 1, Z = 0})s8 = (6, {X = 1, Y = 2, Z = 0})s9 = (1, {X = 1, Y = 2, Z = 0})s10 = (4, {X = 1, Y = 2, Z = 0})s11 = (5, {X = 0, Y = 2, Z = 0})s12 = (6, {X = 0, Y = 3, Z = 0})s13 = (7, {X = 0, Y = 3, Z = 0})
TC0, 2010–11 Lenguaje GOTO 2.12
![Page 13: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/13.jpg)
Funciones GOTO–computables
Sea P un G–programa. La funcion de aridad n calculada por P es
la funcion [[P]](n) : Nn − → N definida como sigue:Dado ~a = (a1, . . . , an) ∈ Nn,
1. Sea σ el estado de P dado por:I σ(Xi ) = ai (1 ≤ i ≤ n)I σ(V ) = 0 para toda V ∈ var(P) \ {X1, . . . ,Xn}.
2. Sea ahora s1 = (1, σ). Entonces
[[P]](n)(~a) =
sk(Y ) si existe s1, . . . , sk finita de p
a partir de s1
↑ e.c.o.c.
Definicion. Diremos que una funcion f : Nn − → N esGOTO–computable (f ∈ G –COMP), si existe un programaGOTO, P tal que f = [[P]](n).
I G –COMP(n) es el conjunto de funciones computables de aridad n.
TC0, 2010–11 Lenguaje GOTO 2.13
![Page 14: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/14.jpg)
Ejemplos
I La funcion identidad IdN : N→ N es GOTO–computable.
IF X 6= 0 GOTO BZ ←− Z + 1IF Z 6= 0 GOTO E
[B] X ←− X − 1Y ←− Y + 1IF X 6= 0 GOTO B
I La funcion vacıa f∅ es GOTO–computable:
[A] Z ←− Z + 1IF Z 6= 0 GOTO A
I La funcion nula O : N −→ N O(x) = 0 esGOTO–computable.
La funcion nula es calculada por cualquier programa que paresiempre y en el que no aparezca la variable de salida Y .
TC0, 2010–11 Lenguaje GOTO 2.14
![Page 15: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/15.jpg)
Macros
Existen bloques de instrucciones que podemos considerar como“nuevas instrucciones” ya que podemos utilizarlos en cualquierprograma para realizar una cierta subtarea. Veamos algunosejemplos de esto:
I El bloque de instrucciones:
Z ←− Z + 1IF Z 6= 0 GOTO L
nos permite realizar un salto incondicional a la instruccionetiquetada por L (o terminar la ejecucion del programa).
I Podemos poner a cero una variable V mediante el siguientebloque de instrucciones:
[L] V ←− V − 1IF V 6= 0 GOTO L
TC0, 2010–11 Lenguaje GOTO 2.15
![Page 16: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/16.jpg)
Macros (II)
I Es util introducir abreviaturas para poder usar comodamentelos bloques anteriores en la descripcion de un programa.
I Dichas abreviaturas se denominan macros y para poderusarlas debemos especificar con precision la forma en quedichas abreviaturas se reemplazan por verdadero codigo.
GOTO L︸ ︷︷ ︸MACRO
=⇒ Zk ←− Zk + 1IF Zk 6= 0 GOTO L
}︸ ︷︷ ︸
EXPANSION
V ←− 0︸ ︷︷ ︸MACRO
=⇒{
[K ] V ←− V − 1IF V 6= 0 GOTO K︸ ︷︷ ︸
EXPANSIONI En el primer caso Zk debe ser una variable que no aparece en el
programa en que realizamos la expansion. En el segundo caso K es
una etiqueta que no aparece en dicho programa.
TC0, 2010–11 Lenguaje GOTO 2.16
![Page 17: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/17.jpg)
Macros. Asignacion
La macro V ←− V ′ asigna a V el valor de V ′, conservando V ′ suvalor.
V ←− 0[A] IF V ′ 6= 0 GOTO B
GOTO C[B] V ′ ←− V ′ − 1
V ←− V + 1Z ←− Z + 1GOTO A
Copia V ′ en V y en ZyPone V ′ a cero
[C ] IF Z 6= 0 GOTO DGOTO L
[D] Z ←− Z − 1V ′ ←− V ′ + 1GOTO C
Copia Z en V ′
Pone Z a cero
[L] V ←− V}
Continua
TC0, 2010–11 Lenguaje GOTO 2.17
![Page 18: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/18.jpg)
Uso de las macros
La funcion suma: Sum : N2 −→ N Sum(x , y) = x + y
P+
Y ←− X1
Z ←− X2
[B] IF Z 6= 0 GOTO AGOTO E
[A] Z ←− Z − 1Y ←− Y + 1GOTO B
Ejercicio: Prueba de la correccion para la suma.
(∀x , y ∈ N)([[P+]](2)(x , y) = x + y)
(por induccion debil sobre la segunda variable).
TC0, 2010–11 Lenguaje GOTO 2.18
![Page 19: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/19.jpg)
Uso de macros (II)
La funcion producto. Prod : N2 −→ N ·(x , y) = x ·y
p×
Z2 ←− X2
[B] IF Z2 6= 0 GOTO AGOTO E
[A] Z2 ←− Z2 − 1Z1 ←− X1 + YY ←− Z1
GOTO B
Nota: Z1 ←− X1 + Y es una macro ejecuta el programa Suma yasigna el resultado a la variable Z1.
TC0, 2010–11 Lenguaje GOTO 2.19
![Page 20: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/20.jpg)
Expansion de macros (I)
Sean f ∈ GCOMP(n) y P ∈ GOTOP tales que [[P]](n) = f .Veamos una expansion para la macro: W ←− f (V1, . . . ,Vn).
1. Renombrando las etiquetas de P si fuese necesario, podemossuponer que la unica etiqueta de salida de P es E y todas lasdemas etiquetas de P son A1, ..,Ar .
2. Renombrando variables podemos suponer que las unicasvariables de entrada que aparecen en P son X1, . . . ,Xn y lasunicas variables auxiliares Z1, . . . ,Zk .
3. Podemos expresar la situacion anterior escribiendo
P ≡ P(Y ,X1, . . . ,Xn,Z1, . . . ,Zk ; E ,A1, . . . ,Ar )
4. Dado m ∈ N podemos obtener un nuevo programa
Qm ≡ P(Zm, ,Zm+1, ..,Zm+n,Zm+n+1, ..,Zm+n+k ; Em,Am+1, ..,Am+r )
sustituyendo en P cada variable y cada etiqueta por lacorrespondiente de Qm.
TC0, 2010–11 Lenguaje GOTO 2.20
![Page 21: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/21.jpg)
Expansion de macros (II)
Para expandir la macro en un programa P ′, tomamos m ∈ Nsuficientemente grande para que Qm y P ′ no tengan variables nietiquetas comunes. Una vez determinado m reemplazamos lamacro por:
W ←− f (V1, . . . ,Vn)
Zm ←− 0Zm+1 ←− V1...Zm+n ←− Vn...Zm+n+1 ←− 0...Zm+n+k ←− 0Qm
[Em] W ←− Zm
TC0, 2010–11 Lenguaje GOTO 2.21
![Page 22: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia](https://reader034.vdocuments.pub/reader034/viewer/2022052612/5f0f84947e708231d4448f1e/html5/thumbnails/22.jpg)
Macros condicionales
Si P(V1, . . . ,Vn) es un predicado G-computable:
macroexpansion macroZ ←− P(V1, . . . ,Vn)IF Z 6= 0 GOTO L
} IF P(V1, . . . ,Vn) 6= 0 GOTO L
Ejemplo: IF V = 0 GOTO L
V = 0 ≡ P(v) =
{1 si v = 00 si v 6= 0
donde P(v) es G-computable:
{IF X 6= 0 GOTO EY ←− Y + 1
TC0, 2010–11 Lenguaje GOTO 2.22