Baixe o app para aproveitar ainda mais
Prévia do material em texto
LINGUAGENS DE PROGRAMAÇÃO Neusa Liberato Evangelista Revisão Avaliação 1 01 A legibilidade deve ser considerada no contexto do domínio do problema. Por exemplo, se um programa que descreve uma computação é escrito em uma linguagem que não foi projetada para tal uso, ele pode não ser natural e desnecessariamente complexo, tornando complicada sua leitura (quando em geral seria algo simples). Características que contribuem para a legibilidade de uma linguagem de programação: simplicidade geral, ortogonalidade, tipos de dados. Características que contribuem para a facilidade de escrita de uma linguagem de programação: simplicidade e ortogonalidade, suporte à abstração e expressividade. 02 Ortogonalidade pode ser entendida como ter um conjunto pequeno de construções primitivas combinado em número pequeno de formas de construir estruturas de controle e de dados, com nenhuma ou poucas exceções às regras, o que facilita a leitura e escrita de programas na linguagem. Características que contribuem para a confiabilidade de uma linguagem de programação: verificação de tipos, tratamento de exceções, utilização de apelidos, e legibilidade e facilidade de escrita. Características que contribuem para a custo de uma linguagem de programação, custos: de treinamento na linguagem, de escrita de programas, de custo de execução (eficiência), do sistema de implementação da linguagem, da confiabilidade baixa, de manutenções. 03 Atual e na prática Em muitas linguagens, mais notavelmente nas baseadas em C, as letras maiúsculas e minúsculas nos nomes são distintas; ou seja, são sensíveis à capitalização. Por exemplo, os três nomes seguintes são distintos em C++: valor, VALOR e Valor. Pode se considerar como prejudicial à legibilidade, porque os nomes que se parecem denotam entidades diferentes, ou seja, apesar de Valor e valor parecerem similares, não existe uma conexão entre elas. 04 O endereço de uma variável é o endereço de memória de máquina ao qual ela está associada. É possível haver múltiplas variáveis com o mesmo endereço. Quando mais de uma variável pode ser usada para acessar a mesma posição de memória, elas são chamadas de apelidos (aliases). O uso de apelidos é um problema para a legibilidade porque permite que uma variável tenha seu valor modificado por uma atribuição à uma variável diferente. Por exemplo, se as variáveis total e soma são apelidos, quaisquer mudanças à total também modificam soma e vice-versa. 05 Vinculação de tipos Estática explícita. Exemplo: int numero = 10; (C ou Java) Estática implícita. Exemplo: inumero = 10; (Fortran, quando o nome da variável começa com i, j, k, l, m ou n é implicitamente definida como inteiro, a cláusula implicit none impede esse comportamento). Dinâmica: quando um valor é atribuído à variável. Exemplo: s = “olá” em (Python) 06 Quanto ao tempo de vida: Estáticas: início ao fim do programa. Exemplo: variáveis globais. Dinâmicas de pilha: início ao fim do subprograma. Exemplo: variáveis de métodos do Java, C++ ou C#. Dinâmicas de monte explícitas: células de memória abstratas alocadas por instruções explícitas. Exemplo: objetos de Java, Integer i = new Integer(); , new cria a variável dinâmica de monte. Dinâmicas de monte implícitas: vinculadas ao armazenamento no monte apenas quando são atribuídos valores a elas. Exemplo: highs = [74, 84, 86, 90, 71]; em JavaScript. 07 Variáveis dinâmicas do monte explícitas são usadas para construir estruturas dinâmicas, como listas ligadas e árvores, que precisam crescer e/ou diminuir durante a execução. Tais estruturas podem ser construídas de maneira conveniente usando ponteiros ou referências e variáveis dinâmicas do monte explícitas. As desvantagens das variáveis dinâmicas do monte explícitas são a dificuldade de usar ponteiros e variáveis de referência corretamente, o custo de referências às variáveis e a complexidade da implementação do gerenciamento de armazenamento. Esse é essencialmente o problema do gerenciamento do monte (heap), que é custoso e complicado. 08 Quanto ao escopo (visibilidade): Estáticas: escopo de uma variável pode ser determinado estaticamente – ou seja, antes da execução. Através da declaração. Blocos: novos escopos estáticos sejam definidos no meio do código executável, por meio de blocos. Global: visível em todo o código subsequente a sua declaração. Exemplo: extern int sum; em C. Dinâmico: baseado na sequência de chamadas de subprogramas, não em seu relacionamento espacial uns com os outros. Logo, o escopo pode ser determinado apenas em tempo de execução. 09 Em uma implementação, um descritor é uma área de memória que armazena os atributos de uma variável. Os descritores são usados para verificação de tipos e para construir o código para as operações de alocação e liberação. Apesar de terem uma faixa de valores restrita, tipos decimais permitem representar valores reais com precisão, como valores monetários, medidas precisas (como distância, temperatura, velocidade), entre outros valores em que a precisão é necessária para evitar erros de arredondamento. Uma matriz associativa é uma coleção não ordenada de elementos (par chave e valor) de dados indexados por um número igual de valores chamados de chaves. 10 O tipo registro, introduzido em 1960 pela linguagem Cobol (record), é um agregado de elementos de dados no qual os elementos individuais são identificados por nomes e acessados por meio de deslocamentos a partir do início da estrutura. Um ponteiro se refere a um endereço de memória. Uma referência se refere a um objeto ou valor em memória. 10 Ordem precedência Mais alta ++ e --pós-fixados + e – unários, ++ e -- pré-fixados, ! *, /, %, mod + e – binários <, >, <=, >= =, != && Mais Baixa || Associatividade Esquerda para a direita 11 Mostre a ordem de avaliação das seguintes expressões por meio do uso de parênteses em todas as subexpressões e colocando um expoente no parêntese direito para indicar a ordem. Por exemplo, para a expressão a + b * c + d a ordem de avaliação seria representada como ((a + (b * c) 1 ) 2 + d) 3 a - b mod c + 2 * d + a-- * (b - 1) / ++c + d1. - a || c = d && e && ++a > b-- + c * d <= 172. OBRIGADA Neusa Liberato Evangelista
Compartilhar