Baixe o app para aproveitar ainda mais
Prévia do material em texto
StuDocu is not sponsored or endorsed by any college or university Prova Final - Questões - Resumo Paradigmas de Linguagem de Programação Paradigmas de Linguagem de Programação (Universidade Regional do Noroeste do Estado do Rio Grande do Sul) StuDocu is not sponsored or endorsed by any college or university Prova Final - Questões - Resumo Paradigmas de Linguagem de Programação Paradigmas de Linguagem de Programação (Universidade Regional do Noroeste do Estado do Rio Grande do Sul) Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao https://www.studocu.com/pt-br/document/universidade-regional-do-noroeste-do-estado-do-rio-grande-do-sul/paradigmas-de-linguagem-de-programacao/prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao/5719181?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao https://www.studocu.com/pt-br/course/universidade-regional-do-noroeste-do-estado-do-rio-grande-do-sul/paradigmas-de-linguagem-de-programacao/4136588?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao https://www.studocu.com/pt-br/document/universidade-regional-do-noroeste-do-estado-do-rio-grande-do-sul/paradigmas-de-linguagem-de-programacao/prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao/5719181?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao https://www.studocu.com/pt-br/course/universidade-regional-do-noroeste-do-estado-do-rio-grande-do-sul/paradigmas-de-linguagem-de-programacao/4136588?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao AULA 1 Questão Objetiva: Em um sistema de implementação Hibrido, qual a ordem que acontece a interpretação do código: A) Interpretador > analisador léxico > analisador sintático > gerador de código intermediário > Programa fonte. B) Programa fonte > analisador léxico > analisador sintático > Interpretador. C) Programa fonte > Interpretador. D) Programa fonte > analisador léxico > analisador sintático > gerador de código intermediário > Interpretador. E) Programa fonte > analisador sintático > gerador de código intermediário > Interpretador. R.: D Questão Dissertativa: Quais os principais métodos de implementar linguagens de programação? R.: Compilação, interpretação pura e a implementação híbrida. Cite quais são os critérios de avalição das linguagens de programação: Legibilidade, Capacidade de Escrita e Confiabilidade. O que é a Legibilidade de um programa? É a facilidade com que um programa pode ser lido e/ou entendido partindo do principio da sua linguagem de programação. 2)Qual foi a primeira linguagem de programação desenvolvida para aplicações de IA (Inteligência Artificial) ? a) COBOL b)FORTRAN c) ALGOL60 d)LISP Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao e)FLOW-MATIC 1- Nos últimos 50 anos, qual a linguagem de programação que tem dominado a computação cientifica, as aplicações de negócios e a inteligência Artificial? Respectivamente. A)( ) COBOL, LISP, FORTRAN B)(X) FORTRAN, COBOL, LISP C)( ) LISP, COBOL, FORTRAN D)( ) LISP, FORTRAN, COBOL E)( )Nenhumas das alternativas. A primeira linguagem de alto nível para negócios a ser bem-sucedida foi _________. a) C; b) Visual BASIC (VB); c) COBOL; d) Fortran; e) ALGOL 60; Quais são os principais métodos de implementar linguagens de programação? R.: Compilação, a interpretação pura e a implementação híbrida O que é otimização de compiladores? R: A otimização é um conjunto de técnicas que os compiladores podem usar para diminuir o tamanho e/ou aumentar a velocidade do código que produzem. Com relação aos Conceitos de Linguagem de Programação, marque as principais Categorias de Linguagens: a) Legibilidade e facilidade de escrita. b) Imperativas, funcionais, lógicas e orientadas a objetos. c) Expressividade, confiabilidade, verificação de tipos. d) Tratamento de exceções, utilização de apelidos. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 Cite e explique as fases do processo de compilação. Analisador léxico: agrupa os caracteres do programa fonte em unidades léxicas, que são identificadores, palavras especiais, operadores e símbolos de pontuação. Analisador sintático: obtém as unidades léxicas do analisador léxico e as utilizam para construir estruturas hierárquicas chamas árvores de análise sintática que representam a estrutura sintática do programa. O gerador de código intermediário produz um programa em uma linguagem diferente, em um nível intermediário entre o programa fonte e a saída final do compilador. A otimização melhora os programas tornando-os menores, mais rápidos ou ambos, é uma parte opcional da compilação. A tabela de símbolos serve como uma base de dados para o processo de compilação. A ortogonalidade é fortemente relacionada á: a) Tipos de dados. b) Legibilidade. c) Simplicidade. d) Projeto de sintaxe. e) Facilidade de escrita. O que é o tratamento de exceções? É um critério de avaliação de linguagem. Representa a habilidade de um programa de interceptar erros em tempo de execução (além de outras condições não usuais detectáveis pelo programa), tomar medidas corretivas e então continuar. Qual é um dos critério mais importante para julgar uma linguagem de programação? (X) Legibilidade ( ) Simplicidade Global ( ) Ortogonalidade ( ) Instruções de controle ( ) Expressividade Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao Quais as razões para estudar conceitos de linguagens de programação? As razões são a capacidade aumentada para expressar ideias, embasamento para escolher linguagens adequadas, habilidade aumentada para aprender novas linguagens, melhor entendimento da importância da implementação, melhor uso de linguagens já conhecidas, avanço geral da computação. Qual é o nome da categoria de linguagens de programação cuja estrutura é ditada pela arquitetura de computadores de von Neumann? R: São chamadas de linguagens imperativas. Quais são os três métodos de implementação de linguagens de programação? Implementação baseada em compilação, implementação pura, sistemas de implementação híbridos. Qual destas NÃO é uma fase da compilação? a) Geração de código intermediário b) Análise semântica c) Análise sintática d) Montagem do código fonte e) Análise léxica O que é um ambiente de programação? A) Ferramentas usadas no desenvolvimento de linguagens. B) Ferramentas usadas no desenvolvimento de hardware. C) Ferramentas usadas no desenvolvimento de software. D) Ferramentas usadas no desenvolvimento do processador. E) N.D.A Cite 4 razões para estudar linguagem de programação: Capacidade aumentadapara expressar ideias, maior entendimento da importância da implementação, habilidade para aprender novas linguagens e avanço geral da computação. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 Um programa é dito confiável quando: A. (x) Um programa é dito confiável quando está de acordo com suas especificações em todas as condições. B. ( ) Um programa é dito confiável quando está de acordo com os requisitos levantados pelo analista. C. ( ) Um programa é dito confiável se ele tem a criptografia de ponta a ponta em suas implementações, utilizando chaves assimétricas para garantir a segurança das informações. AULA 5 O que são tipos de dados? Tipos de dados são um conjunto de valores de dados e suas operações pré definidas, que são manipulados por programas e aplicativos de computador para produzir algum resultado. Esse sistema determina como cada tipo é associado com cada expressão na linguagem. Sobre os tipos de dados, assinale a alternativa correta: a) Os tipos inteiro, ponto flutuante, booleano, decimal e carácter são exemplos de tipos primitivos. b) O tipo cadeia de caracteres é um tipo primitivo de todas as linguagens de programação e é essencial para todos os programas que realizam manipulação de caracteres. c) Em todas as linguagens de programação, as matrizes representam conjuntos de elementos do mesmo tipo, elementos que são referenciados por meio de índices. d) Matriz dinâmica de pilha fixa é a classificação onde as faixas dos índices e a alocação do espaço utilizado pela matriz é feita dinamicamente em tempo de execução. e) As variáveis do tipo ponteiro possuem uma faixa de valores que representam endereços na memória e a única operação disponível para variáveis desse tipo é a atribuição. Qual das alternativas a seguir resultará em um erro runtime quando executado em uma JVM? a) int num = 10 * 5 * 10; Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao b) String a1 = “a < b ? “ + new Date(); c) double 15a = 15f; d) Date data = (Date) new Object(); <- Gera uma ClassCastException. O que é um descritor? É a coleção de atributos de uma variável em uma implementação, um descritor é uma área de memória que armazena os atributos de uma variável. Python inclui um tipo de matriz imutável chamado de ___ Tuplas O que é um Ponteiro Solto ou Referência solta? É um ponteiro que contém o endereço de uma variável dinâmica do monte já liberada. Ponteiros soltos são perigosos por diversas razões. A verificação de tipos união requer que cada construção de união inclua um indicador de tipo. Como é chamado tal indicador? I) Índice; II) Discriminante; III) Fatia; IV) Etiqueta; V) Dispersões; Assinale a opção correta: ( ) I, II e V ( X ) II e IV ( ) I ,III e V Que Linguagem de Programação permite um tipo de referência elíptica dentro de estruturas específicas nos campos de registro? - COBOL - Java - Pascal - Ada - C++ Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 Para que são utilizados dos ponteiros? São utilizados para lidar com a flexibilidade e para controlar o gerenciamento de armazenamento dinâmico. Em Java qual é o tipo que substitui ponteiros, e qual é o seu problema? Em Java as variáveis são manipuladas por referência, seu maior problema é a cópia de objetos. Qual é o tipo de dado no qual as variáveis têm uma faixa de valores que constituem em endereços de memória e um valor especial, o valor “nil”? São os ponteiros. A maioria das linguagens, exceto Fortran e Ada, usa quais símbolos para delimitar seus índices na matriz? a) Pareteses ( ) b) Chaves { } c) Colchetes [ ] d) Aspas duplas “ “ e) Aspas simples ‘ ‘ O tipo matriz pode suportar o/os tipos de dados ( ) Heterogêneos ( ) Booleano ( ) Caracter (x) Homogêneo ( ) Númerico AULA 7 Qual o problema para o uso excessivo de desvios incondicionais ou goto? Sem restrições ao uso, essas instruções podem tornar os programas ilegíveis e, consequentemente, pouco confiáveis e difíceis de serem mantidos. A que as primeiras construções iterativas estavam relacionadas? E porquê? Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao As primeiras construções iterativas nas linguagens de programação estavam diretamente relacionadas com matrizes pois, nos primórdios, a computação era numérica por natureza. O que são sentenças de seleção? Fornecer meios para escolher entre dois ou mais caminhos de execução em um programa. Defina vinculação estática e vinculação dinâmica? Estática Variáveis estáticas são vinculadas a células de memória antes do início da execução de um programa e permanecem vinculadas a essas mesmas células até que a execução do programa termine. Dinâmica O tipo de uma variável não é especificado por uma sentença de declarações, nem pode ser determinado pelo nome da variável. Em vez disso, a variável é vinculada a um tipo quando é atribuído um valor a ela em uma sentença de atribuição. Quando a sentença de atribuição é executada, a variável que está recebendo um valor atribuído é vinculada ao tipo do valor da expressão no lado direito da atribuição. Quais as diferenças entre uma sentença de controle de seleção e uma sentença de controle iterativa? Enquanto uma sentença de seleção oferece os meios de escolher entre dois ou mais caminhos de execução de um programa, na sentença iterativa faz com que uma instrução (ou uma coleção de instruções) seja executada um número de vezes. Quais linguagem foram projetadas sem o goto? A ( ) C#, Java e Python. B ( ) Java, Python e Ruby. C ( ) Python, C# e C. D ( ) C, Java e Python. E ( ) Somente C#. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 AULA 8 1. Quais são as três características gerais dos subprogramas? Cada subprograma tem um único ponto de entrada, a unidade chamadora é suspensa durante a execução do programa chamado e o controle sempre retorna ao chamador quando a execução do subprograma termina. 2. O que significa para um subprograma estar ativo? Um subprograma está ativo, se, depois de ter sido chamado, ele iniciou a execução, mas ainda não a terminou. 3. O que é informado no cabeçalho de um subprograma? Primeiro, ele especifica que unidade sintática seguinte é uma definição de subprograma de algum tipo particular. Essa especificação frequentemente é realizada com uma palavra especial. Segundo, ele oferece um nome para o subprograma, e em terceiro lugar pode especificar opcionalmente uma lista de parâmetros 4. Que linguagens permitem um número variável de parâmetros? C, C++, Perl, JavaScript. 5. O que é um perfil de parâmetro? O que é um protocolo de subprograma? O perfil de parâmetro de um subprograma é o número, a ordem e o tipo dos seus parâmetros formais (variável listada no cabeçalho do subprograma), já o protocolo de parâmetro é formado pelo seu perfil mais o tipo de retorno. 6. O que são parâmetros formais? O que são parâmetros reais? -Parâmetros formais são as variáveis colocadas no cabeçalho de um procedimento ou de uma função. -Parâmetros reais são as variáveis ou constantes que aparecem na chamada dos -procedimentos ou das funções. 7. Quais são as vantagens e desvantagens de parâmetros com palavras- chave? -Vantagem: o parâmetro pode aparecer em qualquer ordem. -Desvantagem: o programador deve saber o nome dos parâmetros formais.8. Qual é o uso mais comum de blocos Ruby na linguagem propriamente dita? Especificar um bloco de código na chamada ao iterador, que são usados no processamento de dados em uma estrutura existente. 9. Quais são as diferenças entre uma função e um procedimento? Um procedimento não retorna valor nenhum, a função obrigatoriamente retorna um valor a uma determinada variável. Uma função é ativada quando é avaliada uma expressão que a contém, o procedimento é ativado através de um comando de chamada do procedimento. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao 10. Quais são as questões de projeto para subprogramas? -Há verificação dos parâmetros reais em relação aos parâmetros formais? -Variáveis locais são alocadas estaticamente ou dinamicamente? -A definição de um subprograma pode aparecer dentro de um outro subprograma? -Quais os métodos de passagem de parâmetro são oferecidos? -Subprogramas podem ser passados como parâmetros? -Subprogramas podem ser sobrecarregados ou genéricos? 11. Quais são as vantagens e desvantagens das variáveis locais dinâmicas? As variáveis locais dinâmicas são alocadas quando o programa se inicia e desalocadas quando o programa é encerrado, o ambiente local é ativado em cada ativação. A vantagem é que permite recursividade a memória alocada pela pilha pode ser compartilhada entre os subprogramas. A desvantagem é que o tempo gasto para a reserva e desalocação da memória, não pode reter valores de variáveis locais entre as chamadas. 12. Quais são as vantagens e desvantagens das variáveis locais estáticas? São variáveis que são definidas dentro de um subprograma, e geralmente tem o mesmo escopo do subprograma. -Vantagem: Não há endereçamento indireto (mais eficiente), não existe reserva e libertação de memória. -Desvantagem: Não permite recursividade. 13. Quais são os três modelos semânticos de passagem de parâmetros? Modelos semânticos: -Modo entrada (in mode) -Modo saída (out mode) -Modo entrada/saída (inout mode) Modelos conceituais: Um valor real é transferido fisicamente. Um caminho de acesso é transferido. Modelos de implementação: Passagem por valor, Passagem por Resultado, Passagem por Valor-Resultado, Passagem por Referência, Passagem por Nome. 14. Quais são os modos, os modelos conceituais de transferência, as vantagens e as desvantagens dos seguintes métodos de passagem de parâmetros: por valor, por resultado, por valor-resultado e por referência? Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 Temos os modos de entrada, saída e entrada/saída, um valor real é transferido fisicamente e um caminho de acesso é transferido. Passagem por valor: O valor do parâmetro real é usado para inicializar o parâmetro formal, que então agem como uma variável local. (Modo entrada de dados) Vantagens: As funções ficam impedidas de acessar variáveis declaradas em outras funções. Desvantagens: Requer mais armazenamento, custo para transferir o parâmetro fisicamente. Passagem por resultado: Nenhum valor é transmitido para a o subprograma, modelo de implementação de modo saída, o parâmetro formal age como variável local, mas seu valor é passado para o parâmetro real da chamada. Vantagens: Desvantagens: Pode haver colisão de parâmetros reais, a ordem dos parâmetros reais determina o valor dos parâmetros formais. Passagem por valor-resultado: Vantagens: Desvantagens: Passagem por referência: Vantagens: Desvantagens: Passagem por nome: Vantagens: Desvantagens: 15. Defina vinculação rasa e profunda para ambientes de referenciamento de subprogramas passados como parâmetros? -Vinculação rasa: O ambiente da instrução de chamada que ativa o subprograma passado - natural para linguagens com escopo dinâmico. - Vinculação profunda: O ambiente da definição do subprograma passado natural para linguagens com escopo estático. 16. O que é um subprograma sobrecarregado? Subprograma Sobrecarregado é um subprograma que tem o mesmo nome de outro subprograma no mesmo ambiente de referenciamento. C++, Java e C# permitem (e incluem) subprogramas sobrecarregados. Vantagem: Aumenta a legibilidade. Desvantagem: Dificulta a utilização de reflexão 17. O que é polimorfismo paramétrico? Polimorfismo Paramétrico é uma forma de se tornar uma linguagem mais expressiva, enquanto continua mantendo toda sua tipagem estática segura. Pode-se definir várias funções do mesmo nome, mas possuindo parâmetros diferentes (em número e/ou tipo). O polimorfismo paramétrico torna assim possível a escolha automática do bom método a adoptar em função do tipo de dado passado em parâmetro. 18. Quais são as questões de projeto para funções? - Os efeitos colaterais são permitidos? - Que tipos de valores podem ser retornados? - Quantos valores podem ser retornados? 19. Que linguagens permitem que o usuário sobrecarregue operadores? Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao C++ e C# 20. De que maneiras as corrotinas são diferentes dos subprogramas convencionais? Uma corrotina é um subprograma especial que possui múltiplas entradas, as corrotinas chamadora e chamada estão em um relacionamento mais igualitário. AULA 9 1. Descreva os três recursos característicos das linguagens orientadas a objetos. Tipos de dados abstratos, herança e um tipo particular de vinculação dinâmica. 2. Qual é a diferença entre uma variável de classe e uma variável de instância? Variáveis de classes: Elas são visíveis e compartilhadas para os métodos de classe e os métodos de instância de uma classe e até mesmo pela definição da própria classe, com ela é possível que todos os objetos a compartilhem. Se você lembrar da programação tradicional, ela funciona como se fosse uma variável global. Assim como as variáveis de instância, as variáveis de classe são encapsuladas; podem ser usadas na implementação de uma classe, porém não permitem acesso direto. Variáveis de instância: Uma variável de instância é uma variável cujo valor é específico ao objeto e não à classe. Uma variável de instância em geral possui uma valor diferente em cada objeto membro da classe. 3. O que é herança múltipla? Em orientação a objetos, é o conceito de herança de duas ou mais classes. Ela é implementada nas linguagens de programação C++ e em Python, por exemplo. A linguagem Java possui apenas herança simples (uma classe possui no máximo uma classe pai), mas permite que uma classe implemente várias interfaces. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 4. Descreva uma situação na qual a vinculação dinâmica tem uma grande vantagem sobre sua ausência. Permitir que os sistemas sejam mais facilmente estendidos tanto durante o desenvolvimento como durante a manutenção. 5. O que é uma classe aninhadora? A palavra “aninhadas” em programação diz respeito que é uma subrotina encapsulada noutra. O escopo da subrotina aninhada é limitado a subrotina que a encapsula. Isso significa que ela pode ser chamada somente pela subrotina que a encapsula, ou pelas subrotinas diretamente ou indiretamente aninhadas pela mesma subrotina encapsuladora. O aninhamento é teoricamente ilimitado, ainda que na prática somente alguns níveis são aceitos, o que depende da implementação. 6. Explique como as mensagens Smalltalk são vinculadas a métodos. Quando isso ocorre? A vinculação dinâmica de Smalltalk permite que erros de tipo passem sem ser detectadosaté a execução. 7. Que desvantagem existe em permitir que os projetistas especifiquem que métodos podem ser estaticamente vinculados? Pode ocorrer uma sobrecarga de alocação e liberação, pois a instancia precisa armazenar os ponteiros cada vez. 8. Que parte importante do suporte para programação orientada a objetos faltava em SIMULA 67? A parte de integração, de uma interface gráfica com o usuário, que permitisse a execução de forma iterativa, sem que fosse somente utilizado para descrição e simulação de sistemas complexos. 9. Você pode definir uma variável de referência para uma classe abstrata? Que uso tal variável teria? Sim, serve para o polimorfismo e herança dos atributos e métodos. 10. Compare a detecção de erros de tipo para variáveis de instância em Java e em Ruby. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao A declaração de variáveis de instância no código do Ruby é mais fácil de detectar pelo fato de usar @ como prefixo já no Java você invoca a variável referenciando com “instanceof”. AULA 11 1. O que é um descritor? Os descritores também chamados de getter e setter, são funções públicas que são usadas para obter e definir uma variável privada. Em outras palavras é um indicador abstrato para acessar um arquivo. 2. Defina exceção, tratamento de exceção, levantar uma exceção, desabilitar uma exceção, continuação, finalização e exceção pré- definida. Exceção: qualquer evento, errôneo ou não, que seja detectável por hardware ou software e que possa exigir processamento especial. Existem situações nas quais uma condição ou evento não desejados ocorrem, sendo nestes casos necessário invocar (levantar) uma exceção de forma a sinalizar um erro no momento da execução. A invocação de uma exceção é geralmente referenciada como sinalização da exceção, do erro encontrado. Continuação: depois que um manipulador de exceção executa, duas coisas podem ocorrer: o controle pode transferir-se para algum outro lugar no programa pode ser finalizada. 3. Quais são as vantagens de ter suporte pré-definido para tratamento de exceções em uma linguagem? As exceções verificadas podem, em tempo de compilação, reduzir consideravelmente (mas não eliminar inteiramente) a ocorrência de casos em que de exceções não tratadas emergem para fora da aplicação. 4. Quais são as questões de projeto para tratamento de exceções? As questões seriam: Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 - Como e onde os tratadores de exceções são especificados e qual o seu escopo? - Como uma ocorrência de uma exceção é vinculada a um tratador de exceção? - A informação acerca de uma exceção pode ser passada para o tratador? - Onde a execução continua, se é que continua, após um tratador de exceção completar sua execução? (Essa é a questão da continuação ou reinício) / Alguma forma de finalização é fornecida? - Como as exceções definidas pelo usuário são especificadas? •Se existem exceções pré-definidas, devem existir tratadores de exceção padronizados para programas que não forneçam os seus? - As exceções pré-definidas podem ser explicitamente levantadas? - Os erros detectáveis por hardware são considerados exceções que devem ser tratadas? - Existe alguma exceção pré-definida? - Deve ser possível desabilitar exceções pré-definidas? 5. O que significa para uma exceção ser vinculada a um tratador de exceção? Se uma exceção é levantada em um bloco ou unidade que não tem um tratador para essa exceção em particular, ela é propagada para algum outro bloco ou unidade. Ou seja, o bloco de código que gera a exceção está vinculado à ela, sendo responsável por chamar os procedimentos de tratamento. 6. Descreva três problemas com o tratamento de exceções de Ada. - Os tratadores de exceção podem ser incluídos em blocos ou em corpos de subprogramas, pacotes ou tarefas Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao - Como os tratadores de exceção são geralmente locais ao código em que a exceção pode ser levantada, eles não têm parâmetros - A inadequação do tratamento de exceções para tarefas. Por exemplo: quando uma tarefa levanta uma exceção e não a trata, simplesmente morre. 7. Como um tratador de exceção pode ser escrito em C++ e em Java de forma que ele trate qualquer exceção? Utilizando os operadores try e catch: Forma geral do tratador: try { código que pode levantar uma exceção } catch ( formal parameter ) { corpo de um tratador } ... catch ( formal parameter ) { corpo de um tratador } 8. Quais são as diferenças entre uma especificação throw em C++ e uma cláusula throws em Java? Em C++ todos os tipos (incluindo primitivos e ponteiros) podem sem lançados como exceções. Já em Java, que é baseado no de C++, mas projetado para estar mais alinhado com o paradigma de linguagem orientada a objeto, todas as exceções em Java são objetos de classes descendentes de Throwable, todos os objetos dessa classe ou de suas subclasses podem ser gerados ou capturados por meio do tratamento de exceções. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 Em C++ existe um catch especial que pode capturar todos os tipos de exceções: catch (...){}. Em Java, de maneira similar, é possível capturar qualquer Exception por meio do código catch (Exception ex){}. 9. De que maneiras o tratamento de exceções e o tratamento de eventos são relacionados? De forma que uma exceção é um evento não esperado. Em ambos os casos os tratadores são implicitamente chamados pela ocorrência de algo, seja uma exceção ou um evento. 10. O que é um escutador de evento? O escutador de evento é um procedimento ou função que responde à execução de um evento, como por exemplo os métodos OnClickListener, que quando definidos, executam comandos logo após o clique do mouse. O escutador é criado com addItemListener. AULA 12 1. O que uma expressão lambda especifica? Expressão lambda especifica os parâmetros e o mapeamento de uma função. 2. Que tipos de dados eram parte do LISP original? Existiam apenas dois tipos de objeto de dados no LISP original: átomos e listas 3. Em que estrutura de dados comum as listas de LISP são normalmente armazenadas? As listas em LISP são normalmente armazenadas como estruturas de lista simplesmente encadeadas nas quais cada nó tem dois ponteiros e representa um elemento. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao 4. O que é recursão em cauda? Por que é importante definir funções que usam recursão para especificar repetição como recursivas em cauda? Recursão em cauda, é se uma chamada recursiva em uma função é a última expressão na função. É importante definir funções que usam recursão, pois o uso de recursão em cauda o compilador pode facilmente converter tal recursão em uma iteração, resultando em uma execução mais rápida. 5. Por que recursos imperativos foram adicionados à maioria dos dialetos de LISP? Por que variáveis no estilo imperativo são usadas para nomear células de memória, cujos valores podem ser modificados muitas vezes durante a execução de um programa. 6. De que maneiras COMMON LISPe Scheme são opostas? Scheme é muito menor e semanticamente mais simples, em parte por causa do uso exclusivo de escopo estático. COMMON LISP é uma linguagem muito grande pois ela é derivada de LISP. É também COMMON LISP foi criada para ser uma linguagem comercial, já Schema é mais usada em cursos de faculdades para o ensino de programação funcional. 7. Quais são os três recursos de Haskell que a tornam significativamente diferente de Scheme? Primeiro, as funcões em Haskell podem ser polimórficas. Segundo, semânticas não estritas são usadas em Haskell, já Scheme tem semântica estrita. 8. O que significa avaliação preguiçosa? Avaliação preguiçosa significa que as expressões são avaliadas se e quando seus valores forem necessários. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 9. O que é uma linguagem de programação estrita? Se requer que todos os parâmetros reais sejam completamente avaliados, garantindo que o valor de uma função não depende da ordem que os parâmetros são avaliados. 10. Qual é a falha em usar linhas de código para comparar a produtividade de linguagens funcionais e imperativas? Nem todas as linhas de código fonte têm uma complexidade igual, nem levem o mesmo tempo para serem produzidas. Por causa da necessidade de lidar com variáveis, os programas imperativos têm muitas linhas trivialmente simples para inicializar e realizar pequenas mudanças às variáveis. AULA 13 Quais são os eventos do modelo de rastreamento que descreve a execução de Prolog? a( ) Chamar, terminar, refazer e falha. b( ) Chamar, executar e falha. c(x)Chamar, sair, refazer e falha. d( )Chamar, sair e falha. e( )Nenhumas das alternativas. 2- O que é uma Proposição? Sentença lógica que pode ou não ser verdadeira Como são representado os objetos nas proposições de programação lógica? A) Termos simples, constantes ou variáveis. B) Termos compostos e classes. C) Objetos e funções. Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao D) Nenhuma das respostas anteriores. O que é um termo composto? É um elemento de uma relação matemática, escrito em uma forma com a aparência de notação de função matemática. Uma das características essências das linguagens de programação logicas é sua semântica, chamada de? Semântica declarativa. Na linguagem Prolog existem declarações, quais são elas: (a) Fatos e metas (b) Variáveis e constantes (c) Variáveis e metas (d) Fatos, regras e metas (e) Variáveis, regras e metas O que é um termo Prolog? É uma constante, variável ou estrutura. Em Prolog as conjunções contém termos múltiplos separados por operações? a) OR lógicas b) XOR lógicas c) AND lógicas d) NOR lógicas e) NAND lógicas Quais as áreas em que a programação lógica tem sido mais utilizada? Sistemas de banco de dados relacionais, sistemas especialistas, processamento de linguagens natural. Diferencie a programação na linguagem imperativa e funcional. A programação tanto nas linguagens imperativas como nas funcionais, é principalmente baseada em procedimentos, cujo significado está no fato do Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 programador saber o que deve ser realizado por um programa e instruir o computador a respeito de como a computação deve ser feita. Como são chamadas as proposições mais simples, que consistem em termos compostos? São chamadas de proposições atômicas. A programação, tanto nas linguagens imperativas como nas funcionais, é principalmente baseada em que? • Variáveis; • Heurísticas; • Procedimentos; • Comandos; • Nenhuma das alternativas Downloaded by Edvaldo Rocha (edvaldoroch@gmail.com) lOMoARcPSD|14501684 https://www.studocu.com/pt-br?utm_campaign=shared-document&utm_source=studocu-document&utm_medium=social_sharing&utm_content=prova-final-questoes-resumo-paradigmas-de-linguagem-de-programacao
Compartilhar