Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE SERGIPE Campus Prof, Alberto Carvalho DEPARTAMENTO DE SISTEMAS DE INFORMAÇÃO Exercícios 2 parte teórica 1) O que é sistema de tipos de uma linguagem? Sistema de tipos é parte da semântica da linguagem podendo variar quanto a forma e ao momento da declaração. 2) Explique porque antes de ser usada uma variável deve ser associada a um determinado tipo da linguagem? É através do tipo que o compilador sabe quanta memória deve ser reservada para uma determinada variável (quantas células de memória são necessárias para armazenar o conteúdo da variável). 3) Explique a diferença entre uma linguagem estaticamente tipada e uma linguagem dinamicamente tipada. Tipagem estática significa que os tipos das variáveis de um programa são explicitamente definidos no código e, portanto, conhecidos/checados em tempo de compilação. Exemplos de linguagens com essa característica: Java, C#, F#, Kotlin, Go, etc. Na tipagem dinâmica é justamente o contrário: os tipos não são declarados no código e, portanto, conhecidos/checados em tempo de execução. Exemplos de linguagens: Ruby, Python, Clojure, Elixir, etc. 4) Cite uma vantagem de se ter uma linguagem estaticamente tipada e de se ter uma linguagem dinamicamente tipada. VANTAGENS DAS LINGUAGENS ESTATICAMENTE TIPADAS: Clareza de código. Entender o código é fácil, já que não precisamos fazer suposições sobre o que é cada atributo de um objeto e quais são as entradas e saídas esperadas de um método/função. O código se torna a documentação. VANTAGENS DAS LINGUAGENS DINAMICAMENTE TIPADAS: Menos verbosidade. Código mais enxuto, para escrever e para ler. 5) O que é equivalência nominal de tipos? Disciplina Linguagens de Programação Carga Horária 90 Professora Mai-Ly Vanessa Almeida Saucedo Semestre 2020.1 Faro Significa que duas variáveis tem tipos equivalentes se elas foram declaradas na mesma declaração ou em declarações que usem o mesmo nome de tipo. 6) O que é equivalência estrutural de tipos? Significa que duas variáveis tem tipos compatíveis se possuem a mesma estrutura. 7) Qual a diferença entre palavra chave e palavra reservada de uma linguagem? Uma Palavra chave é especial somente em certos contextos. Ex: Fortran → a palavra “real” é uma palavra chave quando encontrada no início de uma declaração e no início de um nome. Quando seguida de atribuição é considerada nome de variável. Uma Palavra Reservada é sempre uma palavra especial e não pode ser usada como nome de variável. Problema: Muitas palavras reservadas → difícil nomear entidades. Ex COBOL → mais de 300 palavras reservadas. 8) Explique o que é uma variável stack dinamic? Cite um exemplo. Variáveis dinâmicas de pilha passam a existir quando você chama uma função. Eles existem na pilha de tempo de execução e são temporários. Eles estão na lista de parâmetros ou declarados dentro da função (exceto para estáticos, que não são instanciados na pilha). Essas variáveis desaparecem quando saem do escopo e a memória de seu conteúdo é recuperada pelo tempo de execução. 9) Explique como funcionam as variáveis de uma função recursiva, a nível de memória. Em uma função recursiva , a cada chamada é criada na memória uma nova ocorrência da função com os comandos e variáveis "isolados"das ocorrências anteriores. 10) Em uma linguagem que você conhece, dê exemplo de uma variável explicit-heap dinamic e explique o que é esse tipo de variável. Variáveis dinâmicas no monte explícitas são células de memória sem nome que são alocadas e desalocadas por instruções explícitas de tempo de execução escritas pelo programador. Essas variáveis, que são alocadas e desalocadas no heap, só podem ser referenciadas por meio de ponteiros ou variáveis de referência. 11) Explique o que é escopo de uma variável. É a faixa de código onde uma variável permanece visível, ou seja, onde ela pode ser referenciada. 12) Explique qual é a diferença entre escopo de uma variável e tempo de vida de uma variável? Escopo : Ele se refere em que partes do código a variável é visível/acessível. O tempo de vida se refere ao tempo que ela está disponível para acesso, ou pelo menos quando ela tem um valor com significado para o código.
Compartilhar