Buscar

AO2_ Algoritmos e Lógica de Programação (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 1/16
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 32 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 24 mar em 22:33
Esta tentativa levou 32 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 trecho a seguir:
 
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.
https://famonline.instructure.com/courses/22779/quizzes/99524/history?version=1
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 2/16
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, sendo que 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. 
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 3/16
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 2
Leia o texto a seguir:
 
Na programação estruturada, acredita-se que algumas estruturas
básicas auxiliam o programador a resolver todos os problemas que se
apresentarem. Programas estruturados são executados de forma
gravitacional, contando com estruturas de seleção, de repetição e
desvio.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 4/16
Qual é a estrutura (ou comando) condicional utilizada para escolher
um entre dois comandos alternativos, e que permite o encadeamento
(pode ser aninhado), e escalada?
 Comando switch 
 Comando continue 
 Comando if 
Alternativa correta. O comando de seleção que permite o
encadeamento e a escalada, é o comando if.
 Comando while 
 Comando ? 
0,6 / 0,6 ptsPergunta 3
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.
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)?
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 5/16
 Eclipse. 
 IDE. 
 Expressões. 
 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.
 Palavra Reservada. 
0,6 / 0,6 ptsPergunta 4
Leia o trecho abaixo:
 
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.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 6/16
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 retornaum 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. 
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, apenas. 
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 7/16
 III, apenas. 
 I e II, apenas. 
0,6 / 0,6 ptsPergunta 5
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
 
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:
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 8/16
 
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 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.
 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.
 
A asserção I é uma proposição verdadeira, e a asserção II é uma
proposição falsa.
0,6 / 0,6 ptsPergunta 6
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
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 9/16
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.
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 III, apenas. 
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 10/16
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.
 III, apenas. 
 I e II, apenas. 
 I, II e III. 
 I, apenas. 
0,6 / 0,6 ptsPergunta 7
Leia o texto a seguir:
 
Toda linguagem de programação possui comandos que permitem a
execução repetida de um determinado trecho de código de programa.
Com esse recurso, o programador não precisa duplicar as linhas de
código em virtude da necessidade de executá-las várias vezes. Os
diversos comandos disponíveis são denominados estruturas de
repetição, comumente conhecidas como laços ou loop.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 11/16
(Fonte: ALVES, W. P. Linguagem e Lógica de Programação.
São Paulo: Érica, 2015 - Adaptado).
Posto isso, avalie as afirmações a seguir:
 
I. A utilização das estruturas de repetição “enquanto...faça...” e
“para...de...ate...faça” podem ser utilizadas nos mesmos casos que
necessitem de solução com laço de repetição com a quantidade de
iterações definidas.
II. A utilização do laço de repetição “para...de...ate...faça” é
recomendada para o laço de repetição cujas quantidades de iterações
não são previsíveis.
III. A utilização de laço de repetição “enquanto...faça...” atende
somente a soluções que necessitem de um laço de repetição com a
quantidade de iterações indefinidas.
 
É correto o que se afirma em:
 II e III, apenas. 
 I, apenas. 
Alternativa A
Alternativa está correta. A afirmativa I é verdadeira porque a
estrutura de repetição “enquanto...faça...” pode ser utilizada em
soluçõesque necessitem de um laço de repetição com a
quantidade de interações definidas, pois pode-se controlar a
quantidade de iterações na variável sentinela. A afirmativa II é
falsa, pois a estrutura de repetição “para...de...ate...faça” é
apropriada para soluções que necessitem de um laço de
repetição com a quantidade de iterações definidas, porque o
controle de iterações já faz parte da estrutura do comando. Assim,
as duas estruturas de repetição podem ser utilizadas nos mesmos
casos que necessitem de uma solução com um laço de repetição
com a quantidade de iterações definidas. A afirmativa III é falsa
porque a estrutura de repetição “enquanto...faça...” atende tanto
às soluções que necessitem de um laço de repetição com a
quantidade de iterações indefinidas, quanto às quantidades de
iterações indefinidas. Por isso, a alternativa correta é I, apenas.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 12/16
 I e II, apenas. 
 III, apenas. 
 I, II e III. 
0,6 / 0,6 ptsPergunta 8
Observe o código a seguir:
 
#include <stdio.h>
#include <locale.h>
int main()
{
 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;
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 13/16
}
 
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, 1, 3, 5, 7, 9. 
 1, 3, 5, 7, 9. 
 0, 2, 4, 6, 8. 
 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 
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.
 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. 
0,6 / 0,6 ptsPergunta 9
Leia o texto a seguir:
 
A chamada de funções proporciona ao programador uma forma
eficiente de estruturar sua lógica, pois, ao fragmentarmos a resolução
de um problema computacional em partes menores, passamos a ter
um domínio maior do fluxo do programa. Um código em C pode ser
estruturado com várias funções, e a função que obrigatoriamente deve
aparecer é a função main(). Uma função pode ou não ao seu término,
devolver um valor. Este valor é devolvido através do comando return.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 14/16
Qual é o termo, em linguagem C, que declara explicitamente que a
função não devolve valores?
 #include. 
 double. 
 return. 
 void. 
Alternativa está correta, pois toda função, ao seu término, emite
um comando para a devolução de valor. O ponto de chamada da
função deve estar preparado para receber o valor. Para isso, na
declaração da função deve-se indicar qual é o tipo de dado que
deve ser retornado. Entretanto, se a função não devolver valor,
deverá ser indicado quando da codificação da função. Para tanto,
a função é declarada com o termo void, no lugar do tipo de dado.
Por exemplo: void fun_nome() { }.
 int. 
0,6 / 0,6 ptsPergunta 10
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
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.
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 15/16
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. 
 caractere. 
 real com precisão simples. 
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. 
http://linguagemc.com.br/variaveis-em-linguagem-c/
24/03/2022 22:38 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/22779/quizzes/99524 16/16
Pontuação do teste: 6 de 6

Outros materiais