Prévia do material em texto
1
Algoritmos e Programação Estruturada: Algoritmos para Dev
Questão 1
Correta
Deitel e Deitel (2011) afirma que as comparações entre valores faz parte do processamento de
um programa e, a partir do resultado realizar novas ações. Na programação, para compararmos
valores usamos operadores relacionais os operadores usados nas linguagens de programação.
Para cálculos podemos utilizar os operadores matemáticos, com poucas adaptações.
Assinale a alternativa que apresenta o valor que a variável result receberá considerando o
seguinte comando result = (a * b + (c - b) / (a-c)+ (c/b) - b) e, os seguintes valores a= 8 ,b= 3,c=
10.
Sua resposta
Correta
O valor em result será 21.
2
Questão 2
Correta
Variáveis são usadas para armazenar dados na memória de trabalho e que esses dados podem ser
de diferentes tipos (inteiro, decimal, caractere ou booleano), os quais são chamados de tipos
primitivos.
Veja um exemplo de comando para declaração de variáveis na linguagem C:
int idade[3];
float altura[3] = {1,1.5,1.7}
Assinale a alternativa que apresenta corretamente a função do comando exemplificado anterior.
Sua resposta
Correta
Declaração de variáveis compostas do tipo vetor.
3
Questão 3
Correta
Conforme Manzano (2015) toda vez que é necessário armazenar uma quantidade grande de
valores do mesmo tipo, podemos utilizar as variáveis compostas ou seja um vetor. A melhor
solução para armazenar diversos valores dentro de um mesmo contexto é utilizar variáveis
compostas. O vetor, ao ser declarado, reserva um espaço na memória contíguo para armazenar
seus elementos.
Analise o programa a seguir.
#include
int main()
{
int vetor[19],i;
for (i = 0; i main() { int w; for ( w = 1; w código -> "enquanto essa condição for verdadeira, repita".
7
Questão 2
Correta
Diz-se que um número é triangular se ele é produto de três números naturais consecutivos (e.g.:
120 é triangular pois 120 = 4*5*6). Dado um natural n, determinar se n é triangular. O trecho de
programa a seguir demonstra esse conceito:
#include
#include
int main ()
{
int cont, num;
printf("Entre com um número: ");
scanf("%d", &num);
for (cont=1; num
int main(void)
{
____________;
int resp;
____________
{
printf("Digite a primeira nota: ");
scanf("%f",¬a1);
printf("Digite a segunda nota: ");
scanf("%f",¬a2);
____________;
printf("Media do aluno = %f\n",media);
printf("Digite 1 para continuar ou 2 para sair\n");
____________;
_____________;
return 0;
}
Assinale a alternativa que completa corretamente as lacunas:
Sua resposta
Correta
float nota1=0,nota2=0,media=0 / do / media = (nota1 + nota2)/2 / scanf("%d", &resp) / }while
(resp==1).
9
Questão 4
Correta
O laço for é uma estrutura de repetição muito utilizada nos programas em C. É muito útil quando
se sabe de antemão quantas vezes a repetição deverá ser executada. Este laço utiliza uma variável
para controlar a contagem do loop, bem como seu incremento. O trecho de programa a seguir
exemplifica o comando:
#include
#include
int main(void)
{
int contador;
for(contador = 1; contadorfonte, transforma em
código binário e executa, repete esse processo até que
todas as instruções do código fonte sejam executadas.
O código é interpretado e executado em tempo real, sem
a geração de código executável.
2. Interpretadores
III. É gerado um código executável sem a necessidade
de interpretar comando por comando. Sua vantagem é a
execução mais rápida, porém, caso necessite de
alterações, o código fonte deverá ser editado e
executado em máquinas de mesma arquitetura.
3. Tradutores
Assinale a alternativa que apresenta a associação correta.
Sua resposta
I - 3; II - 2; III - 1.
A frase corretamente preenchida é: I - 3; II - 2; III - 1. Tradutores: São gerados códigos
intermediários, onde não exige tanto espaço de memórias quanto realizado pelo código fonte.
Interpretadores: Lê uma instrução do código fonte, transforma em código binário e executa,
repete esse processo até que todas as instruções do código fonte sejam executadas.
Compiladores: É gerado um código executável sem a necessidade de interpretar comando por
comando.
69
Questão 8
Sem resposta
Pseudocódigos é considerado uma ferramenta que pode auxiliar a programação, ela
pode ser escrita em palavras similares ao inglês ou português para facilitar a
interpretação e desenvolvimento de um programa. Neste contexto, analise o seguinte
algoritmo escrito em pseudocódigo. var real: v1, v2, v3, v4, N1, x; Início escreva (“Digite
Nota 1:”); leia v1; escreva (“Digite Nota 2:”); leia v2; escreva (“Digite Nota 3:”); leia v3;
escreva (“Digite Nota 4:”); leia v4; N1 ← v1 + v2 + v3 + v4; x ← N1 / 4;
escreva(“Resultado = ”, x); Fim.
Agora, assinale a alternativa correta.
Sua resposta
Este algoritmo armazena as notas em variáveis para depois realizar um calculo onde o restado
final é armazenado em X e por fim é exibido.
CORRETO, porque: Este algoritmo armazena as notas em variáveis: escreva (“Digite Nota 1:”);
leia v1; escreva (“Digite Nota 2:”); leia v2; escreva (“Digite Nota 3:”); leia v3; escreva (“Digite
Nota 4:”); leia v4; ...para depois realizar um calculo: N1 ← v1 + v2 + v3 + v4; ...onde o
restado final é armazenado em X: x ← N1 / 4; ...e por fim é exibido: escreva(“Resultado = ”,
x);
70
Questão 9
Sem resposta
Conforme Manzano (2015) toda vez que é necessário armazenar uma quantidade
grande de valores do mesmo tipo, podemos utilizar as variáveis compostas ou seja um
vetor. A melhor solução para armazenar diversos valores dentro de um mesmo contexto
é utilizar variáveis compostas. O vetor, ao ser declarado, reserva um espaço na memória
contíguo para armazenar seus elementos. Analise o programa a
seguir. #include
int main()
{
int vetor[19],i;
for (i = 0; ifoi inicializado com um valor igual a 0.
II. Depois foi testado se a condição que envolve o contador é verdadeira (contador
#include ____________
int main (void)
{
int N1, N2 ;
printf("Digite o primeiro numero: ");
_____________
printf("Digite o segundo numero: ");
scanf("%d", &N2);
_____________
printf("Os numeros são iguais!");
else
if (N1 > N2)
printf("O maior valor e = %d", N1);
____________
printf("O maior valor e = %d", N2);
printf("\n");
system("pause");
____________
}.
11
Assinale a alternativa que completa corretamente as lacunas:
Sua resposta
Correta
/ scanf("%d", &N1); / if (N1 == N2) / else / return (0);
12
Questão 1
Correta
Conforme Forbellone e Eberspächer (2000), os operadores relacionais são utilizados para realizar
comparações entre dois valores de um mesmo tipo. Esses valores podem ser representados por
variáveis ou constantes. A uma comparação realizada utilizando um operador relacional dá-se o
nome de relação. O resultado obtido de uma relação é sempre um valor lógico, ou seja, o valor
será verdadeiro ou falso.
Observe o trecho de um programa que demonstra o uso de dois if’s sequenciais ou encadeados.
if (num>=0)
if(num%2==0)
printf(“O número é par e é positivo.
\n”);
Os operadores lógicos podem ser utilizados para otimizar os comandos de seleção, levando em
consideração o trecho de programa apresentado, a alternativa que otimiza o comando if com a
utilização de operadores lógicos é:
Sua resposta
Correta
Revisar Questão
if ((num>=0) && (num%2==0)) printf (“O número é positivo e é par. \n”);
13
Questão 2
Correta
Questão com problema?
O laço for é uma estrutura de repetição muito utilizada nos programas em C. É muito útil quando
se sabe de antemão quantas vezes a repetição deverá ser executada. Este laço utiliza uma variável
para controlar a contagem do loop, bem como seu incremento. O trecho de programa a seguir
exemplifica o comando:
#include
#include
int main(void)
{
int contador;
for(contador = 1; contador
#include
main()
{
int cont=0;
while (cont código -> "enquanto essa condição for verdadeira, repita".
16
Questão 5
Incorreta
Questão com problema?
Segundo Soffner (2013 p. 64), o programa “não executará nenhuma repetição (e as ações que ali
dentro estiverem programadas) sem antes testar uma condição”. Em alguns casos, quando se
utiliza o teste no início, pode ocorrer o famoso loop (laço) infinito (quando um processo é
executado repetidamente). Para que isso não aconteça, é possível utilizar os seguintes recursos:
contador, incremento e decremento, acumulador e condição de parada. Baseado nestes recursos,
julgue as afirmações que se seguem:
I. Contador – é utilizado para contar as repetições quando não são determinadas.
II. Incremento e decremento – trabalha o número do contador, seja ele, aumentado ou diminuído.
III. Acumulador somará as entradas de dados de cada iteração da repetição, gerando um
somatório a ser utilizado quando iniciar a repetição.
IV. Condição de parada – utilizada para determinar o momento de parar quando não se tem um
valor exato desta repetição.
É correto apenas o que se afirma em:
Sua resposta
Incorreta
I, II e III.
Solução esperada
II e IV.
17
Questão 1
Correta
Questão com problema?
Linguagem de programação são métodos padronizados que determinam instruções para uma
máquina ou computador. Segundo Tucker (2010), podemos dizer que a linguagem Assembly é
uma forma mais viável de conseguir ler a linguagem de máquina, lembrando que a linguagem
Assembly é voltada para máquina, ou seja, trabalha diretamente nas memórias e registros do
computador, elas são executadas diretamente pelo processador.
Com base nas afirmações sobre a linguagem de programação, avalie as seguintes asserções e a
relação proposta entre elas:
I. Existem dois tipos de linguagens de programação: as de baixo nível e as de alto nível. Os
computadores interpretam tudo como números em base binária, ou seja, só entendem zero e um.
PORQUE
II. A linguagem de baixo nível está mais próxima à linguagem de máquina. Assim compreendem
as características da arquitetura do computador. Por utilizar somente as instruções do
processador é necessário conhecer os registradores da máquina. Uma linguagem de alto nível
está muito mais próxima do programador do que do dispositivo, ou seja, é uma linguagem muito
mais intuitiva.
A respeito dessas asserções, assinale a alternativa correta.
Sua resposta
Correta
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
18
Questão 2
Correta
Questão com problema?
Pode-se otimizar o uso de variáveis usando as estruturas compostas (vetor e matriz), porém só se
pode armazenar valores de um mesmo tipo. Além das estruturas homogêneas, as linguagens de
programação oferecem um tipo de variável composta heterogênea chamadade estruturas
(structs), ou ainda de registros por alguns autores (SOFFNER, 2013). Assim como se associa os
vetores e matrizes com tabelas, pode-se associar uma estrutura a uma ficha de cadastro com
diversos campos.
Na linguagem C, a criação de uma estrutura deve ser feita antes da função main() e deve possuir
a seguinte sintaxe:
struct {
;
;
...
};
De acordo com a sintaxe apresentada, julgue as afirmações que se seguem
I. é o nome da variável.
II. As variáveis internas dessa estrutura são os campos que se deseja guardar.
III. Uma estrutura funciona como um “tipo de dado”.IV. O uso da estrutura sempre será atribuído
à uma ou mais variáveis.
É correto apenas o que se afirma em:
Sua resposta
Correta
II, III e IV.
19
Questão 3
Correta
Questão com problema?
Pseudocódigos é considerado uma ferramenta que pode auxiliar a programação, ela pode ser
escrita em palavras similares ao inglês ou português para facilitar a interpretação e
desenvolvimento de um programa. Neste contexto, analise o seguinte algoritmo escrito em
pseudocódigo.
var
real: v1, v2, v3, v4, N1, x;
Início
escreva (“Digite Nota 1:”);
leia v1;
escreva (“Digite Nota 2:”);
leia v2;
escreva (“Digite Nota 3:”);
leia v3;
escreva (“Digite Nota 4:”);
leia v4;
N1 ← v1 + v2 + v3 + v4;
x ← N1 / 4;
escreva(“Resultado = ”, x);
Fim.
Agora, assinale a alternativa correta.
Sua resposta
Correta
Este algoritmo armazena as notas em variáveis para depois realizar um calculo onde o restado
final é armazenado em X e por fim é exibido.
20
Questão 4
Correta
Questão com problema?
Segundo Manzano (2015), os algoritmos criados por você deverão ser convertidos em linguagens
de alto nível, como por exemplo: a linguagem Java, Pascal, C, C++ entre outras conceituadas
nesta seção. Você deverá escrever os códigos fontes na linguagem escolhida para que os mesmos
se tornem executáveis, porém, cada linguagem adota um método particular para gerar o código
executável.
Considerando o contexto apresentado, faça a correta associação entre as Colunas.
COLUNA A COLUNA B
I. São gerados códigos intermediários, onde não
exige tanto espaço de memórias quanto realizado
pelo código fonte. Sua vantagem é ter independência
da arquitetura que realizará a execução final, porém,
necessita de um interpretador específico para sua
geração.
1. Compiladores
II. Lê uma instrução do código fonte, transforma em
código binário e executa, repete esse processo até
que todas as instruções do código fonte sejam
executadas. O código é interpretado e executado em
tempo real, sem a geração de código executável.
2. Interpretadores
III. É gerado um código executável sem a
necessidade de interpretar comando por comando.
Sua vantagem é a execução mais rápida, porém, caso
necessite de alterações, o código fonte deverá ser
editado e executado em máquinas de mesma
arquitetura.
3. Tradutores
Assinale a alternativa que apresenta a associação correta.
Sua resposta
Correta
I - 3; II - 2; III - 1.
21
Questão 5
Correta
Questão com problema?
Conforme Manzano (2015) toda vez que é necessário armazenar uma quantidade grande de
valores do mesmo tipo, podemos utilizar as variáveis compostas ou seja um vetor. A melhor
solução para armazenar diversos valores dentro de um mesmo contexto é utilizar variáveis
compostas. O vetor, ao ser declarado, reserva um espaço na memória contíguo para armazenar
seus elementos.
Analise o programa a seguir.
#include
int main()
{
int vetor[19],i;
for (i = 0; i int
main ( ) { char mensagem[17] = {'V','a','m','o','s',' ', 'P', 'r', 'o', 'g',
'r', 'a', 'm', 'a','r','!' ,'\n' }; int indice; for (indice=0 ;
mensagem[indice] != '\n' ; indice++) printf("%c", mensagem[indice]); }
Após execução do programa será impresso,
Sua resposta
Vamos Programar!
A frase corretamente preenchida é: Vamos Programar! Observe que precisamos sempre deixar um
valor reservado par o caractere '\0' que representa o final da string e poderemos utilizar o \n dentro
da string.
23
Questão 2
Respondida
No contexto da programação de computadores, um paradigma é uma forma ou um
estilo de se programar. Segundo Tucker (2010), um paradigma de programação está
relacionado a um padrão de soluções de problemas, onde por sua vez estão
relacionados a uma determinada linguagem de programação. Considerando o
contexto, avalie as afirmativas a seguir: I - A Programação Imperativa é considerada o
paradigma mais antigo, a programação imperativa pode armazenar o programa e suas
variáveis, as atribuições, as sequências, os laços e os comandos condicionais.
II - A Programação Orientada a Objeto é considerado uma coleção de objetos onde se
inter-relacionam, facilitando assim a programação. III - A Programação Funcional são
caraterizadas por possuírem atuação matemática, cada uma com um espaço de entrada
(domínio) e resultado (faixa).
IV- A Programação Lógica é considerada uma programação declarativa, onde um
programa pode modelar uma situação problema declarando qual resultado o programa
deve obter, em vez de como ele deve ser obtido.
Agora, assinale a alternativa correta. Revisar Questão
Sua resposta
As afirmativas I, II, III e IV estão corretas.
A frase corretamente preenchida é: As afirmativas I, II, III, IV e V estão corretas. O tipo
caractere pode armazenar somente um único valor, qualquer caractere da tabela ASCII. O tipo
inteiro não possui parte fracionária e pode ser positivo ou negativo, O tipo real pode possuir
parte fracionária e pode ser positivo ou negativo, permitindo o uso de números inteiros. Os dados
do tipo literal podem conter sequências de letras, dígitos ou símbolos especiais, ideais para
textos. O tipo lógico possui somente dois valores possíveis: V (Verdadeiro) ou F (Falso) ou
(True – False).
24
Questão 3
Respondida
O comando switch precisa que a variável a qual está guardado o valor e que será
avaliada pelo case, fique entre parênteses. Após, é necessário a utilização das chaves para
abrir o bloco de comandos cases. Após cada case, é obrigatório utilizar os dois pontos
(:). Observe atentamente o programa que demonstra o comando switch:
#includeint main ( ) { int num1, num2,
result; float operador; printf("Digite o 1o valor:
"); scanf("%d",&num1); printf("Digite o 2o valor:
"); scanf("%d",&num2); printf("Escolha: 1-
Somar"); printf("Escolha: 2-
Subtração"); printf("Escolha: 3-
Multiplicação"); scanf("%f",&operador); switch
(operador){ case 1: result=num1+num2; printf("A
Soma é: %d ",result); break; case 2: result=num1-
num2; printf("A Subtração é: %d
",result); break; case 3:
result=num1+num2; printf("O Produto é: %d
",result); break; default:
printf("Escolha Errada"); } return 0; }
Ao compilar o programa foi constato um erro que impediu o seu funcionamento.
Assinale a alternativa correta que aponta o erro do programa.
Sua resposta
O erro do programa é a variável operador que foi declarada como float, o comando switch
precisa que a variável seja do tipo int ou char.
A frase corretamente preenchida é: O erro do programa é a variável operador que foi declarada
como float, o comando switch precisa que a variável seja inteira ou caractere. Não é permitido
utilizar o float na estrutura de seleção switch. Os operadores precisam ser inteiros ou
caracteres para não ocasionar dúvidas sobre a entrada no case.
25
Questão 4
Respondida
Segundo Soffner (2013 p. 64), o programa “não executará nenhuma repetição (e as
ações que ali dentro estiverem programadas) sem antes testar uma condição”. Em
alguns casos, quando se utiliza o teste no início, pode ocorrer o famoso loop (laço)
infinito (quando um processo é executado repetidamente). Para que isso não aconteça,
é possível utilizar os seguintes recursos: contador, incremento e decremento,
acumulador e condição de parada. Baseado nestes recursos, julgue as afirmações que se
seguem: I. Contador – é utilizado para contar as repetições quando não são
determinadas.
II. Incremento e decremento – trabalha o número do contador, seja ele, aumentado ou
diminuído.
III. Acumulador somará as entradas de dados de cada iteração da repetição, gerando
um somatório a ser utilizado quando iniciar a repetição. IV. Condição de parada –
utilizada para determinar o momento de parar quando não se tem um valor exato desta
repetição.
É correto apenas o que se afirma em:
Sua resposta
I, II e III.
A resposta certa é a alternativa c).
I - FALSA - Contador: é utilizado para CONTROLAR AS REPETIÇÕES QUANDO ESTA É
DETERMINADA.
II - VERDADEIRA - Incremento e decremento: trabalha o número do contador, seja ele,
aumentado ou diminuído.
III - FALSA - Acumulador: que segundo Soffner (2013), somará as entradas de dados de cada
iteração da repetição, gerando um somatório a ser utilizado quando DA SAÍDA DA
REPETIÇÃO. IV - VERDADEIRA - Condição de parada: utilizada para determinar o momento
de parar quando não se tem um valor exato desta repetição.
26
Questão 5
Respondida
Observe o trecho de programa a seguir e julgue as afirmações que se
seguem. #include void main () { int num[5]; printf(“Entre com um
numero\n”); scanf(“%d”, &num[0]); printf(“O valor digitado foi: %d”, num [0]*2);
getchar(); }
I. Segundo Manzano (2010), vetor (array) é um tipo especial de variável capaz de
armazenar diversos valores “ao mesmo tempo”.
II. O vetor usa vários endereços na memória.
III. Por armazenar diversos valores, também é chamado de variável aleatória, ou ainda,
estrutura de matricial de valores. IV. A sintaxe para utilização de vetores homogêneos é:
tipo variavel [n]. Na sintaxe, “[n]” representa a quantidade de vetores alocados.
É correto apenas o que se afirma em:
Sua resposta
I e IV.
A resposta certa é a alternativa a).
I - VERDADEIRA - Segundo Manzano (2010), vetor (array) é um tipo especial de variável
capaz de armazenar diversos valores “ao mesmo tempo”.
II - FALSA - O vetor usa UM MESMO ENDEREÇO na memória.
III - FALSA - Por armazenar diversos valores, também é chamado de VARIÁVEL
COMPOSTA, ou ainda, estrutura de MATRICIAL DE DADOS. IV - FALSA - A sintaxe para
utilização de vetores homogêneos é: tipo variavel [n]. Na sintaxe, “[n]” representa a quantidade
de colunas E DE LINHAS.
27
Questão 6
Respondida
Analise o trecho de programa a seguir e responda:
#include main() { int w; for ( w = 1; w
#include int main(void) { int contador = 1; while (contadorcom o valor 1. O teste da condição while é realizado, e como o contador é menor ou igual 10,
então a condição é verdadeira.
II - FALSA - Como a condição é verdadeira, o programa entra dentro do corpo do laço e executa
o printf, exibindo o valor da variável contador. Após executar o comando printf, o contador é
INCREMENTADO.
III - FALSA - Depois do INCREMENTO, a condição é testada novamente e enquanto for
verdadeira, os comandos são executados até que a condição se torne falsa. IV - VERDADEIRA -
A condição falsa faz com que o laço seja encerrado.
31
Questão 1
Correta
Questão com problema?
Pode-se otimizar o uso de variáveis usando as estruturas compostas (vetor e matriz), porém só se
pode armazenar valores de um mesmo tipo. Além das estruturas homogêneas, as linguagens de
programação oferecem um tipo de variável composta heterogênea chamada de estruturas
(structs), ou ainda de registros por alguns autores (SOFFNER, 2013). Assim como se associa os
vetores e matrizes com tabelas, pode-se associar uma estrutura a uma ficha de cadastro com
diversos campos.
Na linguagem C, a criação de uma estrutura deve ser feita antes da função main() e deve possuir
a seguinte sintaxe:
struct {
;
;
...
};
De acordo com a sintaxe apresentada, julgue as afirmações que se seguem
I. é o nome da variável.
II. As variáveis internas dessa estrutura são os campos que se deseja guardar.
III. Uma estrutura funciona como um “tipo de dado”.IV. O uso da estrutura sempre será atribuído
à uma ou mais variáveis.
É correto apenas o que se afirma em:
Sua resposta
Correta
II, III e IV.
Comentário
Resposta correta : Apenas as afirmações II, III e IV estão corretas.
I - FALSA - é o nome da ESTRUTURA.
II - VERDADEIRA - As variáveis internas dessa estrutura são os campos que se deseja guardar.
III - VERDADEIRA - Uma estrutura funciona como um “tipo de dado”.IV - VERDADEIRA - O
uso da estrutura sempre será atribuído à uma ou mais variáveis.
32
Questão 2
Incorreta
Conforme Manzano (2015) toda vez que é necessário armazenar uma quantidade grande de
valores do mesmo tipo, podemos utilizar as variáveis compostas ou seja um vetor. A melhor
solução para armazenar diversos valores dentro de um mesmo contexto é utilizar variáveis
compostas. O vetor, ao ser declarado, reserva um espaço na memória contíguo para armazenar
seus elementos.
Analise o programa a seguir.
#include
int main()
{
int vetor[19],i;
for (i = 0; i
int main( )
{
float C, F;
printf("Escreva a Temperatura em graus Celsius: ");
scanf("%f", &C);
F = ((9 * C) / 5) + 32;
printf("Temperatura Fahrenheit = %.2f .\n", F);
return 0;
}
Analisando o programa proposto, caso o valor da variável C receber o valor igual a 10, o
comando printf irá imprimir:
Sua resposta
Correta
Temperatura Fahrenheit = 50.00 .
Comentário
A frase corretamente preenchida é: Temperatura Fahrenheit = 50.00 . O uso dos parênteses
garante com eficiência o resultado de uma expressão matemática. Neste caso a conversão da
temperatura, primeiramente é executada a multiplicação, após a divisão e por último a soma.
35
Questão 5
Incorreta
Questão com problema?
Os operadores aritméticos podem ser classificados em unário ou binário (MANZANO, 2015). Os
binários são operadores que usam dois componentes e os operadores unários usam apenas um
componente. É o caso dos operadores aritméticos de incremento (++) e decremento (--). Esses
operadores acrescentam ou diminuem “um” ao valor de uma variável e podem ser usados de
duas formas:
Após a variável: x++ . Nesse caso, é adicionado um após a primeira execução.
Após a variável: x-- .Nesse caso, é decrementado um após a primeira execução.
Antes da variável: ++x. Nesse caso, é adicionado um antes da primeira execução.
Antes da variável: --x.Nesse caso, é decrementado um antes da primeira execução.
Baseado no conceito de operadores unários, complete as lacunas do quadro 2 a seguir:
Operador Exemplo Descrição Resultado
++ x++ x + 1
++ ++x x + 1
-- x-- x - 1
-- --x x - 1
Assinale a alternativa que contém a sequência correta:
Sua resposta
Incorreta
Pós incremento / pré decremento / pós decremento / pré incremento.
Solução esperada
Pós incremento / pré incremento / pós decremento / pré decremento.
Comentário
A resposta certa é a alternativa c).
Operador Descrição Exemplo Resultado
++ Pós incremento x++ x + 1
++ Pré incremento ++x x + 1
-- Pós decremento x-- x - 1
-- Pré decremento --x x - 1
36
Questão 2
Correta
Questão com problema?
Mizrahi (2008) afirma que uma matriz de duas dimensões são inicializadas na mesma maneira
que vetor. Precisamos sempre observar que todos os valores que serão armazenados na matriz
sejam do mesmo tipo.
Analise o programa a seguir:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include
int main( )
{
int i, j, matriz[2][2] =
{10,20,30,40};
for (i = 0; iCorreta
matriz [0][0] = 10
matriz [0][1] = 20
matriz [1][0] = 30
matriz [1][1] = 40
37
Questão 1
Correta
Questão com problema?
Na repetição com variáveis de controle, ou seja, usando o laço “for”, o comando iterativo “for”
que em português significa “para”, segundo Mizrahi (2008), é geralmente usado para repetir uma
informação por um número fixo de vezes, isto é, pode-se determinar quantas vezes acontecerá a
repetição. Para facilitar ainda mais, veja a seguinte representação:
for(x = 10,y = 0; x >= 0, y = 0, y
#include
main()
{
float s=0, v;
int op;
do
{
printf("\n Digite sua Operacao");
printf("\n 1. Deposito");
printf("\n 2. Saque");
printf("\n 3. Saldo");
printf("\n 4. Sair");
printf("\n Opcao? ");
scanf("%d", &op);
switch(op)
{
case 1: printf("\n Valor do deposito? ");
scanf("%f", &v); s=s+v;
break;
case 2: printf("\n Valor do saque? ");
scanf("%f", &v); s=s-v;
break;
case 3: printf("\n Saldo atual = R$ %.2f \n", s);
break;
default: if(op!=4)
printf("\n Opcao Invalida! \n");
}
}
while (op!=4);
printf("Fim das transacoes. \n\n");
system("pause");
return 0;
}
Foi utilizado o laço do-while para implementar o menu do programa, onde a função desejada é
executada pelo menos uma vez dentro do laço, isto é:
39
Sua resposta
Incorreta
foi comparada uma estrutura de repetição com uma de condição.
Solução esperada
foi aplicada uma estrutura de repetição usando comparativo.
40
Questão 3
Incorreta
Questão com problema?
Uma forma de estrutura seletiva é a estrutura de seleção switch. Dentro dos switch há o case.
Este comando é muito parecido com o comando if com várias possibilidades, mas com algumas
diferenças importantes.
Na figura a seguir é apresentado o fluxograma da execução dos cases, de uma estrutura switch.
Com base no contexto apresentado, avalie as seguintes asserções e a relação proposta entre
elas:
I. No comando switch, os cases não aceitam operadores lógicos. Portanto, não é possível fazer
uma comparação. Isso limita o case a utilizar apenas valores definidos.
PORQUE
II. O comando switch executa seu bloco em cascata. Ou seja, se a variável indicar para o
primeiro case e dentro do switch tiver 3 comandos cases, o switch executará todos os outros 2
41
comandos cases a não ser que, for utilizado o comando para sair da estrutura switch e que é
o break.
Analise atentamente as asserções e assinale a alternativa correta.
Sua resposta
Incorreta
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Solução esperada
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
42
Questão 4
Correta
Questão com problema?
O comando switch precisa que a variável a qual está guardado o valor e que será avaliada
pelo case, fique entre parênteses. Após, é necessário a utilização das chaves para abrir o bloco
de comandos cases. Após cada case, é obrigatório utilizar os dois pontos (:).
Observe atentamente o programa que demonstra o comando switch:
#include
int main ( )
{
int num1, num2, result;
float operador;
printf("Digite o 1o valor: ");
scanf("%d",&num1);
printf("Digite o 2o valor: ");
scanf("%d",&num2);
printf("Escolha: 1-Somar");
printf("Escolha: 2-Subtração");
printf("Escolha: 3- Multiplicação");
scanf("%f",&operador);
switch (operador){
case 1: result=num1+num2;
printf("A Soma é: %d ",result);
break;
case 2: result=num1-num2;
printf("A Subtração é: %d ",result);
break;
case 3: result=num1+num2;
printf("O Produto é: %d ",result);
break;
default: printf("Escolha Errada");
}
return 0;
}
Ao compilar o programa foi constato um erro que impediu o seu funcionamento. Assinale a
alternativa correta que aponta o erro do programa.
Sua resposta
Correta
O erro do programa é a variável operador que foi declarada como float, o comando switch
precisa que a variável seja do tipo int ou char.
43
Questão 5
Correta
Questão com problema?
Conforme Forbellone e Eberspächer (2000), os operadores relacionais são utilizados para realizar
comparações entre dois valores de um mesmo tipo. Esses valores podem ser representados por
variáveis ou constantes. A uma comparação realizada utilizando um operador relacional dá-se o
nome de relação. O resultado obtido de uma relação é sempre um valor lógico, ou seja, o valor
será verdadeiro ou falso.
Observe o trecho de um programa que demonstra o uso de dois if’s sequenciais ou encadeados.
if (num>=0)
if(num%2==0)
printf(“O número é par e é positivo.
\n”);
Os operadores lógicos podem ser utilizados para otimizar os comandos de seleção, levando em
consideração o trecho de programa apresentado, a alternativa que otimiza o comando if com a
utilização de operadores lógicos é:
Sua resposta
Correta
Revisar Questão
if ((num>=0) && (num%2==0)) printf (“O número é positivo e é par. \n”);
44
Questão 1
Correta
Questão com problema?
Os operadores aritméticos podem ser classificados em unário ou binário (MANZANO, 2015). Os
binários são operadores que usam dois componentes e os operadores unários usam apenas um
componente. É o caso dos operadores aritméticos de incremento (++) e decremento (--). Esses
operadores acrescentam ou diminuem “um” ao valor de uma variável e podem ser usados de
duas formas:
Após a variável: x++ . Nesse caso, é adicionado um após a primeira execução.
Após a variável: x-- .Nesse caso, é decrementado um após a primeira execução.
Antes da variável: ++x. Nesse caso, é adicionado um antes da primeira execução.
Antes da variável: --x.Nesse caso, é decrementado um antes da primeira execução.
Baseado no conceito de operadores unários, complete as lacunas do quadro 2 a seguir:
Operador Exemplo Descrição Resultado
++ x++ x + 1
++ ++x x + 1
-- x-- x - 1
-- --x x - 1
Assinale a alternativa que contém a sequência correta:
Sua resposta
Correta
Pós incremento / pré incremento / pós decremento / pré decremento.
45
Questão 2
Correta
Questão com problema?
Variáveis são usadas para armazenar dados na memória de trabalho e que esses dados podem ser
de diferentes tipos (inteiro, decimal, caractere ou booleano), os quais são chamados de tipos
primitivos.
Veja um exemplo de comando para declaração de variáveis na linguagem C:
int idade[3];
float altura[3] = {1,1.5,1.7}
Assinale a alternativa que apresenta corretamentea função do comando exemplificado anterior.
Sua resposta
Correta
Declaração de variáveis compostas do tipo vetor.
46
Questão 3
Correta
Questão com problema?
As variáveis são usadas para armazenar dados na memória de trabalho e que esses dados podem
ser de diferentes tipos (inteiro, decimal, caractere ou booleano), os quais são chamados de tipos
primitivos. Podemos armazenar a idade de uma pessoa em uma variável do tipo int, a altura em
um tipo float, e assim por diante, mas e se fosse necessário armazenar quinze medidas da
temperatura de um dispositivo?
A melhor solução para armazenar diversos valores dentro de um mesmo contexto é utilizar:
Sua resposta
Correta
variáveis compostas.
47
Questão 4
Correta
Questão com problema?
Mizrahi (2008) afirma que uma matriz de duas dimensões são inicializadas na mesma maneira
que vetor. Precisamos sempre observar que todos os valores que serão armazenados na matriz
sejam do mesmo tipo.
Analise o programa a seguir:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include
int main( )
{
int i, j, matriz[2][2] =
{10,20,30,40};
for (i = 0; i main() { int w; for ( w = 1; w
#include ____________
int main (void)
{
int N1, N2 ;
printf("Digite o primeiro numero: ");
_____________
printf("Digite o segundo numero: ");
scanf("%d", &N2);
_____________
printf("Os numeros são iguais!");
else
50
if (N1 > N2)
printf("O maior valor e = %d", N1);
____________
printf("O maior valor e = %d", N2);
printf("\n");
system("pause");
____________
}.
Assinale a alternativa que completa corretamente as lacunas:
Sua resposta
/ scanf("%d", &N1); / if (N1 == N2) / else / return (0);
51
Questão 3
Respondida
Variáveis são usadas para armazenar dados na memória de trabalho e que esses dados podem ser
de diferentes tipos (inteiro, decimal, caractere ou booleano), os quais são chamados de tipos
primitivos.
Veja um exemplo de comando para declaração de variáveis na linguagem C:
int idade[3];
float altura[3] = {1,1.5,1.7}
Assinale a alternativa que apresenta corretamente a função do comando exemplificado anterior.
Sua resposta
Declaração de variáveis simples do tipo vetor.
INCORRETO, porque deveria indicar que é declaração de vetor.
52
Questão 4
Respondida
O comando do-while é uma estrutura de repetição que garante que o bloco de instruções seja
executado no mínimo uma vez, já que a condição que controla o laço é testada apenas no final do
comando. Ou seja, usando do-while, o bloco de comandos é executado pelo menos uma vez de
forma obrigatória, independente do resultado da expressão lógica.
Analise o trecho de programa a seguir e complete corretamente as lacunas:
#include
int main(void)
{
____________;
int resp;
____________
{
printf("Digite a primeira nota: ");
scanf("%f",¬a1);
printf("Digite a segunda nota: ");
scanf("%f",¬a2);
____________;
printf("Media do aluno = %f\n",media);
printf("Digite 1 para continuar ou 2 para sair\n");
____________;
_____________;
return 0;
}
Assinale a alternativa que completa corretamente as lacunas:
Sua resposta
float nota1=0,nota2=0,media=0 / do / media = (nota1 + nota2)/2 / scanf("%d", &resp) / }while
(resp==1).
53
Questão 5
Respondida
Segundo Manzano (2015), os algoritmos criados por você deverão ser convertidos em linguagens
de alto nível, como por exemplo: a linguagem Java, Pascal, C, C++ entre outras conceituadas
nesta seção. Você deverá escrever os códigos fontes na linguagem escolhida para que os mesmos
se tornem executáveis, porém, cada linguagem adota um método particular para gerar o código
executável.
Considerando o contexto apresentado, faça a correta associação entre as Colunas.
COLUNA A COLUNA B
I. São gerados códigos intermediários, onde não
exige tanto espaço de memórias quanto realizado
pelo código fonte. Sua vantagem é ter independência
da arquitetura que realizará a execução final, porém,
necessita de um interpretador específico para sua
geração.
1. Compiladores
II. Lê uma instrução do código fonte, transforma em
código binário e executa, repete esse processo até
que todas as instruções do código fonte sejam
executadas. O código é interpretado e executado em
tempo real, sem a geração de código executável.
2. Interpretadores
III. É gerado um código executável sem a
necessidade de interpretar comando por comando.
Sua vantagem é a execução mais rápida, porém, caso
necessite de alterações, o código fonte deverá ser
editado e executado em máquinas de mesma
arquitetura.
3. Tradutores
Assinale a alternativa que apresenta a associação correta
Sua resposta
I - 3; II - 2; III - 1.
54
Questão 6
Sem resposta
Conforme Manzano (2015) toda vez que é necessário armazenar uma quantidade grande de
valores do mesmo tipo, podemos utilizar as variáveis compostas ou seja um vetor. A melhor
solução para armazenar diversos valores dentro de um mesmo contexto é utilizar variáveis
compostas. O vetor, ao ser declarado, reserva um espaço na memória contíguo para armazenar
seus elementos.
Analise o programa a seguir.
#include
int main()
{
int vetor[19],i;
for (i = 0; io vetor, como foi feito no comando for da linha 5, será impresso
os valores que estão na memória do computador, esses valores são conhecidos como “lixo de
memória”.
É correto apenas o que se afirma em:
Sua resposta
I, III e IV.
A frase corretamente preenchida é: As afirmativas I, II, III e IV estão corretas. Todas as
afirmativas estão corretas. Devemos sempre inicializar um vetor para evitar que ao executar o
programa, um lixo de memória seja utilizado. Observe que há um problema no programa, no
comando: for (i = 0; i
int main()
{
int vetor[19],i;
for (i = 0; i
void main ()
{
int num[5];
printf(“Entre com um numero\n”);
scanf(“%d”, &num[0]);
printf(“O valor digitado foi: %d”, num [0]*2);
getchar();
}
I. Segundo Manzano (2010), vetor (array) é um tipo especial de variável capaz de armazenar
diversos valores “ao mesmo tempo”.
II. O vetor usa vários endereços na memória.
III. Por armazenar diversos valores, também é chamado de variável aleatória, ou ainda, estrutura
de matricial de valores.
IV. A sintaxe para utilização de vetores homogêneos é: tipo variavel [n]. Na sintaxe, “[n]”
representa a quantidade de vetores alocados.
É correto apenas o que se afirma em:
Sua resposta
I.
61
Questão 1
Respondida
No contexto da programação de computadores, um paradigma é uma forma ou um
estilo de se programar. Segundo Tucker (2010), um paradigma de programação está
relacionado a um padrão de soluções de problemas, onde por sua vez estão
relacionados a uma determinada linguagem de programação. Considerando o
contexto, avalie as afirmativas a seguir: I - A Programação Imperativa é considerada o
paradigma mais antigo, a programação imperativa pode armazenar o programa e suas
variáveis, as atribuições, as sequências, os laços e os comandos condicionais.
II - A Programação Orientada a Objeto é considerado uma coleção de objetos onde se
inter-relacionam, facilitando assim a programação. III - A Programação Funcional são
caraterizadas por possuírem atuação matemática, cada uma com um espaço de entrada
(domínio) e resultado (faixa).
IV- A Programação Lógica é considerada uma programação declarativa, onde um
programa pode modelar uma situação problema declarando qual resultado o programa
deve obter, em vez de como ele deve ser obtido.
Agora, assinale a alternativa correta. Revisar Questão
Sua resposta
As afirmativas I, II, III e IV estão corretas.
A frase corretamente preenchida é: As afirmativas I, II, III, IV e V estão corretas. O tipo
caractere pode armazenar somente um único valor, qualquer caractere da tabela ASCII. O tipo
inteiro não possui parte fracionária e pode ser positivo ou negativo, O tipo real pode possuir
parte fracionária e pode ser positivoou negativo, permitindo o uso de números inteiros. Os dados
do tipo literal podem conter sequências de letras, dígitos ou símbolos especiais, ideais para
textos. O tipo lógico possui somente dois valores possíveis: V (Verdadeiro) ou F (Falso) ou
(True – False).
62
Questão 2
Respondida
Pode-se otimizar o uso de variáveis usando as estruturas compostas (vetor e matriz),
porém só se pode armazenar valores de um mesmo tipo. Além das estruturas
homogêneas, as linguagens de programação oferecem um tipo de variável composta
heterogênea chamada de estruturas (structs), ou ainda de registros por alguns autores
(SOFFNER, 2013). Assim como se associa os vetores e matrizes com tabelas, pode-se
associar uma estrutura a uma ficha de cadastro com diversos campos. Na linguagem C,
a criação de uma estrutura deve ser feita antes da função main() e deve possuir a
seguinte sintaxe: struct { ;
; ... }; De acordo com a sintaxe apresentada, julgue as afirmações
que se seguem
I. é o nome da variável.
II. As variáveis internas dessa estrutura são os campos que se deseja guardar.
III. Uma estrutura funciona como um “tipo de dado”.IV. O uso da estrutura sempre será
atribuído à uma ou mais variáveis.
É correto apenas o que se afirma em:
Sua resposta
II, III e IV.
Resposta correta : Apenas as afirmações II, III e IV estão corretas.
I - FALSA - é o nome da ESTRUTURA.
II - VERDADEIRA - As variáveis internas dessa estrutura são os campos que se deseja guardar.
III - VERDADEIRA - Uma estrutura funciona como um “tipo de dado”.IV - VERDADEIRA - O
uso da estrutura sempre será atribuído à uma ou mais variáveis.
63
Questão 3
Respondida
Uma forma de estrutura seletiva é a estrutura de seleção switch. Dentro dos switch há
o case. Este comando é muito parecido com o comando if com várias possibilidades, mas
com algumas diferenças importantes. Na figura a seguir é apresentado o fluxograma da
execução dos cases, de uma
estrutura switch. Com base no
contexto apresentado, avalie as seguintes asserções e a relação proposta entre elas: I. No
comando switch, os cases não aceitam operadores lógicos. Portanto, não é possível fazer
uma comparação. Isso limita o case a utilizar apenas valores definidos.
PORQUE II. O comando switch executa seu bloco em cascata. Ou seja, se a variável
indicar para o primeiro case e dentro do switch tiver 3 comandos cases, o switch executará
todos os outros 2 comandos cases a não ser que, for utilizado o comando para sair da
estrutura switch e que é o break.
Analise atentamente as asserções e assinale a alternativa correta.
64
Sua resposta
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A frase corretamente preenchida é: As asserções I e II são proposições verdadeiras, mas a II não
é uma justificativa da I. A asserção II está complementando as informações sobre o
funcionamento da estrutura de seleção switch e informando a necessidade de utilizar
o break para sair da estrutura, toda vez que um case for executado.
65
Questão 4
Respondida
Mizrahi (2008) afirma que uma matriz de duas dimensões são inicializadas na mesma
maneira que vetor. Precisamos sempre observar que todos os valores que serão
armazenados na matriz sejam do mesmo tipo. Analise o programa a seguir:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include
int main( )
{
int i, j, matriz[2][2] =
{10,20,30,40};
for (i = 0; i void main () { int num[5]; printf(“Entre com um
numero\n”); scanf(“%d”, &num[0]); printf(“O valor digitado foi: %d”, num [0]*2);
getchar(); }
I. Segundo Manzano (2010), vetor (array) é um tipo especial de variável capaz de
armazenar diversos valores “ao mesmo tempo”.
II. O vetor usa vários endereços na memória.
III. Por armazenar diversos valores, também é chamado de variável aleatória, ou ainda,
estrutura de matricial de valores. IV. A sintaxe para utilização de vetores homogêneos é:
tipo variavel [n]. Na sintaxe, “[n]” representa a quantidade de vetores alocados.
É correto apenas o que se afirma em:
Sua resposta
I.
A resposta certa é a alternativa a).
I - VERDADEIRA - Segundo Manzano (2010), vetor (array) é um tipo especial de variável
capaz de armazenar diversos valores “ao mesmo tempo”.
II - FALSA - O vetor usa UM MESMO ENDEREÇO na memória.
III - FALSA - Por armazenar diversos valores, também é chamado de VARIÁVEL
COMPOSTA, ou ainda, estrutura de MATRICIAL DE DADOS. IV - FALSA - A sintaxe para
utilização de vetores homogêneos é: tipo variavel [n]. Na sintaxe, “[n]” representa a quantidade
de colunas E DE LINHAS.
67
Questão 6
Sem resposta
Analise a aplicação da estrutura de repetição condicional realizando um programa que
simula uma conta bancária (tela de opções das transações), adaptado do livro do
Soffner (2013). Ele escreve um programa que repete uma entrada de dados até que
determinada condição de saída seja atingida e, em seguida, acumule os valores
digitados. #include #include main() { float s=0, v; int op; do {
printf("\n Digite sua Operacao"); printf("\n 1. Deposito"); printf("\n 2. Saque"); printf("\n
3. Saldo"); printf("\n 4. Sair"); printf("\n Opcao? "); scanf("%d", &op); switch(op) { case 1:
printf("\n Valor do deposito? "); scanf("%f", &v); s=s+v; break; case 2: printf("\n Valor do
saque? "); scanf("%f", &v); s=s-v; break; case 3: printf("\n Saldo atual = R$ %.2f \n", s);
break; default: if(op!=4) printf("\n Opcao Invalida! \n"); } } while (op!=4); printf("Fim das
transacoes. \n\n"); system("pause"); return 0; }
Foi utilizado o laço do-while para implementar o menu do programa, onde a função
desejada é executada pelo menos uma vez dentro do laço, isto é:
Sua resposta
foi aplicada uma estrutura de repetição usando comparativo.
A resposta certa é a alternativa "E" Foi utilizado o laço do-while para implementar o menu do
programa, onde a função desejada é executada pelo menos uma vez dentro do laço, isto é, foi
aplicada uma estrutura de repetição usando comparativo.
68
Questão 7
Sem resposta
Segundo Manzano (2015), os algoritmos criados por você deverão ser convertidos em
linguagens de alto nível, como por exemplo: a linguagem Java, Pascal, C, C++ entre
outras conceituadas nesta seção. Você deverá escrever os códigos fontes na linguagem
escolhida para que os mesmos se tornem executáveis, porém, cada linguagem adota
um método particular para gerar o código executável. Considerando o contexto
apresentado, faça a correta associação entre as Colunas.
COLUNA A COLUNA B
I. São gerados códigos intermediários, onde não exige
tanto espaço de memórias quanto realizado pelo código
fonte. Sua vantagem é ter independência da arquitetura
que realizará a execução final, porém, necessita de um
interpretador específico para sua geração.
1. Compiladores
II. Lê uma instrução do código