Unidad 4: Algoritmos y Estructuras de Control


 


1.  Pasos para la solución de un problema.

· ANÁLISIS DEL PROBLEMA: El análisis consiste en una clara definición del problema, dónde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. 
      Para resolver un problema con un computador hay que disponer de los datos de entrada, el proceso que ha de realizarse con estos datos, y la información de salida.

Ejemplo: Para hacer la nómina de los mejores estudiantes de una carrera, se necesita saber.

Entrada: Los datos de cada uno de los estudiantes.
Proceso: La fórmula matemática para calcular el promedio de notas es: (nota 1 + nota 2 + nota 3 + ... + nota n) / cantidad de notas.
Salida: El modelo del informe donde se desean imprimir el promedio de los alumnos.

· DISEÑO DEL ALGORITMOTeniendo en cuenta que un algoritmo es un método para resolver problemas, se precisa diseñar un algoritmo que indique claramente los pasos a seguir para resolverlo. 
      En esta etapa se define lo que hará el programa, se realizará una representación de la secuencia, como lo son las herramientas de diagramas de flujo, pseudocódigos y/o tablas de decisión.

· ENTORNO DE DESARROLLO Y CODIFICACIÓN (PROGRAMACIÓN)Una vez que el diagrama de flujo o el algoritmo de resolución del problema está definido, se pasa a la fase de codificación del programa en cualquier lenguaje (C, C++, C#, Phyton, Java, etc.), cuyo resultado será el programa fuente, el cual sigue las reglas de sintaxis que el lenguaje escogido exija.
      El programa deber ser traducido al “Lenguaje de Máquina” dicha operación se realiza mediante el correspondiente compilador del lenguaje en el que está escrito el programa.

· EJECUCIÓN Y PRUEBASEl hecho de haber diseñado un buen algoritmo y luego haberlo codificado en algún lenguaje de programación no significa que el programa resuelva correctamente el problema en cuestión.
      Por eso, antes de dar por finalizada cualquier labor de programación, es fundamental preparar un conjunto de datos lo más representativo posible del problema, y probarlo, cuanto más exhaustivas sean las pruebas mayor seguridad se tendrá de que éste funcione correctamente.
      El programa se considera terminado cuando se han realizado pruebas y ensayo de su fiabilidad con el conjunto de datos seleccionados, hasta incluso con datos reales, y no se encuentren errores de ningún tipo.

· DOCUMENTACIÓN Y MANTENIMIENTOPor último se debe tener una documentación de todos los pasos hasta llegar a la solución del problema (Manual usuario), a veces es un poco tedioso esta fase pero también es muy importante ya que muchas veces suceden modificaciones con el pasar del tiempo y estas se hacen en algunos casos por otros programadores diferentes a los que lo crearon y cuando un programa es pobre en documentación este proceso de modificación es bastante complejo.


2.  Estructura de los algoritmos.


· MODELO CASCADA.
· MODELO V.
· MODELO DESARROLLO INCREMENTAL.
· MODELO ESPIRAL.


3.Prueba de escritorio


Las pruebas de escritorio son simulaciones del comportamiento de un algoritmo que permiten
determinar la validez del mismo, consisten en generar una tabla con tantas columnas como variables
tenga el algoritmo y seguir las instrucciones poniendo los valores correspondientes.
Permiten detectar errores, omisiones o mejorar el algoritmo.

Ejemplo:

 No ingresar un dato de nacimiento que sea mayor que la fecha actual

– No ingresar un valor numérico donde solo debe ir texto. Etc.

Una vez que todo haya funcionado bien en el papel, entonces ya podemos  escribir el pseudocódigo
siguiendo el diagrama de flujo. 
Esta prueba es para no perder tiempo escribiendo el programa y luego tener que buscar en dónde está
el error y como debemos corregirlo.

Ejemplo:

Algoritmo Factorial_X_
                Definir número, factorial, x Como Entero
                Imprimir "Ingrese un número"
                Leer número
                x=1
                factorial=1
                Mientras x<=número Hacer
                               factorial=factorial*x
                               x=x+1
                FinMientras
                Imprimir "El factorial de: ",número, " es igual a: ",factorial
                //Imprimir x
FinAlgoritmo


X! 
1!=1
2!=1x2=2
3!=1x2x3=6
4!=1x2x3x4=24
5!=1x2x3x4x5=120
6!=1x2x3x4x5x6=720
7!=1x2x3x4x5x6x7=5040


número

X

Factorial

7

1

1

 

2

1

 

3

2

 

4

6

 

5

24

 

6

120

 

7

720

 

8

5040



ACTIVIDADES: UNIDAD 4


Taller: Ciclo de Vida del SW (11/01/21)

Consulta.

Modelo Cascada

Especificación de requisitos: Se analizan las necesidades de los usuarios para determinar qué objetivos debe cubrir, mediante la memoria llamada SRD (documento de especificación de requisitos).

Diseño del programa: Se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario para la etapa de codificación.

Construcción o Implementación del software: Descompone y organiza el sistema en elementos que puedan elaborarse por separado, mediante el SDD (Descripción del diseño del software). 

Pruebas (o validación): Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente. Se buscan sistemáticamente y se corrigen todos los errores antes de ser entregado al usuario final.

Mantenimiento: Una de las etapas más críticas, ya que se destina un 75 % de los recursos, es el mantenimiento del software ya que al utilizarlo como usuario final puede ser que no cumpla con todas nuestras expectativas.


Modelo V

En general las metodologías llevan a cabo una serie de procesos comunes que son buenas prácticas para lograr los objetivos antes mencionados independientemente de cómo hayan sido diseñadas.

El nivel 1: Está orientado al “cliente”. El inicio del proyecto y el fin del proyecto constituyen los dos extremos del ciclo. Se compone del análisis de requisitos y especificaciones, se traduce en un documento de requisitos y especificaciones.

El nivel 2: Se dedica a las características funcionales del sistema propuesto. Puede considerarse el sistema como una caja negra, y caracterizarla únicamente con aquellas funciones que son directa o indirectamente visibles por el usuario final, se traduce en un documento de análisis funcional.

El nivel 3: Define los componentes hardware y software del sistema final, a cuyo conjunto se denomina arquitectura del sistema.

El nivel 4: Es la fase de implementación, en la que se desarrollan los elementos unitarios o módulos del programa.


                                                  Modelo Desarrollo Incremental


Propuesto por Miller en 1980.

Los incrementos son pequeños y permite una fácil administración de las tareas en cada iteración, su inversión se materializa a corto plazo, es un modelo propicio a cambios o modificaciones y se adapta a las necesidades que surjan.

Requisitos: son los objetivos centrales y específicos que persigue el proyecto.

Diseño de los incrementos: establecidas las iteraciones, es preciso definir cuál será la evolución del producto en cada una de ellas. Cada iteración debe superar a la que le ha precedido. Esto es lo que se denomina incremento. posteriormente se realizan las tareas previstas y se desarrollan los incrementos establecidos en la etapa anterior.


Modelo Espiral

Definido por primera vez por Barry Boehm en 1986.

Objetivos: Fijar los productos definidos a obtener: requisitos, especificación, manual de usuario, restricciones, riesgos, estrategias para evitarlos, y su planificación inicial.

Riesgos: Se lleva a cabo el estudio de las causas de las posibles amenazas y probables eventos no se evalúan alternativas. Se debe tener un prototipo antes de comenzar a desarrollar y probar.

Planificación: Tareas de la actividad propia y de prueba y análisis de alternativas e identificación resolución de riesgos.

Desarrollo y Pruebas: Al tener la evaluación de los riesgos, se elige un modelo para el desarrollo, el que puede ser cualquiera de los otros existentes, como formal, evolutivo, cascada, etc. Y si los riesgos en la interfaz de usuario son dominantes, un modelo de desarrollo apropiado podría ser la construcción de prototipos evolutivos.



Bibliografía:

  • https://es.wikipedia.org/wiki/Proceso_para_el_desarrollo_de_software
  • https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/modelo-v/
  • https://www.obsbusiness.school/blog/caracteristicas-y-fases-del-modelo-incremental


Taller: Ejercicio con prueba de escritorio (Estr. “Para”) (12/01/2021)


Suma de números hasta el valor asignado en la estructura.

Algoritmo Suma
        Definir C, S Como Entero
        C<-10
        S<-20
        Para C<-1 Hasta 20
                S<-S+C
                Imprimir C," ",S
        FinPara
FinAlgoritmo

  


Prueba de escritorio:



Suma de números hasta el valor asignado en la estructura.

Algoritmo Suma
        Definir C, S Como Entero
        C<-100
        S<-100
        Para C<-1 Hasta 10
                S<-S+C
                Imprimir C," ",S
        FinPara
FinAlgoritmo



Prueba de escritorio:










(Estr. “Mientras”)

 Determinar el factorial de un número n ingresado.

Algoritmo FactorialX
        Definir número, factorial, x Como Entero
        Imprimir "Ingrese un número"
        Leer número
        x<-1
        factorial<-1
        Mientras x<=número Hacer
                factoriaL<-factorial*x
                Imprimir x,"!","=",factorial
                x<-x+1
        FinMientras
FinAlgoritmo





Prueba de escritorio:










Taller: Prueba de escritorio (14/01/2021)

Pseudocódigo: 

Programa que determine el cuadrado y el cubo de un número n ingresado.

Algoritmo Cubo_Cuadrado
        Definir d, b Como Entero
        Imprimir "Ingrese un número"
        Leer w
        d<-w^2
        b<-w^3
        Imprimir "El cuadrado de ",w," es: ",d
        Imprimir "El cubo de ",w," es: ",b
FinAlgoritmo


Prueba de escritorio: 







Pseudocódigo:

Programa que calcule la suma y multiplicación de los primeros 10 números naturales.

Algoritmo Suma_Multi_
        Definir s, m Como Entero
        s<-0
        m<-1
        Para x<-1 Hasta 10 Hacer
                s<-s+x
                m<-m*x
        FinPara
        Imprimir "La suma de los 10 primeros números es: ",s
        Imprimir "La multiplicación de los 10 primeros números es: ",m
FinAlgoritmo



Prueba de escritorio:





Tarea: Prueba de escritorio (17/01/2021) 

Pseudocódigo:

Programa que determine el precio al que debería vender el producto adquirido, para ganar un porcentaje.

Algoritmo Ganar_15_porciento_
        Definir c, p, precio Como Real
        Imprimir "Ingrese el costo al que adquirió el artículo"
        Leer c
        p<-(c*15/100)
        precio<-(c+p)
        Imprimir "Aumento del 15%: ",p
        Imprimir "Precio al que debería vender el artículo: ",precio
FinAlgoritmo

Prueba de escritorio:




Pseudocódigo:

Programa que determine la calificación final de un conjunto de calificaciones con su respectivo porcentaje.

Algoritmo Calificación_final_
        Definir e, l, t, p, califinal Como Real
        Imprimir "Ingrese la calificación del exámen escrito"
        Leer e
        Imprimir "Ingrese la calificación de las lecciones"
        Leer l
        Imprimir "Ingrese la calificación de las tareas"
        Leer t
        Imprimir "Ingrese la calificación de pruebas en el laboratorio"
        Leer p
        e<-e*60/100
        l<-l*20/100
        t<-t*15/100
        p<-p*5/100
        califinal<-(e+l+t+p)
        Imprimir "La calificación final será: ",califinal
FinAlgoritmo

Prueba de escritorio:





Pseudocódigo:

Programa que determine el descuento que se realizará mediante el total de gastos realizados.

Algoritmo Descuento_por_gastos_
        Definir costo, descuento, r Como Real
        Imprimir "Ingrese el valor a pagar por la compra de los productos"
        Leer costo
        Si costo>200 Entonces
                descuento<-costo*20/100
                Imprimir "Descuento 20%: ",descuento
                r<-costo-descuento
                Imprimir "Total a pagar: ",r
        SiNo
                Imprimir "Descuento 0%: ","0.00"
                Imprimir "Total a pagar: ",costo
        FinSi
FinAlgoritmo

Prueba de escritorio:

























Pseudocódigo:

Programa que determine el descuento que se realizará dependiendo del precio del producto y su costo.

Algoritmo Rebajas_por_artículos_
        Definir a, b, total, descuento Como Real
        Imprimir "Ingrese el número de objetos que ha adquirido"
        Leer a
        Imprimir "Ingrese el valor de un artículo"
        Leer b
        total<-a*b
        Si a<=10 Entonces
                descuento<-0
                Imprimir "Descuento 0%: ","0.00"
        SiNo
                Si a>10 y a<=20 Entonces
                        descuento<-total*5/100
                        Imprimir "Subtotal: ",total
                        Imprimir "Descuento 5%: ",descuento
                SiNo
                        Si a>20 Entonces
                                descuento<-total*10/100
                                Imprimir "Subtotal: ",total
                                Imprimir "Descuento 10%: ",descuento
                               
                        FinSi
                FinSi
        FinSi
        d<-total-descuento
        Imprimir "Total a pagar: ",d
FinAlgoritmo

Prueba de escritorio:














Pseudocódigo:

Programa que determine el descuento que se realizará por la compra de manzanas.

Algoritmo Rebajas_por_artículos_
        Definir a, b, descuento, total Como Real
        Imprimir "Ingrese los kilos de manzana"
        Leer a
        Imprimir "Ingrese el precio del kilo"
        Leer b
        total<-a*b
        Si a=2 Entonces
                descuento<-0
                Imprimir "Descuento 0%: ","0.00"
        SiNo
                Si a>=2.01 y a<=5 Entonces
                        descuento<-total*10/100
                        Imprimir "Subtotal: ",total
                        Imprimir "Descuento 10%: ",descuento
                SiNo
                        Si a>=5.01 y a<=10 Entonces
                                descuento<-total*15/100
                                Imprimir "Subtotal: ",total
                                Imprimir "Descuento 15%: ",descuento
                        SiNo
                                descuento<-total*20/100
                                Imprimir "Subtotal: ",total
                                Imprimir "Descuento 20%: ",descuento
                        FinSi
                FinSi
        FinSi
        d<-total-descuento
        Imprimir "Total a pagar: "," $",d
FinAlgoritmo

Prueba de escritorio:












Comentarios