lenguaje de especificaci n n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Lenguaje de Especificación PowerPoint Presentation
Download Presentation
Lenguaje de Especificación

Loading in 2 Seconds...

play fullscreen
1 / 18

Lenguaje de Especificación - PowerPoint PPT Presentation


  • 101 Views
  • Uploaded on

Lenguaje de Especificación. Algoritmos y Estructuras de Datos I Especificación – Práctica 2. Especificación de problemas. Expresamos formalmente qué debe cumplir una función para ser solución al problema dado. No expresamos cómo solucionarlo

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Lenguaje de Especificación


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
lenguaje de especificaci n

Lenguaje de Especificación

Especificación – Práctica 2

Algoritmos y Estructuras de Datos I

Especificación – Práctica 2

especificaci n de problemas
Especificación de problemas
  • Expresamos formalmente qué debe cumplir una función para ser solución al problema dado.
  • No expresamos cómo solucionarlo
    • Puede no haber solución al problema que planteamos.
    • O tal vez, no sabemos escribirla.
  • Recordemos que lo que queremos especificar es el contrato que debe cumplir la función para ser considerada solución del problema planteado.

Especificación – Práctica 2

especificaci n de problemas notaci n
Especificación de problemasNotación

problema nombre(parámetros) = salida{

modifica: parámetro;

requiere: expresión1;

asegura: expresión2;

-- DEFINICIÓN DE AUX –

}

Especificación – Práctica 2

ejercicios
Ejercicios
  • Especificar el problema de, dados dos enteros, devolver cualquiera de ellos.
  • Especificar el problema de, dados dos enteros, devolver el máximo.

Especificaión – Práctica 2

operaciones con secuencias
Operaciones con secuencias
  • long(a) ó |a|
  • indice(s,i) ó s[i] ó si
  • cab(s)
  • cola(s)
  • en(e,s) ó e en s ó e  s
  • cons(e,s) ó e:s
  • conc(s,t) ó s++t
  • sub(s, e, f) ó s[e..f]
  • cambiar (s, i, e)

Especificación – Práctica 2

operaciones con secuencias1
Operaciones con secuencias
  • alguno(s)
  • todos(s)
  • sum(s) ó s
  • prod(s) ó s

Especificación – Práctica 2

recordando
Recordando
  • Para todo:

( selectores, condiciones) propiedad

    • Equivale a

todos([propiedad | selectores, condiciones])

  • Existe:

( selectores, condiciones) propiedad

    • Equivale a

alguno([propiedad | selectores, condiciones])

Nota: cuando decimos “propiedad” nos referimos a expresiones de tipo Bool.

Especificación – Práctica 2

secuencias por comprensi n
Secuencias por comprensión
  • Notación:

[expresión | selectores, condiciones]

  • selectores: variable  secuencia (o <-)
    • variable va tomando el valor de cada elemento de secuencia en orden.
  • condiciones: expresiones de tipo Bool
  • Resultado
    • Secuencia
      • el valor de la expresión
      • calculado para los elementos seleccionados por los selectores
      • que cumplen las condiciones

Especificación – Práctica 2

recordando1
Recordando
  • Contar cuántas veces aparece x en la secuencia a

aux cuenta(x: T, a: [T]): Int = long([y | y <- a, y == x]);

  • Determinar si dos secuencias tienen los mismos elementos (sin importar el orden)

aux mismos(a, b: [T]): Bool =

|a| == |b| && ( c  a) cuenta(c,a) == cuenta(c,b);

Especificación – Práctica 2

especificaci n de problemas ejercicio soluci n
Especificación de problemasEjercicio – solución
  • Especificar el problema de, dados dos enteros, devolver el máximo.

problema mayor(a, b: Int) = result: Bool{

asegura: result == (if (a > b) then a else b);

}

problema mayor(a, b: Int) = result: Bool{

asegura: result ==

Beta(a > b)*a + Beta(a<=b)*b;

}

Especificación – Práctica 2

especificaci n de problemas ejercicio soluci n1
Especificación de problemasEjercicio – solución
  • Especificar el problema de, dados dos enteros, devolver cualquiera de ellos.

problema dameUno(a, b: Z) = result: Z{

asegura: (result == a) || (result == b);

}

Especificación – Práctica 2

usando listas por comprensi n
Usando listas por comprensión
  • [x | x  [5,7,4,2,8,6,4,5,8,2,7,4], x4] = [4,2,4,2,4]
  • [x+y | x  a, y  b, x  y], qué indica esta expresión?
    • Por ejemplo: a = [1,2,3] y b = [1,2,3]  [3,4,3,5,4,5] 
  • Sea a una secuencia, obtener la secuencia inversa de a: aux reverso(a:[T]):[T] =

[x[|a|-i-1] | i<-[0..|a|)]

  • Sea a una secuencia y n un natural, obtener la secuencia que queda de eliminar los primeros n elementos de s:

aux quitarN(n:Int, a:[T]) =

[a[i] | i<-[0...|a|), i>=n]

Especificación – Práctica 2

m s ejercicios con secuencias
Más ejercicios con secuencias
  • Especificar el problema de, dadas dos listas de enteros, devolver la suma de las cabezas de cada una.

problema sumaCabezas (a, b: [Z]) = result : Z {

requiere : |a| > 0 && |b| > 0;

asegura : result == cab(a) + cab(b);

}

Especificaión – Práctica 2

m s ejercicios con secuencias1
Más ejercicios con secuencias
  • Especificar el problema de, dadas dos listas de enteros, devolver la suma del primer elemento par de cada una.

problema sumaPrimerosPares (a, b: [Z]) = result : Z {

requiere : existePar(a) && existePar(b);

asegura : result == primerPar(a) + primerPar(b);

aux existePar(a: [Z]) : Bool =

( x <- a) a mod 2 == 0;

aux primerPar(a: [Z]) : Z =

cab([ x | x <- a, a mod 2 == 0]);

}

Especificaión – Práctica 2

m s ejercicios con secuencias2
Más ejercicios con secuencias
  • Especificar el problema de, dadas dos listas con números enteros (que posean igual longitud), devolver la suma elemento a elemento.

problema sumaListas (a, b: [Z]) = result : [Z] {

requiere : |a| == |b|;

asegura : result == [ a[i] + b[i] | i <- [0..|a|)];

}

Especificaión - Práctica 2

m s ejercicios con secuencias3
Más ejercicios con secuencias
  • Variante: no requerir que sean de igual longitud y suponer que se devuelve la suma hasta que alguna se acaba.

problema sumaListas (a, b: [Z]) = result : [Z] {

asegura :

result == [a[i] + b[i] | i <- [0..min(|a|,|b|))];

aux min(a,b: Z) : Z =

if (a < b) then a else b;

}

Especificaión - Práctica 2

m s ejercicios con secuencias4
Más ejercicios con secuencias
  • Encontrar el índice (la posición) del menor elemento en una secuencia de números reales distintos no negativos.

problema indiceMenorDistintos(a:[Float])=result:[Z]{

requiere noNegativos: (x <- a) x  0;

requiere distintos:

(i <- [0..|a|), j <- [0..|a|), i ≠ j) a[i] ≠ a[j];

asegura : 0 ≤ result < |a|;

asegura : (x <- a) a[result] ≤ x;

}

Especificaión - Práctica 2

m s ejercicios con secuencias5
Más ejercicios con secuencias
  • Especificar el problema de, dada una lista de enteros, devolver una que tenga los mismo elementos pero ordenada.

problema ordenar(a:[Z])=result:[Z]{

asegura : mismos(result,a);

asegura :

(i <- [0..|a|-1)) result[i] ≤ result[i+1];

}

Especificaión - Práctica 2