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

resumotiposdedados-aulalp110a-120404204318-phpapp01


DisciplinaProgramação I20.566 materiais240.033 seguidores
Pré-visualização3 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:
\u2022 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);
\u2022 Programação funcional - em que programas são implementações de funções 
\u2022 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 \uf0e0 É 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 
desperdiç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 \u2013> 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 = 0x27+0x26+0x25+0x24+0x23+0x22+1x21+1x20 = 3
11111101 = -3 (considerando o sinal)
As principais vantagens da notação de complemento a dois são 
ter uma representaçã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 \uf0e0 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 sinal \uf0e0 possuem menos espaço do que os inteiros 
sem sinais.
Inteiros sem sinal \uf0e0 possuem mais espaço, pois não precisam 
representar o caractere \u2018\u2019-\u2018\u2019.
Ponto Flutuante
Modelam os números reais, mas as representaçõ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 imprevisível, 
porque usam representações diferentes em bits. A comparação de 
real com real é chamada de verificação de equivalência, como os dois 
números são aproximações, é imprevisível dizer se vão ser 
considerados números iguais ou não.
Decimais
A maioria dos grandes computadores projetados para suportar 
aplicações de sistemas comerciais tem suporte de hardware para 
tipos de dados decimais, que armazenam um número fixo de dígitos 
decimais, com a vírgula decimal em uma posição fixa no valor.
Vantagem \uf0e0 capacidade de armazenar com precisão valores 
decimais(dentro de uma faixa restrita), o que não pode ser feito em 
ponto flutuante.
Desvantagem \uf0e0 os números decimais usam códigos binários e 
ocupam mais espaço do que as representações binárias. Essas 
representações são chamadas decimais codificadas em binário (BCD).
Não é presente nas linguagens modernas devido a ausência da 
capacidade do hardware. Algumas máquinas tinham hardware próprio para esse 
tipo e representavam