Post on 03-Aug-2015
PROGRAMACION LINEAL, PROGRAMACION ESTRUCTURADA
Conceptos clave:
Función objetivo: La función por optimizar (maximizar o minimizar) Restricciones:
Representan condiciones que es preciso satisfacer. Sistema de igualdades y
desigualdades (≤ Ó≥ )
La programación estructurada utiliza un número limitado de estructuras de control
que minimizan la complejidad de los problemas y por consiguiente reducen los
errores. La programación estructurada es un estilo con el cual él se busca que el
programador elabore programas sencillos y fáciles de entender
Programación estructurada
Es un estilo con el cual el se busca que el programador elabore programas
sencillos y fáciles de entender. Para ello se hace uso de 3 estructura básicas.
o Estructura secuencial.
o Estructura selectiva.
2
o Estructura repetitiva (o iterativa)
Estructura Secuencial
Indica que las instrucciones de un programa se ejecutan una después de la otra,
en el mismo orden en el cual aparecen en el programa.
Estructura Selectiva
Conocida como la estructura SI-VERDADERO-FALSO, plantea la selección entre
dos alternativas con base en el resultado de la evaluación de una condición;
equivale a la instrucción IF de todos los lenguajes de Programación.
3
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
El proceso de resolución de un problema con una computadora conduce a la
escritura de un programa y su ejecución en la misma. Aunque el proceso de
diseñar programas es esencialmente un proceso creativo, se pueden considerar
una serie de fases o pasos comunes, que generalmente deben seguir todos los
programadores.
Las fases de resolución de un problema con computadora son:
o Análisis del problema
o Diseño del algoritmo
o Codificación
o Compilación y ejecución
o Verificación
o Depuración
o Mantenimiento
o Documentación
4
Herramientas de programación
Diagramas de flujo
Un diagrama de flujo (flowchart) es una representación gráfica de un algoritmo.
(los símbolos utilizados han sido normalizados por el Instituto Norteamericano de
Normalización (ANSI, por sus siglas en inglés).
Pseudocódigo
El pseudocódigo es una herramienta de programación en que las instrucciones se
escriben en palabras similares al inglés o español, que facilitan tanto la escritura
como la lectura de programas.
Aunque no existen reglas para escritura del pseudocódigo en español, se ha
recogido una notación estándar que es muy empleada en los libros de
programación en español. Las palabras reservadas básicas se representan en
letras negritas minúsculas. Estas palabras son traducción libre de palabras
reservadas de lenguajes como C, Pascal, etc.
Codificación de un programa
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso
introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un
disco. El programa fuente debe ser traducido a lenguaje máquina, este proceso se
realiza con el compilador y el sistema operativo que se encarga particularmente
de la compilación.
Cuando se ejecuta un programa se pueden producir tres tipos de errores:
Errores de compilación. Se producen normalmente por un uso incorrecto de las
reglas del lenguaje de programación y suelen ser errores de sintaxis. Si existe un
error de sintaxis, la computadora ni puede comprender la instrucción, no se
5
obtendrá el programa objeto y el compilador imprimirá una lista de todos los
errores encontrados durante la compilación.
Errores de ejecución. Estos errores se producen por instrucciones que la
computadora puede comprender pero no ejecutar. Ejemplos típicos son: división
entre cero y raíces cuadradas de números negativos. En estos casos se detiene la
ejecución del programa y se imprime un mensaje de error.
Errores de lógica. Se producen en la lógica del programa y la fuente del error
suele ser el diseño del algoritmo. Estos errores son los más difíciles de detectar,
ya que el programa puede funcionar y no producir errores de compilación ni de
ejecución, y sólo puede advertir el error por la obtención de resultados incorrectos.
En este caso se debe volver a la fase de diseño del algoritmo, modificar el
algoritmo, cambiar el programa fuente y compilar y ejecutar una vez más.
ORIGENES DE P.O.O.
Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje
específico conocido como código máquina, el cual la máquina comprende
fácilmente, pero que lo hace excesivamente complicado para las personas. De
hecho sólo consiste en cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron
hacer un traductor para reemplazar los 0 y 1 por palabras o abstracción de
palabras y letras provenientes del inglés; éste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add
(sumar). El lenguaje ensamblador sigue la misma estructura del lenguaje máquina,
pero las letras y palabras son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones usuales
llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar),
SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia
de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones
6
se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes
lenguajes de programación, los cuales reciben su denominación porque tienen una
estructura sintáctica similar a los lenguajes escritos por los humanos,
denominados también lenguajes de alto nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija de
Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a
Ada quien, después de conocer a Charles Babbage, tradujo y amplió una
descripción de su máquina analítica. Incluso aunque Babbage nunca completó la
construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas
le hizo ganarse el título de primera programadora de computadoras del mundo. El
nombre del lenguaje de programación Ada fue escogido como homenaje a esta
programadora.
A finales de 1953, John Backus sometió una propuesta a sus superiores en IBM
para desarrollar una alternativa más práctica al lenguaje ensamblador para
programar la computadora central IBM 704. El histórico equipo Fortran de Backus
consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan
Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David
Sayre.2
El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el
primer compilador Fortran entregado en abril de 1957. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar código cuyo desempeño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.
VENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS
Vamos a ver las ventajas más importantes de la programación orientada a objetos:
Reusabilidad. Cuando hemos diseñado adecuadamente las clases, se
pueden usar en distintas partes del programa y en numerosos proyectos.
7
Mantenibilidad. Debido a la sencillez para abstraer el problema, los
programas orientados a objetos son más sencillos de leer y comprender,
pues nos permiten ocultar detalles de implementación dejando visibles sólo
aquellos detalles más relevantes.
Modificabilidad. La facilidad de añadir, suprimir o modificar nuevos objetos
nos permite hacer modificaciones de una forma muy sencilla.
Fiabilidad. Al dividir el problema en partes más pequeñas podemos
probarlas de manera independiente y aislar mucho más fácilmente los
posibles errores que puedan surgir.
Datos separados del Diseño.
- Reutilización del código.
-Entendimiento del programa en el mundo real.
- Fácil entendimiento de la lógica del programa.
CAJA NEGRA
En teoría de sistemas y física, se denomina caja negra a aquel elemento que es
estudiado desde el punto de vista de las entradas que recibe y las salidas o
respuestas que produce, sin tener en cuenta su funcionamiento interno En otras
palabras, de una caja negra nos interesará su forma de interactuar con el medio
que le entendiendo qué es lo que hace, pero sin dar importancia a cómo lo hace.
Por tanto, de una caja negra deben estar muy bien definidas sus entradas y
salidas, es decir, su interfaz; en cambio, no se precisa definir ni conocer los
detalles internos de su funcionamiento rodea
La caja negra se utiliza para representar a los sistemas cuando no sabemos que
elementos o cosas componen al sistema o proceso, pero sabemos que a
determinadas entradas corresponden determinadas salidas y con ello poder
inducir, presumiendo que a determinados estímulos, las variables funcionaran en
cierto sentido
Interfaz
8
o Interfaz es la conexión entre dos ordenadores o máquinas de cualquier tipo
dando una comunicación entre distintos niveles.
o Además, la palabra interfaz se utiliza en distintos contextos:
o Interfaz como instrumento: desde esta perspectiva la interfaz es una
"prótesis" o "extensión" de nuestro cuerpo. El ratón es un instrumento que
extiende las funciones de nuestra mano y las lleva a la pantalla bajo forma
de cursor. Así, por ejemplo, la pantalla de una computadora es una interfaz
entre el usuario y el disco duro de la misma.
o Interfaz como superficie: algunos consideran que la interfaz nos trasmite
instrucciones ("affordances") que nos informan sobre su uso. La superficie
de un objeto (real o virtual) nos habla por medio de sus formas, texturas,
colores, etc.
o Interfaz como espacio: desde esta perspectiva la interfaz es el lugar de la
interacción, el espacio donde se desarrollan los intercambios y sus
manualidades.
EJEMPLO
EMPRESA:
En la entrada puede considerarse la inversión inicial de fondos y de esas
inversiones (planta y equipos) se produce una salida compuesta por varias clases
de productos que son distribuidos entre los consumidores como también
dividendos que retornan a los inversionistas (sean estos privados o públicos).
En estos casos sólo nos preocupamos por las entradas y salidas que produce no
por lo que sucede dentro del sistema, es decir la forma en que operan los
mecanismos y procesos internos del sistema y mediante los cuales se producen
las salidas.
9
OBJETOS: CLASES, ENCAPSULAMIENTOS Y APLICACIÓN.
o En P.O.O., una clase es una construcción que se utiliza como un modelo (o
plantilla) para crear objetos.
o Una clase es un conjunto coherente que consiste en un tipo particular
de metadatos (son datos que describen otros datos)
Encapsulamiento
Se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos
miembro, de un objeto de manera que sólo se puede cambiar mediante las
operaciones definidas para ese objeto.
El encapsulamiento es una de las ventajas de la P.O.O. y radica en que un objeto
puede tener métodos y atributos a la que la clase solo puede tener acceso, esto se
realiza con los modificadores del tipo de acceso.
10
En general el encapsulamiento es capturar todo lo necesario en el objeto y que
este controle estas características o métodos.
¿Qué formas de encapsulamiento hay?
o Abierto : Hace que el miembro de la clase pueda ser accedido desde el
exterior de la Clase y cualquier parte del programa.
o Protegido : Solo es accesible desde la Clase y las clases que heredan (a
cualquier nivel).
o Semi-cerrado : Solo es accesible desde la clase heredada
o Cerrado : Solo es accesible desde la Clase.
LA ABSTRACCIÓN
Consiste en aislar un elemento del resto de los elementos que lo acompañan. En
programación, el término se refiere al énfasis en el "¿qué hace?“Más que en el
"¿cómo lo hace?" (Característica de caja negra).
LOS LENGUAJES DE PROGRAMACION
Son las herramientas mediante las cuales los diseñadores de lenguajes pueden
implementar los modelos abstractos*.
La abstracción de los lenguajes de programación se puede dividir en dos:
• Abstracción de datos (pertenecientes a los datos)
• Abstracción de control (perteneciente a las estructuras de control).
11
La abstracción desde el punto de vista de la POO:
• Expresa las características esenciales de un objeto, las cuales distinguen al
objeto de los demás.
Provee límites conceptuales, quiere decir que la encapsulación separa las
características esenciales de las no esenciales dentro de un objeto.
• Si un objeto tiene más características de las necesarias resultarán difíciles
de usar, modificar, construir y comprender.
• Genera una ilusión de simplicidad dado a que minimiza la cantidad de
características que definen a un objeto.
Uso de la abstracción
Permite que dispongamos de las características de un objeto que necesitemos.
“Descripción simplificada de un sistema que enfatiza algunos detalles o
propiedades mientras suprime otros.”
Una buena abstracción es la que enfatiza detalles que son significantes al
lector, y suprime los que no lo son.
Se enfoca sobre una vista externa del objeto, y separa su comportamiento
esencial de su implementación.
Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse pertenecientes
a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la
coherencia de los componentes del sistema.
La encapsulación
12
La capacidad de agrupar y condensar en un entorno con límites bien-definidos
distintos elementos.
La Clase
una encapsulación porque constituye una cápsula que encierra de forma clara
los datos de los objetos y los procedimientos que permiten manipularlos.
“Las Clases se constituyen en abstracciones encapsuladas”
2 ventajas iniciales:
o Lo que hace el usuario puede ser controlado internamente (incluso sus
errores), evitando que todo colapse por una intervención indeseada.
o La segunda ventaja es que, al hacer que la mayor parte del código esté
oculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como
los usuarios van a utilizar tu código.
PROGRAMACIÓN ORIENTADA A OBJETOS
Atributos, Métodos, Mensajes Y Diseño De Una Clase.
13
Atributos
Los atributos son empleados para identificar, describir, calificar ò expresar el
estado de una entidad.
Todo entidad posee un atributo ò combinación de atributos que se denomina
"clave primaria" y que emplea para diferenciar cada instancia de los demás.
A los atributos que forman parte de la clave primaria se los identifica
anteponiéndoles el signo de numero (#).
A los atributos obligatorios se les antepone el asterisco (*).
A los atributos opcionales se les antepone un circulo (o).
Métodos
Los métodos son comportamientos o acciones, especifican la forma en que
se controlan los datos de un objeto. Los métodos en un objeto sólo hacen
referencia a la estructura de datos de ese objeto, no deben tener acceso
directo a las estructuras de datos de otros objetos. Para utilizar la estructura
de datos de otro objeto, deben enviar mensajes a éste.
14
Clases
Objetos
Instancias de
Propiedades o
atributos
Métodos
Herencia
Polimorfismo
Encapsulación
Abstracción
Tipos de datos
abstractos
tienen
son
Conceptos básicos sobre programación orientada a
objetos
Desde el punto de vista de la programación, los métodos son funciones o
procedimientos que pueden ser llamadas dentro de una clase o por otras
clases.
Mensajes
En la programación orientada de objetos, la acción se inicia mediante la
transmisión de un mensaje a un agente (un objeto) responsable de la acción.
El mensaje tiene codificada la petición de una acción y se acompaña de cualquier
información adicional (argumentos) necesaria para llevar a cabo la petición. El
receptor es el agente al cual se envía el mensaje. Si el receptor acepta el
mensaje, acepta la responsabilidad de llevar a cabo la acción indicada. En
respuesta a un mensaje, el receptor ejecutará algún método para satisfacer la
petición.
Para declarar una clase, todo lo que se necesita es escribir una definición de
estructura y sustituir la palabra reservada struct por class. Por ejemplo, una clase
empleado con campos como el nombre, el departamento, la posición, el una
función que nos imprima la información de este quedaría así:
class Empleado
{
char* m_nombre;
char* m_departamento;
char* m_posicion;
long m_salario;
void Imprimir( Empleado infoEmpleado);
}
OBJETOS: CICLO DE VIDA DE UN OBJETO Y ESTADO DE LOS
OBJETOS
15
Un objeto es un componente de programa que posee instancia, es decir espacio
de memoria para sus propiedades y funciones.
Un objeto podría ser real o abstracto, por ejemplo una organización, una factura,
una figura en un dibujador, una pantalla de usuario, un avión, un vuelo de avión,
etc.
Estructura interna de un objeto
Propiedades: Son las características observables de un objeto.. A cada propiedad
se le debe asignar un valor el cual permite identificar de manera única al objeto.
Métodos: Se define como un conjunto de acciones que un objeto puede realizar
para conseguir un propósito. Representan la parte viva e interesante de un objeto
y se emplean habitualmente para modificar las propiedades del objeto
Eventos: Todos los objetos se relacionan con el mundo que los rodea, esto
significa que ningún objeto está aislado y siempre recibe el influjo de otros objetos.
Los eventos son los estímulos que un objeto ejerce sobre otro
La vida de un objeto
Un objeto sigue vivo en la máquina virtual mientras siga habiendo referencias
desde otros objetos (o clases) actualmente en uso. Los objetos declarados en un
ámbito, serán destruidos al salir de éste si no se guarda ninguna referencia a ellos
en otro objeto:
Los objetos son cosas que tienen un estado
Un objeto puede existir en varios estados.
El estado de un objeto es la colección de asociaciones que tiene un objeto.
Es la condición de un objeto o el conjunto de circunstancias que describen a un
objeto.
16
Muchos de los objetos son estáticos, esto es, el estado de un objeto no cambia a
menos que algo externo al objeto se lo requiera
Si un objeto es capaz de cambiar su propio estado espontáneamente, se dice que
ese objeto es un objeto con vida, también llamados objetos activos o actores.
HERENCIA Y POLIMORFISMO
Propiedad que permite a los objetos ser construidos a partir de otros objetos.
17
Capacidad de un objeto para utilizar las estructuras de datos y los métodos
previstos en antepasados o ascendientes.
o Clase Base
o Jerarquía de clases (clases derivadas)
o Herencia Publica
Una clase derivada tiene acceso a elementos públicos y privados de su clase
base.
o Herencia Protegida
Los miembros públicos y protegidos de la clase base se convierten en miembros
protegidos de la clase derivada y los privados de la clase base se vuelven
inaccesibles.
o Herencia Privada
Los miembros públicos y protegidos de la clase base se vuelven miembros
privados de la clase derivada
Herencia simple
o En herencia simple un objeto puede tener solo un ascendiente.
18
o Permite que una clase herede las propiedades de su superclase en una
cadena de jerarquía.
Herencia múltiple
Propiedad de una clase de poder tener mas de un ascendiente inmediato.
Es aquella en la que cada clase puede heredar métodos y variables de cualquier
número de superclases.
Polimorfismo
Capacidad que tiene una clase de responder de manera diferente a un mismo
mensaje. Permite implantar clases que respondan a un solo mensaje.
De forma mas general se puede decir que el polimorfismo describe múltiples y
posibles estados de una única propiedad.
Tipos de polimorfismo
Ad-hoc
Es generalmente soportado a través de la herencia, por ejemplo, objetos de
diferentes tipos pueden ser tratados uniformemente como miembros de una
superclase común. El polimorfismo ad-hoc es también soportado en muchos
lenguajes usando funciones y métodos sobrecargados.
Paramétrico
Es ampliamente soportado en lenguajes de programación funcionales de tipo
estático.
CONCLUSION
19
A través de estas exposiciones me di cuenta que son de suma importancia para la
carrera que estudiamos ya que esta, yo diría, enfocada hacia la misma. Y así nos
ayuda a conocer cada vez mas y si es de nuestro interés no lleva a indagar mas y
mas sobre algún tema especifico. Por otro lado los temas de cada exposición se
notaban sencillos, pero al momento de abordarlos en algunos no lo era así. A mi
en lo particular se me dificulto en los diagramas de flujo y en los diseños de clase.
De ahí en fuera lo demás si me gusto y siento y siento que si le entendí solo me
faltaría comprobarlo con algo más práctico.
20