esta obra está bajo una licencia de creative...

47
Esta obra está bajo una licencia de Creative Commons. Autor: Jorge Sánchez Asenjo (año 2005) http://www.jorgesanchez.net email:[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.

Upload: buikhuong

Post on 20-Sep-2018

214 views

Category:

Documents


0 download

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

Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net

Metodologías. UML. Diagrama de clases. Generalización

Trabajador

Encargado Administrativo Peón