Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unidad 1

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 9

Estructura de Datos y Algoritmos

Unidad 1
Algoritmos

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Algoritmo
Definición 1:
Un algoritmo es una serie de pasos lógicos, que se estructuran para resolver un problema.
Generalmente un algoritmo se compone de sentencias simples y sentencias de control.

Definición 2:
Siguiendo al concepto de informática, hoy afrontamos el concepto de algoritmo. La historia de
la informática señala a Abu Abdullah Muhammad bin Musa al-Khwarizmi, una de las grandes
figuras de la matemática árabe medieval como descubridor del concepto de algoritmo. En su
obra "aljabar wa-al-muqabala" sienta las bases del algebra, cuyo nombre procede del comienzo
del título, así como "algoritmo" procede del nombre del autor, al-Khwarizmi.

Podemos definir algoritmo como un conjunto de pasos o instrucciones finito que se deben
seguir para realizar una determinada tarea.

Definición 3:
En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo es una
lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un
problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos
se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la
algoritmia, (proviene del latín, dixit algorithmus y éste a su vez del matemático persa al-
Jwarizmi).

Definición 4:

Si bien los allegados a la informática saben que un algoritmo es un conjunto de operaciones


ordenadas de modo tal en que puedan resolver un problema, son pocos los saben que el
término deriva del matemático astrónomo y geógrafo musulmán al-Jwarizmi.

Muhammad ibn Musa al-Jwarizmi vivió entre los años 780 y 850, aparentemente nació en la
ciudad persa de Jwarizm (actual Jiva, en Uzbekistán), y fue el matemático más importante de
su época.

Luego el latín tomó el término al-Jwarizmi y se transformó en "dixit algorithmus", para derivar ya
en nuestra lengua en Algoritmo. La ciencia que estudia los algoritmos se llama Algoritmia,
siendo la famosa Máquina de Turing la que ha formalizado sus conceptos en un modelo
computacional.

Los algoritmos tienen algo en común con las funciones matemáticas: reciben una entrada y
producen una salida, pero para que pueda ser considerado como algoritmo debe ser eficiente
(encontrar una solución en el menor tiempo posible), finito (posee un número determinado de
pasos) y definido (se llega al mismo resultado si se sigue el mismo proceso más de una vez).

Un ejemplo de algoritmo sería un manual de usuario de un electrodoméstico, también podemos


encontrar algoritmos como el método para resolver un Sistema lineal de ecuaciones creado por
Gauss.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Actualmente pensar en algoritmos nos remite a los programas de computación, pero también
pueden en redes neuronales, circuitos eléctricos o aparatos mecánicos.

Definición 5:
Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción
determinada. Por ejemplo, una receta de cocina sería un algoritmo que indica el número de
pasos necesarios para preparar una comida.

Definición 6:
Un algoritmo se puede definir como una secuencia de instrucciones que representan un modelo
de solución para determinado tipo de problemas. O bien como un conjunto de instrucciones que
realizadas en orden conducen a obtener la solución de un problema.

Para realizar un programa es conveniente el diseño o definición previa del algoritmo. El diseño
de algoritmos requiere creatividad y conocimientos profundos de la técnica de programación.
Luís Joyanes Aguilar, programador experto y autor de muchos libros acerca de lógica y
programación nos dice “en la ciencia de la computación y en la programación, los algoritmos
son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de
Programación es sólo un medio para expresar un algoritmo y una computadora es sólo un
procesador para ejecutarlo”.

LoS algoritmos son independientes de los lenguajes de programación. En cada problema el


algoritmo puede escribirse y luego ejecutarse en un lenguaje diferente de programación. El
algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de
programación.

En conclusión existe una variedad de definiciones, en


libros, páginas Web, etc.

Pero cada uno de las definiciones se asemeja para poder


tener una idea clara de la definición de un Algoritmo.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Características de los algoritmos

 Preciso. Definirse de manera rigurosa, sin dar lugar a ambigüedades.

 Definido. Si se sigue un algoritmo dos veces, se obtendrá el mismo


resultado.

 Finito. Debe terminar en algún momento.

 Puede tener cero o más elementos de entrada.

 Debe producir un resultado. Los datos de salida serán los resultados de


efectuar las instrucciones.

Se concluye que un algoritmo debe ser suficiente para resolver el problema.

Entre dos algoritmos que lleven a un mismo objetivo, siempre será


preferible el más corto (se deberá analizar la optimización de tiempos y / o
recursos).

Etapas para la solución de un problema por medio del computador (1)

1. Análisis del problema, definición y delimitación (macroalgoritmo).


Considerar los datos de entrada, el proceso que debe realizar el
computador y los datos de salida.

2. Diseño y desarrollo del algoritmo (se utiliza pseudocódigo, escritura


natural del algoritmo, diagramas de flujo, etc. )

3. Prueba de escritorio. Seguimiento manual de los pasos descritos en el


algoritmo. Se hace con valores bajos y tiene como fin detectar errores.

4. Codificación. Selección de un lenguaje de programación y digitación del


pseudocódigo haciendo uso de la sintaxis y estructura gramatical del
lenguaje seleccionado.

5. Compilación o interpretación del programa. El software elegido


convierte las instrucciones escritas en el lenguaje a las comprendidas
por el computador.

6. Ejecución. El programa es ejecutado por la máquina para llegar a los


resultados esperados.

7. Depuración (debug). Operación de detectar, localizar y eliminar errores


de mal funcionamiento del programa.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

8. Evaluación de resultados. Obtenidos los resultados se los evalúa para


verificar si son correctos. (Un programa puede arrojar resultados
incorrectos aún cuando su ejecución no muestra errores).

Etapas para la solución de un problema por medio del computador (2)

Para lograr resolver cualquier problema se deben seguir básicamente los


siguientes pasos:

Análisis del Problema. en este paso se define el problema, se lo comprende y


se lo analiza con todo detalle.

Diseño del Algoritmo. se debe elaborar una algoritmo que refleje paso a paso
la resolución del problema.

Resolución del Algoritmo en la computadora. se debe codificar el algoritmo.

Algoritmos cualitativos y algoritmos cuantitativos

Algoritmos cualitativos:

Un algoritmo es cualitativo cuando en sus pasos o instrucciones no están


involucrados cálculos numéricos. Las instrucciones para armar un aeromodelo,
para desarrollar una actividad física o encontrar un tesoro, son ejemplos de
algoritmos cualitativos.

Diseñar el algoritmo para estos casos (Salón de Clases)

Tomar mate
Utilizar una guía telefónica
Cocinar siguiendo una receta
Cambiar una llanta de automóvil
Buscar una palabra en el diccionario

Algoritmos cuantitativos

Los algoritmos cuantitativos involucran cálculos numéricos.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Diseñar el algoritmo para estos casos (Salón de Clases)

Solución de un factorial
Solución de una ecuación de segundo grado
Encontrar el mínimo común multiplicador.

Robustez de un Algoritmo

Quiere decir que un algoritmo debe contemplar todas las posibles facetas del
problema que queremos resolver, al elaborar un algoritmo no se nos debe
escapar ningún detalle que provoque un funcionamiento malo nuestro
algoritmo. Si logramos construir un algoritmo robusto, cualquier giro inesperado
del problema será controlado por el algoritmo, es decir, debe ser flexible a
cambios.

Correctitud de un Algoritmo: Es correcto cuando da una solución al problema


a tratar y cumple con todos lo requerimientos especificados tal que cumplamos
con los objetivos planteados.

Completitud de un Algoritmo: Cuando un algoritmo cuenta con todos los


recursos para poder llegar a una solución satisfactoria.

Eficiencia y Eficacia de un Algoritmo

Un algoritmo es eficiente cuando logra llegar a sus objetivos planteados


utilizando la menor cantidad de recursos posibles, es decir, minimizando el uso
memoria, de pasos y de esfuerzo humano.

Un algoritmo es eficaz cuando alcanza el objetivo primordial, el análisis de


resolución del problema se lo realiza prioritariamente.

Puede darse el caso de que exista un algoritmo eficaz pero no eficiente, en lo


posible debemos de manejar estos dos conceptos conjuntamente.

Técnicas de representación

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Para la representación de un algoritmo, antes de ser convertido a lenguaje de


programación, se utilizan algunos métodos de representación escrita, gráfica o
matemática. Los métodos más conocidos son:
.
Diagramación libre (Diagramas de flujo)
Diagramas Nassi-Shneiderman
Pseudocódigo
Lenguaje natural (español, inglés, etc.)
Fórmulas matemáticas

El lenguaje natural puede no ser suficientemente preciso, permitiendo


ambigüedades, obteniendo una descripción no del todo satisfactoria. Las
fórmulas, propias del lenguaje matemático, son un buen sistema de
representación, pero no suelen ser fáciles de convertir en programas. Por lo
tanto, trataremos en este curso los tres primeros modelos.

Diagramas de flujo

DEFINICION 1:

Es quizás la forma de representación más antigua. Algunos autores suelen


llamarlos también como diagramas de lógica o flujogramas.

Diagramas de flujo

DEFINICION 2:

Un diagrama de flujo es una representación gráfica de un algoritmo o de una


parte del mismo. Los diagramas de flujo ayudan en la comprensión de la
operación de las estructuras de control (Si, Mientras).

La ventaja de utilizar un algoritmo es que se lo puede construir


independientemente de un lenguaje de programación, pues al momento de
llevarlo a código se lo puede hacer en cualquier lenguaje.

Dichos diagramas se construyen utilizando ciertos símbolos de uso especial


como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos
están conectados entre sí por flechas, conocidas como líneas de flujo. A
continuación se detallarán estos símbolos.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

Símbolos del diagrama de flujo

Terminal. Representa el inicio y fin de un programa.

Proceso. Son acciones que el programa tiene que realizar

Decisión. Indica operaciones lógicas o de comparación, así


como expresiones

Entrada / Salida. Nos permite ingresar datos, de un


periférico, así como mostrarlos

Salida. Es usado para mostrar datos o resultados

Conector. Se coloca al principio y fin de un pedazo de


programa, enlaza dos partes cualquiera de un programa

Línea de flujo o indicador de dirección.

Ing. Hans Salazar Salazar


Estructura de Datos y Algoritmos

EJERCICIOS

Elaborar los siguientes algoritmos

1. Una universidad ofrece un curso que prepara a los estudiantes para el


examen de obtención de licencia de corredor de bienes raíces. El año
anterior, varios de los estudiantes que completaron el curso presentaron el
examen para obtener la licencia. Naturalmente la Universidad desea saber
que resultados obtuvieron sus estudiantes en el examen. Se nos ha pedido
escribir un programa que resuma los resultados recibidos de una lista de 10
estudiantes. Junto a cada nombre se anoto un 1 si el estudiante aprobó el
examen y un 2 si reprobó. Exhiba un resumen de los resultados de la
prueba indicando el número de estudiantes que aprobaron y el número de
estudiantes que reprobaron. Si más de Ocho estudiantes aprueban el
examen la Universidad será capaz de aumentar la colegiatura.
Exhibir el mensaje "Teclee resultado" en la pantalla cada vez que el
programa solicite otro resultado de examen.

2. Dada las horas trabajadas de una persona y el valor por hora. Calcular su
salario e imprimirlo.

3. A un trabajador le pagan según sus horas trabajadas y la tarifa está a un


valor por hora. Si la cantidad de horas trabajadas es mayor a 40 horas, la
tarifa por hora se incrementa en un 50% para las horas extras. Calcular el
salario del trabajador dadas las horas trabajadas y la tarifa.

4. A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o


igual a 1000, por encima de 1000 y hasta 2000 el 5% del adicional, y por
encima de 2000 el 3% del adicional. Calcular el descuento y sueldo neto
que recibe el trabajador dado su sueldo.

5. Dado un tiempo en segundos, calcular los segundos restantes que le


correspondan para convertirse exactamente en minutos.

6. Dado N notas de un estudiante calcular:


a) Cuantas notas tiene reprobadas.
b) Cuantas notas aprobadas.
c) El promedio de notas.
d) El promedio de notas aprobadas y reprobadas.

Ing. Hans Salazar Salazar

También podría gustarte