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

Slides:



Advertisements
Presentaciones similares
Programación de Computadores
Advertisements

Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Programación Estructurada
PROGRAMACIÓN.
Lenguajes de programación
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
INSTITUTO TECNOLOGICO DE MINATITLAN
Seminario de Actualización - Excel Avanzado y Macros
Estructuras de Control
1.2 Sintaxis del lenguaje Java.
EXCEPCIÓN DE ERRORES.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Estructuras de control
ESTRUCTURAS DE SECUENCIA
Una breve introducción
Estructuras de Repetición
Tema 3. Optimización de Código
Programación.
Tema 6. Conceptos básicos de programación
APLICACIONES DE PILAS Estructuras de Datos.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Arboles Binarios de expresiones
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Programación de Computadores
Semana 5 Subprogramas..
Unidad III Elementos del lenguaje C++
Análisis de Algoritmos
INGENIERIA EN SISTEMAS COMPUTACIONALES
Capítulo 1 “Elementos de Programación”
Sentencias de selección
Capítulo 2 – Estructuras de Control
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Diseño lógico combinacional mediante VHDL
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Informática Ingeniería en Electrónica y Automática Industrial
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
Resumen Fundamentos de Programación/ Programación I
Teoría – Alejandro Gonzalez
NVA-LNG1 3. SENTENCIAS. NVA-LNG2 Asignación Es una sentencia que almacena: el valor del argumento ubicado a la derecha del símbolo que la representa En.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
EXPRESIONES Y SENTENCIAS
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
Programación de Sistemas
Estructuras de Control.
Control de Flujo.
II.-Los lenguajes de programación
Agenda Clase 6 Iteradores. Enumeración sin iteradores. Loops lógicos. Recursión vs. Iteración. Recursión de Cola. Orden de Evaluación Normal y Aplicativo.
COMPUTO III Ing. Jimmy Ojeda Arnica.
Términos algoritmo diseñar algoritmo implementar algoritmo
Sesión 14: Python (5) – Aplicaciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
PRINCIPIOS DE PROGRAMACIÓN

1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)
Práctica Profesional PHP.
Estructuras de Decisión
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Programación de Sistemas
Cobol C Pascal Fortran 2. OBJETOS DE DATOS SmallTalk Java C++
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
CICLOS ESTRUCTURA DE REPETICIÓN PROG 2270LGUILLERMO SOLLA.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Departamento de Informática Universidad Técnica Federico Santa María Lenguajes Funcionales Francisco Bórquez Departamento de Informática Universidad Técnica.
Transcripción de la presentación:

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

4 Categorías de ECS

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 + _ * * - *^ A4 C2B SQRT 2A -B+ B 2 – 4 * A * C 2 * 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 Representación Sintáctica : Ejemplo * -+ ADBC 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^cevaluado 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 Evaluación glotona Ejemplo: (a+b)*(c-a) - * + baca

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 Evaluación apática Es prohibitiva para los lenguajes aritméticos

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 × = 5 Evaluando a solamente una vez: 1 × = 4 Evaluar fun(x) antes que a: 2 × = 8 a×fun(x)+a

22 Problema 3. Condiciones de error

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 Categorías de ECS

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. ; 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 #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 C64 BASIC: 750 ifnv(0)=0thenf=0:goto goto ifint(rnd(1)*100+1)<=nthen nextx:goto ifn<>nv(1)andn<>0thennextx:goto1640 Problemas con Goto en Basic

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

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

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 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 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 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 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 { 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 { cuerpo } Repetición indefinida (Ada) Loop... Exit when... end Loop;

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 Programas Primos

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

46 Programa Primo

47 Programa compuesto

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 Teorema de estructura Nodos originales Nodos transformados

50 Categorías de ECS

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 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 Ejemplos: Gramáticas en BNF –A  0A0  1A1  0  1 (lenguajes libres de contexto) Expresiones Regulares –{a,b}*a (lenguajes regulares)

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 Un ejemplo de PERL while ( $line = ) { if ( $line =~ / ) { print $line; } O bien: while ( ) { print if / ; }

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

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 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 Unificación El mecanismo básico de computación en lenguajes declarativos. Usa substitución. Asigna valores a variables.

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 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 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 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 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 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 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 Backtracking

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 {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 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