Evaluacion minima teorica2 cpclp Flashcards

flashcards de repaso para la emt2 de Conceptos de Lenguajes de Programacion (2024) no le se a lo de usar unidades genéricas de parametro

1
Q

¿Qué es una unidad?

A

una Unidad es una abstracción de una acción del programa, dependiendo del tipo de unidad puede estar representando una sentencia(aka procedimiento) o una operación(como una función)
En general se las llama rutinas de las cuales son procedimientos y funciones (estas ultimas devuelven un valor)

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

¿Para que se utiliza el nombre de una rutina?¿En que momentos se utiliza?

A

El nombre de una rutina es un string de caracteres que se usa para invocar a la rutina
Se utiliza:
-Cuando introducimos su declaración
-Cuando la invocamos

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

Nombre los atributos de una rutina

A

Nombre(declaración/invocación)
-Alcance(donde se conoce el identificador, ambiente de referencia de la rutina, que si global, local,etc)
-Tipo(dado por los parámetros y el valor de retorno. Signatura)
-Lvalor(relacionado a donde se almacena las sentencias en la memoria)
-Rvalor(relacionado al momento en que se hace referencia a la rutina)

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

¿Qué es el alcance, hasta donde se extiende?¿Que es la activación de una rutina?

A

El alcance es el rango de instrucciones donde se conoce el nombre.

El alcance se extiende desde el punto de su declaración hasta algún constructor de cierre

La activación es desde donde se puede invocar la rutina, esto es dentro del alcance de la rutina

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

¿Cómo esta compuesta una rutina?

A

Esta compuesta por un encabezado( es lo mismo que decir declaración) y un cuerpo
encabezado + cuerpo = definición

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

¿Cuándo un lenguaje permite manejar rutinas recursivas?

A

El lenguaje maneja rutinas recursivas si el lenguaje distingue la declaración y la definición de una rutina

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

¿Qué define el tipo de los parámetros y el tipo del valor de retorno?

A

el encabezado 😉

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

¿Cuándo un llamado a rutina es correcto?

A

Un llamado a una rutina es correcto si esta de acuerdo al tipo de la rutina.

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

¿Qué cosa permite especificar el tipo de una rutina?

A

La signatura

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

V o F
Un llamado a una rutina es correcta si esta de acuerdo al tipo de la rutina.

A

V

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

¿Qué es el l-valor en un rutina?

A

es el lugar en memoria en el que se almacena el cuerpo de la rutina

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

¿Qué es el r-valor de una rutina?

A

La llamada a la rutina causa la ejecución de su código, eso constituye su r-valor.
Puede ser estático( se llama de manera tradicional| función()) o dinámico( se llama a la función mediante una variable | varfun())

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

¿Qué son los parámetros formales?

A

Son los parámetros que aparecen en la declaración de la rutina

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

¿Qué son los parámetros reales?

A

Son los parametros que aparecen en la invocacion de la rutina

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

¿Cómo puede ser la comunicación entre rutinas?

A

-Mediante parámetros(es mejor esto)
-Ambiente no local(busca fuera de su scope la variable que le falte)

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

Que métodos de ligadura entre parámetros formales y reales hay?

A

-Método posicional:
Es cuando se ligan los parámetros de uno en uno( hay una variante que hace una combinación con valores por defecto )
-Método por nombre: se relacionan los parámetros por mismo nombre

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

V o F
Cada unidad va a generar su propio registro de activación

A

V

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

¿Qué es la instancia de una unidad?¿Como esta compuesta?

A

Es la representación de la rutina en ejecución
Esta compuesta por:
-Un segmento de código(C): donde se guardan las instrucciones, contenido fijo.
Se ubican en memoria de Código
-Un registro de activación(D):
donde se guardan los datos locales de la rutina, contenido cambiante.
Se ubican en memoria de Datos

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

¿Qué es la ip?

A

Es un puntero que señala a la instrucción que se esta ejecutando(direcciones de C)

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

¿Para que sirve el procesador abstracto?

A

sirve para comprender que efecto causan las instrucciones del lenguaje al ser ejecutadas

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

¿Cuales son las instrucciones del procesador abstracto?

A

-Set:setea valores en la memoria de datos(copia el valor de source en la direccion target), se puede combinar con E/S y admite expresiones
-Jump : la próxima instrucción a ejecutar será la indicada por el valor que se escriba al lado del jump(jumpt es igual pero salta solo si la expresión se evalúa como verdadera), admite direccionamiento indirecto

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

¿Qué es el punto de retorno?

A

es una pieza cambiante de información que debe ser salvada en el registro de activación de la unidad llamada.
unga unga unga unga( info que permite volver a la unidad que lo invoco a la unidad)

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

¿Qué ambientes de referencia existen?

A

-Ambiente local: variables locales, ligadas a los objetos almacenados en su registro de activación
-Ambiente no local: variables no locales, ligadas a objetos almacenados en los registros de activación de otras unidades

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

¿Qué estructuras/esquemas de ejecución de los lenguajes de programación hay?

A

-Estático
Todos los registros de activación cargados en la memoria, no permite recursión, usa C2

-Basado en pila
Registros de activación activos, permite recursión, permanente cambio en zona de datos, usa C5

-Dinámico
Todo el manejo se da en la HEAP, usa C6

Se diferencian en como manejan la zona de datos

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

Características de los lenguajes estáticos(lenguaje con estructura de ejecución estática)

A

-El espacio necesario para la ejecución se deduce del código
-Cargan todo en la memoria ni bien se carga y perdura hasta al final de la ejecución (registros de activación, variables)
-Toda variable que se utilice es estática
-La alocacion puede hacerse estáticamente
-No puede haber recursión
-Solo admite variables estáticas
-Utiliza C2

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

Características de los lenguajes basados en pila (lenguaje con estructura de ejecución basado en pila)

A

-El espacio se deduce del código
-Sigue una disciplina LIFO
-Las variables se alocan automáticamente y se desalocan cuando el alcance termina
-Se alocan y se desalocan los registros de activación durante la ejecución del programa
-Se utiliza una estructura de pila como modelo, esta no es parte de la semántica
-Utiliza C5

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

Características de los lenguajes dinámicos (lenguaje con estructura de ejecución dinámico)

A

-Lenguajes con impredecible uso de memoria
-Los datos son alocados dinámicamente solo cuando se los necesita durante la ejecución
-El programador puede crear objetos de dato en cualquier punto arbitrario durante la ejecución del programa
-Los datos se alocan en la zona de memoria heap
-No se pueden modelar con una pila
-Utiliza C6

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

Características de C1(lenguaje simple)

A

-Sentencias simples
-Tipos simples
-Sin funciones
-Datos estáticos de tamaño
-Un programa(una rutina main)
-E/S: get/print
*tipos simples-> enteros, reales, arreglos y estructuras
En sintesis:
-Programa sencillo sin bloques internos, solo código programa principal
-En zona de datos: SOLO datos locales

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

Características de C2

A

Características de C1+ rutinas internas(sin anidamiento y sin recursividad)+ ambiente de las rutinas internas
Programa=
-Datos globales
-Declaraciones de rutinas
-Rutina principal:
+Datos locales
+Se invoca automáticamente en ejecución

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

Características de C2’

A

El compilador no puede ligar variables locales o globales a direcciones absolutas
El linkeditor es el encargado de combinar los módulos y ligar la información faltante

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

Características C3

A

C3=C2 + RECURSIÓN Y VALOR DE RETORNO

Esquema basado en pila
* Rutinas con capacidad de llamarse a si mismas (recursión directa) o de llamar a otra rutina en forma recursiva (recursión indirecta).
* Rutinas con la capacidad de devolver valores, es decir, funciones.

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

¿Cuáles son los elementos de una registro de activación?

A

-HEADER:
Conformado por 2 partes, Current y Free
+Current:
Dirección base del registro de activación de la unidad que se esta ejecutando
+Free:
Próxima dirección libre
en la pila

-Punto de retorno:
La siguiente dirección a ejecutar después de que termine la subrutina

-Link estático:
Apunta al registro de activación de la unidad que estáticamente la contiene

-Link dinámico:
Contiene un puntero a la dirección base del registro de activación de la rutina llamadora

-Variables:
Las variables definidas dentro de la unidad

-Procedimientos o funciones:
Los procedimientos o funciones definidos dentro de la unidad

-Valor de retorno:
Al terminar una rutina se desaloca su registro de activación, por lo tanto la rutina llamante debe guardar en su registro de activación el valor de retorno de la rutina llamada

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

¿Qué es una variable estática?

A

Una variable estática es una variable que existe y se inicializa en tiempo de compilación y su valor persiste en memoria durante toda la ejecución del programa (puede durar mas que el propio programa)

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

¿Qué es una variable automática o semiestatica?

A

Una variable automática o semiestatica se declara dentro de un bloque y su ámbito de visibilidad se limita a ese bloque

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

¿Qué es una variable dinámica?

A

Una variable dinámica es una variable que se crea y se destruyen explícitamente en tiempo de ejecución. El valor de una variable dinámica puede cambiar a lo largo de la ejecución del programa. Utiliza la HEAP para alocarse

(-Los usan aquellos lenguajes que adoptan mas reglas dinámicas que estáticas
-Usan tipado dinámico y reglas de alcance dinámico
-Reglas de tipado dinámico y de alcance estático
-Las ligaduras se llevan a cabo en tiempo de ejecución

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

Que es una variable semidinamica?

A

Es un tipo de variable que una parte se guarda previamente en tiempo de compilación y en ejecución se determina su tamaño

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

¿Cuál es el funcionamiento de C3?

A

El registro de activación de cada unidad será de tamaño fijo y conocido, pero no se sabrá cuantas instancias de cada unidad se necesitarán durante la ejecución.
-Igual que en C2 el compilador puede ligar cada variable con su desplazamiento dentro del correspondiente registro de activación. El desplazamiento es estático(un ejemplo para aclarar, si tenemos un registro de activación X y tiene una variable Y en la posición 8, entonces, cuando se guarde las posiciones en memoria, si el reg de act X se guarda en la posición 2000, la var Y se guarda en la 2008, se guardan las relaciones de desplazamiento)
-La dirección donde se cargará el registro de activación es dinámica, por lo tanto la ligadura con las direcciones absolutas en la zona de Datos de la memoria solo puede hacerse en ejecución
-Cada nueva invocación aloca un nuevo registro de activación y se establecen las nuevas ligaduras entre el segmento de código y el nuevo registro de activación
-Las unidades pueden devolver valores y esos valores no deberían perderse (necesidad de valor de retorno)
-Cuando se termine la instancia actual, se debe liberar el espacio ocupado por él(necesidad de link dinámico, current y free)

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

¿Cuáles son los elementos de un registro de activación en C3?

A

-Valor de retorno
-Link dinámico
-Current
-Free

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

¿Qué es la cadena dinámica?

A

-Cadena de links dinámicos originada en la secuencia de registros de activación activos.
-Representa la secuencia dinámica de unidades activadas.

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

Características de C4

A

C3 + estructura de bloque posee las siguientes características
-Controla el alcance de las variables
-Define el tiempo de vida de las variables
-Divide el programa en unidades mas pequeñas
Los bloques pueden ser disjuntos (no tiene porción común) o unidades (un bloque esta completamente contenido en otro)
-Tiene c4’ y c4 ‘’

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

¿Qué permite C4’?

A

Permite que dentro de las sentencias compuestas aparezcan declaraciones locales

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

¿Qué permite C4’’?

A

Permite la definición de una rutina dentro de otras rutinas (anidamiento de rutinas)

43
Q

¿Cuáles son los elementos de un registro de activación en C4?

A

-Valor de retorno
-Link dinámico
-Link estático
-Current
-Free

44
Q

¿Que es C5 ?

A

C4 + datos mas dinámicos
-Tiene C5’(Registro de
activación cuyo tamaño se conoce cuando se activa la unidad)
-Tiene C5’‘(Los datos pueden alocarse durante la ejecución, es decir, permite variables dinámicas)

45
Q

¿Como C5’ implementan los arreglos dinamicos?

A

En compilación se reserva lugar en el registro de activación para los descriptores de los arreglos
dinámicos
Luego los accesos dinámicos son traducidos como referencias indirectas a través del puntero en el descriptor

46
Q

características de C6

A

-Lo implementan lenguajes con mas reglas dinámicas que estáticas
-Usan tipado dinámico y reglas de alcance dinámicas
-Se podrían tener reglas de tipado dinámicas y de alcance estático, pero en la practica las propiedades dinámicas se adoptan juntas
-Una propiedad dinámica significa que las ligaduras correspondientes se llevan a cabo en ejecución y no en compilación

47
Q

¿Qué tipos de variables existen de acuerdo a su alcance?

A

-Locales
-Globales
-No locales

48
Q

¿Qué es una rutina? Características

A

También llamadas Subprogramas. Son una Unidad de Programa (función, procedimiento)
-Están formadas por un conjunto de sentencias que representan una acción abstracta
-Se lanzan con una llamada explícita (se invocan por su nombre) y luego retornan a algún punto de la ejecución
Características:
-Permiten ampliar a los lenguajes, dan modularidad, claridad y buen diseño
-Permiten al programador definir una nueva operación a semejanza de las operaciones primarias ya integradas en el lenguaje.
-Permite alcanzar cierto nivel de abstracción porque interesa el que hace y no como lo hace

48
Q

¿Qué tipo de variables existen de acuerdo a su tiempo de vida?

A

-Variables estáticas
-Variables dinámicas
-Variables semidinamicas,
-Variables automáticas o semiestaticas

49
Q

¿Qué es un procedimiento?

A

Es una forma de subprograma
-Un procedimiento es una construcción que permite dar nombre a un conjunto de sentencias y declaraciones asociadas que se usarán para
resolver un subproblema dado.
-Brindará una solución de código más corta, comprensible y fácilmente modificable.
-Permiten al programador definir y crear nuevas acciones/sentencias.
-El programador las invocará
-Pueden no recibir ni devolver ningún valor.
-Los resultados los produce en variables no locales o en parámetros que cambian su valor.

50
Q

¿Qué es una función?

A

Es una forma de subprograma
Una Función ejecuta un grupo de sentencias que devuelve un
valor al punto donde se llamó.
-El valor que recibe la función se usa para calcular el valor total de la expresión y devolver algún valor.
-Permite al programador crear nuevas operaciones.
-Similar a las funciones matemáticas ya que hacen algo y luego devuelven un valor y no producen efectos colaterales.
-Se las invoca dentro de expresiones y lo que calcula remplaza a la invocación dentro de la expresión.
-Siempre deben retornar un valor.

51
Q

¿Qué formas hay de buscar datos que no se encuentran locales a la rutina que se esta ejecutando?

A

-A través del acceso al ambiente no local
-A través del uso de parámetros

52
Q

¿Qué tipos de accesos al ambiente no local hay?

A

-Ambiente no local implícito
-Ambiente común explicito

53
Q

Características del ambiente no local implícito

A

-Es automático
-Utiliza alguna de las siguientes 2 reglas
+regla de alcance dinámico(busco quien me llamo)
+regla de alcance estático (busco donde estoy contenido)

54
Q

Características de ambiente común explicito

A

-Permite definir areas comunes de código
-El programador debe especificar que es lo que comparte
-Cada lenguaje tiene su forma de realizarlo

55
Q

Es mejor el acceso al ambiente no local que el pasaje de parámetros
V o F Justifique

A

F
El pasaje de parámetros es mejor porque:
-El uso intensivo de accesos al ambiente no local puede provocar alguna pérdida de control, y provocar que las variables terminen siendo visibles donde no es necesario y llevar a errores.
-Brinda distintas posibilidades de compartir cosas
-Permite enviar distintos parámetros en distintas invocaciones a las rutinas
-Más flexibilidad, se pueden transferir más datos y de diferente tipo en cada llamada
-Permite compartir en forma más abstracta, solo especificamos el nombre a argumentos y parámetros) y el tipo de cada cosa que se comparta
-Ventajas en protección: el uso intensivo de accesos al
ambiente no local decrementa la seguridad de las soluciones ya que las variables terminan siendo visibles aun donde no es necesario o donde no debería.
-Ventajas en legibilidad :Permite al programador encontrar
más fácilmente los errores
-Esto le da modificabilidad, si hay errores uno se focaliza en
qué cosas estoy compartiendo, que argumentos y parámetros estoy utilizando y su tipo.

56
Q

Los parámetros formales no son variables locales
V o F

A

F
Un parámetro formal es una variable local a su entorno.

57
Q

¿Qué datos pueden ser los parámetros reales?

A

Un parámetro real puede ser un valor, entidad, expresión, y otros, que pueden ser locales, no locales o globales, y que se especifican en la llamada a una función/rutina dentro de la unidad llamante.

58
Q

¿Que cosas ocurren cuando se vinculan los parámetros reales y parámetros formales?

A

Evaluación:
En general antes de la invocación primero se evalúan los parámetros reales, y luego se hace la ligadura. Se verifica que todo esté bien antes de transferir el control a la unidad llamada.
Ligadura:
1. Por posición: Se corresponden con la posición
que ocupan en la lista de parámetros. Van en el mismo orden
2. Por Nombre o palabra clave: Se corresponden con el nombre por lo tanto pueden estar colocados en distinto orden en la lista de parámetros.

59
Q

¿Qué tipo de parámetros formales se pueden diferenciar desde el punto de vista semántico?

A

-Modo IN: El parámetro formal recibe el dato desde el parámetro real. La conexión es al inicio, se copia y se corta la vinculación
-Modo OUT: se invoca la rutina y cuando esta termina devuelve el parámetro formal al parámetro real. La conexión es al final
-Modo IN/OUT: El parámetro formal recibe el dato del
parámetro real y el parámetro formal le envía el dato al
parámetro real al finalizar la rutina. La conexión es al
inicio y al final

60
Q

¿Cuáles son los tipos de parámetros que se pueden enviar a una rutina?

A

-Datos pasados como parámetros
-Subprogramas pasados como parámetro

61
Q

¿Cómo se puede enviar parámetros en modo in?

A

-Por valor
-Por constante

62
Q

Características de los datos pasados por parámetro, modo in, por valor

A

El valor del parámetro real se usa para inicializar el correspondiente parámetro formal al invocar la unidad.
-Se transfiere el dato real y se copia
-En este caso el parámetro formal actúa como una variable local de la unidad llamada, y crea otra variable.
-La conexión es al inicio para pasar el valor y se corta la vinculación.
-Es el mecanismo por default y el más usado

63
Q

Ventajas y desventajas de los datos pasados por parámetro, modo in, por valor

A

Desventaja:
-Consume tiempo para hacer la copia de cada parámetro
-Consume almacenamiento para duplicar cada dato (pensar
grandes volúmenes)
Ventaja:
-Protege los datos de la unidad llamadora, el parámetro real no
se modifica.
-No hay efectos negativos o colaterales

64
Q

Características de los datos pasados por parámetro, modo in, por valor constante

A

-Se envía un valor, pero la rutina receptora no puede modificarlo, es decir queda con un valor fijo que no se puede cambiar.
-Se pone const a la izquierda del nombre del dato por lo general
-No indica si se realiza o no la copia. (dependerá del lenguaje)
-La implementación debe verificar que el parámetro real no sea modificado.
-No todos los lenguajes permiten el modo IN con pasaje por valor constante

65
Q

Ventajas y desventajas de los datos pasados por parámetro, modo in, por valor constante

A

Desventaja:
-Requiere realizar más trabajo para implementar los controles
Ventaja:
-Protege los datos de la unidad llamadora
El parámetro real no se modifica

66
Q

¿Cómo se puede enviar parámetros en modo out ?

A

-Por resultado
-Por resultado de funciones

67
Q

Características de los datos pasados por parámetro, modo out, por resultado

A

-El valor del parámetro formal de la rutina se copia al parámetro real al terminar de ejecutarse la unidad que fue llamada.
-El parámetro formal es una variable local del entorno de la rutina
-El parámetro formal es una variable sin valor inicial porque no recibe nada.
Se les pone res a la izquierda del nombre de las variables

68
Q

Ventajas y desventajas de los datos pasados por parámetro, modo out, por resultado

A

Desventajas:
-Consume tiempo y espacio porque hace copia al final
-Debemos inicializar la variable en la unidad llamada de alguna forma (si el lenguaje no lo hace por defecto)
Ventaja:
-protege los datos de la unidad llamadora, el parámetro real no se modifica en la ejecución de la unidad llamada

69
Q

Características de los datos pasados por parámetro, modo out, por resultado de función

A

-Es el resultado que me devuelven las funciones.
-Remplaza la invocación en la expresión que contiene el
llamado.
ejemplo: return dato (java)

70
Q

¿Cómo se puede enviar parámetros en modo in-out ?

A

-Por valor-resultado
-Por referencia
-Por nombre

71
Q

Características de los datos pasados por parámetro, modo in-out, por valor-resultado

A

-El parámetro formal es una variable local que recibe una copia a la entrada del contenido del parámetro real y a la salida el parámetro real recibe una copia de lo que tiene el parámetro formal.
-Cuando se invoca la rutina, el parámetro real le da valor al parámetro formal (se genera copia) y se desliga en ese momento.
-La rutina trabaja sobre ese parámetro formal pero no afecta al parámetro real trabaja sobre su copia. Cada referencia al parámetro formal es una referencia local.
-Una vez que termina de ejecutar el parámetro formal le devuelve un valor al parámetro real y lo copia.
-Se dice que hay una ligadura y una conexión entre parámetro real y el formal cuando se inicia la ejecución de la rutina y cuando se termina, pero no en el medio.
-Tiene las desventajas y las ventajas de ambos.
-Se pone in-out a la izquierda del nombre de la variable

72
Q

Características de los datos pasados por parámetro, modo in-out, por referencia

A

También llamada por “variable”
-No es copia por valor es por referencia.
-Se asocia la dirección (l-valor) del parámetro real al parámetro formal.
-La conexión es al inicio y permanece hasta el final
-El parámetro formal será una variable local a su entorno que contiene la dirección al parámetro real de la unidad llamadora que estará entonces en un ambiente no local.
Así se extiende el alcance de la rutina (aliasing situation)
-Cada referencia al PF será a un ambiente no local, entonces cualquier cambio que se realice en el parámetro formal dentro del cuerpo del subprograma quedará registrado en el parámetro real. El
cambio será automático.
-El parámetro real queda compartido por la unidad llamadora y llamada. Será bidireccional
-Se pone var a la izquierda del nombre de la variable

73
Q

Ventajas y desventajas de los datos pasados por parámetro, modo in-out, por referencia

A

Desventajas:
-Se puede llegar a modificar el PR inadvertidamente.Es el peor problema. Se pierde el control y puede llevar a errores
-El acceso al dato es más lento por la indirección a resolver cada vez que se invoque.
-Se pueden generar alias cuando dos variables o referencias diferentes se asignen a la misma dirección de memoria.
-Estas cosas afectan la legibilidad y por lo tanto la confiabilidad, se hace muy difícil la verificación de programas y depuración de errores
Ventajas:
-Ya que no se realizan copias de los datos será eficiente en espacio y tiempo sobre todo en grandes volúmenes de datos
-La indirección es de bajo costo de implementar por muchas arquitecturas

74
Q

Características de los datos pasados por parámetro, modo in-out, por nombre

A

-El parámetro formal es sustituido “textualmente” por una expresión del parámetro real, más un
puntero al entorno del parámetro real (expresión textual, entorno real). Se utiliza una estructura aparte que resuelve esto
-Se establece la ligadura entre parámetro formal y
parámetro real en el momento de la invocación, pero la “ligadura de valor” se difiere hasta el momento en que se lo utiliza (la dirección se resuelve en ejecución). Distinto semánticamente a por referencia
-El objetivo es otorgar evolución de valor diferida.
-No es de los más utilizados por los lenguajes
-Se pone “nombre” a la izquierda del nombre de la variable

75
Q

¿Que es thunks?

A

Thunks: es una unidad pequeña de código (función) que encapsula y representa a una expresión que pospone su evaluación hasta que sea necesario.
Es un concepto clave en la evaluación perezosa/diferida

76
Q

¿Que se utiliza para implementar el pasaje por nombre?

A

-Los thunks que son procedimientos sin nombre.
-Cada aparición del parámetro formal se reemplaza en el cuerpo de la unidad llamada por una invocación a un thunks
-En el momento de la ejecución activará al procedimiento
que evaluará el parámetro real en el ambiente apropiado.

77
Q

Ventajas y desventajas de los datos pasados por parámetro, modo in-out, por nombre

A

Desventajas y ventajas:
-Es un método que extiende el alcance del parámetro real, pero esto mismo puede llevar a errores.
-Posee evaluación diferida al ejecutar
-Es más lento ya que debe evaluarse cada vez que se lo usa. (ej si es un loop se evalúa cada vez)
-Es difícil de implementar y genera soluciones
confusas para el lector y el escritor.

78
Q

¿Cuáles son las características
del parámetro, subprograma?

A

-En algunas situaciones es conveniente o necesario poder usar nombres de subprogramas
como parámetro para ejecutar alguna acción.
-En general se usa con funciones matemáticas
-No lo incorporan todos los lenguajes.

79
Q

¿Cuáles son las estrategias para buscar en ambientes de referencia no local de una subprograma que se ha invocado y ha sido pasado como parámetro?

A

-Ligadura shallow o superficial: el ambiente de referencia es el del subprograma que tiene el parámetro formal para el subprograma que se esta pasando como parámetro real
-Ligadura deep o profunda: el ambiente de referencia es el del subprograma usado como parámetro real. Este enfoque se utiliza en lenguajes con alcance estático y estructura de bloque
-El ambiente del programa donde se encuentra el llamado a la unidad que tiene un parámetro subprograma

PD: cuando los lenguajes no tienen para enviar subprogramas como parámetros utilizan unidades genéricas, no sabia donde poner esto, así que es un easter egg

80
Q

¿Qué es el dominio de un tipo?

A

Los valores posibles que este puede tomar

81
Q

¿Qué es un tipo de dato?

A

Un tipo de dato es un conjunto de valores y un conjunto de operaciones asociadas al tipo para manejar esos valores.

82
Q

Que es un tipo de dato definido por el usuario?

A

Es una agrupación de objetos de datos elementales, se puede realizar de forma recursiva o mediante agregaciones de agregados o uniones
Elementales : numeraciones
Compuestos: arreglos, registros, listas, etc

83
Q

¿Cuál es la diferencia entre un tipo de dato elemental o escalar y uno compuesto?

A

Los tipos de datos elementales son datos indivisibles, que no se pueden descomponer, mientras que los compuestos son agrupaciones de datos elementales

84
Q

¿Qué es un tipo de dato predefinido? Nombre la ventaja del uso de estas

A

Son los datos que reflejan el comportamiento del hardware subyacente y son una abstracción de el
Algunas ventajas son:
-Invisibilidad de la representación
-Verificación estática de control de tipos
-Desambiguar operadores sobrecargados
-Control de precisión
Algunos ejemplos son: enteros, reales, caracteres y booleanos

85
Q

¿Qué son los tipos de datos definidos por el usuario?

A

Los datos definidos por el programador permiten, justamente al programador especificar agrupaciones de objetos de datos elementales y, de forma recursiva, agregaciones de agregados
Separan la especificaciones de la implementación
Se definen los tipos que el problema necesita
Permiten:
-Instanciar objetos de las agregaciones
-Definir nuevos tipos de dichas agregaciones
-Chequeo de consistencia

(con agregación se refiere la combinación de objetos más simples para formar una entidad más grande y compleja. En otras palabras, es la agrupación de varios objetos de datos elementales para crear una estructura de datos más grande ?)

86
Q

¿Cuáles son los constructores que hay en los tipos de datos definidos por el usuario?

A

-Producto cartesiano
-Correspondencia finita
-Unión
-Recursión

87
Q

¿Qué es un constructor? ( tipos de datos definidos por el usuario)

A

Son los que permiten definir tipos de datos definidos por el usuario

88
Q

¿Qué es un constructor producto cartesiano?

A

El producto cartesiano es un producto de n conjuntos donde sus elementos son tuplas, donde cada una de esas tuplas pertenecen a un conjunto,
nos permiten definir registros

89
Q

¿Qué es un constructor correspondencia finita?

A

Correspondencia finita es una función de un conjunto finito valores de un tipo de dominio a un conjunto de un dominio conjunto resultante
Dominio->función->conjunto resultante
Se utiliza un índice que pertenece al conjunto del dominio
Otra forma de decirlo seria, a partir de un valor del conjunto del dominio accedo a un valor del conjunto resultante
Define arreglos

90
Q

¿Qué es un constructor unión y unión discriminada?

A

Union y union discriminada: Define a un tipo de dato como la disjuncion(uno u otro, son mutuamente excluyentes) de los tipos los tipos que haya definido en la definición
-Permite manipular diferentes tipos en distinto momento de la ejecucion
-Chequeo de tipos en ejecucion
-Chequeo dinamico
un ejemplo es un dato de tipo union(? esta en c
-los valores deben ser tratados de forma distinta si son de un tipo o del otro

Union discriminada: utiliza un discriminante para indicar la opcion elegida,el elemento debe manipularse de acuerdo al valor del discriminante,son mas seguras

pensalo como una cajita que puede tener o un tipo de dato u otro y en base a al tipo de dato se realiza una accion u otra, si se tiene un discriminante, se puede elegir el tipo de dato con el cual operar

91
Q

¿Qué es un constructor recursión?

A

Definen un tipo de dato recursivo T se define como una estructura que puede contener componentes de tipo T
-Define datos agrupados
+Cuyo tamaño puede crecer arbitrariamente
+cuya estructura puede ser arbitrariamente compleja
Algunos lenguajes soportan la implementación de los tipos de datos recursivos a través de los punteros
ejemplos: arboles

92
Q

¿Qué es un puntero y una variable puntero?

A

Un puntero es una referencia a un objeto
Una variable puntero es una variable cuyo r-valor es una referencia a un objeto

93
Q

¿Qué permite crear un puntero?

A

Permite estructuras de tamaño arbitrario, numero de ítems no determinado, los punteros permiten conectar juntos muchos ítems sin tener un nombre explicito para todos ellos

94
Q

¿Qué valores y operaciones se pueden realizar sobre un puntero?

A

Valores:
-Dirección de memoria(valido o no)
-Valor nulo(no asignado)
Operaciones:
-Asignación de valor: generalmente asociado a la alocución de la variable apuntada
-Referencias a su valor(como la dirección), operaciones entre punteros

95
Q

Dime top 6 formas de no utilizar un puntero

A

1-Violacion de tipos
(que un puntero apunte a algo que por tipo no deberia)
2-Referencias sueltas - referencias dangling
3-Punteros no inicializados
4-Punteros y uniones discriminadas
5-Alias
6-Liberacion de memoria
(que se llene la heap)

96
Q

¿Que es una referencia dangling?

A

Una referencia suelta o dangling es un puntero que contiene una dirección de una variable dinámica que fue descolocada Si luego se usa el puntero producirá error

97
Q

¿Qué sucede si se utiliza un puntero que no esta inicializado?¿Que solución encuentras para este caso?

A

Si no se inicializa un puntero se puede acceder descontrolada a posiciones de memoria no permitidas, esta verificación se realiza dinámicamente
Solución: nil o void o null

98
Q

¿Qué inseguridad se puede dar al utilizar punteros en uniones discriminadas?

A

Básicamente viola el concepto de la unión de ser mutuamente excluyente, una unión que tiene un entero y un puntero a entero que apunta al otro entero, me permite trabajar sobre el mismo dato en ambos casos, y esto va en contra del concepto de unión y ser mutuamente excluyentes

99
Q

¿Qué inseguridad se puede dar al utilizar alias?

A

Al manejar alias, es decir 2 punteros o mas que apuntan a lo mismo, se puede dar el caso de que uno de los punteros libere el espacio de memoria que estaba referenciado y el otro puntero que apuntaba ahí queda apuntando a una dirección invalida

100
Q

¿Cuándo un objetos se dice que es accesible o es basura?

A

-Un objeto se dice accesible si alguna variable en la pila lo apunta directa o indirectamente
Un objeto es basura si no es accesible

101
Q

¿Qué maneras hay de liberar espacio en la memoria heap?

A

-Explicita(responsabilidad del programador, ej dispose)
-Implicita: Garbage collector
( busca objetos que no son referenciados por nadie y los borra)

102
Q

¿Qué problema puede ocurrir al liberar el espacio en la memoria heap de manera explicita?

A

Puede generar referencias sueltas, para evitarlo se necesitaría una verificación dinámica para garantizar el uso correcto de la instrucción de liberación de memoria