Paradigmas de Linguagens de Programação Linguagem Imperativa 2

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Funções em C Prof. Fabiano Utiyama.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Paradigmas de Programação
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Algoritmos e Estrutura de Dados I
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.
Prof. Heloise Manica Paris Teixeira
Rafael Pinto Frederico Corrêa
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Análise Léxica Supondo o trecho de programa abaixo:
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Construção de Compiladores
7 Abstração Genérica Unidades genéricas e instanciação.
Linguagens de Programação
PROGRAMAÇÃO ou LINGUAGEM C?
Modelagem de Interações
Algoritmos e Programação
Universidade do Vale do Rio dos Sinos
TÉCNICAS DE PROGRAMAÇÃO II
Paradigmas de programação
Introdução a Computação e Cálculo Numérico
Subprogramas São blocos de execução internas a um programa.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas.
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Implementação de Linguagens Funcionais
Estudo dos Conceitos e Paradigmas de Programação
Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Linguagem de Expressões 2
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
Classes, Objetos, Atributos e Métodos JAVA
Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz
Técnicas de Desenvolvimento de Programas
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Analise Semântica aula-10-analise-semântica.pdf.
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
1 O  -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil.
Algumas notas sobre a linguagem de programação C
Aula01 – Técnicas de Programação II
Cálculo Lambda (l – Calculus)
Lambda Cálculo & Programação Funcional
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Programação Computacional Aula 9: Meu primeiro programa em C
Projeto II - PLP Prof. Augusto Sampaio
Linguagem de Programação I Parte IV
Módulo II Capítulo 1: Orientação a Objetos
Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Bruna Cavallero Martins Universidade Católica de Pelotas.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

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

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

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?

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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)

Leitura Programming Language Concepts and Paradigms Capítulo 5

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