Aplicacion de estandare de calidad en la construccion de un algoritmo
1. REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR
PARA LA EDUCACIÓN UNIVERSITARIA
PNF-INFORMATICA
UNIVERSIDAD POLITÉCNICA TERRITORIAL ALONSO GAMERO
Aplicaciones de estándares
de calidad en la construcción de
algoritmos
Realizado por:
Jonmar Rodríguez
2. INTRODUCCIÓN
El acto de diseñar un algoritmo puede considerarse como una tarea que difícilmente
podrá ser del todo automatizada. Es decir que todo problema algorítmico resulta
inmediato de resolver, otros son bastante complejos. La investigación en esta área ha
permitido descubrir un conjunto de métodos o esquemas de diseño hacia los cuales
puede orientarse la realización de muchos algoritmos. No obstante, idear un algoritmo
continúa siendo una labor bastante creativa donde los conocimientos y la experiencia
del propio diseñador tienen un papel fundamental. Una forma de facilitar esta labor
consiste en recurrir a técnicas conocidas de diseño de algoritmos, es decir, a esquemas
muy generales que pueden adaptarse a un problema particular al detallar las partes
generales del esquema, requiere un análisis minucioso del problema de forma que la
solución se vaya construyendo en etapas. Aun así, hay problemas cuya solución no
puede hallarse sino mediante un proceso de búsqueda, a pesar de lo complejas que
son las operaciones. Por último, Si el hábil programador dispone de un recetario de
algoritmos de donde poder seleccionar el más adecuado para cada problema, su tarea
se simplifica. Aprender los principios básicos del diseño de algoritmos podemos
preguntarnos por un método aceptable. El mas entendido, y quizás el mejor, es
organizar el diseño sobre un esquema de algoritmo o una técnica de diseño que haya
demostrado su utilidad para otros problemas. Este método de trabajo es practicable,
puesto que existe un número reducido de esquema y técnicas de diseño. El
conocimiento de técnicas de diseño es solo un primer paso para el diseñador, que debe
completarse con otros conocimientos y sobre todo, con la experiencia.
3. Construcción a Estándares de Calidad
En el Diseño de Algoritmos y Construcción de Programas. Sin importar cualquiera
que sea el tipo de software a ser desarrollado sea de sistemas (Son programas que
sirven a otros programas en el trabajo de desarrollo como compiladores, editores, ..),
tiempo real (Software encargado de analizar datos del mundo en forma real tales
como análisis de datos, control automatizado, monitoreo de datos), gestión (a esta
categoría se incluye el software comercial a nivel empresarial nóminas, inventarios),
ingeniería y científico (es software que posee un amplio manejo numérico usado en
biología, astronomía, CAD, …), empotrado (software que se encuentra residente en
memoria, tales como : controles automáticos en los vehículos, sistemas de
background, partes del sistema operativo, …), computación personal (software
comercial de uso local como procesadores de texto, hojas electrónicas, navegadores
web, calendarios, agendas, recetarios, …), inteligencia artificial (software de
procesamiento especial sistemas expertos, sistemas basados en el conocimiento,
generalmente no usan algoritmos numéricos). Todos los tipos de software
mencionados requieren que los analistas, diseñadores y desarrolladores apliquen
características y elementos de calidad para que se logren productos a las
necesidades del usuario, estas necesidades se comienzan a encontrar un camino de
solución a través de la aplicación de elementos de calidad, así se presentan dos de
los más valiosos como son la eficiencia y la eficacia .
4. Forma de realizar un algoritmo
Los algoritmos pueden ser realizados de muchas formas o maneras,
incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes
de programación entre otros. Las descripciones en lenguaje natural tienden a
ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita
muchas ambigüedades del lenguaje natural. Dichas expresiones son formas
más estructuradas para representar algoritmos; no obstante, se mantienen
independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
1. Descripción de alto nivel. Se establece el problema, se selecciona un
modelo matemático y se explica el algoritmo de manera verbal, posiblemente
con ilustraciones y omitiendo detalles.
2. Descripción formal. Se usa pseudocódigo para describir la secuencia
de pasos que encuentran la solución.
3. Implementación. Se muestra el algoritmo expresado en un lenguaje de
programación específico o algún objeto capaz de llevar a cabo instrucciones.
5. Ejemplo de Algoritmo
Podemos idear un algoritmo para un
determinado proceso, así como también
hacerlo en diferentes formas.
Por ejemplo: Cómo podríamos encontrar el
promedio de un conjunto de números?
Una posible solución sería:
1.- Sumar los números dados.
2.- Contar dichos números.
3.- Dividir el resultado obtenido en el punto 1
entre el resultado obtenido en el punto 2.
6. Otra clase de ejemplo de Algoritmos, sería el de una llamada telefónica, o el proceso para
efectuar un viaje en el Metro de Caracas, o la obtención de la licencia para conducir o el cambio de un
caucho que esté bajo de aire, etc.; en fin, hay muchas formas de aplicar los algoritmos en cuestiones
cotidianas descomponiendo la acción en pasos lógicos, como es el caso de una llamada desde una
cabina de un teléfono público:
1.- Inicio
2.- Descolgar el teléfono
3.- Esperar la señal digital.
4.- Preguntamos si está dañado. Si lo está: Vamos al paso 5.
Si no lo está: Vamos al paso 8.
5.- Vociferar una palabra de mal gusto y fruncir el ceño.
6.- Colgar.
7.- Fin.
8.- Digitar los números.
9.- Verificamos si suena ocupado. Si suena ocupado: Vamos al paso 11.
Si no lo está: Vamos al paso 13.
10.-Insistir digitando los números.
11.- Ir al paso 8.
12.- Verificamos si contestan. Si contestan: Vamos al paso 14
Si no contestan: Vamos al paso 21.
13.- Preguntamos si se encuentra la persona.
Si se encuentra: Vamos al paso 14.
Si no se encuentra: Vamos al paso 17.
14.- Hablar lo deseado.
15.- Colgar.
16.- Fin.
17.- Pensar algo malo.
18.- Tomar un café y tranquilizarse.
19.- Ir al paso 15.
7. Forma de Trazar un Algoritmo
La traza de un Algoritmo se puede definir como la ejecución manual de forma
secuencial de las sentencias que lo componen. La función principal que posee
realizar la traza de un algoritmo es la de comprobar que éste funciona
correctamente o para realizar la etapa de depuración en la que se intenta
corregir errores, simplificar el algoritmo al máximo e incrementar su eficacia y
velocidad.
Lenguaje natural (código binario)
Algoritmo Pseudocódigo
Diagrama libre (diagrama de flujo)
8. Diagrama de flujo y Pseudocódigo
Los 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.
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.
El pseudocódigo: (falso lenguaje, el prefijo pseudo significa falso) 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.
9. forma y Técnica de documentación de algoritmos y programa
Todo problema algorítmico es un reto para su diseñador, algunos resultan inmediatos de
resolver, otros son bastante complejos. La investigación en esta área ha permitido descubrir un
conjunto de métodos o esquemas de diseño hacia los cuales puede orientarse la realización de
muchos algoritmos.
No obstante, y a pesar de que resulta mas adecuado en bastantes casos utilizar alguno de
estos esquemas que realizar un diseño desde cero, idear un algoritmo continua siendo una labor
bastante creativa donde los conocimientos y la experiencia del propio diseñador tiene un papel
fundamental.
El diseño de un algoritmo que resuelva un problema es, en general, una tarea difícil. Una
forma de facilitar esta labor consiste en recurrir a técnicas conocidas de diseño de algoritmos, se
decir, a esquemas muy generales que pueden adaptarse a un problema particular al detallar las
partes generales del esquema.
Muchos problemas pueden resolverse buscando una solución fácil y directa pero, a la vez
bastante ineficiente. Este método, llamado de fuerza bruta, puede ser muy directo, pero con un
poco de análisis puede encontrarse algoritmos más eficientes. El esquema mas sencillo quizás
sea el llamado divide y vencerás, basado en la descomposición de un problema en sus
problemas. Otros esquemas requieren un análisis minucioso del problema de forma que la
solución se vaya construyendo en etapas. Si puede preverse que decisión conviene en cada
etapa para producir cierto tipo de mejor resultado, tenemos una solución voraz, si la decisión en
una etapa, solo puede tomarse tras considerar varias soluciones de otras etapas más simples, la
solución es dinámica. Aun así, hay problemas cuya solución no puede hallarse sino mediante un
proceso de búsqueda, a pesar de lo complejas que son las operaciones de búsqueda, su uso
adecuado mediante el esquema de búsqueda con retroceso (o backtracking).
10. Para las representaciones de un algoritmo, antes de ser convertido a lenguaje
de programación, se utilizan algunos métodos de representación escrito,
grafico o matemática. El lenguaje natural puede no ser suficientemente
preciso, permitiendo las ambigüedades, obteniendo una descripción del todo
satisfactoria, las formulas propias del lenguaje matemático, son un buen
sistema de representación pero no solo suelen ser fáciles de convertir en el
programa. Los métodos más conocidos son:
DIAGRAMA LIBRE: Es
quizás la forma de
representación más
antigua. Algunos autores
suelen llamarlos también
como diagramas de lógica
o flujo gramas.
DIAGRAMAS NASSI-
SCHNEIDERMAN:
Corresponde a uno de los
tipos de diagramación
estructurada. Las acciones
se describen en
rectángulos o cajas
sucesivas. Se pueden
escribir diferente acciones
de caja.
PSEUDOCÓDIGO: Es la técnica
que permite expresar la solución
de un problema mediante un
algoritmo escrito en palabras
normales de un idioma, utilizando
palabras imperativas. Es común
encontrar en pseudocódigo
palabras como: inicie, lea,
imprima, sume, divida, calcule,
finalice. No hay un léxico
obligado para el pseudocódigo,
pero con el uso frecuente se han
establecido algunos estándares.
Técnicas de Escritura y Pruebas de Algoritmos
11. CONCLUSIÓN
Los esfuerzos realizados en el mundo por ayudar a estudiantes
y programadores a mejorar la calidad del software que se
diseña. La forma de trazabilidad un buen algoritmo que
asegura que tanto algoritmos como programa resulten legibles
y puedan modificarse fácilmente en caso de necesidad. La
documentación de un algoritmo y programa necesita siempre
de una documentación que permita a los usuarios aprender a
utilizarlos y mantenerlo, La documentación del programa se
puede concretar a manual del usuario y manual de
mantenimiento.