La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 Control de Secuencia Øyvind Mo Edgar Acosta Adrián López.

Presentaciones similares


Presentación del tema: "1 Control de Secuencia Øyvind Mo Edgar Acosta Adrián López."— Transcripción de la presentación:

1 1 Control de Secuencia Øyvind Mo Edgar Acosta Adrián López

2 2 Las Estructuras de Control de Secuencia Proveen el marco de interacción para la ejecución de operaciones y datos. Controlan el orden de ejecución de las operaciones.

3 3 Categorias de ECS Expresiones Instrucciones o grupos de instrucciones Programación Declarativa Subprogramas Implícitas Explícitas

4 4 Categorías de ECS

5 5 Arboles para representar expresiones Composición funcional Operaciones y sus respectivos operandos Resultados de operaciones forman nuevos operandos Operaciones representadas por niveles No se define precedencia en operaciones en el mismo nivel

6 6 Ejemplo: Raíz de 2do grado / B + _ * * - *^ A4 C2B SQRT 2A -B+ B 2 – 4 * A * C 2 * A

7 7 Representación Sintáctica Linealización de arboles. Notación Prefija (Polaca) Notación Polaca Cambridge Notación Postfija Notación Infija

8 8 Representación Sintáctica : Ejemplo * -+ ADBC Prefija: *+AB-CD Prefija Cambridge: (*(+AB)(-CD)) Infija:(A+B)*(C-D) Postfija:AB+CD-*

9 9 Representación Semántica Evaluación de expresiones prefijas. Características –Evaluación en una sola pasada –Necesidad de saber el numero de argumentos por tipo de operación –No hay necesidad de paréntesis –Similitud con llamadas a funciones –Operaciones con cualquier número de operandos –Decodificacion sencilla a secuencias de código

10 10 Representación Semántica Evaluación de expresiones infijas. Características –Forma común de expresar las expresiones aritméticas –Trabaja con operadores binarios –Funciones y operadores unarios implementados a traves de notación prefija o postfija –Necesidad de uso de paréntesis para evitar ambigüedad –Decodificación compleja a secuencias de código

11 11 Jerarquía de operaciones Orden de precedencia de operadores Asociatividad –Izquierda a-b-c evaluado (a-b)-c –Derecha a^b^cevaluado a^(b^c) Lenguajes sin Jerarquía de operaciones

12 12 Jerarquia de Operaciones : Ejemplo C A= =B | C= = D evaluado (A= =B) | (C= = D) Precedencia del operador = = sobre | Pascal A=B | C=D evaluado A=(B | C)=D Precedencia del operador | sobre =

13 13 Representación de Expresiones en Tiempo de Ejecución

14 14 Etapas de traducción Establecer estructura de árbol (opcional) decidir el órden óptimo de evaluación

15 15 Formas en que se traducen las expresiones en notación infija Código máquina Estructura de árbol Prefija o postfija

16 16 Evaluación con las representaciones de árbol de expresiones

17 17 Problema 1. Reglas de evaluación uniforme

18 18 Evaluación glotona Ejemplo: (a+b)*(c-a) - * + baca

19 19 Ejemplo de evaluación glotona que no hace lo que se espera Z+(Y=0?X:X/Y) Ejemplo de evaluación glotona que no hace lo que se espera Z+(Y=0?X:X/Y) + / IF = Z 0X Y YX

20 20 Evaluación apática Es prohibitiva para los lenguajes aritméticos

21 21 Problema 2. Efectos secundarios Si a vale 1 inicialmente y fun(x) devuelve 3 y tiene el efecto secundario de modificar el valor de a a 2 el órden de evaluación es crítico: Evaluando en secuencia: 1 × 3 + 2 = 5 Evaluando a solamente una vez: 1 × 3 + 1 = 4 Evaluar fun(x) antes que a: 2 × 3 + 2 = 8 a×fun(x)+a

22 22 Problema 3. Condiciones de error

23 23 Problema 4. Expresiones Booleanas de corto circuito if ( ( A == 0 ) || ( B / A > C ) ) {... } while ( ( L C) ) {... } Solución de Ada if ( A = 0 ) or else ( B / A > C) then

24 24 Categorías de ECS

25 25 Control de secuencia entre instrucciones Instrucciones básicas Tipos de control de secuencia a nivel de instrucciones Control de secuencia explícita Diseño estructurado de programas

26 26 Instrucciones básicas Instrucciones de asignación A:=B(PASCAL) A=B(C, Java) MOVE A TO B(COBOL) A  B(APL) (SETQ A B)(LISP) A += B(C, Java) ++A A++

27 27 Instrucciones básicas Instrucciones de entrada y salida. ; System.out.println(”Hola”); Otros instrucciones de asignación. –NEWLINE = TRIM(INPUT) –PadreDe(X,Juan), PadreDe(Y,Juan), not (X=Y).

28 28 Tipos de control de secuencia a nivel de instrucciones Composición Alternación Iteración

29 29 Control de secuencia explicita GOTO incondicional GOTO condicional BREAK CONTINUE

30 30 #include void main() { int n; for(;;) { cout <<“Ingresa un número (0 para terminar): "; cin >> n; cout << n <<" al cubo es: " << n*n*n << "n"; if(n == 0) goto esc; } esc: cout << endl; } Goto : Ejemplo

31 31 C64 BASIC: 750 ifnv(0)=0thenf=0:goto770 760 goto790 770 ifint(rnd(1)*100+1)<=nthen800 780 nextx:goto1640 790 ifn<>nv(1)andn<>0thennextx:goto1640 Problemas con Goto en Basic

32 32 Break #include void main() { int n, count = 0, sum = 0; cout <<"Enter positive integers. Terminate input with 0:n"; for (;;) { cout << "t" <<count + 1 << ": "; cin >> n; if(n ==0) break; ++count; sum += n; } cout <<"The average of the " << count << " numbers is " << (float) sum / count << endl; }

33 33 Continue #include int main() { int n = 0; for(;;) { n++; if (n%7 == 0) continue; cout << "n = " + n; }

34 34 Diseño estructurado de programas 1.Diseño jerárquico 2.Representación del diseño en el código del programa 3.La secuencia textual = la secuencia actual 4.Un grupo de instrucciones tiene solamente una función (No usar GOTO)

35 35 Control de Secuencia Estructurado Conjunto de instrucciones de control en un lenguaje de alto nivel –Composición o Agrupamiento –Condicionales o de Alternación –Iteración

36 36 Agrupamiento Contienen una o más instrucciones Actúan como un solo bloque Las instrucciones contenidas se ejecutan secuencialmente Ejemplos:Begin... End {... }

37 37 Condicionales Expresan la ejecucion alternada de dos instrucciones o la ejecución condicional de una instrucción La alternativa se controla por medio de una condición.

38 38 Instrucción IF : Ejecución Opcional If condición then instrucción end if...instrucciones antes del IF Evalua S = condición (0=False, 1=True) Salta a L0 + S L0: Salta a L2 (no hay instrucciones para Condición = false) L1: Instrucciones para Condición = True L2: Instrucciones después del if...

39 39 Instrucción IF : Ejecución Alternativa...instrucciones antes del IF Evalúa S = condición (0=False, 1=True) Salta a L0 + S L0: Salta a L1 Salta a L2 L1: Instrucciones para condición = False Salta a L3 L2: Instrucciones para condición = True L3 instrucciones después del if... If condición then instrucción1 else instrucción2 end if

40 40 Instrucción CASE Evalúa una condición y compara varios valores hasta encontrar una equivalencia....instrucciones antes del Case Evalua T de la variable Valor Salta a L0 + T L0: Salta a L1 Salta a L2 Salta a L3 L1: Instrucción 1 Salta a L4 L2: Instrucción 2 Salta a L4 L3: Instrucción 3 L4: instrucciones después del Case Case Valor when 0 begin instrucción1; end when 1 begin instrucción2; end when others begin instrucción3; end end case

41 41 Iteración Proveen capacidad de repetición de ejecución de un mismo código Estructuras básicas contienen un encabezado y un cuerpo El encabezado controla en número de veces que se iterará El cuerpo es el conjunto de instrucciones a repetirse

42 42 Iteración : Ejemplos Repetición Simple (Cobol) Perform cuerpo K veces Repetición mientras se mantiene una condición (C) While { cuerpo } Repetición mientras se incrementa un contador (Algol) for I := 0 step 2 until 30 do cuerpo Repetición controlada por datos (Perl) foreach $X(@Array) { cuerpo } Repetición indefinida (Ada) Loop... Exit when... end Loop;

43 43 Condiciones excepcionales Utilizando go to Instrucción 1 If error go to α Instrucción 2 If error go to α... α: Manejo de errores On Error en VB y Raise en Ada como opción On error go to α Instrucción 1 Instrucción 2... α: Manejo de errores Salidas multiples de loops Utilizando go to For I := 1 to K do if Vect[I] = 0 then go to α Loop Exit en Ada y Break en C como opción For I = 1.. K loop exit when Vect[I] = 0 ; End loop; Problemas de ECS estructurada Discusión del Goto Do-While-Do Utilizando go to Loop read(x) if EOF then go to α process(x) End loop; Exit when en Ada e If Break en C como opción Loop read(x) If EOF break process(x) End loop;

44 44 Programas Primos

45 45 Componentes de un diagrama de flujo Nodo de funciónNodo de decisiónNodo de unión

46 46 Programa Primo

47 47 Programa compuesto

48 48 De un nodo De tres nodos if... then... while... do... do... while... repeat... until... do... while... repeat... until... De cuatro nodos if... then... else... do... while... do Programas Primos De dos nodos

49 49 Teorema de estructura Nodos originales Nodos transformados

50 50 Categorías de ECS

51 51 Secuenciación entre instrucciones no aritméticas Lenguajes declarativos usan formas de control de secuencia muy distintas a los que usan los lenguajes imperativos. Prolog, ML, Haskell etc.

52 52 Reconocimiento de patrones Muy importante en: –Trabajar con cadenas de texto PERL ML SNOBOL4 –Ejecución y control de programas declarativos Prolog ML Haskell

53 53 Ejemplos: Gramáticas en BNF –A  0A0  1A1  0  1 (lenguajes libres de contexto) Expresiones Regulares –{a,b}*a (lenguajes regulares)

54 54 Un ejemplo de SNOBOL4 START GRAMMAR = 0 | 1 | 0 *GRAMMAR 0 | 1 *GRAMMAR 1 LOOPNEWLINE = TRIM(INPUT): F(END) NEWLINE (POS(0) SPAN(“01”) RPOS(0)): F(BAD) SN = SIZE(NEWLINE) NEXTNEWLINE POS(0) GRAMMAR.PALINDROME POS(SN) :S(OK) F(NOTOK) OKOUTPUT = “MATCH: “ PALINDROME:(LOOP) NOTOKSN = SN – 1:(NEXT) BADOUTPUT = “IMPROPER INPUT:” NEWLINE:(LOOP) END

55 55 Un ejemplo de PERL while ( $line = ) { if ( $line =~ /http:/ ) { print $line; } O bien: while ( ) { print if /http:/ ; }

56 56 Un ejemplo mas interesante s/ (\S+)\s+(\S+) /$2 $1/ MADRE PURA

57 57 Prolog Usa reconocimiento de patrones para buscar y conectar información. –Padre(Abraham, Isaac) –Padre (Isaac, Jacob) –Abuelo(X,Y) :- Padre(X,Z), Padre(Z,Y) –:-Abuelo(X, Jacob)

58 58 Reescritura de términos Reescritura de términos es una forma restringida de reconocimiento de patrones. –Gramática BNF: A  0B  1 B  0A –Ejemplo de ML: Fun factoral(1) =1  factorial(N:int) = N * factorial(N-1);

59 59 Unificación El mecanismo básico de computación en lenguajes declarativos. Usa substitución. Asigna valores a variables.

60 60 Términos Se componen de: –Variables [x, y,..] –Funciones Constantes [a, b, c,...] Otros [ f(x), g(x, y)... ] –Paréntesis [( )] –Coma [,] Ejemplo: g(f(x, y), f(x, y))

61 61 Sustituciones Una sustitución mapea variables a términos. Es la forma mas común de asignar valores a variables en la programación lógica. Muchas veces es implícita en programas lógicos. {x1/t1,..., xn/tn} –for i  [1,n], xi  ti

62 62 Ejemplos de substitución Consideramos la substitución  ={x/w, y/z}, y el termino s = f(a, y, z) Tenemos que s  = f(a, z, z) Si tenemos otra substitución  ={w/a, z/b} se puede componer una substitución nueva:  =  = {w/a, x/a, y/b, z/b} Entonces: s  = f(a, b, b)

63 63 Unificadores Un unificador es una substitución que unifica dos términos. Dos términos son unificados si son idénticos. Ejemplo:  = {x/a, y/b} es un unificador de s=f(a, y, z) y u=f(x, b, z), porque s  = f(a, b, z) = u 

64 64 Unificadores Más Generales (Most General Unifiers) Dos términos pueden ser unificados por varios unificadores, pero solo uno de ellos es el UMG (MGU). Ejemplo: Tanto  ={x/a, y/b} como  ={x/a, y/b, z/a} unifican s=f(a, y, z) y u=f(x, b, z). Sin embargo solo  es el UMG

65 65 Unificación 1.Buscar un par de desacuerdo F:Salir con Exito 2.Unificarlo F:Salir con Fracaso 3.Calcular los términos nuevos 4.Volver a 1.

66 66 P(María, Juan) P(Pedro, José) P(Luis, Pedro) A(x,y):- P(x,z), P(z,y) :-A(Luis,w) :- P(Luis,z), P(z,w) {z | Pedro} :-A(Luis,w) :- P(Luis,Pedro), P(Pedro,w) {w | José} :-A(Luis,José) :- P(Luis,Pedro), P(Pedro,José)

67 67 Backtracking

68 68 :-A(Luis,w) :- P(Luis,Susana), P(Susana,w) {z | Susana}{z | Pedro} :-A(Luis,w) :- P(Luis,Pedro), P(Pedro,w) P(María, Juan) (el padre de María es Juan) P(Pedro, José) P(Luis,Susana) P(Luis, Pedro) A(x,y):- P(x,z), P(z,y) :-A(Luis,w) :- P(Luis,z), P(z,w) {w | José} :-A(Luis,José) :- P(Luis,Pedro), P(Pedro,José)

69 69 {z | Susana} :-A(Luis,w) :- P(Luis,Susana), P(Susana,w) P(Juan, María) (el padre de María es Juan) P(Pedro, José) P(Luis,Susana) P(Luis, Pedro) A(x,y):- P(x,z), !, P(z,y) :-A(Luis,w) :- P(Luis,z), P(z,w) :-A(Luis,w) :- fail

70 70 Bibliografía From Logic Programing to Prolog (Cap II) Krzyztof R. Apt Prentice Hall Programming Languages (Cap 8) Desing and Implementation 4a edición Terrence W. Pratt Marvin V. Zelkowitz Prentice Hall


Descargar ppt "1 Control de Secuencia Øyvind Mo Edgar Acosta Adrián López."

Presentaciones similares


Anuncios Google