Herramientas De Logica Computacional Entrega Semana 7

HERRAMIENTAS DE LOGICA COMPUTACIONAL ENTREGA SEMANA 7 CAMILO ARTURO LOPEZ CAICEDO ANDRES LEON CETINA CARLOS SANTIAGO RO

Views 287 Downloads 12 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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 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