Baixe o app para aproveitar ainda mais
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
Compartilhar