Está en la página 1de 5

Diferencia entre paradigma imperativo y declarativo

La principal diferencia entre ambos paradigmas es que en la programación imperativa se


describe paso a paso un conjunto de instrucciones que han de ejecutarse con la finalidad
de variar el estado del programa y resolver un problema para hallar una solución. Es decir,
se describe un algoritmo en el que se detallan los pasos secuenciales necesarios a seguir
para la resolución de un problema.
Y en la programación declarativa solo se describe el problema, pero no los pasos
necesarios para llegar a su solución, la cual es hallada mediante mecanismos internos
de inferencia de información a partir de la descripción del problema en sí.

La programación imperativa se basa en la máquina de Turing mientras que la


programación declarativa se basa en el cálculo lambda.
Ejemplo #1

A continuación, se presenta un problema de cálculo de mínimo común múltiplo resuelto


en Prolog (Declarativo) y java (imperativo)

Mcm – Prolog

El siguiente programa calcula el mínimo común múltiplo de dos números, para ello los
datos se deben ingresar de la siguiente manera: mcm(A, B, A1, B1, C). A y B son los dos
números a ingresar, A1 y B1 toman el mismo valor de A, B y C se ingresa sin ningún valor.
Quedaría así: mcd(12, 20, 12, 20, C) obteniendo como resultado 60.

A,B,C,A1,B1=integer

mcm(A,B,A1,B1,C)

mcm(A,B,A1,B1,C):-A=B,C=A*(A1/A)*(B1/A).
mcm(A,B,A1,B1,C):-A>B,X=A-B,mcm(X,B,A1,B1,C).
mcm(A,B,A1,B1,C):-A

Mcm – Java

import java.util.Scanner;
public class MinComMult {
public static int mcd(int num1, int num2) {
int mcd = 0;
int a = Math.max(num1, num2);
int b = Math.min(num1, num2);
do {
mcd = b;
b = a%b;
a = mcd;
} while(b!=0);
return mcd;
}
/**
* Método para calcular el Mínimo Común Múltiplo
*/
public static int mcm(int num1, int num2) {
int mcm = 0;
int a = Math.max(num1, num2);
int b = Math.min(num1, num2);
mcm = (a/mcd(a, b))*b;
return mcm;
}

/**
* Método principal
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese el primer numero");
int num1 = scan.nextInt();
System.out.println("Ingrese el segundo numero");
int num2 = scan.nextInt();
System.out.println("El M.C.M. entre "+num1+" y "+num2+" es:
"+mcm(num1, num2));
}

Diferencias entre el ejemplo en prolog y java

1- Para declarar una variable en java primero se define el tipo de dato en el que se
desea la variable luego se establece un nombre que identifique dicha variable
seguido de un punto y coma.
En prolog para declarar un variable se debe comenzar por una letra mayúscula o un
guion bajo esto evita la necesidad de declarar previamente de manera explícita las
variables.
2- En el ejemplo hecho con java se definen funciones o métodos como mcd y mcm y
el método principal, en prolog se definen predicados que vienen siendo los
procedimientos o funciones en un lenguaje imperativo.
3- En prolog los predicados se definen mediante un conjunto de clausulas todo gira
en torno al operador “:-“.
Ejemplo #2

División de dos números en PROLOG:

my_div_num(_, 0, _):-

write('Error al dividir por cero'),

!.

my_div_num(A, B, C):-

C is A / B.

División de dos números en C++:

#include <iostream>

using namespace std;

int main(){

int numero1=0;

int numero2=0;

int resultado=0;

cout<<"Ingrese el dividendo:"<<endl;

cin>>numero1;

cout<<"Ingrese el divisor:"<<endl;

cin>>numero2;

if(numero2==0) {

cout<<"No se puede dividir entre 0"<<endl;

else{

resultado = numero1/numero2;

cout<<"EL resultado es: "<<resultado<<endl;

return 0;

}
 Las diferencias de Prolog y C++ son bastantes notables comenzando por las
sentencias de comparación en C++ como es de costumbre usamos el if y prolog
vemos que dentro del cuerpo de la función se le asigna el valor que deseamos
comparar.
 Otra diferencia notable es la asignación de valores a las variables en C++ tenemos
que especificar el tipo de dato que vamos a usar además de eso usamos el símbolo
“=” y en Prolog no se hace de esta manera observamos que se usa la palabra
reservada “is”.