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.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Estructuras de control
ESTRUCTURAS DE CONTROL
INTELIGENCIA ARTIFICIAL
Programación de Computadores
Programación de Computadores
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
Notación BNF Backus-Naur Form.
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.
Fundamentos de Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Seminario de Actualización - Excel Avanzado y Macros
Estructuras de Control
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Estructuras de control
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.
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
VHDL.
Paradigmas de Programación
SINTAXISYSEMANTICA. Tengo la impresión de que Java fue diseñado para hacer que fuera difícil escribir mal código, mientras que Python está diseñado para.
Unidad III Elementos del lenguaje C++
Análisis de Algoritmos

Introducción al análisis de algoritmos
Página Web del Lenguaje Pascal.
Capítulo 1 “Elementos de Programación”
Conversión cadena a número
Introducción a la Programación
Capítulo 2 – Estructuras de Control
Subrutinas y Control de Abstracción
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
PROGRAMACIÓN PROCEDIMENTAL
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
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.
Teoría – Alejandro Gonzalez
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.
Estructuras de Control.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/08/2006.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 15/04/2007.
Control de Flujo.
Agenda Clase 11 Parametrización. Pasaje de parámetros (modos). Razones de escogencia entre modos. Clausuras como parámetros. Etiquetas, Conformat Arrays,
Estructuras de control Resolución de problemas y algoritmos.
Algorit moAlgorit mo An á lisisAn á lisis Argumen toArgumen to Asignación Asociación Cometar ioCometar io Compilación Constan teConstan te Definición.
Programación Básica con NQC Patricio A. Castillo 10/05/2008.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
COMPUTO III Ing. Jimmy Ojeda Arnica.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Conalep Coacalco Algoritmos Recursivos
Fundamentos de Programación
Práctica Profesional PHP.
Estructuras de Decisión
Estructuras de Control
Algoritmos en Pseudocódigo
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
MODULA Lenguaje de Programación Anabel Martín González
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.
CICLOS ESTRUCTURA DE REPETICIÓN PROG 2270LGUILLERMO SOLLA.
Camilo Andrés Salazar González FORTRAN.  Estructura program circulo Real :: r, area write (*,*) 'Escribe el radio r:' read (*,*) r area = *r*r.
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:

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 elementos de conjuntos bien definidos. –Clu permite la definición de iteradores sobre cualquier conjunto de tipo abstracto de datos para enumerar sus items.

Iteradores: Ejemplo en Clu 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 from_to_by for i in from_to_by(first, last, step) do... end Definición del Iterador Invocación del Iterador paso de iteración positivo -incremento- paso de iteración negativo -decremento-

Iteradores: Enumerando Árboles Binarios de n Nodos

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.

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.

Loops Controlados Lógicamente La implementación más común es pre-test while do 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 until (Modula y Pascal) do while (en C) Es recomendable implementar los mid-test loop explotando las herramientas que para tales fines brinde el lenguaje: when exit (Modula) if exit (Modula 2) break (C, C++, Java)

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.

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

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.

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.