Buscar

Programação estruturada para devs

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 5 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

Prévia do material em texto

Prova
Algoritmos e Programação Estruturada:
Programação Estruturada para Dev
1 - Um mecanismo utilizado para organizar nossa informação e prover operações
convenientes e eficientes para acessá-la e manipulá-la é conhecido como estrutura
de dados. Diversos tipos de estruturas de dados têm sido propostas e o
conhecimento das características dessas estruturas é um fator importante para a
escolha da estrutura que melhor se encaixa na solução de um determinado
problema. Neste sentido, o almoxarife de um órgão pediu ao técnico de informática
que elaborasse um sistema de estoque que, para cada saída de material,
considerasse o material que há mais tempo houvera dado entrada no almoxarifado.
O técnico deve desenvolver um algoritmo para tratar com uma estrutura de dados
de qual tipo? Assinale a alternativa correta.
Resposta: Fila.
2 - A pilha é uma das estruturas de dados mais simples, apesar de estar entre as
mais importantes, uma vez que são utilizadas em diversos tipos de aplicações,
desde aplicações de escritório até sistemas operacionais e compiladores. Levando
em consideração a estrutura de dados do tipo “Pilha”, analise as afirmativas a
seguir:
I. O elemento a ser removido da pilha é o que está há menos tempo na estrutura de
dados.
II. O elemento a ser removido da pilha é o que está há mais tempo na estrutura de
dados.
III. O elemento a ser inserido é colocado na base da pilha.
Considerando o contexto apresentado, é correto o que se afirma em:
Resposta: I, apenas. I. O elemento a ser removido da pilha é o que está há menos
tempo na estrutura de dados. CORRETA, pois o protocolo da pilha garante que o
último a entrar é o primeiro a sair (Last in, first out). Assim sendo, o elemento que
está a menos tempo na estrutura será o primeiro a ser removido. II. O elemento a
ser removido da pilha é o que está há mais tempo na estrutura de dados.
INCORRETA, pois contradiz o que foi dito em I. III. O elemento a ser inserido é
colocado na base da pilha. INCORRETA, pois os elementos são inseridos no topo
da pilha, não em sua base.
3 - Nas linguagens de programação funcional, diz-se que é possível evitar estouros
de pilha usando "recursão de cauda". A diferença entre recursiva normal e de cauda
é justamente aonde a chamada recursiva é chamada. Caso seja chamada na
"cauda" da função, é uma chamada de cauda recursiva. A "cauda" da função é sua
última chamada. É a última computação / cálculo feito pela função, e logo depois
dela, nenhum tratamento é feito antes de retornar seu valor. Neste contexto, analise
as figuras 16(a) e 16(b). Figura 16 – (a) recursão normal e (b) recursão de cauda
recursividades
Considerando as imagens apresentadas julgue as afirmações que se seguem. I -
Na figura 16(a), cada chamada recursiva aumenta porque o programa só pode
calcular o resultado da primeira função chamada, para depois calcular o resultado
das que a chamaram. Assim, a pilha estoura. II - Na figura 16(b), cada passo de
chamadas nem aumenta nem diminui. A partir do momento que a função recursiva é
chamada, todas são chamadas no final, sem precisar de mais cálculos.
III - Quando um compilador pronto para isso vê uma chamada recursiva na cauda,
ele automaticamente a transforma em um laço durante as otimizações. Desta forma
não perde as vantagens, nem a elegância da programação funcional, mas também
não corre o risco de passar por um estouro de pilha.
É correto apenas o que se afirma em:
Resposta: I - FALSA - Na figura 16(a), cada chamada recursiva aumenta porque o
programa só pode calcular o resultado da primeira função chamada, para depois
calcular o resultado das que a chamaram. Assim, a pilha estoura. O CORRETO É:
Na figura 16(a), A CADA chamada recursiva, O NÚMERO DE FUNÇÕES aumenta
porque o programa só pode calcular o resultado da ÚLTIMA função chamada, para
depois calcular o resultado das que a chamaram. Assim, a pilha estoura. II - FALSA
- Na figura 16(b), cada passo de chamadas nem aumenta nem diminui. A partir do
momento que a função recursiva é chamada, todas são chamadas no final, sem
precisar de mais cálculos. O CORRETO É: Na figura 16(b), A CADA PASSO, A
QUANTIDADE de chamadas nem aumenta nem diminui. A partir do momento que a
função recursiva é chamada, APENAS ELA é chamada no final, sem precisar de
mais cálculos. III - VERDADEIRA - Quando um compilador pronto para isso vê uma
chamada recursiva na cauda, ele automaticamente a transforma em um laço
durante as otimizações. Desta forma não perde as vantagens, nem a elegância da
programação funcional, mas também não corre o risco de passar por um estouro de
pilha.
4 - Podemos implementar estruturas de dados de pelo menos duas formas:
utilizando vetores ou utilizando estruturas ligadas (ou encadeadas). Estruturas de
dados ligadas consistem em uma sequência de elementos, denominados nós. Cada
nó possui uma informação a ser armazenada na estrutura de dados e a referência
para um ou mais nós da sequência.
Quando os nós de uma ED possuem ponteiros para o nó anterior e para o próximo
nó da sequência, ela é denominada de
Resposta: lista duplamente encadeada.
5 - De acordo com Mizrahi (2008) as funções dividem grandes tarefas de
programação em tarefas menores, permitindo aos programadores reprogramarem a
partir de códigos que já foram produzidos, facilitando e acelerando o trabalho de
programação. Observe o programa que demonstra o uso de uma função na
linguagem C:
#include <stdio.h>#define pi 3.1415float raio ( ){ float r, area; printf("Digite o raio: ");
scanf("%f",&r); area = pi * r * r; }int main(){ float result; result = raio (); printf("Area
do circulo = %.2f \n",result); return 0;}
O programa demonstrado não compila pois possui um erro, escolha a opção correta
que mostra o erro do programa.
Resposta: O que causa o erro do programa é a falta do return na função raio ( ), o
correto seria adicionar a seguinte linha: return area; isso fará com que o valor seja
repassado para a variável result.
6 - O trecho de programa a seguir calcula a média entre duas temperaturas
distintas: #include<stdio.h> float t1, t2; float calcularMedia(){ return (t1 + t2)/2; } int
main(){ printf("\n Digite as duas temperaturas: "); scanf("%f %f",&t1,&t2); printf("\n A
temperatura media = %.2f",calcularMedia()); return 0; }
O trecho de programa é um exemplo prático da utilização do:
Resposta: O trecho de programa é um exemplo prático da utilização do escopo
global de uma variável. Para definir uma variável global é preciso criá-la fora da
função. Dessa forma será visível por todas as funções do programa.
7 - Conforme Drozdek (2016), em uma Fila Circular, o conceito de
_________________ e se baseia quando o último elemento da fila está na última
posição do vetor, e é adjacente à primeira. Assim, são os ______________, e não
os elementos da fila que se movem em direção ao início do vetor, como podemos
observar na Figura-1 a seguir.
Assinale a questão verdadeira que completa as lacunas da frase:
Resposta: circularidade - ponteiros
8 - Diferentes estruturas elementares de dados implementam diferentes protocolos
de manipulação de elementos. Esses protocolos ditam como os elementos de uma
estrutura de dados podem ser inseridos, removidos e consultados.
Sabendo disso, assinale a alternativa que representa corretamente o nome das
estruturas que implementam os protocolos FIFO e LIFO, respectivamente.
Resposta: Fila e Pilha.
9 - Uma fila é uma estrutura de dados dinâmica que admite remoção de elementos e
inserção de novos objetos. Mais especificamente, uma Fila é uma estrutura sujeita
à seguinte regra de operação: sempre que houver uma remoção, o elemento
removido é o que está na estrutura há mais tempo (TENENBAUM, 2007).
Considerando a utilização de uma Fila, alguns problemas podem surgir com sua
utilização, como por exemplo:
I. Utilizando-se um vetor, teremos o problema de possuir um armazenamento de
tamanho fixo e limitado, enquanto que a Fila pode crescer com a necessidade de
uso do sistema, e para resolver essa problemática, teríamos que limitar o tamanho
máximoda Fila ao tamanho do vetor.
II. Outra situação que pode ocorrer é adicionar um elemento em uma Fila cheia ou
remover um elemento de uma Fila vazia. Em ambos os casos seria impossível
realizar as operações. Como solução, é importante sempre implementar as funções
para verificar se a Fila está cheia (fila_cheia(F)) e para verificar se a Fila está vazia
(fila_vazia(F)).
III. Podem surgir problemas relacionados aos controles de início e fim de Fila, onde
não é possível identificar as posições em que se encontram. Como solução, é
preciso incluir duas variáveis (início e fim) para armazenar a posição do início e do
fim da Fila, e sempre atualizar esses valores conforme a Fila aumenta ou diminui.
A seguir assinale a alternativa correta.
Resposta: A frase corretamente preenchida é: As afirmativas I, II e III estão corretas.
Utilizando-se um vetor, teremos o problema de possuir um armazenamento de
tamanho fixo e limitado, enquanto que a Fila pode crescer com a necessidade de
uso do sistema, e para resolver essa problemática, teríamos que limitar o tamanho
máximo da Fila ao tamanho do vetor. Outra situação que pode ocorrer é adicionar
um elemento em uma Fila cheia ou remover um elemento de uma Fila vazia. Em
ambos os casos seria impossível realizar as operações. Como solução, é importante
sempre implementar as funções para verificar se a Fila está cheia (fila_cheia(F)) e
para verificar se a Fila está vazia (fila_vazia(F)). Podem surgir problemas
relacionados aos controles de início e fim de Fila, onde não é possível identificar as
posições em que se encontram. Como solução, é preciso incluir duas variáveis
(início e fim) para armazenar a posição do início e do fim da Fila, e sempre atualizar
esses valores conforme a Fila aumenta ou diminui.
10 - Nas listas, quando precisávamos criar um novo elemento, poderíamos inseri-lo
ou removê-lo de qualquer posição da lista. Segundo Drozdek (2016), a Estrutura de
Dados de Fila possui operações similares as da estrutura de Pilha para
gerenciamento de uma Fila. Com base na estrutura de filas, avalie as seguintes
asserções e a relação proposta entre elas: I. Um novo elemento da Fila somente
pode ser inserido na última posição (fim da Fila); um elemento só pode ser removido
da primeira posição (início da Fila).
PORQUE II. Um novo elemento da Pilha somente pode ser inserido no topo da
Pilha; um elemento da Pilha apenas pode ser removido se estiver no final da Pilha.
A seguir assinale a alternativa correta.
Resposta: A asserção I é uma proposição verdadeira e a II é uma proposição falsa.

Continue navegando