Buscar

Desafio I Temporada

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

1º Desafio - Métodos de programação
Os paradigmas de programação são diferentes classificações atribuídas à estruturação de linguagens de programação. Ao longo do desenvolvimento da computação, surgiram vários paradigmas e, consequentemente, novas linguagens de programação que empregavam seus conceitos na forma de se estruturar, o que também impactou os profissionais da área, uma vez que é comum um profissional mais novo achar estranho trabalhar com uma linguagem embasada em um paradigma de décadas atrás. 
Imagine que você trabalha em uma equipe de desenvolvimento de softwares em uma organização que já trabalha há muito tempo com softwares desenvolvidos internamente, com linguagens de programação da década de 90, como Visual Basic 5.0 e Delphi 6.0.
Na sua equipe há um programador mais novo que começou a trabalhar com linguagens orientadas a objetos, principalmente com Java, e que encontrou uma dificuldade na adaptação ao paradigma de linguagens estruturadas. 
Você, como programador mais experiente, deve explicar ao programador:
a) A diferença entre os dois paradigmas.
b) O porquê de, ao contrário do Java, não ser possível desenvolver com as linguagens de paradigma estruturado Visual Basic 5.0 e Delphi 6.0.
Padrão de resposta esperado
a) O Java é uma linguagem precursora do paradigma de orientação a objetos, o qual considera entidades do mundo real objetos que se relacionam com os demais e apresentam atributos e métodos, sendo o seu conceito de desenvolvimento de códigos. A diferença entre os paradigmas é que o pensamento em linguagens orientada a objetos exige que o programador pense mais na construção e na reutilização de códigos.
b) Linguagens estruturadas como o Visual Basic 5.0 e o Delphi 6.0 trabalhavam com código repetido entre diversas telas do sistema, uma vez que o paradigma estruturado era orientado a eventos de ação de tela, diferente de objetos.
2º Desafio - Concorrência e sincronização de processos
Ao acessar páginas Web, você já notou que, ao longo dos anos, elas passaram a trazer muitos contextos diferentes? Antes viam-se apenas textos; hoje, além dos textos, veem-se também diversas imagens, vídeos, gifs, dentre outros elementos.
​​​​​​​Para solucionar o impasse, você percebe que deve haver a implementação de uma thread para que o desempenho da aplicação atenda às demandas do cliente.
Descreva como as várias solicitações da aplicação do cliente serão atendidas pelo seu site.
Padrão de resposta esperado
A solução mais adequada é a utilização de um ambiente multithread, onde cada processo pode responder a várias solicitações concorrentemente, ou mesmo simultaneamente caso haja mais de um processador.
A grande vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos do sistema, além de diminuir o overhead na criação, troca e eliminação de processos.
3º Desafio - Modelos de programação
Priscila é uma aluna muito interessada e sempre busca melhorar a eficiência dos sistemas que desenvolve. Atualmente, está envolvida em um projeto de robótica. Ela não gostaria de utilizar processadores existentes no mercado, e sua ideia é projetar um processador para seu robô.
Escreva o que a professora de Priscila pode ter respondido.
Padrão de resposta esperado
PADRÃO DE RESPOSTA ESPERADO
A arquitetura mais adequada para sistemas embarcados é a baseada em pilhas, pois foi utilizada nos primeiros sistemas computacionais e é um dos motivos e justamente a maneira como os operandos e as instruções são definidos.
Em uma arquitetura baseada em pilhas, a maioria das instruções não precisa definir os operandos, pois eles estão na pilha, devendo apenas especificar a operação que deve ser realizada, diminuindo o tamanho dos programas e, consequentemente, a quantidade de memória a ser utilizada.
Nos primeiros sistemas, memória era um artigo de luxo, então, ter programas que ocupassem menos memória era uma grande vantagem. Sistemas embarcados também têm essa característica com relação à quantidade de recurso de memória.
Com um robô e um sistema embarcado, a arquitetura baseada em pilhas pode ajudar no desenvolvimento do sistema em questão. É preciso lembrar que a limitação de memória em sistemas embarcados deve-se por aspectos como baixo custo e baixo consumo de energia.
_____________________________________________________________________________
4º Desafio - Recursividade
A recursividade é um processo utilizado para definir a própria solução, sendo chamado recursivamente na especificação de sua execução.
Seu desafio é construir um algoritmo em pseudocódigo que leia um vetor de 10 elementos, sendo cada elemento do tipo real, e que escreva todos os elementos do vetor. Para realizar essas tarefas, utilize dois procedimentos não recursivos (ler e escrever). O algoritmo também deve ter uma função recursiva que calcule o somatório dos elementos do vetor; assim, o somatório pode ser definido da seguinte maneira:
Somatorio(X)
se X = 1, o somatorio é o primeiro elemento do vetor (vetor[1])
se X > 1, o somatório é o elemento atual (vetor[X]) + Somatorio(X-1)
Padrão de resposta esperado
O algoritmo abaixo demonstra a implementação do desafio.
algoritmo "VetorRecursivo"
var
valor : vetor[1..10] de real
procedimento ler
var
K : inteiro
inicio
para K de 1 ate 10 passo 1 faca
escreva("Digite elemento[",K,"]: ")
leia(valor[K])
fimpara
fimprocedimento
procedimento escrever
var
K : inteiro
inicio
para K de 1 ate 10 passo 1 faca
escreva("elemento[",K,"]: ",valor[K])
fimpara
fimprocedimento
funcao somatorio(X : inteiro):real
inicio
se (X = 1) entao
retorne(valor[1])
senao
retorne(valor[X]+somatorio(X-1))
fimse
fimfuncao
inicio
ler()
escrever()
escreval("Somatorio: ",somatorio(10))
fimalgoritmo

Continue navegando