Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capítulo 1 preliminares:
-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:
imperativos
funcionales
lógicos
orientado a objeto
Capítulo 3
Sintaxis: la forma o estructura de las expresiones, declaraciones y unidades del programa.
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.
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
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:
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.
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.
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)
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.
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:
Arreglos:
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
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
Capítulo 8
Estructuras de control a nivel de declaración
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.
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
-El control siempre vuelve a la persona que llama cuando finaliza la ejecución del programa
llamado.
definiciones básica:
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
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
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
Capítulo 13
Concurrencia
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á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
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
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
Capítulo 15
el usuario, pero relativamente indiferente con la arquitectura de las máquinas en las que se
ejecutarán los programas
l (x) x * x * x
- Las expresiones lambda se aplican a los parámetros colocando los parámetros después de la
expresión
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
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
Proposiciones: Elementos de una frase que constituyen por sí solos una unidad de
comunicación de conocimientos y pueden ser considerados verdaderos o falsos.
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.
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.