Buscar

jueves, 1 de octubre de 2015

Conceptos de Algoritmos



Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:


Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones que un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. Descripción de un esquema de comportamiento expresado mediante un repertorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomica lexico Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado.

En un aspecto más general:

Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.
•Una secuencia de pasos que conducen a la realización de una tarea.
•Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.
•Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.

Características de un Algoritmo:

Las características fundamentales que debe cumplir todo algoritmo son:



Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.



Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.



Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna formapara llevar a cabo las operaciones que comprende.



Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.



 Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución

La definición de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.



Ejemplo:
Diseñar un algoritmo para cambiar una llanta a un coche.
Inicio.
Traer una gata.
Levantar el coche con la gata.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
Quitar la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Bajar la gata.
Fin.

Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje, sino de elementos naturales del problema mismo, abstraídos de alguna manera. [Niklaus Wirth, Creador del Lenguaje Pascal]



Algoritmos Cotidianos

Son todos aquellos algoritmos que nos ayudan a resolver problemas diarios y que hacemos casi sin darnos cuenta que estamos siguiendo una metodología para resolverlos. 



Algunos ejemplos son:

Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar el pedido.



Pasos del algoritmo:

Inicio.
Leer el pedido.
Examinar ficha del cliente.
Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido.
Fin.

Lenguajes Algorítmicos

•Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.


La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera :
Lenguaje Natural.
Lenguaje de Diagrama de Flujo.
Lenguaje Natural de Programación.
Lenguaje de Programación de Algoritmos. 


Lenguaje Natural.

Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos especializados de una determinada ciencia,profesión o grupo.



Lenguaje de Diagrama de Flujo.

Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo.



Lenguaje Natural de Programación.

Son aquéllos que están orientados a la solución de problemas que se definen de una manera precisa.
Generalmente son aplicados para la elaboración de fórmulas o métodos científicos.
El lenguaje natural tiene las siguientes características :
Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).
Son precisos y bien definidos.
Utilizan términos familiares al sentido común.
Elimina instrucciones innecesarias.



Lenguaje de Programación de Algoritmos.

Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les conoce también como "Lenguaje de Programación".



Lenguaje de Programación :

Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la máquina.



Técnicas de programación:

Las técnicas de programación constituyen parte fundamental en el proceso de desarrollo e Ingeniería del Software dentro del ámbito informático.
Cada técnica tiene sus propias características, y distintos métodos de resolución de problemas, así como la implementación de estándares de ciertas compañías o instituciones, y es de gran importancia aprender a implementarlas a la hora de adentrarse en la evolución de cualquier proyecto de desarrollo de software.



Las Técnicas de Programación son:


Programación Modular.
Programación Estructurada.
Programación Orientada a Objetos.
Programación basada en modelos matemáticos.






martes, 3 de febrero de 2015

Técnicas para la formulación de algoritmos




Diagrama de Flujo


Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados.

Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. 

Recomendaciones para el diseño de Diagramas de Flujo:


- Se deben de usar solamente líneas de flujo horizontales y/o verticales.

- Se debe evitar el cruce de líneas utilizando los conectores.

- Se deben usar conectores solo cuando sea necesario.

- No deben quedar líneas de flujo sin conectar.

- Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha.

- Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.



Pseudocodigo


Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos.

Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.


Diagramas estructurados (Nassi-Schneiderman)


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.




                           

Click para visualizar mejor la imagen                                                    Click para visualizar mejor la imagen

Síguenos en Facebook