Esta obra est bajo una licencia de Creative Commons.
Autor: Jorge Snchez Asenjo (ao 2005)
[Link]
email:info@[Link]
Esta obra est bajo una licencia de Reconocimiento-NoComercialCompartirIgual de CreativeCommons. Para ver una copia de esta licencia,
visite:
[Link]
o enve una carta a:
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Introduccin. Conceptos previos
Informtica (RAE):
Conjunto de conocimientos cientficos y tcnicas que
hacen posible el tratamiento automtico de la
informacin por medio de computadoras electrnicas.
Computadora:
mquina capaz de aceptar unos datos de entrada,
efectuar con ellos operaciones lgicas y aritmticas, y
proporcionar la informacin resultante a travs de un
medio de salida.
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Algoritmos
Un ordenador por s slo 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
solucin de un problema.
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. 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 Snchez 2005 [Link]
Introduccin. Algoritmos
Los algoritmos conviene que sean:
Vlidos (hacen lo que deben hacer)
Eficientes (no tardan un tiempo excesivo)
ptimos (es la mejor solucin al problema)
Un algoritmo posee:
Datos de entrada
Clculos para conseguir el resultado
Datos de salida o resultantes
A partir de unos datos de entrada se
consigue la salida
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Pasos para crear algoritmos
1. Anlisis del problema. Hay que
comprender el problema
2. Diseo del algoritmo. Pasos para
resolver el problema. Es mejor
solucionar problemas pequeos
3. Prueba del algoritmo
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Algoritmos. Datos formales
Los algoritmos se construyen utilizando
elementos simples para que el lenguaje se
parezca ms al de las computadoras
Los datos de los algoritmos son:
Nmeros (10, 25, 5.32)
Textos (Hola mundo)
Lgicos (VERDADERO, FALSO, true, false)
Datos compuestos (registros, listas)
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. 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, asignacin)
De control (bucle, condicin)
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Representacin de
algoritmos
Existen cdigos especiales que sirven para
representar algoritmos
La razn de su uso es normalizar la
escritura de algoritmos
Hay diagramas de flujo y pseudocdigo
El primero trabaja con representaciones
grficas, el segundo con un lenguaje
especial
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Representacin de
algoritmos
Existen cdigos especiales que sirven para
representar algoritmos
La razn de su uso es normalizar la
escritura de algoritmos
Hay diagramas de flujo y pseudocdigo
El primero trabaja con representaciones
grficas, el segundo con un lenguaje
especial
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Diagramas de flujo
Inicio
Fin
Representa el principio del algoritmo
Representa el final del algoritmo
Operacin
Entrada o salida de datos
Condicin
Direccin del flujo del programa
Subprograma
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Pseudocdigo
Es otra forma de representar
algoritmos
Se asemeja ms a los
lenguajes de programacin de
alto nivel
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Pseudocdigo. 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 Snchez 2005 [Link]
Introduccin. Pseudocdigo. Instrucciones
SI condicin ENTONCES instrucciones
[SINO
instrucciones]
FIN SI
EN CASO DE variable
valor1:instrucciones
valor2:instrucciones
...
EN OTRO CASO: instrucciones
FIN EN CASO DE
Copyleft - Jorge Snchez 2005 [Link]
Introduccin. Pseudocdigo. Instrucciones
MIENTRAS condicin HACER instrucciones
FIN MIENTRAS
REPETIR
instrucciones
HASTA condicin
PARA variable DE valorInicial A valorFinal
[INCREMENTO valor] instrucciones
FIN PARA
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Cdigo mquina
El ordenador slo puede ejecutar
instrucciones en un lenguaje muy
simple conocido como cdigo mquina
Programar en ese lenguaje es muy
complejo
Ejemplo, sumar 5+2 podra ser algo
como 1001011000101010
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Ensamblador
Es cdigo escrito en un lenguaje que
tiene representacin exacta en el
cdigo mquina
Cada programa creado en ensamblador
sirve para una sola mquina
Muy difcil de escribir
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Alto nivel
Los lenguajes de alto nivel se alejan de
la mquina y se parecen ms al
pseudocdigo
Se escriben programas que luego habr
que ensamblar para convertirles en
cdigo mquina
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Cuarta generacin
Se alejan an ms de la mquina y se
centran en la resolucin del problema
Permiten crear programas sin apenas
escribir cdigo
Son ms limitados pero mucho ms
rpidos de desarrollar
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Intrpretes
El intrprete es un software capaz de
interpretar instrucciones escritas en
un lenguaje de alto nivel.
Interpretan el cdigo lnea a lnea de la
primera a la ltima
Optimizan menos el cdigo
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Compilador
Software que traduce un programa
pero interpretando todo el cdigo a la
vez
El cdigo es ms eficiente
Se tarda ms en ejecutar el resultado
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Historia
Fortran. Primer lenguaje, orientado a
problemas matemticos
Lisp. Crea las funciones
Cobol. Orientado a aplicaciones de
gestin.
Basic. Ideado para ser fcil de aprender
Pascal. Ideado tambin para ser sencillo
de aprender, potencia la legibilidad del
cdigo
Copyleft - Jorge Snchez 2005 [Link]
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 creacin mediante sintaxis sencilla de
entornos grficos de usuario.
Prolog. Ideado para resolver problemas de
inteligencia artificial
C++ Mejora de C para soportar el uso de
objetos
Copyleft - Jorge Snchez 2005 [Link]
Lenguajes. Historia
Perl. Lenguaje que facilita el uso de las
expresiones normales (para crear
consultas complicadas).
HTML y XML. Lenguajes de marcado para
la maquetacin y definicin 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 Snchez 2005 [Link]
Programacin orientada a objetos
La programacin clsica (estructurada)
se complica enormemente cuanto
mayor es el problema
Una solucin fue la programacin
modular
Una solucin mejor es la POO (OOP)
Copyleft - Jorge Snchez 2005 [Link]
Programacin 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 mtodos (funciones)
El cdigo se reparte entre los objetos
Copyleft - Jorge Snchez 2005 [Link]
Programacin orientada a objetos.
Clases y objetos
Clase: Definicin terica de los
objetos. Identifican tipos de objetos
Objeto: Una instancia particular de una
clase
Mensajes: Comunicacin entre un
objeto y otro. En realidad son llamadas
a procedimientos o variables pblicas
del objeto
Copyleft - Jorge Snchez 2005 [Link]
Programacin orientada a objetos.
Propiedades
Encapsulamiento: El hecho de integrar en el
objeto tanto mtodos como propiedades
Ocultacin: Hay mtodos y propiedades
pblicos y mtodos y propiedades privados
Herencia: Las clases pueden heredarse de
otras previas
Polimorfismo: El mismo mtodo puede estar
presente en varios objetos y su significado ser
distinto
Copyleft - Jorge Snchez 2005 [Link]
Programacin orientada a objetos.
Creacin 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 Snchez 2005 [Link]
Programacin orientada a objetos.
Creacin 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 cdigo de
forma independiente
Definir el cdigo de inicio de la aplicacin
Copyleft - Jorge Snchez 2005 [Link]
Programacin orientada a objetos.
Lenguajes
A partir de la idea de esta programacin
aparecen lenguajes ms o menos
implicados con esta idea
El primer lenguaje que incorpor esta
idea fue Simula 67
Poco a poco incluso los lenguajes
clsicos se han adaptado a esta idea
Copyleft - Jorge Snchez 2005 [Link]
Programacin orientada a objetos.
Lenguajes. Tipos
Puros. Slo se puede hacer programacin
orientada a objetos (por ejemplo Java)
Hbridos. Permiten tambin hacer
programacin 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 Snchez 2005 [Link]
Metodologas. Introduccin
Tcnicas que permiten realizar un modelo
previo de un programa
Hay metodologas de todo tipo que modelan
tanto instrucciones como datos
Las metodologas intentar simplificar el
diseo de una aplicacin
Al final el modelo hay que implementarle
(escribirle en un determinado lenguaje)
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML
UML = Unified modelling language, lenguaje de
modelado universal
No es una metodologa completa (una metodologa
completa indica los pasos a realizar durante el
desarrollo del software)
Es una notacin, una forma de expresar modelos
informticos
Es un estndar de facto para disear aplicaciones
orientadas a objetos
Se basa en diagramas que pueden servir tanto al
diseador como al cliente.
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML
Es una metodologa diseada por los
principales creadores de metodologas
Estamos en la versin 1.3 (a punto de
aparecer la 2.0)
Sus responsables son el Object Management
Group ([Link])
La especificacin est disponible en
[Link]/uml
UML define 12 tipos de diagramas, cada uno
representa un aspecto del funcionamiento
de una aplicacin
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Clases
Clase: Descripcin de una serie de
objetos con propiedades, mtodos,
relaciones y semntica muy parecida
Representacin:
Nombre
Atributos
Mtodos
Responsabilidades
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Clases
Nombre: Nombre de la clase
Atributos: Datos que definen las propiedades
de la clase.
Mtodos: 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 Snchez 2005 [Link]
Metodologas. UML. Clases. Forma simplificada
Coche
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Clases. Ejemplo
Coche
marca:String
modelo:String
matricula:String
color:String
kilmetros:int
velocidad:int
acelerar(cantidad:int)
frenar(cantidad:int)
arrancar()
obtenerVelocidad():int
Transporta gente
Consume gasolina
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Objeto
Objeto: Elemento con
significado concreto en una
aplicacin
Representacin:
Coche19:Coche
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML
Paquete: Estructura que sirve para
agrupar clases
Pueden agrupar otros paquetes
Representacin:
Nombre
Clase1
Clase2
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagramas
En UML hay varios tipos de diagramas
que modelizan las clases y objetos
En total hay 12 diagramas
Cuatro representan la estructura
esttica
Cinco el comportamiento dinmico
Tres se refieren a la organizacin
modular
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagrama de clases.
Relacin
Ordenador
Programador
Maneja
Nombre:texto;
1..*
0..*
Identificador:texto;
Modelo:texto;
Velocidad:entero
Nombre de la asociacin
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagrama de clases.
Agregacin
Matriculado en
Alumno
1..*
1..11
Asignatura
1..6
1..2
Imparte
Profesor
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagrama de clases.
Composicin/Agregacin
Polgono
Punto
Regular:lgico;
X:entero;
Y:entero;
Borrar()
Mover(p:Punto)
Rellenar(c:color)
Mover(despl_x,
despl_y:entero)
Mover(p:Punto)
3..*
Representa un
polgono en el espacio
Representa un punto
en el espacio
Expresa una relacin todo/parte.
El punto es parte del polgono
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagrama de clases.
Generalizacin
Automvil
Motocicleta
Copyleft - Jorge Snchez 2005 [Link]
Metodologas. UML. Diagrama de clases.
Generalizacin
Trabajador
Encargado
Administrativo
Pen
Copyleft - Jorge Snchez 2005 [Link]