Buscar

Exercícios Programação O.B

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

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 6, do total de 39 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

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 9, do total de 39 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.
É natural que estudantes da área de computação questionem o porque de se estudar os
conceitos e a história das linguagens de programação, no entanto, adquirir esse conhecimento
proporciona ao aluno e futuro profissional diversas vantagens. Assinale a alternativa que
expresse algumas dessas vantagens:
Você acertou!
A.
Embasamento para escolha de linguagens adequadas e melhor entendimento da importância da
implementação.
Algumas das vantagens de estudar o conceito de linguagens de programação são o
embasamento para escolha da linguagem adequada e o melhor entendimento da importância da
implementação. O reúso de componentes está mais ligado ao conhecimento específico de
algumas linguagens, já o reaproveitamento de código também está relacionado a um padrão de
desenvolvimento de algumas linguagens e, por fim, a facilidade de comunicação não se
relaciona a esses conceitos.
2.
Computadores têm sido utilizados para uma infinidade de áreas que, por sua vez, resultam no
desenvolvimento de novos conceitos e linguagens que demandam novos paradigmas e métodos
de programação. Assinale a alternativa correta sobre algumas das áreas que impulsionaram
esse desenvolvimento:
Você acertou!
C.
Inteligência Artificial e World Wide Web.
Entre as áreas que impulsionaram o desenvolvimento de novos conceitos e paradigmas de
programação estão a Inteligência Artificial e a World Wide Web. Áreas como o Governo, a
Medicina e a Indústria Automobilística, apesar de grandes consumidores de tecnologia, não são
consideradas impulsionadoras no desenvolvimento desses conceitos.
3.
As linguagens de programação podem apresentar características e comportamentos definidos
de acordo com o paradigma que a construiu. No entanto, uma linguagem pode apresentar
características provenientes de diferentes paradigmas. Dessa forma, assinale a alternativa
verdadeira:
Você acertou!
A.
Os paradigmas não estão vinculados à linguagem de programação.
Os paradigmas não estão vinculados e não são definidos pela linguagem de programação. O
paradigma de orientação a objetos, apesar de muito embasado em reusabilidade, não foi o
precursor do conceito, já o paradigma declarativo está relacionado à preocupação com o
resultado e não com a forma de execução de uma instrução. Por fim, um paradigma deve ser
definido pelo tipo de situação a ser resolvida e não pela tecnologia.
4.
O paradigma de programação imperativo tem como principal característica a declaração
comandos, que descreve uma sequência de instruções para alcançar um objetivo. Sobre os
conceitos do paradigma imperativo, assinale a alternativa correta:
Você acertou!
D.
A programação imperativa apresenta linguagens amplamente utilizadas, como a linguagem C,
por exemplo.
O paradigma de programação imperativa é implementado por um grande número de linguagens
de programação, entre elas a linguagem C. Esse paradigma, apesar de ter o foco em entender
os comandos, segue uma lógica entre eles, focando nas instruções recebidas. É um paradigma
amplamente utilizado e apresenta linguagens que possibilitam, entre outros recursos, o reúso de
código.
5.
O paradigma de programação estruturada surgiu com a ideia da criação de estruturas e blocos
de execução de rotinas e foi amplamente utilizado, dando ênfase para o surgimento do
paradigma orientado a objeto. Assinale a alternativa correta sobre o paradigma de programação
estruturada:
Você acertou!
E.
O paradigma estruturado permite a organização do código em estruturas funcionais.
O paradigma estruturado possibilita a organização do código em estruturas funcionais e
reutilizáveis. Ele não foi substituído pelo orientado a objetos, apesar de ser o alicerce para o seu
surgimento. Recursos como polimorfismo, herança e classes pertencem ao paradigma orientado
a objetos.
_______________________________________
1.
As linguagens de programação declarativas têm como principal característica lógica do
programa estarem orientadas para o resultado a ser obtido e não para o modo como será
alcançado. Ou seja, têm foco no quê e não no como. Assinale a alternativa que descreva outra
característica também associada a esse paradigma:
Resposta correta.
B.
Facilidade de aprendizagem.
Outra característica das linguagens declarativas é sua facilidade de aprendizagem em relação
às linguagens imperativas, pois o fato de serem delimitadas pela elaboração do código, com
apenas o resultado a ser alcançado e não com o como, facilita o aprendizado. Características de
modelagem de entidades do mundo real são de orientação a objetos. Comandos e instruções
passo a passo são de linguagens imperativas. Criação de código enxuto e integração com
outras linguagens são condições particulares, o que dependerá da situação.
2.
As linguagens de programação declarativa, assim como linguagens em outros paradigmas, são
indicadas para programas em algumas áreas do conhecimento. Assinale a alternativa que
identifica as áreas do conhecimento em que mais se aplicam as linguagens de programação
declarativa:
Você acertou!
D.
Inteligência Artificial e Banco de Dados.
Entre as áreas que utilizam o paradigma de linguagem de programação declarativa,
destacam-se a Inteligência Artificial e o Banco de Dados, principalmente, por conta das
linguagens SQL e Prolog, pois, como o paradigma de linguagem declarativa facilita o uso nesse
tipo de problema, sua implicação com lógica e cálculos matemáticos é amplamente facilitada.
Outras áreas, como jogos e processamento de imagem, apesar de usarem, não são unânimes.
Além disso, em sistemas estruturados, as linguagens imperativas predominam. Sistemas
estruturados, como o próprio nome sugere, não fazem parte desse paradigma e móbile e
sistemas web trabalham mais com o conceito de programação imperativa.
3.
As linguagens de programação lógica, como o Prolog, têm grande embasamento na lógica
matemática, fazendo uso de símbolos na declaração pela lógica de predicados. Assinale a
alternativa correta acerca de algumas características da programação lógica:
Resposta correta.
A.
Processamento simbólico e fácil modificação.
O processamento simbólico e a facilidade de modificação são características desse tipo de
linguagem. Outras características, como processamento numérico, soluções algorítmicas e difícil
modificação, são características de linguagens imperativas.
4.
O paradigma de programação funcional é uma forma de programação declarativa, criado
explicitamente para dar suporte a uma abordagem funcional pura, para a solução de problemas.
Para atingir esse objetivo, são características desse paradigma:
Você acertou!
E.
Foco em funções com objetos de primeira classe e coleção de dados.
A principal característica da programação funcional é o foco em funções, como objetos que se
relacionam para implementar o programa. Já o foco em controle de tarefas, como controlar a
execução dos passos no algoritmo, e em controle de loops e condicionais são características de
linguagens não funcionais.
5.
As linguagens de programação por restrições são uma complementação ao padrão lógico e se
referem à implementação de restrições na relação entre variáveis, especificando soluções e
critérios a serem cumpridos, atuando sobre domínios. As linguagens de programação por
restrições atuam sobre alguns domínios. Assinale a alternativa abaixo que apresenta alguns
domínios onde esse tipo de linguagem atua:
C.
Booleano e finito.
As linguagens de programação restritivas atuam sobre os domínios: booleano, de números
inteiros e racionais, linear, misto e finito. Não atuam sobre os domínios estrutural e condicional.
O domínio de funções é das linguagens funcionais, e linguagens declarativas não atuam em
domínios imperativos e orientados a objetos.
___________________________________________
1.
O paradigma de programação imperativa é largamente caracterizado pelo fato de seus
programas expressarem instruções e comandos que o computador deve executar para alcançar
os objetivos. Outra característica importante do paradigma de programção imperativa é: 
Você acertou!
A.
Mutação de estado(alterar os valores das variáveis).
Outra característica marcante de linguagens de programação imperativa é a alteração dos
valores de variáveis. Linguagens que implementam essa característica são imperativas, mesmo
que também atendam a outros paradigmas. Expressar o código por meio de funções,
implementação de subprogramas e herança e polimorfismo, apesar de ser possível em
linguagens imperativas, é característica que define outros paradigmas. Expressar símbolos e
letras é de linguagens lógicas.
2.
As linguagens de programação imperativa podem ser classificadas como completas quanto a
Turing. Analise as questões e assinale a que representa uma síntese do que significa ser
completa quanto a Turing.
Você acertou!
C.
Apresentar recursos que permitem expressar qualquer algoritmo computacional.
Uma linguagem é considerada completa quanto a Turing quando permite que qualquer algoritmo
seja expresso, implementando condicionais e controle de fluxo, por exemplo. Reutilizar código
não é uma necessidade para esse enquadramento, bem como escrita em linguagem de baixo
nível. Em linguagens imperativas, os dados ocupam a memória junto ao programa, o que
quebraria a regra, caso fosse uma necessidade.
3.
As linguagens de programação imperativa são também chamadas de linguagens procedurais
devido ao fato de permitirem uma certa estruturação do código construído. Acerca desse
conceito, assinale a alternativa que apresenta uma desvantagem dessa característica:
Você acertou!
D.
Falta de flexibilidade dado o caráter sequencial das instruções.
A falta de flexibilidade do código em linguagens imperativas procedurais, dado o caráter
sequencial das intsruções, é uma das desvantagens desse conceito. Existem muitas linguagens
de programação que implementam o paradigma no mercado e permitem implementar
recursividade, dispõem de comandos interativos e têm boa legibilidade do código.
4.
A programação em linguagem imperativa se caracteriza por expressar a chegada a um
resultado e não como. Analise o código abaixo, acerca de um o trecho do código de um
programa em linguagem C, e assinale a alternativa correta sobre a característica do paradigma
imperativo que é possível perceber.
function join(array) { var text = ""; for (var i = 0; i < array.length; i++) {
text += array[i];
}
return text;
}
Você acertou!
B.
Instruções explícitas.
O código representa uma implementação em paradigma imperativo. Podemos observar que é
explícito como o comando interativo for vai fazer para percorrer o array e também incrementar o
valor da variável text. Apesar do uso de funções e comandos incrementais em linguagens
imperativas, isso por si só não é característica que justifique uma linguagem imperativa. Já
quanto a reuso e código enxuto, isso não é perceptível no trecho e também não é justificativa
para classificar uma linguagem como imperativa.
5.
Uma linguagem de programação pode dar suporte a mais do que um só paradigma de
programação. Nesse contexto, analise as alternativas a seguir e assinale a que apresenta as
características que justifiquem que uma linguagem forneça suporte à implementação do
paradigma imperativo.
Você acertou!
C.
Variáveis, atribuição e execução sequencial de procedimentos.
Para que uma linguagem implemente características de programação imperativa, faz-se
necessário que, ao menos, implemente o conceito de atribuição a variáveis para manipulação de
seu estado e uma execução sequencial dos procedimentos. Implementação lógica e alto nível
de abstração são características de linguagens declarativas.
__________________________________
1.
O paradigma de programação imperativa é largamente caracterizado pelo fato de seus
programas expressarem instruções e comandos que o computador deve executar para alcançar
os objetivos. Outra característica importante do paradigma de programção imperativa é: 
Você acertou!
A.
Mutação de estado (alterar os valores das variáveis).
Outra característica marcante de linguagens de programação imperativa é a alteração dos
valores de variáveis. Linguagens que implementam essa característica são imperativas, mesmo
que também atendam a outros paradigmas. Expressar o código por meio de funções,
implementação de subprogramas e herança e polimorfismo, apesar de ser possível em
linguagens imperativas, é característica que define outros paradigmas. Expressar símbolos e
letras é de linguagens lógicas.
2.
As linguagens de programação imperativa podem ser classificadas como completas quanto a
Turing. Analise as questões e assinale a que representa uma síntese do que significa ser
completa quanto a Turing.
Você acertou!
C.
Apresentar recursos que permitem expressar qualquer algoritmo computacional.
Uma linguagem é considerada completa quanto a Turing quando permite que qualquer algoritmo
seja expresso, implementando condicionais e controle de fluxo, por exemplo. Reutilizar código
não é uma necessidade para esse enquadramento, bem como escrita em linguagem de baixo
nível. Em linguagens imperativas, os dados ocupam a memória junto ao programa, o que
quebraria a regra, caso fosse uma necessidade.
3.
As linguagens de programação imperativa são também chamadas de linguagens procedurais
devido ao fato de permitirem uma certa estruturação do código construído. Acerca desse
conceito, assinale a alternativa que apresenta uma desvantagem dessa característica:
Você acertou!
D.
Falta de flexibilidade dado o caráter sequencial das instruções.
A falta de flexibilidade do código em linguagens imperativas procedurais, dado o caráter
sequencial das intsruções, é uma das desvantagens desse conceito. Existem muitas linguagens
de programação que implementam o paradigma no mercado e permitem implementar
recursividade, dispõem de comandos interativos e têm boa legibilidade do código.
4.
A programação em linguagem imperativa se caracteriza por expressar a chegada a um
resultado e não como. Analise o código abaixo, acerca de um o trecho do código de um
programa em linguagem C, e assinale a alternativa correta sobre a característica do paradigma
imperativo que é possível perceber.
function join(array) { var text = ""; for (var i = 0; i < array.length; i++) {
text += array[i];
}
return text;
}
Você acertou!
B.
Instruções explícitas.
O código representa uma implementação em paradigma imperativo. Podemos observar que é
explícito como o comando interativo for vai fazer para percorrer o array e também incrementar o
valor da variável text. Apesar do uso de funções e comandos incrementais em linguagens
imperativas, isso por si só não é característica que justifique uma linguagem imperativa. Já
quanto a reuso e código enxuto, isso não é perceptível no trecho e também não é justificativa
para classificar uma linguagem como imperativa.
5.
Uma linguagem de programação pode dar suporte a mais do que um só paradigma de
programação. Nesse contexto, analise as alternativas a seguir e assinale a que apresenta as
características que justifiquem que uma linguagem forneça suporte à implementação do
paradigma imperativo.
Você acertou!
C.
Variáveis, atribuição e execução sequencial de procedimentos.
Para que uma linguagem implemente características de programação imperativa, faz-se
necessário que, ao menos, implemente o conceito de atribuição a variáveis para manipulação de
seu estado e uma execução sequencial dos procedimentos. Implementação lógica e alto nível
de abstração são características de linguagens declarativas.
__________________________________________________
1.
O paradigma de programação imperativa é largamente caracterizado pelo fato de seus
programas expressarem instruções e comandos que o computador deve executar para alcançar
os objetivos. Outra característica importante do paradigma de programção imperativa é: 
Você acertou!
A.
Mutação de estado (alterar os valores das variáveis).
Outra característica marcante de linguagens de programação imperativa é a alteração dos
valores de variáveis. Linguagens que implementam essa característica são imperativas, mesmo
que também atendam a outros paradigmas.Expressar o código por meio de funções,
implementação de subprogramas e herança e polimorfismo, apesar de ser possível em
linguagens imperativas, é característica que define outros paradigmas. Expressar símbolos e
letras é de linguagens lógicas.
2.
As linguagens de programação imperativa podem ser classificadas como completas quanto a
Turing. Analise as questões e assinale a que representa uma síntese do que significa ser
completa quanto a Turing.
Você acertou!
C.
Apresentar recursos que permitem expressar qualquer algoritmo computacional.
Uma linguagem é considerada completa quanto a Turing quando permite que qualquer algoritmo
seja expresso, implementando condicionais e controle de fluxo, por exemplo. Reutilizar código
não é uma necessidade para esse enquadramento, bem como escrita em linguagem de baixo
nível. Em linguagens imperativas, os dados ocupam a memória junto ao programa, o que
quebraria a regra, caso fosse uma necessidade.
3.
As linguagens de programação imperativa são também chamadas de linguagens procedurais
devido ao fato de permitirem uma certa estruturação do código construído. Acerca desse
conceito, assinale a alternativa que apresenta uma desvantagem dessa característica:
Você acertou!
D.
Falta de flexibilidade dado o caráter sequencial das instruções.
A falta de flexibilidade do código em linguagens imperativas procedurais, dado o caráter
sequencial das intsruções, é uma das desvantagens desse conceito. Existem muitas linguagens
de programação que implementam o paradigma no mercado e permitem implementar
recursividade, dispõem de comandos interativos e têm boa legibilidade do código.
4.
A programação em linguagem imperativa se caracteriza por expressar a chegada a um
resultado e não como. Analise o código abaixo, acerca de um o trecho do código de um
programa em linguagem C, e assinale a alternativa correta sobre a característica do paradigma
imperativo que é possível perceber.
function join(array) { var text = ""; for (var i = 0; i < array.length; i++) {
text += array[i];
}
return text;
}
Você acertou!
B.
Instruções explícitas.
O código representa uma implementação em paradigma imperativo. Podemos observar que é
explícito como o comando interativo for vai fazer para percorrer o array e também incrementar o
valor da variável text. Apesar do uso de funções e comandos incrementais em linguagens
imperativas, isso por si só não é característica que justifique uma linguagem imperativa. Já
quanto a reuso e código enxuto, isso não é perceptível no trecho e também não é justificativa
para classificar uma linguagem como imperativa.
5.
Uma linguagem de programação pode dar suporte a mais do que um só paradigma de
programação. Nesse contexto, analise as alternativas a seguir e assinale a que apresenta as
características que justifiquem que uma linguagem forneça suporte à implementação do
paradigma imperativo.
Você acertou!
C.
Variáveis, atribuição e execução sequencial de procedimentos.
Para que uma linguagem implemente características de programação imperativa, faz-se
necessário que, ao menos, implemente o conceito de atribuição a variáveis para manipulação de
seu estado e uma execução sequencial dos procedimentos. Implementação lógica e alto nível
de abstração são características de linguagens declarativas.
__________________________________
1.
A programação estruturada propõe uma disciplina para construção de códigos de programas
com o objetivo de permitir, entre outros fatores, uma fácil manutenção dos programas. Esse
paradigma surgiu no início da década de 70.
Acerca dos eventos que motivaram o surgimento da programação estruturada, assinale a
alternativa correta:
Você acertou!
C.
A crise do software e o uso excessivo de comandos GOTO nos códigos.
Conhecida pela crise do software, a dificuldade de manutenção dos sistemas atuais, em grande
parte criticada pelo uso excessivo do comando GOTO, foi o principal motivador do surgimento
da programação estruturada. A introdução de novas linguagens não foi a causa do seu
surgimento e, ao contrário, o mercado de software estava em constante queda.
2.
O princípio básico de programação estruturada é que um programa é composto por blocos
elementares de código que se interligam por intermédio de três mecanismos básicos.
Assinale a alternativa correta quanto a estes três mecanismos:
Você acertou!
A.
Sequência, Seleção e Iteração.
Os três mecanismos básicos de um programa em programação estruturada são Sequência,
Seleção e Iteração. As variáveis, apesar de, assim como procedimentos, estarem presentes em
linguagens estruturadas, não são mecanismos básicos.
3.
Na programação estruturada é fundamental a elaboração de algoritmos e, para expressá-los,
algumas formas de representação são usadas.
Assinale a alternativa correta sobre as formas de representação utilizadas para algoritmos em
programação estruturada:
Você acertou!
D.
Linguagem Natural, Fluxogramas e Pseudocódigo.
As formas de representação de algoritmos em programação estruturada são: Linguagem
Natural, Fluxogramas e Pseudocódigo. Linguagem de máquina é outra terminologia e não se
enquadra neste propósito, bem como técnica de prototipação.
4.
Uma das características da linguagem de programação estruturada são as estruturas em
sequência. Conforme tal característica, as instruções dos programas são executadas
sequencialmente de cima para baixo, linha a linha.
Com base nessa característica, assinale a alternativa correta quanto ao seu benefício na
estruturação de código:
Você acertou!
E.
Facilidade em compreender o fluxo de execução de um Programa.
O benefício da estrutura sequencial está diretamente relacionado ao fato de compreensão do
fluxo de execução de um programa, uma vez que as instruções são executadas na medida em
que aparecem no código. Por si só, isso não traz facilidade de processamento e nem
desalocação de memória. O controle de desvio no código é executado pelas instruções
condicionais.
5.
Uma das características da programação estruturada é a utilização de estruturas de repetição,
representada na maioria das linguagens estruturadas por comandos FOR e While.
Assinale a alternativa correta quanto a uma das principais vantagens que essa estrutura
proporciona:
Você acertou!
C.
Execução de blocos de instruções várias vezes.
A principal vantagem do uso das estruturas repetitivas é a execução de um bloco de instruções
seguidas vezes enquanto uma condição for necessária. Não necessariamente, essas estruturas
possibilitam melhor performance e não foram criadas para a utilização de comandos GOTO e,
sim, para a sua substituição. Não são novas formas de escrever comandos condicionais, os
quais são descritos pelas estruturas condicionais e comandos If Else, funções são outro recurso
e podem até conter no seu bloco de execução uma estrutura condicional, mas a estrutura
condicional não substitui função.
__________________________________
1.
A programação estruturada propõe uma disciplina para construção de códigos de programas
com o objetivo de permitir, entre outros fatores, uma fácil manutenção dos programas. Esse
paradigma surgiu no início da década de 70.
Acerca dos eventos que motivaram o surgimento da programação estruturada, assinale a
alternativa correta:
Você acertou!
C.
A crise do software e o uso excessivo de comandos GOTO nos códigos.
Conhecida pela crise do software, a dificuldade de manutenção dos sistemas atuais, em grande
parte criticada pelo uso excessivo do comando GOTO, foi o principal motivador do surgimento
da programação estruturada. A introdução de novas linguagens não foi a causa do seu
surgimento e, ao contrário, o mercado de software estava em constante queda.
2.
O princípio básico de programação estruturada é que um programa é composto por blocos
elementares de código que se interligam por intermédio de três mecanismos básicos.
Assinale a alternativa correta quanto a estes três mecanismos:
Você acertou!
A.
Sequência, Seleção e Iteração.
Os três mecanismos básicos de um programa em programação estruturada são Sequência,
Seleçãoe Iteração. As variáveis, apesar de, assim como procedimentos, estarem presentes em
linguagens estruturadas, não são mecanismos básicos.
3.
Na programação estruturada é fundamental a elaboração de algoritmos e, para expressá-los,
algumas formas de representação são usadas.
Assinale a alternativa correta sobre as formas de representação utilizadas para algoritmos em
programação estruturada:
Você acertou!
D.
Linguagem Natural, Fluxogramas e Pseudocódigo.
As formas de representação de algoritmos em programação estruturada são: Linguagem
Natural, Fluxogramas e Pseudocódigo. Linguagem de máquina é outra terminologia e não se
enquadra neste propósito, bem como técnica de prototipação.
4.
Uma das características da linguagem de programação estruturada são as estruturas em
sequência. Conforme tal característica, as instruções dos programas são executadas
sequencialmente de cima para baixo, linha a linha.
Com base nessa característica, assinale a alternativa correta quanto ao seu benefício na
estruturação de código:
Você acertou!
E.
Facilidade em compreender o fluxo de execução de um Programa.
O benefício da estrutura sequencial está diretamente relacionado ao fato de compreensão do
fluxo de execução de um programa, uma vez que as instruções são executadas na medida em
que aparecem no código. Por si só, isso não traz facilidade de processamento e nem
desalocação de memória. O controle de desvio no código é executado pelas instruções
condicionais.
5.
Uma das características da programação estruturada é a utilização de estruturas de repetição,
representada na maioria das linguagens estruturadas por comandos FOR e While.
Assinale a alternativa correta quanto a uma das principais vantagens que essa estrutura
proporciona:
Você acertou!
C.
Execução de blocos de instruções várias vezes.
A principal vantagem do uso das estruturas repetitivas é a execução de um bloco de instruções
seguidas vezes enquanto uma condição for necessária. Não necessariamente, essas estruturas
possibilitam melhor performance e não foram criadas para a utilização de comandos GOTO e,
sim, para a sua substituição. Não são novas formas de escrever comandos condicionais, os
quais são descritos pelas estruturas condicionais e comandos If Else, funções são outro recurso
e podem até conter no seu bloco de execução uma estrutura condicional, mas a estrutura
condicional não substitui função.
______________________________________
1.
O conceito principal da programação orientada a objetos, que justifica o nome do próprio
paradigma, é que tudo pode ser abstraído para um objeto e, assim, um programa seria uma
coleção de objetos que se relacionam e apresentam comportamento único. Assinale a
alternativa que apresenta os principais componentes de um objeto:
Você acertou!
D.
Atributos e métodos.
Os principais componentes de um objeto são seus atributos e seus métodos. Apesar de um
objeto apresentar diferentes estados ao longo do ciclo de execução do programa, ele não se
caracteriza como um componente do objeto. Colunas e tabelas não fazem parte de um objeto e
as variáveis são declaradas no escopo do objeto, mas são utilizadas para a definição de
atributos.
2.
A orientação a objetos trouxe alguns conceitos interessantes para a programação, e um deles
está relacionado ao conhecimento sobre a implementação interna da classe, o qual é
desnecessário do ponto de vista do objeto. Assinale a alternativa correta quanto ao seu nome:
Você acertou!
B.
Encapsulamento.
O encapsulamento é a técnica que permite que o conhecimento sobre a implementação interna
de uma classe seja desnecessário quanto ao objeto que a instancia. Já o relacionamento não é
um conceito-base da orientação a objetos. Ainda, as classes são estruturas e a abstração,
embora seja um dos conceitos novos, diz respeito a entender o conceito de objetos, enquanto
que a herança refere-se a herdar estruturas de uma classe para outra.
3.
Um dos novos conceitos surgidos sobre a programação orientada a objeto é o de que ela é um
mecanismo por meio do qual é possível selecionar as funcionalidades utilizadas de forma
dinâmica por um programa no decorrer de sua execução. Assinale a alternativa correta que
apresenta o nome desse mecanismo:
Você acertou!
E.
Polimorfismo.
O polimorfismo é o mecanismo que possibilita às funcionalidades serem utilizadas de forma
dinâmica por um programa no decorrer de sua execução. Os atributos resultam das
características dos objetos; já a herança é a possibilidade de uma classe herdar a estrutura de
outra e abstração é o entendimento de entidades do mundo real para a concepção de objetos.
4.
Uma das grandes vantagens da adoção da programação orientada a objetos é a reutilização de
código e sua organização. Com relação às vantagens da reutilização de código na programação
orientada a objetos, assinale a alternativa correta:
Você acertou!
C.
A reutilização de código é consequência da análise e do projeto de código.
A reutilização de código é consequência das etapas de análise e projeto da orientação a
objetos, que fazem com que os projetos de código sejam bem projetados e, por influência das
classes que agrupam códigos, reutilizados. Em orientação a objetos, as funções são
substituídas por métodos, os quais não são, no entanto, os responsáveis pela boa reutilização e
pelos procedimentos que não são de linguagens OO, assim como pelos eventos que são da
programação estruturada. A simplificação de código é essencial em qualquer paradigma, mas
ela, por si só, não é suficiente para a reutilização de código, e sim para a sua otimização.
5.
Um objeto é uma instância de uma classe em programação orientada a objetos. As classes
definem, então, a estrutura dos objetos que serão instanciados a partir dela. Com base nessa
afirmativa, analise a classe a seguir em Java e assinale a alternativa correta:
public class Bola
{
String cor;
int tamanho;
boolean cheia;
void encher()
{
cheia = true;
}
void esvaziar()
{
cheia = false;
}
}
Você acertou!
C.
Cor, tamanho e cheia são atributos da classe bola.
Os atributos da classe que você analisou são: cor, tamanho e bola. Cada atributo de um tipo, ou
seja, cor é um tipo string, tamanho do tipo int e cheia do tipo booleano. Encher e esvaziar são
métodos que alteram o valor do atributo cheia.
___________________________________
1.
Há um tipo específico de relacionamento entre classes, em que o objetivo é mostrar que as
informações de um objeto (chamado objeto todo) necessitam serem complementadas por um ou
mais objetos de outra classe (objeto parte).
Assinale a alternativa abaixo que contenha o nome desse tipo de relacionamento.
Você acertou!
E.
Agregação.
O tipo de relacionamento em que as informações de um objeto precisam ser complementadas
por outro são representadas pelo relacionamento do tipo agregação. Composição é um tipo de
relacionamento utilizado para representar outro tipo de dependência, enquanto generalização é
utilizado para representar relacionamento do tipo herança entre classes. Associação forte é,
também, uma denominação do relacionamento de composição e não se enquadra para esse
tipo de situação; especialização é um tipo de relacionamento de herança entre classes.
2.
Todo o atributo de uma classe só poderá ser manipulado pelos métodos da própria classe. O
objeto, assim, esconde seus dados de outros objetos e permite que os dados sejam acessados
por intermédio de seus próprios métodos.
Quanto a esse conceito, assinale a alternativa correta.
Você acertou!
A.
Esse conceito é conhecido como encapsulamento.
O conceito que possibilita que apenas os métodos da própria classe manipulem os seus
atributos, é denominado de encapsulamento. O conceito de herança está relacionado a uma
classe herdeira dos atributos de outra classe; polimorfismo é o conceito de que uma classe
possa modificar o comportamento padrão da classe que herda. Relacionamentos são tipos de
associações ou heranças entre classes; e abstração é o conceito de entendimento do universo a
ser implementado pelos objetos.
3.
Um tipo de objeto especificauma família, sem se preocupar em definir como o tipo e o objeto
serão implementados. Na programação orientada a objetos, os tipos são determinados na etapa
de análise.
Assinale a alternativa correta quanto à estrutura utilizada para definir como serão
implementados os tipos de objetos.
Você acertou!
B.
Classes.
As classes são estruturas que determinam como os tipos de objetos que a utilizam serão
implementados. Nelas, são definidos os atributos e métodos, assim como os tipos de
relacionamentos. Atributos são características de objetos; os métodos, seus comportamentos.
Herança e associação são alguns dos tipos de relacionamento entre as classes e objetos.
4.
Os relacionamentos do tipo herança entre classes apresentam diferenças. Um dos tipos de
relacionamento de herança é indicado quando existe algum atributo que seja aplicável a mais de
uma classe, que contenha os atributos comuns a outras classes especializadas.
Assinale a alternativa correta quanto ao nome desse tipo de relacionamento.
Você acertou!
C.
Generalização.
A generalização é um tipo de relacionamento de herança, que é utilizado quando uma classe
herda os atributos de outra classe. Quando existe a necessidade de criação de atributos
específicos pela classe herdeira, é utilizado o relacionamento de especialização.
Encapsulamento não é um tipo de relacionamento; e associação é a representação de qualquer
relação entre classes, não determinando esse conceito específico, bem como herança.
5.
Existe um tipo de relacionamento que impõe o sentido de que um objeto todo não existe sem
suas partes. Não se pode ter uma cesta de produtos, sem os seus produtos, correto?
Assinale a alternativa correta quanto ao nome desse tipo de relacionamento.
Você acertou!
D.
Composição.
O tipo de relacionamento que possibilita especificar que, só faz sentido os objetos parte
existirem, se existir o objeto todo é a composição. A agregação é um tipo de relacionamento
semelhante à composição, mas nela, um objeto parte pode existir sem esse grau de
dependência e, muitas vezes, é chamada de Agregação fraca, enquanto a composição é
chamada de Agregação forte. Especialização é um tipo de relacionamento de herança e de não
associação; o mesmo vale para o tipo especialização; e abstração não é um tipo de
relacionamento.
1.
Ao analisar um modelo de classes de um sistema, você identificou que existe um
relacionamento de herança entre as classes MeioPagamento e CartaoCredito, sendo a classe
mãe a MeioPagamento e a classe herdeira a CartaoCredito. Sobre essa situação, assinale a
alternativa correta:
Você acertou!
B.
Todos os atributos da classe MeioPagamento serão herdados pela classe CartaoCredito.
Como existe um relacionamento de herança entre as classes, sendo a classe MeioPagamento a
mãe e a CartaoCredito a herdeira, é possível determinar que todos os atributos e métodos da
classe MeioPagamento serão herdados pela classe CartaoCredito, independente da sua
visibilidade. Também qualquer novo atributo criado na classe MeioPagamento passará a ser
herdado pela classe CartaoCredito e não existe a necessidade de criar antes um objeto da
classe MeioPagamento para criar um da classe CartaoCredito.
2.
Utilizando ainda o exemplo do exercício anterior, caso existisse a necessidade de inserir um
atributo para armazenar o valor do limite de gastos diários, que seria único por CartaoCredito,
lembrando que a classe MeioPagamento também tem como herdeira a classe CartaoDebito,
assinale a alternativa correta sobre essa implementação:
Você acertou!
C.
O atributo limiteGastosDiario seria criado somente na classe MeioPagamento
O atributo seria criado somente na classe MeioPagamento. Apesar do limiteGastosDiario ser
único por CartaoCredito, isso se refere ao valor do atributo limiteGastosDiario, então não existe
relação com o atributo não ser possível de ser herdado. Além do mais, CartaoCredito é um tipo
de MeioPagamento e atributos comuns a MeioPagamento devem ficar na classe mãe. Os
métodos get e set seriam criados na classe MeioPagamento, mas o atributo limiteGastosDiario
também e não um em cada classe. Não existiria necessidade de criar um atributo em cada
classe, mesmo que CartaoDebito e CartaoCredito possuam limiteGastosDiario diferentes.
3.
Em algumas linguagens de programação orientada a objetos, como C++ e Python, é possível
que uma classe possua relacionamento de herança com mais de uma classe. Assinale a
alternativa correta quanto ao nome desse tipo de herança:
Você acertou!
D.
Herança Múltipla.
Quando uma classe tem relacionamento de herança com mais de uma classe, esse tipo de
relacionamento é chamado de Herança Múltipla. As demais denominações - Herança
Composta, Herança Binária, Herança Dupla, Herança Associativa - não existem. Dizem-se
Herança Simples, quando herda de apenas uma classe, e Herança Múltipla como nesses casos.
4.
Em herança entre classes, existe a possibilidade de uma classe herdeira reescrever um método
implementado pela classe mãe. Dessa forma, a classe herdeira atribui um comportamento
diferenciado ao da classe mãe, sendo o nome desse conceito polimorfismo. Assinale a
alternativa correta sobre o polimorfismo:
Você acertou!
E.
O polimorfismo é uma característica em orientação a objetos que usa a hierarquia de objetos.
O polimorfismo é um conceito que se utiliza de herança e consequentemente hierarquia de
objetos. O polimorfismo estático, no qual a assinatura dos métodos é alterada, trata de um
conceito que surgiu com os demais, assim como herança na orientação a objetos, e pode ser
aplicado tanto em casos de herança simples como múltiplas. Não existe limitação quanto à
quantidade de métodos da superclasse por uma subclasse, desde que esta herde os métodos
da superclasse.
5.
Existem duas formas de implementação de polimorfismo. Uma se dá quando se tem a mesma
operação implementada várias vezes na mesma classe e a outra acontece na herança, quando
a classe herdeira altera o método original. Assinale a alternativa correta quanto ao nome desses
tipos de implementação de polimorfismo:
Você acertou!
A.
Sobrecarga e Sobreposição.
O tipo de polimorfismo onde um método é implementado várias vezes é chamado de
polimorfismo estático ou Sobrecarga e o que altera o método original é chamado de
polimorfismo dinâmico ou Sobreposição. Portanto Estático e Sobrecarga são a mesma coisa,
assim como Dinâmico e Sobreposição. Já Alternativo não é um tipo de implementação de
Polimorfismo.
__________________________________________
1.
As classes abstratas são classes que determinam um tipo, são como uma espécie de rascunho
de como as classes que a implementam devem se comportar.
Sobre os conceitos de uma classe abstrata, assinale a alternativa correta:
Você acertou!
C.
Classes abstratas não podem ser instanciadas.
Em uma classe abstrata, não é necessário que todos os métodos sejam definidos como
abstratos.
Não existe restrição ao conceito de polimorfismo pelas classes herdeiras, ao contrário, a
obrigação de implementação de métodos abstratos pelas classes herdeiras é o conceito de
polimorfismo dinâmico.
 As classes abstratas não podem ser instanciadas, apenas definem o modelo que deve ser
seguido por suas classes herdeiras.
Não é necessário que as classes herdeiras implementem todos os métodos das classes
abstratas.
Classes abstratas não são um tipo de encapsulamento, seu conceito é justamente ao contrário,
deixando a implementação por conta das classes herdeiras.
2.
Outras questões são também importantes ao considerar o conceito de classes abstratas.
Analise as afirmativas a seguir e assinale aquela que está correta acerca dos conceitos de
classes abstratas.
Você acertou!
A.
Uma classe abstrata pode herdar de outra classe abstrata.
Uma classe abstrata pode herdar de outra classe abstrata, não existe restrição.
Os métodos abstratos não têm implementação na classe abstrata; são implementados pelas
classes herdeiras.
Apesar de as classes abstratas não conterem instâncias, elas são consideradas superclasses.
Nas classes abstratas podem ser definidos métodosconstrutores e eventos como em outras
classes e a sua funcionalidade é complementada pelas classes derivadas, pois estas
implementam os métodos abstratos da classe.
3.
Classes abstratas têm um significado diretamente ligado ao conceito de herança. São classes
que não fazem sentido sem que exista uma relação de herança de outras classes com a classe
abstrata.
Em relação a essa afirmativa, marque a alternativa correta sobre a relação entre classes
abstratas e herança na orientação a objetos:
Você acertou!
D.
As classes abstratas impedem que a instância de objetos seja a partir da classe genérica.
Com a utilização de classes abstratas, diferentemente do caso de herança, não é possível um
objeto ser instanciado a partir da classe genérica ou superclasse. Os métodos genéricos, tanto
em herança como em classes abstratas, podem tanto ser implementados na classe genérica
como nas derivadas, apesar de o ideal ser somente na primeira.
 As classes abstratas são declaradas de forma diferente da superclasse na herança, caso
contrário não fariam sentido, e, tanto em classes abstratas como em herança, novos métodos
podem ser acrescentados na classe abstrata após herança com uma classe derivada.
4.
As interfaces em programação orientada a objetos são outro recurso importante e que,
dependendo do contexto, possibilita algumas vantagens se comparado ao uso de classes
abstratas.
Uma das principais vantagens da utilização de interfaces está relacionada ao fato de que:
Você acertou!
E.
A vantagem principal das interfaces é que não há limites de quantas interfaces uma classe pode
implementar.
A principal vantagem das interfaces é que não existe um limite de quantas interfaces uma classe
pode implementar, diferentemente de classes abstratas.
As interfaces, todavia, exigem que as classes que as referenciam implementem todos os seus
métodos. Não existe vantagem em otimização de memória entre uma ou outra, isso depende da
implementação do programa. Assim como nas classes abstratas, não é possível instanciar
objetos a partir das interfaces.
 As interfaces não definem um tipo de classe padrão, isso está mais relacionado às classes
abstratas.
5.
O seguinte trecho de código em linguagem de programação Java especifica uma interface para
classes que implementem um tipo de FiguraGeometrica:
public interface FiguraGeometrica
{
public String getNomeFigura();
public int getArea();
public int getPerimetro();
}
Assinale a alternativa que contém uma afirmativa correta sobre o trecho apresentado:
Você acertou!
A.
As classes podem conter diferentes implementações dos métodos de FiguraGeometrica.
Como se trata de uma interface, é possível afirmar que todas as classes que implementam a
interface podem ter diferentes execuções dos seus métodos.
Todas as classes que herdam, necessariamente, devem implementar, mesmo que igualmente,
os seus métodos, mas todos devem obedecer à assinatura dos métodos definidos na interface.
Pode-se ter outra interface FiguraGeometrica com um nome diferente; e as classes podem
implementar uma ou outra, ou mesmo as duas.
Não é possível afirmar que todas as classes implementam todos os métodos com o mesmo
escopo, apesar de ser possível, pois as interfaces não restringem isso.
_______________________________________
1.
A orientação a objetos representa uma nova forma de pensar e desenvolver programas,
acrescentando economia e eficiência ao software.
Analise as informações:
 No que diz respeito às classes e aos objetos, as informações tratam, respectivamente, de:
Você acertou!
A.
Atributos e métodos da classe Conta.
Os dados demonstrados correspondem aos atributos instanciados na classe, bem como os
métodos ou os comportamentos que tais atributos poderão realizar na classe Conta. Variáveis
são estruturas que alocam espaço na memória do computador. Abstração significa extrair
apenas o relevante de determinados blocos de código. É um dos pilares da orientação a objetos.
2.
O paradigma da orientação a objetos absorveu grande parte do mercado de desenvolvimento e
essa realidade cresce diariamente. Esse escopo tornou a forma de programar mais produtiva,
inserindo estrutura de dados, cada qual com a sua utilidade, bem como fundamentos básicos
que são os pilares da orientação a objetos. Sabendo disso, analise a situação a seguir:
Dados os seguintes códigos Java:
Código 1:
public class Pessoa{
public String nome;
public int idade;
}
Código 2:
public class Aluno extends Pessoa{
public String matricula;
}
Qual dos mecanismos da orientação a objetos está presente no código 2 em relação ao código
1?
Você acertou!
B.
Herança.
O código 2 demonstra que a classe Aluno herdou os atributos da classe Pessoa. Sintaticamente,
isso ocorre por meio do termo extends, que representa "herdar" nessa linguagem. Independente
da linguagem de programação e herança, é a capacidade de reaproveitar o código de outras
classes, otimizando o projeto do software. Abstração, polimorfismo e encapsulamento
representam os outros três pilares da orientação a objetos com mecanismos diferentes e
particulares em relação à herança.
3.
 A linguagem Java é a mais utilizada mundialmente. Ela pertence à Oracle e tem diversas
bibliotecas e ambientes de desenvolvimento próprios para auxiliar o desenvolvedor. Sua
plataforma permite que se desenvolva aplicações em Java para serem utilizadas em qualquer
tipo de dispositivo. Como se chama o resultado da compilação de um código Java resultante da
execução de um programa nessa linguagem?
Você acertou!
C.
Bytecode.
O compilador gcc compila e interpreta o código, produzindo o bytecode, que é o código
resultante da compilação de um código Java. A JVM é uma máquina virtual desenvolvida e
fornecida pela Oracle que tem a função de interpretar o bytecode e permitir que os programas
escritos em Java possam funcionar em qualquer plataforma. IDE's são ambientes integrados de
desenvolvimento, também conhecidos como frameworks, que têm comportamentos e
particularidades que permitem desenvolver nas mais diversas linguagens.
4.
Juliano trabalha na empresa WTec e, recentemente, foi incumbido da tarefa de desenvolver um
sistema financeiro para um dos clientes da empresa. Passada a fase da implementação, o
próximo passo para Juliano foi demonstrar o sistema para o cliente. Nessa ocasião, ele verificou
que iria precisar realizar a integração com outros sistemas. Qual solução Juliano poderá realizar
para permitir que o seu sistema se comunique com os demais?
Você acertou!
B.
Web Service.
A melhor opção para Juliano, além de desenvolver o seu programa utilizando a orientação a
objetos, seria o desenvolvimento de um Web Service que permitiria integrar o seu sistema aos
demais. Implementar API's, por exemplo, faz com que os sistemas existentes façam requisições
ao sistema de Juliano sem requerer modificações a nível de código de fonte e de base de
dados. Os Web Services funcionam de modo que permitem a sua comunicação, as verificações
de integridade e a capacidade de entrega das informações solicitadas devido a padrões como
SOAP, XML e XSD.
5.
Imagine o seguinte cenário:
Pablo é desenvolvedor em uma empresa e precisa desenvolver um aplicativo para uma pizzaria
que permita que os pedidos sejam feitos por meio dele. Para cada sabor de pizza, o sistema
deve informar o respectivo valor.
Pablo realiza o projeto da seguinte forma:
Ele faz um teste inicial com apenas um sabor, para testar e definir o comportamento da classe
pizza:
public class PizzaCalabresa{
public void preparar () {
System.out.printIn("molho, queijo, calabresa");
}
public void assar () {
System.out.printIn("15 minutos");
}
public void cobrar (){
System.out.printIn("RS 12,00");
}
}
Em seguida, ele define no sistema como será a fabricação de uma pizza:
public class Forno{
public void fabricar (PizzaCalabresa calabresa) {
calabresa.preparar ( );
calabresa.assar( );
calabresa.cobrar( );
}
Nesses dois blocos de código, Pablo define quais ingredientes compõem uma pizza de
calabresa e as três funções que poderão serrealizadas a partir da criação da classe
PizzaCalabresa.
Analise o segundo bloco de código e informe qual pilar da orientação a objetos (OOP)
representa o comportamento da classe Forno. Considere que Pablo deverá implementar
também as classes dos outros sabores de pizza.
Você acertou!
B.
Polimorfismo.
A classe Forno implementa os comportamentos necessários para preparar, assar e cobrar uma
pizza de calabresa. Ela utiliza o comportamento declarado na classe PizzaCalabresa conforme a
sua necessidade. Trata-se de um exemplo prático de Polimorfismo, pois ele habilita o objeto a
se comportar de várias maneiras (de acordo com o sabor da pizza) durante toda a execução do
programa.
Para que não seja necessário reescrever várias vezes uma mesma instrução, é comum usar a
herança para buscar o que se precisa de outras partes do código. No entanto, o
encapsulamento isola partes do projeto, e abstração consiste em abstrair as informações menos
relevantes e focar nas mais relevantes dentro do código. Esses três últimos conceitos, embora
contemplem pilares da orientação a objetos, não são o que Pablo deverá utilizar para otimizar o
seu sistema nesse bloco de instruções.
______________________
1.
Funções lambda, além de anônimas, reduzem expressões de forma significativa, fazendo com
que o maior número de instruções possa ser expresso na mesma linha. Apesar de não ser
considerada uma linguagem funcional, o Python vem implementando diversas funcionalidades,
entre elas as funções lambda, de modo a permitir a otimização de seu código.
Dada a seguinte função lambda na linguagem Python:
lista = [2,3,5,7]
nova_lista = map(lambda x:x*2, lista)
for i in nova_lista:
print i
O que deve ser mostrado na tela?
Você acertou!
B.
4
6
10
14
A função Map tem como objetivo mapear os elementos e retornar os resultados de acordo com
o que o função instruir. Neste caso, o solicitado era a varredura do array e a multiplicação de
cada elemento por 2.
2.
As funções internas ou embutidas, como filter, permitem que os dados sejam filtrados de uma
lista a partir de uma instrução computacional. Essa função evita a necessidade de mudança de
estado das variáveis, que tende a tornar expressões impuras.
Observe a função e diga qual mecanismo lambda está expresso na sentença:
lista1 = range(1, 20)
lista2 = filter (lambda x: x % 4 == 0, lista1)
for i in lista2:
print i
A saída é a seguinte:
4
8
12
16
Você acertou!
A.
Filter.
A função filter, como o próprio nome sugere, filtra os elementos e retorna valores que, quando
comparados à uma instrução computacional, são verdadeiros. Neste caso, foi dado um intervalo
de 1 a 20 em que a função solicitava que cada item fosse verificado e que, se o resto da divisão
por 4 fosse zero, o valor deveria ser mostrado na tela. Map, zip e reduce são outras funções que
também podem ser utilizadas em programação funcional, com funcionalidades diferentes. A
recursividade é justamente o que se evita ao utilizar funções como a filter, pois esta geralmente
realiza a mudança de valores de uma variável, o que a torna impura e não correspondente ao
objetivo da programação funcional.
3.
As funções Map, Filter e outras nos permitem manipular listas de forma limpa e prática, sem que
isso cause efeitos colaterais no restante do código. Sabendo disso, analise a seguinte situação:
Laura está modificando o sistema financeiro da universidade em que trabalha. O gerente
financeiro solicitou que fossem calculados diariamente os valores recebidos nas negociações
com os alunos. Laura sabe que todos os valores inseridos no sistema são armazenados em um
array. Qual função lambda Laura poderá utilizar para somar todos os valores inseridos no
sistema e, ao final do dia, entregar para seu gerente o montante total?
Você acertou!
D.
Reduce.
Laura deverá utilizar a função Reduce, que retorna argumentos de forma cumulativa e coloca-os
em uma nova lista. A função Map varre listas e realiza a ação dentro da função com cada item.
A função Filter também mapeia listas e realiza um filtro que satisfaça a condição atribuindo True
a ela. A função Soma está dentro do escopo da orientação a objetos e precisaria de ajustes
como a incrementação, que não fazem parte da programação funcional. Booleana é a operação
que retorna um valor verdadeiro ou falso. Esta verificação é feita na execução das funções Map,
Filter e Reduce como parâmetro para mostrar os elementos na tela.
4.
De modo geral, o uso de funções lambda entrega ao desenvolvedor a possibilidade de um
código mais limpo, conciso e imutável. São as chamadas funções puras. Para tanto, é preciso
compreender a notação nativa da linguagem e a notação lambda, para só então entender a
transformação realizada nas linhas do código. Sabendo disso, analise a situação:
Dada a função soma em Python, escolha a alternativa que representa a conversão utilizando
lambda para reescrever o código:
def soma (a,b,c):
return a+b+c
>>> x = soma
>>> x(10,20,30)
>>>60
Você acertou!
C.
f = (lambda a,b,c : a+b+c)
f (10,20,30)
A sintaxe do cálculo lambda diz que uma função deve ser igual ao operador, seguido aos
argumentos da função e da instrução que se deseja realizar. Sendo assim, a função f deverá ser
igual ao operador lambda (no caso da sintaxe Python), seguido dos argumentos que estão
sendo passados (a, b, c) e, por fim, o que se deseja realizar na função soma de a+b+c. Ao final,
são definidos os valores dos argumentos para que seja realizada a função Soma.
5.
De forma muito clara e amigável, a função Filter realiza a verificação de uma lista e a extração
dos elementos solicitados pela expressão ou função diretamente ligada a ela. Como resultado,
ela traz uma nova lista contendo os elementos extraídos após a execução da função.
Analise a função lambda que recebe um array com as alturas de todos os candidatos de uma
agência de propaganda. Verifique a sintaxe e marque a alternativa que informa o que a função
irá retornar na tela:
alturaMetros=[1.65,1.80,1.72,1.74,1.68,1.91]
def main( ):
print filter(lambda x: x > 1.70 > 1.90 ,alturaMetros)
return 0
if name == ' main ':
main( )
Você acertou!
E.
[1.80, 1.72, 1.74]
A função lambda traz uma variável contendo alturas entre 1.65 e 1.91 e pede que, por meio da
função Filter, sejam retornados os valores do array maiores que 1.70 e menores que 1.90. Com
isso, os valores mostrados na tela serão: [1.80, 1.72, 1.74].
1.
As funções puras nos dizem que uma função terá sempre a mesma saída a partir de uma
mesma entrada. Sabendo disso, pense em uma solução para a seguinte questão:
Você é assessor de TI do gabinete de um vereador de sua cidade. Minutos antes de uma
cerimônia, ele solicita que você insira a string "Sr." na frente do nome de todos os 200
convidados para o evento. Essa lista é extraída do sistema que você administra e precisa ser
deixada na portaria para aguardar a chegada dos convidados.
Qual das alternativas abaixo indica uma função que você utilizaria para resolver essa situação
em nível de código?
Você acertou!
B.
Função map.
Dentre as alternativas, a função map seria a ideal para auxiliar em uma solução de código que
varreria a lista de convidados e, a partir daí, inseriria uma expressão lambda para inserir a string
"Sr.". A função filter iria filtrar dados, sendo que seria necessário aplicá-la em todos os nomes. A
função zip retorna uma lista de tuplas e é ideal para a criação de conjuntos de dados. A função
reduce, por sua vez, faz o somatório dos elementos do arry, e a função currying recebe
parâmetros parcialmente e retorna uma nova função.
2.
A compreensão de listas em programação funcional permite criar soluções de problemas
complexos a partir da manipulação destas. Embora a linguagem Haskell não seja uma
linguagem muito utilizada, é bem fácil de ser interpretada e sua notação é simples.
Dada a seguinte expressão na linguagem funcional Haskell, identifique a alternativa que
representa o que está sendo pedido por ela:
ghci > [x*2+1 | x <- [1...1000] ] . x
Você acertou!
A.
Pede que números de 1 a 1000 sejam multiplicados por 2e somados por 1.
A expressão Haskell denota que os elementos no intervalo de 1 até 1000 sejam executados de
tal forma que cada elemento executado seja multiplicado por 2 e ao produto seja somado 1. Isso
é possível de ser verificado a partir de algumas particularidades da linguagem:
– Os pontos de reticência (...) denotam a continuidade de um intervalo, ou seja, todo o intervalo
entre o primeiro e o último elemento, e não apenas o 1 e o 1000.
– Na linguagem Haskell, a saída da função fica à esquerda, diferente de muitas outras
linguagens, em que as instruções da função geralmente ficam no final da linha. Nesse caso, é
solicitado que o "x" (todos os elementos entre 1 e 1000) seja multiplicado por 2 e somado a 1.
Isso inclui o 1 e o 1000 e exclui os valores que vêm antes e depois deles.
3.
Davi começou a trabalhar no NTI da Embrapa de sua cidade e está tendo seus primeiros
contatos com linguagens funcionais. Seu chefe disse que ele irá trabalhar nos projetos de
pesquisa genética de gado. Davi, atualmente, programa em Python, então seu superior lhe deu
uma apostila de programação funcional e o seguinte problema para resolver:
Faça uma função que retorne todos os dados negativos dessa lista, que se refere ao aumento
de peso do gado no último semestre.
Qual das expressões abaixo conseguiria retornar o que foi pedido para Davi?
Você acertou!
A.
def NumNeg (numeros) : return (list(filter(lambda numero: numero < 0, numeros)))
Utilizando um filtro e a expressão lambda, cada número será verificado para ver se é menor que
zero. A expressão def NumNeg (numeros) : return (list(filter(lambda numero: numero < 0,
numeros))) retorna um array com a lista contendo apenas os números negativos. Sinais de >
(maior) e = (igual) anulam as demais questões, tornando-as impossíveis de retornar o que se
pede. A função reduce acarreta a aglomeração de valores, ou seja, seu somatório e a redução a
apenas um número; portanto, não está de acordo com o enunciado.
4.
Um sistema eficiente tem em suas linhas conceitos que permitem herdar, abstrair e modificar
atributos e métodos. Os conceitos de programação funcional, por meio da pureza de funções,
elevam o nível de abstração de uma aplicação, entregando muita qualidade.
Nesse sentido, analise qual das alternativas a seguir está correta em relação à função abaixo:
def analisa_func(elemento, indice):
elementos [indice] +=1
return elementos
Você acertou!
C.
Trata-se de uma função impura, pois a lista chamada elemento sofre mudança a cada execução
da função, conforme o incrementador logo abaixo.
Trata-se de uma função impura, pois a lista chamada elemento é incrementada a cada
execução da função. Um detalhe importante da programação Python é que ela não é uma
linguagem funcional, mas permite implementar diversos conceitos de programação funcional.
Função pura é imutável e não tem alteração de estado, essa é a definição.
5.
Leonardo está desenvolvendo uma aplicação mobile utilizando React. Em um dado momento do
código, ele está implementando um bloco que receberá o somatório de dois parâmetros e a
multiplicação de outro. Qual solução funcional (função) ele pode implementar para que esse
código tenha uma correta implementação e maior facilidade de verificação de erros?
Você acertou!
D.
Função currying.
Ele poderá implementar a função currying, para receber todos os parâmetros de multiplicação e
soma e executá-los um a um, retornando uma nova função até chegar a um único argumento. A
função filter trata de listas filtrando dados a partir de uma dada instrução. Compreensão de listas
é utilizada para realizar cálculos complexos em listas com verificação de intervalos e condições
matemáticas mais complexas. A função map varre uma dada estrutura (lista, tuplas e outras)
para executar individualmente as instruções nos elementos. A função zip reúne elementos e
retorna listas de tuplas.
________________________________________
1.
A programação funcional contém alguns conceitos básicos que caracterizam a sua forma de
resolver problemas computacionais. Pureza, funções anônimas, imutabilidade, funções como
objeto de primeira classe e de ordem superior são só algumas particularidades desse
paradigma.
Baseado nas premissas e dada a função em Java Script, assinale a alternativa correta quanto à
característica/classificação dessa função:
var minhaVar = function minhaFunc () {
};
console.log(minhaVar);
Você acertou!
A.
Função de primeira classe.
A função acima denota uma função de primeira classe, pois caracteriza uma função sendo
atribuída a uma variável. Funções de ordem superior e funções de alta ordem são funções que
recebem ou retornam outras funções. A função Map é um exemplo de função de ordem superior
e tem como principal função executar a instrução escrita em todos os elementos do array. Uma
função lambda também é conhecida como função anônima e possibilita tornar um código
funcional a partir de sua utilização.
2.
Sabe-se que as funções podem ser repassadas como argumento de outras funções, e a esse
tipo damos o nome deHigh Order Functions (Funções de Ordem Superior).
Sabendo disso, imagine o seguinte cenário:
Você trabalha em um escritório e cuida a gestão de TI de toda a empresa. Você precisa gerar
um relatório e verifica que os valores estão invertidos e que você precisa revertê-los.
Marque a alternativa que corresponde à função de ordem superior capaz de resolver essa
questão, dada a seguinte lista com os dados a serem revertidos:
[[135 , 335], [228 , 336], [345 , 478], [459 , 115], [552 , 636]]
Você acertou!
B.
lista = [[135 , 335], [228 , 336], [345 , 478], [459 , 115], [552 , 636]]
def func_rev(x):
return list(reversed(x))
list(map(func_rev, lista))
Dada a lista, o primeiro passo é declarar uma função que recebe um parâmetro e irá retornar o
parâmetro revertido. Feito isso, utilizando a função Map, irá varrer a lista e executar a reversão
dos valores dessa lista.
3.
Você é desenvolvedor júnior de uma empresa e está trabalhando em um sistema para uma
livraria. Terminado o CRUD (Create, Read, Update, Delete) que irá permitir aos usuários
cadastrar todos os livros do estabelecimento, você percebeu que precisa fazer com que os
dados sejam ordenados alfabeticamente para a emissão de relatórios.
Qual função de ordem superior você utilizaria para fazer isso?
Você acertou!
C.
Função Sorted.
A função Sorted seria a ideal para realizar a ordenação dos livros cadastrados no sistema. Essa
função possibilita que os objetos iteráveis possam ser ordenados pelo índice. Por exemplo: o
índice 0 do nome Pedro é o P, então esse parâmetro pode ser passado como instrução para que
todos os autores ou títulos cadastrados sejam ordenados.
A função Map ajuda a realizar essa verificação em cada um dos elementos; Filter filtra os dados
de acordo com a instrução passada; Reduce reduz os valores até que exista apenas um; e Zip
retorna uma sequência de tuplas, mas não ordena.
4.
Funções representam uma importante parte da Programação Funcional. Elas podem ser
definidas dentro de um bloco de código de outras funções e também podem ser retornadas a
partir das chamadas de outras funções.
Dada a função a seguir em Python, a partir dos conceitos estudados nesta Unidade de
Aprendizagem, marque a alternativa que assinala o resultado de sua execução:
lista_1 = [6, 7, 8, 9]
lista_2 = [1, 2, 3, 4]
for x in zip (lista_1, lista_2):
print(x)
Você acertou!
A.
(6, 1)
(7, 2)
(8, 3)
(9, 4)
A função Zip retorna uma lista de tuplas em que são agrupados os valores que se referem ao
mesmo índice. Listas que têm tamanhos diferentes são comparadas e os valores diferentes são
desconsiderados.
5.
Operadores são importantes módulos que permitem que blocos de instruções fiquem fáceis e
legíveis. Tratando-se de linguagens multiparadigmas, em que podemos utilizar funções
anônimas lambda, esses operadores substituem de forma prática os parâmetros compostos por
letras e operadores.
Dada a expressão lambda de soma, utilize um operador correspondente na linguagem Python,
que irá substituir sem que a função percaa sua característica e saída:
>>> adicao= lambda x, y : x + y
>>> print (soma (5,6))
>>> 11
Você acertou!
E.
print (reduce(add, [5,6]))
A expressão lambda do enunciado pode ser substituída pelo operador add juntamente com a
lista de parâmetros a serem somados. A função Map não seria capaz de reduzir a lista a um só
valor. No entanto, a função Reducecomplementa a instrução, fazendo com que o array seja
reduzido a um único valor, o que torna a última alternativa verdadeira. O operador mulrealiza a
multiplicação dos valores de um array.
1.
A teoria das categorias é uma teoria matemática, cujos preceitos auxiliam a nortear a
computação funcional. Em suma, ela trata de forma abstrata os valores matemáticos e a relação
entre eles.
Avalie as expressões a seguir e marque a alternativa que os define conceitualmente.
0+10 == 10 + 0 == 10
[ ] ++ 1,2,3 == 1,2,3 ++ [ ] == [1,2,3]
Você acertou!
A.
Monoide.
Monoides seguem a teoria das categorias e o princípio da identidade, que diz que duas
expressões podem ser unidades, contanto que não produzam efeitos. Bind é o principal
operador monádico. Funtor e funtor aplicativo são funções capazes de mapear estruturas
monádicas. Mônadas são estruturas que contêm valores e comportamentos que podem ser
utilizados em outras funções com o auxílio de funtores.
2.
Estruturas monádicas também têm a sua origem na teoria das categorias e utilizam expressões
algébricas para realizar computações que causam efeitos colaterais. Uma mônada utilizada em
determinada função irá gerar outra estrutura de mesmo tipo.
Sabendo disso, dada a função main, que recebe uma string IO, marque a alternativa que
implementa corretamente uma linha de código que recebe uma string e retorna uma mônada IO:
main :: IO ( )
Você acertou!
B.
main = getLine >> = putStrLn
Usando a função ou o operador bind (>>=), é possível aplicar uma mônada de modo que a
função main receba uma string IO e retorne uma mônada IO. Isso é possível por meio do
operador >>= entre a função getLine, responsável pela entrada de strings, passa pelo bind e
retorna uma mônada IO por meio da função putSrLn.
A notação -> significa que uma função está recebendo algum parâmetro; a função print apenas
imprime na tela e não recebe nenhuma entrada.
3.
Funtores são propriedades capazes de mapear um valor encapsulado, acessando o contêiner
para que a função possa executar a sua instrução utilizando um determinado valor.
Baseado nisso, marque a alternativa que corresponde à função responsável pelo
encapsulamento desses diferentes tipos de dados:
Você acertou!
C.
Pure .
Dentro do conceito de funtores e funtores aplicativos, diz-se que funções (ou valores)
encapsuladas são acessadas e geram novas funções ou novos valores também encapsulados.
A função pure realiza o encapsulamento desse novo valor gerado. A função print mostra um
resultado na tela. A fmap é um funtor capaz de acessar dados encapsulados. A função getLine é
um comportamento da função IO ( ), responsável pela entrada de um dado no sistema.
4.
A função ou o operador bind (>>=) retorna a uma função, elemento ou valor monádico. No
entanto, a notação do permite facilitar o trabalho com mônadas de forma mais intuitiva em
relação às outras linguagens mais utilizadas.
Sabendo disso, assinale a alternativa que representa o correto uso da notação do na linguagem
Haskell:
Você acertou!
A.
main :: IO ( )
main = do
line <- getLine
putStrLn line
A função main recebe uma string IO vazia, em seguida, precisa-se declarar a notação do
dizendo que esta deve extrair resultado da função main. Em seguida, precisa-se declarar uma
função de entrada e, finalmente, uma função de saída.
Ponto e vírgula não são utilizados em Haskell e a notação do tipo -> significa que uma função
está recebendo algum parâmetro. Neste caso, precisa-se que a função main retorne algo e não
receba. Portanto, a expressão que representa a correta sintaxe da utilização da notação do é:
main :: IO ( )
main = do
line <- getLine
putStrLn line
5.
A utilização de expressões algébricas, funtores e mônadas permite manipular os mais diversos
tipos de estruturas. Uma dessas estruturas são as listas em que os valores extraídos a partir da
execução de uma dada instrução geram uma nova estrutura de mesmo tipo.
Sabendo disso, analise a função monádica e marque a alternativa que traz o correto resultado
dessa execução:
Prelude Control.Monad > [10,50,60,100] >>= \x -> [x*x +x]
Você acertou!
A.
[110, 2550, 3660, 10100]
A mônada utilizando listas trabalha uma operação de multiplicação e soma, na qual o resultado
retornado será o produto da multiplicação de cada elemento por ele mesmo somado ao seu
próprio valor primitivo. Exemplo: 10*10 = 100; 100 + 10 = 110
Isso acontecerá com todos os elementos da lista
1.
Currying permite quebrar uma função de aridade superior a 1 em uma cadeia de funções de
aridade 1. Nesse caso, se há uma função com três parâmetros, para realizar um cálculo e não
utilizar a técnica de currying, ao enviar somente dois parâmetros na chamada da função, há
como retorno:
Você acertou!
B.
erro de retorno, pois a função necessita que sejam informados os três parâmetros.
Neste exemplo, por não estar utilizando a técnica de currying, haverá um erro no retorno da
função, pois ela está preparada para trabalhar com três parâmetros e a falta de um vai
ocasionar erro de processamento. Não será enviado retorno parcial, porque isso só seria
possível utilizando currying e, muitas vezes, será possível, dependendo do tipo de dado, invocar
a função sem problemas. É preciso enviar sempre os três parâmetros, mesmo que um não seja
utilizado, e o erro de retorno não está associado somente por ser uma função de cálculo.
2.
Currying é uma técnica baseada no princípio de função matemática, criada por Moses
Schönfinkel e Gottlob Frege, difundida principalmente por linguagens de programação funcional,
permitindo aplicar parcialmente uma função a algum dos argumentos da função, por se tratar de
uma técnica de encadeamento de funções. Sobre essa afirmativa, assinale a alternativa correta.
Você acertou!
C.
Aplicar parcialmente uma função está relacionado a aplicação parcial e não a currying.
Aplicar parcialmente uma função está mais relacionado a aplicação parcial do que ao conceito
de currying. Moses Schönfinkel e Gottlob Frege foram os criadores da técnica, e sua maior
utilização é por linguagens de programação funcionais. É baseada principalmente no
encadeamento de funções, em que uma função retorna outra, e no princípio matemático de que
uma função é de aridade 1 e implica outras.
3.
Closure é um conceito que tem relação com a técnica de currying e três cadeias de escopo: seu
próprio escopo; escopo externo, com acesso às variáveis da função exterior; e escopo com
acesso às variáveis globais. Assinale a alternativa correta acerca do que são closures.
Você acertou!
A.
São uma função que tem acesso às variáveis do escopo-pai.
Closures são uma função que tem acesso às variáveis do escopo-pai ou corpo léxico. Esse
conceito não necessita que a linguagem dê suporte a currying, embora permita implementar
técnica de currying. Não é um recurso exclusivo de linguagens funcionais e também não é
considerado função parcial.
4.
Currying e aplicação parcial lidam com parâmetros de funções e podem aplicar parcialmente
seus argumentos. Por isso, é comum uma certa confusão sobre esses conceitos. Assinale a
alternativa correta acerca da diferença entre currying e aplicação parcial.
Você acertou!
E.
As aplicações parciais não se importam com o número de argumentos.
Em aplicação parcial, não é relevante o número de argumentos. A aplicação parcial não é
considerada uma forma de assincronismo em programação funcional, mas na aplicação parcial
é possível realizar a chamada de um método sem informar todos os parâmetros. Não é possível
aplicar currying sobre uma função que não tenha um valor fixo de argumentos. Em currying,
diferentemente de aplicação parcial, sempre vai ser retornada uma função unária.
5.
A aplicação da técnicade currying tem algumas vantagens, além de sua aplicação básica, que é
permitir que uma função receba um único argumento e retorne outra função que recebe o
próximo até ter todos os argumentos necessários. Assinale a alternativa correta acerca de outro
exemplo de vantagem da utilização de currying.
Você acertou!
A.
Permitir aos desenvolvedores um maior nível de controle sobre as funções.
Outra importante vantagem da adoção de currying é permitir aos desenvolvedores um maior
nível de controle sobre suas funções. Currying necessariamente não cria funções com maior
desempenho e usa encadeamento de funções para atender à necessidade de funções
tradicionalmente n-árias. Não é a única forma de criar reusabilidade em programação funcional
e não está relacionada com a criação de redes distribuídas.
1.
As linguagens de programação multiparadgimas se caracterizam por terem suporte ao
desenvolvimento utilizando vários paradigmas de programação, como a orientação a objetos, a
programação imperativa e a programação funcional. O F#, ao suportar tais paradigmas, dentre
outros, caracteriza-se por ser uma linguagem de programação multiparadigma.
Indique quais das opções a seguir representa uma característica da linguagem F#:
Você acertou!
E.
Programação assíncrona.
Programação assíncrona é um dos recursos providos pela linguagem F#, sendo esta uma
linguagem dotada de tipos de dados complexos com alta integração entre outras linguagens da
plataforma .NET, bem como tem uma sintaxe leve e tipos de dados imutáveis por padrão. Sendo
assim, F# não contém uma sintaxe carregada, sendo que os seus dados não são mutáveis por
padrão, bem como, tem alta capacidade de integração a outras linguagens da plataforma .NET.
Além disso, os seus tipos de dados não são simples, mas complexos.
2.
JavaScript é caracterizada por ser uma linguagem de programação multiparadigma, ou seja, é
capaz de proporcionar a programação utilizando diversos paradigmas de forma simultânea em
um mesmo conjunto de código. A cerca da linguagem JavaScript, indique qual afirmação é
correta:
Você acertou!
D.
Proporciona recursos como dialog.
JavaScript proporciona recursos como dialog, além de validação de valores e diversos outros
recursos que minimizam o fluxo de server side, sendo uma linguagem predominantemente
interpretada, bem como contém sintaxe leve e, por conter similaridades junto a outras
linguagens, tem uma grande facilidade de obtenção de mão de obra qualificada. Sendo assim,
não existe dificuldade em obter mão de obra para JavaScript, bem como não contém uma
sintaxe carregada. Não proporciona maior fluxo server-side, mas sim um menor fluxo, além de
não ser predominantemente compilada, mas sim interpretada.
3.
Linguagem de programação multiparadigma que integra o Visual Studio desde a sua versão
2010, sendo que com a sua utilização é possível desenvolver rotinas de alta complexidade em
códigos simples de fácil entendimento e possível de ser integrada a outras linguagens de
programação presentes na plataforma .NET.
Indique qual opção a seguir representa a linguagem de programação indicada:
Você acertou!
E.
F#.
F# foi desenvolvida em 2005, por Don Syme, sendo que dadas as suas excelentes
características, passou a ser suportada pelo Visual Studio em 2010. JavaScript, C++, Python e
C# contêm características diferentes das mencionadas, por exemplo, C++ está presente desde
as primeiras versões do Visual Studio.
4.
Linguagem de programação multiparadigma utilizada de forma predominante em códigos que
operam integrados em arquivos de código HTML, operando em client side, de maneira a
fornecer características como uma gama maior de funcionalidades, propiciando interatividade à
página.
Indique qual opção a seguir representa a linguagem de programação indicada.
Você acertou!
A.
JavaScript.
JavaScript é a linguagem de programação muito utilizada em conjunto com a linguagem HTML
para desenvolver páginas web interativas. F#, C#, C++ e Phyton, apesar de serem linguagens
multiparadigmas, não são utilizadas de forma predominante em conjunto com códigos HTML.
5.
Python é uma linguagem multiparadigma utilizada em grande escala por muitos
desenvolvedores no mundo inteiro, destacando-se por ser uma linguagem open source, ou seja,
o seu código é aberto e disponível a qualquer pessoa para estudos, ou qualquer outra atividade,
desde que alinhada às suas licenças. A cerca dessa linguagem, indique qual alternativa contém
uma afirmativa correta:
Você acertou!
E.
Tem tipagem dinâmica e forte.
Python tem uma tipagem dinâmica e forte na qual dificilmente é necessário informar o tipo de
dados de uma variável. Tem suporte a dados mutáveis e não mutáveis. Sendo uma linguagem
multiparadigma, suporta a orientação a objetos, bem como o conceito de herança é suportado.
Além disso, é utilizado em vários campos, como programação para dispositivos móveis, web,
desktop e várias outras.
_____________________________________
1.
Em linguagens de programação, um objeto imutável é aquele cujo status não pode ser
modificado no decorrer do programa após sua definição, sendo que F# é uma linguagem com
suporte a dados imutáveis e mutáveis.
Indique a opção que apresente uma declaração, respectivamente, de um dado mutável e um
dado não mutável em F#. 
Você acertou!
A.
“let mutable x = 10” e “let x = x + 2”
A expressão "mutable"é utilizada para indicar que a declaração em questão é mutável, uma vez,
que por padrão, F# é uma linguagem de programação imutável. A declaração "immutable" não
existe na linguagem de programação F#, bem como “int x = 10” e “const int x = 12” seria a
resposta caso a linguagem de programação fosse C#, por exemplo. "let" é de uso obrigatório em
qualquer declaração da linguagem F#.
2.
A orientação a objetos é um paradigma de programação muito importante, uma vez que é
possível transferir as características de algo real para um objeto e, assim, trabalhar com ele.
Indique qual das opções representa a declaração utilizada para declarar uma classe em F#. 
Você acertou!
B.
type.
F# tem suporte a tipos complexos, e por meio destes são desenvolvidos objetos previstos no
paradigma orientado a objeto. Dessa maneira, um objeto é declarado por meio da declaração
"type". "let" é utilizado na declaração de expressões, funções, etc., já "abstract" é utilizado na
declaração de métodos abstratos de um tipo complexo, por exemplo, bem como "inherit" é
empregado na criação de herança entre tipos. "class" não realiza nenhuma função especial em
um código F#.
3.
A linguagem de programação JavaScript tem suporte a diversos paradigmas de programação.
Dessa forma, temos recursos importantes disponíveis que facilitam a vida do desenvolver de
aplicativos, como a possibilidade de utilizar funções de alta ordem. Indique a opção que
representa a descrição de funções de alta ordem :
Você acertou!
E.
Capacidade das funções de receber e retornar valores ou funções.
Funções de alta ordem têm a capacidade de criar funções que recebem como parâmetros
funções e valores e podem retornar funções ou valores. A possibilidade de uso opcional do
ponto e vírgula é uma questão de boas práticas de programação. Suporte a herança,
polimorfismo, encapsulamento e abstração pertencem ao paradigma de orientação a objetos. As
funções “while”, “if” e “for” pertencem ao paradigma imperativo, e a diferenciação de maiúsculo e
minúsculo nas declarações significa que o JavaScript é case sensitive.
4.
O JavaScript, na condição de linguagem de programação multiparadigma, é uma linguagem que
tem suporte ao paradigma de orientação a objetos, sendo capaz de criar objetos com atributos e
métodos. Indique a opção que representa a criação de um método para uma classe qualquer em
JavaScript:
Você acertou!
C.
Banco.prototype.boasVindas = function() { alert(‘Olá Cliente!’); }
Banco.prototype.boasVindas = function() { alert(‘Olá Cliente!’); } é a opção correta, uma vez que
está criando um método chamado de “boasVindas“ por meio da funcionalidade “prototype” para
o objeto “Banco”. function boasVindas()

Continue navegando