Examen Final - 75.42. Taller de programación I [Foros-FIUBA::Wiki]
 

Examen Final - 75.42. Taller de programación I

Cátedra: Veiga
Fecha: 2do Cuatrimestre 2007
Día: 05/02/2008
Tema: 1

Enunciado

  1. Diagrame mediante un grafo una máquina de estados que implemente un robusto cliente de comunicaciones TCP/IP; completando timeouts, cierres de conexiones, error de datos, y toda otra condición necesaria.
  2. De un caso concreto de declaraciones en C++ donde se producirá un error de ambigüedad durante la compilación.
  3. Desarrolle alguna de las dos siguientes preguntas teóricas:
    1. ¿Qué es OpenGL? Ejemplifique.
    2. ¿Cuál es la estructura de un archivo XML? Ejemplifique.
  4. Asumiendo que la clase PARRAFO contiene un operador para escribirse en formato XML, escriba un operador« que vuelque a formato XML el contenido de std::array<PARRAFO>.
  5. Escriba un programa ANSI C que reciba por línea de comandos un número (en base decimal) y una base (entre 2 y 16) e imprima el número recibido en la base pedida.
  6. Suponiendo que su programa ejecutará en un ambiente de 1 procesador, ¿En qué casos usaría Multithreading?.
  7. Escriba una macro DONDE que imprima por salida standard el nombre del archivo fuente y la línea donde fue utilizada.
  8. Escriba un programa ANSI C que lea el archivo binario a.bin y genere el archivo b.bin. El archivo de salida deberá contener los bytes del archivo de entrada, excepto los 0x03 y reemplazando los 0x04 por los 15 bytes precedentes en el archivo de entrada.
  9. ¿Qué propósito tiene la herencia de clases?. Justifique mediante un ejemplo.
  10. Dados los siguientes strings definidos dentro del main:
char* x1 = "Mi cadena";
char  x2[30] = "Mi cadena";
char* x3 = new char[50];
strcpy(x3, "Mi cadena");
Completar: x1 x2 x3 x1[0] x2[0] x3[0]
Área de memoria
Modificable (Si/No)
sizeof()
Debe liberarse

Resolución

Punto II

class X{
private: 
	int x;
public:
	X(){ x=0}
 
	X(int y=3){ x=y}
 
	float getX();
 
	int getX();
 
	void setX(int y=2) { x=y;}
 
	void setX(){ x=0;}
 
	bool operator() const { 
		if (x=0) return true;
		else return false;
	}
 
	short int operator short() const {
		return x%256;
	}
};
 
 
int main(int argc, char *argv[]){
	X x1; // Que constructor llama?, X() o X(3)?
	float f;
	int entero;
 
	f = x1.getX(); // A quien llama y luego castea a float?. Castea de int a float o de long a float?
 
	x1.setX(); // Setea en 0 o en 2?.
 
	entero = x1; // Hace el casteo a bool a a short int?
 
	return 0;
}

Punto V

#include <stdio.h>
#include <stdlib.h>
 
char toChar(int num){
	if ((num>=0) && (num<=9)) return ('0'+num);
	else if ((num>9) && (num < 16)) return ('a'+num-10);
	return ' ';
}
 
void convertir (int num,int base){
	if (num<base) printf("%c", toChar(num));
	else {
		convertir(num/base, base);
		printf("%c", toChar(num%base));
	}
}
 
int main(int argc, char *argv[]){
	int num, base;
 
	if (argc!=3) return -1;
	num = atoi(argv[1]);
	base = atoi(argv[2]);
 
	convertir(num, base);
	printf("\n");
 
	return 0;
}

Punto VI

Usaría Multithreading cuando llame a funciones que puedan tener tiempos muertos (como algunas de sockets, las entrada y salida estándar o con archivos); y pueda, mientras tanto, hacer otra cosa como interactuar con el usuario.

Punto VII

#define DONDE printf("Archivo: %s   Línea: %5u\n", __FILE__, __LINE__);

Punto IX

La herencia de clases tiene el propósito de que una clase pueda usar los métodos y atributos de otras sin tener que definirlos. Otro propósito es que la clase que hereda las características sea una especialización del padre o los padres. Por ejemplo, si se define la clase Animal a la cual se le definen los atributos edad y peso. Luego se puede definir la clase Perro la cual puede heredar de Animal, y además puede definirse el atributo raza, de esta forma la clase perro tendrá los atributos peso, edad y raza.

Punto X

x1 x2 x3 x1[0] x2[0] x3[0]
Área de memoria Code Segment Stack Segment Heap Code Segment Stack Segment Heap
Modificable (Si/No) No Si Si No Si Si
sizeof() 4 bytes 30 bytes 4 bytes 1 byte 1 byte 1 byte
Debe liberarse No No Si
materias/75/42/final_002_20080205_1.txt · Última modificación: 2008/02/13 01:38 por gsoriano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki