resumotiposdedados-aulalp110a-120404204318-phpapp01
9 pág.

resumotiposdedados-aulalp110a-120404204318-phpapp01

Disciplina:Linguagens de Programação I260 materiais733 seguidores
Pré-visualização9 páginas
Resumo de Linguagens de
Programação I
Paradigmas de Linguagens de Programação
As linguagens adotam técnicas comuns de programação, desenvolvidas de forma
independente de uma linguagem conforme a área de Linguagens de Programação
evolui.
As linguagens de programação podem ser classificadas de muitas formas
diferentes. Uma das formas de classificação é quanto ao paradigma de programação.
No contexto de linguagens de programação, podemos dizer de maneira bem
simples que paradigma é um estilo. Porém estamos nos referindo a estilo numa
conotação forte. Para serem chamados de paradigmas de programação, estilos precisam
ser suficientemente diferentes e completos para serem considerados uma forma de ver o
mundo.
Autores diferentes classificam as linguagens de programação de formas
diferentes. Apesar disso, é geralmente aceito que existem dois tipos principais de
programação:
(a) Programação imperativa(ou procedural), de acordo com a qual os
programas são construídos por meio de uma sequência de ordens - o programador
escreve um procedimento que leva à solução de um problema;
(b) Programação declarativa (ou descritiva), de acordo com a qual os
programas são construídos simplesmente pela descrição da solução de um problema -
cabe ao compilador encontrar uma sequência de instruções que produz a solução
declarada. Na programação declarativa, existem duas formas principais de se descrever
soluções:
1 - Através de funções (conceito matemático de associação entre elementos de
um conjunto domínio para um conjunto imagem) e
2 - Através de predicados (elementos sintáticos que permitem expressar relações
entre elementos de conjuntos). Vale lembrar que uma função é um tipo especial de
relação de associação.
São três os paradigmas de programação:
• Programação imperativa (ou procedural) - em que programas são implementações de
algoritmos (sequência de instruções que levam à solução de um problema);
• Programação funcional - em que programas são implementações de funções
• Programação lógica - em programas são implementações de predicados (relações entre
elementos de conjuntos diversos).
É comum encontrar autores que classificam a Programação Orientada a Objetos
como sendo um paradigma de programação. Essa classificação considera que o projeto
de programas orientados a objetos segue conceitos de destaque suficiente para que esse
estilo de programação seja classificado à parte da programação imperativa.
Tipos de Dados
Dizem o que os bits representam.
O uso do tipo depende do problema.
Algumas linguagens não tem o tipo de dado que você precisa, pode ser
necessário implementá-lo. (Ex.: implementar listas ou árvores usando vetores).
Um tipo primitivo de dados é aquele que não pode ser decomposto em partes
mais simples. Para tal classificação, considera-se a linguagem propriamente dita (e não
suas bibliotecas). Exemplo: Inteiros.
Um fator importante para determinar a facilidade com que os computadores
podem executar uma tarefa é quão bem os tipos de dados coincidem com o espaço de
problema do mundo real. Portanto, é crucial que uma linguagem suporte uma variedade
de tipos de dados e estruturas.
Os tipos definidos pelos usuários oferecem uma melhor legibilidade pelo uso de
nomes de tipos significativos.
Descritor É um conjunto de células de memória que armazenam atributos de
variáveis. São construídos pelo compilador e são usados para a verificação de tipos e
pelas operações de alocação e de desalocação.
Inteiros
Os inteiros são infinitos, porém a capacidade de bits para inteiro é fixa.
Atualmente, muitos computadores suportam diversos tamanhos de inteiros, e
essas capacidades são refletidas em algumas linguagens de programação. Por exemplo,
o Ada permite que as implementações incluam ate três tamanhos de inteiros: Short
Integer, Integer e Long Integer. Em outras linguagens, como o C++, incluem tipos
inteiros sem sinal, usados frequentemente com dados binários.
Em geral,
short
ocupa 16 bits,
long
ocupa 32 bits e
int
, 16 ou 32
bits. Cada compilador é livre para escolher tamanhos adequados ao
próprio hardware. A vantagem desses tamanhos diferentes é não
desperd içar memória.
Um inteiro negativo poderia ser armazenado em uma notação de sinal-
magnitude, na qual o bit de sinais é fixado para indicar o valor negativo, enquanto o
restante da cadeia de bits representa o valor absoluto de número, entretanto, essa
notação não se presta para a aritmética computadorizada.
A maioria dos computadores atualmente usa uma notação chamada
complemento de dois para armazenar inteiros negativos, o que é conveniente para a
adição e para a subtração. Para converter a representação binária de um
número em seu decimal correspondente segundo a notação de
complemento a dois é um pouco mais trabalhoso. Primeiramente, é
necessário verificar se o dígito mais à esquerda do número é um ou
zero. Se for zero, o número será zero ou positivo. Se for um, o número
decimal será negativo. Nesse caso, deve-se inverter a representação
binária do número e incrementá-lo de um. Assim, obtém-se a
representação do número na base binária. Basta, então convertê-la
para a base decimal levando em conta o seu sinal. Por exemplo:
11111101 (representação na notação de complemento a dois)
1 (dígito mais a esquerda –> número é negativo)
00000010 (representação com inversão binária)
00000001 (representação binária do número um)
00000011 (adição binária do número invertido e um)
00000011 = 0x2
7+0x2
6+0x2
5+0x2
4+0x2
3+0x2
2+1x2
1+1x2
0 = 3
11111101 = -3 (considerando o sinal)
As principais vantagens da notação de complemento a dois são
ter uma rep resentação única para o número zero e também poder
utilizar os operadores aritméticos binários para implementar suas
próprias operações.
Wrap Arround quando é estourado o limite de um tipo de dado,
o resultado possui uma parte da operação certa, pois o computador
opera até o número máximo de bits possível.
Inteiros com s inal possuem menos espaço do que os inteiros
sem sinais.
Inteiros sem s inal possuem mais espaço, pois não precisam
representar o caractere ‘’-‘’.
Ponto Flutuante
Modelam os números reais, mas as repres entações são somente
aproximações para a maioria dos números. A ideia parte da notação
científica, que evidencia a parte mais importante do número. Isso
gera uma imprecisão do número representado, o que faz com que
haja uma perda de exatidão nas operações aritméticas. Se o
computador tiver mais memória, haverá mais precisã o e informação.
A imprecisão aumenta quando o número é muito grande.
Os pontos flutuantes são armazenados em dígitos binários. A
maioria dos computadores usam a norma IEEE 754, que estabelece
23 bits de mantissa e 8 de expoente para precisão simples ; 52 bits de
mantissa e 11 bits de expoente para precisão dupla. Ponto Flutuante
não é somente número, existe também o NaN (not a number,
exemplo: operações impossíveis, tais como 0/0) e o Inf (mais ou
menos infinito).
A comparação de inteiro com real é altamente impre visível,
porque usam rep res entações diferentes em bits. A comparação de
rea l com real é chamada de verificação de equivalência, como os dois
números são aproximações, é imprev isível dizer se vão ser
considerados números iguais ou não.
D e c i m a i s