Baixe o app para aproveitar ainda mais
Prévia do material em texto
23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 1/17 AO2 Entrega 27 mar em 23:59 Pontos 6 Perguntas 10 Disponível 23 mar em 0:00 - 27 mar em 23:59 5 dias Limite de tempo Nenhum Instruções Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 14 minutos 6 de 6 As respostas corretas estarão disponíveis em 28 mar em 0:00. Pontuação deste teste: 6 de 6 Enviado 23 mar em 21:41 Esta tentativa levou 14 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: Variáveis são um dos elementos fundamentais de qualquer linguagem de programação. É utilizando variáveis que os dados são recebidos e trabalhados ao longo de um programa, assim como são armazenados ou apresentados ao término de tal programa. Cada linguagem possui suas próprias regras para a criação e utilização de variáveis. Uma variável é uma posição de memória, utilizada para guardar um valor que pode ser acessado e modificado pelo programa. Em linguagem C toda variável deve ser declarada antes de ser utilizada. https://famonline.instructure.com/courses/22779/quizzes/99524/history?version=1 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 2/17 Alternativa correta, pois em linguagem C toda variável deve ser declarada antes de ser utilizada. ter letras maiúsculas em seu nome. receber valores dos argumentos das funções. ser definida fora de todas as funções. possuir conteúdo numérico. 0,6 / 0,6 ptsPergunta 2 Leia o trecho abaixo: A linguagem C oferece estruturas para o controle do fluxo de execução de um programa. Assim, pode-se alterar a simples execução sequencial dos comandos. Dentre as estruturas de controle de fluxo, temos os comandos condicionais. Além dos comandos condicionais, a linguagem C também oferece estruturas que permitem repetir um bloco de comandos. Essas estruturas são conhecidas como comandos de repetição. A parte do programa que é executada várias vezes em um comando de repetição é chamada de laço de repetição. Considerando esse contexto, avalie as seguintes asserções e a relação proposta entre elas. I. O comando while é frequentemente utilizado quando não se conhece, a priori, quanta vezes o laço de repetição será executado, mas se sabe que o laço será executado pelo menos uma vez. O comando while deve ser utilizado quando a execução do laço de repetição não for opcional. PORQUE 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 3/17 II. O do-while é um comando de repetição que, primeiramente, testa o seu critério de continuação e somente depois, dependendo do resultado, prossegue na execução do laço de repetição. A respeito dessas asserções, assinale a opção correta: As asserções I e II são proposições verdadeiras, mas a asserção II não é uma justificativa correta da I. A asserção I é uma proposição falsa, e a asserção II é uma proposição verdadeira. A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa. As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa correta da I. As asserções I e II são ambas proposições falsas. A alternativa está correta. A asserção I é uma proposição falsa porque o while é um comando de repetição que, primeiramente, testa o seu critério de continuação e somente depois, dependendo do resultado, prossegue na execução do laço de repetição; ele deve ser usado somente quando o laço de repetição for opcional. A asserção II é uma proposição falsa porque o do-while é um comando de repetição que, primeiramente, executa o laço de repetição e, em seguida, testa o seu critério de continuação para determinar se executa novamente o laço de repetição. 0,6 / 0,6 ptsPergunta 3 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 4/17 Leia o texto a seguir: Uma variável é uma posição nomeada de memória usada para guardar um valor que pode ser modificado pelo programa. Na linguagem C, todas as variáveis devem ser declaradas antes de serem usadas. As variáveis declaradas dentro de uma função (dentro do bloco de código) são chamadas de variáveis locais. Um bloco de código inicia- se com o caractere abre-chaves ({) e termina em fecha-chaves (}). Ao contrário das locais, as variáveis globais são reconhecidas pelo programa inteiro e podem ser usadas em qualquer ponto, ou seja, por todas as funções. Essas variáveis podem preservar seus valores durante todo o processamento do programa, valores que também podem ser alterados por qualquer comando específico de atribuição de valores localizados em qualquer parte do programa. (Fonte: SCHILDT, H. C Completo e Total. São Paulo: Makron Books, 2006). Com base nos dados acima, avalie as seguintes asserções e a relação proposta entre elas. I. Em um código C, podemos ter variáveis declaradas dentro de diferentes funções com o mesmo nome, e seus valores em memória são preservados, podendo ser alterados somente pela função que a criou. PORQUE II. Em linguagem C, as variáveis declaradas fora de todos os blocos (no início do programa) somente podem ser acessadas pela função main(), porque esta é a função principal do programa. A respeito das asserções, assinale a opção correta: 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 5/17 A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa. Alternativa A Alternativa está correta. A asserção I é uma proposição verdadeira, visto que variáveis locais só podem ser referenciadas por comando que estão dentro do bloco no qual as variáveis foram declaradas. Pelo princípio da variável local, ela somente pode ser visível pela função que a criou, ou seja, embora as variáveis distintas sejam homônimas, elas não são visíveis no programa inteiro. A asserção II é uma proposição falsa, pois as variáveis criadas fora de todas as funções que fazem parte do programa são variáveis globais; e como tal são reconhecidas pelo programa inteiro, podendo ser usadas em qualquer ponto do programa, e não somente pela função main(). A asserção I é uma proposição falsa, e a asserção II é uma proposição verdadeira. As asserções I e II são proposições verdadeiras, mas a asserção II não é uma justificativa da I. As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa da I. As asserções I e II são ambas proposições falsas. 0,6 / 0,6 ptsPergunta 4 Leia o trecho a seguir: 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 6/17 A construção de software não é uma tarefa simples. Por isso, está sujeita a diversos tipos de problema que acabam resultando na obtenção de um produto diferente daquele que se espera. Para que os erros de software sejam descobertos antes de o software ser liberado para utilização, existe uma série de atividades chamadas de validação, verificação e teste, com a finalidade de garantir que tanto o modo pelo qual o software está sendo construído quanto o produto em si estejam em conformidade com o especificado. (Fonte: DELAMARO, M. E.; MALDONADO, J. C.; JINO, M. Introdução ao teste de software. Rio de Janeiro: Campos/Elsevier, 2007). Considerando as informações apresentadas, avalie as afirmações a seguir: I. A única forma de testar um algoritmo é testá-lo após a codificação em uma linguagem de programação, com isso, podemos entrar com os dados. Os resultados finais mostram o comportamento exato do algoritmo nos vários cenários de teste. II. Um sistema é composto por um conjunto de programas, sendoque cada qual possui um objetivo específico, mas que são todos voltados para resolver um problema maior. Por isso, fazer testes unitários não contribui para o teste de um sistema. Somente um teste amplo é capaz de mostrar pontos falhos no todo. III. Ao término da elaboração do algoritmo, o programador deve buscar formas de verificar se está funcionando corretamente. Uma forma eficaz de utilizar uma técnica com a qual possa identificar todas as variáveis manipuladas no algoritmo, verificar todas as condições (requisitos) necessárias para solucionar o problema, dispositivos de entrada e saída, e pontos que demonstrem o comportamento do programa. É correto o que se afirma em: I, apenas. I e II, apenas III, apenas. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 7/17 Alternativa A Alternativa está correta. A afirmativa I é falsa, uma vez que existe outra forma de testar um programa antes de sua codificação. Para esse fim, temos o teste de mesa, que verifica em tempo de algoritmo codificado em pseudolinguagem ou fluxograma. Assim, não há necessidade de o computador fazer o teste de mesa, o qual pode ser feito com a utilização somente de lápis e papel. A afirmativa II é falsa por afirmar que testes unitários não contribuem para o teste de sistema. Se um sistema é composto de vários programas, então o teste unitário contribui muito para o teste de sistema, pois este está voltado para a verificação de um resultado amplo; já o teste unitário busca a verificação muito próxima de cada linha codificada no programa. A afirmativa III é verdadeira. Após produzir o algoritmo, o programador deve verificar se este está funcionando corretamente, ou seja, se está fazendo o que foi pedido. Por isso, existe uma técnica eficaz, chamada teste de mesa, a qual facilita o entendimento do fluxo de execução do algoritmo e permite identificar erros de lógica na construção do algoritmo. Esta técnica é composta por um instrumento que reúne todas as variáveis envolvidas no algoritmo e todas as condições que o programa deve prever. Nessa técnica, também é possível que se planejem vários cenários a se testar. Portanto, a alternativa correta é III, apenas. I e III, apenas. II e III, apenas. 0,6 / 0,6 ptsPergunta 5 Leia o texto a seguir: O que é uma variável? Variável é um local reservado na memória para armazenar um tipo de dado. Toda variável deve ter um identificador, ou seja, um nome. Além de ter um nome, a variável também precisa ter um tipo. O tipo de dado de 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 8/17 uma variável determina o que ela é capaz de armazenar. Tipos de dados Existem diversos tipos de dados que podem ser usados nas variáveis. Cada tipo de dado é específico para armazenar um determinado formato de dado. Podemos dizer que os principais tipos de dados numéricos se dividem em: Inteiro: armazena números inteiros Real: armazena números com casas decimais, são as variáveis de ponto flutuante; O tipo de dado caracter é capaz de representar um caracter ou um conjunto de caracteres (letras, dígitos ou símbolos). Fonte: CASAVELLA, E. Variáveis em Linguagem C. Disponível em: http://linguagemc.com.br/variaveis-em-linguagem-c/ (http://linguagemc.com.br/variaveis-em-linguagem-c/) . Acesso em: 05 de abril de 2021. O tipo de dados float refere-se também aos dados do tipo inteiro. local. real com precisão dupla. real com precisão simples. http://linguagemc.com.br/variaveis-em-linguagem-c/ 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 9/17 Alternativa correta. O tipo de dado chamado de float em linguagem C representa os números reais. Caracteres são representados pelo char. Números inteiros são representados pelo int. Números reais com precisão dupla são representados pelo double. Local não é um tipo de dado. caractere. 0,6 / 0,6 ptsPergunta 6 Leia o texto a seguir: Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação. Um exemplo de pseudocódigo é o Portugol. É uma linguagem de programação genérica e rica em detalhes. É um tipo de linguagem chamada de linguagem de projeto de programação. Essa pseudolinguagem assemelha-se bastante à forma como os programas são escritos. A diferença entre a descrição narrativa e o pseudocódigo está principalmente no vocabulário finito e bem menor do pseudocódigo e nas estruturas de controle que apresenta. A utilização de uma gama menor de termos facilita a expressão do raciocínio lógico na medida em que reduz a possibilidade de mal entendimento das instruções. Fonte: https://pt.wikipedia.org/wiki/Pseudoc%C3%B3digo (https://pt.wikipedia.org/wiki/Pseudoc%C3%B3digo) Acesso em: 13/10/2020. https://pt.wikipedia.org/wiki/Pseudoc%C3%B3digo 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 10/17 A psedolinguagem conta com alguns elementos conforme ilustração a seguir: Assinale a opção correta abaixo que apresenta os elementos da pseudolinguagem Portugol. Estrutura do algoritmo, identificação do programa, área para definição das variáveis a serem utilizadas no algoritmo, lógica a ser desenvolvida no algoritmo. Identificação do programa, área de definição de variáveis, onde constam os campos numéricos, alfanuméricos, ou outros tipos que serão utilizados no algoritmo, área onde se desenvolve a lógica, utilizando-se dos operadores lógicos, relacionais e aritméticos. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 11/17 Alternativa correta. Os elementos da pseudolinguagem são: sua estrutura, que é composta por identificação do programa, área para definição das variáveis a serem utilizadas no algoritmo e lógica a ser desenvolvida no algoritmo. Na área de definição de variáveis é onde serão definidos os diversos tipos de campos, numéricos, alfanuméricos, caractere, e lógicos. Já na área onde será desenvolvida a lógica, serão utilizados os operadores lógicos “e” e “ou”, os relacionais (>, <, =, >=, <=, <>) e os aritméticos (+, -, *, /, %). Espaço de memória acessado por meio de endereço, que pode conter dados fixos ou variáveis. Quando fixos são chamados constantes e quando variáveis são chamados de variável. Identificação do programa, área de definição de constantes, onde constam os campos numéricos, alfanuméricos, ou outros tipos que serão utilizados no algoritmo, área onde se desenvolve a lógica, utilizando-se dos operadores cartesianos. Estrutura do algoritmo, que se divide em partes menores, e mais facilmente tratáveis, que podem ser classificados como procedimentos ou funções, sendo que as funções trabalham com valores recebidos por meio de argumentos. 0,6 / 0,6 ptsPergunta 7 Observe o código a seguir: #include <stdio.h> #include <locale.h> int main() { 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 12/17 setlocale(LC_ALL, "Portuguese"); int temp, cont; int vetor_prova[10] = {9,8,7,6,5,4,3,2,1,0}; while (cont < 10) { temp = vetor_prova[cont]; vetor_prova[cont] = vetor_prova[9-cont]; vetor_prova[9-cont] = temp; cont = cont + 1; } for (cont = 0; cont <=9; cont++) { printf ("posição %d é igual a %d \n", cont, vetor_prova[cont]); } return 0; } Considerando o código apresentado acima, assinale a alternativa correta sobre qual será o conteúdo do vetor chamado vet_prova ao fim da execução do programa. 0, 2, 4, 6, 8. 0, 2, 4, 6, 8, 1, 3, 5, 7, 9. 1, 3, 5,7, 9. 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 13/17 Alternativa correta. Um vetor foi criado no programa e já recebeu os valores 9,8,7,6,5,4,3,2,1,0 como seu conteúdo. Então, um while é executado 10 vezes, e em cada uma dessas execuções, o conteúdo existente no vetor foi invertido de posição, até que no fim do processo, ele tem todos os valores invertidos, ficando 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 0,6 / 0,6 ptsPergunta 8 Leia o texto abaixo: As matrizes bidimensionais costumam ser utilizadas para representar tabelas de valores, consistindo em informações organizadas em linhas e colunas. Para identificar um elemento particular da tabela, devemos especificar os subscritos. As matrizes bidimensionais são compostas por m linhas e n colunas, e são chamadas de matrizes m por n, e estes elementos m e n determinam o tamanho da matriz. Cada elemento da matriz bidimensional é identificado (acessado) por um nome de elemento seguido dos subscritores que identificam sua localização na matriz. (Fonte: DEITEL, H. M.; DEITEL, P. J. C++: Como Programar. 5. ed. São Paulo: Pearson Prentice Hall, 2006. p. 279). Considerando as informações apresentadas, avalie as afirmações a seguir: I. Suponha uma declaração de uma matriz bidimensional (linguagem C): “int qtd[4][3];”. Com isso, o comando “printf("\n qtd %d = ", qtd[1 [5]);” possui um erro conceitual referente à manipulação de matrizes. II. Para acessar os dados de uma matriz bidimensional, utilizamos os índices i e j, que correspondem respectivamente à referência de colunas e linhas da matriz. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 14/17 III. Para percorrer todas as linhas e colunas de uma matriz, é recomendado o laço de repetição for. Está correto o que se afirma em: I e II, apenas. III, apenas. I, II e III. I e III, apenas. Alternativa A Alternativa está correta. A afirmativa I é verdadeira porque conceitualmente o acesso a uma tabela bidimensional tem a seguinte regra: Os valores dos indexadores estão limitados ao tamanho da matriz, ou seja, o tamanho de uma matriz bidimensional é dado pelos valores declarados para a linha e a coluna (i e j respectivamente). No caso do comando print..., ele manipulando a coluna [5], porém na declaração o valor máximo é [3]. A afirmativa II é falsa porque, para acessar os dados de uma matriz bidimensional, utilizamos índices i e j que correspondem respectivamente à referência de linhas e colunas da matriz. A afirmativa III é verdadeira porque, por definição, o laço de repetição for é recomendado quando o número de repetições é controlado por uma variável de valor conhecido. Uma matriz é definida como sendo uma área de tamanho definido em linhas e colunas. O laço de repetição for é então o paradigma de laço de repetição ideal para percorrer uma matriz bidimensional. Logo, a alternativa correta é I e III, apenas. I, apenas. 0,6 / 0,6 ptsPergunta 9 Leia o trecho abaixo: 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 15/17 Em um programa de computador, as instruções são executas em uma sequência, partindo-se da primeira instrução do algoritmo e, pelo fato de não haver desvios (condições e laços de repetição), segue gravitacionalmente até alcançar a última instrução da sequência. Para que o fluxo seja interrompido, utilizam-se recursos imperativos, como o comando goto, também conhecido por comando de interrupção abrupta, ou comando de chamada de função, além de alguma estrutura de repetição ou por estrutura de decisão. Os comandos de controle automático de fluxo (while, for, do-while) são comandos que proporcionam ao programador uma forma segura de condução do fluxo natural do programa, enquanto o comando goto atribui ao programador este controle. A partir dessas informações, avalie as afirmações a seguir: I. Uma boa prática de programação é a utilização de quantos comandos goto forem necessários para controlar o fluxo do programa. Isso evidencia também que o programador é muito habilidoso na manipulação dos comandos que controlam o fluxo de execução dos programas. II. O comando return é utilizado quando a função necessita retornar ao ponto de onde ela foi chamada. Esse comando retorna um valor ou pode não retornar valor, ou seja, quando a função não tiver um valor associado a ela (void). III. O comando break é utilizado quando o programador necessita encerrar a execução do programa imediatamente. É correto o que se afirma em: I, II e III. II, apenas. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 16/17 Alternativa está correta. A afirmativa I é falsa porque o comando goto é um recurso que deve ser evitado na lógica de programação, posto que ele possibilita que o fluxo normal da lógica seja interrompido, e isso propicia muitas oportunidades de erros de lógica. Não se coloca em dúvida a habilidade de quem o usa, porém, partindo-se do princípio de que programas são passíveis de manutenção, o comando goto dificulta o entendimento da lógica e potencializa os riscos de surgimento de bugs. A afirmativa II é verdadeira porque o comando return é utilizado para retornar à função chamada para o ponto que a chamou. Trata-se de um desvio porque faz com que a execução retorne ao ponto onde a chamada da função foi feita. Sua sintaxe é return expressão. A “expressão” é opcional, caso a função chamada não tiver um valor associado a ela (void). A afirmativa III é falsa porque a função break não encerra o programa, mas: i) Terminar um case (Comando switch); ii) Forçar o fim de um laço de repetição (for, while ou do-while). O comando que encerra um programa é o exit(). Logo, a alternativa correta é II, apenas. I e II, apenas. I, apenas. III, apenas. 0,6 / 0,6 ptsPergunta 10 Leia o texto a seguir: Toda linguagem de programação possui três aspectos que um programador, ao fazer uso de uma dada linguagem, deve ter pleno domínio: aspectos lexicais, sintáticos e semânticos. Os lexicais dizem respeito ao conjunto de palavras que o programa reconhece (dicionário), o que vale tanto para variáveis, comandos e identificadores. Os sintáticos referem-se à estrutura de cada comando, ou seja, a sintaxe do comando. Os semânticos estão relacionados com a manipulação dos dados e seus respectivos tipos. 23/03/2022 21:43 AO2: Algoritmos e Lógica de Programação https://famonline.instructure.com/courses/22779/quizzes/99524 17/17 Do ponto de vista léxico, existem linguagens de programação que possuem regras muitos específicas para a identificação de seus vários identificadores (variáveis, comandos, labels etc.). Qual é o termo que designa uma linguagem que diferencia letras maiúsculas de letras minúsculas na codificação dos comandos e atribuição de identificadores (variáveis, nomes de funções e labels)? Palavra Reservada. IDE. Eclipse. Case Sensitive. Alternativa A Alternativa está correta, pois case sensitive é um termo da Língua Inglesa, incorporado aos termos das linguagens de programação, que designa uma linguagem de programação que faz a diferenciação entre letras minúsculas e maiúsculas na escrita. Esse ponto é muito importante, pois faz referência a variáveis homônimas escritas de formas diferentes (por exemplo, a variável contador é diferente da variável Contador) e que podem produzir erros de lógica. Expressões. Pontuação do teste: 6 de 6
Compartilhar