Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Andreia Sousa

Perguntas de C#

Mensagens Recomendadas

Andreia Sousa

try {
  SolveEqns(10, u, 1.0e-8, 1.0e-8);
}
catch(EX_TOO_MANY_ITERATIONS) {
  // no solution, so go on to the next case
  return;
}
catch(EX_SINGULAR_MATRIX) {
  // no solution, so go on to the next case
  return;
} 

1. O código apresentado acima (C++) pertence ao programa de origamis, TreeMaker (http://www.langorigami.com/science/computational/treemaker/treemaker.php). O objetivo do método SolveEqns é resolver um conjunto de equações com os parâmetros fornecidos.

a. Para que este código funcione em C# sem ser necessário alterá-lo, explique que tipo de classes são os parâmetros EX_TOO_MANY_ITERATIONS e EX_SINGULAR_MATRIX.

b. Visto que nada é feito dentro destes catch, a não ser “return”, explique porque é que o programa funcionaria de forma diferente se apagássemos o try-catch (ou seja, se fosse apenas SolveEqns(10, u, 1.0e-8, 1.0e-8);return; ).

c. Imagine que existe um finally{reset();}. Explique se este método reset é chamado antes ou depois do return, assumindo que se entra num dos catch.

2. Se estiver a desenvolver um programa em MVC com input processado na View, explique como implementava o código com estruturas try-catch para que:

a. O Model resolvesse as equações, mas em caso de erro se actualizasse simplesmente o aspeto da View atual.

b. O Model resolvesse as equações, mas em caso de erro fosse necessário encerrar a View actual e apresentar no ecrã uma View nova.

3. Suponha que uma das classes de excepções utilizadas no código acima (após convertido em C#) inclui dentro de si uma colecção de objectos com os passos realizados pelo método SolveEqns antes de falhar. Explique com um exemplo que tipo de colecção poderia utilizar para permitir ao programador associar a cada passo outro objeto com o estado do cálculo à entrada desse passo.

4. Suponha que List é uma estrutura de dados dentro da excepção, que guarda todos os passos mencionados na pergunta anterior. Explique porque é que esta estrutura de dados não é uma lista de interfaces.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.