Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAlice Caro Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.