Documentos de Académico
Documentos de Profesional
Documentos de Cultura
programación
Lenguaje
(Diccionario de la lengua Española)
1. m. Conjunto de sonidos articulados con que el hombre
manifiesta lo que piensa o siente.
2. m. lengua (‖ sistema de comunicación verbal).
3. m. Manera de expresarse. Lenguaje culto, grosero,
sencillo, técnico, forense, vulgar.
4. m. Estilo y modo de hablar y escribir de cada persona en
particular.
5. m. Uso del habla o facultad de hablar.
6. m. Conjunto de señales que dan a entender algo. El
lenguaje de los ojos, el de las flores.
7. m. Inform. Conjunto de signos y reglas que permite la
comunicación con un ordenador.
Lenguaje
Edward Sapir, definió el lenguaje como un
método humano y no instintivo de
comunicar ideas, emociones y deseos
mediante un sistema de símbolos
producidos voluntariamente. Esta
definición en principio se refiere a un
lenguaje natural, que es aquel lenguaje
hablado o escrito que usamos para la
comunicación más cotidiana y general.
Lenguaje
Un lenguaje formal es un lenguaje donde existe
una gramática que implementa el conjunto de
concatenaciones (cadenas) posibles de un
alfabeto finito particular. Esta gramática provee
al lenguaje de 3 elementos importantes:
1. Un vocabulario de símbolos;
2.Reglas sintácticas para combinar estos
símbolos en cadenas y fórmulas gramatical
mente correctas, y
3. Reglas semánticas para darle significado e
interpretación a esas fórmulas
Programación
(Diccionario de la lengua Española)
1. f. Acción y efecto de programar.
2. f. Conjunto de los programas de radio o
televisión.
Programar
(Diccionario de la lengua Española)
1. tr. Formar programas, previa declaración de lo que se
piensa hacer y anuncio de las partes de que se ha de
componer un acto o espectáculo o una serie de ellos.
2. tr. Idear y ordenar las acciones necesarias para realizar un
proyecto. U. t. c. prnl.
3. tr. Preparar ciertas máquinas por anticipado para que
empiecen a funcionar en el momento previsto.
4. tr. Preparar los datos previos indispensables para obtener la
solución de un problema mediante una calculadora
electrónica.
5. tr. Inform. Elaborar programas para la resolución de
problemas mediante ordenadores.
6. tr. Mat. Optimar el valor de una función de muchas variables
cuyos valores extremos son conocidos.
Lenguajes de Programación
Los lenguajes de programación forman un
subconjunto de los lenguajes formales.
Mediante ellos el ser humano puede
comunicarse con una computadora y decirle qué
es lo que tiene que hacer y, al mismo tiempo,
sirven para comunicarse con otros seres
humanos y expresarles qué es lo que se quiere
que haga una computadora.
Historia de los lenguajes
de programación
Breve...
Prehistoria
Charles Babbage
Construyó computadora
Ada Lovelace
Lenguaje para programar telares
II Guerra Mundial
Alan Turing
Máquinas de Turing
Test de Turing
ENIAC
Programación por conmutadores
John Von Neumann
El programa almacenado
Primeros lenguajes
Decada de los 40:
Código de máquina
Binario
Códigos de operación
Sumar 0001
Restar 0010
Más adelante: PNemónicos
Lenguajes de “alto nivel”
Más próximos al lenguaje natural
Los primeros (1955 ->)
FORTRAN (Formula Translator)
COBOL (Common Business Oriented Language)
ALGOL (Algorithmic Language) (60s)
Pascal, C, SmallTalk, Java
LISP (List Procesor) (60s)
¿Cuándo aparecieron?
Pascal 1970
C 1972
Prolog 1973
SEQUEL 1975
SQL 1992
Visual Basic 1992
Basic 1960
Java 1996
Generación de los lenguajes de
programación
1GL: Código máquina
2GL: Ensambladores (código simbólico)
3GL: (Máquina independiente) Lenguajes
Imperativos(FORTRAN, Pascal, C ...)
4GL: Generadores de aplicación de dominio
específico
5GL: Lenguajes de Inteligencia artificial
Lenguajes declarativos
Lenguajes
ensambladores
Lenguajes de máquina
Contexto en el que se ubican los lenguajes de
programación
Lenguaje natural
Aplicación
Lenguaje de programación
Compilador/Intérprete
Máquina virtual
Sistema operativo
Lenguaje
de máquina
Una breve cronología
Early 1950s “order codes” (primitive assemblers)
1957 FORTRAN the first high-level programming language
1958 ALGOL the first modern, imperative language
1960 LISP, COBOL Interactive programming; business programming
1962 APL, SIMULA the birth of OOP (SIMULA)
1964 BASIC, PL/I
1966 ISWIM first modern functional language (a proposal)
1970 Prolog logic programming is born
1972 C the systems programming language
1975 Pascal, Scheme two teaching languages
1978 CSP Concurrency matures
1978 FP Backus’ proposal
1983 Smalltalk-80, Ada OOP is reinvented
1984 Standard ML FP becomes mainstream (?)
1986 C++, Eiffel OOP is reinvented (again)
1988 CLOS, Oberon, Mathematica
1990 Haskell FP is reinvented
1990s Perl, Python, Ruby, JavaScript Scripting languages become mainstream
1995 Java OOP is reinvented for the internet
2000 C#
Cronología
Paradigma
(Diccionario de la lengua Española)
1. m. Ejemplo o ejemplar.
2. m. Ling. Cada uno de los esquemas formales
en que se organizan las palabras nominales y
verbales para sus respectivas flexiones.
3. m. Ling. Conjunto cuyos elementos pueden
aparecer alternativamente en algún contexto
especificado; p. ej., niño, hombre, perro, pueden
figurar en El -- se queja.
Paradigma
(Webster)
1: example, pattern; especially : an outstandingly
clear or typical example or archetype
• Programación imperativa
• Programación funcional
• Programación lógica
• Programación estructurada
• Programación orientada a objetos
• Programación concurrente
• Programación guiada por eventos
Paradigmas de programación (II)
Programación imperativa
El programa se define como una serie de acciones o pasos, cada uno de
los cuales recibe una entrada, ejecuta un cálculo, o produce como
resultado una salida. La programación imperativa se basa en la asignación
de valores, en la utilización de variables para almacenar valores y en la
realización de operaciones con estos valores almacenados. Ejemplos de
lenguajes de programación imperativa son los lenguajes de alto nivel
(Fortran, C, Pascal, etc.) y los lenguajes ensambladores.
Cobol, Fortran, C
Paradigmas de programación
Orientado a objetos
Programa: colección de objetos
Objetos interactúan entre sí
Smalltalk, Java, C++, C#, Javascript
Paradigmas de programación
Programación Lógica
Programa: declaraciones lógicas
Falso o verdadero
Backtracking
Prolog
Guiada por eventos
Programa: ciclo de respuesta a eventos
Evento: suceso generado por el entorno
Visual Basic, Java, C#, Delphi, Pascal, Javascript
Paradigmas de programación
Programación funcional
Programa: colección de funciones
Funciones matemáticas: dominio y contradominio
Interactúan entre sí
Condicionales, recursividad, composición funcional
Lisp, Scheme
Paradigmas de programación
Programación Lógica
Programa: declaraciones lógicas
Falso o verdadero
Backtracking
Prolog
Paradigmas de programación
Guiada por eventos
Programa: ciclo de respuesta a eventos
Evento: suceso generado por el entorno
Visual Basic, Java, Javascript
Paradigmas de programación
Programación concurrente
Programa: colección de procesos cooperativos
Comparten información y recursos
Simulación por computadora
Sistemas operativos
GPSS, Java, SQL
Estrategias de construcción de
programas
Programación Descendente
Programación Modular
Programación Estructurada
Intercambiar
Programación modular
Módulo
principal
Cálculo de
estadísticas
Diseño modular
Vehículo
Animal
Programación Orientado a Objetos
(POO).
Clase
Generalmente, una clase se puede definir como una descripción
abstracta de un grupo de objetos, cada uno de los cuales tiene una
serie de atributos, un estado específico y es capaz de realizar una
serie de operaciones.
Lavadora
marca
Atributos modelo
Operaciones capacidad...
Comportamiento Programar
PonerRopa
CerrarPuerta
Lavar
Programación Orientado a Objetos
(POO).
Objetos:
Un objeto, no es más que una instancia de una clase. La instancia
de una clase significa definir un objeto dándole valores a sus
atributos y comportamiento, y realizando operaciones permitidas por
la clase.
ID:Lavadora
Valores de los atributos
Estado marca=“Lapava”
Identidad capacidad=5
estado=enjuagando
Programación Orientada
a Objetos
Introducción a la Programación Orientado a Objetos
(POO).
52
Objeto
Un objeto
tiene:
•Un estado
•Un comporta-
miento bien
definido
•Una identidad
única
53
Ejemplos de Objetos
Equipo 1 Equipo 2 Equipo 3 Equipo 4 Equi
Figura N
Fi
Vehículo
A
Pe
Ar
A
Co
Re
De
Animal Ob
Ob
Di
El mundo color de Objetos
60
Atributos
Concepto: Características que definen a la
clase, es lo que el usuario (de la clase) puede
ver. Es la abstracción.
Otro concepto: variables que están dentro de los
objetos y que contienen los valores del objeto.
También son llamados: propiedades, datos
miembro.
Atributos = Variables
61
Atributos – Ejemplo1
Una Fracción está definido por un par de
números naturales, los cuales se denominan el
numerador y denominador.
numerador_
Fraccion denominador
ValorNumerador
ValorDenominador
62
Atributos – Ejemplo2
Un Fecha está definido por tres datos: día, mes
y año.
Fecha
15/ 12/ 2005
Día
Mes
Año
63
Un objeto posee Comportamiento
Lo que el objeto puede hacer
El comportamiento de un objeto determina cómo
éste actúa y reacciona frente a las peticiones de
otros objetos
Es modelado por un conjunto de mensajes a los
que el objeto puede responder (operaciones que
puede realizar)
Se implementa mediante métodos
Comportamiento
El comportamiento de un objeto es la forma en que
actúa y reacciona, en términos de sus cambios de
estado e intercambio de mensajes con otros objetos.
El comportamiento de un objeto está determinado por
las operaciones que pueden ser invocadas sobre el
mismo.
Los tres tipos de operaciones más comunes son:
Construir
Destruir
65
Métodos (Actividades)
66
¿Qué objetos tienen relación con los siguientes
objetos?:
Televisión:
Cajero:
Video:
CPU: Teclado, Mouse, Pantalla, Alumno
Mesa: Silla, Mantel, Plato, Vaso, Familia
Televisión
Equipo 1 Equipo 2 Equipo 3 Equipo 4
Control Control ControlRemoto Antena
Cable ReproductorDVD DispositivosBUleTooth Cable
DVD ConsolaVideoJuego ReproductorVideo Bocina
USB SeñalSatelital ConsolaVideoJuegos ControlRemoto
ConsolaVideoJuego Internet CapturadorPantalla Telefono
Persona Enchufe CableHDMI Persona
Mueble Electricidad CableRCA USB
Espectador CableVGA Modem
BocinaExterna CableEthernet Video
Antena Usuario TeatroCasa
Bocina
Televisor Decodificador
1
Antena
Control
TVBox
* * 1 4
Persona USB DVD Cable
Cajero
Equipo 5 Equipo 6 Equipo 1 Equipo 2
2
video Titulo
1
Subtitulo
1 1
Descripcion Informacion
Ejemplos de Objetos
Equipo 6 Equipo 7 Equipo 4 Equipo 5 Equ
76
De los objetos Televisor, Cajero, Video obtener
que objetos pertenecen a estos objetos
Ejemplo la pantalla pertenece al televisor.
Que objetos tienen relación con los objetos
Televisor, Cajero, Video
ControlRemoto tiene relación con el Televisor
Constructor
Constructor: Es un método que se invoca
cuando un objeto es construido
79
Modificador
Permite cambiar el estado de un objeto,
modificando los atributos del mismo.
Ej.
Void Fecha::SetDia(byte dd)
{ SetFecha(dd, m, a);
}
80
Selector
Permite devolver el valor de los atributos sin
alterar su estado.
Ej.
byte Fecha::GetDia()
{ return d;
}
81
Métodos – Ejemplo1-2
Representación gráfica de los métodos de las clases CQuebrado y CVect
CQuebrado CVector
PonNumerador PonDimension
PonDenominador PonElemento
ObtDenominador ObtDimension
ObtNumerador ObtElemento
Simplificar Ordenar
82
Método Ponedor
El método ponedor es un proceso cuyo trabajo consiste
en asignar valores a los atributos de un objeto.
En una clase debe haber por lo menos un método
ponedor para cada uno de los atributos.
Para los nombres de los procesos ponedores
normalmente se utilizan los prefijos Set o Pon
83
Un objeto posee Identidad
Cada objeto tiene una identidad única, incluso si
su estado es idéntico al de otro objeto
Miembros Públicos, Privados o
Protegidos
Lavadora
Atributos
marca
Operaciones modelo
Comportamiento capacidad...
Programar
PonerRopa
CerrarPuerta
Lavar
Clase
Luis Joyanes Aguilar
“Una Clase es un tipo definido por el
usuario(programador) que determina las
estructuras de datos y las operaciones
asociadas con este tipo”
“La Clase es simplemente un modelo que se
utiliza para describir uno o más objetos del
mismo tipo”
90
Conceptos de la OOP
Conceptos básicos Tipos de relaciones
Objeto Asociación
Clase Herencia
Abstracción: Instanciación
Encapsulamiento:
Modularidad: Representaciones gráficas
Jerarquía Diagramas estáticos (de
clases, de objetos...)
Otros conceptos OOP
Diagramas dinámicos (de
Tipos
interacción...)
Persistencia
Terminología de la POO
Clase
Objeto Herencia
Atributos Asociación
Métodos Agregación
Instancia Polimorfismo
Abstracción Constructor
Encapsulamiento Destructor
Modularidad Miembro Público
Jerarquía Miembro Privado
Generalización Miembro Protegido
Abstracción
Abstracción: La abstracción es la capacidad que
permite representar las características esenciales de un
objeto sin preocuparse de las restantes características
(no esenciales).
Abstracción
Abstracción
Nos permite trabajar con la complejidad del mundo real
Resaltando los aspectos relevantes de los objetos de una clase
Ocultando los detalles particulares de cada objeto
Separaremos el comportamiento de la implementación
Es más importante saber qué se hace en lugar de cómo se
hace:
Un sensor de temperatura
Se define porque...
mide la temperatura
nos muestra su valor
se puede calibrar...
No sabemos... (no nos importa)
cómo mide la temperatura
de qué está hecho
cómo se calibra
Abstracción
Capacidad para encapsular y aislar la información del
diseño y ejecución.
Mecanismos en programación:
Procedimientos y funciones
Tipo de dato base: Entero, Decimal (Real), Caracter,
cuerda Alpanumérica, Dato de decision,
Tipos de datos abstractos (TDA), Temperatura, Altura, Tasa
de Seguro Médico,
Objetos: son TDA a los que se añaden mecanismos como
herencia, métodos, etc.
Abstracción de Datos
Consiste en utilizar los datos sin preocuparse
por los detalles de su implementación, es decir,
lo importante es saber que tipo de información
se puede utilizar y no como está almacenado
Que Atributo
Como Campo
97
Abstracción funcional
Consiste en saber que es lo que hace un
determinado proceso, pero no como lo hace.
Por ejemplo el proceso Ordenar de la clase
Vector, sabemos que el método ordenará los
elementos del vector, pero no nos interesa
como lo hará.
Que método
Como algoritmo
98
Encapsulamiento
Es la propiedad que permite asegurar que los aspectos
externos de un objeto se diferencie de sus detalles
internos. Consiste en reunir varias cosas para ser
manipuladas como una sola unidad.
Técnica que permite localizar y ocultar los detalles de un
objeto respecto al usuario, aislándolo del aspecto interno
Previene que un objeto sea manipulado por operaciones
distintas a las que le son propias, así como que sus
operaciones manipulen datos ajenos a ellas.
Por ejemplo al definir variables de tipo Registro estamos
encapsulando los campos del registro.
Al definir una clase estamos encapsulando los atributos y
los métodos.
Encapsulamiento
Ninguna parte de un sistema complejo debe
depender de los detalles internos de otra.
Complementa a la abstracción
Se consigue:
Separando la interfaz de su implementación
Ocultando la información interna de un objeto
Escondiendo la estructura e implementación de los
métodos (algoritmos).
Exponiendo solo la forma de interactuar con el
objeto
Encapsulamiento
Ejemplo: Un paralelogramo
Universidad Estudiante
Una asociación
Asociación
Ejemplo:
Hombre Mujer
Casado 0..1
Nombre Nombre
marido 0..1 Casada
casado-con
0..1
mujer
0..1 Persona Compañía
nombre * trabaja-para nombre
s.s. dirección
emplea-a *
jefe 0..1
*
Administra
empleado
… Asociación
Especificación de multiplicidad
(mínima...máxima)
1 Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)
Tablero Cuadro
fila 1 1
Ajedrez
columna
Palanca de cambio
Motor
Marchas
Ruedas
Coche
Motor
Ruedas
III. El Paradigma OO: Diagrama de Clases
Agregación
La agregación representa una relación parte_de
entre objetos
Agregación: Caracterización
Caracterizaciones relacionadas con la multiplicidad
Ejemplos
Window
scrollbar[2] : Slider
title : Header
body : Panel
Window
1 1
1
scrollbar
2 title 1 body 1
Slider Header Panel
... Ejemplos
Member-of * Committee
Person *
{ subset }
1 Chair-of *
Represents an
incorporated entity.
boss
{Person.employer =
Person.boss.employer}
… Ejemplos
Agregación
Polígono 1 contiene Punto
3..*
{ordenado}
Persona
*
*
Cuenta
or Asociación excluyente
* Empresa
1
Autorización
Clase de asociación prioridad
privilegios
camb_privil()
Relación de Instanciación
En determinados casos una clase (p.ej. un
vector) puede implementarse
independientemente del tipo (real, complejo,
color...) de alguno de sus atributos:
Tipo
Definimos una clase
parametrizada o template Vector
(plantilla)
Para cada uno de los tipos
que necesitemos
VectorColores VectorEnteros
definimos una nueva
<Color> <int>
clase Instanciación
Clases e instancias
Instanciación
Hombre Mujer
Nombre Nombre
Modelo:
NumeroRuedas:
Clase Descripción
Catedrático Maestro de alto nivel que imparte conocimiento
Estudiante Jóvenes que reciben conocimiento
Instituto Centro de Aprendizaje
Clase Un grupo de personas que llevan una materia donde
reciben el conocimiento
Grupo Un conjunto de estudiantes que pertenecen a una
materia
Clase Atributo Descripción
Clase
Grupo
uto Catedrático Estudiante Grupo
NombreCompleto NombreCompleto IdentificacionGrupo
Registro NúmeroControl NúmeroControl NumeroEstudiantes
Generación Turno
Calificacion Semestre
Tiene * *
Tiene
* Imparte
1
* pertenece
Clase *
Tiene tiene
Grupo
Ejercicios
Crear un proyecto UML llamado Asociacion en el que se diseñe un
diagrama de clases que modele el proceso de dar de alta a cada una
de las personas que se apuntan a una asociación.
De cada persona interesa saber sus datos básicos: Cedula, nombre
completo y fecha de nacimiento. Cuando cada nuevo socio se da de
alta, se le asigna un código de asociado alfanumérico y se anota
la fecha de alta.
La clase Fecha se modela con tres campos (día, mes y año) de tipo
entero. La clase Cédula se modela con un campo de tipo entero
llamado FechaNacimiento y un campo de tipo carácter llamado
Iniciales.
Solución:
http://joanpaon.wordpress.com/2013/07/01/uml-diagrama-de-clases-
ejercicio-1/
Ejercicios
Crear un proyecto UML llamado Torneo en el que se diseñe un diagrama
de clases que modele la estructura necesaria para manejar los datos de
los encuentros de un torneo de tenis de mesa en la modalidad de sorteo y
eliminatoria.
Del torneo interesa conocer la fecha del torneo, los encuentros
celebrados y el ganador. De cada jugador, que debe de conocer
perfectamente las reglas, interesa saber el número de federado de la
federación de la que es miembro.
De cada persona interesa saber sus datos básicos: Cédula, nombre
completo y fecha de nacimiento. La clase Fecha se modela con tres
campos (día, mes y año) de tipo entero. La clase Nif se modela con un
campo de tipo entero llamado fecha y un campo de tipo carácter
llamado Iniciales.
De cada encuentro interesa conocer los oponentes, el ganador y
el resultado final del marcador de cada una de las tres partidas que se
juegan a 21 puntos.
Solución: http://joanpaon.wordpress.com/2013/07/24/uml-diagrama-de-
clases-ejercicio-2/
Una biblioteca tiene copias de libros Estos últimos se Una biblioteca tiene
copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela,
teatro, poesía, ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad y fecha de
nacimiento.
Cada copia tiene un identificador y puede estar en la Cada copia tiene un
identificador, y puede estar en la biblioteca, prestada, con retraso o en
reparación.
Los lectores pueden tener un máximo de 3 libros en préstamo.
Cada libro se presta un máximo de 30 días, por cada día de retraso, se
impone una “multa” de dos días sin posibilidad de coger un nuevo libro.
Realiza un diagrama de clases y añade los métodos necesarios para
realizar el préstamo y devolución de necesarios para realizar el préstamo y
devolución de libros.