Programacion

1,056 views
1,000 views

Published on

Ayudarse a programa en culquier materia

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,056
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Programacion

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

×