guia 1 daniel bastidas betancourt

7
3.2 ENSAYO SOBRE ALGORITMICA. Como estudiante de Ingeniería en Sistemas, a lo largo de la carrera he tenido que resolver problemas usando algoritmos, pero muy pocas veces nos detenemos a verificar si dicho algoritmo es el más conveniente para resolver el problema, como típicos estudiantes pensamos que si el programa funciona es que ya está resuelto. Una vez que ya tenemos el algoritmo que funciona de manera correcta, primero debemos definir algunos criterios para verificar el rendimiento y comportamiento de dicho algoritmo. Algunos de los criterios a evaluar es que tan simple puede ser usarlo y la manera en que tan eficientemente utiliza los recursos. Ahora bien ¿Cómo determinamos cual es el mejor algoritmo para resolver un problema?; La mejor estrategia seria programas varios algoritmos y ejecutarlos sobre problemas de prueba. Se puede afirmar que un algoritmo es eficiente cuando logra completar la tarea planteada utilizando para ello la menor cantidad de recursos posibles, como minimizar el uso de memoria, el número de pasos y el esfuerzo humano, además el tiempo que tarda en resolver el problema. La eficiencia de un algoritmo tiene dos bases importantes y fundamentales: espacio y tiempo: La eficiencia en espacio puede medirse en función de la cantidad de memoria que se requiere para ejecutar un programa, por otro lado la eficiencia en tiempo se puede medir en términos del tiempo de ejecución del programa, si bien ambas bases dependen en gran medida del tipo y capacidad de la computadora y compilador, trataremos de explicar la eficiencia de los algoritmos y no las limitantes de estos. Como ya hemos mencionado la calidad de un algoritmo puede ser demostrada utilizando varios criterios, uno de los más importantes es el tiempo utilizado en la ejecución del programa, normalmente un problema se puede resolver por métodos distintos, con diferentes grados de eficiencia. En el caso de usar una computadora es importante administrar y limitar el consumo de recursos. Recurso de Tiempo: En el caso de aplicaciones que trabajan en tiempo real es necesario que los cálculos se realicen en el menor tiempo posible, si una aplicación maneja una gran cantidad de información y no se administra adecuadamente pueden necesitar tiempos de ejecución muy largos. Recurso de Memoria: Al trabajar en una computadora se debe tener en cuenta que se tiene un espacio de memoria limitado. Como se mencionó antes el tiempo de ejecución puede depender de diversos factores como son: los datos de entrada que se ingresen, la calidad del código generado, la naturaleza y rapidez del procesador, además de la capacidad del programador para generar el código. El comportamiento de un algoritmo puede cambiar drásticamente para diferentes tipos de entradas de prueba, es decir que el tiempo de ejecución no solo está dado por el tamaño de los datos de entrada. Así suelen estudiarse tres casos para un mismo algoritmo: peor caso, mejor caso y caso medio.

Upload: dancob04

Post on 13-Jul-2016

214 views

Category:

Documents


0 download

DESCRIPTION

Ensayo algoritmica

TRANSCRIPT

Page 1: Guia 1 Daniel Bastidas Betancourt

3.2 ENSAYO SOBRE ALGORITMICA.

Como estudiante de Ingeniería en Sistemas, a lo largo de la carrera he tenido que resolver problemas

usando algoritmos, pero muy pocas veces nos detenemos a verificar si dicho algoritmo es el más

conveniente para resolver el problema, como típicos estudiantes pensamos que si el programa

funciona es que ya está resuelto.

Una vez que ya tenemos el algoritmo que funciona de manera correcta, primero debemos definir

algunos criterios para verificar el rendimiento y comportamiento de dicho algoritmo.

Algunos de los criterios a evaluar es que tan simple puede ser usarlo y la manera en que tan

eficientemente utiliza los recursos.

Ahora bien ¿Cómo determinamos cual es el mejor algoritmo para resolver un problema?; La mejor

estrategia seria programas varios algoritmos y ejecutarlos sobre problemas de prueba. Se puede

afirmar que un algoritmo es eficiente cuando logra completar la tarea planteada utilizando para ello

la menor cantidad de recursos posibles, como minimizar el uso de memoria, el número de pasos y

el esfuerzo humano, además el tiempo que tarda en resolver el problema.

La eficiencia de un algoritmo tiene dos bases importantes y fundamentales: espacio y tiempo: La

eficiencia en espacio puede medirse en función de la cantidad de memoria que se requiere para

ejecutar un programa, por otro lado la eficiencia en tiempo se puede medir en términos del tiempo

de ejecución del programa, si bien ambas bases dependen en gran medida del tipo y capacidad de

la computadora y compilador, trataremos de explicar la eficiencia de los algoritmos y no las

limitantes de estos.

Como ya hemos mencionado la calidad de un algoritmo puede ser demostrada utilizando varios

criterios, uno de los más importantes es el tiempo utilizado en la ejecución del programa,

normalmente un problema se puede resolver por métodos distintos, con diferentes grados de

eficiencia. En el caso de usar una computadora es importante administrar y limitar el consumo

de recursos.

Recurso de Tiempo: En el caso de aplicaciones que trabajan en tiempo real es necesario que los

cálculos se realicen en el menor tiempo posible, si una aplicación maneja una gran cantidad de

información y no se administra adecuadamente pueden necesitar tiempos de ejecución muy largos.

Recurso de Memoria: Al trabajar en una computadora se debe tener en cuenta que se tiene un

espacio de memoria limitado.

Como se mencionó antes el tiempo de ejecución puede depender de diversos factores como son:

los datos de entrada que se ingresen, la calidad del código generado, la naturaleza y rapidez

del procesador, además de la capacidad del programador para generar el código.

El comportamiento de un algoritmo puede cambiar drásticamente para diferentes tipos de entradas

de prueba, es decir que el tiempo de ejecución no solo está dado por el tamaño de los datos de

entrada. Así suelen estudiarse tres casos para un mismo algoritmo: peor caso, mejor caso y caso

medio.

Page 2: Guia 1 Daniel Bastidas Betancourt

El mejor caso puede interpretarse como el algoritmo que llega a concluir la tarea con el menor

número de instrucciones, en el menor tiempo y con la mayor eficiencia en el uso de recursos.

El peor caso representa al algoritmo que puede o no haber llegado a resolver el problema, con el

tiempo de ejecución más prolongado y utilizando una gran cantidad de recursos.

La conclusión es que para poder crear una aplicación que satisfaga las necesidades del usuario,

debemos utilizar el un algoritmo que tenga el menor tiempo de ejecución y que resuelva el problema

con el menor número de instrucciones.

3.3 De dos ejemplos de algoritmos, paso a paso que usted entienda.

Algoritmo de Fibonacci:

Es una secuencia numérica compuesta de la suma de sus dos números predecesores, ejemplo 1, 1,

2, 3, 5. Son los primeros dígitos de la secuencia.

Primero, se comprueba que el número de entrada sea mayor a 0, ya que esta secuencia solo aplica

para números mayores a 0, en caso de ser 1 o 0 devuelve 1. (Este es el caso base para la recursividad)

En caso de ser diferente devuelve la suma de la función misma evaluada para el numero de entrada

-1 y el número de entrada -2, dando como resultado la recursividad, comenzando por sus casos base.

Algoritmo de ordenamiento sobre arreglos variables:

Primero que todo se recorre el arreglo a organizar y si es el primer elemento, se agrega a un nuevo

arreglo que va a ser el organizado en primera posición, luego para el segundo elemento se compara

si es menor al elemento que se agregó, si es menor se agrega antes, y si es mayor se agrega después,

para el tercer elemento en adelante se hace lo mismo, con la diferencia que puede ir en medio de

2 elementos y se repite hasta que se termine de recorrer el arreglo original, y el arreglo respuesta

tenga el mismo número de elementos que el original.

2. ¿Cuáles son los gráficos que se utilizan para los diagramas de flujo?

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 independiente mente 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.

Page 3: Guia 1 Daniel Bastidas Betancourt

Nombre Símbolo Función

Terminal

Representa el inicio y fin de un

programa. También puede representar

una parada o interrupción programada

que sea necesaria realizar en un

programa.

Entrada / salida

Cualquier tipo de introducción de

datos en la memoria desde los

periféricos o registro de información

procesada en un periférico.

Proceso

Cualquier tipo de operación que pueda

originar cambio de valor, formato o

posición de la información almacenada

en memoria, operaciones aritméticas,

de transformaciones, etc.

Decisión

Indica operaciones lógicas o de

comparación entre datos

(normalmente dos) y en función del

resultado de la misma determina

(normalmente si y no) cual de los

distintos caminos alternativos del

programa se debe seguir

Conector Misma

Página

Sirve para enlazar dos partes

cualesquiera de un diagrama a través

de un conector en la salida y otro

conector en la entrada. Se refiere a la

conexión en la misma pagina del

diagrama

Indicador de

dirección o línea

de flujo

Indica el sentido de la ejecución de las

operaciones

Salida

Se utiliza en ocasiones en lugar del

símbolo de salida. El dibujo representa

un pedazo de hoja. Es usado para

mostrar datos o resultados.

Page 4: Guia 1 Daniel Bastidas Betancourt

3. Haga los siguientes ejercicios en pseudocódigo y diagramas de flujo.

a. Leer dos valores y mostrar la suma, la resta, la multiplicación y la división de los dos números.

Tenga en cuenta que la división por cero es imposible.

Proceso EjercicioUno

Escribir "Ingrese el primer numero:"

Leer A

Escribir "Ingrese el segundo numero:"

Leer B

C <- A+B

D <- A-B

E <- A*B

Escribir "El resultado de la suma es: ",C

Escribir "El resultado de la resta es: ",D

Escribir "El resultado de la multiplicacion es: ", E

Si B == 0 Entonces

Escribir "No fue posible hacer la division ya que el segundo operando es 0"

Sino

Escribir "El resultado de la division es: ", A/B

Fin Si

FinProceso

Page 5: Guia 1 Daniel Bastidas Betancourt

b. Solicite dos valores y decir cuál es el número mayor.

Proceso Ejercicio2

Escribir "Ingrese el primer numero:"

Leer A

Escribir "Ingrese el segundo numero:"

Leer B

Si A>B Entonces

Escribir "A es mayor que B"

FinSi

SI A<B Entonces

Escribir "A es menor que B"

Page 6: Guia 1 Daniel Bastidas Betancourt

Sino

Escribir "A es igual que B"

FinSi

FinProceso

c. Leer un valor y decir si el número es mayor que 100, menor que 100 o igual a 100.

Proceso Ejercicio2

Escribir "Ingrese el primer numero:"

Leer A

Si A>100 Entonces

Escribir "A es mayor que 100"

FinSi

SI A<100 Entonces

Escribir "A es menor que 100"

Page 7: Guia 1 Daniel Bastidas Betancourt

Sino

Escribir "A es igual que 100"

FinSi

FinProceso