nomes, variáveis e vinculações paradigmas de programação prof. gláucya carreiro boechat...

37
Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat [email protected]

Upload: internet

Post on 19-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Nomes, Variáveis e Vinculações

Paradigmas de Programação

Prof. Gláucya Carreiro Boechat

[email protected]

Page 2: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

2

Nomes Toda linguagem de programação possui

“nomes” com significados pré-definido O nome identifica ações que deve ser executada.

As linguagens usam os nomes assim como os humanos: Identificar variáveis, rotinas,ou construções de

programa Linguagem Imperativa são abstrações da

arquitetura do computador de Von Neumann Processador e Memória

Page 3: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

3

Von Neumann

Page 4: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

4

Nomes

Considerações acerca de um nome:

Qual o comprimento máximo de um nome ?

As palavras especiais são palavras reservadas ou palavras-chave?

Existe distinção entre maiúsculas e minúsculas ?

Podem ser utilização de Caracteres de Conexões ?($ ? # @ ~ ; : / \ | ...)

Page 5: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

5

Nome - Tamanho

As primeiras Linguagens utilizavam nomes com apenas 1 caracter, pois eram basicamente matemáticas.

Exemplos de linguagens: FORTRAN I: máximo de 6 FORTRAN 90 e C: máximo de 31 COBOL : máximo de 30 Ada e Java: sem limite C++: sem limite, mas implementadores geralmente impõem

limites

Page 6: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

6

Nome – Caracteres de Conexão Caracteres de conexão

Exemplo ( _ )

Pascal, Modula-2 e FORTRAN 77 não permitem

Linguagens mais recentes permitem Java, .NET

Page 7: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

7

Nome - Distinção entre maiúsculas e Minúsculas Desvantagem:

Problema de Legibilidade nomes semelhantes são diferentes

rest, Rest,ResT, REST,

Nomes em C, C++, Modula-2 e em Java fazem distinção entre maiúscula e minúscula

Em Java Converter string em inteiro

parseInt ParseInt e parseint (não são reconhecidas)

FORTAN anteriores ao 90 Somente letras maiúsculas podiam ser usadas em nomes

Page 8: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

8

Palavras Especiais

São utilizadas para tornar programas mais legíveis ao denominar ações. Classificadas como :

Reservadas, e em algumas, são somente Palavras-Chave.

Page 9: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

9

Palavras Especiais

Palavra Reservada: é independente do contexto e não pode ser

utilizada como um nome.

Exemplo: na linguagem Pascal

integer char.

Page 10: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

10

Palavras Especiais

Uma Palavra-Chave é uma palavra que é especial em certos contextos, por exemplo em FORTRAN

Real a (palavra-chave – seguida de um nome) Real = 3.4 (variável – seguida de operador de instrução)

Problemas de legibilidade FORTRAN

INTEGER REAL REAL INTEGER

Page 11: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

11

Variáveis

Variáveis são abstrações de uma célula de memória de um computador.

Caracterizada pelos atributos:

Nome Endereço Valor Tipo Tempo de Vida Escopo

Page 12: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

12

Variáveis - Nome

Nome Identifica uma entidade (Identificadores).

Int var1;

Nem todas as variáveis têm nome. Exemplo

variáveis temporárias show( x+y )

Page 13: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

13

Variáveis - Endereço

Endereço Endereço de memória à qual ela está associada.

Uma variável pode ter mais de uma célula de memória O endereço de uma variável é o endereço de sua primeira

célula de memória. Uma variável pode ter diferentes endereços em diferentes

lugares no programa Programa com dois subprogramas

Sub1 Sub2 Definem uma variável com mesmo nome soma,

Independentes uma da outra.

Células Memória

Page 14: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

14

Variáveis - Endereço

Apelidos (Aliases) Os Apelidos existem quando duas ou mais

variáveis apontam para o mesmo endereço de memória. (C, C++)

Problema para a legibilidade Permite que uma variável tenha seu valor modifique por

uma atribuição a uma variável dirente

Células Memória

Page 15: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

15

Variáveis - Tipo

Tipo Determina a faixa de valores das variáveis e o conjunto de operações definidas para os

valores do tipo

FORTRAN INTEGER

Faixa de Valores -32.768 a 32.767

Operações Adição, subtração, multiplicação, divisão , etc.

Page 16: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

16

Variáveis - Valor O valor de uma variável

Conteúdo da(s) célula(s) de memória associado a uma variável.

O valor de uma variável às vezes é conhecido como r-value (valor à direita) porque é o atributo necessário para avaliar a expressão que se encontra do lado direito de uma atribuição.

Para acessar o r-value, é necessário antes determinar o l-value (endereço da variável).

contador := contador + 1; (l-value) (r-value)

Page 17: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

17

Variáveis – Tempo de Vida O tempo de vida de uma variável é o intervalo

de tempo durante o qual um conjunto de células de memória está vinculado à uma variável.

ALOCAÇÃO DESALOCAÇÃO

tempo de vida

Variável vinculado àcélulas de memória

tempo

Células Memória

Conjunto de células alocadas para o armazenamento dos

dados de uma variável

Células novamente livres, após a Desalocação

Células Memória

Page 18: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

18

O Conceito de Vinculação

Uma vinculação (binding) é uma associação, como: Entre um atributo e uma entidade de execução Entre uma operação e um símbolo

O momento em que uma vinculação se desenvolve é chamado de tempo de vinculação

Page 19: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

19

Possíveis tempos de Vinculação Tempo de projeto da linguagem

Vinculação de símbolos de operação à operação, ex. * (multiplicação)

Tempo de implementação da linguagem Vinculação de um tipo (float) a um conjunto de

valores possíveis

Page 20: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

20

Possíveis tempos de Vinculação Tempo de Compilação

Vinculação de uma variável a um tipo de dado em particular

Tempo de Carregamento Vinculação de uma variável à célula de memória

Tempo de Execução Vinculação de uma variável local não-estática a

uma célula de memória

Page 21: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

21

Vinculação Estática e Dinâmica Vinculação Estática

Ocorrer antes do tempo de execução e Permanecer inalterada ao longo da execução de

um programa

Vinculação Dinâmica Ocorrer durante a execução ou puder ser modificada no decorrer da execução de

um programa

Page 22: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

22

Declaração de Variáveis- Explícita e Implícita -

Declaração Explícita Quando uma instrução em um programa que lista

nomes de variáveis e especifica que elas são de um tipo particular

Page 23: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

23

Declaração de Variáveis- Explícita e Implícita -

Declaração Implícita Quando o meio de associar variáveis a tipos por

convenções em vez de instruções Linguagens FORTRAN, PL/I, BASIC e Perl

Vantagem: capacidade de escrita

Desvantagem: legibilidade

Page 24: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

24

Vinculação Dinâmica de Tipos Vinculação dinâmica de tipos

(JavaScript e PHP) A variável é vinculada ao tipo quando lhe é atribuído

algum valor, por exemplo JavaScript

list = [2, 4.33, 6, 8]; list = 17.3;

Vantagem: Flexibilidade

Desvantagens: Alto custo Difícil detecção de erros

Page 25: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

25

Inferência de Tipos Inferência de tipos (ML, Miranda e Haskell)

Ao invés de uma instrução de atribuição, tipos são determinados pelo contexto

Em ML, fun circumf(r) = 3.14159 * r * r; fun vezes10(x) = 10*x; ML rejeita a função

fun quadrado(x) = x * x; Opções

fun quadrado(x:int) = x * x; fun quadrado(x) = (x:int) * x; fun quadrado(x) = x * (x:int);

Page 26: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

26

Vinculação de Armazenamento

Alocação Marcar\tomar uma célula de memória de um conjunto de

memória disponível

Desalocação Devolver a célula ao conjunto de memória disponível

Page 27: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

27

Tempo de Vida de uma Variável inicia

quando ela é vinculada a uma célula específica

encerra quando ela é desvinculada

Page 28: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

28

Variáveis – Tempo de Vida Classificação de acordo com o tempo de vida

Variáveis Dinâmicas em Heap Implícitas.

Variáveis Dinâmicas em Heap Explícitas.

Variáveis Dinâmicas em Pilha (stack).

Variáveis Estáticas.

Page 29: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

29

Variáveis Estáticas

As variáveis estáticas são Vinculadas a células de memória antes que se inicie a

execução do programa e permanecem vinculadas até que a execução termine. Exemplo

FORTRAN I, II e VI, variáveis static do C, C++ e JAVA

Vantagem Eficiência (endereçamento direto).

Desvantagem Pouca flexibilidade (não permitem recursão)

Page 30: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

30

Variáveis Dinâmicas em Pilha (stack) São aquelas cuja a vinculações criam-se a

partir da elaboração de suas instruções de declaração, mas seus tipos são vinculados estaticamente.

A elaboração ocorre em tempo de execução Exemplo

Variáveis locais em subprogramas C e métodos em Java

Page 31: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

31

Variáveis Dinâmicas em Pilha (stack) Vantagem:

permite recursão; compartilhamento de espaço de memória

Desvantagens: Sobrecarga de alocação e de desalocação em

tempo de execução

Page 32: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

32

Variáveis Dinâmicas em Pilha Exemplo:

Procedimento A chama Procedimento B. A variável Y do procedimento B é vinculada na Pilha.

ProcedimentoA

ProcedimentoB

int X

int Y

Page 33: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

33

Variáveis Dinâmicas em Pilha

Exemplo: Procedimento B encerra a sua execução

liberando a memória destinada ao procedimento B com a variável Y.

ProcedimentoA

int X

Page 34: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

34

Variáveis Dinâmicas no Heap Explícitas Variáveis Dinâmicas em Heap Explícitas

células de memória sem nome alocadas (abstratas) e desalocadas por instruções explícitas em tempo de execução, especificadas pelo programador.

Essas variáveis alocadas no Heap e desalocadas para o Heap só podem ser referenciadas por meio de variáveis de ponteiro ou de referência

heap conjunto de células de armazenamento desorganização,

devido ao fato de seu uso ser imprevisível.

Page 35: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

35

Variáveis Dinâmicas no Heap Explícitas

Exemplo: Objetos dinâmicos em C++ (new e delete) Todos os objetos em Java

Vantagem: Convenientes para estruturas dinâmicas:

listas encadeadas árvores

Desvantagens: Dificuldade em usar ponteiros e referência Custo das referências para as alocações e desalocações

Page 36: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

36

Variáveis Dinâmicas em Heap Explícitas As variáveis dinâmicas em heap implícitas são

vinculadas ao armazenamento do heap somente quando lhe são atribuídos valores.

Alocação e desalocação causadas por instruções de atribuição Todas as variáveis em APL Todas as strings e vetores em Perl e em JavaScript

Vantagem Flexibilidade

Desvantagens Ineficiente, pois todos os atributos são dinâmicos Perda de grande parte da capacidade de detectar erros

Page 37: Nomes, Variáveis e Vinculações Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Paradigmas de Programação - prof Gláucya Carreiro Boechat

37

Variáveis Dinâmicas em Heap Implícitas

flex [1:0] int lista

...Lista := (4, 2, 3, 7)

Neste momento amemória foi alocada

Exemplo pode ser encontrado nos array flex da linguagem ALGOL-

68. arrays dinâmicos permitem que não sejam especificados

limites de subscrito em sua declaração. Por exemplo, no array lista definido abaixo, o espaço do heap só

será alocado após a atribuição: