0% encontró este documento útil (0 votos)
43 vistas32 páginas

Programacion Modular

La programación modular consiste en dividir un programa grande en módulos más pequeños y funcionales que resuelven una tarea específica. Cada módulo tiene su propia funcionalidad y puede editarse de forma independiente sin afectar al resto del programa.

Cargado por

Franz Paco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas32 páginas

Programacion Modular

La programación modular consiste en dividir un programa grande en módulos más pequeños y funcionales que resuelven una tarea específica. Cada módulo tiene su propia funcionalidad y puede editarse de forma independiente sin afectar al resto del programa.

Cargado por

Franz Paco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PROGRAMACION

MODULAR
Qué es programación modular?
Uno de los métodos más conocidos para
resolver un problema es dividirlo en
problemas más pequeños, llamados
subproblemas. De esta manera, en lugar de
resolver una tarea compleja y tediosa,
resolvemos otras más sencillas y a partir de
ellas llegamos a la solución. Esta técnica se
usa mucho en programación ya que
programar no es más que resolver
problemas, y se le suele llamar diseño
descendente, metodología del divide y
vencerás o programación top-down.
Recuerda: El módulo es Es una técnica utilizada para el
un bloque de
sentencias que desarrollo de software, donde se
resuelve un problema divide el programa en muchos
particular. componentes o bloques pequeños
autónomos llamados módulos, que
son manejables, lógicos y
funcionales

Cada módulo contiene todo lo necesario para


cumplir con su propia funcionalidad y se puede
editar o modificar sin que se vea afectado el
resto del proyecto.
➢ Cada módulo deberá tener asignado un nombre propio que le diferencie de los otros y
que será usado para invocarlos.
➢ Él módulo principal debe indicar la solución completa del problema.
➢ Se puede transmitir información entre el módulo principal y el resto de los módulos a
través de parámetros.
➢ Cada módulo puede ser programado y compilado por separado, y almacenado
posteriormente en librerías.
➢ Debe existir conexión entre los módulos.
➢ Las funciones de los módulos no interfieren en el funcionamiento de otros
programas.
➢ Debe existir independencia total entre ellos, es decir, que no necesitan
colaboración de otros.
➢ Cada módulo consta de dos partes: la cabecera, que es donde aparece el nombre
y los datos que se le pasan o genera, y el cuerpo o estructura interna, que es
donde se desarrolla el código. Permite trabajar en equipo.
➢ Un módulo solo puede tener una entrada y solo puede tener una salida.
➢ Un módulo debe representar por sí mismo una estructura coherente y resolver
una parte bien definida del problema.
➢ Los módulos pueden ejecutarse unos a continuación de otros o pueden ser
llamados en momentos determinados para su ejecución.
• Un programa modular es más fácil de escribir y depurar (ejecutar, probar
y poner a punto).

• Se puede profundizar en las pruebas parciales de cada módulo mucho


más de lo que se hace un programa mayor.

• Un programa modular es fácil de mantener y modificar.

• Un programa modular es fácil de controlar.

• El desglose de un problema en módulos permite encomendar los


módulos más complejos a los programadores más experimentados y los
más sencillos a los programadores más noveles.

• Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes


programas.
• No se dispone de algoritmos formales de
modularidad, por lo que a veces los programadores
no tienen claras las ideas de los módulos.

• La programación modular requiere más memoria y


tiempo de ejecución.
Se logra manteniendo una interfaz de módulo permanente que usan los demás
componentes del software para así poder acceder a las funciones de cada módulo.

(Top-Down)
Se logra manteniendo una interfaz de módulo permanente que usan los demás
componentes del software para así poder acceder a las funciones de cada módulo.
El problema con el que nos encontramos es que
La respuesta es
simple: cuando necesitamos saber si un determinado número es par o
impar.
.
testParImpar
"Indique un número: "
numero
((numero % 2) = =0)

número, " es par"

número, " no es par"


m
🞂

TipoDato Nombre_Módulo (Lista de argumentos)


Inicio
Definiciones
Cuerpo del módulo (instrucciones)
[Retornar Expresión]
FinMódulo

Donde Lista de argumentos=TipoAcceso TipoDato Parametro1,


TipoAcceso TipoDato Parametro2, TipoAcceso TipoDato
Parametro3

TipoAcceso puede ser Entrada o Salida o Entrada/Salida


// En esta función se devuelve el factorial de un número y recibe como
parámetro Numero
Entero Factorial (Entrada Entero Numero)
Inicio
Fact=1
For(I=2; I<=Numero;++I)
{
Fact=Fact*I
}
Retornar Fact
FinFactorial

En este caso si en el algoritmo principal llamamos a Factorial,


debemos asignarlo a una variable por ejemplo:

Algoritmo VerFactorial
Inicio
FactorialNumero=Factorial(5) Llamada Escritura en
Imprimir FactorialNumero Pantalla
Fin Factorial(5) 120
🞂
Nombre_Módulo (Lista de argumentos)
Inicio
Definiciones
Cuerpo del módulo (instrucciones)
FinMódulo

Donde Lista de argumentos=Tipo Parametro1, Tipo


Parametro2, Tipo Parametro3

TipoAcceso puede ser Entrada o Salida o


Entrada/Salida
// En este procedimiento se imprimen los factoriales del 1 a
MaxFactorial, donde MaxFactorial es el parámetro que recibe
ImprimeFactoriales (Entrada Entero MaxFactorial)
Inicio
Fact=1
For(I=1;I<=MaxFactorial;I++)
{
Fact=Fact*I
}

Imprimir Fact

FinImprimeFactoriales

En este caso si en el algoritmo principal llamamos a


Imprimefactorial, sucederá lo siguiente:

Algoritmo VerFactorial
Inicio
Lee Num //supongamos que Num=6
ImprimeFactoriales(Num)
Fin
Como invocar métodos funciones y procedimientos:
➢ El nombre debe coincidir exactamente al momento de invocar, pues es la única
forma de identificarlo.
➢ Para invocar los módulos se deben enviar los parámetros de la forma correcta.
➢ Al momento de enviar los parámetros actuales deben coincidir el orden, el
número y el tipo de los parámetros manteniendo el mismo orden en el que fueron
declarados.
➢ Si una función no recibe parámetros, simplemente no se coloca nada al interior
de los paréntesis, pero siempre se deben poner los paréntesis.
➢ Cada parámetro enviado va separado por comas.
➢ Los argumentos de una función también tienen un tipo y un nombre que los
identifica. El tipo del argumento puede ser cualquiera y no tiene relación con el
tipo del método.
➢ Al recibir un argumento nada obliga a hacer uso de éste al interior del método, sin
embargo para qué recibirlo si no se va a usar.
➢ Invocar una función sigue siendo una sentencia común Java, así que debe
finalizar con ';’.
➢ Una función puede llamar a otra dentro de sí misma o incluso puede ser enviada
como parámetro a otra.
➢ El valor retornado por un método o función puede ser asignado a una variable del
mismo tipo, pero no se puede hacer esto con un procedimiento, pues no retorna
valor alguno.
➢ Las variables globales son las que se declaran en el programa principal, se
pueden utilizar a lo largo del programa entero. En esencia, su ámbito es global
al programa “tienen vida” a lo largo del programa.
➢ Las variables globales se crean declarándolas fuera de cualquier modulo y a
diferencia de las locales, su valor está disponible tanto en el cuerpo del
programa principal como en el de cualquiera de los subprogramas declarados.
➢ Una variable local es la que está declarada dentro de un módulo o
subprograma. Lo que la caracteriza es que su valor sólo está disponible
mientras se ejecuta el modulo o subprograma.
➢ El programa principal no tiene conocimiento alguno de las variables locales
creadas en sus módulos.
➢ Las variables locales “tienen vida o existen” solo durante la ejecución del
bloque de código en el que se han declarado, una variable local se crea al
entrar a un bloque y se destruye al finalizar el bloque.
➢ Se debe tomar en cuenta que las variables locales tienen preferencia sobre las
variables globales. Las variables globales deben evitarse en el módulo, puesto
que de esta manera la función es independiente del programa principal.
➢ La independencia permite que sea más fácil hacer cambios al programa, que el
módulo pueda ser reutilizado en otros programas y que sea más fácil trabajar
en equipo.
import java.util.Scanner; static void suma(int x,int y)
Public class Suma { {
public static void main(String[] args)
{ int res;
int a,b,res; res=x+y;
Scanner k=new Scanner(System.in); System.out.println(res); }
System.out.println("Introducir el primer static void resta(int x,int y)
Numero: ");
a=k.nextInt(); {
System.out.println("Introducir el int res;
segundo Numero: "); res=x-y;
b=k.nextInt(); System.out.println(res); }
System.out.println("La suma es: ");
suma(a,b); static void multiplicacion(int x,int y)
System.out.println("La resta es"); {
resta(a,b); int res;
System.out.println("La multiplicación res=x*y;
es");
multiplicacion(a,b);
System.out.println(res); }
} }
}
import java.util.Scanner; switch(op)
public class Menu{ { static void suma(int x,int y){
public static void main(String[] args) { case 1: int res;
menu(); System.out.println("La suma es: "); res=x+y;
} suma(a,b); System.out.println(res); }
static void menu() break;
{ case 2: static void resta(int x,int y){
int op; System.out.println("La resta es"); int res;
int a,b,res; resta(a,b); res=x-y;
Scanner k=new Scanner(System.in); break; System.out.println(res); }
System.out.println("Introducir el primer case 3: static void multiplicacion(int x,int y){
Numero: "); System.out.println("La multiplicacion es"); int res;
a=k.nextInt(); multiplicacion(a,b); res=x*y;
System.out.println("Introducir el segundo break;
Numero: "); System.out.println(res); }
case 4:
b=k.nextInt(); System.out.println("La division es");
do static void division(int x,int y){
division(a,b); int div;
{ System.out.println("**************"); break;
System.out.println("1.-Suma"); div=x/y;
case 5: System.out.println(div); }
System.out.println("2.-Resta"); System.out.println("El modulo es");
System.out.println("3.-Multiplicacion"); modulo(a,b);
System.out.println("4.-Division"); static void modulo(int x,int y){
break; int mod;
System.out.println("5.-Modulo"); default:
System.out.println("6.-Salir"); mod=x%y;
System.out.println("\n eleccion incorrecta"); System.out.println(mod); }
Scanner lee=new Scanner(System.in); }
op=lee.nextInt(); }
}while(op!=7);
}

También podría gustarte