Evaluacion minima teorica3 cpclp Flashcards

estudiar para la EMT3 de CPLP 2024

1
Q

¿Qué es la abstracción?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué es TAD?¿Como esta compuesto?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué es la abstracción de datos?

A

Es el proceso de construir nuevos tipos de datos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué condiciones cumple un tipo abstracto de datos para que sea considerado uno?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cómo se debe hacer la especificación de un TAD?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es una clase?

A

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,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es un sistema de tipos?

A

ES un conjunto de reglas usadas por un lenguaje para estructurar y organizar sus tipos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cuál es el objetivo de hacer sistemas de tipos?

A

Es para escribir programas seguros, permite comprender mejor los aspectos semánticos del lenguaje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Nombre las características de los sistemas de tipos

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Cuándo se dice que un tipado es fuerte?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cuáles son los tipos de ligadura que hay?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cuáles son las reglas de equivalencia y conversión?

A

-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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué permite la inferencia de tipos?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuáles son las reglas de inferencia y nivel de polimorfismo?

A

-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?)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Cuáles son los niveles de polimorfismo?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué es un lenguaje mono-formico?

A

Un lenguaje se dice mono-mórfico si cada entidad se liga a un único tipo(estático).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué permite el polimorfismo ad-hoc?

A

El polimorfismo ad-hoc permite que una función se aplique a varios tipos con comportamientos diferentes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué le dice una roca a otra roca?

A

la vida es dura

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué es la sobrecarga?
(reglas de inferencia y nivel de polimorfismo)

A

Es un conjunto de abstracciones diferentes que están ligadas al mismo símbolo o identificador

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Qué permite la coerción?
(reglas de inferencia y nivel de polimorfismo)

A

La coerción permite que un operador que espera un tipo pueda recibir una de un tipo distinto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Cuáles son los tipos de equivalencia?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Qué significa coerción?

A

Significa convertir un valor de un tipo a otro

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué es el Widening(ensanchar)?
(reglas de equivalencia y conversión)

A

Es una característica de la conversión: el valor del dominio tiene su correspondiente valor en el rango

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Qué es el Narrowing(estrechar)?
(reglas de equivalencia y conversión)

A

Es una característica de la conversión: cada valor del dominio puede no tener su correspondiente valor en el rango

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

¿Qué es la clausula de casting?
(reglas de equivalencia y conversión)

A

Es cuando la conversión es explicita, se fuerza a que se convierta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

¿Para que sirven las estructuras de control?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

¿Qué es una estructura de control a nivel unidad?

A

Es cuando el flujo de control se pasa entre unidades(rutinas, funciones, etc)también es necesario estructurar el flujo entre ellas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

¿Cuáles son las formas de control a nivel unidad?

A

-Pasaje de parámetros
-Call-Return
-Excepciones
-Y mas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

¿Cómo se divide las estructuras de control a nivel sentencia?

A

-Secuencia
-Selección
-Iteración

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Características de la secuencia(estructuras de control a nivel sentencia)

A

-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({})

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

¿Como se puede realizar una asignacion?

A

Mediante una expresión:
Mediante una sentencia

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

¿Qué es un IF?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

¿A que se refieren las terminologías “corto circuito” y “largo circuito”

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

¿Qué es un case?
( el concepto de un case )

A

Es una estructura de control de selección múltiple para elegir entre dos o mas opciones posibles y evitar ifs anidados

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

¿Cuántas patas tiene una silla de 4 patas?

A

4 patas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

¿Qué permite la iteración?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

¿Quiénes pueden atender los errores de un código?

A

-Los mecanismos del lenguaje
-Los mecanismos del hardware
-Mecanismos del sistema operativo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

¿Qué es una excepción?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

¿Cómo evitan la ambigüedad en p1/1, Pascal y C?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

¿Cómo evitan la ambigüedad en Algol60?

A

Los if están compuestos también con begin y end

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

¿Qué necesita un lenguaje para tratar las excepciones?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

¿Qué es un controlador de excepciones/manejador?¿Que acciones puede realizar?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

¿Qué tipos de excepciones hay?

A

-Implícitas: Definidas por el lenguaje
-Explicitas: Definidas por el programador

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

¿Qué se debe tener en cuenta un lenguaje que provee manejo de excepciones?

A

-¿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?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

¿Que instrucciones debe tener un lenguaje para manejar una excepción?

A

-Definición de la excepción
-Levantamiento de la excepción
-Manejador de la excepción

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

¿Que es el punto de retorno de una excepción?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

¿Cuáles son los modelos de manejo de excepciones?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

Caracteristicas del manejo de excepciones en PL/1

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

En C++ ¿Que sucede cuando no se encuentra un manejador que pueda manejar una excepción?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

¿Cómo se declaran las excepciones en ADA?

A
  • 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;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

Características del controlador de excepciones en ADA

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

¿ADA tiene excepciones predefinidas buitl-in?¿Cuales?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

¿Que se hace en ADA cuando la unidad que genera la excepción tiene un manejador para la misma?

A

El control se transfiere a ese manejador, se omiten las acciones que siguen al punto en
el que se generó la excepción, se ejecuta el manejador y luego el programa continúa su ejecución normalmente, desde la instrucción que sigue al
manejador.

54
Q

¿Que se hace en ADA cuando la unidad que genera la excepción NO tiene un manejador para esa excepcion?

A

Se utiliza Propagacion
-Se termina la unidad (bloque, paquete, subprograma o tarea) dónde se produce la excepción.
-Si el manejador no se encuentra en ese lugar la excepción se propaga dinámicamente (quién lo llamó). Esto significa que se vuelve a levantar en otro ámbito.
-Siempre tener en cuenta el alcance, puede convertirse en anónima. Al propagarse a otras unidades la variable excepción declarada ya no está en el alcance y quedará sin nombre y entrará por when others

55
Q

¿Para que se utiliza el raise?
(levantar excepciones en ADA)

A

La utilidad de raise es poder lanzar excepciones que pueden ser definidas por el programador.

56
Q

¿Cómo es la asociación entre la excepción entre el manejador y la excepción en ADA?

A

Es determinístico
Variable->manejadorVar
mismo nombre para la excepción y manejador

57
Q

¿Cómo se podria continuar la ejecucion de instrucciones de un bloque donde se lanza una excepcion?

A

Con el “Declare”, se arma una unidad y luego se agrega instrucciones restantes abajo

58
Q

¿Para que sirven el try, catch y en C++?

A

Try: para indicar los bloques donde pueden llegar a levantarse excepciones. Los mismos van precedidos por esta palabra clave Try
Catch se utilizada para especificar los manejadores. Catch(NombreDeLaExcepción) (las cláusulas catch deben estar después del bloque try y antes de cualquier código que esté
fuera del bloque try.)
Se utlizan los {} para los bloques de los manejadores

59
Q

¿Cómo se lanza manualmente una excepción en C++?

A

Con la instrucción Throw

60
Q

¿Como es el procedimiento desde que se produce una excepcion hasta que se resuelve?

A

-El bloque try que contiene código que puede lanzar una excepción.
-Si se lanza una excepción el control se transfiere inmediatamente a la cláusula catch.
-Si la excepción coincide con el tipo especificado en la cláusula catch, se ejecuta el bloque de código de esa cláusula catch.
-Si la excepción se maneja exitosamente, la ejecución continúa después del bloque try-catch.
-Si no se encuentra una catch correspondiente o no se maneja la excepción, la excepción puede propagarse hacia bloques try-catch externos.
-Sinó puede resultar en una finalización abrupta
del programa.

61
Q

¿Cuándo no se propaga una excepción en una rutina en C++?

A

Cuando en la lista del throw(excepciones) no se encuentra la excepcion que se genero en la rutina o si se pone el throw(), en estos casos se produce unexpected() y eventualmente abort() que provoca el final del programa

62
Q

ya me dio fiaca ir parte por parte con las excepciones de los lenguajes, asi que lo vamos a hacer de un saque

A

ok

63
Q

Caracteristicas de las excepciones en CLU

A

Se lanzan explícitamente con la palabra clave signal
* Los manejadores se colocan al lado de una sentencia simple o compleja y llevan la palabra clave when . Forma de definirlos:

<instrucción> except-> <lista_de_controladores> end
donde <instrucción> puede ser cualquier instrucción (compuesta) del lenguaje. Si la ejecución de una invocación de procedimiento dentro de <instrucción> genera una excepción, el control se transfiere a <lista_de_controladores>.
Posee excepciones predefinidas con su manejador asociado. Por ejemplo, failure
* Se pueden pasar parámetros a los manejadores.
* Una excepción se puede volver a levantar una sola vez utilizando resignal
* Una excepción se puede levantar en cualquier lugar del código
Si no encuentra el manejador es por Propagación al producirse una excepción:
* Se termina el procedimiento donde se levantó la excepción y devuelve el control al llamante inmediato donde se debe encontrar el manejador.
* Si el manejador se encuentra en ese ámbito, se ejecuta y luego se pasa el control a la sentencia siguiente a la que está ligado dicho manejador.
* Si el manejador no se encuentra en ese lugar la excepción se propaga estáticamente en las sentencias asociadas. Esto significa que el proceso se repite para las sentencias incluidas estáticamente.
* En caso de no encontrar ningún manejador en el procedimiento que hizo la llamada se levanta una excepción failure y devuelve el control, terminando todo el programa
</lista_de_controladores></instrucción></instrucción></lista_de_controladores></instrucción>

64
Q

Características de las excepciones en JAVA

A

Al igual que C++ las excepciones son objetos que pueden ser alcanzados y manejados por manejadores adicionados al bloque donde se produjo la excepción.
* Cada excepción está representada por una instancia de la clase Throwable o de una de sus subclases (Error y Exception)
* La gestión de excepciones se lleva a cabo mediante cinco palabras clave: try, catch, throw, throws, finally.
* Se debe especificar mediante la cláusula throws cualquier excepción que se envía desde un método.
* Se debe poner cualquier código que el programador desee que se ejecute siempre, en el método finally

65
Q

Como se tratan las excepciones en JAVA

A

Detectar e informar del error:
● Lanzamiento de Excepciones → throw
● Un método detecta una condición anormal que le impide continuar con su ejecución y finaliza “lanzando” un objeto Excepción.
Recoger el error y tratarlo:
● Captura de Excepciones → bloque try-catch
● Un método recibe un objeto Excepción que le indica que otro método no ha terminado correctamente su ejecución y decide actuar en función del tipo de error.

66
Q

¿Cómo funciona la declaracion de try? (PHYTON)

A

Primero, se ejecuta el bloque try (el código entre las declaración try y except).
* Si no ocurre ninguna excepción, el bloque except se saltea y termina la ejecución de la declaración try.
* Si ocurre una excepción durante la ejecución del bloque try, el resto del bloque se saltea. Luego, si su tipo coincide con la excepción nombrada luego de la palabra reservada except, se ejecuta el bloque except, y la ejecución continúa luego de la declaración try.
* Si ocurre una excepción que no coincide con la excepción nombrada en el except, esta se pasa a declaraciones try de más afuera; si no se encuentra nada que la maneje, es una excepción no manejada, y la ejecución se frena con un mensaje de error.

67
Q

¿Qué sucede cuando una excepción no encuentra un manejador en su bloque “try except”? (PYTHON)

A

1-Busca estáticamente: Analiza si ese try está contenido dentro de otro y si ese otro tiene un manejador para esa excepción. Sino…
2-Busca dinámicamente: Analiza quién lo llamó y busca allí
* Si no se encuentra un manejador, se corta el
proceso y larga el mensaje standard de error
* Levanta excepciones explícitamente con “raise”

68
Q

Características del las excepciones en PHP

A
  • Modelo de Terminación
  • Una excepción puede ser lanzada (thrown), y atrapada (“catched”)
  • El código esta dentro de un bloque try,
  • Cada bloque try debe tener al menos un bloque catch correspondiente.
  • Las excepciones pueden ser lanzadas (o relanzadas) dentro de un bloque catch.
  • Se puede utilizar un bloque finally después de los bloques catch
  • El objeto lanzado debe ser una instancia de la clase Exception o de una subclase de Exception. Intentar lanzar un objeto que no lo es resultará en un Error Fatal de PHP.
  • Cuando una excepción es lanzada, el código siguiente a la declaración no será ejecutado, y PHP intentará encontrar el primer bloque catch coincidente. Si una excepción no es capturada, se emitirá un Error Fatal de PHP con un mensaje “Uncaught Exception …” (“Excepción No Capturada”), a menos que se haya definido un gestor con set_exception_handler().
69
Q

¿Cuál lenguaje no provee manejo de excepciones sino que los simula?

A

ADA

70
Q

¿Cuáles son los principales paradigmas de programación?

A

-Imperativo(sentencias + secuencias de comandos)

-Declarativo(los programas describen los resultados esperados sin listar explícitamente los pasos a llevar a cabo para alcanzarlos.
Lógico: aserciones lógicas: hechos + reglas, es declarativo)

-Funcional: Los programas se componen de funciones

-Orientado a objetos: métodos + mensajes

71
Q

¿Cuál es otra forma de clasificar los paradigmas?

A

Dirigido por eventos: El flujo del programa esta determinado por sucesos externos

Orientado a aspectos: apunta a dividir el programa en módulos independientes cada uno con un comportamiento y responsabilidad bien definido

72
Q

¿Que es la programación lógica?

A

La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa
Es un paradigma en el cual los programas son una serie de aserciones lógicas(aserción lógica: expresión que se espera que sea verdadera)
El conocimiento se representa a través de reglas y hechos
Los objetos son representados por términos, los cuales contienen constantes y variables

73
Q

¿Cuáles son los elementos de la programación lógica?

A

La sintaxis básica es el “término”
-Variables
-Constantes
-Termino Compuesto
-Listas
-Clausulas(hecho o regla)

74
Q

¿Que es una variable ?
(programación lógica)

A

Son elementos indeterminados que pueden sustituirse por cualquier otro, los nombre de las variables comienzan con mayúsculas y pueden incluir números

75
Q

¿Que es una constante ?
(programación lógica)

A

A diferencia de las variables son elementos determinados.
-La constantes son string de letras en minúsculas (representan objetos atómicos) o string de dígitos (representan números).

76
Q

¿Que es un termino compuesto?
(programación lógica)

A

Son un ”functor” seguido de un número fijo de argumentos encerrados entre paréntesis, los cuales son a su vez términos.
-Se denomina “aridad” al número de argumentos.
-Se denomina “estructura” (ground term) a un término compuesto cuyos argumentos no son variables.

77
Q

¿Cómo se representa una lista?(programación lógica)

A

La constante [] representa una lista vacía
El functor “.” construye una lista de un elemento y una lista. Ejemplo: .(alpha,[]), representa una lista que contiene un único elemento que es alpha.
Otra manera de representar la lista es usando [] en lugar de .().

78
Q

¿Cuáles son los tipos de clausulas?

A

Un programa escrito en un lenguaje lógico es una
secuencia de “cláusulas”.

Hecho: expresan relaciones entre objetos, expresan verdades

Regla:
Cláusula de Horn
Tiene la forma:
conclusión :- condición.
Dónde:
:- indica “Si”
conclusión es un simple predicado y condición es una conjunción de predicados, separados por comas. Representan un AND lógico
En un lenguaje procedural una regla la podríamos representar como: if condición else conclusión.

79
Q

¿Que es un programa escrito con lenguaje orientado a objetos?

A

Un programa escrito con un lenguaje OO es un conjunto de objetos que interactúan mandándose mensajes

80
Q

¿Que elementos tiene un programa orientado a objetos?

A

-Objetos
-Mensajes
-Métodos
-Clases

81
Q

¿Que es un objeto?(OO)

A

Son entidades que poseen estado interno y comportamiento, es el equivalente a un dato abstracto

82
Q

¿Que es un mensaje? (OO)

A

Es una petición de un objeto a otro para que este se comporte de una determinada manera, ejecutando uno de sus métodos
TODO el procesamiento en este modelo es activado por mensajes entre objetos.

83
Q

¿Que es un método? (OO)

A

Es un programa que está asociado a un objeto determinado y cuya ejecución solo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes

84
Q

¿Qué es una clase? (OO)

A

Es un tipo definido por el usuario que determina las estructuras de datos y las operaciones asociadas con ese tipo
Cada objeto pertenece a una clase y recibe de ella su funcionalidad
Primer nivel de abstracción de datos: definimos estructura, comportamiento y tenemos ocultamiento.
La información contenida en el objeto solo puede ser accedida por la ejecución de los métodos
correspondientes

85
Q

¿Qué es una instancia de clase?

A

Cada vez que se construye un objeto se está creando una INSTANCIA de esa clase
Una instancia es un objeto individualizado por los valores que tomen sus atributos

86
Q

¿En que consisten el segundo nivel de abstracción ?(OO)

A

El segundo nivel de abstracción consiste en agrupar las clases en jerarquías de clases (definiendo SUB y SUPER clases), de forma tal que una clase A herede todas las propiedades de su superclase B (suponiendo que tiene una)

87
Q

¿Que es el polimorfismo?(OO)

A

Es la capacidad que tienen los objetos de distintas clases de responder a mensajes con el mismo nombre

88
Q

¿Que es el binding dinámico?(OO)

A

Es la vinculación en el proceso de ejecución de los objetos con los mensajes

89
Q

¿Cómo son los objetos en C++?

A

-Se agrupan en tipos denominados clases
-Contienen datos internos que definen su estado interno
-Soportan ocultamiento de datos
-Los métodos son los que definen su comportamiento
-Pueden heredar propiedades de otros objetos
-Pueden comunicarse con otros objetos enviándose mensajes

90
Q

¿Cuáles son las ventajas y desventajas del paradigma aplicativo o funcional?

A

Ventajas:
-Vista uniforme de programa y función
-Tratamiento de funciones como datos
-Liberación de efectos colaterales
-Manejo automático de memoria
Desventajas:
-Ineficiencia de ejecución

91
Q

Nombre las características del paradigma funcional

A

-Provee un conjunto de funciones primitivas
-Provee un conjunto de formas funcionales
-Semántica basada en valores
-Transparencia referencial
-Regla de mapeo basada en combinación o composición
-Las funciones de primer orden

92
Q

¿Que es una función?
(paradigma funcional)

A

El VALOR más importante en la programación funcional es el de una FUNCIÓN
Matemáticamente una función es un correspondencia
A cada elemento de A le corresponde un único elemento en B
f(x) denota el resultado de la aplicación de f a x
Las funciones son tratadas como valores, pueden ser pasadas como parámetros, retornar resultados, etc.

93
Q

¿Que maneras hay para definir una función?
(paradigma funcional)

A

Puede estar definida explícitamente dentro del SCRIPT o puede deducirse/inferirse el tipo de una función
(Se debe distinguir entre el VALOR y la DEFINICIÓN de una función)

94
Q

Nombre las características de las expresiones en el paradigma funcional

A

-Característica más importante:
“Una expresión es su VALOR”
-El valor de una expresión depende ÚNICAMENTE de los valores de las sub expresiones que la componen.
-Las expresiones también pueden contener VARIABLES, (valores desconocidos)
-Las expresiones cumplen con la propiedad de “TRANSPARENCIA REFERENCIAL”: Dos expresiones sintácticamente iguales darán el mismo valor.
-No existen EFECTOS LATERALES”
-Toda expresión denota un valor

95
Q

En el paradigma funcional un script es una lista de definiciones y pueden someterse a evaluación y se pueden modificar
V o F

A

V

96
Q

¿Que es una expresión canónica?

A

Es cuando una expresión no se puede reducirse , se les asignan un valor indefinido

97
Q

¿Qué formas hay de evaluar una expresión?

A

Por Reducción
Por Simplificación

98
Q

¿Que formas de evaluar una expresión por reducción hay?

A

-Por orden aplicativo(aunque no lo necesite SIEMPRE evalúa los argumentos)
-Por orden normal (lazy evaluation, no calcula mas de lo necesario, la expresión no es evaluada hasta que su valor se necesite, una expresión compartida no es evaluada mas de una vez)

99
Q

¿Qué tipos hay en el lenguaje de paradigma funcional?

A

-Básicos:
Son los primitivos
-Derivados:
Se construyen de otros tipos
(toda función tiene asociado un tipo)

100
Q

Si tengo 3 manzanas que están en un tren que va a 80 km por hora y hay esquimales tomando te ¿Cuántas manzanas tengo?

A

3 (pregunta 100 jiji)

101
Q

¿Que es la currificacion?

A

Mecanismo que reemplaza argumentos estructurados por argumentos más simples.

102
Q

¿Qué es el calculo Lambda?¿Para que se utiliza?

A

El un modelo de computación para definir funciones
Se utiliza para entender los elementos de la programación funcional y la semántica subyacente, independientemente de los detalles sintácticos de un lenguaje de programación en particular.

103
Q

¿Qué clase de expresiones Lambda hay?

A

-Identificador o constante
-Definición de una función
-La aplicación de una función

104
Q

Características de la selección múltiple en Pascal

A

▪ Usa palabra reservada case seguida de variable de tipo ordinal y la palabra reservada of.
▪ La variable-expresión a evaluar es llamada “selector”
▪ Lista las sentencias de acuerdo con diferentes valores que puede adoptar la variable (los “casos”). Llevan etiquetas.
▪ No importan el orden en que aparecen
▪ bloque else para el caso que la variable adopte un valor que no coincida con ninguna de las sentencias de la lista. (opcional)
▪ Para finalizar se coloca un “end;” (no se corresponde con ningún “begin” que exista).
▪ Es inseguro porque no establece qué sucede cuando un valor no cae dentro
de las alternativas puestas

105
Q

Características de la selección múltiple en C/C++

A

-Constructor Switch seguido de (expresión)
-Cada rama Case es “etiquetada” por uno o más valores constantes (enteros o char)
-Si coincide con una etiqueta del Switch se ejecutan las sentencias asociadas, y se continúa con las sentencias de las otras entradas. (chequea todas salvo exista un break)
-Existe la sentencia break, que provoca la salida de cada rama (sino continúa)
-Existe opción default que sirve para los casos que el valor no coincida con ninguna de las opciones establecidas, es opcional
-El orden en que aparecen las ramas no tiene importancia

106
Q

Características de la selección múltiple en Ruby

A

-Constructor Case expresión, seguido de when y end
-La expresión es cualquier valor (cualquier cadena, número o expresión que proporcione algunos resultados como “a”,
1 == 1, etc.).
-Dentro de los bloques when seguirá buscando la expresión, hasta que coincida con la condición, ingresará en ese bloque de código.
-Si no coincide con ninguna expresión irá al bloque else igual que por defecto.
-else es opcional, esto puede traer efectos colaterales
-Se recomienda programación defensiva(La cláusula debe tomar la acción apropiada o contener un comentario adecuado sobre por qué no se toma ninguna acción)

107
Q

Características de la selección múltiple en PL/1

A

-Sentencia SELECT de PL/1 incorpora el uso de WHEN ⁄ OTHERWISE ⁄ END
-Tiene 2 tipos de formatos: Identificador o Condición

108
Q

Características de la iteración en Fortran

A

Sentencia Do de Fortran
Do label var-de-control= valorIni, valorFin
………..
label continue
-La var-de-control solo puede tomar valores enteros y se incrementa 1 en 1 en la secuencia (si no se especifica otra cosa según lo permita el lenguaje)
-ValorIni es el valor inicial
-ValorFin es el valor final
-La declaración continue junto con la etiqueta label se usa como la última declaración de un DO (depende versión de FORTRAN)
-Fortran original evaluaba si la variable de control había llegado al límite al final del bucle al final (“siempre una vez lo ejecutaba” y traía problemas)
-Desde FORTRAN 77 se evalúa antes
-La variable de control “nunca” deberá ser modificada por otras sentencias dentro del ciclo, ya que puede generar errores de lógica.

109
Q

Características de la iteración, sentencia for en ADA, Pascal, C y C++

A

for loop_ctr_var := lower_bound to upper_bound do statement

▪ La variable de control puede tomar cualquier valor ordinal (enumerativos) que indiquen secuencia, no sólo enteros
▪ Pascal estándar “no permite” que se modifiquen los valores del límite inferior, límite superior, ni del valor de la variable de control.
▪ El valor de la variable fuera del bloque se asume no definida

110
Q

Características de la iteración, sentencia for en ADA

A
  • Encierra todo proceso iterativo entre las cláusulas loop y end loop.
  • Permite el uso de la sentencia Exit para salir del loop.
  • La variable de control (iterador) es de Tipo enumerativa
  • La variable de control NO necesita declararse (se declara implícitamente al entrar al bucle y desaparece al salir).
  • El in indica incremento, permite decrementar con in reverse
111
Q

Características de la iteración, sentencia for en C y C++

A

▪ Se componen de 3 partes: 1 inicialización y 2 expresiones
▪ Inicialización: da el estado inicial para la ejecución del bucle.
▪ 1ra expresión: especifica el test que es realizado antes de cada iteración. Sale del ciclo si la expresión no se cumple (sale del rango, i.e false)
▪ 2da expresión: especifica el incremento que se realiza después de cada iteración.
▪ En C++ se puede realizar la declaración de una
variable dentro del for (…..)
▪ El alcance de la variable se extiende hasta el final del bloque que encierra la instrucción for {….}
▪ Si se omiten una o ambas expresiones en un bucle for se puede crear un bucle sin fin, del que solo se puede salir con una instrucción break, goto o return.

112
Q

Características de la iteración, sentencia for en Python

A

Phyton tiene 2 tipos de estructuras For:
-Para iterar sobre una secuencia de estructuras de datos de tipo:
+lista, tupla, conjunto, diccionario, etc.
-Para iterar sobre un rango de valores basado en una secuencia numérica:
+ usando función Range()

113
Q

Características de la iteración, sentencia for en Python para iterar en una secuencia

A
  • El bucle for para recorrer todos los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código.
  • elem variable que toma el valor del elemento dentro/in del iterador iterable en cada paso del bucle.
  • En cada paso de la iteración se tiene en cuenta a un único elemento del objeto iterable, sobre el cuál se pueden aplicar una serie de operaciones.
  • Finaliza su ejecución cuando se recorren todos los elementos.
114
Q

Características de la iteración, sentencia for en Python para iterar sobre un rango de valores

A

▪ Uso de la funcion/clase range (max)
▪ que devuelve valores van desde 0 hasta max - 1.
▪ De esta forma el for actúa como los demás lenguajes

115
Q

Características de la sentencia tipo while loop

A

-Estructura que permite repetir un proceso mientras se cumpla una condición.
-La condición se evalúa antes de que se entre al proceso

116
Q

Características de la sentencia tipo while loop en Python

A

Los principales elementos son:
* la palabra clave while (seguida de un espacio)
* una condición que determina si el ciclo continuará su ejecución o no en base a su valor (true o false)
* : al final de la primera línea
* la secuencia de instrucciones o sentencias que se repetirán. A este bloque de código se lo denomina el “cuerpo” del ciclo y debe estar indentado. Si una línea de código no está indentada no se lo considerará parte del ciclo

117
Q

En C si asignamos a una variable puntero, la dirección de otra variable nunca estamos seguros que la variable puntero nunca contendrá referencias sueltas
V o F

A

V

118
Q

El componente principal del paradigma funcional es la transparencia referencial
V o F

A

F

119
Q

La forma de contener una excepción es una de las preguntas que debemos respondernos cuando evaluamos este conceptos (excepciones) en un lenguaje de programación
V o F

A

F

120
Q

Un paradigma de programación representa un modelo para resolver problemas computacionales
V o F

A

V

121
Q

¿Qué es una estructura de control?

A

Son el medio por el cual los programadores pueden determinar el flujo de ejecución entre los componentes de un programa
Hay a nivel unidad y a nivel sentencia

122
Q

¿Cuál es la diferencia entre una sentencia de asignación y una expresión?

A

La sentencia de asignación es una expresión pero tiene efectos colaterales (no lo dije yo, lo dice el profe en la clase grabada)

123
Q

Características de la selección múltiple en ADA

A

-Constructor Case expresión is, con when y end case
-Las expresiones pueden ser solamente de tipo entero o enumerativas
-En las selecciones del case se deben estipular todos los valores posibles que puede tomar la expresión
-El when se acompaña con => para indicar la acción a ejecutar si se cumple la condición
-Tiene la clausula Others que se puede utilizar para representar a aquellos valores que no se especificaron explícitamente
-No pasa la compilación si
+No se coloca la rama para un posible valor
+No aparece la opción Others en esos casos
-Si una expresión en el case coincide con el valor evaluado se ejecutara el bloque de código correspondiente y luego se saldrá del switch-case. Se puede utilizar la instrucción “fallthrough” para indicar que se desea ejecutar el siguiente case sin importar si hay una coincidencia en el valor evaluado. Sin embargo, esta instrucción no es requerida por defecto como en C y su uso debe ser explicito

124
Q

En ADA y Pascal no estándar, se puede modificar manualmente los valores de las variables de los aterradores
V o F

A

F

124
Q

¿Qué diferencia existe entre el generador YIELD de Python y el return de una función?

A

La diferencia es que yield permite generar una secuencia de valores en lugar de retornar un solo valor como el return

125
Q

¿Cual es la diferencia entre una sentencia simple y una compuesta?

A

-Sentencia simple:
una única sentencia
-Sentencia compuesta:
varias sentencias en una

126
Q

Una expresión de asignación puede producir efectos laterales que afecten el resultado final
V o F

A

V

127
Q

Un lenguaje funcional es por lo general fuertemente tipado
V o F

A

V
Los tipos de datos son importantes y se verifican en tiempo de compilación para garantizar coherencia y seguridad en el programa

128
Q

¿Qué es una expresión en un lenguaje funcional?¿De que depende su valor?

A

Una expresión es una combinación de valores, variable y funciones que se evalúa para producir un resultado. El valor de una expresión depende únicamente de los valores de las subexpresiones que la componen

129
Q

¿Qué es un programa escrito en un lenguaje funcional?

A

Un programa escrito en un lenguaje funcional se basa en la evaluación de funciones y expresiones sin modificar directamente el estado de las celdas de memoria

130
Q

¿Dónde se define el lugar donde se definen las funciones de un lenguaje funcional?

A

-Definición en módulos o archivos
-Definición en el ámbito global
-Definición local dentro de una función
-Definición mediante expresiones lambda

131
Q

¿Cómo se implementa la asignación en C?

A

-Se define a la sentencia de asignación como una expresión con efectos colaterales
-C evalúa de derecha a izquierda
-Requiere del lado izquierdo de la asignación un l-valor