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 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco.

Apresentações semelhantes


Apresentação em tema: "Paradigmas de Linguagens de Programação Linguagem Imperativa 2 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco."— 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 –Função –Procedimento Parametrização –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 Argumento –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: –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 Variações: –Constante –Definição (renomeação) de variável –Procedimento ou função Declaração Parâmetros dec Id = Corpo; proc p(dec Id) =...Id...;... p(Corpo);

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 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco."

Apresentações semelhantes


Anúncios Google