LÓGICA DEL PROCESO Un proceso es un conjunto de actividades que debe realizar para transformar los insumos materiales y obtener un producto. Para crear productos software de alta calidad es necesario entender los procesos y tener un orden mental de la forma como se generan, para poder analizar sus causas y restricciones del proceso y tomar decisiones para la solución acertada de dicho requerimiento. Un proceso lógico está compuesto por: 1. Un conjunto de símbolos que pueden ser el alfabeto o vocabulario. 2. Un conjunto de reglas de formación que nos indique cómo construir fórmulas bien formadas a partir de los símbolos. Ella es la gramática. 3. Un conjunto de axiomas o esquemas de axiomas. 4. Un conjunto de reglas de inferencia. 5. Una interpretación formal. Análisis y solución de problemas ¿Qué es un problema? Un problema es una situación en la que se busca alcanzar un objetivo (ósea la salida a la solución del problema) y se hace necesario encontrar una forma para conseguirlo para lo cual se debe realizar un proceso. Todo problema tiene un estado inicial (la entrada) y un objetivo (la salida). Para resolver un problema es necesario realizar algunas operaciones sobre la entrada para poder alcanzar la salida o el objetivo, el cual es denominado (proceso). A menudo, los problemas más importantes y más difíciles que tenemos que resolver son los del diario vivir. Estos problemas pueden ser conseguir el dinero para los gastos básicos, orientarse en una ciudad, desplazarse de un lugar a otro, hacer una llamada telefónica o preparar un plato de comida. Solución de problemas cotidianos Los problemas de la vida real son complejos porque son problemas sistémicos, es decir, intervienen en ellos agentes externos e interacciones sociales difíciles de comprender. No obstante la forma de solucionarlos en términos generales se puede representar de la siguiente forma: Análisis Entrada Son los datos iniciales que me proporciona el problema y el análisis realizado Proceso Son las operaciones matemáticas y transformaciones para llegar a la solución Salida Resultado, la solución a la pregunta del problema Ejemplo: UD. se encuentra en un banco porque desea cambiar un cheque. Análisis: Definir si UD. está en el banco correcto, si tiene el cheque que desea cambiar por efectivo y su documento de identidad. Entrada: el cheque que desea cambiar por efectivo y su documento de identidad. Proceso: (Pasos para el cobro del cheque) 1. Hacer la fila y esperar turno. 2. Endosar debidamente el cheque. 3. Al llegar su turno entregar el cheque al cajero con su documento de identidad. 4. Esperar a que el cajero resuelva el problema de pagar el cheque. 5. Si el cajero paga el cheque recibir el dinero. 6. Contar el dinero, si esta correcta la cantidad, terminar proceso de cobro de cheque. Salida: Obtener el dinero en efectivo. Si logró el objetivo el problema quedó solucionado satisfactoriamente, de lo contrario surge otro problema nuevo el cual hay que volver a definir y precisar. La definición del problema: Un problema suele ser una situación no deseada del que se espera una rápida y efectiva solución. Forma de trabajo de un sistema computacional 1. El sistema recibe datos - o información - a través de los periféricos de entrada, que son almacenados en memoria. 2. Los datos almacenados son procesados, es decir sufren las transformaciones necesarias para producir el resultado deseado. 3. El resultado del proceso es mostrado al usuario a través de las periféricos de salida. Así que se produce una Entrada, un Proceso y una Salida. Una vez más, el análisis de un problema es lo fundamental. Tener claridad sobre el problema, delimitarlo, definirlo, tener en cuenta los datos de entrada y saber cuál es resultado esperado permitirá resolver un problema de manera eficiente, de lo contrario, daremos solución a otro problema distinto o causaremos más problemas que empeorarán la situación inicial El paso más importante para la solución de un problema es el análisis del mismo, se debe identificar cual es la pregunta del problema y a partir de ella se determinan todas las operaciones matemáticas necesarias para dar solución al problema. Análisis Es el paso más importante para la solución de todo problema. Todo el esfuerzo que se dedique en esta etapa será bien recompensado. Aquí se requiere el máximo de imaginación y creatividad ya que se debe examinar cuidadosamente el problema a fin de identificar los datos de entrada del problema, la pregunta del problema y que tipo información se necesita producir o alcanzar la salida. El analista debe identificar los elementos dados en el problema que puedan ser útiles para obtener la solución. Para alcanzar el objetivo - la solución - será necesario realizar un procedimiento, a partir de los datos de entrada del problema, permitirá llegar a la solución o la salida. Este procedimiento se llama algoritmo Entrada Una vez realizado el análisis, se determinan los datos de entrada que se necesitan; para que por medio de una transformación (proceso) nos genere la respuesta a la pregunta del problema Proceso En esta etapa se leen los datos de entrada; y se plantean todas las formulas u operaciones matemáticas necesarias para transformar dichos datos y generar la respuesta a la pregunta del problema Salida En esta etapa se refleja el valor generado a partir de la transformación de los datos. Pseudocódigo Una vez definida alguna solución a un problema en el diagrama entrada / proceso/ salida, ésta se representa en un lenguaje algorítmico. En este modulo la práctica se basará en la implementación de los algoritmos en forma de pseudocódigo. El pseudocódigo es una mezcla de lenguaje natural, símbolos y términos propios de otros lenguajes de alto nivel que se acerca o simula de forma general el código empleado por un lenguaje de programación Algunas características del pseudocódigo son: 1. Utiliza los símbolos usuales de los operadores aritméticos y relaciones, como: +, -, *, /, <>, mod, <=, ^, etc. 2. Utiliza nombres simbólicos (identificadores) para representar valores (variables, constantes, nombre de programa, etc.) 3. Uso de ciertas palabras claves reservadas propias de los lenguajes de programación: begin, end, read, write, for, while, if, then, repeat, until, etc. 4. Inclusión de comentarios que permiten documentar el algoritmo. algunos símbolos utilizados apara este fin son: { }, [ ], /* */, /**, ', ! 5. el pseudocódigo utiliza identaciones (sangrías) en los bloques de instrucciones ALGORITMOS Algoritmo: Es una serie de pasos bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Los algoritmos son objeto de estudio de la algoritmia. Características de los algoritmos El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo: 1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos". 2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". 3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos". 4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas". 5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel". Forma de descripción de algoritmos 1. Descripción verbal: en lenguaje natural y en pseudocódigo. Ejemplos: 2. Descripción gráfica-verbal: diagramas de flujo Ejemplo: Técnicas de diseño de algoritmos Los problemas son complejos y para dar solución se requiere de muchos pasos, es decir, tomar ese problema y dividirlo en sub-problemas más fáciles de resolver que el principal; esta técnica suele conocerse como divide y vencerás (divide and conquer). Esta técnica de subdividir el problema en subproblemas más pequeños nos permite identificar las tareas más importantes a ser ejecutadas para resolver el problema y disponerlas en un orden lógico. Sugerencias para la elaboración de algoritmos 1. Plantear formalmente el problema a resolver. 2. Analizar los datos que se conocen y que se espera obtener. 3. Elaborar una tabla de datos. 4. Plantear varias alternativas y escoger la mejor. 5. Hacer una lista de formulas matemáticas que han de usarse. 6. Plantear el algoritmo.