sábado, 31 de mayo de 2008

equipo dinamicas unidad II

UNIDAD II

DESARROLLO DE LA LOGICA ALGORITMICA

2.1. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS.

• Metodología para la resolución de problemasDefinición del Problema.
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Análisis del Problema
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

• Los datos de entrada (inicio).
• Cual es la información que se desea producir (salida)
• Los métodos y fórmulas que se necesitan para procesar los datos.
• Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.


2.2 METODOLOGÍA PARA EL DISEÑO DE SOFTWARE: TOP DOWN, BOTTOM UP, MODULAR Y PROGRAMACIÓN ESTRUCTURADA.

¿Qué hay que saber para construir o elegir una metodología?

La metodología debe ajustarse a los objetivos
2. La metodología debe cubrir el ciclo entero de desarrollo de software.
3. La metodología debe integrar las distintas fases del ciclo de desarrollo
4. La metodología debe incluir la realización de validaciones
5. La metodología debe soportar la determinación de la exactitud del sistema a través del ciclo de desarrollo.
6. La metodología debe ser la base de una comunicación efectiva.
7. La metodología debe funcionar en un entorno dinámico orientado al usuario
8. La metodología debe especificar claramente los responsables de resultados
9. La metodología debe poder emplearse en un entorno amplio de proyectos software
10. La metodología se debe de poder enseñar
11. La metodología debe estar soportada por herramientas CASE
12. La metodología debe soportar la eventual evolución del sistema
13. La metodología debe contener actividades conducentes a mejorar el proceso de desarrollo de software.

Programación modular o top down

• Esta metodología, conocida como modularización ó diseño Top Down, es una de las técnicas más
• importantes para lograr un buen diseño de programa.
• La programación modular es uno de los métodos de diseño más flexibles y potentes para
• mejorar la productividad de un programa. La descomposición de un programa en módulos
• independientes más simples se conoce también como el método de “divide y vencerás". Se diseña
• cada módulo con independencia de los demás y, siguiendo un método descendente, se llega hasta
• la descomposición final del problema en módulos en forma jerárquica.
• En consecuencia, el programa se divide en módulos (partes independientes), cada uno de los
• cuales ejecuta una única actividad o tarea.

A continuación se presenta la sintaxis a utilizar para la definición de módulos:

• proceso nombre del módulo
• comenzar
• { acciones a realizar dentro del módulo }
• fin
• El esquema general de un programa que utilice módulos y variables siguiente:
• programa nombre del programa
• procesos
• {indicar aquí TODOS los procesos a utilizar proceso nombre del proceso
• comenzar
• { acciones a realizar dentro del proceso }
• fin
• variables
• { declarar aquí las variables del programa }
• comenzar
• { acciones del programa principal }
• fin

Programación estructurada

• La programación estructurada es una forma de escribir programación de computadora de forma clara, para ello utiliza únicamente tres estructuras: secuencial, selectiva e iterativa; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional ( GOTO ).
• Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 60, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes lo que ha llevado al desarrollo de nuevas técnicas tales como la programación orientada o objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.

Ventajas de la programación estructurada

Con la programación estructurada, elaborar programas de computador sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las siguientes ventajas:

1. Los programas son más fáciles de entender, ya que pueden ser leído de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.
2. La estructura del programa es clara puesto que las instrucciones están más ligadas o relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente.
4. Reducción de los costos de mantenimiento de los programas.
5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).
6. Los bloques de código son auto explicativos, lo que facilita a la documentación.
7. Los GOTO se reservan para construir las instrucciones básicas (selección e iteración)

Inconvenientes de la programación estructurada


El principal inconveniente de este método de programación, es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo, esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado. Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica muy definida y se denominan capas.


2.3. DEFINICIÓN DE LENGUAJES ALGORÍTMICOS.

Definición de Algoritmo.

"Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos".

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

• Debe ser preciso. e indicar el orden de realización de cada paso.
• Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
• Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ; o sea debe tener un número finito de pasos.
• La definición de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.

Diseñar un algoritmo para cambiar una llanta a un coche.

• · Inicio.
• · Traer gato.
• · Levantar el coche con el gato.
• · 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 el gato.
• · Fin.


Definición de 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.

Diagrama de flujo

Un diagrama de flujo es la forma más tradicional de especificar los detalles algorítmicos de un proceso. Se utiliza principalmente en programación, economía y procesos industriales; estos diagramas utilizan una serie de símbolos con significados especiales. Son la representación gráfica de los pasos de un proceso, que se realiza para entenderlo mejor. Son modelos tecnológicos utilizados para comprender los rudimentos de la programación lineal.

Flecha. Indica el sentido y trayectoria del proceso de información o tarea.

Rectángulo. Se usa para representar un evento o proceso determinado. Éste es controlado dentro del diagrama de flujo en que se encuentra. Es el símbolo más comúnmente utilizado. Se usa para representar un evento que ocurre de forma automática y del cual generalmente se sigue una secuencia determinada.
Rombo. Se utiliza para representar una condición. Normalmente el flujo de información entra por arriba y sale por un lado si la condición se cumple o sale por el lado opuesto si la condición no se cumple.el rombo además especifica que hay una bifurcación
Círculo. Representa un punto de conexión entre procesos. Se utiliza cuando es necesario dividir un diagrama de flujo en varias partes, por ejemplo por razones de espacio o simplicidad. Una referencia debe darse dentro para distinguirlo de otros. La mayoría de las veces se utilizan números en los mismos.


Pseudocódigo.

Es un lenguaje de especificación de algoritmos y no puede ser ejecutado por una computadora, la ventaja del pseudocódigo es que el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje específico. Es fácil de modificar y puede ser rápidamente traducido a un lenguaje de programación.Representa acciones sucesivas en un lenguaje similar al humano.

Para ejemplificar los problemas a resolver o para clarificar los conceptos, se usarán herramientas comunes y familiares para los programadores, estas herramientas son: pseudocódigo y diagramas de flujo. En esta sección se detallarán las reglas del pseudocódigo que se utiliza en las diferentes unidades de este material.

Especificar el nombre del algoritmo
ALGORITMO Ejemplo
Es un elemento meramente informativo para otra persona que no sea el creador del pseudocódigo

Para definir las variables a utilizar

• VARIABLES. Se deben especificar las variables a utilizar así como su tipo (entero, alfanumérico, etcétera). Esto sirve para familiarizarse con la creación de variables e ir creando una estandarización propia de cada programador.
Ejemplo:
VARIABLES Num, Suma de tipo entero
En los casos anteriores se usan mayúsculas para identificar el nombre del algoritmo y el o los nombres de las variables a utilizar.

Especificar donde comienza el cuerpo del algoritmo con la palabra Inicio

Es muy importante definir donde comienzan las instrucciones del algoritmo, para que el programador sepa donde debe empezar a idear la forma en que trabajará el programa.

Especificar donde termina el cuerpo del algoritmo con la palabra Fin
Indicar donde termina el cuerpo del algoritmo facilita la lectura del mismo.

• Ejemplo
ALGORITMO Suma
VARIABLES Num, Suma, Cont de tipo entero
• INICIO
Cuerpo del algoritmo
• FIN

Representación de Ciclos
Para representar un ciclo, hemos usado la palabra Inicio para indicar el inicio del ciclo y Fin para representar el fin del ciclo. También se representaron ciclos con las palabras Desde y Hasta

ALGORITMO Suma
VARIABLES Num, Suma de tipo entero
INICIO
Desde Cont = 1 Hasta Cont = 10
Incrementar Cont en uno
FIN
Representación de Decisiones
Para representar decisiones se usaron las palabras Si, Si No

ALGORITMO Suma
VARIABLES Num, Suma de tipo entero
INICIO
Si Cont < 10 Entonces
Incrementar Cont en uno
ALGORITMO Suma
VARIABLES Num, Suma de tipo entero
INICIO
Desde Cont = 1 Hasta Cont = 10
Incrementar Cont en uno

Salir
FIN
• Notas:
1.-Es muy importante tomar en cuenta la indentación, esto hará más claro nuestro pseudocódigo.
2.-Cada programador fija sus reglas y estándares para la creación de pseudocódigo, los creadores de este material trataron de igualarlo lo más posible al lenguaje natural para que las personas que están empezando a familiarizarse con estas herramientas lograran una mejor comprensión del mismo.
3.-Un buen programador hace uso de estas herramientas como apoyo en la creación, mantenimiento y documentación de sus programas.


2.3.2 IMPLEMENTACION DE ALGORITMOS SECUENCIALES (UTLIZANDO NOTACION ALGEBRAICA)

Seguramente muchas veces has escuchado la palabra algoritmo, pero nunca has sabido cual es su definición. Pues bien un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema.
Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, así podremos quedar satisfechos con los resultados.
El ingreso de la notación algebraica en el desarrollo de algoritmos logró un gran avance para los programadores ya que fue una forma mas tangible de desarrollar sus programas, por medio de la lógica. Pues este se basa en un método que simplifica las relaciones entre los casos, el la logaritmia se usan ciertos tipos de cuadros para identificar su comportamiento.
2.4 PRUEBA Y DEPURACION

Prueba y Depuración

La Prueba se realiza tras la compilación.Si tras la compilación se presentan errores (errores de compilación) en el programa fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo, este proceso se repite hasta que no se producen errores.
De esta manera se obtiene el programa objeto, que todavía no es ejecutable directamente, pero si no contiene errores se debe instruir al sistema para que realice la fase de montaje o enlace del programa objeto con las librerías del programa del compilador; este proceso de montaje produce un programa ejecutable.

La Depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.Cuando se ejecuta un programa, se pueden producir tres tipos de errores:

1.- Errores de compilación. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programación y suelen ser errores de sintaxis, por lo tanto la computadora no puede comprender la instrucción, y obviamente no se obtendrá el programa objeto, y el compilador imprimirá una lista de todos los errores encontrados durante la compilación.

2.- Errores de ejecución. Estos errores se producen por instrucciones que las computadoras pueden comprender, pero no ejecutar. Ejemplos de éstos son: una división por cero, y raíces cuadradas de números negativos; por lo que en este caso se detiene la ejecución del programa y se imprime un mensaje de error.

3.- Errores lógicos. Se producen en la lógica del programa y la fuente del error suele ser el diseño del algoritmo. Estos errores son los más difíciles de detectar, ya que el programa puede funcionar y no producir errores de compilación ni ejecución, y solo puede detectarse cuando se advierte un error por la obtención de resultados incorrectos.

En este caso se debe volver a la fase del diseño del algoritmo, modificarlo, cambiar el programa fuente, compilar y ejecutar una vez más.

No hay comentarios: