
Preparação da Jornada
Authored by cristiane jorge
Computers
University
Used 16+ times

AI Actions
Add similar questions
Adjust reading levels
Convert to real-world scenario
Translate activity
More...
Content View
Student View
5 questions
Show all answers
1.
MULTIPLE SELECT QUESTION
5 mins • 1 pt
Qual das opções de código C++ é equivalente a este, escrito em C#?
Há várias opções de resposta corretas.
Deve analisar todas, para ponderar quais serão.
*Use a lupa no canto superior esquerdo para ampliar o texto das alternativas.
Answer explanation
As palavras-chave foreach...in permitem-nos iterar uma coleção, sem termos de nos preocupar com a forma como está estruturada (a própria classe dela fornece os métodos que asseguram essa iteração). Em C++ existe o conceito de iterador, explicitamente, mas a sintaxe equivalente for : coleção só foi introduzida no C++ 11.
2.
MULTIPLE CHOICE QUESTION
5 mins • 1 pt
Uma classe PauDeGiz possui um atributo "peso" que representa o peso de um pau de giz. Quando o pau de giz existe, o peso nunca pode ser zero nem negativo. Qual destas alternativas é melhor para fazer isso?
*Use a lupa no canto superior esquerdo para ampliar o texto das alternativas.
Answer explanation
Esta pergunta serve para recordar o conceito de encapsulamento, sob uma perspetiva do seu impacte na qualidade do software, quando não é um único programador a fazer tudo: um progamador a fazer a classe, outro a usá-la, ou até vários programadores diferentes a usá-la no mesmo projeto.
3.
MULTIPLE CHOICE QUESTION
5 mins • 1 pt
Qual é o resultado deste código em C#? E se o usássemos em C++, trocando apenas .Peso por métodos acessores e deixando o resto igual?
*Use a lupa no canto superior esquerdo para ampliar o texto das alternativas.
4.
MULTIPLE CHOICE QUESTION
5 mins • 1 pt
Dada esta declaração de nPauDeGiz em C++ e C#, qual será o comportamento da quantidade de objetos em memória ao executar os códigos de teste abaixo indicados, em C++ e C#? Por exemplo: a linha "new Belial()" fez o número de objetos passar de 0 para 2: objeto Belial e objeto AMinhaCopiaPrivadaDeGiz. E depois, o que sucederá?
*Use a lupa no canto superior esquerdo para ampliar o texto das alternativas.
Answer explanation
C# foi concebida para execução em ambientes de código gerido. Uma das características desses ambientes é a libertação garantida de blocos de memória que não tenham referências para eles no código em execução - "garbage collection". Por esse motivo, em C# o objeto "FabricaDeGiz" será libertado nalgum momento após entregar o seu retorno. E o objeto List<PausDeGiz> criado aquando do new Belial será libertado quando AMinhaCopiaPrivadaDeGiz recebe o novo List<PausDeGiz>, pois o anterior fica sem referências para ele.Já em C++ estes dois objetos ficam em memória, sem nenhum ponteiro que os identifique, pelo que só serão libertado (se tudo correr bem) quando o programa encerrar.C#Belial b = new Belial(); // Criado um objeto Belial pelo new...List<PausDeGiz> AMinhaCopiaPrivadaDeGiz = new List<PausDeGiz>(); //Criado um objeto List<PausDeGiz> (lista vazia)...new FabricaDeGiz() //Criado um objeto FabricaDeGiz...ObterGiz(value) //Como o retorno do método tem de ser um List<PausDeGiz>, é criada essa lista; como tem de ter um pau de giz (valor não nulo), é criado um objeto desses também.--- = (new FabricaDeGiz()).ObterGiz(value) //Após ser devolvido um List de retorno, o objeto FabricaDeGiz fica sem referência em memória, acabará por ser libertado....AMinhaCopiaPrivadaDeGiz = //Ao ser guardado o novo List neste atributo, o anterior List fica sem referência em memória, acabará por ser libertado.C++Belial* b = new Belial(); // Criado um objeto Belial pelo new...list<PausDeGiz> AMinhaCopiaPrivadaDeGiz; //Criado um objeto list<PausDeGiz> (lista vazia), porque em C++ estes atributos não são ponteiros nem referências....new FabricaDeGiz() //Criado um objeto FabricaDeGiz...ObterGiz(value) //Como o retorno do método tem de ser um list<PausDeGiz>, é criada essa lista; como tem de ter um pau de giz (valor não nulo), é criado um objeto desses também.--- = (*(new FabricaDeGiz())).ObterGiz(value) //Após ser devolvido um list de retorno, o objeto FabricaDeGiz fica sem referência em memória, mas não é libertado (porque não houve delete)....AMinhaCopiaPrivadaDeGiz = //Ao ser guardado o novo list neste atributo, o anterior list fica sem referência em memória, mas não é libertado (porque não houve delete).NOTA: em C# não é garantido que a libertação de memória seja imediata, nem que a FabricaDeGiz seja libertada antes de AMinhaCopiaPrivadaDeGiz: podem ocorrer por ordem inversa ou até ao mesmo tempo, podem até ocorrer muito mais tarde. Depende de quando e como for executado o processo concorrente do garbage collector. É garantido é que ocorrerá.
5.
MULTIPLE CHOICE QUESTION
5 mins • 1 pt
Qual destas formas de implementação em C# é a mais adequada para termos uma fórmula fácil de ler em código, próxima da fórmula matemática?
Ajuda Geral: Todas as opções têm código correto e funcional, mas a pergunta pede para identificar o mais adequado para um fim específico.
*Use a lupa no canto superior esquerdo para ampliar o texto das alternativas.
Answer explanation
O recurso a propriedades permite-nos ter métodos visíveis como tal e métodos menos obstrusivos, propiciadores de expressões mais legíveis. Contudo, deve-se ponderar se o grau de complexidade e de efeitos secundários não deve ser exposto aos programadores. Se, em vez de termos um set para "PesoTotal", tivessemos um método "AlterarPesoTotal()", a probabilidade dos programadores lerem a documentação para compreenderem como ele funciona aumenta. Além disso, não é possível atribuir um valor a um método por lapso de escrita (mas a uma propriedade com set, sim).
Access all questions and much more by creating a free account
Create resources
Host any resource
Get auto-graded reports

Continue with Google

Continue with Email

Continue with Microsoft
or continue with
%20(1).png)
Apple
Others
By signing up, you agree to our Terms of Service & Privacy Policy
Already have an account?