Cátedra: Veiga
Fecha: 1er Cuatrimestre 2003
Día: Julio 2003
1) A continuación se define un puntero a una función. Escriba la función a la que hace referencia suponiendo que la misma implementa la “suma de enteros”.
int (*p)(int*a,int*b);
2) Para un entorno multithread se ha escrito la siguiente función para calcular el “factor Frammis”. ¿Es correcta? Justifique.
float &Frammis(float r)
{
static float a;
a=2*r/3.141592;
return &a;
}
3) Tabule las funciones llevadas a cabo en las etapas de: PRECOMPILACIÓN, COMPILACIÓN y LINKEDICION.
4) Escriba el prototipo de una clase X (que aloca memoria dinámica de tamaño variable) de forma que el siguiente código sea correcto:
X x(“123.4”),y;
y=4+x ;
5) Para la clase String se han definido el operador concatenación de la siguiente forma: String String::operator+(String S); ¿Qué métodos de la clase se invocan y en qué orden al la instrucción: S4=S1+S2?
6) Escriba en 2 columnas el pseudocódigo correspondiente a 2 threads, de forma que generen un DeadLock inevitable y sistemático.
7) ¿Qué es un Alias (Directory alias)?¿Para que sirve?
8) Escriba las declaraciones de una biblioteca basada en templates que ofrece una pila.
9) Escriba los tags (con sus respectivos parámetros posibles) que conforman un formulario de un documento HTML. Ejemplifique.
10) ¿qué cree Ud. que podría suceder si un servidor HTTP le pasa un “largo de datos de entrada” inferior al correcto a un CGI que espera recibir los párametros segun la convención POST?
2) Se esta devolviendo una referencia a una variable static local la cual puede ser modificada por cualquier hilo que utilice la función. Esto puede provocar comportamientos inesperados por parte del hilo que utiliza la referencia desde afuera de la función si otro usa la función, como por parte del hilo que esta usando la función si se modifica el valor de la variable desde afuera de la misma.
3) En la etapa de compilación el compilador hace validaciones de manejo de variables, declaración de funciones, sintaxis correcta, entre otras. El resultado de esta etapa son los módulos objeto (“.o” o “.obj”) con los fuentes compilados.
Por ultimo en la etapa de linkedición el linkeditor genera un ejecutable a partir de los módulos objeto, bibliotecas externas al programa (.lib), resolviendo referencias y determinando las posiciones de memoria absolutas del código a partir de la ubicación definitiva de los módulos en el ejecutable;