Buscar

Revisão_AV1_UNI7_SI_LinguagensDeProgramação

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

Continue navegando

Outros materiais