Modificaciones de listas

Bitácora de la clase del jueves 23/06/2016

Posted by Alf on June 23, 2016

Temas de clase

  • Hicimos modificaciones de listas
  • Integramos eso con modificaciones de registros.
  • Comenzamos a hacer en papel el parcial de práctica que deben terminar en papel para el martes que viene.

Pensando bien qué tipo de recorrido utilizar en cada caso:

  1. Hacer la función quemarPixeles(colores) que hace que todos los Rojo de la lista de colores se transformen en Negro. Por ejemplo, quemarPixeles([Negro,Rojo,Azul,Rojo]) denota la lista [Negro,Negro,Azul,Negro].
  2. Hacer la función quemarPrimerPixel(colores), que hace que sólo el primer pixel Rojo se queme. Por ejemplo, quemarPrimerPixel([Negro,Rojo,Azul,Rojo]) denota la lista [Negro,Negro,Azul,Rojo].
  3. Hacer la función sacarPrimeraOcurrencia(lista,elemento) que recibe una lista y un elemento, y denota el resultado de sacar sólo la primera ocurrencia del elemento en la lista. Por ejemplo, sacarPrimeraOcurrencia([Rojo,Azul,Verde,Azul], Azul) denota la lista [Rojo,Verde,Azul].
  4. Hacer la función reemplazarProducto(productos, idSacar, productoNuevo) que recibe una lista de productos, un id del producto que quiero sacar, y un producto entero nuevo, y denota la lista en la que sólo cambia el producto indicado, reemplezándolo por el nuevo. Por ejemplo, si tengo una lista con una barrita de cereal (id 6), un alfajor (id 7), y un bocadito (id 3) cuando haga reemplazarProducto(productos, 7, chocolate) entonces voy a obtener una lista con la barrita de cereal, el chocolate y el bocadito. O sea, obtengo una lista idéntica a la original pero donde estaba el id 7 sacó el producto alfajor y puso el chocolate. Precondición: Hay un y sólo un producto con ese id en la lista.
  5. Hacer la función hacerLight(producto) que recibe un producto y lo hace light. Ó sea, denota un producto idéntico al original, pero con su primer ingrediente graso transformado en harina, y con la mitad de las calorías por gramo.

Por ejemplo, si hago que este producto se haga light:

Producto(id<-5, precio<-55, ingredientes<-[
  Ingrediente(tipo<-Azul,gramos<-20,caloriasPorGramo<-5),
  Ingrediente(tipo<-Rojo,gramos<-15,caloriasPorGramo<-8),
  Ingrediente(tipo<-Rojo,gramos<-20,caloriasPorGramo<-6)
])

obtengo:

Producto(id<-5, precio<-55, ingredientes<-[
  Ingrediente(tipo<-Azul,gramos<-20,caloriasPorGramo<-5),
  Ingrediente(tipo<-Verde,gramos<-15,caloriasPorGramo<-4),
  Ingrediente(tipo<-Rojo,gramos<-20,caloriasPorGramo<-6)
])

Van las soluciones que hicimos en clase:

  • Punto 2 quemarPrimerPixel quemar.jpg

Recordemos que ... ++ tail(porRec) lo que hace es concatenar a la lista de quemados el resto de la lista sin recorrer. Se pone el tail porque se desea evitar poner el Rojo encontrado.

Además, es importante recordar el caso borde, que es considerar que puede no haber ningún rojo, entonces hay que poner un ìf para que sólo añada el [Negro] cuando hayamos encontrado algo.

  • Punto 3 sacarPrimeraOcurrencia sacarOcurrengia.jpg

Acá recuerden mirar también el caso borde.

  • Punto 5 hacerLight

Entendamos la estructura primero (qué recibo y qué devuelvo): pto5-0.jpg

Luego comenzamos entendiendo que es una modificación de registro, donde hay que delegar la modificación de la lista pto5-1.jpg

Luego la modificación de la lista delega en la modificación deun registro ingrediente pto5-2.jpg

Y finalmente se hace la modificación de un registro ingrediente pto5-3.jpg

Tarea

  1. Realizar en papel el enunciado de parcial del padrón/distrito.
  2. Completar la tarea que se debe. ¡Mirar en seguimiento!