MC102 - Algoritmos e Programação de Computadores

Slides:



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

Técnicas de Programação II Revisão TP1 Parte2
Python: Funções Claudio Esperança.
Programação em Java Prof. Maurício Braga
Capítulo II – Algoritmos e Programas
Capítulo VIII – Subprogramação
Marco Antonio Montebello Júnior
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.
Construção de Algoritmos AULA 07
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Recursividade Prof. Rosana Palazon.
Programação II Estruturas de Dados
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Algoritmos e Estrutura de Dados I
Conteúdo: - Modularização.
Introdução à Programação
MC102 - Algoritmos e Programação de Computadores
Alocação Dinâmica de Memória
Expressões, controle de fluxo, wrappers e strings Profa
Ponteiros em C.
Universidade Federal do Espírito Santo
Linguagem C Funções.
APRESENTAÇÃO: DAVID ANDERSON CARDOSO DANTAS CURSO DE C AULA 04: Funções Maceió, Maio de 2010.
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
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
Conceitos de Linguagem de Programação
Marco Antonio Montebello Júnior
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 05 Aquiles Burlamaqui UERN
Programação II Estruturas de Dados Aula 02 - continuação
Argumentos por valor Passagem de valor da variável indicada Não permite alteração de variável indicada Exemplo: int quadrado_de(int ); //protótipo int.
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
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Prof: Leandro Maranim Dei Santi Prof. Eduardo Rossit Paiossin
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Uso de parâmetros na linha de comando. Parâmetros da função main:
Aula Prática 3 Funções Monitoria Introdução à Programação.
Algoritmos e Estruturas de Dados I – Modularização
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
Recursividade Bruno Silva.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Linguagem C.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
MC102 - Algoritmos e Programação de Computadores 14ª Aula - Ponteiros Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
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.
Linguagem de Programação I Parte IV
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#
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
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)
Transcrição da apresentação:

MC102 - Algoritmos e Programação de Computadores 16ª Aula – Procedimentos e Funções Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005

Roteiro Relembrando... Escopo Local Passagem de Parâmetros Declaração, definição e uso Chamada a um procedimento - Ilustração Escopo Local Passagem de Parâmetros Valor vs. Referência Vetores como parâmetros Matrizes como parâmetros 04/05/2005

Declaração, definição e uso Quando são definidas as propriedades de uma função (tipo de retorno e lista de parâmetros): Protótipos de Funções Definição de Funções (declaração está implícita) Definição Quando uma função é detalhadamente descrita Uso Quando uma função é chamada por outra função 04/05/2005

Relembrando... Protótipo: Definição: Chamada Na declaração (protótipo e definição), cada parâmetro deve ser precedido por seu tipo de dado Relembrando... Protótipo: tipo NomeDaFuncao (lista de parâmetros); Definição: tipo NomeDaFuncao (lista de parâmetros) { declarações e comandos; } Chamada NomeDaFuncao (lista parâmetros); 04/05/2005

Chamada a um Procedimento Programa Instrução Procedimento Instrução Instrução Procedimento Instrução Instrução Instrução Instrução 04/05/2005

Escopo Local As variáveis que temos declarado até o momento são privativas ou locais as suas funções Os parâmetros de uma função também são considerados variáveis locais a ela Este tipo de variável passa a existir somente quando a função é chamada e deixa de existir somente quando a função termina e, por isso, são denominadas variáveis automáticas 04/05/2005

Escopo Local Variáveis automáticas não retêm seus valores de uma chamada para outra e se não forem inicializadas contêm um valor desconhecido Duas ou mais variáveis não podem ser declaradas com o mesmo nome se fazem parte da mesma função, mas elas podem ter o mesmo nome se forem declaradas em funções diferentes (neste caso farão referência a endereços de memória distintos, ou seja, são variáveis diferentes) 04/05/2005

Passagem de Parâmetros long int somatorio (long int m, long int n); double produtorio (long int m, long int n); double potencia (float x, int y); double fatorial (int n); double Pn (int n); double Ank (int n, int k); double Cnk (int n, int k); 04/05/2005

Passagem de Parâmetros Passagem de parâmetros por valor As funções cujos protótipos foram apresentados na transparência anterior são funções que recebem valores como parâmetros Estes valores podem ser valores constantes, conteúdos de variáveis, resultados de expressões em geral É importante que estes valores estejam de acordo com o tipo declarado para o parâmetro correspondente 04/05/2005

Passagem de Parâmetros Considere os trechos de código a seguir: soma = somatorio (0, 1); soma = somatorio (a, b); produto = produtorio (somatorio (a,b), a*b); printf (“%d”, somatorio (a, 2*b)); Suponha que as variáveis soma, a e b tenham sido declaradas como sendo do tipo long int Suponha que a variável produto tenha sido declarada como double 04/05/2005

Exemplo 1 /* Uma definição para a função somatório */ long int somatorio (long int m, long int n) { long int i, soma = 0; for (i = m; i <= n; i++) soma += i; return (soma); } As variáveis m e n, ambas parâmetros do tipo long int, são variáveis que pertencem ao escopo da função: long int somatorio (long int m, long int n); 04/05/2005

Exemplo 1 /* Outra definição para a função somatório */ long int somatorio (long int m, long int n) { long int soma = 0; while (m <= n) soma += m++; return (soma); } Alterações na variável m, local à função long int somatorio (long int m, long int n); são percebidas apenas no escopo da função 04/05/2005

Passagem de Parâmetros void troca (long int *x, long int *y); Passagem de parâmetros por referência O protótipo acima, indica que o procedimento deve receber endereços para variáveis do tipo long int como parâmetros O trecho a seguir ilustra o uso desse procedimento: if (a > b) troca (&a, &b); Suponha que as variáveis a e b tenham sido declaradas como sendo do tipo long int 04/05/2005

Exemplo 2 /* Definição da função cujo protótipo foi exibido na transparência anterior */ void troca (long int *x, long int *y) { long int aux; aux = *x; /* variável aux recebe conteúdo do endereço apontado por x */ *x = *y; /* endereço apontado por x recebe o conteúdo do endereço apontado por y */ *y = aux; /* endereço apontado por y recebe o conteúdo da variável aux */ } As variáveis x e y são ambas do tipo ponteiro para long int 04/05/2005

Vetores como Parâmetros Vetores também podem ser passados como parâmetros para funções, mas são sempre passados por referência Implicação: ao alterar valores dos elementos de um vetor passado como parâmetro, as alterações são “percebidas” no escopo da função chamadora 04/05/2005

Exemplo 3 (Protótipos) Considere os protótipos a seguir: void mostra_vetor (int v[LIM], int n); void multiplica_escalar (int v[LIM], int n, int e); Suponha que LIM é uma constante inteira definida no início do programa 04/05/2005

Exemplo 3 (Protótipos) Também são válidos os protótipos: void mostra_vetor (int v[], int n); void multiplica_escalar (int v[], int n, int e); Ou ainda: void mostra_vetor (int *v, int n); void multiplica_escalar (int *v, int n, int e); 04/05/2005

Exemplo 3 (Definições) void mostra_vetor (int v[LIM], int n) { int i; for (i = 0; i < n; i++) printf (“%d”, v[i]); } void multiplica_escalar (int v[], int n, int e) { v[i] = e*v[i]; 04/05/2005

Matrizes como Parâmetros Matrizes também podem ser passadas como parâmetros Assim como vetores, são sempre passadas por referência 04/05/2005

Exemplo 4 (Protótipos) Considere os protótipos a seguir: void mostra_matriz (int m[LIM][LIM], int i, int j); void multiplica_escalarM (int m[LIM][LIM], int i, int j, int e); Também são válidos os protótipos: void mostra_matriz (int m[][LIM], int i, int j); void multiplica_escalarM (int m[][LIM], int i, int j, int e); Apenas a primeira dimensão da matriz pode ser omitida 04/05/2005

Exemplo 4 (Definições) void mostra_matriz (int m[][LIM], int i, int j) { int auxi, auxj; for (auxi = 0; auxi < i; auxi++) { for (auxj = 0; auxj < j; auxj++) printf (“%d ”, m[auxi][auxj]); printf (“\n”); } 04/05/2005

Exemplo 4 (Definições) void multiplica_escalarM (int m[LIM][LIM], int i, int j, int e) { int auxi, auxj; for (auxi = 0; auxi < i; auxi++) for (auxj = 0; auxj < j; auxj++) m[auxi][auxj] = e*m[auxi][auxj]; } 04/05/2005