antologia p.o.o

24
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 2

Upload: anyelik

Post on 03-Aug-2015

69 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANTOLOGIA P.O.O

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

Page 2: ANTOLOGIA P.O.O

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

Page 3: ANTOLOGIA P.O.O

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

Page 4: ANTOLOGIA P.O.O

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

Page 5: ANTOLOGIA P.O.O

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

Page 6: ANTOLOGIA P.O.O

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

Page 7: ANTOLOGIA P.O.O

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

Page 8: ANTOLOGIA P.O.O

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

Page 9: ANTOLOGIA P.O.O

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

Page 10: ANTOLOGIA P.O.O

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

Page 11: ANTOLOGIA P.O.O

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

Page 12: ANTOLOGIA P.O.O

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

Page 13: ANTOLOGIA P.O.O

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

Page 14: ANTOLOGIA P.O.O

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

Page 15: ANTOLOGIA P.O.O

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

Page 16: ANTOLOGIA P.O.O

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

Page 17: ANTOLOGIA P.O.O

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

Page 18: ANTOLOGIA P.O.O

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

Page 19: ANTOLOGIA P.O.O

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