Programación modular

Anuncio
El proceso de diseño de programas
La finalidad de la programación estructurada es producir programas que sean más fáciles de entender
que los no estructurados y, por tanto, más fáciles de probar, depurar1, modificarse, etc.
Para eso nos valemos de los algoritmos y sus diferentes formas de representación: pseudocódigo, diagramas de flujo y nassi-schneiderman, etc., así como de las estructuras de control: secuenciales,
de selección, iterativas, etc.
La figura siguiente resume la representación de las estructuras de control analizadas por medio
de diagramas de flujo. Los pequeños círculos se utilizan en la figura para indicar un solo punto de entrada y un solo punto de salida de cada estructura. Utilizando de forma correcta estos elementos, podremos elaborar sólo programas estructurados mediante su combinación adecuada.
Secuencia
Selección
Estructura si
(una sola selección)
V
Estructura si no
(doble selección)
F
V
F
Estructura según sea
(múltiple selección)
V
break
F
V
break
F
V
break
F
Estructuras de control de secuencia, selección y repetición (continúa en la siguiente página)
Las estructuras de control solo pueden ser combinados de dos formas: apilamiento y anidamiento.
1
Depurar. Limpiar, perfeccionar.
Repetición
Estructura hacer… mientras
Estructura mientras
Estructura para ó desde
V
V
F
F
V
F
Algoritmo para la formación de programas estructurados
1) Empiece con el diagrama de flujo más simple
2) Cualquier acción (incluyendo entrada/salida) puede ser reemplazada por dos acciones en secuencia (regla de apilamiento)
3) Cualquier acción puede ser reemplazada por cualquier estructura de control (regla de anidamiento)
4) Las reglas 2 y 3 pueden ser aplicadas tan frecuentemente como se desee en cualquier orden
Inicio
acción
Diagrama de flujo más simple
Fin
El pseudocódigo es un lenguaje artificial e informal (mezcla de un lenguaje de programación y el español o inglés o cualquier otro idioma) auxiliar en el desarrollo de algoritmos. No son ejecutados en la
computadora, sino más bien, solo ayudan a pensar la solución de un problema que posteriormente será
codificado en un lenguaje de programación.
Secuencia
LEER <valor>
ESCRIBIR <valor>
variable  <valor>
Selección
Repetición
Simple.
SI <condición> ENTONCES
<acciones>
FIN_SI
Mientras.
MIENTRAS <condición> HACER
<acciones>
FIN_MIENTRAS
Doble.
SI <condición> ENTONCES
<acciones>
SI_NO
<acciones>
FIN_SI
Para.
PARA variable DESDE <valor_inicial> HASTA <valor_final>
[INCREMENTO <valor_incremento> ó
DECREMENTO <valor_decremento>] HACER
<acciones>
FIN_PARA
Selección
Múltiple.
SEGÚN SEA <expresión>
<valor 1> HACER:
<acciones 1>
<valor 2> HACER:
<acciones 2>
.
.
.
<valor n> HACER:
<acciones n>
SI NO, HACER:
<acciones n+1>
FIN_SEGÚN_SEA
Repetición.
Hacer … mientras.
HACER
<acciones>
MIENTRAS <condición>
FIN_HACER_MIENTRAS
Ejemplo. Elaborar un algoritmo que lea un valor entero y calcule su factorial. El factorial de un número se calcula con la siguiente fórmula: n! n  (n  1)  (n  2)  ... 1 y n! = 1 (para n = 0). Por ejemplo, 5! = 5  4  3  2  1, es decir, 20.
NOTA: Otra forma de resolver este problema, sería inicializar ‘i’ con el valor de ‘n’ e ir decrementando su valor.
También modificar la condición para que solo calcule el factorial cuando el número proporcionado sea mayor a 2.
/* Ejemplo del algoritmo: factorial, escrito en lenguaje C*/
int factorial(int n) {
int factorial = 1;
if (n > 1) {
for (int i = 2; i < (n + 1); i++) {
factorial = factorial * i;
}
}
return factorial;
}
Algoritmo. Factorial
Elementos:
n: entero
i: contador
factorial: entero
1)
2)
3)
4)
5)
6)
7)
8)
9)
Inicio
Asignar 1 a ‘factorial’
Asignar 1 a ‘i’
Leer el valor de ‘n’
Si ‘n’ es igual a 0, ir al paso 8, en caso contrario,
continuar en el siguiente paso
Mientras ‘i’ sea menor o igual a ‘n’, continuar en el
siguiente paso, si no, ir al paso 8
Asignar a ‘factorial’ el resultado de multiplicar su
valor actual por el valor de ‘i’, regresar al paso anterior
Imprimir ‘factorial’
Fin
Pseudocódigo. Factorial
VAR
n, i, factorial: entero
FIN_VAR
INICIO
factorial  1
LEER(n)
SI (n > 0) ENTONCES
PARA i DESDE 1 HASTA n HACER
factorial  factorial * i
FIN_PARA
FIN_SI
ESCRIBIR(factorial)
FIN
Diagrama de flujo.
INICIO
factorial  1
LEER(n)
verdadero
n > 0
i  1
falso
verdadero
i <= n
factorial  factorial * i
i  i + 1
falso
ESCRIBIR(factorial)
FIN
Ejercicio. Escribir un algoritmo para determinar si un número entero dado por el usuario es un número primo.
primo = verdadero
i = 2
hacer
si (n mod i == 0) entonces
primo = falso
i = i + 1
mientras (primo == verdadero && i < n)
escribir(primo)
Ejercicio. Elaborar un algoritmo que lea dos valores enteros y determine si el segundo de ellos es múltiplo del primero.
si (a mod b == 0) entonces
escribir(a ”es múltiplo de” b)
si no
escribir(a ”no es múltiplo de” b)
Descargar