Upcoming SlideShare
×

# Resumo de aulas lp1

700 views

Published on

0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
700
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
18
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Resumo de aulas lp1

1. 1. Resumo de AulasLinguagens de Programação I Pedro Victor de Sousa Lima Ciência da Computação
2. 2. SumárioTIPOS DE DADOS .................................................................................................................................................. 4 inteiros .......................................................................................................................................................................... 4 ponto flutuante ............................................................................................................................................................. 4 decimais ........................................................................................................................................................................ 5 booleanos ...................................................................................................................................................................... 5 caracteres...................................................................................................................................................................... 6 ponteiros ....................................................................................................................................................................... 6STRING ................................................................................................................................................................ 7 representação de strings ............................................................................................................................................... 7 strings dinâmicas .......................................................................................................................................................... 8 interpolação de strings.................................................................................................................................................. 8 casamento de padrões .................................................................................................................................................. 8 biblioteca de programação ........................................................................................................................................... 8 enumerados .................................................................................................................................................................. 8 subfaixas ....................................................................................................................................................................... 9VETORES ............................................................................................................................................................ 10 alocação estática ou dinâmica.................................................................................................................................... 11 vetores associativos (hashes) ...................................................................................................................................... 11 árvore .......................................................................................................................................................................... 11 registro ........................................................................................................................................................................ 11 tipo lista ...................................................................................................................................................................... 12 tipo unidade ................................................................................................................................................................ 12VINCULAÇÕES .................................................................................................................................................... 13 vinculação de nome .................................................................................................................................................... 14 aliases.......................................................................................................................................................................... 14 namespaces................................................................................................................................................................. 14ESCOPO ............................................................................................................................................................. 15 escopo estático............................................................................................................................................................ 15 escopo dinâmico ......................................................................................................................................................... 15 vinculação de tipos ...................................................................................................................................................... 15 inferênca de tipos ........................................................................................................................................................ 15COERÇÃO (IMPLÍCITA) X CONVERSÃO (EXPLÍCITA) ............................................................................................... 16 compatibilidade de tipos ............................................................................................................................................. 16VINCULAÇÃO AO ARMAZENAMENTO ................................................................................................................. 17 2
5. 5. A verificação de equivalência entre dois valores de tipo ponto flutuante é altamente imprevisível.Exemplo:Int inteiro = 16777217Float real = inteiro;If (real == inteiro) Cout << “os valores são iguais. n”; Else Cout << “valores são diferentes!n”; DECIMAIS  Possuem um número fixo de casas decimais (chamados também de ponto fixo, em contrapartida aos de pontos flutuantes).  São interessantes em aplicações comerciais.  Alguns processadores tinham circuitos específicos para operações com decimais (e notação própria)  Geralmente representados por strings de dígitos. (4 bits para cada digito do número decimal, o software faria a conta de 4 em 4 dígitos).  Hoje simulados por software (inteiros). (incomum) BOOLEANOS  Aumentam a legibilidade (um dos tipos mais importantes, senão o mais importante. C não possui booleano explícito...).  Geralmente não são endereçáveis.  Podem ser facilmente representados por inteiros ou descritos em termos de outros tipos.  Algumas linguagens permitem que o valor de qualquer tipo seja “testado”.Int terminou = 1 =0If (terminou) >>> dessa forma, a declaração fica mais legível 5
7. 7. STRING São a forma de representar texto. As strings são junções de caracteres. Seqüência de caracteres, cadeia de caracteres, possuem a característica de representar caracteres uns ao lado dos outros.  Podem ser tipos primitivos (tipo que não pode ser acessado por partes) – independentes da forma de representação. Quando a string é primitiva vem acompanhada de algumas operações:  Concatenar strings: junção de strings  Encontrar uma substring – Pedro (outra string com valores ou caracteres da primeira string). REPRESENTAÇÃO DE STRINGS  Pascal É feita em varias posições na memória, pegando caracteres consecutivos na memória. 2 0 i a b c d e f GTamanho Caracteres Forma de representação que limita o tamanho, há sempre um tamanho máximo. E pode-se sempre estar desperdiçando memória.  Vantagem: a hora que quiser saber quantos caracteres há numa string, estará lá, na parte que cuida do controle.  Normalmente os compiladores usavam 2 bytes no controle.  Desvantagem: não há como representar string com mais de 255 caracteres.  C Em C também há quantidades variáveis de strings, ao contrario de pascal, não há tamanho padrão. Em C deve-se declarar o tamanho. Porém, um espaço razoável na memória será gasto. 0 i 0 B C e f G i O Todos os espaços são usados para guardar informações, menos 1, que será um espaço especial, um sinal para indicar o fim da seqüência.  Vantagens: não há tamanhos máximos para as strings. Desde que haja posições suficientes.  Desvantagens: necessário contar a quantidade de caracteres. 7
9. 9. SUBFAIXAS  Aumentam a legibilidade (tornam os limites explícitos)  Podem ajudar na detecção de erros;  Conjunto limitado de outro tipo, tipo que existe uma ordem entre os elementos.Ex: tipos numéricos: [1,2,3,4,5,6] Alguns vem antes e outros depois.  Facilidade: não é necessário ficar verificando constantemente se aqueles valores não estão em sequencia.Em pascal há o índice de subfaixa e é indicado no início de uma declaração de vetor:Array [1..10] of integer;Tipo de dados: classificação dos dados nos programas. Os compiladores usam essa classificação para realizarchecagens.Estrutura de Dados: não há como serem declaradas. 9
13. 13. Vinculações  Nome -> (escopo)  Tipo  Armazenamento (endereço) -> “Tempo de vida”, que a variável consegue guardar o valor.  ValorCostuma-se pensar na variável como o seu valor. A variável não é a única que está sujeita à vinculação.  Deve-se entender a variável como algo que se está vinculado com um nome, um tipo, um armazenamento (endereço) e valor. Mas não necessariamente com todos. Tais itens podem variar ao longo do tempo/execução.Problema do endereço – ao se declarar uma variável, declara-se um endereço. Se o endereço é sempre o mesmo gerauma complicação na flexibilidade.  Vinculação estática - sempre a mesma associação em toda a execução do programa.  Vinculação dinâmica – Associação da variável com mais coisas na execução do programa. Pode-se mudar várias vinculações, o nome, o tipo, o endereço, o valor da variável.Projeto de linguagem – coisas que acontecem no projeto. Em Pascal, BEGIN está vinculado ao projeto de linguagem.*Implementação de linguagem, construção do compilador ou implementador da linguagem.  Tempo de implementação de programa –  Tempo de compilação – momento da tradução do código fonte em código objeto, as instruções escritas de uma forma mais próxima do que o hardware entende.  Tempo de ligação – tempo em que o compilador (link editor) faz as vinculações. Mais especificamente, com endereços de memória, outro exemplo, os comandos importados de bibliotecas. Algum programa ira pegar as instruções de outros lugares e inserir no seu programa.  Tempo de carregamento - após criar o executável em linguagem de maquina, há certas coisas que faltam serem resolvidas. A Cópia das instruções do HD para algum lugar na memória ou outro local é chamado de tempo de carregamento.  Tempo de execução – Tempo entre uma execução e outra. A partir do comando inicial de executar. 13