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

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

Paradigmas de Linguagens de Programação Linguagem Imperativa 2

Apresentações semelhantes


Apresentação em tema: "Paradigmas de Linguagens de Programação Linguagem Imperativa 2"— Transcrição da apresentação:

1 Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco

2 Explorando Conceitos Abstração Parametrização Função Procedimento
Cópia Definição Nome

3 Abstração em Programação
Processo pelo qual ignora-se detalhes irrelevantes, concentrando-se em idéias gerais ao invés de caracterizações delas Definição de novas operações (conceitos) em um programa Operação versus Implementação da mesma O que? versus Como?

4 Abstração em Linguagens
Uma abstração contém um objeto computável Uma função contém uma expressão Um procedimento contém um comando Uma abstração pode ser invocada, resultando na execução do seu objeto computável

5 Abstração de Função Contém
uma expressão (como em LF1, ML, e Haskell) expressão comando, ou um comando que retorna uma valor (como em Pascal e C) Quando invocada avalia (executa) a sua expressão (comando) e dá como resultado o valor associado

6 Abstração de Função Abstração com identificador
Construída por uma declaração de função (como em Pascal, C, LF1, LF2, e ML) Abstração sem identificador (anônima) Construída por um valor função (como em LF2, ML, e Haskell)

7 Abstração de Procedimento
Contém um comando Quando invocada executa o seu comando, lendo e atualizando variáveis Normalmente tem um identificador associado: construída por uma declaração de procedimento

8 Outras Abstrações Princípio da abstração. É possível construir abstrações contendo outros tipos de objetos: Acesso a variável (Id, Id.Id, Id[Id]) Declarações

9 Parametrização Operações genéricas ou parametrizadas, cujos comportamentos variam de acordo com os parâmetros fornecidos Abstrações podem ser parametrizadas em relação aos valores ou variáveis que ela manipula

10 Parâmetros e Argumentos
Valor fornecido para a execução do objeto da abstração Parâmetro formal Identificador utilizado na construção da abstração para denotar um argumento Parâmetro real Expressão cuja avaliação resulta em um argumento; fornecida na invocação da abstração

11 Parâmetros e Argumentos
Argumentos são valores da linguagem, mas em certas linguagens nem todos valores podem ser argumentos (arquivos em Pascal) funções e procedimentos nem sempre são valores (Pascal, LI2, e C) Há vários mecanismos para associar argumentos a parâmetros formais antes da execução do objeto da abstração

12 Mecanismos de Cópia O parâmetro real é avaliado resultando no argumento O parâmetro formal denota uma variável local à abstração Variações: Valor Resultado Valor-resultado

13 Mecanismos de Cópia Valor (LF2, LI2, Java, Pascal, C, ML)
O argumento é copiado para a variável local antes da execução do objeto da abstração A variável local pode ser não só inspecionada, mas também atualizada

14 Mecanismos de Cópia Resultado
O argumento tem que ser uma referência para uma variável O valor inicial da variável local não é determinado No final da execução do objeto da abstração, o valor da variável local é copiado para a variável cuja referência foi recebida como argumento

15 Mecanismos de Cópia Valor-resultado
O argumento tem que ser uma referência para uma variável O valor da variável associada ao argumento é copiado para a variável local antes da execução do objeto da abstração No final da execução do objeto da abstração, o valor da variável local é copiado para a variável cuja referência foi recebida como argumento

16 Mecanismos de Cópia Desvantagens: Vantagem:
Ineficiente do ponto de vista computacional Válido apenas para tipos cujos valores possam ser atribuídos a variáveis Vantagem: Facilidade para entendimento do código

17 Mecanismos de Definição
O parâmetro real é avaliado resultando no argumento O parâmetro formal denota o identificador de uma declaração local à abstração O argumento denota o corpo da declaração, que é associado (bound) ao identificador

18 Mecanismos de Definição
Declaração Parâmetros dec Id = Corpo; proc p(dec Id) = ...Id...; ... p(Corpo); Variações: Constante Definição (renomeação) de variável Procedimento ou função

19 Mecanismos de Definição
Constante Declaração: const Id = Expressão; O argumento é um valor Id denota este valor no escopo do objeto da abstração Id não é uma variável, como em parâmetro por valor, consequentemente tem o mesmo valor durante a execução do objeto da abstração

20 Mecanismos de Definição
Definição de Variável (Referência) Declaração: var Id = AcessoVariável; O argumento é uma referência para uma variável Id denota esta variável no escopo do objeto da abstração Qualquer leitura ou atualização feita com Id é uma leitura ou atualização da variável

21 Mecanismos de Declaração
Desvantagens: Aliasing; dois identificadores associados a uma mesma variável n := 1; n := n + m  n := 1 + m Dificulta entendimento do código Vantagens: Semântica uniforme e simples; válido para todos os tipos de valores Eficiente (exceto para sistemas distribuídos)

22 Mecanismo de Ordem Normal
Nome O parâmetro real não é avaliado antes do início da execução do objeto da abstração Não há argumento! O parâmetro formal é substituído pelo parâmetro real no objeto da abstração trocando os nomes de variáveis locais para evitar conflitos de nomes O objeto resultante é executado

23 Mecanismo de Ordem Normal
Desvantagens: O parâmetro real pode ser avaliado várias vezes (exceto com Lazy evaluation, válido para linguagens sem efeitos colaterais) Ineficiente, em geral Dificulta entendimento do código Vantagens: O parâmetro real é avaliado sob demanda Operações não estritas (Church-Rosser)

24 Leitura Programming Language Concepts and Paradigms Capítulo 5

25 Exercícios e Projetos Estenda a Linguagem Imperativa 2 com os seguintes recursos: Passagem de parâmetros por resultado, valor-resultado, constante, referência, e nome Funções como em Pascal ou C Comando como expressões, como em C Procedimentos de alta ordem Blocos como em C ou Pascal


Carregar ppt "Paradigmas de Linguagens de Programação Linguagem Imperativa 2"

Apresentações semelhantes


Anúncios Google