La ciencia de
programar
Jonatan Gom´ez Perdomo, Ph.D.
Arles Rodr´ıguez, Ph.D.(c)
´Indice general
J
´Indice general I
´Indice de tablas VII
´Indice de figuras IX
1. Introducci´on 1
1.1. Generaciones de los computadores . . . 1
2. Lenguajes 5 2.1. Componentes del lenguaje . . . 8
2.2. Lenguajes de Programaci´on . . . 10
2.3. Clasificaci´on de los lenguajes . . . 11
2.4. Paradigmas de programaci´on . . . 14
3. L´ogica Matem´atica 15 3.1. L´ogica Proposicional . . . 15
3.1.1. El lenguaje de la l´ogica proposicional . . . 16
3.1.2. Precedencia de conectivos l´ogicos . . . 19
3.1.3. Interpretaciones y clasificaci´on de las f´ormulas l´ogicas . . . 19
3.1.3.1. Tautolog´ıas, contradicciones y contingencias . . . 20
3.1.3.2. Tablas de verdad . . . 21
3.1.4.1. Argumentaci´on l´ogica directa . . . 21
3.1.4.2. Equivalencias L´ogicas . . . 22
3.1.4.3. Argumentaci´on l´ogica indirecta por la contrarrec´ıproca . . . 22
3.1.4.4. Implicaciones L´ogicas . . . 24
3.1.4.5. Argumentaci´on mediante implicaciones l´ogicas . . . 25
3.2. L´ogica de predicados . . . 26
3.2.1. Cuantificadores . . . 27
3.2.2. Sem´antica de los cuantificadores . . . 27
3.2.3. Leyes de De Morgan para cuantificadores . . . 28
3.2.4. Reglas de inferencia sobre f´ormulas cuantificadas . . . 28
3.2.4.1. Particularizaci´on universal . . . 28
3.2.4.2. Generalizaci´on universal . . . 29
3.2.4.3. Particularizaci´on existencial . . . 29
3.2.4.4. Generalizaci´on existencial . . . 29
3.2.5. L´ogica de predicados en programaci´on . . . 30
3.3. Ejercicios . . . 31
4. Teor´ıa de conjuntos 35 4.1. Conceptos b´asicos . . . 35
4.1.1. Conjunto y elemento . . . 35
4.1.2. Especificaci´on de Conjuntos . . . 36
4.1.2.1. Extensi´on . . . 36
4.1.2.2. Comprensi´on . . . 36
4.1.3. El conjunto vac´ıo . . . 37
4.1.4. Representaci´on de conjuntos mediante diagramas de Venn . . . 37
4.1.4.1. Diagramas de Venn para 2 conjuntos . . . 37
4.1.4.2. Diagramas de Venn para 3 conjuntos . . . 38
4.1.5. Contenencia e igualdad . . . 38
4.1.6. Conjunto universal . . . 40
4.2. Construcci´on de conjuntos . . . 40
´INDICE GENERAL III
4.2.2. Intersecci´on . . . 41
4.2.3. Complemento . . . 42
4.2.4. Diferencia . . . 44
4.2.4.1. Diferencia sim´etrica . . . 45
4.2.5. Conjunto de partes . . . 46
4.2.6. Producto cartesiano . . . 47
4.2.6.1. Producto cartesiano generalizado . . . 48
4.2.7. Cardinalidad . . . 48
4.3. Ejercicios . . . 50
5. Introducci´on a los lenguajes de programaci´on 53 5.1. Identificadores y variables . . . 53
5.2. Tipos de datos primitivos . . . 55
5.2.1. Enteros . . . 55
5.2.1.1. Literales enteros . . . 56
5.2.2. Reales . . . 56
5.2.2.1. Densidad y distribuci´on de los n´umeros reales de m´aquina . 57 5.2.2.2. Literales reales . . . 57
5.2.3. Booleanos . . . 58
5.2.3.1. Literales booleanos . . . 58
5.2.4. Caracteres . . . 59
5.2.4.1. Literales car´acter . . . 66
5.3. Operadores y expresiones aritm´eticas . . . 66
5.3.1. Operadores aritm´eticos . . . 66
5.3.2. Operadores de asignaci´on . . . 67
5.3.3. Conversi´on de tipos de datos num´ericos (typecasting) . . . 71
5.3.4. Operadores l´ogicos . . . 72
5.3.5. Operadores de igualdad y relacionales . . . 73
5.3.6. Precedencia de operadores . . . 74
5.4. Evaluaci´on de secuencias de expresiones . . . 76
6. Relaciones y funciones 81
6.1. Relaciones . . . 81
6.1.1. Propiedades de las relaciones . . . 83
6.1.2. Relaciones de orden . . . 84
6.1.3. Relaciones de equivalencia . . . 85
6.2. Funci´on parcial . . . 86
6.2.1. Propiedades de las funciones . . . 86
6.3. Extensi´on de una funci´on parcial a una funci´on total . . . 89
6.4. Funciones importantes en computaci´on . . . 91
6.5. Composici´on de funciones . . . 95
6.5.1. Evaluaci´on como composici´on de funciones . . . 100
6.6. Ejercicios . . . 102
7. Funciones en programaci´on y la estructura condicional 107 7.1. Compilaci´on y ejecuci´on de funciones . . . 110
7.2. Funciones con m´as de un par´ametro de entrada . . . 112
7.3. La estructura de control condicionals´ı (if) . . . 115
7.3.1. El condicional if . . . 115
7.3.2. El operador condicional?: . . . 118
7.3.3. El condicional if sin la sentencia else . . . 119
7.3.4. Estructuras if enlazadas . . . 122
7.3.5. La estructura deconmutaci´on (switch) . . . 124
7.4. Validaci´on de datos usando condicionales . . . 128
7.5. Ejercicios . . . 131
8. Flujos de entrada y salida 133 8.1. Definici´on . . . 133
8.2. La jerarqu´ıa del conjunto de los flujos . . . 133
8.3. Los flujos en C++ . . . 134
8.3.1. Ejemplo del uso de los flujos de entrada y salida est´andares . . . 137
8.4. Flujos de entrada y salida desde y hacia archivos . . . 137
´INDICE GENERAL V
8.4.2. Uso de archivos como flujos de salida . . . 138
8.4.3. Cierre de los flujos desde y hacia archivos . . . 139
8.4.4. Ejemplo del uso de archivos como flujos de entrada y salida . . . 139
8.5. Ejercicios . . . 141
9. Funciones recursivas 143 9.1. Definici´on . . . 143
9.2. Ejemplos de problemas que pueden resolverse recursivamente . . . 144
9.3. Teorema fundamental de la programaci´on recursiva . . . 168
9.4. Ejercicios . . . 169
10.Estructuras de programaci´on c´ıclicas 171 10.1. La estructura de control de ciclos mientras (while) . . . 171
10.2. La estructura de control de ciclos para (for) . . . 176
10.3. La estructura de control de ciclos hacer-mientras (do) . . . 181
10.4. Simulaci´on de ciclos usando funciones recursivas . . . 187
10.5. Teorema fundamental de la programaci´on estructurada . . . 189
10.6. Validaci´on de datos usando ciclos . . . 189
10.7. Ejercicios . . . 192
11.Vectores o arreglos unidimensionales 195 11.1. Conceptos y notaci´on . . . 195
11.1.1. El conjunto de los vectores . . . 196
11.2. Los arreglos o vectores en computaci´on . . . 196
11.2.1. Funciones para utilizar arreglos . . . 199
11.2.1.1. Creaci´on de arreglos . . . 199
11.2.1.2. Eliminaci´on de arreglos . . . 199
11.3. Arreglos y flujos de datos . . . 201
11.3.1. Ejemplos de funciones con arreglos . . . 204
11.4. Ejercicios . . . 215
12.1. Repaso del tipo car´acter . . . 219
12.2. Cadenas (Strings) . . . 221
12.3. Funciones generales sobre cadenas . . . 222
12.3.1. Creaci´on de cadenas . . . 222
12.3.2. Eliminaci´on de cadenas . . . 224
12.3.3. Funciones de lectura y de persistencia . . . 224
12.3.4. Otras funciones importantes sobre cadenas . . . 225
12.3.4.1. Longitud de una cadena . . . 225
12.3.4.2. Copia de una cadena . . . 226
12.3.4.3. De cadenas a n´umeros enteros o reales . . . 227
12.3.5. Un ejemplo completo sobre manipulaci´on de cadenas . . . 227
12.4. Ejercicios . . . 230
13.Matrices o arreglos bidimensionales 231 13.1. Conceptos y notaci´on . . . 231
13.2. Definiciones alternativas . . . 233
13.2.1. El conjunto de las matrices . . . 234
13.3. Las matrices en computaci´on . . . 234
13.3.1. Funciones para utilizar matrices . . . 235
13.3.1.1. Creaci´on de matrices . . . 235
13.3.1.2. Eliminaci´on de matrices . . . 236
13.3.1.3. Matrices y flujos de datos . . . 238
13.3.2. Ejemplos de funciones con matrices . . . 242
13.4. Ejercicios . . . 248
´Indice de tablas
3.1. Prioridad de los conectivos l´ogicos. . . 19
3.2. Equivalencias l´ogicas. . . 23
3.3. Implicaciones l´ogicas. . . 25
5.1. Precedencia de los operadores enC++. . . 74
6.1. Pesos at´omicos del Potasio (K), el Cloro (Cl) y el Ox´ıgeno (O). . . 97
12.1. Longitud de cadena para nombres de archivos en distintos sistemas operativos.223
´Indice de figuras
2.1. Modelo matem´atico de la comunicaci´on de Claude Elwood Shannon (1948) . 8 2.2. figure . . . 9 2.3. Estructura general de un compilador. . . 13 2.4. Estructura general de un interprete. . . 13
4.1. Representaci´on del conjunto A = {1,2,3,4,8,¨,ª,_} mediante diagramas de Venn. . . 38 4.2. Representaci´on del conjunto A∪B mediante diagramas de Venn. . . 40 4.3. Representaci´on del conjunto A∪B = {1,2,3,4,8,¨,ª,_}mediante
diagra-mas de Venn. . . 41 4.4. Representaci´on del conjunto A∩B mediante diagramas de Venn. . . 41 4.5. Representaci´on del conjuntoA∩B= {2,4,¨,ª}mediante diagramas de Venn. 42 4.6. Representaci´on del conjunto A mediante diagramas de Venn. . . 43 4.7. Representaci´on del conjunto A= {1,3,5,6,7,9,0,©,«,_} mediante
diagra-mas de Venn. . . 43 4.8. Representaci´on del conjunto A∖B mediante diagramas de Venn. . . 44 4.9. Representaci´on del conjunto A∖B= {8} mediante diagramas de Venn. . . 44 4.10. Representaci´on del conjunto B∖A= {1,3,_}mediante diagramas de Venn. 45 4.11. Representaci´on del conjunto A△B mediante diagramas de Venn. . . 46 4.12. Representaci´on del conjuntoA△B = {8,1,3,_}mediante diagramas de Venn. 46
6.1. Representaci´on de la relaci´on R = {(0,¨),(0,«),(2,«),(2,©)} mediante diagramas Sagitales. . . 82
6.2. Representaci´on de la relaci´on R = {(¨,©),(©,¨),(ª,«),(«,ª)} mediante diagramas Sagitales. . . 83 6.3. Representaci´on de la funci´onf = {(0,©),(1,©),(4,ª)}mediante diagramas
Sagitales. . . 87 6.4. Representaci´on de la relaci´on f′ = {(0,¨),(1,¨),(2,ª),(1,«)} mediante
diagramas Sagitales. . . 87 6.5. Representaci´on de la funci´on inyectivaf = {(0,«),(2,¨)}mediante
diagra-mas Sagitales. . . 88 6.6. Representaci´on de la funci´on sobreyectivaf = {(0,¨),(1,ª),(2,«),(4,¨)}
mediante diagramas Sagitales. . . 88 6.7. Representaci´on de la funci´on total f = {(0,«),(1,©),(2,¨), (3,«),(4,¨)}
mediante diagramas Sagitales. . . 89 6.8. Representaci´on de la funci´on biyectiva f = {(0,ª),(1,©),(2,«), (3,¨)}
mediante diagramas Sagitales. . . 89 6.9. Representaci´on de la funci´on identidad idA. . . 91 6.10. Representaci´on mediante diagramas Sagitales de la composici´on de las
fun-ciones f y g, f○g= {(1, a),(2, d),(3, c),(4, c),(6, c)}. . . 96
Cap´ıtulo
1
Introducci´
on
1.1. Generaciones de los computadores
Primera generaci´on de los computadores (1946−1958):
• Programaci´on en lenguaje de m´aquina (el programa se escribe en c´odigo bina-rio).
• La tecnolog´ıa electr´onica era a base de bulbos o tubos de vac´ıo y v´alvulas.
• Desprend´ıan bastante calor y ten´ıan una vida relativamente corta.
• M´aquinas grandes y pesadas.
• Alto consumo de energ´ıa. El voltaje de los tubos era de 300V y la posibilidad de fundirse era grande.
• Almacenamiento de la informaci´on en cilindros magn´eticos para almacenar in-formaci´on e instrucciones internas.
• La reprogramaci´on se hacia intercambiando el cableado.
• Contin´uas fallas o interrupciones en el proceso.
• Requer´ıan sistemas auxiliares de aire acondicionado especial.
• Alto costo.
• Uso de tarjetas perforadas para suministrar datos de programas. Las computadoras de esa generaci´on fueron:
• 1947 ENIAC. Primera computadora digital electr´onica de la historia.
• 1949 EDVAC. Primera computadora programable.
• 1951 UNIVAC I. Primera computadora comercial.
• 1953 IBM 701. Se usaban tarjetas perforadas para introducir los datos.
• Z1 (Alemana).
• Mark II.
Segunda generaci´on de los computadores (1959−1964):
• Comunicaci´on mediante el uso de lenguajes de alto nivel.
• Uso de los transistores construidos en base al uso de un trozo de semiconduc-tor que reemplazaron a los bulbos en los circuitos de los computadores. Fue-ron inventados por John Bardeen, Walter Houser Brattain y William Bradford Shockley.
• Tama˜no m´as reducido que sus antecesoras de la primera generaci´on.
• Consum´ıan menos electricidad y produc´ıan menos calor que sus antecesoras.
• Aumento en la velocidad de las operaciones que ya no se mide en segundos sino en microsegundos.
• Costo m´as bajo que el de sus antecesoras.
• Almacenamiento en cintas y discos magn´eticos.
• Aparece gran cantidad de empresas dedicadas a la fabricaci´on de los compu-tadores.
• Programaci´on con cintas perforadas y otras por medio de un cableado en un tablero.
• La transferencia de informaci´on de una computadora a otra requer´ıa un m´ınimo esfuerzo.
• Uso de impresoras para visualizar los resultados obtenidos a partir de los c´ alcu-los hechos.
Las computadoras de esa generaci´on fueron:
• Philco 212.
• UNIVAC M460.
• Control Data Corporaions serie 1604.
• Control Data Corporaions serie 3000.
• IBM 7090.
• NCR 315.
• Burroughs serie 5000.
• ATLAS.
Tercera generaci´on de los computadores (1965−1971):
• Circuitos integrados desarrollado en 1958 por Jack Kilbry.
1.1. GENERACIONES DE LOS COMPUTADORES 3
• Menor consumo de energ´ıa.
• Reducci´on de espacio utilizado.
• Aumento de fiabilidad y flexibilidad.
• Aumenta la capacidad de almacenamiento y se reduce el tiempo de ejecuci´on.
• Disponibilidad de gran cantidad de lenguajes de programaci´on de alto nivel.
• Compatibilidad para compartir software entre diversos equipos.
• Construcci´on de computadoras en serie.
• Teleproceso.
• Multiprogramaci´on.
• Tiempo compartido.
• Aparici´on de perif´ericos.
• Aparici´on de aplicaciones.
• Aparici´on del sistema operativo llamado OS.
• Aparici´on de la mini computadora. Las computadoras de esa generaci´on fueron:
• IBM 360.
• Control Data Corporaions serie 6000.
• Control Data Corporaions serie 6600. Considerada la m´as r´apida de su ´epoca.
• IBM 370.
Cuarta generaci´on de los computadores (1972−1981):
• Microprocesador: un ´unico circuito integrado en el que se re´unen los elementos b´asicos de la m´aquina desarrollado por Intel Corporation (1971).
• Se minimiza el tama˜no de los circuitos.
• Aumenta la capacidad de almacenamiento.
• Reemplazo de las memorias con n´ucleos magn´eticos, por las de chips de silicio.
• Colocaci´on de muchos componentes electr´onicos en un s´olo chip.
• Se aumenta la velocidad de computo.
• Reducci´on significativa de los costos de los computadores.
• Popularizaci´on del uso de los computadores.
• Steve Woziniak y Steve Jobs inventan la primera microcomputadora de uso masivo, fundadores de APPLE (1976) .
• Sistemas de tratamiento de base de datos.
• Generalizaci´on de las aplicaciones.
Quinta generaci´on de los computadores (1982−1989):
• Jap´on lanz´o en 1983 el llamado“programa de la quinta generaci´on de compu-tadoras”.
• Traductores de lenguajes.
• Creaci´on de la primera supercomputadora con capacidad de proceso paralelo, dise˜nada por Seymouy Cray (1982).
• Fuerte aplicaci´on de la inteligencia artificial: sistemas expertos, redes neurona-les, teor´ıa del caos, programaci´on heur´ıstica, algoritmos gen´eticos.
• Fibras ´opticas.
• Telecomunicaciones.
• DVD.
• Uso del rat´on (mouse).
• Robots con capacidad de movimiento.
• Juegos.
• Reconocimientos de formas tridimensionales, voz e im´agenes. Sexta generaci´on de los computadores (1990−actualidad):
• Arquitecturas combinadas Paralelo / Vectorial.
• Masificaci´on del uso de redes de ´area mundial (Wide Area Network, WAN).
• Comunicaci´on a trav´es de fibras ´opticas y sat´elites.
• 1997- El Pentium II
• 1999- El Pentium III
• 2001- el Pentium 4
• Intel Core i3
• Intel Core i5
• Intel Core i7
• AMD Phenom II
Cap´ıtulo
2
Lenguajes
El lenguaje ha acompa˜nado al hombre desde el inicio de sus tiempos, ha crecido y evolucionado con ´este y de la misma manera el hombre transforma el lenguaje. Se define lenguaje como un conjunto de se˜nales articuladas que dan a entender algo[de la Len-gua Espa˜nola n.d.], y esta definici´on relaciona el concepto de lenguaje con el acto de la comunicaci´on. “Dar a entender algo” implica que existe algo que se quiere transmitir, y que debe llevarse a cabo exitosamente.
La creaci´on y transformaci´on de los lenguajes ha propiciado el aprendizaje, con esto la generaci´on continua de conocimiento, el permanente y acelerado intercambio de infor-maci´on y el actual desarrollo de las tecnolog´ıas. Sin el lenguaje no se podr´ıa hablar hoy en d´ıa de civilizaciones, de sociedades complejas, de la expresi´on y de la ciencia[Domenec Campillo Valero 2005].
Existen dos enfoques frente a la relaci´on del hombre con el lenguaje: el de creador, y el de usuario.
El lenguaje es una forma de adaptaci´on del ser humano, es una respuesta al ambiente, al entorno. El lenguaje ha evolucionado con el hombre, incluso existen teor´ıas y estudios enfocados al an´alisis de la evoluci´on del hombre con el lenguaje, que atribuyen los cambios del cerebro a presiones selectivas, a necesidades o al instinto de supervivencia[ThinkQuest 2000].
Aunque existen otras especies de las cuales se dice que “comparten un lenguaje”, es el lenguaje verbal el que realmente diferencia a la raza humana de especies animales con una capacidad cerebral similar -cuyos medios de comunicaci´on son sistemas de transmisi´on de informaci´on como los delfines o los chimpanc´es[Domenec Campillo Valero 2005].
Existen diferentes teor´ıas acerca de la evoluci´on del lenguaje: las vocalistas y las espec´ıfi-cas, las cuales difieren en la aceptaci´on de un factor gen´etico que propiciara la evoluci´on del lenguaje. Las hip´otesis que se han planteado los vocalistas afirman que la evoluci´on de la capacidad vocal de los simios se dio debido a una mutaci´on gen´etica que permi-ti´o que los sonidos emitidos fueran susceptibles de combinaci´on, formando as´ı lenguajes de comunicaci´on[O. 2008].
Las hip´otesis espec´ıficas proponen e identifican el papel de la cultura como determinante para la aparici´on del lenguaje, adem´as del aumento de la capacidad craneal y el desarrollo de la inteligencia. Tambi´en se debe tener en cuenta que la base gen´etica de los seres humanos precede a la emergencia del lenguaje, de manera que el lenguaje evolucion´o para encajar en la estructura cerebral. Sin embargo las convenciones culturales cambian mucho m´as r´apido que los genes, de manera que se le atribuye a la cultura, la generaci´on y desarrollo del lenguaje.
La fusi´on de estas dos teor´ıas da lugar a un escenario donde el simio evolucion´o y ad-quiri´o caracter´ısticas fisiol´ogicas, que unidas a la interacci´on con otros seres le permitieron expresarse de forma verbal.
Desde esta perspectiva, el desarrollo de la comunicaci´on y el lenguaje en la antig¨uedad inici´o, porque el ser humano se vio forzado a interactuar con otros, porque tuvo la necesidad de expresar y transmitir: como el cazador que quiso dar a conocer a sus compa˜neros d´onde estaba la presa, o c´omo estaban las condiciones del clima, o el recolector que deb´ıa informar del encuentro de una fruta venenosa, situaciones que hicieron que el hombre tuviera que valerse de gestos, se˜nas y sonidos para comunicarse con otros.
Los primeros hom´ınidos no eran f´ısicamente aptos para hablar, debido a que sus cuerdas vocales no estaban completamente desarrolladas. Seg´un estudios de f´osiles de diferentes especies de hom´ınidos, el Homo-habilis fue el hom´ınido precursor del lenguaje. En los cr´aneos del Homo-habilis se encontr´o la presencia de las ´areas cerebrales asociadas a la capacidad ling¨u´ıstica (´areas de Broca y Wernicke) y tambi´en signos de que la laringe hab´ıa iniciado su descenso. Los sucesores de esta especie potenciaron estas caracter´ısticas, pero se destaca al Homo-sapiens como el que tuvo la capacidad para el lenguaje de doble articulaci´on.[Domenec Campillo Valero 2005]
El lenguaje requiri´o entonces de unos factores para poder desarrollarse: tama˜no cerebral adecuado, canales apropiados e intensa interacci´on social [Segarra 2010].
Los ling¨uistas concuerdan en que el cambio cultural se produjo en la prehistoria y se dio una ´unica vez. Sin embargo, actualmente existen muchas lenguas e idiomas, lo cual demuestra que despu´es de que surgi´o el lenguaje - siendo este ´unico o m´ultiple- se dieron cambios muy r´apidos por lo que actualmente no es posible conocer sus fonemas, gram´atica o l´exico.
Hist´oricamente, el hombre ha propiciado la evoluci´on del lenguaje, pero hablando desde la temporalidad de cada hombre, es ´este el que adquiere el lenguaje, es ´este el que por medio de la repetici´on, la imitaci´on y la estimulaci´on aprende las convenciones que le permitir´an interactuar y comunicarse con su entorno y especialmente con otros hombres.[Domingo 1990] El hombre encuentra en el lenguaje el medio para interactuar con el universo, con su realidad. Todo ser humano es capaz de crear y desarrollar sistemas de lenguaje. El ser humano es la ´unica especie capaz de articular las palabras1 y las ideas que se generan en el cerebro casi inmediatamente.
1El ser humano tiene un lenguaje de doble articulaci´on: Se unen los fonemas en palabras y las palabras
7 El ser humano tiene una capacidad muy amplia con respecto a los fonemas que puede emitir, sin embargo, no todos los idiomas emplean todos los fonemas, e incluso dependiendo de la cultura, hay personas a las que no les es posible pronunciar ciertos sonidos. Se podr´ıa decir que hay una biblioteca universal de donde las civilizaciones empezaron a formar y establecer los lenguajes como se conocen hoy en d´ıa.
“Mientras la necesidad aumenta, el vocabulario se expande, al combinar viejas palabras o inventar nuevas, y las reglas se pueden volver m´as y m´as detalladas. En alg´un punto, mucho tiempo atr´as, el vocabulario y la gram´atica habr´ıan aparentemente “despegado”: todos los lenguajes hoy en d´ıa parecen ser iguales en su capacidad de expresar los matices y complejidades de la vida humana.”[Boeree 2007]
El lenguaje articulado opera con palabras integradas con sonidos que remiten a con-ceptos, y lo hace con signos ling¨u´ısticos. El signo tiene tanto significado como significante (Ferdinand de Saussure), y sustituye la idea o concepto para que ´esta pueda ser percep-tible, pero no tiene ninguna relaci´on con aquello que evoca, de manera que el signo es arbitrario. Los signos ling¨u´ısticos son fijos, limitados, pero su combinaci´on, inmersa en las convenciones sociales, permite infinitos significados conformando as´ı la lengua.
Se podr´ıa concebir al lenguaje como un medio descriptivo y referencial, pero la verdad es que no es objetivo de la realidad en lo m´as m´ınimo. El lenguaje es circunstancial, cambiante y relativo.
Las palabras no tienen un significado inherente, por lo tanto su significado surge de la relaci´on con las palabras que la acompa˜nan y en teor´ıa, cada palabra es libre de significar lo que sea.
Para Ferdinand de Saussure, el lenguaje es una red compleja de enunciados que se entremezclan para formar significados, todo es equ´ıvoco, ambiguo y transformable.[Vicente 2012]
El lenguaje consta de elementos iguales: el espacio, el punto, la coma y las letras y a´un as´ı es ilimitado.
Como se mencionaba anteriormente, la comunicaci´on es un proceso mediante el cual se transmite la informaci´on. Para que haya comunicaci´on, debe haber una coincidencia en el tipo de lenguaje, es decir que al codificar la informaci´on se hace siguiendo unos lineamientos o reglas preestablecidas por un sistema con el cual est´a familiarizado tanto emisor como receptor. El emisor codifica, el receptor decodifica[Pelayo & Cabrera 2001].
Los elementos de la comunicaci´on son:
• Fuente de informaci´on: Genera la informaci´on que ser´a transmitida.
• Mensaje: Dato o conjunto de datos a transmitir. Surge de la selecci´on de posibilidades en un conjunto de combinaciones simb´olicas posibles.
• Se˜nal: Signo o s´ımbolo de sistema convencional.
• Canal: Medio por el cual se transmite el mensaje codificado.
• Fuente de ruido: interferencia que distorsiona la se˜nal y puede cambiar el mensaje.
• Receptor: Decodifica para poder ser recibido por el destino
• Destino: Ente al que se dirige el mensaje.
Fuente de informaci´on
Emisor Canal Receptor
Destino
Fuente de ruido
Mensaje original
Se˜nal
Se˜nal recibida
Mensaje final
Figura 2.1. Modelo matem´atico de la comunicaci´on de Claude Elwood Shannon (1948)
2.1. Componentes del lenguaje
En la anterior secci´on se vio el lenguaje desde un punto de vista humano, sin embargo esos conceptos ....
de aqui en adelante le concepto de lenguajes se definir´a de la siguiente manera sistema-tica
Definici´on. Un lenguaje est´a formado por tres elementos (el l´exico, la sintaxis y la sem´antica), que permiten expresar y comunicar informaci´on entre entes, ya sean personas, animales, computadores, etc.
L´exico: El l´exico de un lenguaje lo conforman las unidades m´ınimas con significado com-pleto. A cada uno de estas unidades m´ınimas con significado se le conoce como lexema2. Por ejemplo, en el espa˜nol, las palabras y los s´ımbolos de puntuaci´on (que son usados para formar frases, oraciones y p´arrafos) conforman el l´exico. A tales lexemas se les asocia un significado preciso en t´erminos de las frases construidas con ellos.
Es el conjunto de palabras y signos de puntuaci´on que componen una lengua. Las palabras generalmente se componen de dos unidades m´ınimas: lexema y morfema,
2La palabra lexema usada en este libro tiene un significado similar (pero no igual) a la que se usa
2.1. COMPONENTES DEL LENGUAJE 9 las cuales aportan significado l´exico y gramatical, respectivamente. Una familia de palabras comparte un mismo lexema:
Arte, Artista, Art´ıstico, Artesanal.[Gram´aticas.net 2013]
Sintaxis: La sintaxis de un lenguaje explica la forma en que se pueden construir frases en el lenguaje a partir del l´exico. Usualmente la sintaxis se presenta como una colecci´on de reglas de reescritura que se definen con una gram´atica. ´Estas son reglas que indican como unos s´ımbolos de la gram´atica pueden ser reescritos por otros s´ımbolos de la gram´atica o por lexemas. La idea es que al final del proceso de reescritura s´olo se tengan lexemas. Por ejemplo en espa˜nol una frase se puede reescribir como un sujeto y un predicado, a su vez un sujeto se puede reescribir como un art´ıculo, un sustantivo y un adjetivo, finalmente un sustantivo puede ser reescrito como la palabra perro.
La sintaxis se presenta como una colecci´on de reglas que indican c´omo unos s´ımbolos pueden ser reescritos o descompuestos hasta tener s´olo lexemas.
Ejemplo. Una frase se reescribe como un sujeto y un predicado, un sujeto se re-escribe como art´ıculo y sustantivo, un predicado se rere-escribe como un sujeto, un adverbio y un adjetivo, as´ı
Figura 2.2. figure
La derivaci´on de la frase “El profesor har´a un examen muy dif´ıcil” se puede modelar mediante un ´arbol de derivaci´on como el siguiente.
⟨Frase⟩
⟨Sujeto⟩
⟨Art´ıculo⟩
El
⟨Sustantivo⟩
profesor
⟨Predicado⟩
⟨Verbo⟩
har´a
⟨Complemento⟩
⟨Sujeto⟩
⟨Art´ıculo⟩
un
⟨Sustantivo⟩
examen
⟨Adverbio⟩
muy
⟨Adjetivo⟩
dif´ıcil
2.2. Lenguajes de Programaci´
on
Para ordenarle a una m´aquina de computo (computador) que ejecute cierto procedi-miento o realice un calculo predeterminado, se dispone de los lenguajes de programaci´on, los cuales son definidos a partir del lenguaje matem´atico, por eso los computadores hacen exactamente lo que se les dice, no lo que se quiere que hagan. De esta manera, en progra-maci´on se tiene un lenguaje bien definido donde los significados de las frases son ´unicos (no ambiguos). Esto exige que el programador exprese de forma precisa lo que desea hacer. Al principio programar era muy complicado ya que se programa directamente en el hardware: se requer´ıa que los programas se escribieran cableando ciertas compuertas de la m´aquina. Un error en el cableado, es decir un error en el programa era dif´ıcil de detectar. Posteriormente el hombre construy´o m´aquinas de c´alculo para tareas muy espec´ıficas como investigaci´on y militares, usando dispositivos electro-mec´anicos como rel´es y tubos de vac´ıo. Se programaba revisando las salidas de los estados de los tubos (encendido ´o 1 y apagado ´o 0). A estos computadores sol´ıan acercarseles insectos en busca de calor da˜nando los tubos. De all´ı proviene el termino “bug” (bicho de programaci´on) conocido actualmente en programaci´on como un defecto en el programa.
Para reducir este problema, se intento separar el programa de la parte f´ısica, es as´ı como llegaron las tarjetas perforadas inspiradas en las m´aquinas telares de la ´epoca. De esta forma, los programas eran representados por huecos en las tarjetas, y la m´aquina realizaba lecturas de aquellos huecos en un orden espec´ıfico. De desordenarse las tarjetas el programa dejar´ıa de funcionar.
Estos computadores dieron paso a los elementos transistorizados. Las m´aquinas de c´omputo de esta generaci´on ten´ıan pocas facilidades de programaci´on. La comunicaci´on se establec´ıa en lenguaje de m´aquina, que como su nombre lo indica, depend´ıan de la m´aquina, lo que hacia poco portable al programa.
2.3. CLASIFICACI ´ON DE LOS LENGUAJES 11
2.3. Clasificaci´
on de los lenguajes
De acuerdo a la complejidad de la sintaxis y la abstracci´on necesaria los lenguajes de programaci´on se pueden se clasifican en las siguientes categor´ıas:
Lenguajes de m´aquina o de bajo nivel. Es el ´unico lenguaje que entiende el hardwa-re (m´aquina) y usa exclusivamente el sistema binario (ceros y unos). Este lenguaje es espec´ıfico para cada hardware (procesador, dispositivos, perif´ericos, etc.).
El programa (tanto c´odigos de instrucci´on como datos) es almacenado en memoria. Ejemplo. La estructura de una instrucci´on en lenguaje m´aquina es la siguiente:
CODIGO ARGUMENTO(S) 0010 00011010
1010 10111000 0110 11010001
Lenguaje ensamblador o de intermedio nivel. Ellenguaje ensamblador surgi´o de la necesidad de desarrollar un lenguaje de nivel mayor, que fuese m´as comprensible que el de la m´aquina pero que permitiera acceder a los detalles de ´estas. Por es-ta raz´on se desarroll´o una forma de construir un lenguaje intermedio que empleara mnem´onicos (palabras cortas escritas con caracteres alfanum´ericos), para codificar las operaciones. Los datos y/o direcciones son codificados generalmente como n´ ume-ros en un sistema hexadecimal. Generalmente es espec´ıfico (aunque no ´unico) para cada lenguaje de m´aquina. Entre los mnem´onicos t´ıpicos se tienen
ADD: Utilizado para sumar dos direcciones de memoria. SUB: Utilizado para restar dos direcciones de memoria. MUL: Utilizado para multiplicar dos direcciones de memoria.
MOV: Utilizado para mover un dato de un registro de la memoria en otro. CALL: Utilizado para ejecutar una subrutina.
INT: Utilizado para invocar una interrupci´on.
Ejemplo. La estructura de una instrucci´on en este lenguaje es la siguiente:
MNEMONICO ARGUMENTO(S) ADD R1, F4
UnEnsamblador es un software, generalmente escrito en lenguaje de m´aquina, que es capaz de traducir de lenguaje ensamblador a lenguaje de m´aquina. Con este lenguaje se dio un salto fundamental, donde se logr´o separar el programa de la m´aquina empleando los conceptos de m´aquina de Turing y la arquitectura de Von Neumann. Almacenando el programa en memoria y empleando el hardware como elemento de control.
Lo anterior dio origen a los sistemas operativos, logrando que la m´aquina completa pudiera controlar otro programa.
Lenguajes de alto nivel. Aunque ´util, el lenguaje ensamblador, es a´un muy dif´ıcil de entender, por eso se plante´o la idea de generar un lenguaje m´as parecido al lenguaje natural que tiene facilidades de aprendizaje, lectura, escritura, correcci´on, transfor-maci´on y conversi´on.
Estos lenguajes est´an basados en una estructura gramatical para codificar estructuras de control y/o instrucciones. Cuenta con un conjunto de palabras reservadas (escritas en lenguaje natural).
Adicionalmente ´estos permiten el uso de s´ımbolos aritm´eticos y relacionales para describir c´alculos matem´aticos, y generalmente representan las cantidades num´ericas mediante sistema decimal.
Ejemplo. La estructura de un programa escrito en un lenguaje de alto nivel tal como C++es la siguiente:
#include <iostream> #include <cstdlib>
using namespace std;
int main() {
cout << "Hola mundo" << endl; return EXIT_SUCCESS;
}
Gracias a su estructura gramatical, estos lenguajes permiten al programador olvidar el direccionamiento de memoria (donde cargar datos y/o instrucciones en la memo-ria), ya que esto se realiza autom´aticamente por parte de un programa compilador o interprete.
Los programas fuente escritos en lenguajes de alto nivel se compilan y a partir de estos se generara unprograma objeto de c´odigo de m´aquina (Figura 2.3). El lenguaje de programaci´on C entra en la clase de lenguajes compilados.
2.3. CLASIFICACI ´ON DE LOS LENGUAJES 13
Programa
fuente Compilador
Programa objeto
Lenguaje de alto nivel
Lenguaje de m´aquina
Figura 2.3. Estructura general de un compilador.
virtual (Figura 2.4). Para Algunos lenguajes interpretados tales como Java, el c´odigo ensamblador que se obtiene al traducir el programa fuente se llama Bytecode.
Programa
fuente Interprete
M´aquina virtual Programa
objeto
Lenguaje de alto nivel
Ensamblador Bytecode
Lenguaje de m´aquina
Compilaci´on l´ınea a l´ınea
Figura 2.4. Estructura general de un interprete.
Lenguajes de muy alto nivel. Tambi´en conocidos comolenguajes declarativos. Su defi-nici´on es m´as complicada que la de los anteriores. Se trata esencialmente de lenguajes taquigr´aficos que usan macroinstrucciones (se escribe m´as con menos). Cuando una operaci´on que requiere de cientos de l´ıneas en un lenguaje de alto nivel, en un len-guaje de muy alto nivel se requiere t´ıpicamente de unas cinco a diez l´ıneas. Entre las caracter´ısticas de estos lenguajes est´a el no uso de procedimientos. En los lenguajes de procedimientos se dice con detalle a la computadora las tareas a realizarse. En estos lenguajes se define solamente lo que se necesita computar, es decir, se enfatizan el qu´e hacer, en lugar del c´omo hacerlo. Para esto, el compilador se encarga de los detalles relativos a c´omo obtener el conjunto completo o parcial, y correcto de las soluciones.
Ejemplo. Entre tareas t´ıpicas de estos lenguajes se pueden:
• Generar reportes sobre un criterio especifico sobre un conjunto de datos. – Listar todas la personas que nacieron despu´es de 1990.
• Encontrar las soluciones a una consulta realizada a un sistema con respecto a una base de conocimientos.
Los lenguajes de muy alto nivel son f´aciles de leer, comprender y programar, no requieren altos conocimientos de arquitecturas computacionales, esto los hace alta-mente transportables.
El principal inconveniente de estos lenguajes es que no hacen uso eficiente de los recursos computacionales.
Lenguajes naturales. Se denominan as´ı por su acercamiento a la escritura de los len-guajes humanos (ingl´es, frances, espa˜nol, etc). El uso de un lenguaje natural con una base de conocimientos produce un sistema basado en el conocimiento. Una clase de estos sistemas son los Sistemas Expertos, que son base de la Inteligencia Artificial.
´
Estos est´an todav´ıa en su infancia, y actualmente puede considerarse que est´an m´as cerca de los lenguajes de muy alto nivel que de los lenguajes humanos.
Los lenguajes de alto y muy alto nivel se clasifican por el modelo conceptual que desa-rrollan. En la siguiente se presenta esta clasificaci´on.
2.4. Paradigmas de programaci´
on
Existen muchos lenguajes de programaci´on de alto nivel con sus diferentes versiones. Por esta raz´on es dif´ıcil su tipificaci´on, pero una clasificaci´on muy extendida desde el punto de vista de su forma de codificaci´on y la filosof´ıa de su creaci´on es la siguiente:
Lenguajes de programaci´on imperativos o estructurados. Describe la programa-ci´on en t´erminos del estado de la memoria del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador c´omo realizar una tarea. La implementaci´on de hardware de la mayor´ıa de computadores es imperativa ya que el hardware est´a dise˜nado para ejecutar c´odigo de m´aquina que es imperativo. Ejemplos: Cobol, Pascal, Fortran, C,
Ada, MathLab, SciLab.
Lenguajes de programaci´on declarativos. Basado en la utilizaci´on de predicados l´ogicos (l´ogicos) o funciones matem´aticas (funcionales), su objetivo es conseguir len-guajes expresivos en los que no sea necesario especificar c´omo resolver el problema (programaci´on convencional imperativa), sino qu´e problema se desea resolver. Los interpretes de los lenguajes declarativos tienen incorporado un motor de inferencia gen´erico que resuelve los problemas a partir de su especificaci´on. Ejemplos:Lisp,ML,
Haskell,Maude, Prolog, SQL.
Lenguajes de programaci´on orientados a objetos. Usa los objetos como instancias de clases y sus interacciones para dise˜nar aplicaciones y programas. Est´a basado en varias t´ecnicas, incluyendo abstracci´on, herencia, modularidad, polimorfismo y encapsulamiento. Usualmente los lenguajes orientados a objetos se usan en com-binaci´on con la programaci´on imperativa. Ejemplos: Smalltalk, C++, Java, Python,
Cap´ıtulo
3
L´
ogica Matem´
atica
3.1. L´
ogica Proposicional
Definici´on. Una proposici´on cerrada o simplemente proposici´on es un juicio, afirmaci´on o enunciado el cual se puede calificar como verdadero o falso, pero no ambos simult´ anea-mente.
• No es necesario saber de antemano s´ı es verdadero o falso.
• Pero con certeza el enunciado debe poseer alg´un valor fijo que lo califique.
• No debe haber incertidumbre acerca de s´ı se posee un valor que lo califique. Una proposici´on consta b´asicamente de tres partes:
• Un sujeto: del cual se dice algo o que ´el hace algo.
• Un verbo: que indica un estado o una acci´on que realiza el sujeto.
• El complemento: que describe o aclara el estado o acci´on que realiza el sujeto. Ejemplos. Los siguientes enunciados son ejemplos de proposiciones
Ejemplos. Los siguientes enunciados son ejemplos de proposiciones p: El jugador est´a en la casilla [2,2].
q: El archipi´elago de San Andr´es, Providencia y Santa Catalina pertenece a Colombia. r: El perro corre velozmente por la pradera jugando con la pelota azul y verde.
s: 2+2≠4. t: √3 125=5.
u: Existe vida alienigena inteligente. v: El universo tiene una longitud infinita. w: Est´a lloviendo.
x: Ma˜nana es s´abado.
Ejemplos. Los siguientes enunciados son ejemplos que no son proposiciones
• ¿Vamos ma˜nana a cine?; ¿Hacemos quiz?. (interrogaciones)
• ¡Ah, cu´anta mentira hay en esos argumentos!; ¡No te vayas!. (exclamaciones, deseos)
• No te aprendas la tablas de memoria; No te metas con ese muchacho; C´allate. (con-sejos, mandatos)
• El lindo y hermoso perro de Mar´ıa Antonieta; El ronroneo de los gatos. (no son afirmaciones que puedan valorarse)
• x + 9 = 21 (no hay un sujeto fijo predeterminado, ´este se denomina un enunciado abierto)
• Ma˜nana llover´a (hay incertidumbre acerca del valor que califica el enunciado, no tiene una calificaci´on fija y precisa)
3.1.1. El lenguaje de la l´
ogica proposicional
En la l´ogica proposicional, el l´exico esta definido por tres elementos: los s´ımbolos o letras proposicionales, los conectivos l´ogicos y los par´entesis.
Definici´on. El l´exico de la l´ogica proposicional se compone de tres tipos de lexemas: s´ımbolos y/o letras proposicionales: ⊥,⊺, p, q, r, s, t, p0, p1, . . .
conectivos l´ogicos: ¬,∨,∧,→,↔ s´ımbolos auxiliares: (, )
El s´ımbolo proposicional⊥(que se lee “bottom”) es usado para representar una propo-sici´on gen´erica que su significado es siempre falso1, mientras que ⊺ (que se lee “top”) es usado para representar una proposici´on gen´erica que su significado es siempre verdadero2. Las letras proposicionales p, q, r, s, t, p0, p1, . . . son usadas para representar proposicio-nes, por lo tanto el significado de una letra proposicional es el significado que tiene la proposici´on que dicha letra representa.
Losconectivos l´ogicos son operadores l´ogicos que permiten formar frases que se llaman proposiciones compuestas of´ormulas l´ogicas a partir de s´ımbolos y/o letras proposiciona-les.
En la definici´on m´as com´un de la l´ogica proposicional cl´asica, estos operadores son: La negaci´on: es un operador unario prefijo que se representa mediante el s´ımbolo (¬),
que se lee “no”.
3.1. L ´OGICA PROPOSICIONAL 17 La disyunci´on: es un operador binario infijo que se representa mediante el s´ımbolo (∨),
que se lee “o”.
La conjunci´on: es un operador binario infijo que se representa mediante el s´ımbolo (∧), que se lee “y”.
El condicional: oimplicaci´on es un operador binario infijo que se representa mediante el s´ımbolo (→), que se lee “entonces” o “implica”. A el primer operando del operador condicional se le suele llamar elantecedente de la implicaci´on y a el segundo operador se le suele llamar el consecuente de la implicaci´on.
El bicondicional: oequivalencia odoble implicaci´on es un operador binario infijo que se representa mediante el s´ımbolo (↔), que se lee “si y s´olo si”.
El significado que cada uno de estos conectivos le da a las proposiciones compuestas que se construyen con ellos se explicar´a m´as adelante3.
Los par´entesis son usados para agrupar de manera apropiada las f´ormulas o proposi-ciones compuestas de la l´ogica proposicional.
En la l´ogica proposicional la gram´atica se describe en t´erminos de f´ormulas bien for-madas (fbf) de manera recursiva4, es decir, suponiendo que los s´ımbolos y letras proposi-cionales son fbfs y definiendo nuevas fbfs en t´erminos de fbfs ya construidas.
Definici´on. La gram´atica de la l´ogica proposicional se define recursivamente en t´erminos de f´ormulas bien formadas (fbf), as´ı:
i) Si p es un s´ımbolo o letra proposicional, entonces pes una fbf. ii) Sif es fbf entonces ¬(f) es una fbf.
iii) Sif1 y f2 son fbfs entonces: (f1∨f2),(f1∧f2), (f1 →f2) y (f1 ↔f2) son fbfs. Ejemplo. Las siguientes secuencias de s´ımbolos son f´ormulas bien formadas:
• f1: ((p∨ ¬(q)) ↔ (r∧s)) • f2:¬((r→q) ∧ ¬(q↔s)) Ejemplo. Las siguientes secuencias de s´ımbolos no son f´ormulas bien formadas:
• f1: (∧ p)¬(r∧s)) • f2:((∨ p q) ↔ (q p →)
En el lenguaje de la l´ogica proposicional, a diferencia del espa˜nol u otro lenguaje natural, la sem´antica es f´acil de definir ya que los posibles sentidos que tiene una frase son solamente dos (verdadero y falso) y las frases que se pueden construir se definen de manera recursiva (f´ormulas bien formadas).
3Existen diversas formas de definir la l´ogica proposicional cl´asica dependiendo de los conectivos l´ogicos
usados (s´ımbolo y definici´on sem´antica). La presentada aqu´ı es la mas usual y se le dice cl´asica por la definici´on sem´antica de los conectivos l´ogicos.
4En una definici´on recursiva se definen casos particulares o base y los dem´as se definen como
Definici´on. La sem´antica de la l´ogica proposicional se define de manera recursiva sobre las f´ormulas bien formadas as´ı (ξ(f) se usa para representar el significado de la f´ormula bien formada f):
i) Si f es un fbf definida solamente por un s´ımbolo o letra proposicional, el significado de la f´ormula f es el mismo significado del s´ımbolo o letra proposicional.
ξ(⊺) ξ() ξ(p)
V F significado de la proposici´onp ii) Sif es una fbf, entonces:
ξ(f) ξ(¬(f))
V F
F V
iii) Sif1 y f2 son fbfs, entonces:
ξ(f1) ξ(f2) ξ((f1∨f2)) ξ((f1∧f2)) ξ((f1 →f2)) ξ((f1 ↔f2))
V V V V V V
V F V F F F
F V V F V F
F F F F V V
Ejemplo. Suponga que ξ(p) = F, ξ(q) = F, ξ(r) = V, entonces el significado (valor de verdad) de la f´ormula bien formada
f: ¬((¬(p) →q) ∧ ((r↔q) ∨ ¬()))
para hallar el significado def, primero se debe hallar el valor de verdad de los par´entesis m´as internos y luego con esos resultados ir hallando el valor de verdad de las f´ormulas m´as internas que vayan apareciendo, de esta manera
ξ(p) ξ(q) ξ(r) ξ(¬(p)) ξ((r↔q)) ξ(¬()) ξ((¬(p) →q))
F F V V F V F
ξ(((r↔q) ∨ ¬())) ξ(((¬(p) →q) ∧ ((r↔q) ∨ ¬())))
V F
ξ(¬((¬(p) →q) ∧ ((r↔q) ∨ ¬()))) V
3.1. L ´OGICA PROPOSICIONAL 19
3.1.2. Precedencia de conectivos l´
ogicos
Uno de las principales limitaciones de las f´ormulas bien formadas es el uso excesivo de los par´entesis, los cuales, en muchos casos, son redundantes. Para evitar este uso excesivo de par´entesis (sin que esto implique que toda f´ormula pueda ser escrita sin par´entesis), a los conectores l´ogicos se les asigna una prioridad que determina de manera exacta el orden en que los par´entesis se deben asumir si no se escriben. Entre m´as alta es la prioridad de un conector, los par´entesis asociados a ´el, tienen mayor prelaci´on, es decir, en el proceso de completar los par´entesis, los par´entesis asociados al operador con m´as prioridad son adicionados primero que los par´entesis de un conectivo con menor prioridad. Las priori-dades asignadas a los operadores se pueden observar el la tabla 3.1. Cuando en la f´ormula aparece el mismo operador varias veces y no se puede determinar a cu´al se le deben asignar los par´entesis primero, se asignan los par´entesis de izquierda a derecha.
Conectivo Prioridad Significado
(,) 1 m´as alta
¬ 2 alta
∧,∨ 3 media
→,↔ 4 baja
Tabla 3.1. Prioridad de los conectivos l´ogicos.
Ejemplo. La f´ormula p→q↔r∨ (s∧p) representa la fbf ((p→q) ↔ (r∨ (s∧p))), ya que completando par´entesis:
i) p→q↔r∨ (s∧p)
ii) p→q↔ (r∨ (s∧p)) (∨prioridad 3)
iii) (p→q) ↔ (r∨ (s∧p)) (→ m´as a la izquierda prioridad 4) iv) ((p→q) ↔ (r∨ (s∧p))) (↔ prioridad 4)
3.1.3. Interpretaciones y clasificaci´
on de las f´
ormulas l´
ogicas
Dada una f´ormulaf yθf su respectiva colecci´on de letras proposicionales, una interpre-taci´ondeθf es una asignaci´on de valores de verdad a cada una de las letras proposicionales de la colecci´onθf.
Ejemplo. Sea θf = {q, r, s} la colecci´on de letras proposicionales de una f´ormula f. 1. Una interpretaci´on de θf es: {ξ(q) =V, ξ(r) =V, ξ(s) =F}.
Proposici´on. Si una colecci´onθf tiene n letras proposicionales, entonces θ tiene en total 2n interpretaciones diferentes.
Nota. El valor de verdad de una f´ormula f para una interpretaci´on I de la colecci´on de s´ımbolos proposicionales θf se notar´a como ξI(f).
Ejemplo. Las interpretaciones posibles de la colecci´on de letras proposicionales θf = {p, q, r}, entonces θf tiene ocho (23=8) interpretaciones:
ξ(p) ξ(q) ξ(r)
V V V
V V F
V F V
V F F
F V V
F V F
F F V
F F F
3.1.3.1. Tautolog´ıas, contradicciones y contingencias
Definici´on. Una f´ormulaf se dicetautolog´ıa si para cualquier interpretaci´on de su colec-ci´on de letras proposicionales, su significado (valor de verdad) esV, se dicecontradicci´on si para cualquier interpretaci´on su significado es F y se dicecontingencia si no es tautolog´ıa ni contradicci´on.
Ejemplo. Determinar el tipo (tautolog´ıa, contingencia o contradicci´on) de cada una de las siguientes f´ormulas:
1. f =p∨q↔q∨p 2. f =p∧ ¬p 3. f =p∧ (q∨r) Soluci´on.
1. Si f =p∨q↔q∨pentonces θf = {p, q}
p q p∨q q∨p p∨q↔q∨p
V V V V V
V F V V V
F V V V V
F F F F V
3.1. L ´OGICA PROPOSICIONAL 21 p ¬p p∧ ¬p
V F F F V F
entonces f es contradicci´on.
3. Si f =p∧ (q∨r) entoncesθf = {p, q, r}
p q r q∨r p∧ (q∨r)
V V V V V
V V F V V
V F V V V
V F F F F
F V V V F
F V F V F
F F V V F
F F F F F
entonces f es contingencia.
3.1.3.2. Tablas de verdad
Al esquema de presentar todas las interpretaciones y el valor de verdad de la f´ormula se le llama tabla de verdad de la f´ormula f. Las tablas de verdad son muy ´utiles para realizar demostraciones a nivel sem´antico, ya que ellas no solamente se pueden usar con letras proposicionales sino con f´ormulas bien formadas, es decir, considerando toda una f´ormula bien formada como verdadera o falsa y construyendo la tabla de verdad para dichas f´ormulas.
3.1.4. Argumentaci´
on y leyes l´
ogicas
En la l´ogica proposicional cl´asica, una ley l´ogica es unaequivalencia oimplicaci´on entre f´ormulas l´ogicas. Tal equivalencia o implicaci´on l´ogica debe ser verdadera para cualquier interpretaci´on de las letras proposicionales que conforman las f´ormulas relacionadas por la equivalencia (debe ser tautolog´ıa). Las m´as famosas leyes l´ogicas son: Modus Ponen, Modus Tollen,Inconsistencia,Doble negaci´on, Conmutatividad, Distributivas, Asociativas y De Morgan.
3.1.4.1. Argumentaci´on l´ogica directa
Ejemplo. A continuaci´on se presenta un argumento directo para demostrar el siguiente teorema.
Demostraci´on. Sin es impar, entonces n se puede escribir en la forma n=2m+1, con m en los enteros; as´ı que n2= (2m+1)2 =4m2+4m+1= 2(2m2+2m) +1=2k+1, donde k=2m2+2m es un entero. De lo anterior se puede concluir que n2 es impar. ◻✓ Teorema. Sea n un n´umero entero, si n2 es impar, entonces n es impar.
Demostraci´on. ¿? ◻✓
Para demostrar el anterior teorema, un argumento directo es muy complicado, por lo que una estrategia m´as eficiente es utilizar un argumento que sea l´ogicamente equivalente al argumento directo, aqu´ı es donde resultan ´utiles las f´ormulas l´ogicamente equivalentes.
3.1.4.2. Equivalencias L´ogicas
Definici´on. Sean f1 y f2 dos f´ormulas, se dice que f1 es l´ogicamente equivalente a f2, (f1⇔f2) si y solamente si la f´ormula
f1↔f2 es una tautolog´ıa.
Ejemplo. Las f´ormulasf1 = ¬(α∧β)yf2= ¬α∨¬βson l´ogicamente equivalentes, es decir, ¬(α∧β) ⇔ ¬α∨ ¬β, para cualesquiera f´ormulas α y β. Para esto, se debe demostrar que ¬(α∧β) ↔ ¬α∨ ¬β es una tautolog´ıa; como se aprecia en la siguiente tabla
α β α∧β ¬(α∧β) ¬α ¬β ¬α∨ ¬β ¬(α∧β) ↔ ¬α∨ ¬β
V V V F F F F V
V F F V F V V V
F V F V V F V V
F F F V V V V V
como se observa, f1↔f2 es una tautolog´ıa, por lo tanto, f1 y f2 son l´ogicamente equiva-lentes.
Las equivalencias l´ogicas m´as conocidas se presentan en la tabla 3.2. La demostraci´on de las mismas se deja al lector.
3.1.4.3. Argumentaci´on l´ogica indirecta por la contrarrec´ıproca Teorema. Sea n un n´umero entero, si n2 es impar, entonces n es impar. Demostraci´on. Aplicando la equivalencia contrarrec´ıproca
3.1. L ´OGICA PROPOSICIONAL 23
Equivalencia Nombre
α∨ ¬α⇔ ⊺ Tercio exclu´ıdo α∧ ¬α⇔ Contradicci´on
α∨ ⇔α
Identidad α∧ ⊺ ⇔α
α∨ ⊺ ⇔ ⊺
Dominaci´on α∧ ⇔
α∨α⇔α
Idempotencia α∧α⇔α
¬¬α⇔α Doble negaci´on α∨β⇔β∨α
Conmutativas α∧β⇔β∧α
α↔β⇔β↔α (α∧β) ∧γ⇔α∧ (β∧γ)
Asociativas (α∨β) ∨γ⇔α∨ (β∨γ)
α∨ (β∧γ) ⇔ (α∨β) ∧ (α∨γ)
Distributivas α∧ (β∨γ) ⇔ (α∧β) ∨ (α∧γ)
α→ (β→γ) ⇔ (α→β) → (α→γ) ¬(α∧β) ⇔ ¬α∨ ¬β
De Morgan ¬(α∨β) ⇔ ¬α∧ ¬β
α→β ⇔ ¬β→ ¬α Contrarrec´ıproca α↔β⇔ (α→β) ∧ (β→α) Material
α→ (β →γ) ⇔α∧β→γ Exportaci´on Tabla 3.2. Equivalencias l´ogicas.
α=n2 es impar y β=n es impar entonces
¬α=n2 es par y ¬β=n es par
Por lo tanto demostrar el anterior teorema es equivalente a demostrar que si n es par, entonces n2 es par
para esto, obs´ervese que si n es par, entonces n se puede escribir en la forma n=2m, con m en los enteros; as´ı que n2 = (2m)2 =4m2 =2(2m2) =2k, donde k =2m2 es un entero y por lo tanto se puede concluir que n2 es par. Del razonamiento anterior se tiene que por la equivalencia contrarrec´ıproca queda demostrada la proposici´on original. ◻✓ De los teoremas anteriores se tiene que para que n2 sea impar es necesario que n sea impar, y de forma similar para que n sea impar es necesario que n2 sea impar. Esto se expresa como que para que n2 sea impar es raz´on necesaria y suficiente que n sea impar, de donde ambas proposiciones son verdaderas o ambas son falsas y se puede enunciar el siguiente teorema bidireccional general.
Demostraci´on. A partir de las demostraciones previas. ◻✓
3.1.4.4. Implicaciones L´ogicas
En algunos casos no es necesario exigir que dos f´ormulas sean equivalentes, tal vez sea ´
util exigir que en una direcci´on de la equivalencia la f´ormula del consecuente sea verdadera cuando la f´ormula del antecedente sea verdadera, o lo que es lo mismo, que la f´ormula del antecedente sea falsa cuando la f´ormula del consecuente sea falsa.
Ejemplo. A continuaci´on se presenta un argumento directo para demostrar el siguiente teorema.
Teorema. Sean m y n n´umeros enteros, si m es par y n es par, entonces m+n es par.
Demostraci´on. Si m es par y n es par, entonces m y n se pueden escribir en la forma m =2k1 y n=2k2, con k1 y k2 en los enteros; as´ı que m+n =2k1+2k2 =2(k1+k2) =2k, donde k=k1+k2 es un entero. De lo anterior se puede concluir que m+n es par. ◻✓
Obs´ervese que en el teorema anterior el consecuente (m+n es par) es verdadero cuando el antecedente (m es par y n es par) es verdadero.
Ahora, para el enunciado que se obtiene cuando se toma el teorema en direcci´on rec´ıpro-ca,
Si m+n es par, entonces, m es par y n es par.
se puede observar que cuando m=3 impar y n=5 impar, entoncesm+n=8 par, se tiene que el consecuente es verdadero y el antecedente es falso, de donde la implicaci´on es falsa y no se tendr´ıa una equivalencia l´ogica, sino que se cumplir´ıa en s´olo una direcci´on.
Cuando una f´ormula (llamada conclusi´on) se cumple siempre que una colecci´on de f´ormulas (llamadas premisas) se cumplan simult´aneamente, se dice que las premisas im-plican la conclusion. Formalmente esto se expresa de la siguiente manera.
Definici´on. Sea Γ= {f1, f2, . . . , fn}una colecci´on de f´ormulas (premisas) yg una f´ormula (conclusi´on), se dice que Γ implica l´ogicamente a g (Γ⇒g), si y solamente si
(f1∧f2∧ ⋯ ∧fn) →g es una tautolog´ıa.
3.1. L ´OGICA PROPOSICIONAL 25 α β ¬β α→β ¬β∧ (α→β) ¬α (¬β∧ (α→β)) → ¬α
V V F V F F V
V F V F F F V
F V F V F V V
F F V V V V V
como se observa, (¬β∧ (α→β)) → ¬α es una tautolog´ıa, por lo tanto, Γ = {¬β, α→β} implica l´ogicamente ag = ¬α.
Las implicaciones l´ogicas m´as conocidas se presentan en la tabla 3.3. Se deja al lector la demostraci´on de las mismas.
Implicaci´on Nombre
{α, β} ⇒ (α∧β) Combinaci´on
{α, β} ⇒α Ley de simplificaci´on
{α, β} ⇒β Variante de la ley de simplificaci´on {α} ⇒ (α∨β) Ley de adici´on
{β} ⇒ (α∨β) Variante de la adici´on
{α, α→β} ⇒β Modus Ponendo Ponens (Modus ponens) {¬β, α→β} ⇒ ¬α Modus Tollendo Tollens (Modus tollens) {α→β, β→γ} ⇒ (α→γ)
Silogismos hipot´eticos {α↔β, β↔γ} ⇒ (α↔γ)
{¬α, α∨β} ⇒β
Silogismos disyuntivos {α,¬α∨ ¬β} ⇒ ¬β
{¬β, α∨β} ⇒α Variante de los silogismos {β,¬α∨ ¬β} ⇒ ¬α disyuntivos
{α→β,¬α→β} ⇒β Ley de casos
{α↔β} ⇒ (α→β) Eliminaci´on de equivalencia {α↔β} ⇒ (β→α) Variante de eliminaci´on
de equivalencia
{β→α, α→β} ⇒ (α↔β) Introducci´on de la equivalencia {α,¬α} ⇒β Ley de inconsistencia
{α→β, γ →τ, α∨γ} ⇒ (β∨τ)
Dilemas constructivos {α→β, γ →τ,¬β∨ ¬τ} ⇒ (¬α∨ ¬γ)
Tabla 3.3. Implicaciones l´ogicas.
3.1.4.5. Argumentaci´on mediante implicaciones l´ogicas
Dado un tri´angulo △ABC. Si el △ABC no tiene todos sus ´angulos iguales; y, si el △ABC tiene todos sus lados iguales (es equil´atero), entonces todos los ´angulos internos del △ABC son iguales. De lo anterior, se puede concluir que el △ABC no es equil´atero.
β=El △ABC tiene todos sus ´angulos internos iguales α=El △ABC tiene todos sus lados iguales
usando la implicaci´on l´ogica Modus tollens ({¬β, α→β} ⇒ ¬α) se concluye ¬α=El △ABC no tiene todos sus lados iguales
=El △ABC no es equil´atero
3.2. L´
ogica de predicados
En la l´ogica proposicional no definen objetos variables, siempre se hace referencia a un objeto espec´ıfico. As´ı como se puede hablar de una proposici´on como la siguiente “p: el ni˜no juega con la pelota roja y blanca”, tambi´en se podr´ıa hablar de una proposici´on como “q: la foca juega con la pelota azul y verde”, en este caso las proposiciones son similares, pues lo que cambia es el sujeto y/o el complemento.
A partir de los casos anteriores se puede pensar en definir enunciados sin un sujeto o un complemento espec´ıfico. Por ejemplo el sujeto puede cambiar (la foca, el ni˜no) y tambi´en el complemento puede cambiar (la pelota roja y blanca, la pelota azul y verde) de acuerdo a una realidad. Esto da como resultado frases del estilo “xjuega con y”.
x e y son objetos que est´an relacionados mediante un predicado y dependiendo de los objetos, se obtiene una proposici´on que es V o es F. En t´erminos de los sujetos y los complementos se define un predicado o proposici´on abierta a una frase que dice algo acerca del sujeto que lo relaciona con el complemento. En el ejemplo anterior el predicado es “juega con” y se escribir´ıa simb´olicamente mediante le expresi´on juegaCon(x, y), que se interpreta conceptualmente como “xjuega con y”, a las variables xey se les denomina variables libres.
Un predicado da una forma m´as amplia de hablar. Se podr´ıa tener una colecci´on {0,1,2,3,4,5,6,7,8,9}, y sobre esta colecci´on se puede definir un predicado. Por ejem-plo, se podr´ıa hablar del predicadoesP ar(x). Si se toma el predicado y se asigna al sujeto x el valor 3 entonces esP ar(3) tendr´a un valor de verdad F, si se toma el predicado y se asigna al sujeto x el valor 6 entoncesesP ar(6) tendr´a un valor de verdadV.
A una colecci´on de objetos a los cuales se les desea aplicar el predicado se le llama el universo del discurso. Cuando en un predicado se reemplaza una variable libre x por un valor concreto del universo del discurso, se dice que se est´a “instanciando” la variable x, la f´ormula resultante se dice que es una “instancia” o del predicado inicial.
3.2. L ´OGICA DE PREDICADOS 27
3.2.1. Cuantificadores
Pueden haber predicados como esDigito(x) que para todos los objetos del univer-so del discuruniver-so {0,1,2,3,4,5,6,7,8,9} son V. Para este mismo universo, el predica-do esM ayora10(x) es F para todos los elementos de dicha colecci´on, y el predicado esM oduloAditivo(x) esV s´olo para x=0 y para el resto de los casos ser´aF.
Cuando se desea expresar que un predicado P(x) describe una propiedad sobre todos los elementos del universo del discurso o para s´olo algunos, se dice que se est´a cuantificando la variable x, y ahora la variable libre pasa a ser una variable ligada.
Cuando se desea expresar que un predicado describe una propiedad para todos los elementos del universo del discurso, se dice que se est´a cuantificando universalmente. Cuando el predicado describe una propiedad para algunos de los elementos del universo del discurso, se dice que se est´a cuantificando existencialmente.
Para expresar estas nuevas propiedades se necesitan nuevos s´ımbolos, y estos son los s´ımbolos ∀ y ∃ que permiten ampliar el l´exico y se utilizan de la siguiente manera:
• Para notar que una variable x est´a cuantificada universalmente en un predicado P(x)se utiliza la expresi´on
∀xP(x) que se lee “para todo x P(x)”.
• Para notar que una variable x est´a cuantificada existencialmente en un predicado P(x)se utiliza la expresi´on
∃xP(x) que se lee “existe x tal que P(x)”.
3.2.2. Sem´
antica de los cuantificadores
Cuando en una expresi´on una variable est´a cuantificada universalmente, se tiene que ξ(∀xP(x)) ⇔ξ(P(x1) ∧P(x2) ∧ ⋯ ∧P(xn))
para todo valor xi del universo del discurso.
Cuando en una expresi´on una variable est´a cuantificada existencialmente, se tiene que ξ(∃xP(x)) ⇔ξ(P(x1) ∨P(x2) ∨ ⋯ ∨P(xn))
para todo valor xi del universo del discurso.
Ejemplo. Si se tienen los n´umeros d´ıgitos como universo del discurso y se establece como predicado
se tiene queξ(∃xP(x)) =V y ξ(∀xP(x)) =F; esto porque el predicado ser´a cierto cuando se instancia la variable con los valores 0, 4 y 8 (P(0),P(4), P(8)), aqu´ı se ha tomado la definici´on de m´ultiplo como
Definici´on. Se dice que un n´umero m es m´ultiplo de d (d≠0) si existe un entero k, tal que se satisface la igualdad m=dk, esto se expresa como que “m es un m´ultiplo de d”. A el n´umerod se le conoce como divisor o factor de m, lo que se denota como d∣m y se lee “d divide a m”. Si d no divide a m esto se denotar´a comod ∣Òm.
3.2.3. Leyes de De Morgan para cuantificadores
Con respecto a los cuantificadores, se tienen la siguientes equivalencias que expresan leyes an´alogas a las leyes de De Morgan para la l´ogica de proposiciones:
¬∃xP(x) ⇔ ∀x¬P(x): no existe un x que cumpla el predicado P quiere decir que para todo x no se cumple el predicado P.
¬∀xP(x) ⇔ ∃x¬P(x): no todo x cumple el predicado P es decir que existe un x que no cumple el predicado.
3.2.4. Reglas de inferencia sobre f´
ormulas cuantificadas
3.2.4.1. Particularizaci´on universal
Sea D un universo del discurso, entonces se tiene la siguiente regla de inferencia. ∀x P(x)
∴ P(d) si d∈D
Si se piensa por un segundo en el argumento atribuido a Arist´oteles,
“Todo hombre es Mortal, Arist´oteles es un hombre entonces Arist´oteles es Mor-tal”
Uno de los universos de discurso podr´ıa ser
U =todas las cosas pensadas por Arist´oteles.
En este caso se pueden identificar dos predicados: M ortal(x) y Humano(x). ∀x(Humano(x) →M ortal(x))
3.2. L ´OGICA DE PREDICADOS 29 en este razonamiento se observa que Arist´oteles realiza una particularizaci´on univer-sal, esto consiste en reemplazar una variable que est´a cuantificada universalmente por un objeto del universo. ´Este es un argumento valido, ya que si se asume la veraci-dad del predicado ∀x(Humano(x) → M ortal(x)) y tambi´en la veracidad de la pro-posici´on Humano(Aristoteles), entonces la conclusi´on M ortal(Aristoteles) debe ser verdadera, ya que si no fuese as´ı, entonces, la proposici´on (Humano(Aristoteles) → M ortal(Aristoteles))seria falsa, y eso har´ıa que el predicado∀x(Humano(x) →M ortal(x)) fuese falso, lo que contradice la suposici´on de su veracidad.
3.2.4.2. Generalizaci´on universal
Sea D un universo del discurso, entonces se tiene la siguiente regla de inferencia. si P(d) para cada d∈D
∴ ∀x P(x)
Ejemplo. Para los integrantes de la Familia Simpson se cumple que:
•
Bart vive en Springfield.•
Lisa vive en Springfield.•
Maggie vive en Springfield.•
Homero vive en Springfield.•
Marge vive en Springfield.Mediante generalizaci´on universal se puede inferir que
“Cada miembro de la Familia Simpson vive en Springfield.”
3.2.4.3. Particularizaci´on existencial
Sea D un universo del discurso, entonces se tiene la siguiente regla de inferencia. ∃x P(x)
∴P(d)para alguna d∈D
Ejemplo. De los planetas en el Sistema Solar
☼
, existen planetas que poseen vida inte-ligente. Mediante particularizaci´on existencial se puede inferir que“Alg´un planeta del Sistema Solar
☼
, como La Tierram
, posee vida inteligente”.3.2.4.4. Generalizaci´on existencial
30 CAP´ITULO 3. L ´OGICA MATEM ´ATICA si P(d) para alguna d∈D
∴ ∃x P(x)
Ejemplo. En los personajes de Los Simpson, El se˜nor Burns
es el jefe de Homero . Mediante generalizaci´on existencial se puede inferir que“Existe un personaje de Los Simpson que es jefe de Homero
.”.3.2.5. L´
ogica de predicados en programaci´
on
Cuando un profesor revisa un programa, ´este eval´ua que para toda entrada dada, se tenga una salida esperada. Si el profesor encuentra un caso para el que el programa no muestra una salida esperada (particularizaci´on universal), se concluye que el programa no funciona pues se espera que haga lo que debe hacer para todos los posibles casos contemplados.
La l´ogica de predicados ayuda a establecer precondiciones en la elaboraci´on de los programas. Validaciones de este tipo incluyen verificaciones en los tipos de datos, por ejemplo:
• El c´alculo de per´ımetros y ´areas debe funcionar solamente con n´umeros positivos.
• El valor de una temperatura requiere que la medici´on se realice con magnitudes continuas.
3.3. EJERCICIOS 31
3.3. Ejercicios
1. De los siguientes enunciados ¿cu´ales son proposiciones y cu´ales no?, justifique su respuesta.
• Tom Hanks ha ganado dos premios Oscar como mejor actor por dos a˜nos con-secutivos.
• Dame una cerveza.
• Colombia gan´o ocho medallas ol´ımpicas en Londres 2012.
• Todo n´umero primo es impar.
• 1+1=2.
• La diferencia de dos primos.
• Todo n´umero par mayor que 2 puede escribirse como suma de dos n´umeros primos. (Christian Goldbach, 1742).
• ¿Que hora es?.
• xn+yn=zn.
• x+y=z+y si x=z.
2. De las siguientes secuencias de s´ımbolos ¿cu´ales son f´ormulas bien formadas y cu´ales no?.
• ((¬(p) →r) ∧ (p ¬q))
• ((¬(p) ↔ ¬(q)) ↔ (q→r))
• (p∧q) ∨ (q→p))
• ((p↔p) ∧ (p→p) ∨ (p∧ ¬(p)))
3. Escriba la f´ormula bien formada que representa cada una de la siguientes secuencias de s´ımbolos:
• p∧q↔r∨s→q
• p→q→q→p
• ¬p↔q∨ ¬r∨ (q→r) ↔ ¬¬q
• p∨ (q∧r) ↔p∨q∧ (p∨q)
4. Hallar el significado de cada f´ormula que se especifica a continuaci´on con respecto a la interpretaci´on definida para ´esta.
• f =p∧q↔r∨s→q, si ξ(p) =V, ξ(q) =V, ξ(r) =V,ξ(s) =F.
• f =p→q→q→p, si ξ(p) =V, ξ(q) =F.
• f = ¬p↔q∨ ¬r∨ (q→r) ↔ ¬¬q, si ξ(p) =F, ξ(q) =V, ξ(r) =V.
5. Verifique las equivalencias l´ogicas de la tabla 3.2. 6. Verifique las implicaciones l´ogicas de la tabla 3.3.
7. Verifique que las f´ormulas f1 = p∧q ∨r y f2 = p∧ (q ∨r) no son l´ogicamente equivalentes.
8. Con los operadores l´ogicos ¬ y ∧ es posible expresar los otros operadores l´ogicos (∨,→,↔) de forma equivalente, de la siguiente manera
p∨q⇔ ¬(¬p∧ ¬q) p→q⇔ ¬(p∧ ¬q)
p↔q⇔ ¬(p∧ ¬q) ∧ ¬(q∧ ¬p)
verificar que efectivamente los operadores l´ogicos ∨,→,↔ se pueden expresar en t´erminos de los operadores l´ogicos¬ y ∧.
9. Con los operadores l´ogicos ¬ y ∨ es posible expresar los otros operadores l´ogicos (∧,→,↔). Encontrar f´ormulas l´ogicas que contengan s´olo los operadores l´ogicos ¬ y ∨que sean equivalentes a las f´ormulasp∧q,p→q,p↔qy verifique que efectivamente son l´ogicamente equivalentes.
10. Adicional a los conectivos l´ogicos presentados, existen otros conectivos, tal como el conectivo o exclusivo (⊗), el cual es muy utilizado en computaci´on, y tiene como objetivo que dadas dos f´ormulas f1 y f2, la operaci´on f1⊗f2 ser´a ´unicamente ver-dadera cuando se cumpla que s´olo una de la f´ormulas f1 of2 sea verdadera. De esta manera, la sem´antica para este conectivo es la siguiente
ξ(f1) ξ(f2) ξ(f1⊗f2)
V V F
V F V
F V V
F F F
(a) Encuentre una f´ormula que sea equivalente l´ogicamente a la f´ormula f1 ⊗f2, que s´olo utilice los operadores l´ogicos ¬y ∧.
(b) Encuentre una f´ormula que sea equivalente l´ogicamente a la f´ormula f1 ⊗f2, que s´olo utilice los operadores l´ogicos ¬y ∨.
11. Adicional a los conectivos l´ogicos presentados, existe otro conectivo, tal como el conectivo barra de Sheffer (∣), para el cual su sem´antica es la siguiente
ξ(f1) ξ(f2) ξ(f1 ∣f2)
V V F
V F V
F V V