Baixe o app para aproveitar ainda mais
Prévia do material em texto
Abstração Procedimental Renata Carvalho UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Abstração • Forma de pensar focada em ideias gerais, no lugar de manifestações específicas dessas ideias • Base para Filosofia, MatemáMca e muitas outras disciplinas, incluindo Ciência da Computação • Concentra-‐se no que é essencial, ignorando os demais aspectos Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Abstração • Em programação, abstração é a disMnção entre o que uma unidade de programa faz e como ela faz isso • Esta disMnção permite separar as preocupações do usuário (usa o programa) e o programador (codifica o programa) • Esta separação é fundamental em desenvolvimento de grandes sistemas • Unidades de programa incluem • Procedimentos • Tipos abstratos Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Funções e Procedimentos • Função • Uma função embute uma expressão a ser avaliada • Quando chamada, uma função retorna um valor como resultado • Procedimento • Um procedimento embute um comando a ser executado • Quando chamado, o procedimento atualiza variáveis • Separação de preocupações • O usuário de uma aplicação está preocupado com o resultado (comportamento observável) • O programador está preocupado em como a função será implementada (algoritmo) Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Princípio da Abstração • Em resumo: • Uma função é uma abstração de uma expressão, que, quando avaliada, retorna um valor como resultado • Um procedimento é uma abstração sobre comandos, que, quando executados, atualizam variáveis Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Princípio da Abstração • Exercício • Escreva dois exemplos diferentes de funções e dois exemplos diferentes de procedimentos Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Parâmetros e Argumentos • Um argumento é um valor ou outra enMdade que é passada para um procedimento/função • Um parâmetro real é uma expressão (ou outro construtor) que retorna um argumento • Um parâmetro formal é um idenMficador através do qual o procedimento pode acessar o argumento • O que pode ser passado como argumento • Valores de primeira classe (em todas as LPs) • Variáveis ou ponteiros para variáveis (em muitas LPs) • Procedimento ou ponteiros para procedimentos (em algumas LPs) Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Parâmetros e Argumentos • Cada parâmetro formal é associado a argumentos • A natureza desta associação é conhecida como mecanismo de passagem de parâmetros • Estes mecanismos são entendidos em termos de dois conceitos: • Mecanismo de passagem de parâmetro por cópia • Liga o parâmetro formal a uma cópia local do valor do argumento • Mecanismo de passagem de parâmetro por referência • Liga o parâmetro formal diretamente ao argumento em si Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Passagem de Parâmetro • Mecanismo de Cópia • Permite que um valor seja copiado para dentro e/ou para fora de um procedimento • O parâmetro formal denota uma variável local do procedimento • Um valor é copiado para uma variável local na chamada ao procedimento • Um valor é copiado para uma variável local (argumento) no retorno • Três possíveis mecanismos de cópia são possíveis • Copy-‐in parameter • Copy-‐out parameter • Copy-‐in-‐copy-‐out parameter Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Passagem de Parâmetro • Mecanismo de cópia • Copy-‐in parameter • O argumento é um valor • Na chamada, uma variável local é criada e inicializada com o valor do argumento • No retorno, esta variável local é destruída • Copy-‐out parameter • O argumento é uma variável • Na chamada, a variável local é criada, mas não inicializada • No retorno, esta variável local é destruída e seu valor é atribuído à variável que representa o argumento de retorno Abstração Funçõese Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Passagem de Parâmetro • Mecanismo de cópia • Copy-‐in-‐copy-‐out parameter • O argumento é uma variável • Na chamada, uma variável local é criada e inicializada com o valor do argumento • No retorno, esta variável local é destruída e seu valor final é atribuído de volta à variável que representa o argumento Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Passagem de Parâmetro • C suporta apenas copy-‐in parameter • É possível produzir o efeito de um parâmetro variável pela passagem de um ponteiro • Se uma função tem um parâmetro do Mpo T* (ponteiro para T), o argumento deve ser um ponteiro para uma variável do Mpo T Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Passagem de Parâmetro • Exercício • Volte aos exemplos de funções e procedimentos que você descreveu e idenMfique os argumentos e os parâmetros reais e formais. Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Aliasing • Aliasing ocorre quando dois ou mais parâmetros formais são ligados ao mesmo argumento variável • Aliasing pode leva a efeitos inesperados • Em geral, aliasing não pode ser detectado pelo compilador • O ônus de detectar aliasing perigosos é do programador Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Aliasing • Exercício • Escreva um exemplo de código em C onde é ocorre o fenômeno de aliasing. Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing UNICAP – UNIVERSIDADE CATÓLICA DE PERNAMBUCO Renata Carvalho Aliasing • Exemplo • int main() { int arr[2] = { 0, 1 }; int i=23; arr[2] = 54; cout << "element 0:\t" << arr[0] << endl; cout << "element 1:\t" << arr[1] << endl; cout << "element 2:\t" << arr[2] << endl; cout << "i:\t\t" << i << endl; // will output 54, not 23. cout << "arr size:\t" << (sizeof(arr) / sizeof(int)) << endl; } Abstração Funções e Procedimentos Princípio da Abstração Parâmetros e Argumentos Passagem de Parâmetro Aliasing
Compartilhar