Procedimentos e Funções

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Funções em C Prof. Fabiano Utiyama.
Programação em Java Prof. Maurício Braga
ESTRUTURA DE DADOS EXERCÍCIOS e MATRIZES
Lógica de Programação Prof. Msc. Raul Paradeda Aula 4 Entrada/Saída.
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.
Algoritmos.
Tipos de dados, Variáveis, Expressões e Operadores
Recursividade Prof. Alex F. V. Machado
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Conteúdo: - Modularização.
Conteúdo: - Portugol.
Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira
Template Method Projeto de Sistemas de Software. © LES/PUC-Rio Template Method Motivação.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Formas de representação de algoritmos
Vetores (ou arranjos unidimensionais) adaptado de material da profa
Algoritmos Escher.
Funções em C Universidade do Estado de Santa Catarina
Arquitetura de Sistemas Operacionais
Descreva por palavras suas o funcionamento de um algoritmo
7 - Funções pré-definidas
6 – Estruturas de Controlo
Algoritmos e Programação
O Portal do Estudante de Computação
Variáveis, Tipos de Dados e Constantes
Introdução a programação (if669cc)
Aux a fim início Simulação da execução de um algoritmo que troca o conteúdo de duas variáveis recebidas e apresenta o resultado da inversão: leia a,b a.
Algoritmo Exibe a nota de um aluno aprovado
Subprogramas São blocos de execução internas a um programa.
Conjuntos Disjuntos Monitoria Algoritmos
Informática e Computação Estrutura de Repetição aula 13
Comunicação Inclusiva Acessibilidade e Programação Web
Algoritmos Recursivos Klauko Mota. Conceito de Recursividade Um programa recursivo é um programa que chama a si mesmo, direta ou indiretamente Conceito.
© 2003 Introdução à programaçãoComputadores e programação I Execução de instruções Aula nº4.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Equipe: Italo Boss Breno Ribeiro José Maria Gabriel Pinheiro.
SOMA  0 fim início Simulação do algoritmo que soma os valores dos primeiros números naturais até o número fornecido como entrada: leia N T
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
Roteiro Jogo de adivinhação Tarefa Desafio Algoritmo do jogo
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Paradigmas de Linguagens de Programação Aula 2
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Vetores Unidimensionais Sistemas de Informação Desenvolvimento de Sistemas para Web Prof. Gale.
GESTÃO DA QUALIDADE.
Vetores Unidimensionais Prof. Gale. A Variável A  Ilustrando: O que aconteceria no algoritmo... A  3 Escreva A A  5 Escreva A 3 5.
Estrutura Organizacional
Aula Prática 2 Monitoria IP/CC (~if669).
VETORES.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Informática e Computação Aula Estrutura de Repetição
Linguagem de Programação II Parte VI Professora: Flávia Balbino da Costa.
Programação I Aula 07 Autor: Francisco Airton Professor: André L. R. Didier 1.
Professor: André L. R. Didier Autor: Francisco Airton
Conceituando o uso de funções em linguagens de programação
Estruturas de Dados I Prof. Marcos Saúde
Linguagem de Programação I Parte IV
Formulários.
Trabalho Cálculo Numérico º Trabalho 1) Implementar um programa em linguagem C que converta números binários (inteiros e fracionários) para a.
O Stack e Subrotinas Permitem reusar o código Escreva e depure o código uma vez, use-o quantas vezes for preciso Uma Subrotina deve ser chamada Uma Subrotina.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Design Patterns Mediator Projeto de Sistemas de Software Kelly Leal.
Programação I Aula 06 Autor: Francisco Airton Professor: André L. R. Didier 1.
PRE 1002 Éverlin Marques 2015/1.
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
Algoritmos e Estruturas de Dados I
Transcrição da apresentação:

Procedimentos e Funções

Motivação Procedimentos e Funções promovem o reuso de código eliminando a necessidade de replicação Facilitam a manutenção, legibilidade extensão dos programas

Motivação Exemplo 1 Algoritmo testeSemFunção () início inteiro base=0 ler base inteiro fat=1 inteiro cont=1 para (cont<base;cont=cont+1) faça fat = fat*cont fimpara base=fat

Motivação Exemplo 1 inteiro expoente =0 ler expoente fat=1 cont=1 para (cont<expoente;cont=cont+1) faça fat = fat*cont fimpara expoente=fat

Motivação Exemplo 1 inteiro divisor =0 ler divisor fat=1 cont=1 para (cont<divisor;cont=cont+1) faça fat = fat*cont fimpara divisor=fat

Motivação Exemplo 1 inteiro x =0 ler x fat=1 cont=1 para (cont<x;cont=cont+1) faça fat = fat*cont fimpara x=fat

Motivação Exemplo 1 imprimir "fatorial base:"+base imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

Motivação Foi necessário replicar o código para calcular o fatorial quatro vezes dentro do código Será preciso replicar este código sempre que quisermos calcular o fatorial de um número? Há alguma maneira mais eficiente e elegante de se fazer isso?

Motivação Uso de Procedimentos/Funções Evitam replicação desnecessária de código promovendo assim o reuso

Motivação Exemplo 2 Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

Motivação Exemplo 2 inteiro fatorial =0 ler fatorial fatorial = móddulo (fatorial) inteiro x =0 ler x x=fatorial(x) imprimir "fatorial base:"+base imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

Motivação Exemplo 2 inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

Motivação Redução clara no tamanho do código Exemplo 1 = 5 slides Exemplo 2 = 3 slides Aumento da legibilidade – todas as funcionalidades do programa estão em um único slide

Motivação Possível Manutenção - o uso de procedimentos e funções facilitam a manutenção do código Imagine que houvesse um erro no exemplo 1 no trecho de atualização dos contadores. A correção teria que ser propagada por todo o código

Motivação No exemplo 2 a manutenção só teria que ser feita em um ponto, ou seja, no função fatorial

Motivação - Reuso No exemplo 1, sempre que necessário calcular um fatorial de um número uma nova réplica do código de cálculo deverá ser feita No exemplo 2, é necessário apenas uma chamada à função

Sintaxe Procedimentos Procedimento nome(<lista parâmetros>) início corpo fim Funções tipo nome(<lista de parâmetros>) início corpo fim

Sintaxe – lista de parâmetros Pode ser uma lista vazia – nesse caso, a função não recebe dados de entrada Pode um ou mais elementos seguindo a sintaxe tipo par1, tipo par2, ..., tipo parFinal

Sintaxe - Tipos Qualquer tipo básico da linguagem – Inteiro, Real, Texto, etc Qualquer tipo definido na linguagem, string, vector, iterator, etc Qualquer tipo definido pelo programador

Sintaxe - Nomes Os nomes, tanto de funções como de parâmetros devem ser identificadores válidos Eles devem começar por um caractere (a-z, A-Z) e podem ser seguidos de um ou mais caractere ou dígitos(a-z,A-Z,0-9,_)

Sintaxe - Nomes Não podem conter espaços em branco Inteiro calcular fatorial(Inteiro x ) Erro de compilação Inteiro calcular_fatorial(Inteiro x ) Correto Inteiro calcularFatorial(Inteiro x )

Dicas O nome de uma função deve expressar claramente o que ela faz A dificuldade em definir o nome de uma função pode indicar que ela deve ser dividida em mais de uma função

Sintaxe - Corpo Corpo de um procedimento é um conjunto de comandos válidos na linguagem Podemos declarar variáveis, fazer comandos de entrada e saída Funções e procedimentos podem usar outras funções e procedimentos previamente declarados Funções e procedimentos não podem declarar dentro de seu corpo outras funções e procedimentos

Sintaxe Procedimentos Procedimento nome(<lista parâmetros>) início corpo fim Funções tipo nome(<lista de parâmetros>) início corpo fim

Sintaxe - Retorno Procedimentos não possuem em sua assinatura nenhum tipo, que significa que esta função não retorna nenhum valor Funções necessariamente possuem um tipo de retorno, que pode ser qualquer um dos mencionados anteriormente

Sintaxe - Retorno Inteiro calcularAreaRetangulo (Inteiro base, Inteiro alt) Esta assinatura indica que a função calcularAreaRetangulo recebe dois parâmetros Inteiros e retorna um valor inteiro.

Sintaxe - Retorno A presença de um tipo de retorno indica que ao terminar sua execução uma função deve retornar um valor do tipo de retorno especificado Assim, uma função que possui um tipo de retorno Inteiro deve retornar um valor Inteiro, Lógico um valor lógico e assim sucessivamente

Sintaxe - Retorno Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) início Inteiro area=base * alt retorne area fim

Sintaxe - Assinatura Em algumas linguagens de programação, entre elas c++, não é possível fazer uma chamada para uma função antes da declaração dela No entanto, por questões organizacionais, pode não ser Interessante definir uma função em um determinado ponto do código

Sintaxe - Assinatura Suponha que você quer manter suas funções em ordem alfabética Suponha que, por clareza, você quer que duas funções fiquem próximas, por exemplo funções de entrada e saída

Sintaxe - Assinatura Como resolver situações como as expostas anteriormente? A resposta é a declaração da assinatura da função A assinatura permite que se utilize uma função antes de sua declaração

Sintaxe - Assinatura Inteiro fatorial(inteiro x); Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base)

Sintaxe - Assinatura Inteiro fatorial(inteiro x); Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base) Assinatura

Uso Como usar uma função? Basta apenas fazer uma chamada para função

Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Inteiro alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro b =2 Inteiro t = 3 Inteiro result = calcularAreaRetangulo(b, t) imprimir “o resultado é ” + result fim

Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro intAlt=(Inteiro)alt Inteiro result = calcularAreaRetangulo(base, intAlt) imprimir “o resultado é ” + result fim

Como Funciona? Ao iniciar o programa, o SO tem o endereço de todas as funções definidas Ao encontrar uma chamada de função/procedimento, o fluxo do programa é desviado para o a função Ao terminar a execução da função, o fluxo retorna para o ponto imediatamente após o ponto onde a função foi chamada

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

Variáveis Locais Funções permitem a definição de variáveis

Variáveis Locais Funções permitem a definição de variáveis Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) Início Inteiro area=base * alt; return area; Fim

Variáveis Locais Funções permitem a definição de variáveis As variáveis declaradas dentro das funções só tem validade dentro destas funções

Variáveis Locais Funções permitem a definição de variáveis As variáveis declaradas dentro das funções só tem validade dentro destas funções Variáveis declaradas dentro de funções são chamadas variáveis automáticas pois são criadas e destruídas sempre que a função para executada

Como Funciona? Mecanismo é chamado pilha de execução A pilha de execução está vazia Ao iniciar a execução de um bloco (início... fim), as variáveis são empilhadas à medida em que são criadas; Ao final de um bloco, essas variáveis são desempilhadas, liberando espaço na memória.

Exemplo Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) Início Inteiro area=base * alt; return area; Fim area Início da função Durante a Função Depois da Função

Variáveis Locais x Globais É possível declarar variáveis locais com o mesmo nome de variáveis globais Nestes caso, a variável local “esconde” a variável global Inteiro nota procedimento funcao() Início Inteiro nota; /* Neste ponto, nota é variável local*/ Fim

Revisão Porquê usar funções Sintaxe Como usar funções Como funciona a chamada de funções Definição de variáveis locais Execução da pilha de execução

Próximos Passos Variações nas passagens de parâmetro (valor, referência, limitações) Recursão

Exercícios Criar uma função que receba as coordenadas x,y e z de dois vetores e calcule o produto escalar destes 2 vetores Criar uma função que calcule a área de um circulo que receba o raio como parâmetro Criar funções que calculem a área de um triangulo( parâmetros a serem definidos)