DFD, ALGORITMOS


Herramientas
Para implementar la solución de un problema mediante el uso de una computadora es necesario establecer una serie de pasos que permitan resolver el problema, a este conjunto de pasos se le denomina algoritmo, el cual debe tener como característica final la posibilidad de transcribirlo fácilmente a un lenguaje de programación, para esto se utilizan herramientas de programación, las cuales son métodos que permiten la elaboración de algoritmos escritos en un lenguaje entendible.
Un algoritmo, aparte de tener como característica la facilidad para transcribirlo, debe ser:
1. Preciso. Debe indicar el orden en el cual debe realizarse cada uno de los pasos que conducen a la solución del problema.
2. Definido. Esto implica que el resultado nunca debe cambiar bajo las mismas condiciones del problema, éste siempre debe ser el mismo.
3. Finito. No se debe caer en repeticiones de procesos de manera innecesaria; deberá terminar en algún momento.
Por consiguiente, el algoritmo es una serie de operaciones detalladas y no ambiguas para ejecutar paso a paso que conducen a la resolución de un problema, y se representan mediante una herramienta o técnica. O bien, es una forma de describir la solución de un problema planteado en forma adecuada y de manera genérica.
Además de esto, se debe considerar que el algoritmo, que posteriormente se transformará en un programa de computadora, debe considerar las siguientes partes:
             Una descripción de los datos que serán manipulados.
             Una descripción de acciones que deben ser ejecutadas para manipular los datos.
             Los resultados que se obtendrán por la manipulación de los datos.
Las herramientas o técnicas de programación que más se utilizan y que se emplearán para la representación de algoritmos a lo largo del libro son dos:
1. Pseudocódigo.
2. Diagramas de flujo.

Y alternativamente se presentarán soluciones de problemas donde se utilicen:
3. Diagramas Nassi-Schneiderman (N/S).

Identificadores

Antes de analizar cada una las herramientas que se utilizan en representación de algoritmos para la solución de problemas, se establecerá qué son los identificadores que se utilizan dentro de un algoritmo.
Los identificadores son los nombres que se les asignan a los objetos, los cuales se pueden considerar como variables o constantes, éstos intervienen en los procesos que se realizan para la solución de un problema, por consiguiente, es necesario establecer qué características tienen.
Para establecer los nombres de los identificadores se deben respetar ciertas reglas que establecen cada uno de los lenguajes de programación, para el caso que nos ocupa se establecen de forma indistinta según el problema que se esté abordando, sin seguir regla alguna, generalmente se utilizará la letra, o las letras, con la que inicia el nombre de la variable que representa el objeto que se va a identificar.
Constante
Un identificador se clasifica como constante cuando el valor que se le asigna a este identificador no cambia durante la ejecución o proceso de solución del problema. Por ejemplo, en problemas donde se utiliza el valor de
PI, si el lenguaje que se utiliza para codificar el programa y ejecutarlo en la computadora no lo tiene definido, entonces se puede establecer de forma constante estableciendo un identificador llamado PI y asignarle el valor correspondiente de la siguiente manera:
PI = 3.1416.
De igual forma, se puede asignar valores constantes para otro identificadores según las necesidades del algoritmo que se esté diseñando.
Variables
Los identificadores de tipo variable son todos aquellos objetos cuyo valor cambia durante la ejecución o proceso de solución del problema. Por ejemplo, el sueldo, el pago, el descuento, etcétera, que se deben calcular con un algoritmo determinado, o en su caso, contar con el largo (L) y ancho (A) de un rectángulo que servirán para calcular y obtener su área. Como se puede ver, tanto L como A son variables que se proporcionan para que el algoritmo pueda funcionar, y no necesariamente se calculen dentro del proceso de solución.

Tipos de variables
Los elementos que cambian durante la solución de un problema se denominan variables, se clasifican dependiendo de lo que deben representar en el algoritmo, por lo cual pueden ser: de tipo entero, real y string o de cadena, sin embargo, existen otros tipos de variables que son permitidos con base en el lenguaje de programación que se utilice para crear los programas, por consiguiente, al momento de estudiar algún lenguaje de programación en especial se deben dar a conocer esas clasificaciones.
Para el caso de este libro, se denominará variables de tipo entero a todas aquellas cuyo valor no tenga valores decimales; contrario a las de tipo real, la cual podrá tomar valores con decimales. Como ejemplo de variables enteras se puede considerar el número de personas, días trabajados, edad de una persona, etcétera. Y para el caso de reales, se puede considerar el sueldo de una persona, el porcentaje de equis cantidad, etcétera.
En caso de que las variables tomen valores de caracteres, se designarán string o de cadena; como ejemplo de éstas se pueden mencionar el sexo de una persona, falso o verdadero, el nombre de una persona, el tipo de sangre, etcétera.
Pseudocódigo
Sin duda, en el mundo de la programación el pseudocódigo es una de las herramientas más conocidas para el diseño de solución de problemas por computadora. Esta herramienta permite pasar casi de manera directa la solución del problema a un lenguaje de programación específico. El pseudocódigo es una serie de pasos bien detallados y claros que conducen a la resolución de un problema.
La facilidad de pasar casi de forma directa el pseudocódigo a la computadora ha dado como resultado que muchos programadores implementen de forma directa los programas en la computadora, cosa que no es muy recomendable, sobre todo cuando no se tiene la suficiente experiencia para tal aventura, pues se podrían tener errores propios de la poca experiencia acumulada con la solución de diferentes problemas.
Por ejemplo, el pseudocódigo para determinar el volumen de una caja de dimensiones A, B y C se puede establecer de la siguiente forma:
1. Inicio.
2. Leer las medidas A, B y C.
3. Realizar el producto de A * B * C y guardarlo en V (V = A * B * C).
4. Escribir el resultado V.
5. Fin.
Diagramas de flujo
Los diagramas de flujo son una herramienta que permite representar visualmente qué operaciones se requieren y en qué secuencia se deben efectuar para solucionar un problema dado. Por consiguiente, un diagrama de flujo es la representación gráfica mediante símbolos especiales, de los pasos o procedimientos de manera secuencial y lógica que se deben realizar para solucionar un problema dado.
Los diagramas de flujo desempeñan un papel vital en la programación de un problema, ya que facilitan la comprensión de problemas complicados y sobre todo aquellos en que sus procesos son muy largos; generalmente, los diagramas de flujo se dibujan antes de comenzar a programar el código fuente, que se ingresará posteriormente a la computadora.
Los diagramas de flujo facilitan la comunicación entre los programadores y los usuarios, además de que permiten de una manera más rápida detectar los posibles errores de lógica que se presenten al implementar el algoritmo.
Dentro de los diagramas de flujo se pueden utilizar los símbolos con los cuales se indican las operaciones que se efectuarán a los datos con el fin de producir un resultado.


Diagramas Nassi-Schneiderman N/S
El diagrama N-S es una técnica en la cual se combina la descripción textual que se utiliza en el pseudocódigo y la representación gráfica de los diagramas de flujo. Este tipo de técnica se presenta de una manera más compacta que las dos anteriores, contando con un conjunto de símbolos muy limitado para la representación de los pasos que se van a seguir por un algoritmo; por consiguiente, para remediar esta situación, se utilizan expresiones del lenguaje natural, sinónimos de las palabras propias de un lenguaje de programación (leer, hacer, escribir, repetir, etcétera).
Establecer cuál herramienta utilizar para representar los algoritmos diseñados para la solución de problemas estará en función del gusto y preferencia del programador, y quizás no tanto en función de la complejidad de los problemas, ya que si bien es cierto que los diagramas N/S tienen pocos símbolos, presentan la ventaja de que por lo compacto que resultan sus representaciones suelen ser más fáciles de leer y de transcribir al lenguaje de programación que se utilizará, pero luego resulta complicado acomodar las acciones al construir el diagrama.
Los símbolos más utilizados en diagrama N/S corresponden a un tipo de estructura para la solución del problema, esas estructuras pueden ser: secuenciales de decisión y de ciclo.


También es importante señalar que antes de presentar cualquier solución de un problema es necesario analizar el problema para entender qué es lo que se quiere obtener, con qué se cuenta y cómo se obtendrá lo deseado. En otras palabras, cómo está conformado el sistema: entrada, proceso y salida. No establecer con claridad lo que se tiene puede traer consigo una solución totalmente errónea; para que esto quede más claro, considere el siguiente ejemplo. Se requiere un algoritmo para determinar el cambio que recibirá una persona que adquiere un producto en la tienda.
Posiblemente alguien piense que la solución de este problema requiere una gran cantidad de pasos probablemente demasiado complicados, o por el contrario, que es demasiado sencillo, que no tiene ninguna complejidad.



Solución de problemas secuenciales

Para la solución de cualquier problema que se vaya a representar mediante alguna de las herramientas que se han mencionado, siempre tendremos que representar mediante letras, abreviaciones o palabras completas los elementos que intervienen en el proceso de solución, a estos elementos se les denomina variables o constantes. Por ejemplo: sueldo con S; horas trabajadas con HT; edad con E, o bien con la palabra completa según el gusto de cada diseñador.
Estructuras de control

Sin importar qué herramienta o técnica se utilice para la solución de un problema dado, ésta tendrá una estructura, que se refiere a la secuencia en que se realizan las operaciones o acciones para resolver el problema; esas estructuras pueden ser: secuenciales, de decisión y de ciclo o repetición, las cuales se analizarán en su momento.
Debe tenerse presente que la solución de un problema dado mediante el uso de una computadora es un sistema, el cual debe tener una entrada de datos, los cuales serán procesados para obtener una salida, que es la solución o información que se busca.

Entrada→Proceso→Salida

Estructuras secuenciales
En este tipo de estructura las instrucciones se realizan o se ejecutan una después de la otra y, por lo general, se espera que se proporcione uno o varios datos, los cuales son asignados a variables para que con ellos se produzcan los resultados que representen la solución del problema que se planteó.
Los algoritmos tienen como fin actuar sobre los datos proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la información o un resultado. El algoritmo es realmente la representación funcional de un sistema.
Se desea implementar un algoritmo para obtener la suma de dos números cualesquiera. Se debe partir de que para poder obtener la suma es necesario contar con dos números, pues el proceso que debemos realizar es precisamente la suma de éstos, la cual se asigna a una variable que se reporta como resultado del proceso.
1. Inicio
2. Leer A, B
3. Hacer S = A + B
4. Escribir S
5. Fin


Solución de problemas con Estructura Selectiva
Estructuras selectivas

En los algoritmos para la solución de problemas donde se utilizan estructuras selectivas se emplean frases que están estructuradas de forma adecuada dentro del pseudocódigo. En el caso del diagrama de flujo, también se estructura de una forma semejante.


Se puede establecer que la lectura del pseudocódigo o del diagrama de flujo debe ser de la siguiente forma:
Leer A y B, comparar si A es mayor que B, de ser verdad asignar el valor de A en la variable M, escribir M y fin. Éste sería el seguimiento que se daría en caso de ser verdad la comparación de variables, pero en caso de ser falso el proceso cambia, dado que el valor que tomaría la variable M es el de B para escribir este valor y finalizar el proceso. Como se puede ver, primeramente se debe seguir el camino de afirmación hasta llegar al fin, y después se recorre el de negación, esto es sólo para verificar la funcionalidad del algoritmo.



Comentarios

Entradas populares