jueves, 23 de abril de 2020

ISABELA GONZÁLEZ
DAVID CARVAJAL

¿CÓMO SE ELABORA UN ALGORITMO?


PSEUDOCÓDIGOS


DIAGRAMA DE FLUJO


FORMAS DE REPRESENTAR ALGORITMOS

Lenguaje natural
Son aquellas lenguas que han sido generadas espontáneamente en un grupo de hablantes con propósito de comunicarse, a diferencia de otras lenguas, como puedan ser una lengua construida, los lenguajes de programación o los lenguajes formales usados en el estudio de la lógica formal, especialmente la lógica matemática.
Los algoritmos escritos en este lenguaje se caracterizan por seguir un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar para resolver un problema determinado.
Los inconvenientes de escribir algoritmos en este lenguaje son: la ambigüedad, la no universalidad y la amplitud del mismo lo cual genera errores y no puede ser interpretado correctamente por el computador.

Pseudocódigo
Es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.
El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.

Diagramas de Flujo
Son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Símbolos para representar diagramas de flujo

Diagramas estructurados (Nassi-Schneiderman)
  • El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.
  • Los diagramas estructurados, son una técnica que permite formular algoritmos mediante una representación geométrica y de asignación de espacios de un bloque específico.



TIPOS DE OPERADORES



Operadores lógicos
Muy utilizados en InformáticaLógica proposicional y Álgebra booleana, entre otras disciplinas. Los operadores lógicos nos proporcionan un resultado a partir de que se cumpla o no una cierta condición, producen un resultado booleano, y sus operandos son también valores lógicos o asimilables a ellos (los valores numéricos son asimilados a cierto o falso según su valor sea cero o distinto de cero).
 🥇▷【 Operadores lógicos - Lenguaje de programación C 】

Operadores gráficos
Los operadores lógicos se utilizan para usar comparaciones numéricos o no dando como resultado un valor true (verdaderos) o false (falso) a partir de que se cumpla o no una cierta condición, llamados booleano, todos los días utilizamos operadores lógicos un ejemplo cuando hablamos o cuando planeamos una actividad que vamos hacer durante el día, esto quiere decir que los operadores lógicos suelen utilizarse para armar condiciones para las diferentes estructuras de decisión como así también para los bucles
Los operadores lógicos pueden crear condiciones compuestas en una fórmula, como que se deben cumplir dos o más condiciones para elegir un determinado método de cálculo. Con los operadores lógicos, puede describir estas combinaciones de condiciones.
AND (Y) verdadero solo si los dos elementos son verdaderos
OR (O) verdadero si cualquiera de los dos elementos es verdadero
NOT (NEGACION) cambiar el valor de falso.
 Operadores lógicos en Arduino - Panama Hitek

Operadores aritméticos
Los operadores Aritméticos toman valores numéricos (ya sean literales o variables) como sus operandos y retornan un valor numérico único. Los operadores aritméticos estándar son adición o suma (+), sustracción o resta (-), multiplicación (*), y división (/).
Estos operadores trabajan al igual que en la mayoría de otros lenguajes de programación, excepto el operador /, que retorna una división de punto flotante en JavaScript, no una división truncada como en lenguajes tales como C o Java.
En la suma La operación suma se produce mediante la suma de número o strings concatenados.
Ejemplo: 1+2 // 3,   
             False + false // 0
             True + 1 // 2

La resta se produce cuando se sustraen el resultado de los operadores, produciendo su diferencia.
Ejemplos:      5-3 // 2 
                       3-5 // -2
                       Foo – 3  // NaN

La multiplicación produce el producto de la multiplicación de los operandos.
Ejemplos:   2*2 // 4
                   -2*2 // -4
                    Infinito*infinito // infinito

La división se produce el cociente de la operación donde el operando izquierdo es el dividendo y el operando derecho es el divisor.
 Ejemplos:   1 / 2   // devuelve 0.5 a JavaScript  
                    1/ 2   // devuelve 0 en java
                     1.0 / 2.0   // devuelve 0.5 en java y JavaScript

Operadores relacionales  
Los operadores relacionales nos permiten comparar expresiones de tipos compatibles, devolviendo un resultado de tipo lógico: la comparación es verdadera o falsa. Por ejemplo, la expresión (3 + 4) > 12 sería falsa, ya que 7 es menor que 12.
Operadores Relacionales

Los operadores de relación se pueden aplicar a cualquiera de los tipos que hemos visto hasta ahora:

  • entero

  • real

  • lógico

  • carácter y cadena

Las operaciones relacionales o de comparación entre números reales y enteros no merecen mayor comentario, las matemáticas dictan las reglas. Si comparamos expresiones lógicas, lo cual no tiene mucho sentido, hay que saber que el valor falso se considera menor que el valor verdadero.

ALGORITMOS SEGÚN SU ESTRATEGIA

Algoritmos probabilísticos
Es un algoritmo donde el resultado o la manera en que se obtiene el resultado dependen de la probabilidad. A veces también son llamados algoritmos aleatorios. 
En algunas aplicaciones el uso de este tipo de algoritmos es natural, como por ejemplo cuando se simula el comportamiento de algún sistema existente o planeado a lo largo de un tiempo. En este caso el resultado es fortuito.
Ejemplo: decidir si un nº de 1000 cifras es primo.
EPS- UAM, Un algoritmo probabilístico para optimizar soluciones ...

Algoritmos cualitativos
Es el algoritmo más simple y también el más usado. Pues, se basa en la cotidianidad de las personas y en su rutina diaria. Empieza desde que se despiertan, cepillan, comen, trabajan y termina al acostarse.
Pasos para cepillar los dientes - Imagui

Algoritmos heurísticos
Estos algoritmos son aquellos que encuentran soluciones entre todas las posibles, pero no garantizan que la mejor de estas será encontrada. Por ese motivo son considerados como algoritmos aproximados o no precisos.
Usualmente encuentran una solución cercana a la mejor, y además la encuentran rápida y fácilmente. Generalmente este tipo de algoritmos se usa cuando es imposible encontrar una solución por la vía normal.
Ejemplos. Un problema de decisión puede ser formulado de manera tal que dada una entrada requiere una respuesta simple: “si” o “no”.
PPT - Búsqueda Informada PowerPoint Presentation, free download ...

Algoritmo de escalada
Es un algoritmo descendiente, que inicia con soluciones insatisfactorias y a medida que los errores se corrigen, va escalando hasta llegar al resultado correcto. 
Algoritmo hill climbing - Wikipedia, la enciclopedia libreAlgoritmia/Algoritmos de escalada - Wikilibros

Algoritmo voraz
Se aplica en problemas de optimización, mediante soluciones voraces. Es usado a través de decisiones lógicas y analiza cada paso como único, para obtener un resultado global. En este algoritmo se debe tener sumo cuidado, porque luego de implementar un paso no se puede regresar o corregir. Es de esos que cambian el futuro sin poder devolver el tiempo.
Algoritmo voraces

Algoritmo determinista
Este algoritmo es completamente predictivo si se conocen sus entradas. Dicho de otra forma, si se conocen las entradas del algoritmo siempre producirá la misma salida, y la máquina interna pasará por la misma secuencia de estados. 
Técnicas de diseño de algoritmos