1. Introducción. Conceptos previos
Informática (RAE):
Conjunto de conocimientos científicos y técnicas que
hacen posible el tratamiento automático de la
información por medio de computadoras electrónicas.
Computadora:
máquina capaz de aceptar unos datos de entrada,
efectuar con ellos operaciones lógicas y aritméticas, y
proporcionar la información resultante a través de un
medio de salida.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
2. Introducción. Algoritmos
Un ordenador por sí sólo no es capaz de
hacer nada. Hace falta la ayuda de un
programador.
El programador es que programa las
instrucciones necesarias al ordenador para
realizar una tarea
Algoritmo (RAE): Conjunto ordenado y finito
de operaciones que permite hallar la
solución de un problema.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
3. Introducción. Algoritmos
Mediante algoritmos se solucionan los
problemas
Los algoritmos son independientes del
ordenador en el que se realizan las
operaciones
Los algoritmos deben de ser:
Precisos
Finitos
Repetibles
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
4. Introducción. Algoritmos
Los algoritmos conviene que sean:
Válidos (hacen lo que deben hacer)
Eficientes (no tardan un tiempo excesivo)
Óptimos (es la mejor solución al problema)
Un algoritmo posee:
Datos de entrada
Cálculos para conseguir el resultado
Datos de salida o resultantes
A partir de unos datos de entrada se
consigue la salida
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
5. Introducción. Pasos para crear algoritmos
Análisis del problema. Hay que
comprender el problema
Diseño del algoritmo. Pasos para
resolver el problema. Es mejor
solucionar problemas pequeños
Prueba del algoritmo
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
6. Introducción. Algoritmos. Datos formales
Los algoritmos se construyen utilizando
elementos simples para que el lenguaje se
parezca más al de las computadoras
Los datos de los algoritmos son:
Números (10, 25, 5.32)
Textos (“Hola mundo”)
Lógicos (VERDADERO, FALSO, true, false)
Datos compuestos (registros, listas)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
7. Introducción. Algoritmos. Datos formales
Los algoritmos pueden tener expresiones, las
cuales se componen de:
Variables (x, resta, saldo)
Operadores (+, -, *, >, <, Y(AND))
Las instrucciones de los algoritmos pueden
ser
Primitivas (entrada, salida, asignación)
De control (bucle, condición)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
8. Introducción. Representación de
algoritmos
Existen códigos especiales que sirven para
representar algoritmos
La razón de su uso es normalizar la
escritura de algoritmos
Hay diagramas de flujo y pseudocódigo
El primero trabaja con representaciones
gráficas, el segundo con un lenguaje
especial
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
9. Introducción. Representación de
algoritmos
Existen códigos especiales que sirven para
representar algoritmos
La razón de su uso es normalizar la
escritura de algoritmos
Hay diagramas de flujo y pseudocódigo
El primero trabaja con representaciones
gráficas, el segundo con un lenguaje
especial
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
10. Introducción. Diagramas de flujo
Inicio Representa el principio del algoritmo
Fin Representa el final del algoritmo
Operación
Entrada o salida de datos
Condición
Dirección del flujo del programa
Subprograma
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
11. Introducción. Pseudocódigo
Es otra forma de representar
algoritmos
Se asemeja más a los
lenguajes de programación de
alto nivel
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
12. Introducción. Pseudocódigo. Instrucciones
ESCRIBIR. Muestra algo en el
dispositivo de salida (la pantalla
normalmente)
LEER variable. Lee un dato (del
teclado) y lo almacena en esa variable
. Asignar valor
Comparaciones: < > ≠ ≤ ≥
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
13. Introducción. Pseudocódigo. Instrucciones
SI condición ENTONCES instrucciones
[SINO
instrucciones]
FIN SI
EN CASO DE variable
valor1:instrucciones
valor2:instrucciones
...
EN OTRO CASO: instrucciones
FIN EN CASO DE
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
14. Introducción. Pseudocódigo. Instrucciones
MIENTRAS condición HACER instrucciones
FIN MIENTRAS
REPETIR
instrucciones
HASTA condición
PARA variable DE valorInicial A valorFinal
[INCREMENTO valor] instrucciones
FIN PARA
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
15. Lenguajes. Código máquina
El ordenador sólo puede ejecutar
instrucciones en un lenguaje muy
simple conocido como código máquina
Programar en ese lenguaje es muy
complejo
Ejemplo, sumar 5+2 podría ser algo
como 1001011000101010
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
16. Lenguajes. Ensamblador
Es código escrito en un lenguaje que
tiene representación exacta en el
código máquina
Cada programa creado en ensamblador
sirve para una sola máquina
Muy difícil de escribir
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
17. Lenguajes. Alto nivel
Los lenguajes de alto nivel se alejan de
la máquina y se parecen más al
pseudocódigo
Se escriben programas que luego habrá
que ensamblar para convertirles en
código máquina
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
18. Lenguajes. Cuarta generación
Se alejan aún más de la máquina y se
centran en la resolución del problema
Permiten crear programas sin apenas
escribir código
Son más limitados pero mucho más
rápidos de desarrollar
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
19. Lenguajes. Intérpretes
El intérprete es un software capaz de
interpretar instrucciones escritas en
un lenguaje de alto nivel.
Interpretan el código línea a línea de la
primera a la última
Optimizan menos el código
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
20. Lenguajes. Compilador
Software que traduce un programa
pero interpretando todo el código a la
vez
El código es más eficiente
Se tarda más en ejecutar el resultado
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
21. Lenguajes. Historia
Fortran. Primer lenguaje, orientado a
problemas matemáticos
Lisp. Crea las funciones
Cobol. Orientado a aplicaciones de
gestión.
Basic. Ideado para ser fácil de aprender
Pascal. Ideado también para ser sencillo
de aprender, potencia la legibilidad del
código
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
22. Lenguajes. Historia
C. Lenguaje de nivel medio que otorga una
gran libertad al programador
SQL. Lenguaje de consulta de bases de datos
Visual Basic y Delphi. Lenguajes orientados a
la creación mediante sintaxis sencilla de
entornos gráficos de usuario.
Prolog. Ideado para resolver problemas de
inteligencia artificial
C++ Mejora de C para soportar el uso de
objetos
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
23. Lenguajes. Historia
Perl. Lenguaje que facilita el uso de las
expresiones normales (para crear
consultas complicadas).
HTML y XML. Lenguajes de marcado
para la maquetación y definición de
documentos
Java. Sintaxis heredada de C++. Pensado
para crear aplicaciones de red.
PHP, ASP y JSP. Lenguajes combinados
para ejecutar instrucciones en un
servidor web
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
24. Programación orientada a objetos
La programación clásica (estructurada)
se complica enormemente cuanto
mayor es el problema
Una solución fue la programación
modular
Una solución mejor es la POO (OOP)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
25. Programación orientada a objetos. Idea
general
La POO consiste en definir objetos
Cada objeto consta de una serie de
propiedades (variables) y de una serie
de métodos (funciones)
El código se reparte entre los objetos
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
26. Programación orientada a objetos.
Clases y objetos
Clase: Definición teórica de los
objetos. Identifican tipos de objetos
Objeto: Una instancia particular de una
clase
Mensajes: Comunicación entre un
objeto y otro. En realidad son llamadas
a procedimientos o variables públicas
del objeto
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
27. Programación orientada a objetos.
Propiedades
Encapsulamiento: El hecho de integrar en el
objeto tanto métodos como propiedades
Ocultación: Hay métodos y propiedades
públicos y métodos y propiedades privados
Herencia: Las clases pueden heredarse de
otras previas
Polimorfismo: El mismo método puede estar
presente en varios objetos y su significado ser
distinto
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
28. Programación orientada a objetos.
Creación de programas
Todo es un objeto
Un programa es un conjunto de
objetos que se comunican
Todo objeto posee una clase
Todos los objetos de una clase
reciben los mismos mensajes
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
29. Programación orientada a objetos.
Creación de programas
• Escribir en papel lo que queremos hacer de forma
directa
• Identificar las clases y objetos
• Identificar las relaciones entre las clases (mensajes)
• Identificar las propiedades y estados de los objetos
• Identificar la secuencia correcta de mensajes
• Estudiar cada clase e intentar definir su código de
forma independiente
• Definir el código de inicio de la aplicación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
30. Programación orientada a objetos.
Lenguajes
A partir de la idea de esta programación
aparecen lenguajes más o menos
implicados con esta idea
El primer lenguaje que incorporó esta
idea fue Simula 67
Poco a poco incluso los lenguajes
clásicos se han adaptado a esta idea
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
31. Programación orientada a objetos.
Lenguajes. Tipos
Puros. Sólo se puede hacer programación
orientada a objetos (por ejemplo Java)
Híbridos. Permiten también hacer
programación estructurada (por ejemplo C++)
Basados en objetos. Soportan algunos objetos
(algunos lenguajes de macro)
Basados en clases. Permiten usar objetos y
clases (por ejemplo JavaScript)
Orientados a objetos. Incluyen herencia
(Visual Basic)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
32. Metodologías. Introducción
Técnicas que permiten realizar un modelo
previo de un programa
Hay metodologías de todo tipo que modelan
tanto instrucciones como datos
Las metodologías intentar simplificar el
diseño de una aplicación
Al final el modelo hay que implementarle
(escribirle en un determinado lenguaje)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
33. Metodologías. UML
UML = Unified modelling language, lenguaje de
modelado universal
No es una metodología completa (una metodología
completa indica los pasos a realizar durante el
desarrollo del software)
Es una notación, una forma de expresar modelos
informáticos
Es un estándar de facto para diseñar aplicaciones
orientadas a objetos
Se basa en diagramas que pueden servir tanto al
diseñador como al cliente.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
34. Metodologías. UML
Es una metodología diseñada por los
principales creadores de metodologías
Estamos en la versión 1.3 (a punto de
aparecer la 2.0)
Sus responsables son el Object Management
Group (www.omg.org)
La especificación está disponible en
www.omg.org/uml
UML define 12 tipos de diagramas, cada uno
representa un aspecto del funcionamiento
de una aplicación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
35. Metodologías. UML. Clases
Clase: Descripción de una serie de
objetos con propiedades, métodos,
relaciones y semántica muy parecida
Representación:
Nombre
Atributos
Métodos
Responsabilidades
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
36. Metodologías. UML. Clases
Nombre: Nombre de la clase
Atributos: Datos que definen las propiedades
de la clase.
Métodos: Capacidades que puede realizar la
clase. Pueden devolver datos y pueden
requerir datos para su uso
Responsabilidades: Opcional. Indica para qué
se utiliza la clase
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
39. Metodologías. UML. Objeto
Objeto: Elemento con
significado concreto en una
aplicación
Representación:
Coche19:Coche
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
40. Metodologías. UML
Paquete: Estructura que sirve para
agrupar clases
Pueden agrupar otros paquetes
Representación:
Nombre
Clase1 Clase2
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
41. Metodologías. UML. Diagramas
En UML hay varios tipos de diagramas
que modelizan las clases y objetos
En total hay 12 diagramas
Cuatro representan la estructura
estática
Cinco el comportamiento dinámico
Tres se refieren a la organización
modular
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
42. Metodologías. UML. Diagrama de clases.
Relación
Programador Ordenador
Maneja
Nombre:texto; Identificador:texto;
Modelo:texto;
1..* 0..*
Velocidad:entero
Nombre de la asociación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
43. Metodologías. UML. Diagrama de clases.
Agregación
Matriculado en
Alumno Asignatura
1..* 1..11
1..6
1..2 Imparte
Profesor
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
44. Metodologías. UML. Diagrama de clases.
Composición/Agregación
Punto Polígono
X:entero; Regular:lógico;
Y:entero;
Borrar()
Mover(despl_x, Mover(p:Punto)
Rellenar(c:color)
despl_y:entero)
Mover(p:Punto) 3..*
Representa un punto Representa un
en el espacio polígono en el espacio
Expresa una relación todo/parte.
El punto es parte del polígono
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
45. Metodologías. UML. Diagrama de clases.
Generalización
Automóvil Motocicleta
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
46. Metodologías. UML. Diagrama de clases.
Generalización
Trabajador
Encargado Administrativo Peón
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net