esta obra está bajo una licencia de creative...
TRANSCRIPT
Esta obra está bajo una licencia de Creative Commons.Autor: Jorge Sánchez Asenjo (año 2005)
http://www.jorgesanchez.netemail:[email protected]
Esta obra está bajo una licencia de Reconocimiento-NoComercial-CompartirIgual de CreativeCommons. Para ver una copia de esta licencia,
visite:http://creativecommons.org/licenses/by-nc-sa/2.0/es/
o envíe una carta a:Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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
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 tareaAlgoritmo (RAE): Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Algoritmos
Mediante algoritmos se solucionan los problemasLos algoritmos son independientes del ordenador en el que se realizan las operacionesLos algoritmos deben de ser:
PrecisosFinitosRepetibles
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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 entradaCálculos para conseguir el resultadoDatos de salida o resultantes
A partir de unos datos de entrada se consigue la salida
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Pasos para crear algoritmos
1. Análisis del problema. Hay que comprender el problema
2. Diseño del algoritmo. Pasos para resolver el problema. Es mejor solucionar problemas pequeños
3. Prueba del algoritmo
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Algoritmos. Datos formales
Los algoritmos se construyen utilizando elementos simples para que el lenguaje se parezca más al de las computadorasLos 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
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
Introducción. Representación de algoritmos
Existen códigos especiales que sirven para representar algoritmosLa razón de su uso es normalizar la escritura de algoritmosHay diagramas de flujo y pseudocódigoEl primero trabaja con representaciones gráficas, el segundo con un lenguaje especial
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Representación de algoritmos
Existen códigos especiales que sirven para representar algoritmosLa razón de su uso es normalizar la escritura de algoritmosHay diagramas de flujo y pseudocódigoEl primero trabaja con representaciones gráficas, el segundo con un lenguaje especial
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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
Introducción. Pseudocódigo
Es otra forma de representar algoritmosSe asemeja más a los lenguajes de programación de alto nivel
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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 valorComparaciones: < > ≠ ≤ ≥
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Pseudocódigo. Instrucciones
SI condición ENTONCES instrucciones [SINO instrucciones] FIN SIEN CASO DE variablevalor1:instruccionesvalor2:instrucciones...EN OTRO CASO: instruccionesFIN EN CASO DE
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Introducción. Pseudocódigo. Instrucciones
MIENTRAS condición HACER instrucciones FIN MIENTRASREPETIR instrucciones HASTA condiciónPARA variable DE valorInicial A valorFinal [INCREMENTO valor] instrucciones FIN PARA
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Código máquina
El ordenador sólo puede ejecutar instrucciones en un lenguaje muy simple conocido como código máquinaProgramar en ese lenguaje es muy complejoEjemplo, sumar 5+2 podría ser algo como 1001011000101010
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Ensamblador
Es código escrito en un lenguaje que tiene representación exacta en el código máquinaCada programa creado en ensamblador sirve para una sola máquinaMuy difícil de escribir
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Alto nivel
Los lenguajes de alto nivel se alejan de la máquina y se parecen más al pseudocódigoSe escriben programas que luego habrá que ensamblar para convertirles en código máquina
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Cuarta generación
Se alejan aún más de la máquina y se centran en la resolución del problemaPermiten crear programas sin apenas escribir códigoSon más limitados pero mucho más rápidos de desarrollar
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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 últimaOptimizan menos el código
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Compilador
Software que traduce un programa pero interpretando todo el código a la vezEl código es más eficienteSe tarda más en ejecutar el resultado
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Historia
Fortran. Primer lenguaje, orientado a problemas matemáticosLisp. Crea las funcionesCobol. Orientado a aplicaciones de gestión.Basic. Ideado para ser fácil de aprenderPascal. Ideado también para ser sencillo de aprender, potencia la legibilidad del código
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Lenguajes. Historia
C. Lenguaje de nivel medio que otorga una gran libertad al programadorSQL. Lenguaje de consulta de bases de datosVisual 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 artificialC++ Mejora de C para soportar el uso de objetos
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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 documentosJava. 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
Programación orientada a objetos
La programación clásica (estructurada) se complica enormemente cuanto mayor es el problemaUna solución fue la programación modularUna solución mejor es la POO (OOP)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Programación orientada a objetos. Idea general
La POO consiste en definir objetosCada 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
Programación orientada a objetos. Clases y objetos
Clase: Definición teórica de los objetos. Identifican tipos de objetosObjeto: Una instancia particular de una claseMensajes: 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
Programación orientada a objetos. Propiedades
Encapsulamiento: El hecho de integrar en el objeto tanto métodos como propiedadesOcultación: Hay métodos y propiedades públicos y métodos y propiedades privadosHerencia: Las clases pueden heredarse de otras previasPolimorfismo: El mismo método puede estar presente en varios objetos y su significado ser distinto
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Programación orientada a objetos. Creación de programas
Todo es un objeto Un programa es un conjunto de objetos que se comunicanTodo objeto posee una claseTodos los objetos de una clase reciben los mismos mensajes
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Programación orientada a objetos. Creación de programas
1. Escribir en papel lo que queremos hacer de forma directa
2. Identificar las clases y objetos3. Identificar las relaciones entre las clases
(mensajes)4. Identificar las propiedades y estados de los objetos5. Identificar la secuencia correcta de mensajes6. Estudiar cada clase e intentar definir su código de
forma independiente7. Definir el código de inicio de la aplicación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Programación orientada a objetos. Lenguajes
A partir de la idea de esta programación aparecen lenguajes más o menos implicados con esta ideaEl primer lenguaje que incorporó esta idea fue Simula 67Poco a poco incluso los lenguajes clásicos se han adaptado a esta idea
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
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
Metodologías. Introducción
Técnicas que permiten realizar un modeloprevio de un programaHay metodologías de todo tipo que modelan tanto instrucciones como datosLas metodologías intentar simplificar el diseño de una aplicaciónAl final el modelo hay que implementarle (escribirle en un determinado lenguaje)
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML
UML = Unified modelling language, lenguaje de modelado universalNo 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áticosEs un estándar de facto para diseñar aplicaciones orientadas a objetosSe basa en diagramas que pueden servir tanto al diseñador como al cliente.
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML
Es una metodología diseñada por los principales creadores de metodologíasEstamos 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/umlUML define 12 tipos de diagramas, cada uno representa un aspecto del funcionamiento de una aplicación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Clases
Clase: Descripción de una serie de objetos con propiedades, métodos, relaciones y semántica muy parecidaRepresentación:
NombreAtributosMétodos
Responsabilidades
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Clases
Nombre: Nombre de la claseAtributos: 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 usoResponsabilidades: Opcional. Indica para qué se utiliza la clase
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Clases. Forma simplificada
Coche
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Clases. Ejemplo
Cochemarca:Stringmodelo:String
matricula:Stringcolor:String
kilómetros:intvelocidad:int
acelerar(cantidad:int)frenar(cantidad:int)
arrancar()obtenerVelocidad():int
Transporta genteConsume gasolina
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Objeto
Objeto: Elemento con significado concreto en una aplicaciónRepresentación:
Coche19:Coche
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML
Paquete: Estructura que sirve para agrupar clasesPueden agrupar otros paquetesRepresentación:
Nombre
Clase1 Clase2
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Diagramas
En UML hay varios tipos de diagramas que modelizan las clases y objetosEn total hay 12 diagramasCuatro representan la estructura estáticaCinco el comportamiento dinámicoTres se refieren a la organización modular
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Diagrama de clases. Relación
Programador
Nombre:texto;
Ordenador
Identificador:texto;Modelo:texto;Velocidad:entero1..* 0..*
Maneja
Nombre de la asociación
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Diagrama de clases. Agregación
Alumno AsignaturaMatriculado en
1..* 1..11
Profesor
Matriculado en
Imparte
1..6
1..2
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Diagrama de clases. Composición/Agregación
Punto
X:entero;Y:entero;
Mover(despl_x, despl_y:entero)Mover(p:Punto)
Representa un punto en el espacio
Polígono
Regular:lógico;
Borrar()Mover(p:Punto)Rellenar(c:color)
Representa un polígono en el espacio
3..*
Expresa una relación todo/parte. El punto es parte del polígono
Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net
Metodologías. UML. Diagrama de clases. Generalización
Automóvil Motocicleta