domingo, 10 de noviembre de 2019

DECISIONES

DECISIONES


Las sentencias de decisión o también llamadas de CONTROL DE FLUJO son estructuras de control que realizan una pregunta la cual retorna verdadero o falso (evalúa una condicion) y selecciona la siguiente instrucción a ejecutar dependiendo la respuesta o resultado.

En algún momento dentro de nuestros algoritmos, es preciso cambiar el flujo de ejecución de las instrucciones, es decir, el orden en que las instrucciones son ejecutadas. Muchas de las veces tenemos que tomar una decisión en cuanto a que se debe ejecutar basándonos en una respuesta de verdadero o falso (condicion).
La ejecución de las instrucciones incluyendo una estructura de control como el condicional funcionan de esta manera:

*Las instrucciones comienzan a ejecutarse de forma secuencial (en orden) y cuando se llega a una estructura condicional, la cual esta asociada a una condicion, se decide que camino tomar dependiendo siempre del resultado de la condicion siendo esta falsa o verdadera.

*Cuando se termina de ejecutar este bloque de instrucciones se reanuda la ejecución en la instrucción siguiente a la de la condicional.




PSEUDOCODIGO

PSEUDOCODIGO

El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es la traducción de un lenguaje de programación) relativamente fácil. Los lenguajes APL Pascal y Ada se utilizan aveces como lenguajes de especificación de algoritmos.
Se considera un primer borrador, dado que el psedocódigo tiene que traducirse posteriormente a un lenguaje de programación. El Pseudocódigo no puede ser ejecutado por una computadora. La ventaja del pseudocódigo es que en su uso, la planificación de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especifíca.
El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en inglés - similares a sus homonimas en los lenguajes de programación - tales como start, end, stop, if - the - else, while - end, repeat - until, etc. La escritura de pseudocódigo exige normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas.
Una representación de pseucódigo - en inglés - de un problema de cálculo del salario neto de un trabajador es la siguiente:


El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (en español inicio, fin). Entre estas palabras solo se escribe una instrucción o accion por línea.
La línea prodecida por // se denomina comentario. Es una información al lector del programa, y no realiza ninguna instrucción ejecutable, solo tiene efecto de documentación interna del programa. Algunos autores suelen utilizar corchetes o llaves.
Un ejemplo aclaratorio del uso de pseucódigo podría ser un sencillo algoritmo del arranque matinal de un coche.


DIAGRAMAS DE FLUJO.

DIAGRAMAS DE FLUJO

Un diagráma de flujo, es una tecnica de representación de algoritmos más antigua y a la vez más utilizada aunque su empleo ha disminuido considereblamente, sobre todo, desde la aparición de lenguajes de programación más estructurados. Un diagráma de flujo es un diagráma que utiliza los símbolos (cajas) estándar y que tiene los pasos de algoritmo escritos en esas cajas unidos por flechas denominadas lineas de flujo, que indican la secuencia que se debe ejecutar.

Diagráma de flujo básico.

Figura 1. Diágrama de flujo.


Este es un diagráma de flujo básico.  Este diagráma representa la resolución de un programa que deduce el salario neto a partir de la lectura del nombre, horas trabajadas, precio de la hora y sabiendo que los impuestos aplicados son el 25 por 100 sobre el salario bruto.

Plantilla para diagrámas de flujo.


Figura 2. Plantilla tipíca para diagrámas de flujo.

 En esta figura se representa una platilla de dibujo tipíca donde se contempla la mayoria de los simbolos utilizados en el diagráma; sin embargo los simbolos más utilizados representan: 

*Proceso *Fin *Decisión *Entrada/Salida  *Conectores *Dirección del flujo

El diagráma de flujo de la figura 1 resume sus características.

-Existe una caja etiquetada "inicio", que es de tipo elíptico.
- Existe una caja etiquetada "fin", de igual forma que lo anterior.
-Si existen otras cajas, normalmente son rectangulares, tipo rombo o paralelogramo (el resto de las figuras solo se utilizan en diagrámas de flujo generales o de detalle y no siempre son imprescindibles).

SIMBOLOGIA 

  

Simbolos de diagráma de flujo y su función.

ALGORITMO

ALGORITMO

Un algoritmo es un metódo para resolver un problema.

CARACTERISTICAS

Las caracteristicas fundamentales que debe cumplir todo algoritmo son: 

*Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
*Un algoritmo, debe estar bien definido. Si se sigue el algoritmo dos veces se debe obtener el mismos resultado cada vez.
*Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; osea, debe tener un número finito de pasos.

DEFINICION

La definición de un algoritmo debe describir tres partes: entrada, proceso, salida. 
En el algoritmo de receta de cocina se tendrá: 



DISEÑO DE ALGORITMO

Una computadora no tiene capacidad para solucionar problemas más que cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la máquina, como ya conocemos, el algoritmo.
La información proporcionada al algoritmo constituye su entrada y la información producida por el algoritmo constituye su salida. 
Los problemas complejos se pueden resolver más eficazmente con la computadora cuando se rompen en subproblemas que sean más fáciles de solucionar. Es el método de "Divide y vencerás", consiste en dividir un problema complejos en otro más simples. 
La descomposición del problema original en problemas más simples y a continuación la división de estos subproblemas en otros más simples, que puedan ser implementados para su solución en la computadora se denomina Diseños descendente.
Tras la primera descripción estos se amplían en una descripción más detallada con más pasos especifícos, este proceso se denomina refinamiento


ESCRITURA DE ALGORITMOS 

El sistema para describir ("escribir") un algoritmo consiste en realizar paso a paso con un lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un método o conjunto de reglas para solucionar un problema. En cálculo elementales estas reglas tienen las siguientes propiedades:

*Deben ir de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente.
*Solo puede ejecutarse una operación a la vez.
El flujo de control usual de un algoritmo es secuencial; consideremos al algoritmo  que responde a la pregunta:

¿Qué hacer para ver la película de Harry Potter? 

La respuesta es muy sencilla y puede ser descrita en forma de algoritmo generaal de modo similar a: 

-Ir al cine
-Comprar una entrada
-Ver la película 
-Regresar a casa

El algoritmo consta de 4 acciones básicas, cada una de las cuales debe ser ejecutada, antes de realizar el siguiente paso. 

REPRESENTACION GRAFICA DE LOS ALGORITMOS

Para representar un algoritmo, se debe utilizar algún metódo que permita independizar dicho algoritmo de la programación de lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codifcado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado gráfica o númericamente, de modo que las sucesivas acciones no dependan de la sintexis de ningún lenguaje de programación, si no que la descripción pueda servir fácilmente para su transformación en un programa, es decir, su codificación.
Los métodos usuales para representar un algoritmo son: 

1. Diagráma de Flujo.
2. Diagráma N-S (Nassi-Schneiderman)
3. Lenguaje de especificación de algoritmo: Pseudocódigo.
4. Lenguaje españos, inglés...
5. Fórmulas.

Ejemplo de diagráma de flujo.