Está en la página 1de 10

HERRAMIENTAS DE LOGICA COMPUTACIONAL

ENTREGA SEMANA 7

CAMILO ARTURO LOPEZ CAICEDO


ANDRES LEON CETINA
CARLOS SANTIAGO ROA ECHEVERRI
RAUL ENRIQUE ORTIZ GUTIERREZ

POLITECNICO GRANCOLOMBIANO
HERRAMIENTAS DE LOGICA COMPUTACIONAL
GRUPO 14
BOGOTA D.C.
2020
Tabla de contenido
Ejemplo 1 .......................................................................................................................................... 3-5
Ejemplo 2 ............................................................................................................................................. 6

Ejemplo 3 ............................................................................................................................................. 7
Ejemplo 4 ........................................................................................................................................ 8-10
Ejemplo 1
De acuerdo con las diferentes semánticas usadas a diario en el lenguaje cotidiano y el
incremento del uso de la lógica a través de la tecnología, ha hecho que cada vez estos
términos sean más integrados con la realidad, es decir, la lógica o cálculo matemáticos,
siempre ha sido uno de los pilares fundamentales y más importante en la programación, ya
sea esto la interacción entre máquinas, Hombre/Máquina ó Máquina/Hombre.
Teniendo en cuenta lo anterior para el uso de la lógica o cálculo de predicado se cuenta con
cierto vocabulario tal como:
• Nombre: Este puede ser un número, nombre de persona, animal o cosa.
• Cuantificadores: Universal o existencial.
• Variables: cualquier letra del alfabeto en minúscula o mayúscula (a, b, y, z, C, D, entre
otras).
• Conectores: Si, no, entonces, si solo si (∧, →, v, <->, entre otras)
• Signos: (), [], {}, entre otras

Ejemplos de Lógica de Predicado:


De acuerdo con lo anterior, se relaciona los siguientes ejemplos:
1. Seis es un número Natural.
• Termino: Seis
El termino se define con una letra “Minúscula” (s)
• Predicado: Es un número Natural
El Predicado se define con la Letra “Mayúscula” (N)
Quedando de la siguiente manera la simbolización: “Ns” (Seis es un número Natural).

2. Si Martin está Jugando, entonces Jerónimo está Estudiando

• Termino: Martin /Jerónimo


Martin = m
Jerónimo = a
• Predicado: Está Jugando/Está Estudiando
Está Jugando = J
Está Estudiando = E
• Conector: Entonces (à)
Teniendo en cuenta la explicación número 1 se simbolizaría de la siguiente manera:
Jm à Ea

3. Los fraccionarios y las ecuaciones diferenciales son reales.

• Termino: Fraccionario/Diferenciales
Fraccionario: f
Diferenciales: d
• Predicado: Son reales
Si identifica con la letra: R
• Conector: Y
Se simboliza de la siguiente manera:
Rf ∧ Rd
De acuerdo con los diferentes ejemplos relacionados anteriormente llevados a la lógica o
cálculo de predicado, a continuación, se relaciona un ejemplo llevado a la lógica de
programación, como lo es el del “Valor Absoluto”.
Dado un número real entonces calcular su valor absoluto.
Rn à Cv
Llevado a lógica de programación:

En este caso java tiene una función que me permite calcular el valor absoluto sin realizar
comparaciones matemáticas como lo es: Math.abs()
En caso de que esta función no existiera, se hubiera multiplicado por -1 cuando es un número
negativo y en caso positivo se deja igual.
Aplicación 1
int numero = 7;
if (numero >= 0 )
System.out.println (“Valor absoluto” + numero);
else
{
System.out.println (“Valor absoluto” + (numero*(-1)));
}
Aplicación 2.
int numero = -7;
if (numero >= 0 )
System.out.println (“Valor absoluto” + numero);
else
{
System.out.println (“Valor absoluto” + (numero*(-1)));}

Exponer las limitaciones (si existen):


Para este ejemplo no aplica limitaciones
Ejemplo 2

En la ingeniería de software la verificación formal es un método de validación partiendo de


un conjunto axiomático, reglas de inferencia y algún lenguaje lógico de primer orden, se
puede reallizar una demostración o prueba de corrección de un programa u algoritmo.
Validaremos una de las sentencias más comunes en el ámbito de desarrollo de software la
cual es “IF then ELSE”.
Se debe tener en cuenta lo siguiente para realizar la demostracion:
• Si C1 y C 2 son dos partes de un programa y si B es una condición, entonces la sentencia IF
B then C1 ELSE C 2 se interpreta de la siguiente forma:
SI B es verdadero se ejecuta C1 SINO C 2
• Si ahora se desea demostrar la corrección de una sentencia IF con una precondición {P} y
una postcondición {Q} tendremos dos posibilidades:
– Si el estado inicial satisface B además de P entonces se ejecutará C1 y por tanto la
verificación equivaldrá a demostrar que {P ∧B} C1 {Q} es correcto.
– Si el estado inicial no satisface B entonces se ejecutará C 2 y por tanto la verificación
equivaldrá a demostrar que {P∧¬B} C 2 {Q} es correcto
REGLA PARA CONDICIONES CON CLAUSULA ELSE
{P ∧B} C1 {Q}
{P∧¬B} C2 {Q}
{P}IF B then C1 ELSE C 2{Q}
• Ejemplo:
Demostrar que: “{ } IF a > b then m: = a ELSE m:= b {(m ≥ a) ∧ (m ≥ b)}”

• {a > b} m:= a {(m ≥ a) ∧ (m ≥ b)}


P = {m = a, (m ≥ a) ∧ (m ≥ b)} ⇒ {a ≥ a, a ≥ b}
{a = a} ⇒ {a ≥ a}, {a = a, a ≥ b} ⇒ {a ≥ b}
{a > b} ⇒ {a ≥ b} {Fortalecimiento Precondición}
{a > b} m:= a {(m ≥ a) ∧ (m ≥ b)}
• { ¬(a > b)} m:= b {(m ≥ a) ∧ (m ≥ b)}
P = {m = b, (m ≥ a) ∧ (m ≥ b)} ⇒ {b ≥ a, b ≥ b}
{b = b} ⇒ {b ≥ b}, {b ≥ a, b = b} ⇒ {b ≥ a}
{¬(a > b)} ⇒ {b ≥ a}
{b ≥ a} m:= b {(m ≥ a) ∧ (m ≥ b)}
Ejemplo 3

En el área de redes, para la transmisión de datos es necesario saber el rango y las condiciones
que deben cumplir las redes para hacer esta labor. Por poner un ejemplo, suponga que en
una empresa hay 2 áreas las cuales, con su propio rango de red, para la transmisión de datos.
Se desea enviar un archivo a una de las 2 áreas en particular. Para eso se requiere saber por
parte del switch el rango de la red del área al cual se desea enviar dicho archivo.
Para esto se requirieren 2 variables de entrada, las cuales representan el rango mínimo y el
rango máximo del área para hacer efectivo el envió del archivo y que este no termine en el
área equivocada.
Cuando se envía un documento a través de la intranet de un área de trabajo a otra, el switch
debe tomar en cuenta los subrangos de red para cada área,
en este caso hay 2 áreas que son: sistemas y administración

Si necesitamos mandar un correo desde el área de sistemas al área de administración con el


plan de mantenimientos a equipos que se van a realizar en el transcurso del año, el switch
tiene que tomar en cuenta que el rango de la red para este caso podría ser 192.168.170.128,
las cual sus direcciones disponibles son desde la 129 a 254
Para poder determinar las redes que se pueden usar tenemos la fórmula:
x=2^7-2, la cual vamos a representar por la letra F, en este caso podemos utilizar 126
direcciones ip disponibles, las cuales van desde:
192.168.170.128 a 192.168.170.254.
Teniendo en cuenta lo anterior podemos suponer que la condición para poder hallar el rango
de red es:
(128<x<255), la cual vamos a representar con la letra C.
Para que se pueda enviar satisfactoriamente el correo, ambas condiciones deben cumplirse,
lo que lo que tenemos.
𝑍 → (∃𝑥|𝐶: 𝐹) ≡ (∃𝑥|𝐶: 𝑍 → 𝐹)

F=formula
C=condición
Z=correo enviado exitosamente

𝑍 → (∃𝑥|𝐶: 𝐹) ≡ (∃𝑥|𝐶: 𝑍 → 𝐹)
𝑍 → (∃𝑥|𝐶: 𝐹) Definición de la implicación.
¬𝑍 ᴠ (∃𝑥|𝐶: 𝐹)
(∃𝑥|𝐶: ¬𝑍˅𝐹 Definición de la implicación.
(∃𝑥|𝐶: 𝑍 → 𝐹)

Cumpliendo la condición y la formula, se implica que el correo fue enviado


satisfactoriamente.
Ejemplo 4

A nivel de programación se necesita realizar una suma que se ejecute cumpliendo ciertas
condiciones:
• Que los valores ingresados en la operación sean positivos
• Que las variables sean enteras.
• Si la suma cumple los dos valores anteriores, debe imprimir en pantalla “Valor de la
suma es:”
• Debe utilizar un valor 4 por solicitud del cliente.
Para lo anterior se puede plantear dos posibilidades
• Si los valores enteros son positivos el programa debería empezar a ejecutarse, por
ejemplo, p tendría que ser mayor a cero para cumplirse igual para la variable q,
finalmente la parte impresa vendría siendo la variable r.
Entonces la expresión inicial podría ser
P∧Q→R
, donde p y q son variable enteras y r el resultado.
• Si el valor p es positivo ahora valide si el valor y es positivo, finalmente imprime r.
Esto quiere decir que otra opción expresada podría ser
R →(P →Q)
.

Implementación 1:
A continuación, se presenta el modelo en una clase Java Main
public class ejemplo4HLC {

public static void main(String[] args) {

int x, y;

//Valor 4
int constante = 4;

for (int i = 1; i < 10; i++) {

//Asignacion de operaciones
x = constante - i;
y = constante + 3 * i;

//Condicion p y q
if (x > 0 && y > 0) {
//valor a imprimir, entonces r
System.out.println("El valor de la suma es: " + x + y);

Como se observa en el código anterior, se declararon las variables de tipo entero para evitar
otro tipo de dato, adicional un valor constante que implique el número 4.

Las operaciones que están dentro del bucle de iteración y que tienen como comentario
asignación de operaciones son opcionales, la condición p y q se ejecuta en la condición IF, y
r en la impresión. Es decir se cumple,
P∧Q→R
.

Implementación 2:

public class ejemplo4HLC {

public static void main(String[] args) {

int x, y;

// Valor 4
int constante = 4;

for (int i = 1; i < 10; i++) {

// Asignacion de operaciones
x = constante - i;
y = constante + 3 * i;

// Condicion p y q entonces r
if (x > 0) {
if (y > 0) {

// valor a imprimir
System.out.println("El valor de la suma es: "
+ x + y);

}
}

}
El único cambio presentado que cambia el sentido de la expresión, es que ahora X se valida
independiente de Y y de esta forma se cumple finalmente R, (cascada).

R →(P →Q)
.

Buen trabajo, en el tercer ejemplo no hay una descripción detallada del uso de cálculo
proposicional, hizo falta mayor detalle y especificar como se usa.

NOTA 90

También podría gustarte