Prévia do material em texto
AO2
Entrega 1 abr em 23:59
Pontos 6
Perguntas 10
Disponível 25 mar em 0:00 - 1 abr em 23:59
Limite de tempo Nenhum
Instruções
Este teste foi travado 1 abr em 23:59.
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 25 minutos 5,4 de 6
Pontuação deste teste: 5,4 de 6
Enviado 26 mar em 20:14
Esta tentativa levou 25 minutos.
Pergunta 1
0,6 / 0,6 pts
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.
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.
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 1/12
https://famonline.instructure.com/courses/35384/quizzes/180459/history?version=1
As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa correta da I.
Correto!
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.
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.
Pergunta 2
0,6 / 0,6 pts
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:
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. Rio de
Janeiro: Campos/Elsevier, 2007).
Considerando as informações apresentadas, avalie as afirmações a seguir:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 2/12
Correto!
III, apenas.
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 II, apenas
I e III, apenas.
I, apenas.
II e III, apenas.
Pergunta 3
0,6 / 0,6 pts
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:
Leia o trecho abaixo:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 3/12
As asserções I e II são proposições ambas falsas
A asserção I é uma proposição falsa, e a asserção II é uma proposição verdadeira.
Correto!
As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa correta da I.
Alternativa está correta. A asserção I é uma proposição verdadeira porque o comando return possui
duas importantes utilizações dentro de uma função: provocar a saída imediata da função e devolver
um valor para o ponto de chamada da função. A linguagem C permite que, dentro de uma mesma
função, seja codificado mais de um comando return. Isso porque o término de uma função pode ser
executado em qualquer ponto dela. É importante, porém, que o valor devolvido em todos os pontos
seja do mesmo tipo do dado que consta no comando de declaração da função. A asserção II é uma
proposição verdadeira porque a linguagem C impõe que todo comando return (quando devolve
O fluxo normal de um programa de computador executa instruções em uma sequência: parte-se da
primeira instrução do algoritmo até alcançar a última instrução da sequência. Um dos recursos
utilizados em linguagens de programação, como forma de desvio do fluxo, é a utilização de funções.
As funções são trechos de códigos executados que podem ser chamadas em qualquer ponto do
programa, por outras funções.
Toda função, exceto as funções declaradas como void, deve devolver valor para o ponto de
chamada. Esse valor é devolvido pelo comando return.
Para ilustrara situação, imagine que um programa necessita fazer uma parte do cálculo de
pagamento de um funcionário. Esse cálculo é feito a partir dos proventos e dos descontos. Então, o
programa deve ser seccionado em várias funções para calcular cada um dos elementos. Cada
função deve fazer o cálculo que é de sua responsabilidade e devolver o resultado para o ponto que a
chamou (Função principal). Esta, por sua vez, utiliza os valores devolvidos para fazer a soma de
proventos e a dedução dos descontos, gerando o valor líquido.
Considerando esse contexto, avalie as seguintes asserções e a relação proposta entre elas.
I. Dentro de uma mesma função, pode haver mais de um comando return, porém, todos devem
devolver valores do mesmo tipo.
PORQUE
II. O comando return deve devolver valores que sejam do mesmo tipo que constam na declaração da
função. Por exemplo a função “double calcSalario()”, que deve devolver um valor calculado do tipo
double no(s) comando(s) return.
A respeito das asserções, assinale a opção correta:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 4/12
valores), ao ser codificado, deverá devolver valores do mesmo tipo de dado que consta na
declaração da função. A asserção II justifica a corretamente a asserção I, já que ela afirma que os
comandos devem devolver valores do mesmo tipo.
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, mas a asserção II não é uma justificativa da I.
Pergunta 4
0,6 / 0,6 pts
I, apenas.
III, apenas.
I e II, apenas.
I, II e III.
Correto!
I e III, apenas.
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.
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:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 5/12
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.
Pergunta 5
0,6 / 0,6 pts
As asserções I e II são proposições falsas.
Correto!
Leia o texto abaixo:
Um programador deve ter competência para resolver problemas computacionais organizadamente.
Ele deve praticar os seguintes passos para a resolução sistemática de um problema computacional,
no qual temos o entendimento macro do problema, a elaboração do algoritmo, a diagramação da
solução e a codificação do programa.
Todas as fases assinaladas são importantes. Destacamos a de elaboração do algoritmo, que traz
subsídios sólidos para que a busca do programa seja com baixo índice de erros em suas soluções
computacionais.
Considerando o trecho acima, avalie as seguintes asserções e a relação proposta entre elas.
I. Uma pseudolinguagem possui uma estrutura que simula as linguagens de programação formais
praticadas por programadores profissionais.
PORQUE
II. Um programa codificado em pseudolinguagem deve ser totalmente aderente à estrutura de
controle de fluxo e comandos das linguagens formais de programação.
A respeito dessas asserções, assinale a opção correta:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 6/12
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
Alternativa está correta. A asserção I é uma proposição verdadeira porque uma pseudolinguagem é
uma reprodução informal das linguagens de programação formais. Portanto, uma pseudolinguagem
deve ter a seguinte estrutura: Início do programa, uma seção para a declaração de variáveis e uma
seção para a codificação do algoritmo. Além disso, é necessário que a pseudolinguagem possua
regras para os aspectos lexicais, sintáticos e semânticos que toda linguagem de programação
possui. A asserção II é uma proposição verdadeira e justifica corretamente a asserção I. Uma
pseudolinguagem precisa ter uma estrutura em conformidade com as linguagens formais porque faz
com que a transformação da pseudolinguagem para o código formal tenha uma correspondência de
paradigmas entre ambas.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
Pergunta 6
0,6 / 0,6 pts
#include.
return.
double.
Correto!
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.
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.
Qual é o termo, em linguagem C, que declara explicitamente que a função não devolve
valores?
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 7/12
Pergunta 7
0,6 / 0,6 pts
IDE.
Palavra Reservada.
Eclipse.
Correto!
Case Sensitive.
Alternativa está correta, pois case sensitive é um termoda 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.
Pergunta 8
0 / 0,6 pts
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)?
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
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 8/12
I, apenas.
Resposta correta
II, apenas.
III, apenas.
I, II e III.
Você respondeu
I e II, apenas.
Alternativa está incorreta. 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.
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:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 9/12
Pergunta 9
0,6 / 0,6 pts
II e III, apenas.
Correto!
I, apenas.
Alternativa está correta. A afirmativa I é verdadeira porque a estrutura de repetição
“enquanto...faça...” pode ser utilizada em soluções que 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.
I, II e III.
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.
(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:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 10/12
III, apenas.
I e II, apenas.
Pergunta 10
0,6 / 0,6 pts
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 ambas proposições falsas.
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áveisdeclaradas 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:
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 11/12
Correto!
A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa.
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().
As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa da I.
Pontuação do teste: 5,4 de 6
A+
A
A-
25/04/24, 19:32 AO2: Algoritmos e Lógica de Programação
https://famonline.instructure.com/courses/35384/quizzes/180459?module_item_id=1029297 12/12