Baixe o app para aproveitar ainda mais
Prévia do material em texto
AO2 Substitutiva Entrega 29 jun em 23:59 Pontos 6 Perguntas 10 Disponível 28 jun em 0:00 - 29 jun em 23:59 Limite de tempo Nenhum Instruções Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 16 minutos 6 de 6 As respostas corretas estarão disponíveis em 30 jun em 0:00. Pontuação deste teste: 6 de 6 Enviado 28 jun em 11:10 Esta tentativa levou 16 minutos. Importante: Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que você clique em "FAZER O QUESTIONÁRIO", no final da página. 0,6 / 0,6 ptsPergunta 1 Leia o texto a seguir: “Um dos recursos mais interessantes de Python é que ela pode ser facilmente estendida por qualquer usuário. Os módulos que suportam as extensões podem ser escritos em qualquer linguagem compilada. Extensões podem adicionar funções, variáveis e tipos de objetos. Essas extensões são implementadas como adições ao interpretador Python.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando o trecho acima, avalie as afirmações a seguir: I. Um módulo pode conter subprogramas. II. Módulos devem ser escritos na mesma linguagem que os A+ A A- https://famonline.instructure.com/courses/19621/quizzes/82015/history?version=1 utilizará. III. Módulos podem conter dados novos. IV. Módulos devem ser escritos por quem irá usá-los. É correto o que se afirma em: I, II e IV, apenas. II e III, apenas. I e II, apenas. I e III, apenas. I, II e III, apenas. Alternativa correta. As afirmativas I e III são verdadeiras, pois um módulo pode conter diversos códigos úteis, como subprogramas (funções, por exemplo) e dados (variáveis e objetos, por exemplo). A afirmativa II é falsa, pois um módulo não precisa ser escrito na mesma linguagem onde será usado. Por exemplo, o Python, que pode ter módulos escritos em outras linguagens, desde que sejam compiladas. Outros exemplos incluem as linguagens da família .NET (como C#, F# e VB.NET), que podem ser utilizadas para utilizar módulos escritos por outras linguagens da mesma família, e as linguagens que geram bytecode Java (como o próprio Java, Kotlin e Clojure, entre outras), que também podem compartilhar módulos entre si. A afirmativa IV é falsa, pois módulos não precisam ser escritos por quem irá utilizá-los. Pelo contrário, sua maior utilidade está justamente na possibilidade de um mesmo módulo escrito por um programador ou um grupo de programadores ser utilizado em uma infinidade de projetos de software distintos. 0,6 / 0,6 ptsPergunta 2 A+ A A- Leia o texto a seguir: “Uma das principais razões pelas quais a linguagem C é tão admirada como odiada é sua falta de uma verificação de tipos completa. Por exemplo, em versões anteriores ao C99, podiam ser escritas funções para as quais os parâmetros não eram verificados em relação ao tipo. Aqueles que gostam de C apreciam a flexibilidade. aqueles que não gostam o acham muito inseguro. Uma das grandes razões para o grande aumento da sua popularidade nos anos 1980 foi o fato de que um compilador para a linguagem era parte do amplamente usado sistema operacional UNIX. Essa inclusão no UNIX forneceu um compilador bastante bom e essencialmente livre, que estava disponível para os programadores em muitos tipos de computadores.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando as informações apresentadas, assinale a opção correta: A linguagem C é exclusiva para desenvolvimento em sistemas UNIX. Linguagens consideradas inseguras acabam sendo ignoradas pelos desenvolvedores e caindo em desuso. A disponibilidade de ferramentas para o desenvolvimento em uma linguagem afeta sua popularidade. Os programadores são unânimes sobre a importância da verificação de tipos. Nos anos 80, a verificação de tipos de parâmetros de funções foi importante para a aceitação da linguagem C. A+ A A- Alternativa correta, pois como fator para a popularidade do C a disponibilidade de um compilador para ela estava disponível em um sistema operacional popular na época (o UNIX). Portanto, a disponibilidade de ferramentas é relevante para popularizar uma linguagem. 0,6 / 0,6 ptsPergunta 3 Leia o texto a seguir: “Todas as linguagens do .NET, incluindo C#, VB.NET, C++ gerenciado, F# e JScript.NET usam o Sistema de Tipos Comum (CTS - Common Type System). O CTS fornece uma biblioteca de classes comum. [...] Todas as linguagens do .NET são compiladas na mesma forma intermediária, Intermediate Language.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando o trecho acima, avalie as asserções a seguir a e relação proposta entre elas: I. As linguagens .NET são compatíveis com as implementações padrão do Java. PORQUE II. As linguagens .NET são compiladas para uma linguagem comum chamada Intermediate Language. Assinale a alternativa com a relação correta entre as asserções I e II: A asserção I é verdadeira e a asserção II é falsa. A asserção I é falsa e a asserção II é verdadeira. As asserções I e II são falsas. A+ A A- As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. Alternativa correta. A asserção I é falsa, pois o fato de as linguagens .NET serem compiladas para uma mesma linguagem intermediária permite a compatibilidade entre elas. Um programa com módulos desenvolvidos em diferentes linguagens da família .NET (por exemplo, parte em C# e parte em VB.NET), no final, irá resultar em um código uniforme, e os diferentes módulos “enxergarão” os outros módulos nessa linguagem intermediária. A asserção II é verdadeira, pois o princípio é semelhante ao da compilação de Java para bytecode, e do fato de que outras linguagens tem sido desenvolvidas para gerar bytecode compatível com a Java Virtual Machine (sendo, portanto, compatíveis com Java). Porém, o bytecode da JVM não possui relação com a IL do .NET. 0,6 / 0,6 ptsPergunta 4 Leia o trecho a seguir: O excerto abaixo é um trecho de uma resposta dada por Bjarne Stroustrup, criador da linguagem C++ ao ser perguntado sobre a utilidade de aprender vários paradigmas ou focar em linguagens orientadas a objeto. “(...) Não é uma boa ideia conhecer apenas C++, muito menos conhecer apenas uma linguagem de paradigma único. Seria como ser daltônico ou monoglota: dificilmente você saberia o que estaria A+ A A- perdendo. Muito da inspiração para uma boa programação vem do aprendizado e da apreciação de diferentes estilos de programação e, ainda, de ter visto como eles podem ser usados em linguagens diferentes.” Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando o trecho acima, analise as asserções a seguir e a relação proposta entre elas: I. Um programador experiente se beneficiará de aprender novas linguagens de programação. PORQUE II. Cada linguagem possui conceitos exclusivos e intransponíveis para outras linguagens. Assinale a alternativa com a relação correta entre as asserções I e II: A asserção I é verdadeira e a asserção II é falsa. As asserções I e II são falsas. As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. A asserção I é falsa e a asserção II é verdadeira. As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. A+ A A- Alternativa correta, pois a asserção I é verdadeira, e a II é falsa. A asserção I é verdadeira, pois um programador de fato se beneficia de conhecer diferentes linguagens e paradigmas, fato reforçado pelo próprio Stroustrup em sua resposta. A asserção II é falsa, pois, apesar de ser verdadeiro que linguagens podem ter ideias novas e bastante exclusivas, os benefícios não se restringem a conhecer esses conceitos exclusivos, e na maioria dos casos existe, sim, uma grande possibilidade dediferentes linguagens serem baseadas nos mesmos princípios – o que é a raiz da ideia de paradigmas de programação. Conforme reforçado pelo Stroustrup, um dos grandes benefícios é justamente ver os mesmos conceitos aplicados em diferentes linguagens, o que pode ser uma fonte de inspiração para fazermos melhor uso desses recursos. 0,6 / 0,6 ptsPergunta 5 Leia o texto a seguir: “A linguagem C tem sentenças de controle adequadas e recursos para a utilização de estruturas de dados que permitem seu uso em muitas áreas de aplicação. Ela também tem um rico conjunto de operadores que fornecem alto grau de expressividade.” Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando as informações acima, assinale a alternativa correta: As sentenças de controle do C garantem seu determinismo, caracterizando-a como programação funcional. A+ A A- A linguagem C pode ser considerada uma linguagem pertencente à maioria dos principais paradigmas simultaneamente. A linguagem C pode ser considerada uma linguagem de propósito geral. As estruturas de dados de C a colocam no paradigma orientado a objeto. A linguagem C é o ápice da programação, e suas sucessoras pouco acrescentaram em termos de recursos. Alternativa correta, pois o texto caracteriza a linguagem C como uma linguagem com recursos para ser utilizada em muitas áreas de aplicação diferentes, não se restringindo a um ou outro domínio de programação – portanto, ela é uma linguagem de propósito geral. 0,6 / 0,6 ptsPergunta 6 Leia o texto a seguir: “Os navegadores [web] devem executar muitas funções diferentes ao mesmo tempo, entre elas enviar e receber dados de servidores Web, desenhar texto e imagens na tela e reagir às ações do usuário com o mouse e teclado.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando o trecho acima, avalie as afirmações a seguir: A+ A A- I. Os navegadores web são implementados utilizando HTML, CSS e JavaScript. II. As várias funções simultâneas dos navegadores devem ser implementadas em linguagem funcional. III. As interações com o usuário via mouse e teclado podem ser implementadas utilizando programação orientada a evento. IV. As várias funções diferentes descritas podem utilizar o hardware de maneira mais eficiente através da programação concorrente. É correto o que se afirma em: III e IV, apenas. II e III, apenas. I, II e IV, apenas. II e IV, apenas. II, III e IV, apenas. A+ A A- Alternativa correta. A afirmativa I é falsa, pois as páginas web, lidas pelos navegadores, costumam ser escritas utilizando as linguagens HTML, JavaScript e CSS. Os navegadores em si podem ser escritos em diversas linguagens diferentes. A afirmativa II é falsa, pois a programação funcional possui diversos benefícios, mas não é necessária ou exclusiva no desenvolvimento de programas com diversas funções diferentes. Linguagens procedurais ou orientadas a objeto também podem ser utilizadas, por exemplo. A afirmativa III é verdadeira, pois a programação orientada a evento é caracterizada por programas que reagem ou tratam eventos, dentre os quais estão às interações com usuário. A afirmativa IV é verdadeira, pois a programação concorrente permite que diferentes conjuntos de instruções (por exemplo, funções diferentes) sejam executadas simultaneamente em diferentes núcleos. Isso garante um uso mais eficiente dos recursos disponíveis, permitindo um processamento simultâneo das tarefas. 0,6 / 0,6 ptsPergunta 7 Leia o texto a seguir: “O arquivo de cabeçalho, em forma de fonte, e a versão compilada do arquivo de implementação são repassados para os clientes. Quando tal biblioteca é usada, o arquivo de cabeçalho é incluído no código cliente por meio de uma especificação de pré-processador #include [...].” Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Considerando o trecho acima, avalie as afirmações abaixo: A+ A A- I. O #include é interpretado pelo pré-processador. II. O #include é transformado em código de máquina pelo compilador. III. As diferentes bibliotecas pré-compiladas serão unidas ao programa pelo ligador (linker). IV. As bibliotecas são disponibilizadas em linguagem intermediária (bytecode) e compiladas na hora da execução pelo JIT. É correto o que se afirma em: I e II, apenas. II, III e IV, apenas. I e III, apenas. I, III e IV, apenas. I, II e III, apenas. Alternativa correta. A afirmativa I é verdadeira, pois o #include é uma diretiva de compilação. Isso significa que ele não é um “comando” em C e não será compilado para linguagem de máquina. Ao invés disso, ele passa instruções para o processo de compilação, que são interpretadas pelo pré-processador. A afirmativa II é falsa, pois o #include copia o conteúdo do arquivo “.h” indicado para o programa final, que posteriormente será compilado. A afirmativa III é verdadeira, pois os diferentes arquivos compilados (código-objeto) separadamente serão ligados depois pelo ligador, ou linker, ao programa final. A afirmativa IV é falsa, pois os projetos em C são compilados uma única vez (para cada arquitetura) e seu binário são distribuídos já prontos para execução. Outras linguagens usam o conceito de linguagem intermediária e compilação “just-in- time”, como o Java. A+ A A- 0,6 / 0,6 ptsPergunta 8 Leia o texto a seguir: “Os computadores são utilizados em uma infinidade de tarefas, desde controlar usinas nucleares até disponibilizar jogos eletrônicos em telefones celulares. Por causa dessa diversidade de uso, linguagens de programação com objetivos muito diferentes foram desenvolvidas.” Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Avalie as afirmações sobre linguagens de programação e seus propósitos: I. Atualmente não se usa linguagens especializadas, pois há linguagens de uso geral que resolvem bem todos os problemas. II. “Domínios” de programação são diferentes categorias de problemas a serem resolvidos utilizando programação. III. Domínio de programação é sinônimo de paradigma de programação. É correto o que se afirma em: I e III, apenas. III, apenas. I, apenas. II, apenas. II e III, apenas. A+ A A- Alternativa correta, pois apenas a afirmativa II está correta. A afirmativa I é falsa, pois existem linguagens consideradas de propósito gerais, ou seja, que podem ser utilizadas de muitas maneiras diferentes para resolver diversos tipos de problemas em diferentes áreas. Mas nenhuma linguagem será excelente para todo tipo de problema, e é comum que linguagens mais especializadas ofereçam otimizações e facilidades para resolver certos tipos de problema, se tornando mais interessantes para o caso específico do que as linguagens gerais. A afirmativa II é verdadeira, pois domínios de programação são as diferentes áreas que podem se beneficiar da programação, ou seja, podemos dizer que diferentes tipos de problema (como gerenciar as finanças de uma empresa ou validar teoremas científicos) são diferentes domínios de programação. A afirmativa III é falsa, pois paradigmas de programação são diferentes jeitos de se pensar um programa, e não estão necessariamente vinculados a um único domínio de programação, bem como é possível que certo domínio de programação seja bem atendido por diferentes paradigmas de programação. 0,6 / 0,6 ptsPergunta 9 Leia o texto a seguir: “A motivação para Ruby foi a falta de satisfação de seu projetista com Perl e Python. Apesar de tanto Perl quanto Python oferecem suporte à programação orientada a objetos, nenhuma delas é uma linguagem puramente orientada a objetos, ao menos no sentido de cada uma ter tipos primitivos (não objetos) e aceitar o uso de funções.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. A+ A A- Analise a validade das asserções abaixo e a relação propostaentre elas. I. Subprogramas em Ruby devem ser métodos. PORQUE II. Métodos são subprogramas chamados a partir de objetos. Assinale a alternativa com a relação correta entre as asserções I e II: As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. As asserções I e II são falsas. A asserção I é falsa e a asserção II é verdadeira. A asserção I é verdadeira e a asserção II é falsa. As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. Alternativa correta. O criador de Ruby critica o Python por aceitar funções, o que a desqualifica como linguagem puramente orientada a objetos. Em uma linguagem orientada a objetos, tudo deve estar relacionado a objetos – como exemplo, o texto menciona a possibilidade de nas linguagens orientadas a objeto “impuras” terem variáveis que não são objetos. Subprogramas em um contexto orientado a objeto são os métodos: eles são como funções, mas estão vinculados aos objetos e devem ser chamados à partir dos objetos. A crítica ao Python e ao Perl seria pela possibilidade de se criar funções “avulsas”, sem vínculos com objetos – tornando a programação mais próxima do paradigma procedural, por exemplo, do que do orientado a objeto. A+ A A- 0,6 / 0,6 ptsPergunta 10 Leia o texto a seguir: “O primeiro computador programável, a Máquina Analítica de Babbage, construída nos anos 1840, tinha a capacidade de reutilizar coleções de cartões de instrução em vários lugares diferentes de um programa.” SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018. Em uma linguagem de programação moderna, não existe tal conceito. essas coleções correspondem a objetos. essas coleções correspondem a subprogramas. essas coleções não devem possuir estado. essas coleções devem executar de maneira concorrente. Alternativa correta, pois a ideia de se reutilizar blocos de instruções é implementada por subprogramas, blocos de código que podem ser “chamados” pelo programa principal ou por outros subprogramas. Eles podem ser conhecidos por funções, métodos, rotinas, sub-rotinas ou procedimentos, dependendo da linguagem e do contexto. Pontuação do teste: 6 de 6 A+ A A-
Compartilhar