Teórico 1 - IP
Teórico 1 - IP
Teórico 1 - IP
1 2
▶ Especificar problemas.
▶ Describirlos de manera tal que podemos construir y probar una
solución
▶ Pensar algoritmos para resolver los problemas.
▶ En esta materia nos concentramos en problemas para tratamiento de
secuencias principalmente.
▶ Empezar a Razonar acerca de estos algoritmos y programas. ▶ Una computadora es una máquina electrónica que procesa datos
▶ Veremos conceptos de testing. automáticamente de acuerdo con un programa almacenado en memoria.
▶ Escribir programas que implementen los algoritmos que pensamos. ▶ Es una máquina electrónica.
▶ Vamos a usar dos lenguajes de programación bien distintos para esto. ▶ Su función es procesar datos.
▶ El procesamiento se realiza en forma automática.
▶ El procesamiento se realiza siguiendo un programa.
▶ Este programa está almacenado en una memoria interna.
5 6
7 8
¿Qué es un programa? Ejemplo: Un Programa (en Haskell)
1. Corresponde a la implementación concreta del algoritmo para ser erastotenes aux : : [ Int ] → Int → [ Int ]
ejecutado en una computadora. erastotenes aux l i s t a n
2. Se describe en un lenguaje de programación. | n == length l i s t a−1 = l i s t a
| otherwise = erastotenes aux l i s t a f i l t r a d a (n+1)
where l i s t a f i l t r a d a = [ x | x ← l i s t a , ( x ‘mod‘ l i s t a ! ! n)/=0 | |
x==l i s t a ! ! n ]
9 10
13 14
Lenguajes naturales
▶ Una especificación es un contrato que define qué se debe resolver y qué
▶ Idiomas (castellano)
propiedades debe tener la solución.
▶ Mucho poder expresivo (modos verbales –potencial, imperativo–, tiempos
▶ Define el qué y no el cómo. verbales –pasado, presente, futuro—, metáforas, etc. )
▶ Con un plus (conocimiento del contexto, suposiciones, etc)
▶ La especificación de un problema incluye un conjunto de parámetros: datos
▶ No se usan para especificar porque pueden ser ambiguos, y no tienen un
de entrada cuyos valores serán conocidos recién al ejecutar el programa.
cálculo formal.
▶ Además de cumplir un rol “contractual”, la especificación del problema es Lenguajes formales
insumo para las actividades de ... ▶ Sintaxis sencilla
▶ Testing, ▶ Limitan lo que se puede expresar
▶ Verificación formal de correctitud. ▶ Explicitan las suposiciones
▶ Derivación formal (construir un programa a partir de la
▶ Relación formal entre lo escrito (sintaxis) y su significado (semántica)
especificación).
▶ Tienen cálculo para transformar expresiones válidas en otras válidas
15 16
Lenguajes formales. Ejemplos: Contratos
17 18
19 20
¿Por qué escribir la especificación del problema? Algoritmos y programas
21 22
23 24
Código fuente, compiladores, intérpretes... IDE (Integrated Development Environment)
No es tema de la materia... pero demos algún contexto por si se ponen a googlear...
25 26
27 28
Paradigmas Paradigmas
29 30
Paradigmas Paradigmas
31 32
Paradigmas Paradigmas
▶ Paradigma Funcional
▶ Haskell:
▶ Utilizaremos Haskell
▶ Paradigma Imperativo
▶ Python:
▶ Utilizaremos Python
33 34
35 36
Utilizar nombres declarativos Control de versiones
Ambos programas son el mismo... ¿Cuál se lee más claro?
int x = 0;
vector<double> y;
...
for(int i=0;i ≤ 4;i=i+1) {
x = x + y[i];
}
int totalAdeudado = 0;
vector<double> deudas;
...
for(int i=0;i ≤ conceptos;i=i+1) {
totalAdeudado = totalAdeudado + deudas[i];
}
37 38
▶ Guarda un historial de versiones de los distintos archivos que se usaron 1. Se tiene un servidor que permite el intercambio de los repositorios
▶ Existen distintas aplicaciones: svn, cvs, hg, git entre los usuarios.
2. Cada usuario tiene una copia local del repositorio completo.
▶ Acciones: checkout, add, remove, commit, push, pull, status
39 40
Git: Workflow Otros conceptos
Git básico: pull, push, commit, checkout... Git básico: branches y tags
▶ Master
▶ Develop
▶ Hotfixes
41 42
Master/Main-develop Hotfixes
Convenciones Convenciones
43 44
Nuevas features Todo junto...
Convenciones
45 46
Consejos Un ejemplo
En el repositorio está toda la historia de lo que pasó con cada lı́nea de código...
47 48
Links útiles ¿Preguntas?
▶ Repos hosts
▶ Bitbucket: https://bitbucket.org
▶ GitHub: https://github.com
▶ GitLab: https://gitlab.com
▶ GitLab Exactas: https://git.exactas.uba.ar
▶ Bibliografı́a
▶ Git - la guı́a sencilla:
http://rogerdudler.github.io/git-guide/index.es.html
▶ Pro Git book:
https://git-scm.com/book/en/v2
▶ Try git:
https://try.github.io
49 50