los lenguajes WHILE y LOOP X2 := X1; while X2 0 do X1 := X1 + 1; X2 := X2 1 od

Documentos relacionados
Lenguajes, Gramáticas y Autómatas Conceptos

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Lección 2 Introducción al lenguaje C

Java para no Programadores

Lenguajes y Gramáticas

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

GUÍA BÁSICA DE SCHEME v.4

Tema 2. El lenguaje JAVA

Conjuntos, relaciones y funciones Susana Puddu

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Lenguaje de programación C. Introducción

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Algoritmos y programas. Algoritmos y Estructuras de Datos I

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Elementos de un programa en C

Nota: Se entiende que el usuario no introducirá un divisor igual a cero.

Tema 7. Generación de código

Estructuras de Control

Java Avanzado Facultad de Ingeniería. Escuela de computación.

FUNDAMENTOS DE INFORMÁTICA

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

* e e Propiedades de la potenciación.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

REFERENCIA DEL LENGUAJE

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Manual de turbo pascal

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Informática Ingeniería en Electrónica y Automática Industrial

Principios de Computadoras II

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Introducción. El uso de los símbolos en matemáticas.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

4. Operadores Operador asignación

Operadores y Expresiones

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Guía práctica de estudio 05: Diagramas de flujo

5. Subprogramas Fundamentos de Informática

Clase 8 Matrices Álgebra Lineal

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

LA FUNCIÓN INVERSA. Si R es una relación, la relación R definida por la proposiciones. (a, b) R (b, a) R. (a, b) R (c, b) R a = c

Elementos léxicos del lenguaje de programación Java

Tema: Los Grafos y su importancia para la optimización de redes.

Semántica Denotacional

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Métodos de Inteligencia Artificial

Estatutos de Control C# Estatutos de Decisión (Selección)

SISTEMA DE NUMEROS REALES

MATEMÁTICAS BÁSICAS. Autoras: Margarita Ospina Pulido Jeanneth Galeano Peñaloza Edición: Rafael Ballestas Rojano

b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 7: Lunes 22 - Viernes 27 de Abril. Contenidos

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Análisis y síntesis de sistemas digitales combinacionales

El lenguaje C. 3. Una instrucción que se ejecutará si la condición es verdadera.

Estructuras de control

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Operaciones con monomios y polinomios

Práctica de constantes, expresiones y operadores. Programación en C 1

NOT. Ejemplo: Circuito C1

PHP: Lenguaje de programación

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

DERIVADAS. Para hallar la pendiente de una curva en algún punto hacemos uso de la recta tangente de una curva en un punto.

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

Tema 2: Espacios Vectoriales

Comparaciones en lenguaje ensamblador

Cómo nombrar variables ( 2&

Expresiones y sentencias

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

En matemáticas el concepto de conjunto es considerado primitivo y no se da una definición de este, por lo tanto la palabra CONJUNTO debe aceptarse

MATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).

ESTRUCTURA Y TECNOLOGÍA DE LOS COMPUTADORES I. TEMA 4 Algebra booleana y puertas lógicas

Semana 09 [1/28] Sucesiones. 29 de abril de Sucesiones

Base y Dimensión de un Espacio Vectorial

Álgebra de Boole. Adición booleana. Multiplicación booleana. Escuela Politécnica Superior

Complejidad de Algoritmos

MATEMÁTICAS APLICADAS A LAS C.C. SOCIALES

Herramientas computacionales para la matemática MATLAB: Estructuras de control

Tema 3.- Predicados y sentencias condicionales

Espacios Vectoriales

TEMA 3 ÁLGEBRA DE CONMUTACIÓN

Lenguajes Regulares. Antonio Falcó. - p. 1

1 Ecuaciones diferenciales

Sobre funciones reales de variable real. Composición de funciones. Función inversa

Álgebras de Boole. Juan Medina Molina. 25 de noviembre de 2003

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

un conjunto cuyos elementos denominaremos vectores y denotaremos por es un espacio vectorial si verifica las siguientes propiedades:

Sumario: Teoría de Autómatas y Lenguajes Formales. Capítulo 2: Lenguajes Formales. Capítulo 2: Lenguajes Formales

Unidad II. Conjuntos. 2.1 Características de los conjuntos.

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

Métodos para la construcción de software fiable: Interpretación Abstracta. María del Mar Gallardo Melgarejo Pedro Merino Gómez

Tema 7: Programación con Matlab

John Venn Matemático y filósofo británico creador de los diagramas de Venn

Lógica proposicional. Ivan Olmos Pineda

TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN

Fundamentos de Programación Visual Basic

Tutorial Básico de vbscript

Transcripción:

los lenguajes WHILE y LOOP X2 := X1; while X2 0 do X1 := X1 + 1; X2 := X2 1 od

índice de materias introducción histórica modelos de cálculo lenguajes WHILE y LOOP funciones µ-recursivas teorema de equivalencia indexaciones y universalidad problemas no resolubles sintaxis, semántica y capacidad expresiva

WHILE y LOOP están basados en el bucle indefinido y el bucle definido WHILE LOOP veremos: - sintaxis - semántica informal - semántica formal? 15

sintaxis del lenguaje WHILE identificadores X 1, X 2, X 3,..., X i,... instrucciones de asignación código X i := X j secuencia finita no vacía de X i := X i + 1 instrucciones separadas X i := X i 1 ( 0 1 = 0 ) por ";" X i := 0 instrucción de control programa bucle indefinido: while X i 0 do (cabecera) od (n, p, código) p n código (cuerpo) ambos naturales (cola) Nota: el índice de anidamiento siempre es finito

ejemplo de programa WHILE Ejemplo 1: Sea el programa WHILE (1, 2, código) con código: X 2 := X 1 ; while X 2 0 do X 1 := X 1 + 1 ; X 2 := X 2 1 od

ejemplo de programa WHILE Ejemplo 2: Sea el programa WHILE (1, 1, código) con código: X 1 := X 1 + 1 ; while X 1 0 do od X 1 := X 1

trabaja sólo con naturales semántica informal del lenguaje WHILE no hay instrucciones de entrada ni de salida para un programa (n, p, código) n variables de entrada: X 1, X 2,..., X n 1 variable de salida: X 1 p variables de uso: X 1, X 2,..., X p con p n las variables que no son de entrada se inicializan implícitamente a cero una única función (que puede ser parcial) de N n en N se puede asociar a cada programa

ejemplo de programa WHILE Semántica del programa del ejemplo 1: Sea el programa WHILE (1, 2, código) con código: X 2 := X 1 ; while X 2 0 do od X 1 := X 1 + 1 ; X 2 := X 2 1 Este programa tiene una variable de entrada (X 1 ), usa dos variables (X 1, X 2 ), y X 2 se inicializa implícitamente a cero. Calcula: f(n)= 2n n N

ejemplo de programa WHILE Semántica del programa del ejemplo 2: Sea el programa WHILE (1, 1, código) con código: X 1 := X 1 + 1 ; while X 1 0 do od X 1 := X 1 Este programa tiene una variable de entrada (X 1 ), que es la única que usa. Calcula: f(n)= n N (función que siempre diverge)

semántica formal del lenguaje WHILE versión etiquetada de un programa WHILE Dado un programa WHILE (n, p, código) lo escribimos de manera que cada línea contenga una de las siguientes cosas: una instrucción de asignación una cabecera de (bucle) while: while X i 0 do una cola de (bucle) while: od Además: numeramos las líneas consecutivamente empezando por el 1 tras una cabecera de while ponemos el número que le ha correspondido a su cola tras una cola de while ponemos el número que le ha correspondido a su cabecera

ejemplo de programa WHILE Versión etiquetada del programa WHILE del ejemplo 1 Sea el programa WHILE Q = (1, 2, código) con código 1: X 2 := X 1 ; 2: while X 2 0 do :5 3: X 1 := X 1 + 1 ; 4: X 2 := X 2 1 5: od :2

concepto de configuración de un programa WHILE sea Q = (n, p, código) un programa WHILE, con líneas numeradas de 1 a f, una configuración de Q es una (p+1)-tupla (s, x) con s {1, 2, 3,, f, f +1} y x N p una configuración es inicial si s=1 y x n+1 = = x p = 0 una configuración es final si s = f +1 C Q denota al conjunto de las configuraciones de Q

ejemplos de configuraciones Sea el programa WHILE Q = (1, 2, código) con código 1: X 2 := X 1 ; 2: while X 2 0 do :5 3: X 1 := X 1 + 1 ; 4: X 2 := X 2 1 5: od :2 (1,3,5) es configuración, no inicial y no final (1,5,0) es configuración, inicial y no final (6,8,3) es configuración final, y no inicial (2,2,2) es configuración, no inicial y no final (0,3,5) no es configuración

concepto de cálculo en un paso Sea Q = (n, p, código) un programa WHILE, con líneas numeradas de 1 a f. Diremos que la configuración c 1 =(s, x) se transforma en la configuración c 2 =(t, y) en un paso de cálculo (representado por c 1 Q c 2 ) sii

concepto de cálculo en un paso (para la asignación) < (s, x) Q (t, y) > Si s: asignación aparece en la versión etiquetada de Q, entonces t = s + 1 y i 0 xj = xi + 1 xi 1 si "asignación" es si "asignación" es si "asignación" es si "asignación" es Xi : = 0 Xi : = X Xi : = X Xi : = X + 1 1 yr = xr para todo r tal que 1 r p y r i j i i

concepto de cálculo en un paso (para el bucle) < (s, x) Q (t, y) > Si s: while X i 0 do :s aparece en la versión etiquetada de Q, entonces y = x si xi 0 entonces t = s + 1 si xi = 0 entonces t = s + 1 Si s: od :s aparece en la versión etiquetada de Q, entonces y = x si xi 0 entonces t = s + 1 ( x i está en la cabecera s ) si xi = 0 entonces t = s + 1

ejemplos de cálculo en un paso Sea el programa WHILE Q = (1, 2, código) con código 1: X 2 := X 1 ; 2: while X 2 0 do :5 3: X 1 := X 1 + 1 ; 4: X 2 := X 2 1 5: od :2 (1, 2, 0) Q (1, 2, 2)? (1, 2, 0) Q (2, 2, 2)? (3, 4, 6) Q (4, 5, 6)? (2, 6, 0) Q (6, 6, 0)? (1, 6, 0) Q? (2, 3, 7) Q? (5, 4, 2) Q? (5, 8, 0) Q?

extendemos el cálculo en un paso función siguiente configuración sea Q = (n, p, codigo) un programa WHILE y C Q el conjunto de todas las configuraciones de Q la función siguiente SIG Q : N p+1 N p+1 es SIG Q ( c) = c' c si si c Q c C Q c' c' / c Q c'

siguiente para el programa Q ya visto > = = = = = + = = = = = = 5 si ) ( 0 5 si ) (6 0 5 si ) (3 4 si 1) (5 3 si ) 1 (4 0 2 si ) (6 0 2 si ) (3 1 si ) (2 0 si ) ( ) ( a a,b,c c a,b,c c a,b,c a,b,c a,c,b c a,b,c c a,b,c a,b,b a a,b,c a, b, c SIG Q

función cálculo de un programa (configuración alcanzada tras i pasos) sea Q = (n, p, c) un programa WHILE, con líneas numeradas de 1 a f, la función cálculo del programa Q es la función CAL Q : N p+1 N p+1 CAL Q (a, i) = (t, b), siendo a N p y (1, a) Q c 1 Q c 2 Q Q c i = (t, b) el cálculo de Q en i pasos, que comienza con valores a de las variables que usa el programa (las de no entrada inicializadas) se define recursivamente en función de SIG Q CAL Q (1, a) ( a, i) = SIGQ ( CAL Q ( a, i 1)) si i si i = > 0 0

ejemplo de función cálculo dado el programa Q ya visto, encontrar el valor de CAL Q (6, 0, 4) solución: (1, 6, 0) Q (2, 6, 6) Q (3, 6, 6) Q (4, 7, 6) Q (5, 7, 5) CAL Q (6, 0, 4) = (5, 7, 5)

función complejidad temporal (nº de pasos de un programa, según la entrada) sea Q = (n, p, código) un programa WHILE, con líneas numeradas de 1 a f, la función complejidad temporal de Q es la función T Q : N n N T Q ( x) p+ 1 = µ j[ π1 ( CALQ ( x,0, j)) = f + 1] siendo x N n, 0 un vector de p n ceros y π 1 p+1 la función proyección de la primera componente de un vector de p+1 componentes ( µj el menor j tal que)

ejemplo de función complejidad temporal dado el programa Q ya visto, determinar la complejidad temporal solución: (1, a, 0) Q (2, a, a) Q (3, a, a) Q (4, a+1, a) Q (5, a+1, a 1) Q (3, a+1, a 1) Q (4, a+2, a 1) Q (5, a+2, a 2) Q (3, a+2, a 2) Q (3, 2a 1, 1) Q (4, 2a, 1) Q (5, 2a, 0) Q (6, 2a, 0) T Q (a) = 3a+2

concepto de función calculada por un programa WHILE sea Q = (n, p, código) un programa WHILE, la función calculada f Q : N n N se define por f Q p+ 1 ( x) = π 2 ( CALQ ( x,0, TQ ( x))) siendo x N n y 0 un vector de p n ceros expresado informalmente: dados unos valores para las variables de entrada (x), se inicializan a cero las demás variables, se realizan pasos de cálculo hasta alcanzar una configuración final, y se toma como resultado la segunda componente (variable X 1 ); si no es posible alcanzar tal configuración final, entonces el programa no acaba para esos valores de entrada, y la función está indefinida (diverge)

la clase de funciones WHILE-calculables F n (WHILE) es el conjunto de todas las funciones f:n n N tales que existe un programa WHILE, con n variables de entrada, que calcula f F(WHILE) es la unión de todas las F n (WHILE), para n 0 si f F(WHILE) diremos que f es una función WHILE-calculable

ejercicios de WHILE-calculabilidad Demostrar (dando programa y funciones SIG, CAL, T y f ) que cada una de las siguientes funciones es WHILE-calculable: - suma - resta ( x y = 0 si x < y ) - valor absoluto de la resta ( x y si x y, y x si x < y ) - signo ( 0 si x = 0, 1 si x > 0 ) - complementario del signo ( 0 si x > 0, 1 si x = 0 ) - producto - función que siempre diverge - la función identidad de N en N - función constante C k j : N k N, C k j(x) = j x N k

lenguaje WHILE ampliado utilización de denominaciones libres para las variables de entrada y para la variable de salida (hay que especificar cuáles son de entrada y cuál es de salida) permitiremos en el lenguaje ampliado incluir instrucciones de asignación cuyo miembro de la derecha implica la activación de otras funciones while-calculables (macroinstrucción) inclusión de líneas de comentarios una función en WHILE ampliado es WHILE-calculable

ejemplo de WHILE ampliado Ejemplo de denominaciones libres y de comentario : Entradas: dato Salida: doble (* = 2 dato *) Código: doble := dato ; while dato 0 do doble := doble + 1 ; dato := dato 1 od

ejemplo de WHILE ampliado Ejemplo de activación de funciones while-calculables. Sea el programa doble = (1, 2, código) con código X 2 := X 1 ; while X 2 0 do X 1 := X 1 + 1 ; X 2 := X 2 1 od Sea el programa (macroprograma) exp = (1, 2, código) con código X 2 := X 2 + 1 ; while X 1 0 do X 2 := doble( X 2 ) ; macroinstrucción X 1 := X 1 1 od ; X 1 := X 2 ( exp calcula f(n)=2 n )

conversión a WHILE: variables y comentarios un programa con denominaciones libres para las variables se convierte en un programa WHILE haciendo las siguientes transformaciones: reemplazar la primera variable de entrada por X 1, la segunda por X 2,, la n-ésima por X n reemplazar la variable de salida por X n+1 reemplazar las variables de uso interno, según su orden de aparición por X n+2, añadir al final del código resultante la instrucción X 1 := X n+1 los comentarios se eliminan sin efecto para el código

ejemplo de conversión a WHILE Entradas: dato Salida: doble (* 2 dato *) Código: doble := dato ; while dato 0 do doble := doble + 1 ; dato := dato 1 od (1, 2, código-doble) código-doble: X 2 := X 1 ; while X 1 0 do X 2 := X 2 + 1 ; X 1 := X 1 1 od ; X 1 := X 2

conversión a WHILE: macroinstrucciones las macroinstrucciones se eliminan como sigue sea la macroinstrucción X i := f ( X j1,, X jn ), donde f es calculada por el programa (n, p, código) sea Q un macroprograma que usa q variables en el cual aparece la macroinstrucción anterior, la expansión PQ de la macroinstrucción en Q da lugar a: X q+1 := X j1 ; X q+2 := X j2 ; X q+n := X jn ; X q+n+1 := 0 ; X q+n+2 := 0 ; X q+p := 0 ; el código de P sustituyendo X i por X q+i, con 1 i p X i := X q+1 cada macroinstrucción se expande independientemente

ejemplo de conversión a WHILE exp = (1, 2, cod) cod: X 2 := X 2 + 1 ; while X 1 0 do X 2 := doble( X 2 ) ; X 1 := X 1 1 od ; X 1 := X 2 doble = (1, 2, cod) cod: X 2 := X 1 ; while X 2 0 do X 1 := X 1 + 1 ; X 2 := X 2 1 od exp = (1, 4, cod) cod: X 2 := X 2 + 1 ; while X 1 0 do X 3 := X 2 ; X 4 := 0 ; X 4 := X 3 ; while X 4 0 do X 3 := X 3 + 1 ; X 4 := X 4 1 od ; X 2 := X 3 ; X 1 := X 1 1 od ; X 1 := X 2

lenguaje WHILE ampliado Podemos combinar variables libres y macroinstrucciones Ejemplo: Entradas: x, y Salida: prod (* = x y *) Código: while y 0 do prod := suma(prod, x) ; y := y 1 od

lenguaje WHILE ampliado Para las macroinstrucciones relativas a funciones conocidas y con representación infija, estándar en matemáticas, usaremos dicha representación Así, las macros z := suma(x,y) z := resta(x,y) z := producto(x,y) z := exp(x) se escribirán z := x + y z := x y z := x y z := 2 x Permitiremos más de una función while-calculable en una macroinstrucción p.e.: z := x + ( x (z - y))

ejemplos con WHILE ampliado Demostrar que las siguientes funciones son while-calculables: máximo ( max(x,y) ) diferencia en valor absoluto ( x - y ) igualdad ( igualdad(x,y), o bien x=y ) (calcula 1 si son iguales, 0 si son distintos) potencia ( x y ) soluciones: potencia: max(x,y) := ( x y ) + y Entradas: x, y x - y := ( x y ) + ( y - x ) Salida: z igualdad(x,y) := csg( x - y ) Código: ( csg complemento del signo) z := z + 1 ; while y 0 do z := z x ; y := y 1 od

composición de funciones sean f y g dos funciones de N en N, ambas while-calculables; la composición de ellas g f también es una función while-calculable sea (1, p f, Q) el programa while que calcula f : N N y (1, p g, R) el programa que calcula g: N N, el siguiente macroprograma calcula g f Entrada: x Salida: y Código: x := f(x) ; y := g(x)

capacidad expresiva de WHILE: estructuras de control do x times S od z := x; while z 0 do S z := z 1 od (* z es una nueva variable *) if x 0 then S fi y := sg (x); do y times S od (* y es una nueva variable *) if x 0 then S else T fi y := sg (x); z := csg(x); do y times S od do z times T od

C capacidad expresiva de WHILE: expresiones booleanas para cualquier condición booleana C existe una expresión EC tal que si la condición es verdadera toma el valor 1 y si es falsa toma el valor 0 X = Y E C 1 [(Y X) + (X Y)] X > Y (X Y) [(X Y) 1] X < Y (Y X) [(Y X) 1] C 1 C 2 sg(e C 1 + E C2 ) C 1 C 2 (E C 1 + E C2 ) 1 C 1 E C while C do S od z := E C ; while z 0 do S z := E C ; od

capacidad expresiva de WHILE: expresiones con funciones siendo f y g funciones de N en N while-calculables y S, S1 y S2 códigos, permitiremos escribir instrucciones de la forma: instrucción do f(x) times S od expansión w := f(x); do w times S od while f(x) 0 do S od if f(x) g(x) then S1 else S2 fi if f(x) 0 then S fi w := f(x); while w 0 do S; w := f(x) od w := f(x) g(x) ; if w 0 then S1 else S2 fi w := f(x); if w 0 then S fi

identificadores sintaxis del lenguaje LOOP X 1, X 2, X 3,..., X i,... instrucciones de asignación X i := X j X i := X i + 1 código X i := X i 1 ( 0 1 = 0 ) por ";" X i := 0 instrucción de control secuencia finita no vacía de instrucciones separadas programa bucle definido: (n, p, código) do X i times (cabecera) p n código (cuerpo) ambos naturales od (cola) Nota: el índice de anidamiento siempre es finito

clase de funciones LOOP-calculables F n (LOOP) es el conjunto de las funciones f: N n N tales que existe un programa LOOP, con n variables de entrada, que calcula f F(LOOP) es la unión de todas las F n (LOOP), para todo n 0 si f F(LOOP) decimos que f es una función LOOP-calculable

lenguajes LOOP i para cada i 0, se define el lenguaje LOOP i como el sublenguaje de LOOP formado por los programas que tiene nivel de anidamiento de bucles a lo sumo i F(LOOP i ) es la clase de funciones calculadas por programas LOOP i si una función pertenece a una clase, entonces pertenece a todas las que están por encima de ella F(LOOP 0 ) F(LOOP 1 ) F(LOOP 2 ) F(LOOP) cómo son los programas escritos en LOOP 0 y las funciones de F(LOOP 0 )?