1 / 11

Agenda Clase 6

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. No determinismo. Iteradores. Generalizan los loops controlados por enumeración. Son utilizados para enumerar los

dysis
Télécharger la présentation

Agenda Clase 6

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. 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. • No determinismo.

  2. Iteradores • Generalizan los loops controlados por enumeración. • Son utilizados para enumerar los elementos de conjuntos bien definidos. • Clu permite la definición de iteradores sobre cualquier conjunto de tipo abstracto de datos para enumerar sus items.

  3. Iteradores: Ejemplo en Clu Definición del Iterador from_to_by = iter(from, to, by:int) yields (int) i:int:=from if by>0 then while i<=to do yield i i +:= by end; else while i>=to do yield i i+:=by end end end from_to_by for i in from_to_by(first, last, step) do ... end paso de iteración positivo -incremento- paso de iteración negativo -decremento- Invocación del Iterador

  4. Iteradores: Enumerando Árboles Binarios de n Nodos

  5. Iteradores: Generadores en Icon • Icon denomina generadores a los iteradores y los utiliza igual que Clu para la iteración controlada por enumeración. every i:= first to last by step do {…} • Dado que Icon fue diseñado para la manipulación de Strings, los iteradores se utilizan en la manipulación de datos de este tipo.

  6. Enumerando sin iteradores • Incapacidad del stack para el control en las subrutinas debido a la gran cantidad de saltos desde y hacia el punto de llamada. • Convenciones de programación que simulan el efecto de los iteradores sacrificando con ello cierto grado de elegancia en el código.

  7. Loops Controlados Lógicamente • La implementación más común es pre-test while <condición> do <instrucción> • Ni Fortran ni Algol proveen constructor while y para imitarlo se debe recurrir al goto. • También pueden definirse loops post-test a través de la sentencias: repeat <instrucción> until <condición> (Modula y Pascal) do <instrucción> while <condición> (en C) • Es recomendable implementar los mid-test loop explotando las herramientas que para tales fines brinde el lenguaje: when <condición> exit (Modula) if <condición> exit (Modula 2) break (C, C++, Java)

  8. Recursión vs. Iteración • La recursión no requiere sintáxis especial más allá de que las funciones puedan llamarse a si mismas o invocar a otras funciones que las llame. • Cualquier algoritmo iterativo puede escribirse recuersivamente y viceversa. • Ambos enfoques tienen la misma capacidad de cómputo. • La recursión es más natural en lenguajes funcionales y la iteración en lenguajes imperativos.

  9. Recursión de Cola: ejemplo en Scheme. • Versión sin recursión de cola (define summation (lambda (f low high) (if (= low high) (f low) (+ (f low) (summation f (+ low 1) high))))) • Versión con recursión de cola (define sum (lambda (f low high subtotal) (if (= low high) (+ subtotal (f low)) (sum f (+ low 1) high (+ subtotal f (low)))))) sum (f low high 0) Invocación inicial

  10. Orden de Evaluación Aplicativo y Normal • Orden Aplicativo: los parámetros son evaluados antes de ser pasados a una subrutina. • Orden Normal: los parámetros son evaluados sólo cuando es necesario. Ej: macros en C.

  11. No Determinismo • La escogencia entre alternativas no está especificada deliberadamente. • Se vale de condiciones comandos de guardia. • Más de dos alternativas ciertas a la vez implican el uso de un if aunque esto tenderá a favorecer una opción sobre la otra. • Alternativa: listas circulares • Alternativa 2: asignación de números aleatorios u otros mecanismos heurísticos.

More Related