Subalgoritmos Profª Letíca Lopes

177 visualizações

Publicada em

Sub Algoritmos com a Profª Letícia Lopes

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
177
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Subalgoritmos Profª Letíca Lopes

  1. 1. 1 Subalgoritmos Profª. Leticia Lopes Leite Programação para Engenharia I O que é uma função? São blocos de códigos (módulos) que podem ser chamados dentro de um programa. “Dividir para conquistar” Vantagens da Modularização* • Economia de tempo de criação do programa; • Economia de tempo de manutenção do programa; • Organização do código; - Evitar que um trecho de código seja repetido várias vezes; - Evitar que os blocos fiquem extensos demais; - Facilitar a leitura do programa fonte; • Reutilização de módulos; • Construção de Bibliotecas. * Retirado das transparências da Profª. Silvia e Profª. Maria Luiza Formato Geral de Uma Função tipo_da_funcao NomeDaFuncao(Lista_de_Parametros) { // corpo da função } Chamada Lista de Argumentos Parâmetros Atuais e Formais Parâmetros formais: utilizados na declaração das funções. Parâmetros atuais: utilizados na chamada das funções. Observações Importantes As funções devem ser declaradas ANTES de serem utilizadas. Diz-se que se insere o protótipo da função. Exemplo: valor_retornado Nome_da_função (parâmetros); Abaixo das definições de bibliotecas
  2. 2. 2 Tipos Funções que não retornam nada (void) Funções que retornam um valor: indicação do tipo de valor a ser retornado. Funções do Tipo Void São as funções que não retornam qualquer valor. Definir como tipo de retorno a palavra void. A palavra “void” também deverá ser utilizada caso a função não apresente parâmetros. Exemplo de Void #include <stdio.h> void quadrado (void); void quadrado(void) { int k; for (k=1; k<=10; k++) printf("%dn", k*k); } void main(void) { quadrado( ); } Exemplo de Void . . . void quadrado(void) { int k; for (k=1; k<=10; k++) printf("%dn", k*k); } void main(void) { quadrado( ); } Definição da Função Sem valor de retorno Exemplo de Void . . . void quadrado(void) { int k; for (k=1; k<=10; k++) printf("%dn", k*k); } void main(void) { quadrado( ); } Sem parâmetros de entrada Exemplo de Void . . . void quadrado(void) { int k; for (k=1; k<=10; k++) printf("%dn", k*k); } void main(void) { quadrado( ); } Chamada da função
  3. 3. 3 Exemplo de Void . . . void quadrado(void) { int k; for (k=1; k<=10; k++) printf("%dn", k*k); } void main(void) { quadrado( ); } Obrigatório para funções sem argumentos Uso de Parâmetros em Funções Os parâmetros indicam sobre quais dados a função trabalha. A declaração dos parâmetros é semelhante a declaração de variáveis. Local da declaração: entre os parênteses do cabeçalho da função. Utilização de mais de um parâmetro: separação por vírgulas. Passagem de Parâmetros Por Valor Também chamada by value Um cópia do conteúdo da variável é feita para o parâmetro da função. Implicações: o valor da variável não é modificado. Exemplo: void SOMA(float val1, int val2) { float result; result = val1+val2; printf(“A soma de %6.3f com %d é %6.3fn”, val2,val1,result); } Passagem de Parâmetros por valor Observações na Passagem de Parâmetros Os parâmetros são passados para uma função de acordo com a sua posição. Os nomes dos parâmetros na chamada não têm relação com os nomes dos parâmetros na definição da função. Exemplo #include <stdio.h> void SOMA(float val1, int val2); void SOMA(float val1, int val2) { float result; result = val1+val2; printf("A soma de %d com %6.3f é %6.3fn”, val2,val1,result); } void main() { int a; float b; a = 10; b = 12.3; SOMA(b,a); }
  4. 4. 4 Exemplo #include <stdio.h> void SOMA(float a, int b); void SOMA(float val1, int val2) { float result; result = a+b; printf("A soma de %d com %6.3f é %6.3fn, val2,val1,result); } void main() { int a; float b; a = 10; b = 12.3; SOMA(b,a); } PROTÓTIPO Importante: As variáveis declaradas dentro de uma função só valem dentro da mesma. Mesmo que os nomes sejam idênticos? SIM São chamadas Variáveis LOCAIS Existem outros tipos de variáveis? Sim, as Variáveis GLOBAIS. São definidas logo após os protótipos das funções. Abrangência: TODO O PROGRAMA Exemplo#include <stdio.h> void SOMA(float a, int b); float result; void SOMA(float val1, int val2) { result = val1+val2+result; printf("A soma de %d com %6.3f é %6.3fn, val2,val1,result); } void main() { int a; float b; a = 10; b = 12.3; SOMA(b,a); } Variável Global Funções que Retornam Valor Declaração tipo_de_retorno nome_da_função (parâmetros) { corpo_da_função } Tipo de variável que a função retornará
  5. 5. 5 Exemplo . . . int quadrado (int a) { return (a*a); } int main () { int num; printf ("Entre com um numero: "); scanf ("%d",&num); num=quadrado(num); printf ("nn O seu quadrado vale: %dn",num); } Exemplo . . . int quadrado (int a) { return (a*a); } int main () { int num; printf ("Entre com um numero: "); scanf ("%d",&num); num=quadrado(num); printf ("nn O seu quadrado vale: %dn",num); } Atribuição do resultado da função “quadrado” para a variável “num” Return??? Retorna um valor desejado OU Convenção: Se o programa retornar 0 término normal Se o programa retornar ≠ 0 término anormal Passagem de Parâmetros por Referência Passa o endereço de memória da variável. Parâmetros são do tipo Ponteiro. Implicação: modificação do conteúdo da variável O que é um Ponteiro? É um apontador para um endereço de memória. Declaração: tipo_do_ponteiro &nome_da_variável; Indica ao compilador que a variável vai armazenar um endereço O que é um Ponteiro? É um apontador para um endereço de memória. Declaração: tipo_do_ponteiro &nome_da_variável; Indica para que tipo de variável que será retornada
  6. 6. 6 Em que lugar da função utilizar o ponteiro??? Na definição da função e nos protótipos. Ponteiro na Chamada da Função Utilizar o símbolo “&” para passagem de parâmetros na chamada da função. Exemplo: . . . valor=funcao(a, &total); . . . Exemplo: Função que lê 10 valores inteiros e retorna por parâmetro o maior e o menor #include <stdio.h> void FuncaoMaiorMenor(int &maior, int &menor) { int num, i; for(i=0; i<10; i++) { printf("Digite um numero:"); scanf("%d", &num); if (i==0) { maior = menor = num; } else { if (num>maior) maior = num; else if (num<menor) menor = num; } } } ... ... main() { int maior, menor; FuncaoMaiorMenor(maior, menor); printf("Maior=%d, Menor=%d", maior, menor); } Exercícios Passagem por Referência Faça um programa que apresente uma função que retorna através dos parâmetros a soma dos números pares e a soma dos números ímpares entre 10 e 100. Escreva um programa que apresente uma função que recebe, por parâmetro, dois valores X e Z e calcula e retorna Xz . (sem utilizar funções ou operadores de potência prontos)

×