Mostrando entradas con la etiqueta estructurada. Mostrar todas las entradas
Mostrando entradas con la etiqueta estructurada. Mostrar todas las entradas

Diagramación Jackson


Esta es una forma más de representar la lógica de programación.

Un proceso es una secuencia de instrucciones que ocupan una cantidad de recursos  del computador y permiten la solución de un problema, ya sea en función de un solo proceso o de varios subprocesos que al combinarse, correcta y lógicamente, generan la solución deseada.

La diagramación Jackson consiste en dibujar a todos sus elementos como rectángulos, que se encuentran ordenados en forma secuencial de izquierda a derecha y poseen distintos niveles entre sí.

Ciclo de vida del software

El ciclo de vida de un sistema comienza cuando se detecta su necesidad y finaliza cuando se volvió obsoleto, ya sea por el tiempo, cambio de negocio u cualquier otra causa que nos indique que ya no es necesario.
Tenemos dentro de él varias etapas

1.      Análisis
2.      Diseño
3.      Implementación
4.      Depuración
5.      Mantenimiento

- Análisis


    Determina la definición del problema y especifica los requisitos que ha de tener por necesidad del usuario, quien deberá tener una participación activa en esta etapa a fin de modificar o corregir cualquier mala interpretación realizada por el analista.

- Diseño


    En esta etapa se definirá como el sistema lo hará para lograr las especificaciones solicitadas.

- Implementación


    Es la etapa en la cual se codifica a un lenguaje de programación los diseños efectuados anteriormente.
    Es conveniente para un mas fácil mantenimiento y lectura del programa la utilización de sangrías y comentarios de los distinto procedimientos que se codifican.

- Depuración


    En esta etapa se corrigen los distintos errores  de codificación, se realizan pruebas y se integra, siendo la fase de prueba algo muy difícil pues a lo sumo con los lotes de prueba que nosotros creamos, detectaremos que el programa no cometa un error, o sea que detectamos la presencia de un error y no su ausencia.
    Los lotes de prueba deben ser tan amplios, que alberguen dentro de sus valores, todas las posibles combinaciones a fin de detectar errores.
    Existen varios métodos, uno de ellos es la corrida en paralelo, del sistema para ver si da diferencia entre el nuevo y el anterior.
    Recordemos que un sistema no tiene porque haber existido anteriormente en modo computacional.

- Mantenimiento


Es la tarea mas ardua y quizás mas costosa, debemos hacerlo cuando se modifica el entorno de hardware o si cambian las necesidades del usuario, por ejemplo.


Factores en la calidad del software

          • Eficiencia
          • Transportabilidad
          • Verificabilidad
          • Integridad
          • Fácil de usar
          • Robustez
          • Extensibilidad
          • Reutilización
          • Compatibilidad

Fases de resolución de un problema con computadora

El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es “esencialmente”, un proceso creativo, se puede considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores.

Las fases de resolución de un problema con computadora son:

·         Análisis del problema: El problema se analiza teniendo presente la especificación de los requisitos dados por el cliente de la empresa o por otra persona que encarga el programa.
·         Diseño del algoritmo: una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que resuelva el problema.
·         Codificación (implementación): la solución se escribe en la sintaxis del lenguaje de alto nivel (por ejemplo, C ) y se obtiene un programa.
·         Ejecución, verificación y depuración: el programa se ejecuta, se comprueba rigurosamente y se elimina todos los errores (denominados “bugs”, en inglés) que puedan aparecer.
·         Mantenimiento: El programa se actualiza y modifica, cada vez que sea necesario, de modo que se cumplan todas las necesidades de cambio de sus usuarios.
·         Documentación:   Escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y referencia, así como normas para el mantenimiento.

Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo. Durante la tercera etapa (codificación) se implementa el algoritmo en un código escrito en un lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y diseño.

     La fase de ejecución y compilación traduce y ejecuta el programa. En las fases de verificación y depuración el programador  busca errores de las etapas anteriores y los elimina. Comprobará que mientras más tiempo se gaste en la fase de análisis  y diseño, menos se gastara en la depuración  del programa. Por último, se debe realizar la documentación del programa.   

Un algoritmo es un método para resolver un problema mediante
una serie de pasos precisos, definidos y finitos.

Tipos de estructuras en la programación estructurada (lenguaje ejemplo C)

Estructuras secuenciales
conjunto de instrucciones secuenciales con un ordenamiento lógico para lograr un fin.

 

Estructuras de selección

La sentencia if tiene dos alternativas o formatos posibles

If ( condición ) acción

If (condición) acción_1 else acción_2

Donde condición es  una expresión lógica, accion1 es el conjunto de sentencias a ejecutarse en caso de ser afirmativa la condición y accion2 es el conjunto de sentencias a ejecutarse en caso de ser falsa dicha condición.

Las sentencias van incluidas dentro de {  } en  caso de ser de mas de una línea de código.

Puede darse el caso de if anidados, donde dentro del else de un if nazca otro if, deberá en este caso ser cuidadoso de donde comienza y termina cada una de las estructuras del if.

Así mismo, puede en la misma expresión de condición conectar varias condiciones con operadores lógicos.

Cuidado, el orden de los operadores pude ser critico en algunas situaciones

En caso de tener varios caminos a tomar según el valor que puede tomar una variable, es conveniente el uso del operador switch.
El valor de la variable o expresión que involucra el switch debe ser int o char.

Switch ( condición )
{
            case etiqueta: sentencias;
                                                                       break;
            case etiqueta: sentencias;
                                                                       break;
            case etiqueta: sentencias;
                                                                       break;
            case etiqueta: sentencias;
                                                                       break;
            default:                                   sentencias;
}


El break es obligatorio a fin de evitar que luego de ejecutar un as sentencias de un case, no siga con las que se encuentran debajo, sino que corte la instrucción switch.
La etiqueta default no es obligatoria pero si conveniente y sirve para indicar que hacer si la expresión no toma ningún valor preestablecido en los case.

Por supuesto las sentencias es conveniente que se escriban entre {}.

Puede darse la siguiente posibilidad de switch

Switch (c)
{
case 0: case 1 : case 3 :           sentencias;
                                                                                              break;
case 2: case 4 : case 5 :           sentencias;
                                                                                              break;
default:                                   sentencias;
                                                                                              break;
}

o sea que ante distintos valores que pueda tomar C haga lo mismo.

 

Estructuras de iteración


Sentencia while


While ( condición )
{
sentencias;
}

en esta estructura las sentencias se ejecutan mientras la condición es verdadera y termina cuando pasa a falsa y se ejecuta la próxima sentencia fuera del ciclo while.
La variable que representa la condición del bucle se denomina variable de control del bucle y debe ser

·         Inicializada
·         Comprobada
·         Actualizada dentro de las sentencias del bucle

También puede darse el caso de los ciclos conocidos como do - while donde el control del ciclo se hace debajo de las sentencias.
Como característica fundamental de este tipo de ciclos es que al menos una vez se van a ejecutar las sentencias definidas en el bucle.

Do
{
            sentencias;
}
while (condición);


Dentro de los ciclos también existe la sentencia break para realizar una terminación anormal del bucle.



Sentencia  for

     Esta sentencia se utiliza para la realización de un numero finito y conocido de ciclos de las sentencias definidas dentro de el.

For (valor inicial; condición final; incremento)
{
sentencias;
}

Hay que tener cuidado que ninguna operación interna del bucle modifique el valor de la variable de control, haciendo a esta incontrolable.

El siguiente ejemplo

For (;;)
{
sentencia;
}

Dará un resultado infinito de ejecuciones de las sentencias, debiendo finalizarlo el operador por teclado (CTRL+C)

en cambio

for (i=1;i<=10;++);
{
sentencia;
}

No se ejecutara nunca por el “;” luego del for

Por supuesto y como parte de todo programa dentro de una estructura de iteración puede existir una, ninguna o varias estructuras de iteración, por lo que debemos tener los mismos cuidados que con los if anidados.

Definición del paradigma de programación estructurada

La programación estructurada significa

escribir un programa de acuerdo a las siguientes reglas:

· El programa tiene un diseño modular.
· Los módulos son diseñados de modo descendente.
· Cada modulo se codifica utilizando las tres estructuras de

control básicas: secuencia, selección y repetición.

. También programar sin GO TO

La programación estructurada es el conjunto de técnicas que incorporan:
· Recursos abstractos,
· Diseño descendente (top-down),
· Estructuras básicas.

Recursos abstractos
La programación estructurada se auxilia de los recursos abstractos en lugar de los recursos concretos de que dispone un determinado lenguaje de programación.

Diseño descendente
Conocido también como top-down es el proceso por el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento.
Es decir se descomponen en etapas jerárquicas relacionadas por medio de las entradas y salidas de información.
A cada estructura se la puede considerar desde dos puntos de vista, que hace y como lo hace.

Estructuras de control
Son métodos para especificar el orden en que las instrucciones de un algoritmo se ejecutaran. Dicho orden determina el flujo de control.

La programación estructurada hace mas fácil el escribir, verificar, leer y mantener un programa, utilizando un número limitado de estructuras que minimizan la complejidad de los programas.

Teorema de la programación estructurada
1 Toda estructura posee un solo punto de entrada y uno solo de salida de la misma.
2 Existen varios caminos desde la entrada hasta la salida.
3 Todas las instrucciones pueden ser ejecutables en algún momento y no existen bucles infinitos o sin fin.