Buscar

Exercícios de Paradigmas das Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercícios de Paradigmas das Linguagens de Programação
1) Defina análise léxica.
O processo de compilação tem várias fases uma delas é a fase léxica:
– Análise léxica: converte caracteres no programa de origem em unidades lexicais.
2) Defina análise sintática.
O processo de compilação tem várias fases uma delas é a fase sintática:
– Análise de sintaxe: transforma unidades lexicais em árvores de análise que representam a estrutura sintática do programa
3) Defina análise semântica.
O processo de compilação tem várias fases uma delas é a fase semântica:
– Análise semântica: gerar código intermediário.
4) Explique por que a análise léxica é separada da análise sintática e da análise semântica.
Aula 02
5) O que é uma linguagem fortemente tipada?
Linguagem fortemente tipada seria aquela em que os objetos/variáveis tem um tipo bem definido e que precisa ser informado no momento de sua declaração. Um exemplo de linguagem que não é fortemente tipada é justamente o JavaScript.
As linguagens C e C++ também são fortemente tipadas, apesar da discussão em torno do tipo union. Muitos acreditam que o union permite que o programador atribua dados de diversos tipos a uma mesma variável, o que tornaria estas linguagens fracamente tipadas.
6) Explique o que é paradigma orientado a objetos.
– Coleção de objetos que interagem entre si
– Passam mensagens que transformam o estado
dos objetos
– Exemplo:
● Smaltalk /C++ / Java /C#
7) Quais são as características de um paradigma orientado a objetos?
Aula 2 POO
8) Defina herança. Qual a diferença entre herança simples e herança múltipla?
Herança: Permite que características comuns a diversas classes sejam “herdadas” de uma classe base, ou superclasse.
É uma forma de reutilização de software:
– Novas classes são criadas a partir das classes existentes, absorvendo seus atributos e comportamentos e adicionando novos recursos.
Aula 04
Como o java não suporta herança múltipla no caso de classe, mas usando a interface, ele pode obter herança múltipla.
9) O que exatamente significa para uma subclasse ter um relacionamento é-um(a) com sua
classe pai?
10) Explique recursão.
Descrevendo listas:
Listas sintáticas são descritas usando recursão.
Uma derivação é uma aplicação repetida de regras, começando com o símbolo inicial e terminando com uma frase (todos os símbolos terminais)
11) Explique o que é paradigma funcional.
- O design das linguagens funcionais é baseado em funções matemáticas.
- muitas linguagens funcionais suportam as noções de variável, atribuição e laço.
12) Quais são as características de um paradigma funcional?
13) O que é um paradigma funcional puro e impuro?
Linguagens de programação funcional puras:
- Eliminam a noção de célula de memória de uma variável em favor da noção matemática; isto é, uma variável dá nome a uma expressão imutável, que também elimina o operador de atribuição.
- Uma linguagem funcional é pura se não houver nenhum conceito de um operador de atribuição ou de uma célula de memória; caso contrário, dizemos que ela é impura.
Linguagens de programação funcionais retêm alguma forma de operador de atribuição e são, portanto, impuras.
Linguagens Funcionais Puras:
Depende somente da passagem por parâmetro:
Propriedade:
Uma função tem transparência referencial se o seu valor depende somente dos valores de seus argumentos.
14) O que é uma função lambda?
Expressões Lambda:
- Expressões lambda descrevem funções sem nome
- As expressões lambda são aplicadas aos parâmetros, colocando-os após a expressão por exemplo:
- que avalia para 4
15) Dê um exemplo de uma expressão em Scheme.
Introdução:
Scheme não tem nenhuma instrução de atribuição.
- os programas são escritos como funções (repetitivas) sobre valores de entrada que produzem valores de saída;
- os próprios valores de entrada não são alterados.
Scheme está muito mais próxima da matemática do que estão as linguagens de programação imperativa e orientada a objetos como C e Java.
Expressões:
Expressões em Scheme são construídas em notação de prefixo de Cambridge,
- na qual as expressões ficam entre parênteses e o operador ou a função precede seus operandos, como no exemplo:
- ele retorna o valor 4.
Ponto-e-vírgula (;) em Scheme inicia um comentário, que continua até o fim da linha.
Essas expressões aritméticas são exemplos de listas Scheme;
- dados e programas (funções) são representados por listas.
Quando uma lista Scheme é interpretada por uma função,
- o operador ou o nome da função vem após o parêntese esquerdo e os demais números são seus operandos.
Exemplo:
Qual será o resultado? 24
16) Dê um exemplo de uma função em Haskell.
Aula 08
17) Como percorremos as listas em Scheme e Haskell? Dê um exemplo explicativo (pode ser
com desenho).
18) Explique o que é paradigma lógico.
Um programa lógico expressa:
– as especificações para soluções de problemas com o uso de expressões em lógica matemática.
Aula 11
19) Quais são as características de um paradigma lógico?
Características – Parad. Lógico:
Duas características interessantes e diferenciadas dos programas lógicos são:
- Não-determinismo e
- - Um programa lógico não-determinístico pode encontrar várias soluções para um problema em vez de apenas uma, como seria normal em outros domínios de programação.
- Backtracking.
- - Backtracking possibilita o não-determinismo está dentro do interpretador Prolog, e, portanto, é implícito em todos os programas Prolog.
Aula 11
20) Defina igualdade e unificação em Prolog.
21) Defina termo em Prolog.
22) Qual predicado é necessário para realizar cálculos em Prolog?
23) Escreva as seguintes sentenças condicionais descritas em português como cláusulas de Horn
com cabeça em Prolog:
1) Se Frederico é o pai de Michael, então Frederico é um ancestral de Michael.
2) Se Michael é o pai de João e Michael é o pai de Maria, então Maria é a irmã de João.
3) Se Michael é o irmão de Frederico e Frederico é o pai de Maria, então Michael é o tio de Maria.
24) Explique o que é paradigma concorrente.
25) Quais são as características de um paradigma concorrente?
26) Defina o que é sincronização.
27) Defina semáforos e quando o usamos.
28) Defina monitores e quando o usamos.
29) Explique sincronização de competição e de cooperação.
30) O que são threads?
31) Quando eu devo usar o paradigma orientado a objetos, estruturado, imperativo, funcional,
lógico e concorrente?

Continue navegando