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:[email protected]
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