lunes, 24 de octubre de 2016

Estructuras selectivas: simple, doble y múltiple



La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista de sencilla de instrucciones. Este es el caso cuando existe un número de posibles alternativas resultantes de la evaluación de una determinada condición.

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúan una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, elseo bien en español si, entonces, si_no), con una figura geométrica en forma de rombo o bien conun triangulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser:
·         Simples
·         Dobles
·         MúltiplesLa estructura simple es si (if) con dos formatos: Formato Pascal, si-entonces (if - then) y en formato C, si (if) a estructura selectiva doble es igual que la estructura simple si al cual se le añade la cláusula si-no (else) a estructura selectiva múltiples según-sea (switch en lenguaje C, case en pascal)


Estructura condicional: if y else

Es usada para ejecutar una instrucción o bloque de instrucciones solo si una condición es cumplida. Su forma es:

if (condición) extracto

donde la condición es la expresión que será evaluada. Si esta condición es true (verdadera), el extracto es ejecutado. Si esta es falsa (false), el extracto es ignorado (no ejecutado) y el programa continua en la siguiente instrucción después de la estructura condicional.

Bicondicional


La ejecución de la acción de esta secuencia depende del valor de esta. La acción de diferente en cada valor. Se utiliza la estructura if (condición) else en este tipo de secuencia.
La instrucción selectiva doble si entonces / sino permite que el lujo del diagrama se bifurque por dos ramas diferentes dependiendo del cumplimiento de una condición P.
Condición múltiple


Depende del valor de una expresión la acción que se ejecutara, pero en esta secuencia se decidirá entre diferentes acciones. Se utiliza la estructura switch (expresión) en esta secuencia.

Son estructuras selectivas que contienen a otras estructuras selectivas.
SWITCH-CASE


La sentencia múltiple switch ( ) está formada por una serie de etiquetas case que solamente cumplen con una condición determinada y un caso opcional default en el que están contemplados todos los valores que no se encuentran en los case.
La forma general de las sentencias switch ( ) es:
Switch (expresión)
{
case constante1:
sentencia1;
break;
case constante2:
sentencia2;
break;
case constante_n:
sentencia_n;
break;
default:
sentencias;
break;

En esta sentencias el case solamente evalúa una expresión y no mas aunque puede llevar n número de case, pero son un gran número se recomienda usar ciclos. Estas expresiones solo puede ser de tipo entero y de un solo carácter, al igual las constantes que se colocan.
Si el valor de la expresión es igual a alguna de las constantes, se ejecutará el bloque de instrucciones hasta encontrar la instrucción break, de lo contrario pasa al siguiente bloque y si no cumple ninguno de los bloques entonces se ejecuta las sentencias del default.

Estructuras repetitivas
También conocidas como estructuras iterativas o bucles, permiten ejecutar un conjunto de instrucciones ( cuerpo del bucle ) mientras se cumpla una determinada condición; cada repetición de secuencias de instrucciones se conoce como iteración.

Estructura de repetición WHILE:
Esta estructura primero verifica la condición y luego ejecuta la acción. La acción puede ser una acción simple o una acción compuesta ( bloque de instrucciones encerradas entre llaves ).

Estructura de repetición DO WHILE:
Este tipo de estructura primero ejecuta la acción y luego verifica la condición. La acción puede ser simple o compuesta.
Estructura de repetición FOR:

Este tipo de estructuras incluye un contador como parte de su estructura, lo cual, quiere decir que se conoce el número de veces que se repetirá el cuerpo del bucle.

HISTORIA DE LA PROGRAMACION ORIENTADO OBJETOS


La Programación Orientación a Objetos (P.O.O.) surge en Noruega en 1967 con un lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en el centro de cálculo noruego.
Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y subclases (conceptos muy similares a los lenguajes Orientados a Objetos de hoy en día).
El nacimiento de la Programación Orientación a Objetos en Europa pasó inadvertido para gran parte de los programadores. Hoy tenemos la Orientación a Objetos como un niño de 33 años al que todos quieren bautizar.
Uno de los problemas de inicio de los años setentas era que pocos sistemas lograban terminarse, pocos se terminaban con los requisitos iniciales y no todos los que se terminaban cumpliendo con los requerimientos se usaban según lo planificado. El problema consistía en cómo adaptar el software a nuevos requerimientos imposibles de haber sido planificados inicialmente.
Este alto grado de planificación y previsión es contrario a la propia realidad. El hombre aprende y crea a través de la experimentación, no de la planeación. La Orientación a Objetos brinda estos métodos de experimentación, no exige la planificación de un proyecto por completo antes de escribir la primera línea de código.
En los 70’s científicos del centro de investigación en Palo Alto Xerox (Xerox park) inventaron el lenguaje Small talk que dio respuesta al problema anterior (investigar no planificar).
Small talk fue el primer lenguaje Orientado a Objetos puro de los lenguajes Orientados a Objetos, es decir, únicamente utiliza clases y objetos (Java usa tipos de datos primitivos, o bien los Wrappers que son clases que encapsulan tipos de datos primitivos).
Quien tuvo la idea fue D. Parnas cuando propuso la disciplina de ocultar la información. Su idea era encapsular cada una de las variables globales de la aplicación en un solo módulo junto con sus operaciones asociadas, sólo mediante las cuales se podía tener acceso a esas variables.
El resto de los módulos (objetos) podían acceder a las variables sólo de forma indirecta mediante las operaciones diseñadas para tal efecto.

En los años 80’s Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++ que soporta la programación Orientada a Objetos.
En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como Objective C, Common Lisp Object System (CIOS), object Pascal, Ada y otros.
Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en la comunidad de desarrollo de software. El desarrollo técnico del hardware y su disminución del costo fue el detonante final. Con más computadoras al alcance de más personas más programadores, más problemas y más algoritmos surgieron.
En el inicio de los 90’s se consolida la Orientación a Objetos como una de las mejores maneras para resolver problemas. Aumenta la necesidad de generar prototipos más rápidamente (concepto RAD Rapid Aplication Developments). Sin esperar a que los requerimientos iniciales estén totalmente precisos.
En 1996 surge un desarrollo llamado JAVA (extensión de C++). Su filosofía es aprovechar el software existente. Facilitar la adaptación del mismo a otros usos diferentes a los originales sin necesidad de modificar el código ya existente.
En 1997-98 se desarrollan herramientas ‘CASE’ orientadas a objetos (como el diseño asistido por computadora).
Del 98 a la fecha se desarrolla la arquitectura de objetos distribuidos RMI, Corba, COM, DCOM.

Actualmente la orientación a objetos parece ser el mejor paradigma, no obstante, no es una solución a todos los problemas. Trata de eliminar la crisis del software. Entre los creadores de metodologías orientadas a objetos se encuentran: G. Booch, Rambaught, Ivar Jacobson y Peter Cheng.