Metodologa para la solucin de problemas. Metodologa para el diseo de software: Top down, Bottom up, modular y programacin estructurada. Definicin de lenguajes algortmicos. Elementos y reglas de la representacin grafica y manuscrita de los algoritmos (diagrama de flujo, diagrama N-S, diagrama estructurado y pseudocdigo. Implementacin de algoritmos secuenciales utilizando notacin algebraica) Pruebas y depuracin METODOLOGIA PARA LA SOLUCION DE PROBLEMAS DEFINICION DEL PROBLEMA ANALISIS DEL PROBLEMA DISEO DEL ALGORITMO CODIFICACION PRUEBA Y DEPURACION DOCUMENTACION MANTENIMIENTO METODOLOGIA PARA EL DISEO DE SOFTWARE Top Down
Botton Up
Warnier Orr
METODOLOGIA PARA EL DISEO DE SOFTWARE Top Down Es una tcnica para disear que consiste en tomar el problema en forma inicial como una cuestin global y descomponerlo sucesivamente en problemas ms pequeos y por lo tanto, de solucin ms sencilla. La descomposicin del problema original (y de las etapas subsecuentes), puede detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el programador o analista pueden implementar fcilmente.
METODOLOGIA PARA EL DISEO DE SOFTWARE El problema se descompone en etapas o estructuras jerrquicas, de modo que se puede considerar cada estructura como dos puntos de vista : lo que hace?, y cmo lo hace?. Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente forma : nivel n : Vista desde el exterior. "lo que hace ?" Nivel n+1 : Vista desde el interior. "cmo lo hace ?"
METODOLOGIA PARA EL DISEO DE SOFTWARE Ejemplo de un diseo descendente (top-down ) de un control de almacn :
METODOLOGIA PARA EL DISEO DE SOFTWARE Botton Up Esta tcnica consiste en partir de los detalles ms precisos del algoritmo completando sucesivamente mdulos de mayor complejidad, se recomienda cuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer. Conforme se va alcanzando el desarrollo de mdulos ms grandes se plantea como objetivo final la resolucin global del problema. Este mtodo es el inverso del anterior y es recomendable cuando se tiene un modelo a seguir o se cuenta con amplia experiencia en la resolucin de problemas semejantes. La tcnica de Botton Up es frecuentemente utilizada para la realizacin de pruebas a sistemas ya concluidos.
METODOLOGIA PARA EL DISEO DE SOFTWARE Warnier Orr Es una tcnica que utiliza una representacin semejante a la de cuadros sinpticos para mostrar el funcionamiento y organizacin de los elementos que conforman el algoritmo. Bsicamente, utiliza una notacin de llaves para organizar los mdulos y se auxilia en la siguiente simbologa para indicar operaciones de control. Nota : Los diagramas Warnier Orr se leen de izquierda a derecha y de arriba hacia abajo.
METODOLOGIA PARA EL DISEO DE SOFTWARE Ejemplo de un diagrama de Warnier Orr, de un control de almacn
Control de Almacn Compras Conseguir Proveedor Conseguir Crdito Visitan Bancos (1,n) Visitar casas de Crdito + Hipotecas propiedades + Transportacin Manejo Almacenamiento Inventario Captura Introducir Clave Introducir Precio Repartos Etiquetacin Ventas Facturacin Reparto Cliente acude almacn Reparto a domicilio DEFINICION DE LENGUAJE ALGORITMICO Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso.
TIPOS DE LENGUAJES ALGORITMICOS Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo).
No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).
TIPOS DE LENGUAJES ALGORITMICOS
Diagramas de Flujo Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. La simbologa utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse a un patrn definido previamente.
TIPOS DE LENGUAJES ALGORITMICOS SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO
TIPOS DE LENGUAJES ALGORITMICOS SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO
TIPOS DE LENGUAJES ALGORITMICOS SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO
EJERCICIOS IMPLEMENTACION DE ALGORITMOS
PRUEBAS Y DEPURACION
Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100). EJERCICIOS inicio Leer nombre, horas, precio Salario_Bruto = horas * precio Impuestos = salario_neto * 0.20 Salario_neto = salario_bruto - impuestos Escribir nombre, salario_bruto, salario_neto Fin Ejemplo: Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayora o minora de edad segn sea el caso para un nombre especfico. EJERCICIOS inicio Nombre: Nom, eres menor de edad nom Edad: ed Ed >= 18 Nom, eres mayor de edad fin falso verdadero TIPOS DE LENGUAJES ALGORITMICOS Pseudocdigo Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. El pseudocdigo naci como un lenguaje similar al ingls y era un medio representar bsicamente las estructuras de control de programacin estructurada. TIPOS DE LENGUAJES ALGORITMICOS Pseudocdigo Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico.
TIPOS DE LENGUAJES ALGORITMICOS Pseudocdigo Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, adems de todo esto es fcil su traduccin a lenguajes como pascal, COBOL, C, FORTRAN o BASIC. El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls (similares a sus homnimos en los lenguajes de programacin), tales como star,begin, end, stop, if-then-else, while, repeat-until.etc
TIPOS DE LENGUAJES ALGORITMICOS Pseudocdigo Secuencia Inicio accin1 accin2 : accin n Fin
TIPOS DE LENGUAJES ALGORITMICOS Decisin Simple si condicin entonces accin1 accin2 : accin n
TIPOS DE LENGUAJES ALGORITMICOS Decisin Doble si condicin then accin1 accin2 : en caso contrario accin1 acci2
TIPOS DE LENGUAJES ALGORITMICOS Iteraccin Fija para var. Entera inicial hasta final hacer accin1 accin2 : accin n
TIPOS DE LENGUAJES ALGORITMICOS Iteraccin Condicional al inicio mientras condicin hacer accin1 accin2 : accin n
TIPOS DE LENGUAJES ALGORITMICOS Iteraccin Condicional al final Repetir accin1 accin2 : accin n Hasta que condicin
TIPOS DE LENGUAJES ALGORITMICOS Iteraccin Seleccin casos selector de valor1 : accin1 accin2 valor2 : accin1 accin2 valor n : accin1 accin2
EJERCICIOS Se requiere preguntar dos valores, y a continuacin ofrecer un men con las operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la posibilidad de una nueva operacin. Declaracin de variables : Real : X, Y, RESPUESTA Entero : OPCION Carcter : OP Inicio Repetir escribir(Primer valor : ) leer(X) escribir(Segundo valor : ) leer(Y) EJERCICIOS escribir(1) Suma ) escribir(2) Resta ) escribir(3) Multiplicacin ) escribir(4) Divisin ) escribir(Qu operacin deseas realizar ? : ) leer(OPCION) casos OPCION de 1 : RESULTADO X+Y 2 : RESULTADO X-Y 3 : RESULTADO X*Y 4 : si Y=0 entonces escribir( Error ) RESULTADO 0 en caso contrario RESULTADO X/Y escribir (Resultado : ,RESULTADO) escribir(Deseas otro clculo : *S/N+ ) leer(OP) Hasta que RES = N Fin EJERCICIOS Preguntar un nombre y repetirse en pantalla tantas veces como se desee. (preguntar cantidad de repeticiones), indicando el nmero de repeticin. Declaracin de variables Cadena : nom entero : x, n Inicio escribir(Nombre : ) leer(nom) escribir(Cuntas veces quieres repetirlo ? : ) leer(n) para x 1 hasta n hacer escribir(x.- , nom) Fin Estructura Secuencial Es aqulla en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representacin grfica es la siguiente: inicio Accin 1 Accin 2 Accin 3 fin Estructura Secuencial PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL Inicio : : acciones : : fin Estructura Secuencial Pseudocdigo Inicio {clculo salario neto} leer nombre, horas, precio_hora salario_bruto horas * precio impuestos 0.20 * salario_bruto salario_neto salario_bruto_impuestos escribir nombre, salario_bruto, salario_neto_bruto, salario_neto Fin Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100). inicio Leer nombre, horas, precio Salario_Bruto = horas * precio Impuestos = salario_neto * 0.20 Salario_neto = salario_bruto - impuestos Escribir nombre, salario_bruto, salario_neto Fin Condicionales La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripcin ms complicada que una lista sencilla de instrucciones.
Este es el caso cuando existen un nmero de posibles alternativas resultantes de la evaluacin de una determinada condicin.
Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se suelan denominar tambin estructuras de decisin o alternativas.
En las estructuras selectivas se evala una condicin y en funcin del resultado la misma se realiza una opcin u otra. Condicionales Las condiciones se especifican usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con una figura geomtrica en forma de rombo o bien con un tringulo en el interior de una caja rectangular.
Las estructuras selectivas o alternativas pueden ser: Simples Mltiples Alternativa Simple (si-entonces/if-then)
La estructura alternativa simple si-entonces (en ingls if-then o bien IF-THEN ) ejecuta una determinada accin cuando se cumple una determinada condicin.
La seleccin si-entonces evala la condicin y . . . Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones caso de ser S1 una accin compuesta y constar de varias acciones). Si la condicin es falsa, entonces no hacer nada.
Alternativa Simple (si-entonces/if-then)
A continuacin se muestra la grfica de la estructura condicional simple. Pseudocdigo en espaol Si <condicin> Entonces <accin S1> Fin_si Pseudocdigo en ingls If <condicin> then <accin S1> end_if Condicin? accin verdadero falso Alternativas Mltiples (segn_sea, caso de / case) Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad.
La estructura de decisin mltiple evaluar una expresin que podr tomar n valores distintos 1,2,3,4,..n . Segn que elija uno de estos valores en la condicin, se realizar una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles.
Alternativas Mltiples (segn_sea, caso de / case) La representacin grfica se muestra a continuacin:
Pseudocdigo En ingls la estructura de decisin mltiple se representa Case expresin of [e1]: accin S1 [e2]: accin S2 : [en]: accin Sn else accin Sx end_case Condicin Accin S1 Accin S2 Accin S3 Accin S5 Accin S4 Ejercicio Ejemplo: Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por teclado. Los das de la semana son 7; por consiguiente, el rango de valores de DIA ser 1..7, y caso de que DIA tome un valor fuera de este rango se deber producir un mensaje de error advirtiendo la situacin anmala. :
Inicio Leer DIA Segn_sea DIA hacer 1: escribir('Lunes') 2: escribir('Martes') 3: escribir('Mircoles') 4: escribir('Jueves') 5: escribir('Viernes') 6: escribir('Sabado') 7: escribir('Domingo') else escribir('Error') fin_segn fin Estructuras Repetitivas Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se denominan Bucles y se denomina Iteracin al hecho de repetir la ejecucin de una secuencia de acciones.
Entre las estructuras repetitivas se encuentran:
Mientras (while) Repetir (repeat) Desde (for) :
Estructura Mientras (while) La estructura repetitiva while, es aqulla en que el cuerpo del bucle se repite mientras se cumple una determinada condicin, su representacin grfica es:
Pseudocdigo en espaol Pseudocdigo en ingls Mientras condicin hacer while condicin do Accin S1 <Acciones> Accin S2 : : End_while accin Sn Fin_mientras Condicin acciones verdadero falso Ejercicio Ejemplo:
Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero negativo o cero.
Ejercicio Pseudocdigo Inicio contador 0 Leer (numero) Mientras numero > 0 hacer contador contador+1 Leer (numero) Fin_Mientras Escribir('El nmero de enteros positivos es : ', contador) Fin C = 0 Incrementar variable ndice Numero > 0 falso verdadero Leer numero Inicio C = c + 1 Leer Nmero Escribir nmeros enteros, C fin Estructura Repetir (repeat) Esta estructura se ejecuta hasta que se cumpla una condicin determinada que se comprueba hasta el final del bucle. Se ejecuta al menos una vez. El bucle repetir-Hasta_que se repite mientras el valor de la expresin booleana de la condicin sea falsa, justo la opuesta de la sentencia mientras.
Pseudocdigo en Espaol Pseudocdigo en Ingls Repetir Repeat <acciones> <acciones> : : Hasta que <condicin> Until <condicin> verdadero Condicin acciones falso Estructura Desde/Para (for) En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el nmero de iteraciones es fija, se debe usar la estructura desde o para.
La estructura Desde ejecuta las acciones del cuerpo del bucle un nmero especfico de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle.
Estructura Desde/Para (for) Pseudocdigo en Espaol Pseudocdigo en Ingls Desde variable(v)= vi Hasta vf hacer For variable (v)= vi To vf Do <acciones> <acciones> : Fin_desde Calcular valor inicial y valor final Fijar la variable ndice al valor inicial Acciones Incrementar variable ndice Variable ndice > valor final verdadero falso Cuerpo del Bucle Tarea 1. Desarrolle el pseudocdigo y diagrama de flujo para poder llevar el conteo de personas mayores de edad que ingresan a una discoteca as como las menores de edad que intentaron ingresar. 2. Desarrolle el pseudocdigo y diagrama de flujo que permita el ingreso de 3 numeros enteros mayores que cero y que determine el mayor y el menor de los 3. 3. Desarrolle el pseudocdigo y diagrama de flujo que permita realizar la sumatoria de 10 valores ingresados, imprimiendo el valor de la misma.