A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Nomes, Variáveis e Vinculações

Apresentações semelhantes


Apresentação em tema: "Nomes, Variáveis e Vinculações"— Transcrição da apresentação:

1 Nomes, Variáveis e Vinculações
Paradigmas de Programação Prof. Gláucya Carreiro Boechat

2 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 Paradigmas de Programação prof Gláucya Carreiro Boechat

3 Paradigmas de Programação - prof Gláucya Carreiro Boechat
Von Neumann 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 ? ($ ? ~ ; : / \ | ...) Paradigmas de Programação prof Gláucya Carreiro Boechat

5 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 Paradigmas de Programação prof Gláucya Carreiro Boechat

6 Nome – Caracteres de Conexão
Exemplo ( _ ) Pascal, Modula-2 e FORTRAN 77 não permitem Linguagens mais recentes permitem Java, .NET 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

8 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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. Paradigmas de Programação prof Gláucya Carreiro Boechat

9 Paradigmas de Programação - prof Gláucya Carreiro Boechat
Palavras Especiais Palavra Reservada: é independente do contexto e não pode ser utilizada como um nome. Exemplo: na linguagem Pascal integer char. Paradigmas de Programação prof Gláucya Carreiro Boechat

10 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 Paradigmas de Programação prof Gláucya Carreiro Boechat

11 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 Paradigmas de Programação prof Gláucya Carreiro Boechat

12 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 ) Paradigmas de Programação prof Gláucya Carreiro Boechat

13 Paradigmas de Programação - prof Gláucya Carreiro Boechat
Variáveis - Endereço Células Memória 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. Paradigmas de Programação prof Gláucya Carreiro Boechat

14 Paradigmas de Programação - prof Gláucya Carreiro Boechat
Variáveis - Endereço Células Memória 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

15 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 a Operações Adição, subtração, multiplicação, divisão , etc. Paradigmas de Programação prof Gláucya Carreiro Boechat

16 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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) 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 Células Memória Células Memória Variável vinculado à células de memória tempo tempo de vida Conjunto de células alocadas para o armazenamento dos dados de uma variável Células novamente livres, após a Desalocação 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 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 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

21 Vinculação Estática e Dinâmica
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 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 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

24 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

25 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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) = * 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); 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 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 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 Estáticas. Variáveis Dinâmicas em Pilha (stack). Variáveis Dinâmicas em Heap Explícitas. Variáveis Dinâmicas em Heap Implícitas. Paradigmas de Programação prof Gláucya Carreiro Boechat

29 Paradigmas de Programação - prof Gláucya Carreiro Boechat
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) 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 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 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. int Y Procedimento B int X Procedimento A 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. int X Procedimento A 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. 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 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 Paradigmas de Programação prof Gláucya Carreiro Boechat

37 Variáveis Dinâmicas em Heap Implícitas
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: Neste momento a memória foi alocada flex [1:0] int lista ... Lista := (4, 2, 3, 7) Paradigmas de Programação prof Gláucya Carreiro Boechat


Carregar ppt "Nomes, Variáveis e Vinculações"

Apresentações semelhantes


Anúncios Google