Download Fundamentos de programación, Año 2005
Document related concepts
no text concepts found
Transcript
Esta obra está bajo una licencia de Creative Commons. Autor: Jorge Sánchez Asenjo (año 2005) http://www.jorgesanchez.net email:info@jorgesanchez.net Esta obra está bajo una licencia de Reconocimiento-NoComercialCompartirIgual 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. 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 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 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 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 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 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 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 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 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 Introducción. Diagramas de flujo Inicio Fin Representa el principio del algoritmo 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 algoritmos Se 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 valor Comparaciones: < > ≠ ≤ ≥ Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Programación orientada a objetos. Creación de programas 1. 2. 3. 4. 5. 6. 7. 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 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 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 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 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 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 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 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 Metodologías. UML. Clases. Forma simplificada Coche Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net Metodologías. UML. Clases. Ejemplo Coche marca:String modelo:String matricula:String color:String kilómetros:int velocidad:int acelerar(cantidad:int) frenar(cantidad:int) arrancar() obtenerVelocidad():int Transporta gente Consume gasolina Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net 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 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 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 Metodologías. UML. Diagrama de clases. Relación Ordenador Programador Maneja Nombre:texto; 1..* 0..* Identificador:texto; Modelo:texto; Velocidad:entero Nombre de la asociación Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net Metodologías. UML. Diagrama de clases. Agregación Matriculado en Alumno 1..* 1..11 Asignatura 1..6 1..2 Imparte Profesor Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net Metodologías. UML. Diagrama de clases. Composición/Agregación Polígono Punto Regular:lógico; X:entero; Y:entero; Borrar() Mover(p:Punto) Rellenar(c:color) Mover(despl_x, despl_y:entero) Mover(p:Punto) 3..* Representa un polígono en el espacio Representa un punto en el espacio 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 Copyleft - Jorge Sánchez ‘2005 – www.jorgesanchez.net