Tema 7: Programación imperativa. Sesión 21: Programación imperativa (2)

Documentos relacionados
Tema 7: Programación imperativa

Tema 10: Tipos de datos mutables

Tema 7: Programación imperativa. Sesión 23: Programación imperativa (4)

Tema 6: Programación funcional en Scala. Sesión 18: Programación funcional en Scala

GUÍA BÁSICA DE SCHEME v.4

PROGRAMACIÓN DECLARATIVA

Tema 3.- Predicados y sentencias condicionales

4.7 Operaciones sobre Objetos en Scheme

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores

Tema 5.- Tipos de datos compuestos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

Entiendo los métodos de Java equals y hashcode

Introducción a Big Data con Python. Programación en Python. Tipos básicos y colecciones

Abstracción Sintáctica y Abstracción de Datos

Fundamentos de Programación

Tema 3. Listas Recursión sobre datos

Tema 4: Procedimientos y estructuras recursivas

Sesión 2 Laboratorio

Lenguajes de Programación Programación funcional

Tema 3: Características de la programación funcional

Tema 8: Tipos de datos. Sesión 24: Tipos de datos (1)

Intérpretes. Intérpretes. Intérpretes. Intérpretes. Lenguajes de definición y definido. Valores expresados y denotados

Tema 6: Estructuras de datos recursivas

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

4.3 Recursión en Scheme. Recursión simple y asignación

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

4.3 Recursión en Scheme

Informática Ingeniería en Electrónica y Automática Industrial

Procedimientos y Recursividad

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C)

CLIPS Definición de funciones

Programación Declarativa. Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre

4.5 Ligado de Variables en Scheme

Segundo parcial de Programación 2

Tema 3: Características de la programación funcional. Sesión 6: El paradigma funcional (2)

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 2.- Objetos y mensajes

Tema 4: Procedimientos y estructuras recursivas

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Examen escrito de Programación 1. Viernes 22 de enero de Problema 1 o (3.0 puntos) Problema 2 o (3.0 puntos)

Lenguaje de Programación MSc. Daniel Alejandro Yucra Sotomayor

Resumen de LISP. Javier Gil Julio, 2011

Programación Declarativa. Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

ASIGNACIÓN DE IGUALDAD EN JAVA. REFERENCIAS A OBJETOS. DIFERENCIA ENTRE IGUALDAD E IDENTIDAD. (CU00663B)

Colecciones. Nadjet Bouayad-Agha Programación 2007

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Curso de Java Introducción a la Programación III

Swift. Angela María Muñoz Medina Liseth Briceño Albarracín Nicolás Larrañaga Cifuentes

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C)

Examen Teórico Convocatoria de Junio de 2012

PHP: Lenguaje de programación

Tema 3: Programación funcional (1/3)

Tema 3: Programación funcional

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Tema 7: Tipos de datos y polimorfismo en Scheme

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Programación de sistemas Listas enlazadas

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

El lenguaje LISP. LISP is an easy language to learn (Henry et.al., 1984) Introducción

Fundamentos de Programación

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Isabelle como un lenguaje funcional

Manipulación de Cadenas Introducción a los conceptos de clase e objetos. Nadjet Bouayad-Agha Programación

Introducción a OCaml. October 19, 2015

Java para programadores

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Fundamentos de Informática

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción al lenguaje C

Arreglos, colecciones

Introducción a Haskell. Cecilia Manzino

Tema 8: Construcción de tipos de datos

Introducción a Java. Introducción a Java. Programación I

Introducción a Python Qué es Python?

Programación 2. Lección 3. Introducción a la recursividad

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

8. Colecciones e iteradores

Tema 1: Introducción a Lisp

JAVA 5. Conexión con Bases de Datos

Tema 15: Aserciones 0

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

El lenguaje LISP. LISP is an easy language to learn

Transcripción:

Tema 7: Programación imperativa Sesión 21: Programación imperativa (2)

Indice Historia de la programación imperativa Características principales Datos mutables en Scheme y en Scala Estructuras de control Modelo de entornos

Igualdad de valor y referencia en Scheme La igualdad de referencia se comprueba con la función eq?: (eq? x y) devuelve #t cuando x e y apuntan al mismo dato La igualdad de contenido se comprueba con la función equal?: (equal? x y) devuelve #t cuando x e y contienen el mismo valor Si dos variables son eq? también son equal?. (define a (cons 1 2)) (define b (cons 1 2)) (define c a) (equal? a b) (equal? a c) (eq? a b) (eq? a c)

Igualdad de valor y referencia en Scala La igualdad de referencia se comprueba con la función eq: x.eq(y) devuelve true cuando x e y apuntan al mismo dato La igualdad de contenido se comprueba con la función equals: x.equals (y) devuelve true cuando x e y contienen el mismo valor val x = List(1,2,3) val y = List(1,2,3) x.equals(y) --> true x.eq(y) --> false val z = x x.equals(z) --> true x.eq(z) --> true

Ejemplos de mayor eficiencia con los datos mutables en Scheme: inserción en lista ordenada Ventaja de los operadores de mutación: actualización eficiente de estructuras de datos Ejemplo: inserción en una lista ordenada en Scheme (define (make-olist) (list '*list*))

Ejemplos de mayor eficiencia con los datos mutables en Scheme: inserción en lista ordenada Ventaja de los operadores de mutación: actualización eficiente de estructuras de datos Ejemplo: inserción en una lista ordenada en Scheme (define (make-olist) (list '*list*)) (define (insert! n olist) (cond ((null? (cdr olist)) (set-cdr! olist (cons n '()))) ((< n (cadr olist)) (set-cdr! olist (cons n (cdr olist)))) ((= n (cadr olist)) #f) ; el valor devuelto no importa (else (insert! n (cdr olist)))))

Ejemplo: tabla hash Tabla hash definida con una lista de asociación:

Ejemplo: tabla hash Tabla hash definida con una lista de asociación: (define (make-table) (list '*table*)) (define (get key table) (let ((record (assq key (cdr table)))) (if (not record) #f (cdr record)))) (define (put key value table) (let ((record (assq key (cdr table)))) (if (not record) (set-cdr! table (cons (cons key value) (cdr table))) (set-cdr! record value))))

Datos mutables en Scala Objetos Colecciones mutables List Buffer

Ejemplo de ListBuffer import scala.collection.mutable.listbuffer val buf = new ListBuffer[Int] buf += 1 buf += 2 3 +=: buf ListBuffer es un tipo de referencia val buf = new ListBuffer[Int] val buf2 = buf buf2 += 4

Operaciones importantes de ListBuffer Añadir: val buf = new ListBuffer[Int] buf += 1 val buf2 = new ListBuffer[Int] buf2 ++= List(2,3,4) buf ++= buf2 Eliminar elementos: val buf = new ListBuffer[String] buf ++= List("Paris","Madrid","Londres") buf -= "Paris"

Operaciones importantes de ListBuffer Función indexof: val buf = new ListBuffer[String] buf ++= List("Paris","Madrid","Londres") buf.indexof("madrid") Función update: val buf = new ListBuffer[String] buf ++= List("Paris","Madrid","Londres") buf.update(1,"barcelona")

Estructuras de control Secuencia Selección Iteración

Secuencia Scheme: (define x 3) (define y 5) (define (cambia-vars a b) (set! x a) (set! y (+ a b x)) (+ x y)) Scala: var x=3 var y=5 def cambiavars(a: Int, b: Int) = { x=a y=a+b+x x+y }

Selección if La sentencia if de Scala devuelve el resultado de la última expresión evaluada val filename = if (!args.isempty) args(0) else "default.txt" println(filename)

Sentencia match Con efectos laterales: def pruebamatch(str: String) = { str match { case "salt" => println("pepper") case "chips" => println("salsa") case "eggs" => println("bacon") case _ => println("huh?") } }

Sentencia match Devolviendo un valor: def pruebamatch2(str: String): String = { str match { case "salt" => "pepper" case "chips" => "salsa" case "eggs" => "bacon" case _ => "huh?" } }