Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Python: Funções Claudio Esperança.
Python: Recursão Claudio Esperança.
Python: Dicionários Claudio Esperança.
Programação em Java Prof. Maurício Braga
Linguagem PASCAL Subprogramas
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Capítulo II – Algoritmos e Programas
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.
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Algoritmos e Estrutura de Dados I
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Políticas Curso de aprofundamento em linguagem C.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
OBS: Este ppt não é o definitivo (Versão Beta)
Instrutor: Nilo Menezes
Apresentação da linguagem Python
Linguagem C Funções.
Revisão da Linguagem C.
Classes e objetos P. O. O. Prof. Grace.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
JAVA: Conceitos Iniciais
Introdução a Computação e Cálculo Numérico
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática 6 Vetores e Matrizes
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Conceitos básicos de orientação a objetos
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
CADEIA DE CARACTERES (Strings)
Ceça Moraes – Introdução à Programação SI1
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Técnicas de Desenvolvimento de Programas
F UNÇÕES : PASSAGEM DE PARÂMETROS Aluno:Kaynã Vasconcelos Santos Matéria: Estrutura de dados e algoritmos I Turma: Professor: Danilo Silva dos Santos.
Paradigma funcional.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Aula Prática 4 Monitoria IP/CC (~if669).
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Fundamentos de linguagens de programação
Recursividade Profs. De Prog2 e Lab2.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Introdução à Programação
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Trechos de código que permitem reutilização de uma mesma tarefa. Qualquer código PHP pode estar contido no interior de uma função. Não se pode definir.
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Linguagem de Programação
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
PRE 1002 Éverlin Marques 2015/1.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Recursividade, Entrada pelo teclado e Funções com retorno Dilvan Moreira.
Transcrição da apresentação:

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012

Introdução Programas são divididos em subprogramas ou funções Funções são chamadas por um identificador e uma lista de parâmetros Funções podem retornar valores

Funções em Python Formato geral: def nome (arg, arg,... arg): comando... comando Nome da função Argumentos da função (0 ou mais argumentos) Comandos (0 ou mais)

Retorno de funções Uma função pode retornar um valor/estrutura Valor calculado Código de erro Comando return Uso: return expressão Quando a execução chega a um return, a função termina, voltando ao ponto aonde a função foi chamada Se nenhum valor de retorno for especificado, a função retorna None expressão é opcional

Exemplos

Parâmetros de funções Parâmetros ou entradas ou argumentos Podem ser passados por valor ou referência Valor = A função recebe uma cópia da variável e alterações do valor dentro da função não afetam as variáveis originais Referência = A função recebe a referência da variável e alterações do valor dentro da função afetam as variáveis originais

Passagem por valor Variável não é modificada Exemplos Se o parâmetro existe, ele precisa ser passado

Passagem por valor

Argumentos padrão Determinam um valor padrão para uma determinada entrada Nesse caso, a entrada não precisa ser especificada Assume valor pré-determinado Uso: Formato: def nome (arg1=default1,..., argN=defaultN) Se apenas alguns argumentos possuem padrões, então esses devem vir por último Evita ambiguidade na definição dos argumentos

Passagem por referência Modifica o valor da variável original Feito com o uso de listas e dicionários

Contudo... Por que não mudou?

Valor x Referência Todos os parâmetros são passados por valor A lista e o dicionário são referências O que é passado para a função é o endereço do espaço de memória Endereço não pode ser mudado, mas o espaço de memória apontado não está protegido e pode ser modificado

Valor x Referência >>>Lista=[1,3] >>>Lista.append(2) Memória antesMemória depois 1,31,3,2 >>>Lista=[str] Memória antesMemória depois 1,3,2 str Lista – começa no endereço 2 Lista – começa no endereço 7

Valor x Referência >>>Lista=[1,3] >>>funcao(Lista) Estou passando a informação lista que começa no endereço x

Valor x Referência Executando a função Memória antesMemória depois 1,31,3,2 >>>Lista=[str] Memória antesMemória depois 1,3,2 str Lista – começa no endereço x Valor interno da lista >>>Lista.append(2) Valor interno da lista Lista – começa no endereço x

Variáveis locais e globais Variáveis definidas dentro de funções são locais Não tem valor fora da função Variáveis definidas fora de funções são globais Para uma função usar variável global, é preciso declarar a variável como global

Variáveis locais e globais Exemplos

Não faça isso!!!!

Evite usar global!!! Passe valores como argumentos da função!!!

Documentação de funções Strings definidas logo após o cabeçalho da função são vistas como documentação Acessível pelo comando funcao.__doc__ Exemplo:

Lista de parâmetros variável Uma lista de parâmetros de tamanho variável pode ser passada para a função Uso do último argumento com * Todos os valores passados a partir desse ponto são colocados em uma tupla Uso: def funcao(arg1, arg2,..., *argn)

Lista de parâmetros variável Exemplo resto =(3,) resto =(3,4,5,6) resto =()

Lista de parâmetros variável Se o último argumento for precedido de ** Todas as entradas a partir desse ponto são interpretadas como um dicionário

Lista de parâmetros variável Uma lista pode preencher parâmetros variáveis se vier precedida de * Um dicionário pode preencher parâmetros variáveis se vier precedido de ** Chaves de variáveis simples devem ser iguais ao nome da variável

Lista de parâmetros variável

Funções como argumentos Nomes de funções podem ser usados como variáveis

Funções definidas em funções Funções definidas dentro de outras funções tem acesso a seu escopo e também ao escopo da função que a define Escopo é aquilo que está definido dentro de uma área de código Escopo global Escopo de uma função Escopo de uma classe

Exemplos

Uso do lambda Funções sem nome que retornam uma expressão Usadas para definir outras funções Uso lambda arg1, arg2,...,argn: expressão Exemplo: >>> f= lambda x,y: x+y >>> f(1,2) 3 >>>

Uso do filter Filtra os elementos de uma sequência que atendem a uma certa função, retornando uma subsequência A sequência pode ser lista, tupla ou string Uso: filter(função, sequência)

Uso do filter Exemplos Retorna os elementos da sequência cujo resultado da função é True.

Uso do map Aplica uma sequência de elementos a uma função, retornando os resultados da função em uma sequência Uso: map(função, sequência)

Uso do map Exemplos

Uso do reduce Aplica uma função repetidamente, utilizando os elementos de sequência A função precisa receber dois elementos O primeiro elemento pode ser especificado opcionalmente Uso: reduce(função, sequência,inicializador_opcional)

Uso do reduce Exemplo: >>> reduce(lambda a,b: a+b, range(5)) 10 Isso é equivalente a f(a,b)=a+b Então: f(f(f(1,2),3),4)=10 >>> reduce(lambda a,b: a+b, range(2,5),1) 10 f(f(f(1,2),3),4)

Recursividade Forma de resolver problemas Resolução de uma função implica em rechamar essa mesma função Exemplo: Fibonacci def Fibonacci(i): if i==0: return 0 if i==1: return 1 return Fibonacci(i-1)+Fibonacci(i-2) i-ésimo elemento da sequência

Exercício Calcule a função fatorial recursivamente Calcule o e-nésimo elemento de uma PA recursivamente Guarde, em uma lista, os n+1 elementos de uma PA recursivamente Faça um programa que calcula a área de uma forma geométrica. Os parâmetros para calcular a área devem ser passados para a função como parâmetros, assim como o nome da forma. O seu programa deve ser capaz de responder a quadrado, retângulo, círculo e triângulo. Ex: Area(triangulo,base,altura) Area(circulo,raio) Calcule os 10 primeiros elementos da série de Fibonacci usando o map Calcule a função fatorial usando o reduce