Evaluacion minima teorica3 cpclp Flashcards
estudiar para la EMT3 de CPLP 2024
¿Qué es la abstracción?
La abstracción es representar algo descubriendo sus características esenciales y suprimiendo las que no lo son, se basa en el principio de información oculta
¿Qué es TAD?¿Como esta compuesto?
TAD= Tipo de Dato Abstracto
Son los nuevos tipos de datos definidos por el usuario
Esta compuesto por la representación(datos) y operaciones(funciones y procedimientos)
¿Qué es la abstracción de datos?
Es el proceso de construir nuevos tipos de datos
¿Qué condiciones cumple un tipo abstracto de datos para que sea considerado uno?
-Encapsulamientos: la representación del tipo y las operaciones permitidas se describen 1 vez
-Ocultamiento: el objeto y la implementación del tipo permanecen oculto
¿Cómo se debe hacer la especificación de un TAD?
La especificación formal proporciona un conjunto de axiomas que describen el comportamiento de todas las operaciones, tiene que tener una parte de sintaxis y semántica
¿Qué es una clase?
Una clase es un tipo definido por el usuario, contiene la especificación de los datos que describen un objeto junto con la descripción de las acciones que un objeto conoce, posee atributos y métodos,
¿Qué es un sistema de tipos?
ES un conjunto de reglas usadas por un lenguaje para estructurar y organizar sus tipos
¿Cuál es el objetivo de hacer sistemas de tipos?
Es para escribir programas seguros, permite comprender mejor los aspectos semánticos del lenguaje
Nombre las características de los sistemas de tipos
-Provee mecanismos de expresión
+Expresar tipos intrínsecos o definir tipos nuevos
+Asociar los tipos definidos con construcciones del lenguaje
-Define reglas de resolución
+Equivalencia de tipos
+Compatibilidad de tipos
+Inferencia de tipos
-Mientras mas flexible el lenguaje, mas complejo el sistema
-Tipo y tiempo de chequeo
-Reglas de equivalencia y conversión
-Reglas de inferencia de tipo
-Nivel de polimorfismo del lenguaje
¿Cuándo se dice que un tipado es fuerte?
Se dice que el sistema de tipos es fuerte cuando especifica restricciones sobre como las operaciones que involucran valores de diferentes tipos pueden operarse
-no hay errores de tipo
-se detectan todos los errores de tipo
¿Cuáles son los tipos de ligadura que hay?
-Tipado estático: ligaduras en compilación, exige cumplir ciertas condiciones
-Tipado dinámico: ligaduras en ejecución, inseguro
-Tipado seguro: no es estático, ni inseguro
¿Cuáles son las reglas de equivalencia y conversión?
-Tipo compatible: reglas semánticas que determinan si el tipo de un objeto es valido en un contexto particular
-Un lenguaje se debe definir en que contexto el tipo Q es compatible con el tipo T
-El sistema de tipos define la compatibilidad
-Hay varios tipos de equivalencia
-Un tipo es compatible con otro si es equivalente y se puede convertir
-Coerción
-Widening
-Narrowing
-Clausula de casting
(hice la pregunta como pude)
¿Qué permite la inferencia de tipos?
la inferencia de tipos permite que el tipo de una entidad declarada se infiera en lugar de ser declarado. La inferencia puede realizarse de acuerdo al tipo de:
-Un operador predefinido
-Un operando
-Un argumento
-El tipo del resultado
¿Cuáles son las reglas de inferencia y nivel de polimorfismo?
-Las variables polimórficas pueden tomar valores de diferentes tipos
-Las operaciones polimórficas son funciones que aceptan operandos de varios tipos
-Los tipos polimórficos tienen operaciones polimórficas
-El polimorfismo ad-hoc
-La sobrecarga
-La coerción
-Hay distintos niveles de polimorfismo
(no supe como hacer la pregunta?)
¿Cuáles son los niveles de polimorfismo?
-Polimorfismo universal:
Una operación se aplica uniformemente sobre un conjunto de tipos relacionados
-Polimorfismo paramétrico:
La uniformidad de la estructura esta dada a través de parámetros
-Polimorfismo paramétrico:
Es un polimorfismo universal que permite modelar subtipos y herencia
¿Qué es un lenguaje mono-formico?
Un lenguaje se dice mono-mórfico si cada entidad se liga a un único tipo(estático).
¿Qué permite el polimorfismo ad-hoc?
El polimorfismo ad-hoc permite que una función se aplique a varios tipos con comportamientos diferentes
¿Qué le dice una roca a otra roca?
la vida es dura
¿Qué es la sobrecarga?
(reglas de inferencia y nivel de polimorfismo)
Es un conjunto de abstracciones diferentes que están ligadas al mismo símbolo o identificador
¿Qué permite la coerción?
(reglas de inferencia y nivel de polimorfismo)
La coerción permite que un operador que espera un tipo pueda recibir una de un tipo distinto
¿Cuáles son los tipos de equivalencia?
-Equivalencia por nombre: dos variables son del mismo tipo si y solo si están declaradas juntas o si están declaradas con el mismo nombre de tipo
-Equivalencia por estructura: dos variables son del mismo tipo si los componentes de su tipo son iguales
¿Qué significa coerción?
Significa convertir un valor de un tipo a otro
¿Qué es el Widening(ensanchar)?
(reglas de equivalencia y conversión)
Es una característica de la conversión: el valor del dominio tiene su correspondiente valor en el rango
¿Qué es el Narrowing(estrechar)?
(reglas de equivalencia y conversión)
Es una característica de la conversión: cada valor del dominio puede no tener su correspondiente valor en el rango
¿Qué es la clausula de casting?
(reglas de equivalencia y conversión)
Es cuando la conversión es explicita, se fuerza a que se convierta
¿Para que sirven las estructuras de control?
Sirven para tomar determinar el flujo de ejecución entre los componentes de un programa, hay estructuras de control a nivel unidad y a nivel sentencia
¿Qué es una estructura de control a nivel unidad?
Es cuando el flujo de control se pasa entre unidades(rutinas, funciones, etc)también es necesario estructurar el flujo entre ellas
¿Cuáles son las formas de control a nivel unidad?
-Pasaje de parámetros
-Call-Return
-Excepciones
-Y mas
¿Cómo se divide las estructuras de control a nivel sentencia?
-Secuencia
-Selección
-Iteración
Características de la secuencia(estructuras de control a nivel sentencia)
-Es el flujo de control mas simple
-Es la ejecución de una sentencia continuación de otra
-Algunos lenguajes permiten sentencias compuestas en las que se utilizan delimitadores({})
¿Como se puede realizar una asignacion?
Mediante una expresión:
Mediante una sentencia
¿Qué es un IF?
IF es una estructura de control, que permite expresar una elección entre un cierto numero posible de sentencias alternativas, entre los lenguajes semánticamente es similar pero en sintaxis puede haber muchas diferencias
Distintos IFs
IF de Fortran: if (condición lógica) sentencia
IF de ALGOL: if (condición lógica) then sentencia1 else sentencia2
(para evitar ambigüedad en anidación se utiliza sentencias de cierre de bloque)
¿A que se refieren las terminologías “corto circuito” y “largo circuito”
Se refieren a como se evalúan las expresiones lógicas, aparecen cuando hay and u or
ejemplo: dado un if con varias ands
corto circuito: cuando aparece la primera condición que de falso ignora el resto y no ejecuta el cuerpo
largo circuito: hace todas las condiciones del if
¿Qué es un case?
( el concepto de un case )
Es una estructura de control de selección múltiple para elegir entre dos o mas opciones posibles y evitar ifs anidados
¿Cuántas patas tiene una silla de 4 patas?
4 patas
¿Qué permite la iteración?
La iteración permite que una serie de acciones se ejecuten repetidamente
Comúnmente se agrupan en bucle for (se repite una determinada cantidad de veces)
bucle while (se repite indeterminadas veces hasta que cumple una condición y a su vez también existe dos variantes el until-repeat que ejecuta el código al menos una vez y el do-while que es el normal)
¿Quiénes pueden atender los errores de un código?
-Los mecanismos del lenguaje
-Los mecanismos del hardware
-Mecanismos del sistema operativo
¿Qué es una excepción?
Condición inesperada o inusual, que ocurre durante la ejecución del programa y no puede ser manejada en el contexto local, en otras palabras, que sucedio algo inesperado e indeseable y hay que arreglarlo
¿Cómo evitan la ambigüedad en p1/1, Pascal y C?
Para evitar la ambigüedad en estos lenguajes se utiliza una regla y es que cada rama else se empareje con la instrucción if solitaria mas próxima(buscando para atrás)
¿Cómo evitan la ambigüedad en Algol60?
Los if están compuestos también con begin y end
¿Qué necesita un lenguaje para tratar las excepciones?
-Un modo de definirlas
-Una forma de reconocerlas
-Una forma de lanzarlas y capturarlas
-Una forma de manejarlas especificando el código y respuestas
-Un criterio de continuación
¿Qué es un controlador de excepciones/manejador?¿Que acciones puede realizar?
Es una sección de código que se encarga de manejar una excepción de un programa, trata de recuperarse ante un error o falla, permitiendo que el programa continúe ejecutándose.
Puede
-Imprimir un mensaje de error
-Realizar acciones correctivas
-Lanzar otra excepción
-Finalizar la ejecución del programa
(Se busca la solución menos perjudicial)
¿Qué tipos de excepciones hay?
-Implícitas: Definidas por el lenguaje
-Explicitas: Definidas por el programador
¿Qué se debe tener en cuenta un lenguaje que provee manejo de excepciones?
-¿Cuales son las excepciones que se pueden manejar?
-¿Como se definen?
-¿Cómo se maneja una excepción y cuál es su ámbito?
-¿Cómo especificar los controladores de excepciones que se han de ejecutar cuando se alcanza las excepciones?
-¿A dónde se cede el control cuando se termina de atender una excepción?
-¿Cómo se propagan las excepciones?
-¿Hay excepciones predefinidas?
-¿Hay situaciones no controladas que lleven a mayores fallos?
¿Que instrucciones debe tener un lenguaje para manejar una excepción?
-Definición de la excepción
-Levantamiento de la excepción
-Manejador de la excepción
¿Que es el punto de retorno de una excepción?
Es lo que se va a ejecutar después de haber atendido la excepción, puede ser que:
-Se continúe con la ejecución normal del programa
(se utiliza cundo el programa puede continuar, el punto de retorno será definido por el lenguaje)
-Retorne a un estado anterior
(puede requerir de que regrese a un estado anterior o deshacer acciones)
-Propagación de la excepción
(cuando el controlador no lo puede manejar completamente la excepción, entonces la propaga a un nivel superior y el punto de retorno será el controlador del nivel superior)
-Termine la ejecución del programa
¿Cuáles son los modelos de manejo de excepciones?
-Reasunción:
El controlador realiza medidas correctivas y retoma la ejecución donde se produjo la excepción. Lo utiliza PL/1
-Terminación:
el controlador realiza las acciones necesarias, indica donde se produjo la excepción pero no se retoma a donde se produjo la excepción, sino, que lo hace después del controlador. Lo utiliza ADA, CLU, C++, JAVA, Python y PHPH
Caracteristicas del manejo de excepciones en PL/1
- Fue el primer lenguaje. que incorporó el manejo de excepciones.
- Utiliza el criterio de Reasunción. Cada vez que se produce la excepción, la maneja el manejador y devuelve el control a la sentencia siguiente de dónde se levantó.
- Las excepciones se llaman CONDITIONS en PL/1
- Los manejadores se declaran con la sentencia ON: ON CONDITION(Nombre-excepción) Manejador
- El Manejador puede ser una instrucción o un bloque (entre begin y end)
- Las exepciones se lanzan explícitamente con la palabra clave SIGNAL:
SIGNAL CONDITION(Nombre-excepción) - Este lenguaje tiene una serie de excepciones ya predefinidas con su manejador asociado. Son las Built-in exceptions.
Por ej. zerodivide, se levanta cuando hay una división por cero. - Los manejadores se ligan dinámicamente con las excepciones. Una excepción siempre estará ligada con el último manejador definido.
(Manejo de pila de manejadores de excepciones) - El alcance de un manejador termina cuando finaliza la ejecución de la unidad donde fue declarado.
En C++ ¿Que sucede cuando no se encuentra un manejador que pueda manejar una excepción?
Si una excepción se propaga repetidamente y nunca encuentra un manejador coincidente, entonces llama automáticamente a una función especial llamada terminate()
El terminate() puede ser redefinido por el programador. Su comportamiento predeterminado, eventualmente aborta la ejecucion del programa
¿Cómo se declaran las excepciones en ADA?
- Las excepciones se definen/declaran en la zona
de definición de variables y tienen el mismo alcance en la unidad.
Su formato para declarar es
MiExcepcion: exception;
Características del controlador de excepciones en ADA
ADA tiene una lista de controladores
La lista de controladores de excepciones lleva el prefijo de la palabra clave exception.
-Cada controlador lleva el prefijo de la palabra clave when (con un formato específico), seguido de las acciones.
- Se puede utilizar when others para capturar cualquier excepción no especificada,
+ Debe colocarse al final del bloque de manejo de excepciones,
+ Posee efectos colaterales
-Las excepciones se levantan explícitamente con la palabra clave raise.
-Los manejadores pueden agregarse y encontrarse al final de diferentes unidades de programa
¿ADA tiene excepciones predefinidas buitl-in?¿Cuales?
Si
*Constraint_Error: cuando se intenta violar una restricción impuesta en una declaración. (Por ejemplo, indexar más allá de los límites de un array o asignar a una variable un valor fuera del rango de su subtipo, zerodivide)
*Program_Error: cuando se intenta violar la estructura de control o regla del lenguaje. (Por ejemplo, una función termina sin devolver un valor)
*Storage_Error: cuando se produce una violación de memoria, (Por ejemplo, cuando se requiere más memoria de la disponible)
*Tasking_Error: cuando hay errores en la comunicación y manejo de tareas del sistema.(Por ejemplo, en concurrencia y la programación de tareas /threads)
*Name_Error: cuando hay error de nombre. (Por ejemplo, se produce cuando se intenta abrir un fichero que no existe)