Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Especificar problemas.
I
Departamento de Computaci
on - FCEyN - UBA
Escribir programas.
I
Especificacion - clase 1
Contenidos
Regimen de aprobacion
1. Especificaci
on de problemas
I Lenguaje formal cercano a la l
ogica proposicional
2. Introducci
on a la programacion imperativa
I Sem
antica por transformacion de estados
I Correctitud para especificaci
on dada
Parciales
I
I
3. Estructuras de datos
I Especificaci
on de tipos de datos
I Implementaci
on de tipos mediante estructuras de datos
Trabajos practicos
I
I
I
2 parciales
2 recuperatorios (al final de la cursada)
2 entregas
2 recuperatorios (cada uno a continuacion)
Grupos de 4 alumnos
Algebra
I al finalizar la cursada)
5. Noci
on de complejidad tiempo.
p1 + p2 + t1 + t2
4
Bibliografa
I The Science of Programming
David Gries
Springer Verlag, 1981
I A Method of Programming
Edsger Dijkstra, W. H. Feijen
Addison-Wesley Longman, 1988
algo1-alu@dc.uba.ar
I Structured Programming
Edsger Dijkstra, C. A. R. Hoare, Ole-Johan Dahl
Academic Press, 1972
algo1-doc@dc.uba.ar
I A Discipline of Programming
Edsger Dijkstra
Prentice Hall , 1976
I Mathematical Logic: A Course With Exercises, Part 1
Ren
e Cori, Daniel Lascar.
Oxford University Press, 2000
I Reasoned programming
K. Broda, S. Eisenbach, H. Khoshnevisan, S. Vickers,
Prentice-Hall, 1994
5
Que es un algoritmo?
1. Es una maquina.
2. Su funcion es procesar informacion, y estos terminos deben
entenderse en sentido amplio.
3. El procesamiento se realiza en forma automatica.
4. El procesamiento se realiza siguiendo un programa.
5. Este programa esta almacenado en una memoria interna de la
misma computadora.
Que es un programa?
10
1. Especificacion
1. Especificaci
on
Definici
on formal del problema.
2. Dise
no general
Determinar las componentes de la solucion.
3. Dise
no de algoritmos
Dar algoritmos para cada componente.
4. Programaci
on y validaci
on
Implementar los algoritmos y asegurarse de que la implementaci
on
es correcta.
5. Instrumentaci
on y mantenimiento
Puesta en practica del programa implementado. Correcci
on de
errores e introduccion de cambios para responder a nuevos
requerimientos.
11
12
2. Diseno general
C
omo dividirlo en partes?
3. Diseno de algoritmos
Tiempo de ejecucion.
Uso de memoria.
Uso de otros recursos.
etc.
13
4. Programacion y validacion
5. Instrumentacion y mantenimiento
14
15
16
Especificacion de problemas
1. testing,
2. verificacion formal de correccion,
3. derivacion formal (construir un programa a partir de la
especificacion).
valores: ternas de n
umeros enteros
operaciones: comparacion, obtener el a
no, ...
valores: n
umeros reales con dos decimales
operaciones: suma, resta, ...
18
17
Contratos
1. Encabezado
C
omo es la especificacion (informalmente, por ahora) de este
problema?
I
I
19
El contrato
I
Lenguaje de especificacion
21
Encabezado de un problema
Ejemplos
problema rcuad(x : Float) = result : Float {
requiere x 0;
asegura result result == x;
}
24
Otro ejemplo
cociente(1,0)?
cociente(-4,-2) y retorna 2?
cociente(-4,-2) y retorna 0?
cociente(4,-2) y no termina?
26
27
28
Sobre-especificacion
I
Ejemplo:
Sub-especificacion
I
Ejemplo:
problema distinto(x : Int) = res : Int {
requiere x > 0;
asegura not(res == x)
}
asegura not(res == x)
}
29
Ultimo
ejemplo (por hoy)
30
32
Smbolos:
true , false , , , , , , , ( , )
Logica proposicional
Formulas
1. true, false y son formulas
2. Cualquier variable proposicional es una formula
3. Si A es una f
ormula, A es una formula
4. Si A1 , A2 , . . . , An son formulas, (A1 A2 An ) es una
formula
5. Si A1 , A2 , . . . , An son formulas, (A1 A2 An ) es una
formula
6. Si A y B son formulas, (A B) es una formula
7. Si A y B son formulas, (A B) es una formula
34
33
Semantica clasica
I
Semantica clasica
1. verdadero (1)
2. falso (0)
I
p
1
0
p
1
1
0
0
35
p
1
1
0
0
p
0
1
q
1
0
1
0
(p q)
1
0
1
1
q
1
0
1
0
(p q)
1
0
0
0
p
1
1
0
0
p
1
1
0
0
q
1
0
1
0
q
1
0
1
0
(p q)
1
1
1
0
(p q)
1
0
0
1
36
p
1
1
1
1
0
0
0
0
q
1
1
0
0
1
1
0
0
r
1
0
1
0
1
0
1
0
(p q)
1
1
0
0
0
0
0
0
Un ejercicio
((p q) r )
1
0
1
1
1
1
1
1
Si Juan est
a cursando y no conoce a nadie entonces Juan todava no tiene grupo
I Soluci
on:
p = Juan est
a cursando
q = Juan no conoce a nadie
r = Juan no tiene grupo
(p q) = r
38
37
Otro ejercicio
Otro ejercicio
1. Si Juan est
a cursando entonces no tiene grupo.
Soluci
on: (p = r )
Soluci
on: (r = q)
3. Si Juan est
a cursando y no tiene grupo entonces Juan no conoce a nadie.
Soluci
on: (p r ) = q
Soluci
on: q = (p r )
Soluci
on: q = (p r )
Soluci
on: r = q
7. Si Juan tiene grupo, es imposible que est
e cursando y no conozca a nadie
Soluci
on: r = (p q)
39
40