Está en la página 1de 19

Concepto de lenguaje de programación:

Capítulo 1 preliminares:

Criterio de evaluación de un lenguaje


Los lenguajes de programación tiene que tener tres característica fundamentales que son:
facilidad de lectura y escritura(legibilidad), seguridad y costo.

-Legibilidad​:
simplicidad, ortogonalidad, estructura de control y de datos y consideración sobre la
sintaxis.
-writability (facilidad de escritura):
tiene que ver con la facilidad para crear programas de un dominio.
-Seguridad o fiabilidad:
chequeo de tipos.
manejo de excepciones.
-​Costo:
aprender, usar, compilar, ejecutar, sistema de implementación del lenguaje, confiabilidad,
programas de mantenimiento.

Métodos de implementación:
Lenguajes compilados:

-traduce programas de alto nivel a código de máquina


-traducción lenta
-ejecución rápido

Lenguajes de interpretación pura o intérprete:


-no traducción
-lenta ejecución
-se convierte raros.

este lenguaje me da portabilidad pero no performance

Lenguajes con implementación de sistema híbrida:

pequeño costo de traducción


media velocidad de ejecución.

aqui el codigo que se usa muchas veces se compila el que no se interpretac


Categoría de lenguajes

imperativos
funcionales
lógicos
orientado a objeto

Entorno de desarrollo mínimo


linker
shell
editor de texto

Capítulo 3
Sintaxis​: la forma o estructura de las expresiones, declaraciones y unidades del programa.

Semántica​: el significado de las expresiones, declaraciones y unidades del programa

Enfoque formales para describir la sintaxis:

reconocedores: utilizados en compiladores


generadores.

Gramáticas de libre contexto:


Desarrollado por noam chomsky.
generadores de lenguaje, destinados a describir el sintaxis de lenguajes naturales.

Un metalenguaje es un lenguaje que se usa para describir otro lenguaje.

semántica operacional:
La idea detrás de la semántica operativa es describir el significado de una declaración o
programa especificando los efectos de ejecutarlo en una máquina. Los efectos en la
máquina se ven como la secuencia de cambios en su estado, donde El estado de la
máquina es la colección de valores en su almacenamiento. Una obvia descripción
semántica operativa, entonces, se da al ejecutar una versión compilada del programa en
una computadora. La mayoría de los programadores, al menos en una ocasión, han escrito
un pequeño programa de prueba para determinar el significado de una construcción de
lenguaje de programación, a menudo mientras aprenden el lenguaje. Esencialmente, lo que
está haciendo un programador es usar la semántica operativa para determinar el significado
de la construcción.

Capítulo 4
Lexical and Syntax Analysis

Analizador léxico:
El analizador léxico es la primera fase de un compilador, lee caracteres de entrada para
formar componentes el analizador sintáctico. Estos componentes son conocidos también
como ‘tokens’.

Que es un token:
Un token o también llamado componente léxico es una cadena de caracteres que tiene un
significado coherente en cierto lenguaje de programación.

Los componente léxico más comunes son: palabras clave, operadores aritméticos,
operadores lógicos, identificadores, constantes, etc.

Funciones del analizador léxico:


corrige los espacios en blanco, líneas en blancos, comentarios y demás información
innecesaria se elimina del programa fuente.

Analizador sintáctico

Es un programa informático que analiza una cadena de símbolos de acuerdo a las reglas de
una gramática formal.
el análisis sintáctico convierte el texto de entrada en otras estructura(comúnmente árboles),
que son más útiles para el posterior análisis y capturan la jerarquía implícita de la entrada.

Clasificación

Analizador sintáctico descendente


top-down-parser
Analizador sintáctico ascendente
bottom-up-parser

Funciones del analizador sintáctico:

Comprobar si el programa es sintácticamente correcto.


Generar las estructura de datos (árboles sintácticos u otras estructuras) que representa el
programa y sirven para el analizador semántico y el generador de código.

Capítulo 5
Nombre
Un nombre es una cadena de caracteres utilizada para identificar alguna entidad en un
programa.

Problemas de diseño:
- Longitud máxima?
- ¿Se permiten los caracteres del conector?
- ¿Los nombres distinguen entre mayúsculas y minúsculas?
- ¿Las palabras especiales son palabras reservadas o palabras clave?

Palabras reservadas

Una palabra reservada es una palabra especial que no se puede usar como un nombre
definido por el usuario.

Variable:
Una variable es una abstracción de una celda de memoria.
Las variables se pueden caracterizar como un séxtuple de atributos:

nombres, dirección, valor, tipo, duración y alcance.


Nombres​: no todas la variables tiene nombre.

dirección:​ dirección de memoria con la que está asociada


una variable puede tener diferentes direcciones según el momento de la ejecución.

Alias
Si se pueden usar dos nombres de variables para acceder a la misma ubicación de
memoria, se denomina alias. los alias son perjudicial para la legibilidad.

Tipo:
determina el rango de valores de las variables y el conjunto de operaciones que se definen
para valores de ese tipo; en el caso de punto flotante, el tipo también determina la precisión
y operaciones aritméticas para suma, resta, multiplicación, división y módulo.

Valor:
el contenido de la ubicación con la que está asociada la variable.
- Celda de memoria abstracta: la celda física o colección de celdas asociadas con una
variable.

Diferencia entre variable y Identificador:


Una variable es, básicamente, un espacio de memoria a donde almacenas o desde donde
lees los datos, mientras que un identificador es el nombre que le asignas a ese espacio de
memoria.

Binding
Un enlace es una asociación, como entre un atributo y una entidad, o entre una operación y
un símbolo
El tiempo de enlace es el momento en que tiene lugar esta asociación.

Un enlace es estático si ocurre antes del tiempo de ejecución y permanece sin cambios
durante la ejecución del programa.

Un enlace es dinámico si ocurre durante la ejecución o puede cambiar durante la ejecución


del programa.

Una declaración explícita es una declaración de programa utilizada para declarar los tipos
de variables
Una declaración implícita es un mecanismo predeterminado para especificar tipos de
variables (la primera aparición de la variable en el programa)

Vida útil de una variable


La vida útil de una variable es el tiempo durante el cual está vinculada a una celda de
memoria particular

Comprobación de tipo:
La verificación de tipo es la actividad de garantizar que los operandos de un operador sean
de tipo compatibles.

Un tipo compatible es uno que es legal para el operador o que, según las reglas del
lenguaje, se puede convertir implícitamente, por código generado por el compilador, a un
tipo legal. Esta conversión automática se llama coerción.

Un error de tipo​ es la aplicación de un operador a un operando de un tipo inapropiado

Un lenguaje de programación está ​fuertemente tipado si siempre se detectan errores de


tipo.

Compatibilidad de tipo
Def: la compatibilidad de tipos por nombre significa que las dos variables tienen tipos
compatibles si están en la misma declaración o en declaraciones que usan el mismo
nombre de tipo.

Scope
El alcance de una variable es el rango de declaraciones sobre las cuales es visible.
Def: Las variables no locales de una unidad de programa son aquellas que son visibles pero
no declaradas allí.

Las reglas de alcance de un lenguaje determinan cómo se asocian las referencias a los
nombres con las variables.

Entornos de referencia
Def: el entorno de referencia de una declaración es la colección de todos los nombres que
están visibles en la declaración
Una constante con nombre es una variable que está vinculada a un valor solo cuando está
vinculada al almacenamiento

Capítulo 6
Tipo de datos:

recopilación de valores de datos y un conjunto de operaciones predefinidas en esos valores.

Tipos de datos primitivos:


son aquellos que está definido por sí mismo. es decir aquello no definido en términos de
otros tipos de datos.

Arreglos:

Una matriz es un agregado de elementos de datos homogéneos en los que un elemento


individual se identifica por su posición en el agregado, en relación con el primer elemento.

característica fundamental de los arreglos es que se almacenan los datos de forma


continua.

Los arreglos son ‘O1’ por a la ram, debido a que esta nos garantiza que movernos a una
celda requiera el mismo coste.

Record y Tuplas

Un registro es un agregado posiblemente heterogéneo de elementos de datos en el que los


elementos individuales se identifican por nombres.

las tuplas son tipos de datos similares a los record, la unica diferecia es que los elementos
de las tuplas no son nombres.

Unión
Una unión es un tipo cuyas variables pueden almacenar diferentes valores de tipo en
diferentes momentos durante la ejecución.

Puntero

un tipo puntero es un tipo en el que el rango de valores consiste en direcciones de memoria


y un valor especial. El valor del puntero tiene otra dirección de memoria.
Capítulo 7
Expresiones y declaraciones de asignación.

- Las ​expresiones aritméticas consisten en operadores, operandos, paréntesis y llamadas


a funciones.

A unary operator has one operand


A binary operator has two operands
A ternary operator has three operands

Las ​reglas de precedencia de operadores para la evaluación de expresiones definen el


orden en que se evalúan los operadores "adyacentes" de diferentes niveles de precedencia
("Adyacente" significa que están separados como máximo por un operando).

Las reglas de asociatividad del operador para la evaluación de expresiones definen el


orden en que se evalúan los operadores adyacentes con el mismo nivel de precedencia.

Las reglas de precedencia y asociatividad se pueden anular con paréntesis.

Conversiones de tipo implícito


Def: una conversión de reducción es aquella que convierte un objeto en un tipo que no
puede incluir todos los valores del tipo original
Def: una conversión de ampliación es aquella en la que un objeto se convierte a un tipo que
puede incluir al menos aproximaciones a todos los valores del tipo original
Def: una expresión de modo mixto es aquella que tiene operandos de diferentes tipos
Def: una coerción es una conversión de tipo implícita

Capítulo 8
Estructuras de control a nivel de declaración

Una estructura de control es una declaración de control y la colección de declaraciones


cuya ejecución controla.

Declaraciones de selección

Una declaración de selección proporciona los medios para elegir entre dos o más rutas de
ejecución en un programa. Tales declaraciones son partes fundamentales y esenciales de
todos los lenguajes de programación.
Las declaraciones de selección se dividen en dos categorías generales: bidireccional y
n-direccional, o selección múltiple.

Una declaración iterativa

es aquella que hace que una declaración o colección de declaraciones se ejecute cero, una
o más veces. Una declaración iterativa a menudo se llama un bucle.

Capítulo 9
Subprograma

Característica fundamentales de los subprograma:

-Un subprograma tiene un solo punto de entrada

-la llamada se suspende durante la ejecución de la llamada del subprograma

-El control siempre vuelve a la persona que llama cuando finaliza la ejecución del programa
llamado.

definiciones básica:

Una definición de subprograma es una descripción de las acciones de la abstracción de


subprograma.

Una llamada de subprograma es una solicitud explícita de que se ejecute el subprograma.

Un encabezado de subprograma es la primera línea de la definición, que incluye el nombre,


el tipo de subprograma y los parámetros formales.

El perfil de parámetros de un subprograma es el número, el orden y los tipos de sus


parámetros.
El protocolo de un subprograma es su perfil de parámetros más, si es una función, su tipo
de retorno

def:La compilación independiente es la compilación de algunas de las unidades de un


programa por separado del resto del programa, sin el beneficio de la información de la
interfaz.

Def: la compilación separada es la compilación de algunas de las unidades de un programa


por separado del resto del programa, utilizando la información de la interfaz para verificar la
corrección de la interfaz entre las dos partes.
def: las variables no locales de un subprograma son aquellas que son visibles pero no
declaradas en el subprograma

Def: las variables globales son aquellas que pueden ser visibles en todos los subprogramas
de un programa

corutinas
Una corrutina es un subprograma que tiene múltiples entradas y las controla a sí misma.
- También llamado control simétrico
- Una llamada de rutina se denomina currículum
- El primer currículum de una rutina está en su inicio, pero las llamadas posteriores entran
en el punto justo después de la última declaración ejecutada en la rutina.
- Por lo general, las corrutinas se reanudan repetidamente, posiblemente para siempre
- Las rutinas proporcionan la ejecución casi concurrente de las unidades del programa (las
corrutinas)
- Su ejecución es intercalada, pero no superpuesta

Capítulo 10
Implementación de subprogramas

Las llamadas de subprograma y las operaciones de retorno se denominan juntas


vinculación de subprograma. La implementación de subprogramas debe basarse
en la semántica de la vinculación de subprogramas del lenguaje que se está
implementando.

Capítulo 11
Tipo de dato abstracto control de encapsulación

abstracto
- El concepto de abstracción es fundamental en la programación.
- Casi todos los lenguajes de programación admiten abstracción de procesos con
subprogramas
- Casi todos los lenguajes de programación diseñados desde 1980 han admitido
la abstracción de datos con algunos
tipo de módulo

encapsulación
- Motivación original:
- Los programas grandes tienen dos necesidades especiales:
1. Algunos medios de organización, además de la simple división en
subprogramas.
2. Algunos medios de compilación parcial (unidades de compilación que son
más pequeñas que la
programa completo)
- Solución obvia: una agrupación de subprogramas que están relacionados
lógicamente en una unidad que puede ser
compilado por separado
- Estos se llaman encapsulaciones

Un tipo de datos abstracto es un tipo de datos definido por el usuario que


cumple las dos condiciones siguientes:
1. La representación y las operaciones en objetos del tipo se definen en una sola
unidad sintáctica; Además, otras unidades pueden crear objetos del tipo.
2. La representación de los objetos del tipo está oculta de las unidades del
programa que usan estos objetos, por lo que las únicas operaciones posibles son
las que se proporcionan en la definición del tipo.

Requisitos de un lenguaje para la abstracción de datos:


1. Una unidad sintáctica en la que encapsular la definición de tipo.
2. Un método para hacer que los nombres de tipo y encabezados de
subprograma sean visibles para los clientes, mientras se ocultan las definiciones
reales.
3. Algunas operaciones primitivas deben integrarse en el procesador de lenguaje
(generalmente solo asignaciones y comparaciones para igualdad y desigualdad)
- Algunas operaciones son comúnmente necesarias, pero
debe ser definido por el diseñador de tipos
- por ejemplo, iteradores, constructores, destructores

capítulo 12
Soporte para programación orientada a objetos

OOP Definiciones:
- Los ADT se llaman clases
- Las instancias de clase se llaman objetos
- Una clase que hereda es una clase derivada o una subclase
- La clase de la que hereda otra clase es una clase primaria o superclase
- Los subprogramas que definen operaciones en objetos se denominan métodos
- Toda la colección de métodos de un objeto se denomina protocolo de mensajes o interfaz de
mensajes.
- Los mensajes tienen dos partes: un nombre de método y el objeto de destino
- En el caso más simple, una clase hereda todas las entidades de su padre

La herencia puede ser complicada por los controles de acceso a las entidades encapsuladas.
- Una clase puede ocultar entidades de sus subclases - Una clase puede ocultar entidades de
sus clientes
- Además de heredar métodos tal cual, una clase puede modificar un método heredado
- El nuevo anula al heredado - El método en el padre se anula
- Hay dos tipos de variables en una clase:
1. Variables de clase - una / clase
2. Variables de instancia: una / objeto
- Hay dos tipos de métodos en una clase:
1. Métodos de clase: mensajes a la clase 2. Métodos de instancia: mensajes a objetos

Polimorfismo en OOPL
- Una variable polimórfica se puede definir en una clase que puede hacer referencia (o
señalar) a los objetos de la clase y a los objetos de cualquiera de sus descendientes.
- Cuando una jerarquía de clases incluye clases que anulan los métodos y dichos métodos se
llaman a través de una variable polimórfica, el enlace al método correcto DEBE ser dinámico
- Este polimorfismo simplifica la adición de nuevos métodos.
- Un método virtual es uno que no incluye una definición (solo define un protocolo)
- Una clase virtual es aquella que incluye al menos un método virtual
- Una clase virtual no puede ser instanciada

Implementación y herencia de interfaz


- Si solo la interfaz de la clase padre es visible para la subclase, es herencia de interfaz

Verificación de tipo y polimorfismo


- El polimorfismo puede requerir la verificación dinámica de los parámetros y el valor de
retorno
- La verificación dinámica de tipos es costosa y retrasa la detección de errores
- Si los métodos de anulación se limitan a tener los mismos tipos de parámetros y tipo de
retorno, la comprobación puede ser estática

herencia simple y múltiple


- Desventaja de herencia múltiple:
- Lenguaje y complejidad de implementación
- Potencial ineficiencia - costos vinculantes dinámicos
más con herencia múltiple (pero no mucho)
- Ventaja:
- A veces es extremadamente conveniente y
valioso
6. Asignación y desasignación de objetos.
- ¿Desde dónde se asignan los objetos?
- Si todos viven en el montón, referencias a ellos son uniformes

Capítulo 13
Concurrencia

La concurrencia puede ocurrir en cuatro niveles:


1. nivel de instrucción de la máquina
2. Nivel de lenguaje de alto nivel
3. Nivel de unidad
4. Nivel del programa

Un hilo de control en un programa es la secuencia de puntos de programa alcanzados a


medida que el control fluye a través del programa.
Categorías de concurrencia:
1. Concurrencia física: múltiples procesadores independientes
(múltiples hilos de control)
2. Concurrencia lógica: la aparición de concurrencia física se presenta compartiendo el
tiempo un procesador
(el software puede diseñarse como si hubiera múltiples hilos de control)

Def: una tarea es una unidad de programa que puede estar en ejecución concurrente con otras
unidades de programa
- Las tareas difieren de los subprogramas ordinarios en que:
1. Una tarea puede iniciarse implícitamente
2. Cuando una unidad de programa inicia la ejecución de una tarea, no necesariamente se
suspende
3. Cuando se completa la ejecución de una tarea, el control puede no volver a la persona que
llama
Def: una tarea es disjunta si no se comunica o afecta la ejecución de cualquier otra tarea en el
programa de ninguna manera

Semáforos (Dijkstra - 1965)


- Un semáforo es una estructura de datos que consiste en un contador y una cola para
almacenar descriptores de tareas.
- Los semáforos se pueden usar para implementar protecciones en el código que accede a
estructuras de datos compartidas
- Los semáforos tienen solo dos operaciones, esperar y liberar (originalmente llamado P y V
por Dijkstra)
- Los semáforos se pueden usar para proporcionar sincronización de competencia y
cooperación

- Semántica:
a. La tarea se ejecuta en la parte superior de la cláusula de aceptación y espera un mensaje
si. Durante la ejecución de la cláusula de aceptación, el remitente se suspende
C. aceptar parámetros pueden transmitir información en una o ambas direcciones
d.Cada cláusula de aceptación tiene una cola asociada para almacenar mensajes en espera.

Capítulo 14
Exception handling

En un lenguaje sin excepción de manejo:


Cuando ocurre una excepción, el control va al
sistema operativo, donde se muestra un mensaje y se termina el programa

En un lenguaje con manejo de excepciones:


Los programas pueden atrapar algunas excepciones, proporcionando así la posibilidad de
solucionar el problema y continuar.
Muchos lenguajes permiten a los programas atrapar errores de entrada / salida (incluido EOF)

Def: Una excepción es cualquier evento inusual, ya sea erróneo o no, detectable por hardware
o software, que puede requerir
procesamiento especial
Def: el procesamiento especial que puede ser requerido después de la detección de una
excepción se llama
manejo de excepciones
Def: la unidad de código de manejo de excepciones se llama controlador de excepciones

Def: se genera una excepción cuando se produce su evento asociado

Introducción de manejo de excepciones

La mayoría de los sistemas de hardware son capaces de detectar cierto tiempo de ejecución
condiciones de error, como desbordamiento de punto flotante. Lenguajes de programación
tempranos fueron diseñados e implementados de tal manera que el programa de usuario
podría ni detectar, ni intentar tratar con tales errores.

definiciones básicas

Se define la excepción como cualquier evento inusual, erróneo o no, que sea detectable por
hardware o software y eso puede requerir un procesamiento especial. El procesamiento
especial que puede ser requerido cuando se detecta una excepción se llama manejo de
excepciones. Este procesamiento lo realiza una unidad de código o segmento llamado
controlador de excepciones. Se genera una excepción cuando se produce su evento asociado.

Problemas de diseños

Ahora exploramos algunos de los problemas de diseño para un sistema de manejo de


excepciones cuando es parte de un lenguaje de programación. Dicho sistema podría permitir
excepciones y manejadores de excepciones predefinidos y definidos por el usuario. Tenga en
cuenta que las excepciones predefinidas se generan implícitamente, mientras que las
excepciones definidas por el usuario deben generarse explícitamente por código de usuario.

Introducción al manejo de eventos

El manejo de eventos es similar al manejo de excepciones. En ambos casos, los controladores


son llamados implícitamente por la ocurrencia de algo, ya sea una excepción o un evento. Si
bien las excepciones pueden generarse explícitamente por código de usuario o implícitamente
por hardware o un intérprete de software, los eventos se crean por acciones externas, como
las interacciones del usuario a través de una interfaz gráfica de usuario (GUI).

Capítulo 15

lenguaje de programación funcional

El diseño de los lenguajes imperativos se basa directamente en la arquitectura von Neumann.

- La eficiencia es la principal preocupación, más que

la idoneidad del lenguaje para el desarrollo de software

- El diseño de los lenguajes funcionales se basa en funciones matemáticas.

- Una base teórica sólida que también está más cerca de

el usuario, pero relativamente indiferente con la arquitectura de las máquinas en las que se
ejecutarán los programas

una función matemática es un mapeo de miembros de un conjunto, llamado conjunto de


dominio, a otro conjunto, denominado conjunto de rango

Una expresión lambda especifica los parámetros y la asignación de una función en la


siguiente forma

l (x) x * x * x

para la función cubo (x) = x * x * x


Las expresiones lambda describen funciones sin nombre

- Las expresiones lambda se aplican a los parámetros colocando los parámetros después de la
expresión

p.ej. (l (x) x * x * x) (3)

Formas Funcionales

Def: una función de orden superior, o forma funcional, es aquella que toma funciones como
parámetros o produce una función como resultado, o ambas

1. Composición de funciones

Una forma funcional que toma dos funciones como parámetros y produce una función cuyo
resultado es una función cuyo valor es la primera función de parámetro real aplicada al
resultado de la aplicación de la segunda

Forma: h∫f ° g

lo que significa h (x) ∫ f (g (x))

Construcción

Una forma funcional que toma una lista de funciones como parámetros y produce una lista de
los resultados de aplicar cada una de sus funciones de parámetro a un parámetro dado

Capítulo 16

programación lógica

Paradigma  de  programación  basado  en  la  lógica  de  primer  orden.  La  programación 
lógica  estudia  el  uso  de  la  lógica  para  el  planteamiento  de  problemas y el control sobre 
las reglas de inferencia para alcanzar la solución automática. 

La  programación  lógica,  junto  con  la  funcional,  forma  parte  de  lo  que  se  conoce  como 
Programación  Declarativa,  es  decir  la  programación  consiste  en  indicar  como  resolver 
un  problema  mediante  sentencias,  en  la  Programación  Lógica,  se  trabaja  en  una  forma 
descriptiva,  estableciendo  relaciones  entre  entidades,  indicando  no  como,  sino  que 
hacer, entonces se dice que la idea esencial de la programación lógica es 

programa  =  lógica(determina  las  soluciones  producidas)  +  control(formas  alternativas 


de ejecutar lógica) 

Es  un  sistema  formal  cuyos elementos más simples representan proposiciones, y cuyas 


constantes  lógicas,  llamadas  conectivas  lógicas,  representan  operaciones  sobre 
proposiciones, capaces de formar otras proposiciones de mayor complejidad. 

Proposiciones:  Elementos  de  una  frase  que  constituyen  por  sí  solos  una  unidad  de 
comunicación de conocimientos y pueden ser considerados verdaderos o falsos. 

Proposición Simple:​ ​“Pepito es humano”​. 

Proposición Compuesta:​ ​“Pepito es hombre y pepita es mujer”​. 

lógica de primer orden:

También  llamada  ​lógica  de  predicados​:  es  un  sistema  deductivo  basado  en un lenguaje 
lógico matemático formal. 

Una  proposición  puede  considerarse  como  una  declaración  lógica  que  puede  o  no  ser 
verdadera.  Consiste  en  objetos  y  las  relaciones  entre  objetos.  La  lógica  formal  se 
desarrolló  para  proporcionar  un  método  para  describir  proposiciones, con el objetivo de 
permitir que se verifique la validez de las proposiciones formalmente establecidas. 

La  lógica  simbólica  se puede usar para las tres necesidades básicas de la lógica formal: 


expresar  proposiciones,  expresar  las relaciones entre proposiciones y describir cómo se 
pueden inferir nuevas proposiciones de otras proposiciones que se supone que son 

verdaderas. 

Existe  una  estrecha  relación  entre  la  lógica  formal  y  las  matemáticas.  De  hecho,  se 
puede  pensar  en  gran  parte  de  las  matemáticas  en  términos  de  lógica.  Los  axiomas 
fundamentales  de  la  teoría  de  números  y  conjuntos  son  el  conjunto  inicial  de 
proposiciones,  que  se  supone  verdaderas.  Los  teoremas  son  las  proposiciones 
adicionales que se pueden inferir del conjunto inicial. 
La  forma  particular  de lógica simbólica que se usa para la programación lógica se llama 
cálculo  de  predicados de primer orden (aunque es un poco impreciso, generalmente nos 
referiremos  a  él  como  cálculo  de  predicados).  En  las  siguientes  subsecciones, 
presentamos una breve mirada al cálculo de predicados. 

También podría gustarte