1 2 TOTAL ------------- CALIFICACION: | | | | -------------Examen intermedio (20/11/2001)
Problema de Smalltalk
Problema de análisis y diseño
En una casa viven cinco animales: una ballena llamada "Moby Dick", que no dice nada; un perro fiero llamado "Caín", que dice "Grrr"; un perro manso llamado "Abel", que dice "Guau"; un pingüino llamado "Adela" que no dice nada; y un loro que dice "Lorito bonito", "Pretty Polly" y "Viva mi dueño".
Construir el diagrama de clases y objetos en UML (5 puntos).
whileF: aBlock "Evaluar self y aBlock hasta que self se evalue a true" self value ifFalse: [ aBlock value. self whileF: aBlock ] to: anInteger do1: aBlock "Evaluar aBlock para cada elemento de la progresión aritmética desde self hasta anInteger con incrementos de 1." | idx | idx := self. idx <= anInteger ifTrue: [ aBlock value: idx. idx := idx + 1. idx to: anInteger do1: aBlock ]
1.1 1.2 2.1 2.2 2.3 2.4 3.1 3.2 TOTAL ------------------------------------- CALIFICACION: | | | | | | | | | | -------------------------------------(Temas avanzados en Ciencias de la Computación II) Examen final (30/1/2002)
Se desea diseñar un sistema de gestión de matrículas y personal docente para las Universidades de una Comunidad Autónoma. Desde el punto de vista de la matrícula, una Universidad puede considerarse como un conjunto de estudiantes, a cada uno de los cuales se le asignará un número de identificación personal. Los estudiantes podrán asistir a cierto número de cursos, cada uno de los cuales será impartido por un profesor. Desde el punto de vista del personal docente, la Universidad se divide en departamentos, cada uno de los cuales estará formado por varios profesores, uno de los cuales actuará como director del departamento. Cada profesor sólo podrá pertenecer a un departamento. Los departamentos tienen la responsabilidad de impartir uno o más cursos. El sistema permitirá añadir o borrar estudiantes, departamentos y profesores, así como realizar consultas sobre cada uno de estos estamentos.
Se pide:
a) |x| x:=Set new add: 'HOLA' add: 'ADIOS'; size; x b) |x| x:=0. #(#(1) #(2 3) #(4)) do: [:i|x:=x+i size]. x
a) 3+4*5- 3\\8 Resultado: 0 b) OrderedCollection with: 'abcd' with: 'mnop' at: 2 at: 2 Resultado: $n c) 1+ Array new size + #(1 2 3 4) size * 5 + String with: $a with: $b size Resultado: 35
#include <iostream.h> class A { private: int valor; public: A (int v=0) : v(valor) {} void f(A *a, int v=99) { a->valor=v; } int getvalor () { return valor; } }; void main() { A *obj1; obj1 = new A; A obj2(9); obj2.f(obj1); cout << obj1->getvalor() << endl; cout << obj2->getvalor() << endl; }
sortblock: aBlock "Método de clase" |x| x := self new. x sortblock: aBlock. ^x sortblock: aBlock "Método de objeto" sortblock := aBlock.
a) |x| (x:=Set new) add: 'HOLA'; add: 'ADIOS'; size. x ^ ^ ^ ^ Resultado: un Set con los dos String 'HOLA' y 'ADIOS'. o bien: |x| x:=Set new add: 'HOLA'; add: 'ADIOS'; size. x ^ ^ Resultado: 2. (Hay otras soluciones). c) No hay errores. Resultado: 4.
a) 3+4*5- 3\\8 b) ((OrderedCollection with: 'abcd' with: 'mnop') at: 2) at: 2 c) 1+ Array new size + #(1 2 3 4) size * (5 + (String with: $a with: $b) size)
Dice Debe decir ------------------------- ------------------------- A (int v=0) : v(valor) {} A (int v=0) : valor(v) {} obj2->getvalor() obj2.getvalor() (al final de main) delete obj1;
99 9
#include <iostream.h> class PilaLlena {}; class PilaVacia {}; template <class C> class Pila { C *datos; int size; int llenos; public: Pila (int n) { llenos = 0; size = n; datos = new C[n]; } ~Pila () { delete[]datos; } void push (C dato) throw (PilaLlena) { if (llenos==size) throw PilaLlena(); datos[llenos++] = dato; } C pop () throw (PilaVacia) { if (llenos==0) throw PilaVacia(); return datos[--llenos]; } }; void main () { Pila<int> p(3); try { p.push(5); p.push(6); p.push(7); p.push(8); // Lanza la excepción PilaLlena cout << p.pop(); cout << p.pop(); cout << p.pop(); cout << p.pop(); // Sin push(8), lanza la excepción PilaVacia } catch (PilaLlena p) { cout << "La pila ha rebosado" << eol; } catch (PilaVacia p) { cout << "La pila estaba vacía" << eol; } }