1 / 70

Control de Secuencia

Control de Secuencia. Øyvind Mo Edgar Acosta Adrián López. 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. Expresiones Instrucciones o grupos de instrucciones

julio
Download Presentation

Control de Secuencia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. Expresiones Instrucciones o grupos de instrucciones Programación Declarativa Subprogramas Implícitas Explícitas Categorias de ECS

  4. Categorías de ECS • Expresiones Aritméticas • Instrucciones o grupos de instrucciones • Programacion Declarativa • Subprogramas

  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. Ejemplo: Raíz de 2do grado / -B+ B2 – 4 * A * C 2 * A * + _ SQRT 2 A B - ^ * B 2 * C 4 A

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

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

  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. 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. Jerarquía de operaciones • Orden de precedencia de operadores • Asociatividad • Izquierda • a-b-c evaluado (a-b)-c • Derecha • a^b^c evaluado a^(b^c) • Lenguajes sin Jerarquía de operaciones

  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. Representación de Expresiones en Tiempo de Ejecución

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

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

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

  17. Problema 1. Reglas de evaluación uniforme

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

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

  20. Evaluación apáticaEs prohibitiva para los lenguajes aritméticos

  21. Problema 2. Efectos secundarios a×fun(x)+a • 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

  22. Problema 3. Condiciones de error

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

  24. Categorías de ECS • Expresiones Aritméticas • Instrucciones o grupos de instrucciones • Programacion Declarativa • Subprogramas

  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. 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. Instrucciones básicas • Instrucciones de entrada y salida. <STDIN>; System.out.println(”Hola”); • Otros instrucciones de asignación. • NEWLINE = TRIM(INPUT) • PadreDe(X,Juan), PadreDe(Y,Juan), not (X=Y).

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

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

  30. Goto : Ejemplo #include <iostream.h> 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; }

  31. Problemas con Goto en Basic 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

  32. Break #include <iostream.h> 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. Continue #include <iostream.h> int main() { int n = 0; for(;;) { n++; if (n%7 == 0) continue; cout << "n = " + n; } }

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

  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. Ejemplos: Begin ... End { ... } Agrupamiento • Contienen una o más instrucciones • Actúan como un solo bloque • Las instrucciones contenidas se ejecutan secuencialmente

  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. If condición then instrucción end if Instrucción IF : Ejecución Opcional

  39. Instrucción IF : Ejecución Alternativa • If condición then instrucción1 • else • instrucción2 • end if

  40. Instrucción CASE • Evalúa una condición y compara varios valores hasta encontrar una equivalencia. Case Valor when 0 begin instrucción1; end when 1 begin instrucción2; end when others begin instrucción3; end end case

  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. Iteración : Ejemplos • Repetición Simple (Cobol) Perform cuerpo K veces • Repetición mientras se mantiene una condición (C) While <cond> { 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 <cond> ... end Loop;

  43. Condiciones excepcionales Salidas multiples de loops Do-While-Do 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 Utilizando go to For I := 1 to K do if Vect[I] = 0 then go to α Loop Utilizando go to Loop read(x) if EOF then go to α process(x) End loop; Exit en Ada y Break en C como opción For I = 1 .. K loop exit when Vect[I] = 0 ; End loop; Exit when en Ada e If <cond> Break en C como opción Loop read(x) If EOF break process(x) End loop; Problemas de ECS estructurada • Discusión del Goto

  44. Programas Primos

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

  46. Programa Primo

  47. Programa compuesto

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

  49. Nodos originales Nodos transformados Teorema de estructura

  50. Categorías de ECS • Expresiones Aritméticas • Instrucciones o grupos de instrucciones • Programacion Declarativa • Subprogramas

More Related