263
La ciencia de programar Jonatan Gom´ ez Perdomo, Ph.D. Arles Rodr´ ıguez, Ph.D.(c) Camilo Cubides, Ph.D.(c)

Libro programacion.pdf

  • Upload
    emi10

  • View
    123

  • Download
    5

Embed Size (px)

Citation preview

  • La ciencia de

    programar

    Jonatan Gomez Perdomo, Ph.D.

    Arles Rodrguez, Ph.D.(c)

    Camilo Cubides, Ph.D.(c)

  • Indice general J

    Indice general I

    Indice de tablas VII

    Indice de figuras IX

    1. Introduccion 1

    1.1. Generaciones de los computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    2. Lenguajes 5

    2.1. Componentes del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.2. Lenguajes de Programacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3. Clasificacion de los lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.4. Paradigmas de programacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3. Logica Matematica 15

    3.1. Logica Proposicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.1.1. El lenguaje de la logica proposicional . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.1.2. Precedencia de conectivos logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.1.3. Interpretaciones y clasificacion de las formulas logicas . . . . . . . . . . . . 19

    3.1.3.1. Tautologas, contradicciones y contingencias . . . . . . . . . . . . 20

    3.1.3.2. Tablas de verdad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.4. Argumentacion y leyes logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    I

  • II INDICE GENERAL

    3.1.4.1. Argumentacion logica directa . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.4.2. Equivalencias Logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3.1.4.3. Argumentacion logica indirecta por la contrarrecproca . . . 22

    3.1.4.4. Implicaciones Logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.1.4.5. Argumentacion mediante implicaciones logicas . . . . . . . . . . 25

    3.2. Logica de predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.2.1. Cuantificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    3.2.2. Semantica de los cuantificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    3.2.3. Leyes de De Morgan para cuantificadores . . . . . . . . . . . . . . . . . . . . . 28

    3.2.4. Reglas de inferencia sobre formulas cuantificadas . . . . . . . . . . . . . . . 28

    3.2.4.1. Particularizacion universal . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3.2.4.2. Generalizacion universal . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.2.4.3. Particularizacion existencial . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.2.4.4. Generalizacion existencial . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.2.5. Logica de predicados en programacion . . . . . . . . . . . . . . . . . . . . . . . 30

    3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4. Teora de conjuntos 35

    4.1. Conceptos basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.1.1. Conjunto y elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.1.2. Especificacion de Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.1.2.1. Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.1.2.2. Comprension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.1.3. El conjunto vaco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    4.1.4. Representacion 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. Construccion de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.2.1. Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

  • INDICE GENERAL III

    4.2.2. Interseccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.2.3. Complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.2.4. Diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.2.4.1. Diferencia simetrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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. Introduccion a los lenguajes de programacion 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 distribucion de los numeros reales de maquina . 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 caracter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    5.3. Operadores y expresiones aritmeticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    5.3.1. Operadores aritmeticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    5.3.2. Operadores de asignacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    5.3.3. Conversion de tipos de datos numericos (typecasting) . . . . . . . . . . . . 71

    5.3.4. Operadores logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    5.3.5. Operadores de igualdad y relacionales . . . . . . . . . . . . . . . . . . . . . . . . 73

    5.3.6. Precedencia de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.4. Evaluacion de secuencias de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

  • IV INDICE GENERAL

    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. Funcion parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    6.2.1. Propiedades de las funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    6.3. Extension de una funcion parcial a una funcion total . . . . . . . . . . . . . . . . . . 89

    6.4. Funciones importantes en computacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    6.5. Composicion de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    6.5.1. Evaluacion como composicion de funciones . . . . . . . . . . . . . . . . . . . . 100

    6.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    7. Funciones en programacion y la estructura condicional 107

    7.1. Compilacion y ejecucion de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    7.2. Funciones con mas de un parametro de entrada . . . . . . . . . . . . . . . . . . . . . . 112

    7.3. La estructura de control condicional s (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 de conmutacion (switch) . . . . . . . . . . . . . . . . . . . . . 124

    7.4. Validacion de datos usando condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

    7.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    8. Flujos de entrada y salida 133

    8.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    8.2. La jerarqua 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 estandares . . . . . . . 137

    8.4. Flujos de entrada y salida desde y hacia archivos . . . . . . . . . . . . . . . . . . . . . 137

    8.4.1. Uso de archivos como flujos de entrada . . . . . . . . . . . . . . . . . . . . . . . 138

  • 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. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    9.2. Ejemplos de problemas que pueden resolverserecursivamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    9.3. Teorema fundamental de la programacion recursiva . . . . . . . . . . . . . . . . . . . 168

    9.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    10.Estructuras de programacion cclicas 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. Simulacion de ciclos usando funciones recursivas . . . . . . . . . . . . . . . . . . . . . 187

    10.5. Teorema fundamental de la programacion estructurada . . . . . . . . . . . . . . . . 189

    10.6. Validacion de datos usando ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    10.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    11.Vectores o arreglos unidimensionales 195

    11.1. Conceptos y notacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    11.1.1. El conjunto de los vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    11.2. Los arreglos o vectores en computacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    11.2.1. Funciones para utilizar arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    11.2.1.1. Creacion de arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    11.2.1.2. Eliminacion 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.Cadenas de caracteres 219

  • VI INDICE GENERAL

    12.1. Repaso del tipo caracter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    12.2. Cadenas (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    12.3. Funciones generales sobre cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    12.3.1. Creacion de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    12.3.2. Eliminacion 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 numeros enteros o reales . . . . . . . . . . . . . . . . 227

    12.3.5. Un ejemplo completo sobre manipulacion de cadenas . . . . . . . . . . . . 227

    12.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    13.Matrices o arreglos bidimensionales 231

    13.1. Conceptos y notacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

    13.2. Definiciones alternativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    13.2.1. El conjunto de las matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

    13.3. Las matrices en computacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

    13.3.1. Funciones para utilizar matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    13.3.1.1. Creacion de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    13.3.1.2. Eliminacion 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

    Bibliografa 251

  • Indice de tablas

    3.1. Prioridad de los conectivos logicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.2. Equivalencias logicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.3. Implicaciones logicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5.1. Precedencia de los operadores en C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    6.1. Pesos atomicos del Potasio (K), el Cloro (Cl) y el Oxgeno (O). . . . . . . . . . 97

    12.1. Longitud de cadena para nombres de archivos en distintos sistemas operativos.223

    VII

  • VIII INDICE DE TABLAS

  • Indice de figuras

    2.1. Modelo matematico de la comunicacion 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. Representacion del conjunto A = {1,2,3,4,8,,,_} mediante diagramasde Venn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    4.2. Representacion del conjunto A B mediante diagramas de Venn. . . . . . . . . 40

    4.3. Representacion del conjunto AB = {1,2,3,4,8,,,_} mediante diagra-mas de Venn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.4. Representacion del conjunto A B mediante diagramas de Venn. . . . . . . . . 41

    4.5. Representacion del conjunto AB = {2,4,,} mediante diagramas de Venn. 42

    4.6. Representacion del conjunto A mediante diagramas de Venn. . . . . . . . . . . . 43

    4.7. Representacion del conjunto A = {1,3,5,6,7,9,0,,,_} mediante diagra-mas de Venn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    4.8. Representacion del conjunto A B mediante diagramas de Venn. . . . . . . . . 44

    4.9. Representacion del conjunto A B = {8} mediante diagramas de Venn. . . . . 44

    4.10. Representacion del conjunto B A = {1,3,_} mediante diagramas de Venn. 45

    4.11. Representacion del conjunto AB mediante diagramas de Venn. . . . . . . . . 46

    4.12. Representacion del conjunto AB = {8,1,3,_} mediante diagramas de Venn. 46

    6.1. Representacion de la relacion R = {(0,), (0,), (2,), (2,)} mediantediagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    IX

  • X INDICE DE FIGURAS

    6.2. Representacion de la relacion R = {(,), (,), (,), (,)} mediantediagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    6.3. Representacion de la funcion f = {(0,), (1,), (4,)} mediante diagramasSagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    6.4. Representacion de la relacion f = {(0,), (1,), (2,), (1,)} mediantediagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    6.5. Representacion de la funcion inyectiva f = {(0,), (2,)} mediante diagra-mas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    6.6. Representacion de la funcion sobreyectiva f = {(0,), (1,), (2,), (4,)}mediante diagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    6.7. Representacion de la funcion total f = {(0,), (1,), (2,), (3,), (4,)}mediante diagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    6.8. Representacion de la funcion biyectiva f = {(0,), (1,), (2,), (3,)}mediante diagramas Sagitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    6.9. Representacion de la funcion identidad idA. . . . . . . . . . . . . . . . . . . . . . . . . . 91

    6.10. Representacion mediante diagramas Sagitales de la composicion de las fun-ciones f y g, f g = {(1, a), (2, d), (3, c), (4, c), (6, c)}. . . . . . . . . . . . . . . . . . 96

    6.11. Representacion mediante diagramas de la funcion fg = {(1, a), (2, d), (3, c), (4, c), (6, c)}. 96

  • Captulo1Introduccion

    1.1. Generaciones de los computadores

    Primera generacion de los computadores (1946 1958):

    Programacion en lenguaje de maquina (el programa se escribe en codigo bina-rio).

    La tecnologa electronica era a base de bulbos o tubos de vaco y valvulas.

    Desprendan bastante calor y tenan una vida relativamente corta.

    Maquinas grandes y pesadas.

    Alto consumo de energa. El voltaje de los tubos era de 300V y la posibilidadde fundirse era grande.

    Almacenamiento de la informacion en cilindros magneticos para almacenar in-formacion e instrucciones internas.

    La reprogramacion se hacia intercambiando el cableado.

    Continuas fallas o interrupciones en el proceso.

    Requeran sistemas auxiliares de aire acondicionado especial.

    Alto costo.

    Uso de tarjetas perforadas para suministrar datos de programas.

    Las computadoras de esa generacion fueron:

    1947 ENIAC. Primera computadora digital electronica 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.

    1954 IBM desarrollo otros modelos que usaban tambor magnetico.1

  • 2 CAPITULO 1. INTRODUCCION

    Z1 (Alemana).

    Mark II.

    Segunda generacion de los computadores (1959 1964):

    Comunicacion 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 BradfordShockley.

    Tamano mas reducido que sus antecesoras de la primera generacion.

    Consuman menos electricidad y producan menos calor que sus antecesoras.

    Aumento en la velocidad de las operaciones que ya no se mide en segundos sinoen microsegundos.

    Costo mas bajo que el de sus antecesoras.

    Almacenamiento en cintas y discos magneticos.

    Aparece gran cantidad de empresas dedicadas a la fabricacion de los compu-tadores.

    Programacion con cintas perforadas y otras por medio de un cableado en untablero.

    La transferencia de informacion de una computadora a otra requera un mnimoesfuerzo.

    Uso de impresoras para visualizar los resultados obtenidos a partir de los calcu-los hechos.

    Las computadoras de esa generacion fueron:

    Philco 212.

    UNIVAC M460.

    Control Data Corporaions serie 1604.

    Control Data Corporaions serie 3000.

    IBM 7090.

    NCR 315.

    Burroughs serie 5000.

    ATLAS.

    Tercera generacion de los computadores (1965 1971):

    Circuitos integrados desarrollado en 1958 por Jack Kilbry.

    Miniaturizacion y reunion de centenares de elementos en una placa de silicio o(chip).

  • 1.1. GENERACIONES DE LOS COMPUTADORES 3

    Menor consumo de energa.

    Reduccion de espacio utilizado.

    Aumento de fiabilidad y flexibilidad.

    Aumenta la capacidad de almacenamiento y se reduce el tiempo de ejecucion.

    Disponibilidad de gran cantidad de lenguajes de programacion de alto nivel.

    Compatibilidad para compartir software entre diversos equipos.

    Construccion de computadoras en serie.

    Teleproceso.

    Multiprogramacion.

    Tiempo compartido.

    Aparicion de perifericos.

    Aparicion de aplicaciones.

    Aparicion del sistema operativo llamado OS.

    Aparicion de la mini computadora.

    Las computadoras de esa generacion fueron:

    IBM 360.

    Control Data Corporaions serie 6000.

    Control Data Corporaions serie 6600. Considerada la mas rapida de su epoca.

    IBM 370.

    Cuarta generacion de los computadores (1972 1981):

    Microprocesador: un unico circuito integrado en el que se reunen los elementosbasicos de la maquina desarrollado por Intel Corporation (1971).

    Se minimiza el tamano de los circuitos.

    Aumenta la capacidad de almacenamiento.

    Reemplazo de las memorias con nucleos magneticos, por las de chips de silicio.

    Colocacion de muchos componentes electronicos en un solo chip.

    Se aumenta la velocidad de computo.

    Reduccion significativa de los costos de los computadores.

    Popularizacion del uso de los computadores.

    Steve Woziniak y Steve Jobs inventan la primera microcomputadora de usomasivo, fundadores de APPLE (1976) .

    Sistemas de tratamiento de base de datos.

    Generalizacion de las aplicaciones.

    Multiproceso.

  • 4 CAPITULO 1. INTRODUCCION

    Quinta generacion de los computadores (1982 1989):

    Japon lanzo en 1983 el llamadoprograma de la quinta generacion de compu-tadoras.

    Traductores de lenguajes.

    Creacion de la primera supercomputadora con capacidad de proceso paralelo,disenada por Seymouy Cray (1982).

    Fuerte aplicacion de la inteligencia artificial: sistemas expertos, redes neurona-les, teora del caos, programacion heurstica, algoritmos geneticos.

    Fibras opticas.

    Telecomunicaciones.

    DVD.

    Uso del raton (mouse).

    Robots con capacidad de movimiento.

    Juegos.

    Reconocimientos de formas tridimensionales, voz e imagenes.

    Sexta generacion de los computadores (1990actualidad):

    Arquitecturas combinadas Paralelo / Vectorial.

    Masificacion del uso de redes de area mundial (Wide Area Network, WAN).

    Comunicacion a traves de fibras opticas y satelites.

    1997- El Pentium II

    1999- El Pentium III

    2001- el Pentium 4

    Intel Core i3

    Intel Core i5

    Intel Core i7

    AMD Phenom II

    Tablets y Smartphones.

  • Captulo2Lenguajes

    El lenguaje ha acompanado al hombre desde el inicio de sus tiempos, ha crecido yevolucionado con este y de la misma manera el hombre transforma el lenguaje. Se definelenguaje como un conjunto de senales articuladas que dan a entender algo[de la Len-gua Espanola n.d.], y esta definicion relaciona el concepto de lenguaje con el acto de lacomunicacion. Dar a entender algo implica que existe algo que se quiere transmitir, yque debe llevarse a cabo exitosamente.

    La creacion y transformacion de los lenguajes ha propiciado el aprendizaje, con estola generacion continua de conocimiento, el permanente y acelerado intercambio de infor-macion y el actual desarrollo de las tecnologas. Sin el lenguaje no se podra hablar hoyen da de civilizaciones, de sociedades complejas, de la expresion y de la ciencia[DomenecCampillo Valero 2005].

    Existen dos enfoques frente a la relacion del hombre con el lenguaje: el de creador, y elde usuario.

    El lenguaje es una forma de adaptacion del ser humano, es una respuesta al ambiente,al entorno. El lenguaje ha evolucionado con el hombre, incluso existen teoras y estudiosenfocados al analisis de la evolucion del hombre con el lenguaje, que atribuyen los cambiosdel cerebro a presiones selectivas, a necesidades o al instinto de supervivencia[ThinkQuest2000].

    Aunque existen otras especies de las cuales se dice que comparten un lenguaje, es ellenguaje verbal el que realmente diferencia a la raza humana de especies animales con unacapacidad cerebral similar -cuyos medios de comunicacion son sistemas de transmision deinformacion como los delfines o los chimpances[Domenec Campillo Valero 2005].

    Existen diferentes teoras acerca de la evolucion del lenguaje: las vocalistas y las especfi-cas, las cuales difieren en la aceptacion de un factor genetico que propiciara la evoluciondel lenguaje. Las hipotesis que se han planteado los vocalistas afirman que la evolucionde la capacidad vocal de los simios se dio debido a una mutacion genetica que permi-tio que los sonidos emitidos fueran susceptibles de combinacion, formando as lenguajesde comunicacion[O. 2008].

    5

  • 6 CAPITULO 2. LENGUAJES

    Las hipotesis especficas proponen e identifican el papel de la cultura como determinantepara la aparicion del lenguaje, ademas del aumento de la capacidad craneal y el desarrollode la inteligencia. Tambien se debe tener en cuenta que la base genetica de los sereshumanos precede a la emergencia del lenguaje, de manera que el lenguaje evoluciono paraencajar en la estructura cerebral. Sin embargo las convenciones culturales cambian muchomas rapido que los genes, de manera que se le atribuye a la cultura, la generacion ydesarrollo del lenguaje.

    La fusion de estas dos teoras da lugar a un escenario donde el simio evoluciono y ad-quirio caractersticas fisiologicas, que unidas a la interaccion con otros seres le permitieronexpresarse de forma verbal.

    Desde esta perspectiva, el desarrollo de la comunicacion y el lenguaje en la antiguedadinicio, porque el ser humano se vio forzado a interactuar con otros, porque tuvo la necesidadde expresar y transmitir: como el cazador que quiso dar a conocer a sus companeros dondeestaba la presa, o como estaban las condiciones del clima, o el recolector que deba informardel encuentro de una fruta venenosa, situaciones que hicieron que el hombre tuviera quevalerse de gestos, senas y sonidos para comunicarse con otros.

    Los primeros homnidos no eran fsicamente aptos para hablar, debido a que sus cuerdasvocales no estaban completamente desarrolladas. Segun estudios de fosiles de diferentesespecies de homnidos, el Homo-habilis fue el homnido precursor del lenguaje. En loscraneos del Homo-habilis se encontro la presencia de las areas cerebrales asociadas a lacapacidad lingustica (areas de Broca y Wernicke) y tambien signos de que la laringehaba iniciado su descenso. Los sucesores de esta especie potenciaron estas caractersticas,pero se destaca al Homo-sapiens como el que tuvo la capacidad para el lenguaje de doblearticulacion.[Domenec Campillo Valero 2005]

    El lenguaje requirio entonces de unos factores para poder desarrollarse: tamano cerebraladecuado, canales apropiados e intensa interaccion social [Segarra 2010].

    Los linguistas concuerdan en que el cambio cultural se produjo en la prehistoria y sedio una unica vez. Sin embargo, actualmente existen muchas lenguas e idiomas, lo cualdemuestra que despues de que surgio el lenguaje - siendo este unico o multiple- se dieroncambios muy rapidos por lo que actualmente no es posible conocer sus fonemas, gramaticao lexico.

    Historicamente, el hombre ha propiciado la evolucion del lenguaje, pero hablando desdela temporalidad de cada hombre, es este el que adquiere el lenguaje, es este el que por mediode la repeticion, la imitacion y la estimulacion aprende las convenciones que le permitiraninteractuar y comunicarse con su entorno y especialmente con otros hombres.[Domingo1990] El hombre encuentra en el lenguaje el medio para interactuar con el universo, consu realidad. Todo ser humano es capaz de crear y desarrollar sistemas de lenguaje. El serhumano es la unica especie capaz de articular las palabras1 y las ideas que se generan enel cerebro casi inmediatamente.

    1El ser humano tiene un lenguaje de doble articulacion: Se unen los fonemas en palabras y las palabrasen frases.

  • 7

    El ser humano tiene una capacidad muy amplia con respecto a los fonemas que puedeemitir, sin embargo, no todos los idiomas emplean todos los fonemas, e incluso dependiendode la cultura, hay personas a las que no les es posible pronunciar ciertos sonidos. Se podradecir que hay una biblioteca universal de donde las civilizaciones empezaron a formar yestablecer los lenguajes como se conocen hoy en da.

    Mientras la necesidad aumenta, el vocabulario se expande, al combinarviejas palabras o inventar nuevas, y las reglas se pueden volver mas y masdetalladas. En algun punto, mucho tiempo atras, el vocabulario y la gramaticahabran aparentemente despegado: todos los lenguajes hoy en da parecenser iguales en su capacidad de expresar los matices y complejidades de la vidahumana.[Boeree 2007]

    El lenguaje articulado opera con palabras integradas con sonidos que remiten a con-ceptos, y lo hace con signos lingusticos. 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 relacion con aquello que evoca, de manera que el signo esarbitrario. Los signos lingusticos son fijos, limitados, pero su combinacion, inmersa en lasconvenciones sociales, permite infinitos significados conformando as la lengua.

    Se podra concebir al lenguaje como un medio descriptivo y referencial, pero la verdades que no es objetivo de la realidad en lo mas mnimo. El lenguaje es circunstancial,cambiante y relativo.

    Las palabras no tienen un significado inherente, por lo tanto su significado surge de larelacion con las palabras que la acompanan y en teora, cada palabra es libre de significarlo que sea.

    Para Ferdinand de Saussure, el lenguaje es una red compleja de enunciados que seentremezclan para formar significados, todo es equvoco, ambiguo y transformable.[Vicente2012]

    El lenguaje consta de elementos iguales: el espacio, el punto, la coma y las letras y aunas es ilimitado.

    Como se mencionaba anteriormente, la comunicacion es un proceso mediante el cualse transmite la informacion. Para que haya comunicacion, debe haber una coincidenciaen el tipo de lenguaje, es decir que al codificar la informacion se hace siguiendo unoslineamientos o reglas preestablecidas por un sistema con el cual esta familiarizado tantoemisor como receptor. El emisor codifica, el receptor decodifica[Pelayo & Cabrera 2001].

    Los elementos de la comunicacion son:

    Fuente de informacion: Genera la informacion que sera transmitida.

    Mensaje: Dato o conjunto de datos a transmitir. Surge de la seleccion de posibilidadesen un conjunto de combinaciones simbolicas posibles.

    Emisor: Codifica el mensaje.

  • 8 CAPITULO 2. LENGUAJES

    Senal: Signo o smbolo de sistema convencional.

    Canal: Medio por el cual se transmite el mensaje codificado.

    Fuente de ruido: interferencia que distorsiona la senal y puede cambiar el mensaje.

    Receptor: Decodifica para poder ser recibido por el destino

    Destino: Ente al que se dirige el mensaje.

    Fuente deinformacion

    Emisor Canal Receptor

    DestinoFuente de

    ruido

    Mensajeoriginal

    SenalSenal

    recibida

    Mensajefinal

    Figura 2.1. Modelo matematico de la comunicacion de Claude Elwood Shannon (1948)

    2.1. Componentes del lenguaje

    En la anterior seccion se vio el lenguaje desde un punto de vista humano, sin embargoesos conceptos ....

    de aqui en adelante le concepto de lenguajes se definira de la siguiente manera sistema-tica

    Definicion. Un lenguaje esta formado por tres elementos (el lexico, la sintaxis y lasemantica), que permiten expresar y comunicar informacion entre entes, ya sean personas,animales, computadores, etc.

    Lexico: El lexico de un lenguaje lo conforman las unidades mnimas con significado com-pleto. A cada uno de estas unidades mnimas con significado se le conoce comolexema2. Por ejemplo, en el espanol, las palabras y los smbolos de puntuacion (queson usados para formar frases, oraciones y parrafos) conforman el lexico. A taleslexemas se les asocia un significado preciso en terminos de las frases construidas conellos.

    Es el conjunto de palabras y signos de puntuacion que componen una lengua. Laspalabras generalmente se componen de dos unidades mnimas: lexema y morfema,

    2La palabra lexema usada en este libro tiene un significado similar (pero no igual) a la que se usaen lingustica. En lingustica las palabras movil y moviles se derivan del mismo lexema (movil), es decir,son el mismo lexema (por las relaciones semanticas propias del espanol), solamente que tienen diferentegramema (, -es).

  • 2.1. COMPONENTES DEL LENGUAJE 9

    las cuales aportan significado lexico y gramatical, respectivamente. Una familia depalabras comparte un mismo lexema:

    Arte, Artista, Artstico, Artesanal.[Gramaticas.net 2013]

    Sintaxis: La sintaxis de un lenguaje explica la forma en que se pueden construir frases enel lenguaje a partir del lexico. Usualmente la sintaxis se presenta como una coleccionde reglas de reescritura que se definen con una gramatica. Estas son reglas queindican como unos smbolos de la gramatica pueden ser reescritos por otros smbolosde la gramatica o por lexemas. La idea es que al final del proceso de reescriturasolo se tengan lexemas. Por ejemplo en espanol una frase se puede reescribir comoun sujeto y un predicado, a su vez un sujeto se puede reescribir como un artculo,un sustantivo y un adjetivo, finalmente un sustantivo puede ser reescrito como lapalabra perro.

    La sintaxis se presenta como una coleccion de reglas que indican como unos smbolospueden ser reescritos o descompuestos hasta tener solo lexemas.

    Ejemplo. Una frase se reescribe como un sujeto y un predicado, un sujeto se re-escribe como artculo y sustantivo, un predicado se reescribe como un sujeto, unadverbio y un adjetivo, as

    Figura 2.2. figure

    La derivacion de la frase El profesor hara un examen muy difcil se puedemodelar mediante un arbol de derivacion como el siguiente.

    Semantica: La semantica de un lenguaje define la forma en que se le asocia significado(sentido) a las frases construidas mediante la gramatica. En espanol la semanticano es facil de definir ya que intervienen elementos muy elaborados que han sidoconstruidos de manera natural a traves del tiempo (cada objeto/idea conocido(a)por el ser humano esta asociado(a) con una palabra). El sentido de una frase o unaoracion en espanol depende mucho del contexto en el que se escribe o dice la frase ydel posible conjunto de significados el cual es muy grande. Este hecho es lo que hacedifcil, para los computadores actuales, trabajar directamente en lenguaje natural.

  • 10 CAPITULO 2. LENGUAJES

    Frase

    Sujeto

    Artculo

    El

    Sustantivo

    profesor

    Predicado

    Verbo

    hara

    Complemento

    Sujeto

    Artculo

    un

    Sustantivo

    examen

    Adverbio

    muy

    Adjetivo

    difcil

    2.2. Lenguajes de Programacion

    Para ordenarle a una maquina de computo (computador) que ejecute cierto procedi-miento o realice un calculo predeterminado, se dispone de los lenguajes de programacion,los cuales son definidos a partir del lenguaje matematico, por eso los computadores hacenexactamente lo que se les dice, no lo que se quiere que hagan. De esta manera, en progra-macion 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 elhardware: se requera que los programas se escribieran cableando ciertas compuertas de lamaquina. Un error en el cableado, es decir un error en el programa era difcil de detectar.

    Posteriormente el hombre construyo maquinas de calculo para tareas muy especficascomo investigacion y militares, usando dispositivos electro-mecanicos como reles y tubosde vaco. Se programaba revisando las salidas de los estados de los tubos (encendido o 1 yapagado o 0). A estos computadores solan acercarseles insectos en busca de calor danandolos tubos. De all proviene el termino bug (bicho de programacion) conocido actualmenteen programacion como un defecto en el programa.

    Para reducir este problema, se intento separar el programa de la parte fsica, es as comollegaron las tarjetas perforadas inspiradas en las maquinas telares de la epoca. De estaforma, los programas eran representados por huecos en las tarjetas, y la maquina realizabalecturas de aquellos huecos en un orden especfico. De desordenarse las tarjetas el programadejara de funcionar.

    Estos computadores dieron paso a los elementos transistorizados. Las maquinas decomputo de esta generacion tenan pocas facilidades de programacion. La comunicacionse estableca en lenguaje de maquina, que como su nombre lo indica, dependan de lamaquina, lo que hacia poco portable al programa.

    A continuacion se presentan una clasificacion de los lenguaje por su nivel de abstraccion.

  • 2.3. CLASIFICACION DE LOS LENGUAJES 11

    2.3. Clasificacion de los lenguajes

    De acuerdo a la complejidad de la sintaxis y la abstraccion necesaria los lenguajes deprogramacion se pueden se clasifican en las siguientes categoras:

    Lenguajes de maquina o de bajo nivel. Es el unico lenguaje que entiende el hardwa-re (maquina) y usa exclusivamente el sistema binario (ceros y unos). Este lenguajees especfico para cada hardware (procesador, dispositivos, perifericos, etc.).

    El programa (tanto codigos de instruccion como datos) es almacenado en memoria.

    Ejemplo. La estructura de una instruccion en lenguaje maquina es la siguiente:

    CODIGO ARGUMENTO(S)

    0010 00011010

    1010 10111000

    0110 11010001

    Lenguaje ensamblador o de intermedio nivel. El lenguaje ensamblador surgio de lanecesidad de desarrollar un lenguaje de nivel mayor, que fuese mas comprensibleque el de la maquina pero que permitiera acceder a los detalles de estas. Por es-ta razon se desarrollo una forma de construir un lenguaje intermedio que emplearamnemonicos (palabras cortas escritas con caracteres alfanumericos), para codificarlas operaciones. Los datos y/o direcciones son codificados generalmente como nume-ros en un sistema hexadecimal. Generalmente es especfico (aunque no unico) paracada lenguaje de maquina. Entre los mnemonicos tpicos 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 interrupcion.

    Ejemplo. La estructura de una instruccion en este lenguaje es la siguiente:

    MNEMONICO ARGUMENTO(S)

    ADD R1, F4

    MOV F4, C2

    SUB AX, AX

    MOV AX, 18D

    SUB AX, 18D

    INT 20h

  • 12 CAPITULO 2. LENGUAJES

    Un Ensamblador es un software, generalmente escrito en lenguaje de maquina, que escapaz de traducir de lenguaje ensamblador a lenguaje de maquina. Con este lenguajese dio un salto fundamental, donde se logro separar el programa de la maquinaempleando los conceptos de maquina de Turing y la arquitectura de Von Neumann.Almacenando el programa en memoria y empleando el hardware como elemento decontrol.

    Lo anterior dio origen a los sistemas operativos, logrando que la maquina completapudiera controlar otro programa.

    Lenguajes de alto nivel. Aunque util, el lenguaje ensamblador, es aun muy difcil deentender, por eso se planteo la idea de generar un lenguaje mas parecido al lenguajenatural que tiene facilidades de aprendizaje, lectura, escritura, correccion, transfor-macion y conversion.

    Estos lenguajes estan basados en una estructura gramatical para codificar estructurasde control y/o instrucciones. Cuenta con un conjunto de palabras reservadas (escritasen lenguaje natural).

    Adicionalmente estos permiten el uso de smbolos aritmeticos y relacionales paradescribir calculos matematicos, y generalmente representan las cantidades numericasmediante sistema decimal.

    Ejemplo. La estructura de un programa escrito en un lenguaje de alto nivel talcomo C++ es la siguiente:

    #include

    #include

    using namespace std;

    int main()

    {

    cout

  • 2.3. CLASIFICACION DE LOS LENGUAJES 13

    Programafuente

    CompiladorPrograma

    objeto

    Lenguaje de

    alto nivel

    Lenguaje de

    maquina

    Figura 2.3. Estructura general de un compilador.

    virtual (Figura 2.4). Para Algunos lenguajes interpretados tales como Java, el codigoensamblador que se obtiene al traducir el programa fuente se llama Bytecode.

    Programafuente

    Interprete

    Maquinavirtual

    Programaobjeto

    Lenguaje de

    alto nivel

    EnsambladorBytecode

    Lenguaje

    de

    maquina

    Compilacionlnea a lnea

    Figura 2.4. Estructura general de un interprete.

    Lenguajes de muy alto nivel. Tambien conocidos como lenguajes declarativos. Su defi-nicion es mas complicada que la de los anteriores. Se trata esencialmente de lenguajestaquigraficos que usan macroinstrucciones (se escribe mas con menos). Cuando unaoperacion que requiere de cientos de lneas en un lenguaje de alto nivel, en un len-guaje de muy alto nivel se requiere tpicamente de unas cinco a diez lneas. Entre lascaractersticas de estos lenguajes esta el no uso de procedimientos. En los lenguajesde procedimientos se dice con detalle a la computadora las tareas a realizarse. Enestos lenguajes se define solamente lo que se necesita computar, es decir, se enfatizanel que hacer, en lugar del como hacerlo. Para esto, el compilador se encarga de losdetalles relativos a como obtener el conjunto completo o parcial, y correcto de lassoluciones.

    Ejemplo. Entre tareas tpicas de estos lenguajes se pueden:

    Generar reportes sobre un criterio especifico sobre un conjunto de datos.

    Listar todas la personas que nacieron despues de 1990.

    Encontrar las soluciones a una consulta realizada a un sistema con respecto auna base de conocimientos.

    Pedro es padre de Jesus.

    Mara es madre de Jesus.

    Quien es progenitor de Jesus?.

  • 14 CAPITULO 2. LENGUAJES

    Los lenguajes de muy alto nivel son faciles de leer, comprender y programar, norequieren altos conocimientos de arquitecturas computacionales, esto los hace alta-mente transportables.

    El principal inconveniente de estos lenguajes es que no hacen uso eficiente de losrecursos computacionales.

    Lenguajes naturales. Se denominan as por su acercamiento a la escritura de los len-guajes humanos (ingles, frances, espanol, etc). El uso de un lenguaje natural con unabase de conocimientos produce un sistema basado en el conocimiento. Una clase deestos sistemas son los Sistemas Expertos, que son base de la Inteligencia Artificial.Estos estan todava en su infancia, y actualmente puede considerarse que estan mascerca 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 clasificacion.

    2.4. Paradigmas de programacion

    Existen muchos lenguajes de programacion de alto nivel con sus diferentes versiones.Por esta razon es difcil su tipificacion, pero una clasificacion muy extendida desde el puntode vista de su forma de codificacion y la filosofa de su creacion es la siguiente:

    Lenguajes de programacion imperativos o estructurados. Describe la programa-cion en terminos del estado de la memoria del programa y sentencias que cambiandicho estado. Los programas imperativos son un conjunto de instrucciones que leindican al computador como realizar una tarea. La implementacion de hardware dela mayora de computadores es imperativa ya que el hardware esta disenado paraejecutar codigo de maquina que es imperativo. Ejemplos: Cobol, Pascal, Fortran, C,Ada, MathLab, SciLab.

    Lenguajes de programacion declarativos. Basado en la utilizacion de predicadoslogicos (logicos) o funciones matematicas (funcionales), su objetivo es conseguir len-guajes expresivos en los que no sea necesario especificar como resolver el problema(programacion convencional imperativa), sino que problema se desea resolver. Losinterpretes de los lenguajes declarativos tienen incorporado un motor de inferenciagenerico que resuelve los problemas a partir de su especificacion. Ejemplos: Lisp, ML,Haskell, Maude, Prolog, SQL.

    Lenguajes de programacion orientados a objetos. Usa los objetos como instanciasde clases y sus interacciones para disenar aplicaciones y programas. Esta basadoen varias tecnicas, incluyendo abstraccion, herencia, modularidad, polimorfismo yencapsulamiento. Usualmente los lenguajes orientados a objetos se usan en com-binacion con la programacion imperativa. Ejemplos: Smalltalk, C++, Java, Python,R.

  • Captulo3Logica Matematica

    3.1. Logica Proposicional

    Definicion. Una proposicion cerrada o simplemente proposicion es un juicio, afirmaciono enunciado el cual se puede calificar como verdadero o falso, pero no ambos simultanea-mente.

    No es necesario saber de antemano s es verdadero o falso.

    Pero con certeza el enunciado debe poseer algun valor fijo que lo califique.

    No debe haber incertidumbre acerca de s se posee un valor que lo califique.

    Una proposicion consta basicamente de tres partes:

    Un sujeto: del cual se dice algo o que el hace algo.

    Un verbo: que indica un estado o una accion que realiza el sujeto.

    El complemento: que describe o aclara el estado o accion que realiza el sujeto.

    Ejemplos. Los siguientes enunciados son ejemplos de proposiciones

    Ejemplos. Los siguientes enunciados son ejemplos de proposiciones

    p: El jugador esta en la casilla [2,2].q: El archipielago de San Andres, 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: Esta lloviendo.x: Manana es sabado.

    15

  • 16 CAPITULO 3. LOGICA MATEMATICA

    Ejemplos. Los siguientes enunciados son ejemplos que no son proposiciones

    Vamos manana a cine?; Hacemos quiz?. (interrogaciones)

    Ah, cuanta mentira hay en esos argumentos!; No te vayas!. (exclamaciones, deseos)

    No te aprendas la tablas de memoria; No te metas con ese muchacho; Callate. (con-sejos, mandatos)

    El lindo y hermoso perro de Mara Antonieta; El ronroneo de los gatos. (no sonafirmaciones que puedan valorarse)

    x + 9 = 21 (no hay un sujeto fijo predeterminado, este se denomina un enunciadoabierto)

    Manana llovera (hay incertidumbre acerca del valor que califica el enunciado, notiene una calificacion fija y precisa)

    3.1.1. El lenguaje de la logica proposicional

    En la logica proposicional, el lexico esta definido por tres elementos: los smbolos oletras proposicionales, los conectivos logicos y los parentesis.

    Definicion. El lexico de la logica proposicional se compone de tres tipos de lexemas:

    smbolos y/o letras proposicionales: ,, p, q, r, s, t, p0, p1, . . .

    conectivos logicos: ,,,,

    smbolos auxiliares: (, )

    El smbolo proposicional (que se lee bottom) es usado para representar una propo-sicion generica que su significado es siempre falso1, mientras que (que se lee top) esusado para representar una proposicion generica 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 laproposicion que dicha letra representa.

    Los conectivos logicos son operadores logicos que permiten formar frases que se llamanproposiciones compuestas o formulas logicas a partir de smbolos y/o letras proposiciona-les.

    En la definicion mas comun de la logica proposicional clasica, estos operadores son:

    La negacion: es un operador unario prefijo que se representa mediante el smbolo (),que se lee no.

    1Que se representara abreviadamente por el smbolo F .2Que se representara abreviadamente por el smbolo V .

  • 3.1. LOGICA PROPOSICIONAL 17

    La disyuncion: es un operador binario infijo que se representa mediante el smbolo (),que se lee o.

    La conjuncion: es un operador binario infijo que se representa mediante el smbolo (),que se lee y.

    El condicional: o implicacion es un operador binario infijo que se representa mediante elsmbolo (), que se lee entonces o implica. A el primer operando del operadorcondicional se le suele llamar el antecedente de la implicacion y a el segundo operadorse le suele llamar el consecuente de la implicacion.

    El bicondicional: o equivalencia o doble implicacion es un operador binario infijo que serepresenta mediante el smbolo (), que se lee si y solo si.

    El significado que cada uno de estos conectivos le da a las proposiciones compuestas quese construyen con ellos se explicara mas adelante3.

    Los parentesis son usados para agrupar de manera apropiada las formulas o proposi-ciones compuestas de la logica proposicional.

    En la logica proposicional la gramatica se describe en terminos de formulas bien for-madas (fbf) de manera recursiva4, es decir, suponiendo que los smbolos y letras proposi-cionales son fbfs y definiendo nuevas fbfs en terminos de fbfs ya construidas.

    Definicion. La gramatica de la logica proposicional se define recursivamente en terminosde formulas bien formadas (fbf), as:

    i) Si p es un smbolo o letra proposicional, entonces p es una fbf.

    ii) Si f es fbf entonces (f) es una fbf.

    iii) Si f1 y f2 son fbfs entonces: (f1 f2), (f1 f2), (f1 f2) y (f1 f2) son fbfs.

    Ejemplo. Las siguientes secuencias de smbolos son formulas bien formadas:

    f1: ((p (q)) (r s)) f2: ((r q) (q s))

    Ejemplo. Las siguientes secuencias de smbolos no son formulas bien formadas:

    f1: ( p)(r s)) f2: (( p q) (q p )

    En el lenguaje de la logica proposicional, a diferencia del espanol u otro lenguaje natural,la semantica es facil de definir ya que los posibles sentidos que tiene una frase son solamentedos (verdadero y falso) y las frases que se pueden construir se definen de manera recursiva(formulas bien formadas).

    3Existen diversas formas de definir la logica proposicional clasica dependiendo de los conectivos logicosusados (smbolo y definicion semantica). La presentada aqu es la mas usual y se le dice clasica por ladefinicion semantica de los conectivos logicos.

    4En una definicion recursiva se definen casos particulares o base y los demas se definen como construc-ciones sobre estos casos base y sobre estas construcciones.

  • 18 CAPITULO 3. LOGICA MATEMATICA

    Definicion. La semantica de la logica proposicional se define de manera recursiva sobrelas formulas bien formadas as ((f) se usa para representar el significado de la formulabien formada f):

    i) Si f es un fbf definida solamente por un smbolo o letra proposicional, el significadode la formula f es el mismo significado del smbolo o letra proposicional.

    () () (p)V F significado de la proposicion p

    ii) Si f es una fbf, entonces:

    (f) ((f))V FF V

    iii) Si f1 y f2 son fbfs, entonces:

    (f1) (f2) ((f1 f2)) ((f1 f2)) ((f1 f2)) ((f1 f2))V V V V V VV F V F F FF V V F V FF F F F V V

    Ejemplo. Suponga que (p) = F, (q) = F, (r) = V , entonces el significado (valor deverdad) de la formula bien formada

    f : (((p) q) ((r q) ()))

    para hallar el significado de f , primero se debe hallar el valor de verdad de los parentesismas internos y luego con esos resultados ir hallando el valor de verdad de las formulas masinternas 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

    as, (f) = V .

  • 3.1. LOGICA PROPOSICIONAL 19

    3.1.2. Precedencia de conectivos logicos

    Uno de las principales limitaciones de las formulas bien formadas es el uso excesivo delos parentesis, los cuales, en muchos casos, son redundantes. Para evitar este uso excesivode parentesis (sin que esto implique que toda formula pueda ser escrita sin parentesis), alos conectores logicos se les asigna una prioridad que determina de manera exacta el ordenen que los parentesis se deben asumir si no se escriben. Entre mas alta es la prioridad deun conector, los parentesis asociados a el, tienen mayor prelacion, es decir, en el procesode completar los parentesis, los parentesis asociados al operador con mas prioridad sonadicionados primero que los parentesis de un conectivo con menor prioridad. Las priori-dades asignadas a los operadores se pueden observar el la tabla 3.1. Cuando en la formulaaparece el mismo operador varias veces y no se puede determinar a cual se le deben asignarlos parentesis primero, se asignan los parentesis de izquierda a derecha.

    Conectivo Prioridad Significado

    (, ) 1 mas alta 2 alta, 3 media, 4 baja

    Tabla 3.1. Prioridad de los conectivos logicos.

    Ejemplo. La formula p q r (s p) representa la fbf ((p q) (r (s p))), yaque completando parentesis:

    i) p q r (s p)

    ii) p q (r (s p)) ( prioridad 3)

    iii) (p q) (r (s p)) ( mas a la izquierda prioridad 4)

    iv) ((p q) (r (s p))) ( prioridad 4)

    3.1.3. Interpretaciones y clasificacion de las formulas logicas

    Dada una formula f y f su respectiva coleccion de letras proposicionales, una interpre-tacion de f es una asignacion de valores de verdad a cada una de las letras proposicionalesde la coleccion f .

    Ejemplo. Sea f = {q, r, s} la coleccion de letras proposicionales de una formula f .

    1. Una interpretacion de f es: {(q) = V, (r) = V, (s) = F}.

    2. Una interpretacion de f es: {(q) = F, (r) = F, (s) = F}.

    3. Una interpretacion de f es: {(q) = F, (r) = V, (s) = V }.

  • 20 CAPITULO 3. LOGICA MATEMATICA

    Proposicion. Si una coleccion f tiene n letras proposicionales, entonces tiene en total2n interpretaciones diferentes.

    Nota. El valor de verdad de una formula f para una interpretacion I de la coleccion desmbolos proposicionales f se notara como I(f).

    Ejemplo. Las interpretaciones posibles de la coleccion de letras proposicionales f ={p, q, r}, entonces f tiene ocho (23 = 8) interpretaciones:

    (p) (q) (r)V V VV V FV F VV F FF V VF V FF F VF F F

    3.1.3.1. Tautologas, contradicciones y contingencias

    Definicion. Una formula f se dice tautologa si para cualquier interpretacion de su colec-cion de letras proposicionales, su significado (valor de verdad) es V , se dice contradiccion sipara cualquier interpretacion su significado es F y se dice contingencia si no es tautologani contradiccion.

    Ejemplo. Determinar el tipo (tautologa, contingencia o contradiccion) de cada una delas siguientes formulas:

    1. f = p q q p

    2. f = p p

    3. f = p (q r)

    Solucion.

    1. Si f = p q q p entonces f = {p, q}

    p q p q q p p q q pV V V V VV F V V VF V V V VF F F F V

    entonces f es tautologa.

    2. Si f = p p entonces f = {p}

  • 3.1. LOGICA PROPOSICIONAL 21

    p p p pV F FF V F

    entonces f es contradiccion.

    3. Si f = p (q r) entonces f = {p, q, r}

    p q r q r p (q r)V V V V VV V F V VV F V V VV F F F FF V V V FF V F V FF F V V FF 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 formulase le llama tabla de verdad de la formula f . Las tablas de verdad son muy utiles pararealizar demostraciones a nivel semantico, ya que ellas no solamente se pueden usar conletras proposicionales sino con formulas bien formadas, es decir, considerando toda unaformula bien formada como verdadera o falsa y construyendo la tabla de verdad paradichas formulas.

    3.1.4. Argumentacion y leyes logicas

    En la logica proposicional clasica, una ley logica es una equivalencia o implicacion entreformulas logicas. Tal equivalencia o implicacion logica debe ser verdadera para cualquierinterpretacion de las letras proposicionales que conforman las formulas relacionadas porla equivalencia (debe ser tautologa). Las mas famosas leyes logicas son: Modus Ponen,Modus Tollen, Inconsistencia, Doble negacion, Conmutatividad, Distributivas, Asociativasy De Morgan.

    3.1.4.1. Argumentacion logica directa

    Ejemplo. A continuacion se presenta un argumento directo para demostrar el siguienteteorema.

    Teorema. Sea n un numero entero, si n es impar, entonces n2 es impar.

  • 22 CAPITULO 3. LOGICA MATEMATICA

    Demostracion. Si n es impar, entonces n se puede escribir en la forma n = 2m + 1, conm en los enteros; as que n2 = (2m + 1)2 = 4m2 + 4m + 1 = 2(2m2 + 2m) + 1 = 2k + 1, dondek = 2m2 + 2m es un entero. De lo anterior se puede concluir que n2 es impar.

    Teorema. Sea n un numero entero, si n2 es impar, entonces n es impar.

    Demostracion. ?

    Para demostrar el anterior teorema, un argumento directo es muy complicado, por loque una estrategia mas eficiente es utilizar un argumento que sea logicamente equivalenteal argumento directo, aqu es donde resultan utiles las formulas logicamente equivalentes.

    3.1.4.2. Equivalencias Logicas

    Definicion. Sean f1 y f2 dos formulas, se dice que f1 es logicamente equivalente a f2,(f1 f2) si y solamente si la formula

    f1 f2

    es una tautologa.

    Ejemplo. Las formulas f1 = () y f2 = son logicamente equivalentes, es decir,( ) , para cualesquiera formulas y . Para esto, se debe demostrar que( ) es una tautologa; como se aprecia en la siguiente tabla

    ( ) ( ) V V V F F F F VV F F V F V V VF V F V V F V VF F F V V V V V

    como se observa, f1 f2 es una tautologa, por lo tanto, f1 y f2 son logicamente equiva-lentes.

    Las equivalencias logicas mas conocidas se presentan en la tabla 3.2. La demostracionde las mismas se deja al lector.

    3.1.4.3. Argumentacion logica indirecta por la contrarrecproca

    Teorema. Sea n un numero entero, si n2 es impar, entonces n es impar.

    Demostracion. Aplicando la equivalencia contrarrecproca

    con

  • 3.1. LOGICA PROPOSICIONAL 23

    Equivalencia Nombre

    Tercio excludo Contradiccion

    Identidad

    Dominacion

    Idempotencia Doble negacion

    Conmutativas

    ( ) ( )

    Asociativas( ) ( ) ( ) ( ) ( )

    Distributivas ( ) ( ) ( ) ( ) ( ) ( )

    ( ) De Morgan( )

    Contrarrecproca ( ) ( ) Material ( ) Exportacion

    Tabla 3.2. Equivalencias logicas.

    = n2 es impar y = n es imparentonces

    = n2 es par y = n es parPor lo tanto demostrar el anterior teorema es equivalente a demostrar que

    si n es par, entonces n2 es par

    para esto, observese que si n es par, entonces n se puede escribir en la forma n = 2m, conm en los enteros; as que n2 = (2m)2 = 4m2 = 2(2m2) = 2k, donde k = 2m2 es un entero ypor lo tanto se puede concluir que n2 es par. Del razonamiento anterior se tiene que porla equivalencia contrarrecproca queda demostrada la proposicion original.

    De los teoremas anteriores se tiene que para que n2 sea impar es necesario que n seaimpar, y de forma similar para que n sea impar es necesario que n2 sea impar. Esto seexpresa como que para que n2 sea impar es razon necesaria y suficiente que n sea impar,de donde ambas proposiciones son verdaderas o ambas son falsas y se puede enunciar elsiguiente teorema bidireccional general.

    Teorema. Sea n un numero entero, n2 es impar, si y solo si n es impar.

  • 24 CAPITULO 3. LOGICA MATEMATICA

    Demostracion. A partir de las demostraciones previas.

    3.1.4.4. Implicaciones Logicas

    En algunos casos no es necesario exigir que dos formulas sean equivalentes, tal vez seautil exigir que en una direccion de la equivalencia la formula del consecuente sea verdaderacuando la formula del antecedente sea verdadera, o lo que es lo mismo, que la formula delantecedente sea falsa cuando la formula del consecuente sea falsa.

    Ejemplo. A continuacion se presenta un argumento directo para demostrar el siguienteteorema.

    Teorema. Sean m y n numeros enteros, si m es par y n es par, entonces m + n es par.

    Demostracion. Si m es par y n es par, entonces m y n se pueden escribir en la formam = 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.

    Observese que en el teorema anterior el consecuente (m+n es par) es verdadero cuandoel antecedente (m es par y n es par) es verdadero.

    Ahora, para el enunciado que se obtiene cuando se toma el teorema en direccion recpro-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, entonces m+n = 8 par, se tieneque el consecuente es verdadero y el antecedente es falso, de donde la implicacion es falsay no se tendra una equivalencia logica, sino que se cumplira en solo una direccion.

    Cuando una formula (llamada conclusion) se cumple siempre que una coleccion deformulas (llamadas premisas) se cumplan simultaneamente, se dice que las premisas im-plican la conclusion. Formalmente esto se expresa de la siguiente manera.

    Definicion. Sea = {f1, f2, . . . , fn} una coleccion de formulas (premisas) y g una formula(conclusion), se dice que implica logicamente a g ( g), si y solamente si

    (f1 f2 fn) g

    es una tautologa.

    Ejemplo. Las premisas = {, } implican logicamente a g = , para esto esnecesario que la formula ( ( )) sea una tautologa, como se aprecia en lasiguiente tabla

  • 3.1. LOGICA PROPOSICIONAL 25

    ( ) ( ( )) V V F V F F VV F V F F F VF V F V F V VF F V V V V V

    como se observa, ( ( )) es una tautologa, por lo tanto, = {, }implica logicamente a g = .

    Las implicaciones logicas mas conocidas se presentan en la tabla 3.3. Se deja al lectorla demostracion de las mismas.

    Implicacion Nombre

    {,} ( ) Combinacion{,} Ley de simplificacion{,} Variante de la ley de simplificacion

    {} ( ) Ley de adicion{} ( ) Variante de la adicion{, } Modus Ponendo Ponens (Modus ponens)

    {, } Modus Tollendo Tollens (Modus tollens){ , } ( )

    Silogismos hipoteticos{ , } ( ){, }

    Silogismos disyuntivos{, } {, } Variante de los silogismos

    {, } disyuntivos{ , } Ley de casos{ } ( ) Eliminacion de equivalencia

    { } ( ) Variante de eliminacionde equivalencia

    { , } ( ) Introduccion de la equivalencia{,} Ley de inconsistencia

    { , , } ( )Dilemas constructivos{ , , } ( )

    Tabla 3.3. Implicaciones logicas.

    3.1.4.5. Argumentacion mediante implicaciones logicas

    Dado un triangulo ABC. Si el ABC no tiene todos sus angulos iguales; y, si elABC tiene todos sus lados iguales (es equilatero), entonces todos los angulos internosdel ABC son iguales. De lo anterior, se puede concluir que el ABC no es equilatero.

    El argumento anterior se puede justificar usando una implicacion logica de la siguientemanera:

  • 26 CAPITULO 3. LOGICA MATEMATICA

    = El ABC tiene todos sus angulos internos iguales = El ABC tiene todos sus lados iguales

    usando la implicacion logica Modus tollens ({, } ) se concluye

    = El ABC no tiene todos sus lados iguales= El ABC no es equilatero

    3.2. Logica de predicados

    En la logica proposicional no definen objetos variables, siempre se hace referencia a unobjeto especfico. As como se puede hablar de una proposicion como la siguiente p: elnino juega con la pelota roja y blanca, tambien se podra hablar de una proposicion comoq: 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 uncomplemento especfico. Por ejemplo el sujeto puede cambiar (la foca, el nino) y tambienel complemento puede cambiar (la pelota roja y blanca, la pelota azul y verde) de acuerdoa una realidad. Esto da como resultado frases del estilo x juega con y.

    x e y son objetos que estan relacionados mediante un predicado y dependiendo delos objetos, se obtiene una proposicion que es V o es F . En terminos de los sujetos ylos complementos se define un predicado o proposicion abierta a una frase que dice algoacerca del sujeto que lo relaciona con el complemento. En el ejemplo anterior el predicadoes juega con y se escribira simbolicamente mediante le expresion juegaCon(x, y), quese interpreta conceptualmente como x juega con y, a las variables x e y se les denominavariables libres.

    Un predicado da una forma mas amplia de hablar. Se podra tener una coleccion{0,1,2,3,4,5,6,7,8,9}, y sobre esta coleccion se puede definir un predicado. Por ejem-plo, se podra hablar del predicado esPar(x). Si se toma el predicado y se asigna al sujetox el valor 3 entonces esPar(3) tendra un valor de verdad F , si se toma el predicado y seasigna al sujeto x el valor 6 entonces esPar(6) tendra un valor de verdad V .

    A una coleccion de objetos a los cuales se les desea aplicar el predicado se le llama eluniverso del discurso. Cuando en un predicado se reemplaza una variable libre x por unvalor concreto del universo del discurso, se dice que se esta instanciando la variable x,la formula resultante se dice que es una instancia o del predicado inicial.

    Cuando no se ha instanciado un predicado, a este no se le puede asignar un valor deverdad. Por ejemplo, el predicado o proposicion abierta esPrimo(x) no se puede valorar,por el contrario, cuando se instancian todas las variables de un predicado, lo que se obtienees una proposicion cerrada, y por lo tanto se cumple la condicion de que en ese caso lainstancia tendra un valor o V o F , y no puede tener los dos a la vez.

  • 3.2. LOGICA DE PREDICADOS 27

    3.2.1. Cuantificadores

    Pueden haber predicados como esDigito(x) que para todos los objetos del univer-so del discurso {0,1,2,3,4,5,6,7,8,9} son V . Para este mismo universo, el predica-do esMayora10(x) es F para todos los elementos de dicha coleccion, y el predicadoesModuloAditivo(x) es V solo para x = 0 y para el resto de los casos sera F .

    Cuando se desea expresar que un predicado P (x) describe una propiedad sobre todoslos elementos del universo del discurso o para solo algunos, se dice que se esta cuantificandola 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 loselementos del universo del discurso, se dice que se esta cuantificando universalmente.Cuando el predicado describe una propiedad para algunos de los elementos del universodel discurso, se dice que se esta cuantificando existencialmente.

    Para expresar estas nuevas propiedades se necesitan nuevos smbolos, y estos son lossmbolos y que permiten ampliar el lexico y se utilizan de la siguiente manera:

    Para notar que una variable x esta cuantificada universalmente en un predicadoP (x) se utiliza la expresion

    xP (x)que se lee para todo x P (x).

    Para notar que una variable x esta cuantificada existencialmente en un predicadoP (x) se utiliza la expresion

    xP (x)que se lee existe x tal que P (x).

    3.2.2. Semantica de los cuantificadores

    Cuando en una expresion una variable esta cuantificada universalmente, se tiene que

    (xP (x)) (P (x1) P (x2) P (xn))

    para todo valor xi del universo del discurso.

    Cuando en una expresion una variable esta 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 numeros dgitos como universo del discurso y se establece comopredicado

    P (x) = x es multiplo de 4,

  • 28 CAPITULO 3. LOGICA MATEMATICA

    se tiene que (xP (x)) = V y (xP (x)) = F ; esto porque el predicado sera cierto cuandose instancia la variable con los valores 0, 4 y 8 (P (0), P (4), P (8)), aqu se ha tomado ladefinicion de multiplo como

    Definicion. Se dice que un numero m es multiplo de d (d 0) si existe un entero k, talque se satisface la igualdad m = dk, esto se expresa como que m es un multiplo de d. Ael numero d se le conoce como divisor o factor de m, lo que se denota como d m y se leed divide a m. Si d no divide a m esto se denotara como d m.

    3.2.3. Leyes de De Morgan para cuantificadores

    Con respecto a los cuantificadores, se tienen la siguientes equivalencias que expresanleyes analogas a las leyes de De Morgan para la logica de proposiciones:

    xP (x) xP (x): no existe un x que cumpla el predicado P quiere decir que paratodo x no se cumple el predicado P .

    xP (x) xP (x): no todo x cumple el predicado P es decir que existe un x que nocumple el predicado.

    3.2.4. Reglas de inferencia sobre formulas cuantificadas

    3.2.4.1. Particularizacion 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 Aristoteles,

    Todo hombre es Mortal, Aristoteles es un hombre entonces Aristoteles es Mor-tal

    Uno de los universos de discurso podra ser

    U = todas las cosas pensadas por Aristoteles.

    En este caso se pueden identificar dos predicados: Mortal(x) y Humano(x).

    x(Humano(x)Mortal(x))Humano(Aristoteles) Mortal(Aristoteles)

  • 3.2. LOGICA DE PREDICADOS 29

    en este razonamiento se observa que Aristoteles realiza una particularizacion univer-sal, esto consiste en reemplazar una variable que esta cuantificada universalmente porun objeto del universo. Este es un argumento valido, ya que si se asume la veraci-dad del predicado x(Humano(x) Mortal(x)) y tambien la veracidad de la pro-posicion Humano(Aristoteles), entonces la conclusion Mortal(Aristoteles) debe serverdadera, ya que si no fuese as, entonces, la proposicion (Humano(Aristoteles) Mortal(Aristoteles)) seria falsa, y eso hara que el predicado x(Humano(x)Mortal(x))fuese falso, lo que contradice la suposicion de su veracidad.

    3.2.4.2. Generalizacion 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 generalizacion universal se puede inferir que

    Cada miembro de la Familia Simpson vive en Springfield.

    3.2.4.3. Particularizacion 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 particularizacion existencial se puede inferir que

    Algun planeta del Sistema Solar , como La Tierram, posee vida inteligente.

    3.2.4.4. Generalizacion existencial

    Sea D un universo del discurso, entonces se tiene la siguiente regla de inferencia.

  • 30 CAPITULO 3. LOGICA MATEMATICA

    si P (d) para alguna d D x P (x)

    Ejemplo. En los personajes de Los Simpson, El senor Burns es el jefe de Homero . Mediante generalizacion existencial se puede inferir que

    Existe un personaje de Los Simpson que es jefe de Homero ..

    3.2.5. Logica de predicados en programacion

    Cuando un profesor revisa un programa, este evalua que para toda entrada dada, setenga una salida esperada. Si el profesor encuentra un caso para el que el programa nomuestra una salida esperada (particularizacion universal), se concluye que el programano funciona pues se espera que haga lo que debe hacer para todos los posibles casoscontemplados.

    La logica de predicados ayuda a establecer precondiciones en la elaboracion de losprogramas. Validaciones de este tipo incluyen verificaciones en los tipos de datos, porejemplo:

    El calculo de permetros y areas debe funcionar solamente con numeros positivos.

    El valor de una temperatura requiere que la medicion se realice con magnitudescontinuas.

    El tiempo promedio de vida de un animal unicelular es una cantidad continua querepresenta tiempos positivos.

  • 3.3. EJERCICIOS 31

    3.3. Ejercicios

    1. De los siguientes enunciados cuales son proposiciones y cuales no?, justifique surespuesta.

    Tom Hanks ha ganado dos premios Oscar como mejor actor por dos anos con-secutivos.

    Dame una cerveza.

    Colombia gano ocho medallas olmpicas en Londres 2012.

    Todo numero primo es impar.

    1 + 1 = 2. La diferencia de dos primos.

    Todo numero par mayor que 2 puede escribirse como suma de dos numerosprimos. (Christian Goldbach, 1742).

    Que hora es?.

    xn + yn = zn. x + y = z + y si x = z.

    2. De las siguientes secuencias de smbolos cuales son formulas bien formadas y cualesno?.

    (((p) r) (p q)) (((p) (q)) (q r)) (p q) (q p)) ((p p) (p p) (p (p)))

    3. Escriba la formula bien formada que representa cada una de la siguientes secuenciasde smbolos:

    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 formula que se especifica a continuacion con respecto ala interpretacion 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 . f = p (q r) p q (p q), si (p) = V , (q) = F , (r) = V .

  • 32 CAPITULO 3. LOGICA MATEMATICA

    5. Verifique las equivalencias logicas de la tabla 3.2.

    6. Verifique las implicaciones logicas de la tabla 3.3.

    7. Verifique que las formulas f1 = p q r y f2 = p (q r) no son logicamenteequivalentes.

    8. Con los operadores logicos y es posible expresar los otros operadores logicos(,,) 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 logicos ,, se pueden expresar enterminos de los operadores logicos y .

    9. Con los operadores logicos y es posible expresar los otros operadores logicos(,,). Encontrar formulas logicas que contengan solo los operadores logicos y que sean equivalentes a las formulas pq, p q, p q y verifique que efectivamenteson logicamente equivalentes.

    10. Adicional a los conectivos logicos presentados, existen otros conectivos, tal como elconectivo o exclusivo (), el cual es muy utilizado en computacion, y tiene comoobjetivo que dadas dos formulas f1 y f2, la operacion f1 f2 sera unicamente ver-dadera cuando se cumpla que solo una de la formulas f1 o f2 sea verdadera. De estamanera, la semantica para este conectivo es la siguiente

    (f1) (f2) (f1 f2)V V FV F VF V VF F F

    (a) Encuentre una formula que sea equivalente logicamente a la formula f1 f2,que solo utilice los operadores logicos y .

    (b) Encuentre una formula que sea equivalente logicamente a la formula f1 f2,que solo utilice los operadores logicos y .

    11. Adicional a los conectivos logicos presentados, existe otro conectivo, tal como elconectivo barra de Sheffer (), para el cual su semantica es la siguiente

    (f1) (f2) (f1 f2)V V FV F VF V VF F V

  • 3.3. EJERCICIOS 33

    La principal caracterstica de este conectivo es que las formulas f , f1 f2, f1 f2,f1 f2, f1 f2, son logicamente equivalentes a formulas que solo contienen elconectivo , como se observa a continuacion

    f f ff1 f2 (f1 f1) (f2 f2)f1 f2 (f1 f2) (f1 f2)f1 f2 f1 (f2 f2)

    (a) Verifique las anteriores equivalencias logicas.

    (b) Encuentre una formula que solo utilice el conectivo y que sea logicamenteequivalente a la formula f1 f2.

    12. Adicional a los conectivos logicos presentados, existe otro conectivo, tal como elconectivo flecha de Peirce (), para el cual su semantica es la siguiente

    (f1) (f2) (f1 f2)V V FV F FF V FF F V

    La principal caracterstica de este conectivo es que las formulas f , f1 f2, f1 f2,f1 f2, f1 f2, son logicamente equivalentes a formulas que solo contienen elconectivo , como se observa a continuacion

    f f ff1 f2 (f1 f2) (f1 f2)f1 f2 (f1 f1) (f2 f2)f1 f2 ((f1 f1) f2) ((f1 f1) f2)

    (a) Verifique las anteriores equivalencias logicas.

    (b) Encuentre una formula que solo utilice el conectivo y que sea logicamenteequivalente a la formula f1 f2.

    13. Hallar el valor de verdad para los siguientes predicados donde las variables estancuantificadas y el universo del discurso de las variables x y y son los numeros reales,el de las variables n y m son los numeros naturales y a, b, c, d tambien son numerosreales.

    i. x n (x > n).ii. x n (x < n).iii. n x (x > n).iv. n x (x < n).v. x (x2 > 0).

  • 34 CAPITULO 3. LOGICA MATEMATICA

    vi. x (x2 x).vii. x (x 0).viii. x (x tiene inverso aditivo) x y (x + y = 0).ix. x (x tiene inverso multiplicativo) x y (xy = 1).x. x y (xy = y)

    xi. x y (xy = x)xii. x y (xy = y)xiii. x y (xy = x)xiv. x a b c ((ax2 + bx + c = 0) (a 0)).xv. a b c x ((ax2 + bx + c = 0) (a 0)).xvi. x a b c ((ax2 + bx + c = 0) (a 0)).

    xvii. x a b c d ((ax3 + bx2 + cx + d = 0) (a 0)).xviii. a b c d x ((ax3 + bx2 + cx + d = 0) (a 0)).xix. x a b c d ((ax3 + bx2 + cx + d = 0) (a 0)).xx. n m ((n m) (n 0)).

    xxi. n m ((n m) (n 0)).xxii. m n ((n m) (n 0)).

    14. Usando las leyes de De Morgan para cuantificadores, negar los predicados del nume-ral 13.

  • Captulo4Teora de conjuntos

    4.1. Conceptos basicos

    4.1.1. Conjunto y elemento

    Un conjunto A es una coleccion bien definida de objetos. Se dice que una coleccion Aesta bien definida si existe un predicado A (llamado constructor del conjunto A), quedetermina de manera exacta los objetos que pertenecen a la coleccion.

    Ejemplo. La coleccion A = {1,2,3,4} es un conjunto, ya que el siguiente predicado de-termina de manera exacta los objetos que pertenecen a A:

    A(x) =

    V, si x = 1, x = 2, x = 3 o x = 4;F, en otro caso.

    Un objeto x se dice que es un elemento del conjunto A si y solo si A(x) = V . En elcaso en que A(x) = F , se dice que el objeto x no es un elemento del conjunto A.

    Ejemplo. Para el conjunto A = {1,2,3,4}, se tiene que 1 es elemento de A (A(1) = V ),y 5 no es elemento de A (A(5) = F ).

    Los predicados constructores de conjuntos, permiten definir el siguiente predicado querelaciona elementos con conjuntos

    (x,A) A(x)

    Este predicado es conocido como el predicado pertenece.

    x A es usado para denotar que (x,A), y x A es usado para denotar ( (x,A)).35

  • 36 CAPITULO 4. TEORIA DE CONJUNTOS

    4.1.2. Especificacion de Conjuntos

    Gracias a las definiciones anteriores, un conjunto se puede especificar de dos maneras:por extension y por comprension.

    4.1.2.1. Extension

    Si se listan exhaustivamente los elementos que conforman el conjunto o se puede de-terminar una secuencia que sirve para saber cual es el siguiente elemento de un elementodado de un conjunto, entonces se dice que se esta especificando el conjunto por extension.Esto se hace mediante la siguiente notacion

    A = {x1, x2, . . . , xn}

    donde xi son los objetos en el conjunto A. De esta manera el predicado asociado al conjuntoes,

    A(x) =

    V, si x = xi para algun i = 1,2, . . . , n;F, en otro caso.

    Ejemplos.

    1. A = {1,2,3,4}

    2. B = {,,,}

    3. C = {a, e, i,o,u}

    4. B = {V,F}

    5. N = {0,1,2,3,4,5, . . .}

    6. P = {1,2,3,4,5, . . .}

    7. Z = {. . . ,3,2,1,0,1,2,3, . . .}

    4.1.2.2. Comprension

    Si se presenta explcitamente el predicado que define el conjunto, se dice que se esta es-pecificando el conjunto por comprension. Esto se hace mediante la siguiente notacion:

    A = {x A(x)}.

    En esta notacion, el smbolo se lee tal que.

    Ejemplos.

    2N = {x (x = 2n) (n N)}

  • 4.1. CONCEPTOS BASICOS 37

    2N + 1 = {x (x = 2n + 1) (n N)}

    Q = {x (x = p/q) (p, q Z) (q 0)}

    I = {x x es un numero irracional}

    R = {x x es un numero real}

    R+ = {x (x R) (x > 0)}

    R = {x (x R) (x < 0)}

    R0,+ = {x (x R) (x 0)} 1

    C = {x (x = a + bi) (a, b R) (i =1)}

    (i denota la unidad imaginaria)

    A = {x (x R) (x2 1)}

    B = {x x es una pinta del poker}

    C = {x x es una vocal del idioma espanol}

    4.1.3. El conjunto vaco

    El conjunto {x (x x)} es llamado conjunto vaco porque no tiene elemento alguno(no existe objeto alguno que sea diferente de si mismo). El smbolo es usado para notaral conjunto vaco. Para todo objeto x se tiene que (x) = (x ) = F .

    En algunos casos se utilizara la notacion del conjunto sin elementos { } para representarel conjunto vaco.

    Es importante tener en cuenta que { } = {}, pues este ultimo es el conjunto quetiene un unico elemento que es el conjunto vaco, por lo tanto no es un conjunto vaco.

    4.1.4. Representacion de conjuntos mediante diagramas de Venn

    Todo conjunto finito no vaco se puede representar mediante los llamados diagramas deVenn, de la siguiente forma

    4.1.4.1. Diagramas de Venn para 2 conjuntos

    Dados los conjuntos A = {2,4,7,8,,,} y B = {1,2,3,4,,,_}, se tiene que elsiguiente diagrama se representan todos los posibles casos de contenencia para los conjuntosA y B.

    1En el contexto del calculo o el analisis matematico se usa la notacion R para este mismo conjunto,pero en el contexto de la computacion, esta notacion se utiliza para definir el conjunto de todos los arreglosde tipo real que se estudiaran en el captulo 11.

  • 38 CAPITULO 4. TEORIA DE CONJUNTOS

    A = {1,2,3,4,8,,,_}

    A1

    2 3

    4 8

    _

    Figura 4.1. Representacion del conjunto A = {1,2,3,4,8,,,_}mediante diagramas de Venn.

    A B2

    4

    1

    3

    _

    7

    8

    4.1.4.2. Diagramas de Venn para 3 conjuntos

    Dados los conjuntos A = {1,2,3,4,5,l,n,s}, B = {4,5,6,7,8,n,s,u} y C ={0,1,5,8,9,l,n,u}, se tiene que el siguiente diagrama se representan todos los posiblescasos de contenencia para los conjuntos A, B y C.

    A B

    C

    2 3

    4 s

    76

    1 l 8 u

    5 n

    9 0

    4.1.5. Contenencia e igualdad

    Sean A y B dos conjuntos, A esta contenido en B si y solo si todos los elementos delconjunto A estan en el conjunto B. La contenencia entre conjuntos es un predicado quese define de la siguiente manera

    contenido(A,B) (x A x B)

  • 4.1. CONCEPTOS BASICOS 39

    Cuando un conjunto A esta contenido en un conjunto B, se dice que A es subconjuntode B y que B es un superconjunto de A.

    A B es usado para notar el predicado contenido(A,B), y A B es usado para denotar( contenido(A,B)).

    A y A A para todo A conjunto.Ejemplo. SeanA,B y C los siguientes conjuntos:A = {2,4,8,,},B = {1,2,3,4,,,_}y C = {0,2,4,6,8,,,,}, entonces A C y B C.

    2

    4

    8

    0

    6

    1

    3

    _

    A

    BC

    Sean A y B dos conjuntos, A es igual a B si y solo si los elementos del conjunto Ason los mismos del conjunto B. La igualdad entre conjuntos se puede definir mediante elsiguiente predicado

    igual(A,B) (A B) (B A)

    A = B es usado para notar el predicado igual(A,B).

    (A = B) (A B).

    A B es usado para denotar ( igual(A,B)).A B es usado para denotar que (A B) (A B), se dice que A es un subconjunto

    propio de B o que A esta contenido estrictamente en B.

    Ejemplo. Sean A, B y C los siguientes conjuntos: A = {2,4,8,,}, B = {4,,2,,8} yC = {8,_,2,,4,}, entonces

    A B

    B A

    por lo tanto A = B

    A C

    C A

    es decir A C

    de donde A C (A es un subconjunto propio de C)

  • 40 CAPITULO 4. TEORIA DE CONJUNTOS

    4.1.6. Conjunto universal

    Un conjunto U se dice un universo para los conjuntos A1,A2, . . . ,An si y solo si (i =1,2, . . . , n)(Ai U).

    Los universos no son unicos, es decir, se pueden construir diferentes universos para unamisma familia de conjuntos.

    Ejemplo. Dados los conjuntos A = {4,,2,,8}, B = {0,2,4,6,8,,,,} y C ={1,2,3,4,5,6,7,8,9,0,,,,,_}, se tiene que B es un universo para A, que C es ununiverso para A, que C es