Os dispositivos de entrada e saída são fundamentais para que um sistema de computador tenha comunicação com o exterior. Os dados são inseridos no sistema a partir de um dispositivo de entrada, para que haja algum resultado (saída). Considerando as definições dos dispositivos de entrada e saída, analise as afirmativas a seguir e assinale (V) para a(s) Verdadeira(s) e (F) para a(s) Falsa(s). I. ( ) A unidade flash USB recebe ou salva os dados de um computador (entrada). Além disso, envia dados para um computador ou outro dispositivo (saída). Por isso, é um dispositivo de entrada e saída. II. ( ) Um modem é um dispositivo que conecta dois computadores a uma linha telefônica, convertendo os dados do computador em um sinal de televisão e vice-versa. É um dispositivo de entrada. III. ( ) As máquinas de fax são comumente usadas em escritórios para enviar e receber um fax. Um fax pode ser armazenado em formato eletrônico em um computador. Por isso, é um dispositivo de entrada e saída. As afirmativas I, II e III são, respectivamente:
O hardware do computador diz respeito às partes físicas de um computador e aos dispositivos relacionados. As partes internas do hardware são frequentemente chamadas de componentes. Elas abrangem os mecanismos invisíveis a olho nu e que conectam os sistemas internos dos dispositivos. Já as partes externas são chamadas de periféricos. Considerando as definições dos dispositivos de entrada e saída, analise as afirmativas a seguir e assinale (V) para a(s) Verdadeira(s) e (F) para a(s) Falsa(s). I. ( ) Um dispositivo de entrada permite que o usuário interaja diretamente com um computador, já que fornece dados e instruções ao computador. II. ( ) Um dispositivo de entrada é qualquer dispositivo que recebe os dados armazenados em um computador e os disponibiliza ao usuário de maneira fácil de entender. III. ( ) Todo software de computador é construído com uma representação visual de dados. Logo, o monitor é um dos dispositivos de saída mais importantes para qualquer computador. As afirmativas I, II e III são, respectivamente:
O arranjo redundante de discos independentes, também conhecido como RAI D ( Redundant Array of Independent Disks ), é uma tecnologia desenvolvida para aumentar o desempenho, assim como a confiabilidade dos dados armazenados. Fonte: Adaptado de CORRÊA, A. Organização e Arquitetura de Computadores. 1. ed. Pearson, 2016, p. 145. Com relação às características envolvendo o RAID, representado na imagem acima, avalie as afirmativas a seguir: I. Na imagem, a letra A representa o RAID nível 0. II. Na imagem, a letra B representa o RAID nível 3. III. Na imagem, a letra C representa o RAID nível 2. Está correto o que se afirma em:
Além dos dispositivos de armazenamento, os dispositivos de memória também tiveram a capacidade aumentada devido aos maiores requerimentos de uso em diversas aplicações, tais como jogos, modelagem, Big Data e machine learning . Com base nos conhecimentos adquiridos sobre os dispositivos de armazenamento, assinale a alternativa que indica corretamente o tipo de memória classificada como não volátil.
Para obter mais aceleração, o pipeline deve ter mais estágios, realizando a decomposição do processamento da instrução. Os vários estágios têm duração aproximadamente igual. Fonte: Adaptado de STALLINGS, W. Arquitetura e Organização de Computadores. 10. ed. Pearson, 2017, p. 366. Com relação aos estágios do pipeline , a imagem acima apresenta um fluxograma que inicia-se com FI, representando a busca pela instrução, e vai até as atividades seguintes. Sendo assim, é possível dizer que a atividade representada pela letra C corresponde a: Assinale a alternativa correta.
Considerando os sistemas de troca de mensagens com dois ou mais processos, caracterizados pela execução independente um do outro, há duas primitivas de troca de mensagens chamadas de biblioteca: a SEND e a RECEIVE. Com base nos tipos de variantes principais da semântica dos sistemas de troca de mensagens, analise as afirmativas a seguir. I. Uma das variantes principais dos sistemas de troca de mensagens é a troca síncrona de mensagens. II. Uma das variantes principais dos sistemas de troca de mensagens é a troca de mensagens por buffers . III. Uma das variantes principais dos sistemas de troca de mensagens é a troca de mensagens sem bloqueio. É correto o que se afirma em:
No sistema de computação paralelo, as Unidades Centrais de Processamento ( CPUs) trocam informações. Para compartilhar dados entre as distintas partes de uma mesma função, existem dois projetos: multiprocessadores e multicomputadores. Assinale a alternativa que exibe corretamente a diferença fundamental entre os dois projetos.
A topologia de uma rede de interconexão descreve como os enlaces e os computadores são organizados e como os projetos topológicos podem ser modelados. Fonte: Adaptado de CORRÊA, A. Organização e Arquitetura de Computadores. 1. ed. Pearson, 2016, p. 175. Assinale a alternativa correta que melhor descreve a topologia que a imagem acima representa:
O acesso não uniforme à memória, ou NUMA, representa um método de configuração de um cluster de microprocessadores em um sistema de multiprocessamento, para que eles possam compartilhar memória localmente. Em relação às máquinas NUMA, analise as afirmativas a seguir. Cada computador tem acesso ao mesmo espaço de endereço e é endereçado de forma singular. Para acessar a memória remota, são utilizadas as instruções denominadas LOAD e STORE. Existe maior rapidez em termos de acesso às memórias remotas do que às memórias locais. É correto o que se afirma em:
A topologia descreve a relação de interconexão de uma rede com os enlaces dos computadores. Dessa forma, os projetos topológicos são modelados como grafos. Eles têm os enlaces, que são representados por arcos, enquanto os switches , que são simbolizados por nós, apresentam diferentes topologias. Dois principais tipos de topologias são exibidos a seguir. Fonte: Elaborado pelo autor Considerando as figuras apresentadas, assinale a alternativa que exibe corretamente a nomenclatura e a respectiva definição
Os multiprocessadores UMA de um único barramento são limitados a não mais do que algumas dezenas de Unidades Centrais de Processamento (CPUs). Consequentemente, o acesso simultâneo aos módulos de memória é rejeitado. Nesse contexto, o surgimento dos multiprocessadores NUMA, do inglês, NonUniform Memory Access, determinou o acesso não uniforme à memória. Considerando a temática, analise as afirmativas a seguir. I. Os multiprocessadores UMA de um único barramento são limitados a não mais do que algumas dezenas de CPUs. II. Os multiprocessadores NUMA (NonUniform Memory Access) têm acesso não uniforme à memória. III. Os multiprocessadores NUMA têm acesso mais lento a módulos de memória locais do que a módulos remotos. É correto o que se afirma em:
Os processos de desenvolvimento de “ software dirigidos por planos que especificam completamente os requisitos e depois projetam, constroem e testam um sistema não são voltados para o desenvolvimento rápido de software . À medida que os requisitos mudam ou que problemas de requisitos são descobertos, o projeto ou a implementação do sistema precisam ser retrabalhados e testados novamente. Como consequência, um processo convencional em cascata ou baseado em especificação normalmente é demorado e o software final é entregue ao cliente muito depois do prazo originalmente estipulado” (SOMMERVILLE, 2019, p. 58). SOMMERVILLE, I. Engenharia de software . 10. ed. São Paulo: Pearson, 2019. Baseando-se no conceito de desenvolvimento ágil, analise as asserções a seguir e a relação proposta entre elas. I. O sistema é desenvolvido numa série de entregas em que usuários finais e clientes em geral são incluídos em desenvolvimento e avaliação de cada uma. POIS II. As abordagens ágeis de desenvolvimento de software apontam projeto, comunicação e implementação como as principais atividades no processo de software . A respeito dessas asserções, assinale a alternativa correta.
Leia o trecho a seguir, retirado da obra de SOMMERVILLE, chamada Engenharia de Software : “Na prática, a aplicação da Programação Extrema como proposta originalmente se provou mais difícil do que o previsto. Na XP os requisitos são expressos em cenários (chamados de histórias do usuário) implementados diretamente como uma série de tarefas. Os programadores trabalham em pares e desenvolvem testes para cada tarefa antes de escreverem o código. Todos os testes devem ser executados com sucesso quando o novo código é integrado ao sistema, já que há um curto intervalo de tempo entre os lançamentos ( releases ) do sistema.” (SOMMERVILLE, 2019, p. 62) Fonte: SOMMERVILLE, I. Engenharia de software . 10. ed. São Paulo: Pearson, 2019. p. 62. Com base na prática chamada de programação extrema, associe os conceitos a seguir com as respectivas descrições mais adiante. (1) Integração contínua. (2) Programação em pares. (3) Lançamentos pequenos. (4) Refatoração. (5) Propriedade coletiva. I. Os pares de desenvolvedores trabalham em todas as áreas do sistema, de modo que não se desenvolvam “ilhas de conhecimento” e todos assumam a responsabilidade por todo código. II. Assim que o trabalho numa tarefa é completo, é integrado ao sistema completo. Após qualquer integração desse tipo, todos os testes de unidade do sistema devem ter sucesso. III. Esse processo deve ser feito por todos os desenvolvedores no código de forma contínua, logo sejam encontradas possíveis melhorias para ele. Isso mantém o código simples e de fácil manutenção. IV. Forma de trabalho da equipe de desenvolvimento cujo objetivo é realizar a conferência de trabalhos de modo geral entre os próprios membros da equipe, oferecendo apoio para um resultado sempre satisfatório. V. Relacionado à maneira por meio da qual sistemas são disponíveis, a fim de agregar valor ao negócio, desenvolvido em primeiro lugar. É necessária uma frequência que acrescente funcionalidades à primeira versão de forma incremental. A sequência correta, de cima para baixo, da associação entre item e descrição é:
De acordo com Maxim e Pressman (2016), uma metodologia de processo cria a base para um processo de engenharia de software completo, por meio da identificação de um pequeno número de atividades metodológicas aplicáveis a todos os projetos de software , independentemente de tamanho ou complexidade. PRESSMAN, R. S; MAXIM, B. R. Engenharia de software : uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. Avalie as afirmações a seguir, em relação às cinco atividades genéricas de uma metodologia de processo, e as relacione adequadamente aos termos às quais se referem. 1 – Entrega. 2 – Construção. 3 – Modelagem. 4 – Planejamento. 5 – Comunicação. Compreende os objetivos dos envolvidos e define o escopo e os recursos do projeto. Esboça e prototipa, para que todos os envolvidos no projeto entendam melhor as necessidades do software a ser desenvolvido. É avaliada pelo cliente que analisa o que foi apresentado em relação ao escopo definido e acertado entre os envolvidos, sendo que após essa análise, o cliente deve retornar o aceite ou não. Define um mapa que guia a equipe do projeto, descrevendo tarefas, riscos e recursos. Engloba os testes que são realizados pela equipe do projeto antes de apresentar para o cliente. Assinale a alternativa que correlaciona adequadamente os dois grupos de informação:
O papel do gerente de projeto envolve planejamento, monitoramento e controle de pessoas e processos que ocorrem conforme evolui o desenvolvimento do software (produto). Além disso estabelece objetivos do projeto e busca, por meio de ambiente propício e equipe motivada, alcançá-los dentro de prazo e custo previamente estabelecidos. É responsável, ainda, por intermediar a comunicação, buscando sempre proteger a equipe e mantê-la unida, como um verdadeiro time. Considerando o apresentado, avalie as afirmações a seguir. I. O gerente de projeto de software reúne os recursos e desenho relacionado a todo o projeto, onde serão definidos escopo, recursos necessários, cronograma, procedimento para execução etc. II. A pessoa que gerencia projetos de software supervisionará a execução bem-sucedida de cada etapa do projeto, incluindo monitoramento de progresso, realização de check-ins frequentes de equipe e criação de relatórios. III. Os gerentes de projeto podem usar uma variedade de ferramentas e métodos para planejar projetos, desenvolvendo uma compreensão clara dos objetivos do projeto e identificando as etapas para atingi-los. IV. O gerenciamento de projetos de software incentiva o teste constante do produto para descobrir e corrigir erros com antecedência, ajustar o produto final às necessidades do cliente e manter o projeto no alvo. Está correto o que se afirma em:
O estágio de implementação no desenvolvimento de software “é o processo de elaborar um sistema executável para ser entregue ao cliente” (SOMERVILLE, 2019, p. 41). Por vezes envolve diferentes atividades, nomeadamente projeto ( design ) e programação de software . No entanto, “com as metodologias de desenvolvimento ágil, o design e a implementação são intercalados, e nenhuma documentação de design formal é produzida durante o processo. É claro que o software ainda é projetado, mas o design é documentado informalmente em um quadro branco ou em anotações feitas pelos programadores” (SOMERVILLE, 2019, p. 41). SOMMERVILLE, I. Engenharia de software . 10. ed. São Paulo: Pearson, 2019. Considerando o apresentado, avalie as asserções a seguir e a relação proposta entre elas. I. O planejamento do projeto de software é uma tarefa realizada antes do início da produção do software , ajudando na produção de software , mas não envolvendo nenhuma atividade concreta que tenha qualquer ligação direta com a produção de software . POIS II. O planejamento do projeto de software é um conjunto de múltiplos processos (o que facilita a produção de software ) cujas atividades em processos de projeto variam, dependendo do tipo de sistema que está sendo desenvolvido. Com base nas asserções e em sua aplicabilidade no desenvolvimento de software , marque a alternativa correta.
O software é uma sequência de instruções escritas para serem interpretadas por um computador, com o objetivo de executar tarefas específicas. É a parte lógica de sistemas computacionais que utilizam os recursos de hardware por meio de suas instruções. Nas mais variadas situações da vida, os softwares estão lá, como em prontuários eletrônicos que registram a vida clínica de pacientes, ou em um sistema de organização do mapa de localização de produtos em um centro de distribuição logístico. Assinale qual das alternativas abaixo apresenta a composição de um software :
De acordo com Sommerville (2019, p. 31), os modelos genéricos de processos de software “são descrições mais gerais e abstratas dos processos de software , e podem ser utilizados para explicar as diferentes abordagens ao desenvolvimento de software . Você pode encará-los como estruturas de processo que podem ser ampliadas e adaptadas para criar processos de engenharia de software mais específicos”. Fonte: SOMMERVILLE, I. Engenharia de software . 10. ed. São Paulo: Pearson, 2019. Sobre os modelos genéricos, analise as afirmações a seguir. I. O modelo clássico em cascata divide o ciclo de vida num conjunto de fases que considera que cada uma só pode ser iniciada após a conclusão da fase anterior. II. O desenvolvimento incremental interpõe atividades baseadas em especificação, desenvolvimento e avaliação de software , com uma série de versões a serem entregues. III. A metodologia ágil é uma estrutura de gerenciamento de projetos que divide os projetos em várias fases dinâmicas, comumente conhecidas como sprints , concentrando-se na comunicação com o usuário. IV. Integração e configuração representam os requisitos de gerenciamento do software , o ambiente em que será utilizado e o tipo de software que a equipe responsável está desenvolvendo. Está correto o que se afirma em:
Com a chegada do HTML 5, novos tipos de campos foram disponibilizados para certificar que o usuário digite a informação solicitada. Há campos que verificam automaticamente se o valor é uma data, hora, e-mail , número etc. Entretanto nem todos os navegadores os implementam, o que torna necessária uma validação mais específica. Observe um trecho de código: Fonte: Elaborada pelo autor. A partir da análise do código e de suas funcionalidades, julgue as afirmativas a seguir. I. O código não funcionará, pois JavaScript necessita ser carregado através de um arquivo separado com a extensão .js. II. Nesse caso, se o usuário digitar um caractere de espaço e pressionar enter , a chamada será realizada normalmente. III. O código executará com erro caso a página requisitada na expressão action não exista ou esteja em pasta diferente da chamada. IV. O alert será exibido no momento em que o usuário terminar de digitar uma expressão inválida no campo de busca. Está correto que se afirma em:
Conforme Zabot e Matos (2020), o JavaScript e, consequentemente, o jQuery interagem com os elementos HTML por meio de eventos que acontecem em diferentes situações: um click em um botão, o movimento de passar com o mouse sobre um elemento da página, a pressão do dedo sobre a tela de um dispositivo touch e quando o navegador termina de carregar a página web . Sobre o uso de jQuery/JavaScript, analise o código abaixo: 1. $('#box87').on('click', fx) 2. function fx(event){ 3. $('#box87').css('width', 400) 4. } Assinale a alternativa que descreve o resultado CORRETO.
Os eventos são ações realizadas dentro de uma página HTML e, por esse motivo, são vinculados às tags HTML. Dependendo da ação, o evento pode ou não ser chamado. Há eventos realizados com o mouse , outros, com o teclado, e, ainda, outros, vinculados a objetos. Observe a seguinte codificação: Fonte: Elaborada pelo autor. Baseando-se em funcionalidade de eventos, a alternativa que contém a linha com a função ligada a evento e sua descrição correta é:
JavaScript, uma das linguagens mais populares da web , se caracteriza por ter tipagem dinâmica, ser baseada em objetos e orientada a eventos (p. ex., movimentos do mouse , pressionar botão, arrastar e soltar etc.) e realizar avaliação em tempo de execução. Ela é padronizada pela ECMA International (European Computer Manufacturers Association) nas especificações ECMA-2623 e é baseada em ECMA Script. Observe o seguinte código em JavaScript: Fonte: Adaptada de Miletto e Bertagnolli ( 2014, p. 112 ). MILETTO, E. M.; BERTAGNOLLI, S. C. Desenvolvimento de software II : introdução ao desenvolvimento web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. E-book . De acordo com o código, podemos afirmar que os termos “do” e “endereco” são respectivamente:
É intrínseco às tecnologias computacionais e de desenvolvimento de software evoluírem constantemente, de acordo com as necessidades da sociedade. Mas uma das áreas que certamente mudou drasticamente nos últimos 20 anos foi o desenvolvimento para web , pois no começo era apenas HTML puro, com links e caixas de texto piscantes, e atualmente podemos implementar componentes interativos, jogos e sistemas completos para serem usados na palma das mãos, rodando em navegadores ou aplicativos. Considerando essa grande evolução tecnológica, vários perfis profissionais são necessários para o desenvolvimento das soluções web atualmente, em que podemos afirmar que: I. Um profissional que sabe programar interface responsiva e agradável ao usuário para aplicativos Android e iOS, bem como para rodar diretamente nos navegadores de Internet, ( browser ) é um desenvolvedor full-stack PORQUE II. esse é o perfil de desenvolvedor web que sabe trabalhar tanto com aplicativo quanto site , seja no front-end ou back-end . Por isso, é mais generalista e conhece bem os processos de desenvolvimento de software , sistemas de hospedagem, redes, banco de dados, segurança de dados, UX, entre outros conceitos acerca da completude do desenvolvimento web . Analisando as asserções anteriores, conclui-se que:
Segundo Zabot e Matos (2020), para auxiliar na programação de aplicações web , é necessário conhecer linguagens, bibliotecas, frameworks e ferramentas. Uma linguagem é um método padronizado para se comunicar com o computador. É importante distinguir entre linguagem de _______ (tipo HTML), na qual definimos elementos, e linguagem de _______ (tipo JavaScript), utilizada para definir programas. Já _______ é uma coleção de códigos implementados, empregada para facilitar a escrita do código. E framework é _______ que fornece modelos com diferentes funcionalidades já implementadas, que podem ser utilizadas ou não pelo desenvolvedor. ZABOT, D; MATOS, E. Aplicativos com Bootstrap e Angular : como desenvolver apps responsivos. São Paulo: Érica, 2020. Preencha as lacunas escolhendo a alternativa CORRETA:
Replit é um site que disponibiliza ambiente interativo on-line para linguagens de programação. Pode ser utilizado com diferentes linguagens, como JavaScript, C e Python, sem demandar instalação no próprio computador. É ótimo para testar e praticar uma linguagem de programação e possui suporte para HTML, CSS e JavaScript, contando com as possibilidades de organizar uma pasta de trabalho com subpastas e criar arquivos de tipo diferente. Sobre essa e outras ferramentas relacionadas ao desenvolvimento web , avalie as afirmações a seguir. I. JS Bin é uma ferramenta que mostra em tempo real a renderização do código digitado, que fica automaticamente salvo caso o usuário esteja cadastrado. II. O Replit não demanda “implantar” projetos em nenhum serviço: eles estarão instantaneamente disponíveis a você assim que começar a digitar. III. Focando o desenvolvimento web , a ferramenta Replit não possui suporte a linguagens como Java e Python, limitando-se à tríade HTML, CSS e JavaScript. Está correto que se afirma em:
O Google Collaboratory corresponde a um serviço de armazenamento em nuvem, com o objetivo de criar e executar códigos em Python diretamente em um navegador ( browser ) de Internet. Um dos principais benefícios desse serviço é permitir o desenvolvimento de aplicações sem a necessidade da instalação de softwares na máquina, bastando ter uma conta de usuário Google para acessar o ambiente on-line . Assinale a alternativa que apresenta outras vantagens de uso do Google Colab:
Python é uma linguagem de programação de alto nível e multiparadigma, criada por Guido van Rossum em 1989, que permite o desenvolvimento de algoritmos para resolução de problemas por meio de programas computacionais. Assinale a alternativa que apresenta outras características do Python:
As linguagens de programação podem ser implementadas por três métodos gerais: compilação, interpretação pura ou implementação híbrida. Sobre essas implementações, avalie as seguintes afirmações: I. A implementação híbrida é utilizada pela maioria das linguagens de programação de alto nível, como C, COBOL, C++, C# e PHP, pois esse método tem como principal vantagem a execução rápida dos programas. II. A implementação baseada em compilação consiste em programas que são traduzidos para a linguagem de máquina, que pode ser executada diretamente no computador. III. A interpretação pura é de dez a cem vezes mais rápida que programas compilados, pois a decodificação das sentenças em linguagem de máquina não precisa ser traduzida por um compilador. IV. Na implementação híbrida, os programas de linguagens de alto nível são traduzidos para uma linguagem intermediária que facilita a interpretação. É correto afirmar que:
O código em PHP é interpretado no lado do servidor após a requisição de um documento HTML ao qual ele está embutido ou relacionado. Geralmente o PHP, após interpretado, produz um HTML, portanto um navegador não observa um código PHP. Outras linguagens passaram a ser amplamente utilizadas na programação web e na ciência de dados, como Python. Considerando o apresentado, avalie se são (V) verdadeiras ou (F) falsas as afirmativas a seguir. I. ( ) Sintaticamente o PHP é semelhante a JavaScript em sua aparência, em sua natureza de cadeias e tipagem dinâmica de variáveis, além de combinações de elementos JavaScript e Perl. II. ( ) Python fornece suporte a muitos sistemas de gerenciamento de bancos de dados, sendo linguagem útil para construir programas que precisam de acesso web e a bases consistentes. III. ( ) Python é orientada a eventos, procedural, englobando capacidades de padrões Perl com a tratativa de exceções, usando coleta de lixo e removendo elementos desnecessários da memória. IV. ( ) Python inclui suporte para concorrência com suas linhas de execução ( threads ) e suporte para programação de rede com seus soquetes. Tem também mais suporte para programação funcional que outras linguagens de programação não funcionais. Assinale a alternativa que apresenta a sequência correta.
Considerando a genealogia das linguagens de programação de alto nível da figura abaixo (Sebesta, 2018), percebe-se que diversas delas são influenciadas por suas predecessoras, bem como buscam resolver problemáticas existentes nas linguagens anteriores. Fonte: SEBESTA (2018) Referência completa: SEBESTA, R. W. Conceitos de linguagens de programação . Porto Alegre: Bookman, 2018. A partir do que foi apresentado, analise as afirmativas a seguir: I. A linguagem COBOL originou novos conceitos, sendo alguns deles utilizados em outras linguagens posteriores. Por exemplo, foi a primeira linguagem a consentir nomes realmente conotativos, pois permitia nomes longos (até 30 caracteres) e caracteres conectores de palavras (hifens). II. A linguagem BASIC, assim como o COBOL, foi amplamente utilizada nos meios acadêmicos, mas não se tornou popular no uso para microcomputadores, pela dificuldade de aprendizado para iniciantes. III. A linguagem C++ evoluiu a partir da C, com uma série de modificações para melhorar seus recursos imperativos e adicionar construções para dar suporte à programação orientada a objetos. IV. A linguagem JAVA evoluiu a partir da C++, em que foram removidas algumas construções, outras modificadas e adicionadas. O sucesso dessa linguagem foi sem precedentes, pois os programadores gostaram do projeto e passaram a utilizá-lo em larga escala. Está correto o que se afirma em: