jueves, 10 de octubre de 2013

MODULARIZACIÓN DE PROGRAMAS

Como cualquier otro campo, la metodología de programación de computadoras es una actividad que con el paso del tiempo se fue refinando y optimizando.  Uno de los grandes problemas que aquejaba a los primeros programas para computadora era que al hacerse grandes y complejos se hacían difíciles de comprender y, lo que es peor, doblemente difíciles de mantener o editar.  ¿Cuál era la razón?  Los programas eran de un solo bloque; es decir, un solo programa realizaba muchas tareas y procesos, todos ellos mezclados los unos con los otros. 

¿Cómo se  puso orden a todo este caos?  Aplicando la conocida regla de divide y vencerás.  Ésta aplicada al mundo de la programación de computadoras dice: Un programa debe organizarse de tal forma que esté compuesto por  otros  pequeños (subprogramas) que lleven a cabo tareas específicas.

TIPOS DE SUBPROGAMAS
En teoría se reconocen dos tipos: funciones y procedimientos.

a)   Funciones
Una función puede recibir uno o más parámetros de entrada,  pero siempre devuelve un solo resultado.

b)   Procedimientos

Un procedimiento puede recibir uno o más parámetros de entrada y devolver uno o más resultados, o ningún resultado.
                                                     
La mayoría de los lenguajes actuales, como Java, C++ y otros, sólo utilizan funciones.  Tal vez Visual Basic sea de los pocos que aún permiten el uso de procedimientos.

 USO DE FUNCIONES
Como ya se mencionó, para que una función pueda ejecutarse, necesita datos de entrada, conocidos también como parámetros de entrada.  Para entender mejor, analicemos el siguiente diagrama que utiliza una función para calcular la sumatoria de un número:


Como verá, tenemos el diagrama principal y la función sumatoria. ¿Cómo funciona?  Primero, el módulo principal pide la introducción de un número (num) y luego cede el control del programa a la función sumatoria, copiando el valor de num a la variable n de dicha función.  Luego, la función realiza todo el proceso para obtener la sumatoria del número y devuelve este resultado (t), que es copiado a la variable s de la función principal. Después, el resultado es mostrado y finaliza la ejecución del diagrama.

Veamos también estos otros dos ejemplos:

Ejemplo  2. Realizar un diagrama de flujo que calcule el factorial de un número cualquiera.


De manera similar: la función principal envía n a la función factorial,  valor que es recepcionado en la variable num; se calcula el factorial y se devuelve el resultado (f), que es asignado a la variable fac de la función principal.

Ejemplo 3. Diseñe una función que calcule la potencia de un número.

miércoles, 9 de octubre de 2013

DISEÑO DE DIAGRAMAS ESTRUCTURADOS

Los ejemplos del capítulo anterior ilustraron cómo se puede plantear un algoritmo, así como su respectiva representación gráfica.  Mas para poder diseñar un diagrama que pueda ser implementado posteriormente en la computadora, se debe aplicar y cumplir el teorema fundamental de la programación estructurada, que más o menos dice: Un diagrama o programa sólo debe tener un punto de entrada (inicio) y un punto de salida (fin); y para su diseño se pueden utilizar únicamente tres estructuras de control; éstas son: secuenciales, condicionales y repetitivas.

ESTRUCTURA DE CONTROL SECUENCIAL
Es una secuencia lineal de procesos, es decir, no existe en ningún momento ruptura de control ni bifurcaciones.

Ejemplo 1:  Leer dos números y obtener la suma de ambos.


ESTRUCTURA DE CONTROL CONDICIONAL
Evalúa una condición; luego, en función del cumplimiento o no de ésta, ejecuta uno o más procesos.  Puede ser simple o de alternativa doble.

Estructura condicional simple.  Sólo ejecuta procesos cuando la condición establecida es cumplida.


Ejemplo:  Leer dos números y mostrar el mayor de ambos.


Estructura condicional de doble alternativa.  En esta estructura, si se verifica la condición, se ejecuta el proceso por verdadero (Sí); en el caso contrario, se ejecuta el proceso por falso (No).


Ejemplo:  Leer las notas de un alumno correspondientes a tres parciales, obtener el promedio y determinar si el alumno aprobó o reprobó. Tomar 51 como nota mínima de aprobación.


Estructura de alternativa múltiple.  En esta estructura, en función del resultado de una expresión, se ejecuta uno de varios procesos predeterminados.

Si no se encuentra equivalencia para la expresión, se ejecuta el proceso determinado por la etiqueta Otro.

Ejemplo:  Realizar un diagrama que lea un número e indique a qué día de la semana corresponde.

ESTRUCTURAS DE CONTROL REPETITIVAS
Repiten la ejecución de procesos en función del cumplimiento de la condición establecida.
Por la ubicación de la condición de control, se pueden reconocer las estructuras mientras y hacer-mientras.  Además, se dispone de una variante automática de la estructura mientras: la estructura  for.

Estructura repetitiva Mientras (while).  Funciona así: mientras se cumpla o verifique la condición de control, ejecuta los procesos del ciclo repetitivo.


Ejemplo:  Realizar un diagrama que genere la serie de 1 a 10.


Estructura repetitiva Hacer-Mientras (do-while).  Esta estructura ejecuta los procesos del ciclo repetitivo mientras la condición de control sea verdadera.

La diferencia entre ambas estructuras está en que while (mientras) primero evalúa la condición de control; si ésta se cumple, ejecuta los procesos del ciclo repetitivo; en cambio, do–while (hacer-mientras) primero realiza los procesos del ciclo repetitivo y después evalúa la condición;  si se verifica la condición, ejecuta los procesos del ciclo repetitivo; si no, termina.


 Ejemplo:  Realizar un diagrama para obtener la sumatoria de un número cualquiera.

Estructura repetitiva forEs un bucle repetitivo conocido también como contador automático.  Funciona sobre la base de una variable de control (vc) que, a partir de un valor inicial (val_ini), puede incrementarse o decrementarse (incr|decr) según la operación que se emplee.   El límite del bucle está definido por una expresión.

Donde:  vc es una variable, val_ini el valor inicial que toma; límite es una expresión que delimita el ciclo repetitivo; incr|decr son expresiones que definen de cuánto en cuánto incrementará o decrementará el ciclo.

Ejemplo 1: Generar la siguiente serie:  10,9,8,7,6,5,4,3,2,1,0

Donde:


Ejemplo 2: Generar la siguiente serie:  0,1,2,3,4…….. n
Donde:

NOCIONES DE PROGRAMACIÓN DE COMPUTADORAS

Programar computadoras es, por experiencia propia, una actividad fascinante, pues, a diferencia de otras, en ésta se trabaja con un elemento intangible e invisible, pero existente y muy importante en la actualidad: la información.  Tal es  la esencia y naturaleza de la programación de computadoras: procesar información para dar solución a un problema.

¿Desea usted también ingresar a este mundo fascinante?  Si es así, primero debe conocer y dar los pasos iniciales.  Veamos cuáles son:

1.1.         RESOLUCIÓN DE PROBLEMAS CON AYUDA DE LA COMPUTADORA
Para resolver problemas con la computadora, es necesario llevar a cabo tres fases importantes: análisis, diseño e implementación.


a)        Análisis.  En esta fase se estudia y analiza en detalle el problema planteado para encontrarle una solución.
a)     Diseño.  Es la piedra angular del desarrollo de software, porque en esta fase se diseña la solución del problema planteado.   

Para la ejecución de esta fase, un programador puede aplicar alguna de las siguientes herramientas:

b.1)    Algoritmos.  Consiste en detallar los pasos necesarios para solucionar un problema.

Ejemplo 1.1.   Diseñar un algoritmo para calcular el área de un triángulo.

1.     Inicio
2.     Introducir valores para Base y Altura
3.     Dividir entre dos el resultado del producto de Base y Altura
4.     Mostrar el resultado obtenido
5.            Fin

El ejemplo anterior es un algoritmo lineal, dado que los procesos se ejecutan secuencialmente, sin ruptura de control.

Sin embargo, los algoritmos pueden ser condicionales, es decir, en ellos puede cambiar el orden de ejecución de los procesos, en función del cumplimiento o no de la condición establecida.

Ejemplo 1.2: Determinar si una persona es mayor de edad o no, tomando en cuenta si tiene por lo menos 18 años o más.

1.       Inicio
2.       Pedir la edad de la persona
3.       ¿Tiene 18 años o más?   Sí  4,  No  5
4.       Es mayor de edad
5.       Es menor de edad
6.       Fin

Analizando el paso 3 se determina: si la persona tiene 18 años o más, se ejecuta el paso 4; si no, se realiza el paso 5.

Los algoritmos constituyen la herramienta más básica y elemental con la que cuenta un programador.

b.2)   Diagramas de flujo.  En términos simples: un diagrama de flujo es la representación gráfica de un algoritmo.  Para tal efecto se dispone de un conjunto de símbolos normalizados y estandarizados, de los cuales estos son los más utilizados:


Símbolo terminal.  Se utiliza para indicar el inicio y el final de un diagrama de flujo.


Lectura de datos por teclado.

Símbolo utilizado para realizar cualquier tipo de procesamiento.


Salida de datos por pantalla (*)


Evalúa una condición o pregunta.


Salida de datos impresa (*)


Ciclo repetitivo controlado por condición.


Ciclo repetitivo automático.

Líneas de flujo.  Indican el flujo y recorrido de los datos.


Conector de flujo.  Sirve para conectar o reagrupar líneas de flujo.


(*) Aunque ambos símbolos pueden utilizarse para desplegar datos, en este blog se utilizó el símbolo de impresión para evitar cualquier confusión entre el símbolo de pantalla y el de ciclo repetitivo controlado por condición.

 Luego, con la ayuda de estos símbolos es posible graficar los algoritmos.

Ejemplo 1.3:  Diagrama de flujo del ejemplo 1.1:

Donde:  b es la base, h  la altura y  a el área


        Ejemplo 1.4: Diagrama de flujo del ejemplo 1.2:


b.2.1)    Prueba de escritorio.   Es el proceso mediante el cual se prueba y analiza el funcionamiento de un diagrama de flujo.  En la práctica, es una tabla en la que se anotan todas las variables del diagrama y los valores que van tomando durante el funcionamiento de dicho diagrama.

Ejemplo 1.5: Prueba de escritorio perteneciente al diagrama de flujo del ejemplo 1.1, en la que se plantean 4 y 3 como valores de entrada.
Ejemplo 1.6: Dos ejecuciones  pertenecientes al diagrama de flujo del ejemplo 1.2
c)        Implementación.  En esta fase se procede a programar, mediante un lenguaje de programación, el algoritmo o diagrama de flujo diseñado.