Baixe o app para aproveitar ainda mais
Prévia do material em texto
MODULARIZAÇÃO SUBROTINA/FUNÇÕES Prof Carlos Lahoz Extraído do material do Prof. Dr. Valdir Gil Pillat Introdução • Um importante recurso apresentado nas linguagens de programação é a modularização. A linguagem C/C++ possibilita a modularização por meio das funções. • Um programa escrito na linguagem C/C++ tem, no mínimo, uma função chamada main, por onde a execução começa. Introdução • Algumas funções predefinidas na linguagem C/C++: clrscr(), gets(), strcmp(), strcpy() etc. • Estas funções são adicionadas aos programas pela diretiva #include, no momento da "linkedição". • Além disso, o usuário também pode criar quantas funções quiser. Tipo de funções • As funções às vezes precisam receber valores externos, chamados parâmetros. Os parâmetros são representados por uma lista de variáveis colocadas dentro de parênteses, logo após o nome da função. Tipo de funções • As funções também podem devolver algum valor produzido para o ambiente externo, denominado retorno. o Caso haja retorno, a última linha da função deverá incluir o comando return, seguido do valor ou variável que será devolvido a quem chamou a função. O tipo do valor retornado deverá ser exatamente igual ao tipo informado antes do nome da função. o Caso não haja retorno, deverá ser digitada a palavra void. Os tipos de funções são apresentados em detalhes a seguir. Sem passagem de parâmetros e sem retorno 1. #include <stdio.h> 2. void soma() 3. { int a, b, s; 4. printf("Digite o primeiro numero"); 5. scanf("%d",&a); 6. printf("Digite o segundo numero"); 7. scanf("%d",&b); 8. s=a+b; 9. printf("\nSoma = %d",s); 10. getch(); 11. } 12. int main() 13. { 14. soma(); 15. } Com passagem de parâmetros e sem retorno 1. #include <stdio.h> 2. void calcula_media(int numero1, int numero2) 3. { float media; 4. media = (numero1+numero2)/2; 5. printf("\nMédia = %f",media); 6. getch(); 7. } 8. int main() 9. { int n1, n2; 10. printf("Digite o primeiro numero"); 11. scanf("%d",&n1); 12. printf("Digite o segundo numero"); 13. scanf("%d",&n2); 14. calcula_media(n1,n2); 15. } Sem passagem de parâmetros e com retorno 1. #include <stdio.h> 2. float multiplicacao() 3. { float multiplicando, multiplicador, produto; 4. printf("Digite o primeiro numero"); 5. scanf("%f",&multiplicando); 6. printf("Digite o segundo numero"); 7. scanf("%f",&multiplicador); 8. produto=multiplicando*multiplicador; 9. return produto 10.} 11.int main() 12. { float resposta; 13. resposta = multiplicacao(); 14. printf("\nO produto é %f",resposta); 15.} Com passagem de parâmetros e com retorno 1. #include <stdio.h> 2. float divisao(int dividendo, int divisor) 3. { float q; 4. q=dividendo/divisor; 5. return q; 6. } 7. int main() 8. { int n1, n2; 9. float resposta; 10. printf("Digite o primeiro numero"); 11. scanf("%d",&n1); 12. printf("Digite o segundo numero"); 13. scanf("%d",&n2); 14. resposta=divisao(n1,n2); 15. printf("\nO resultado da divisão é %f",resposta); 16.} Protótipo de função • Em qualquer programa, podemos escrever funções antes ou depois da função main. Se optarmos por escrevê-las antes, nenhum cuidado especial será necessário. Porém, se optarmos por escrevê-las abaixo da função main, deveremos fazer uso dos protótipos de função. Exemplo protótipo 1. #include <stdio.h> 2. float divisao(int dividendo, int divisor); //esta linha descreve o protótipo da função. 3. int main() 4. { int n1, n2; 5. float resposta; 6. printf("Digite o primeiro numero"); 7. scanf("%d",&n1); 8. printf("Digite o segundo numero"); 9. scanf("%d",&n2); 10. resposta=divisao(n1,n2); 11. printf("\nO resultado da divisão é %f",resposta); 12.} 13.float divisao(int dividendo, int divisor) 14.{ float q; 15. q=dividendo/divisor; 16. return q; 17.} Passagem de valor (Parâmetros) • Por valor (Copia a variável original para outra variável) • Por referência (atualiza a variável original) Por valor 1. #include<stdio.h> 2. int soma_dobro(int a, int b); 3. int main() 4. { int x, y, res; 5. printf("Digite o primeiro numero"); 6. scanf("%d",&x); 7. printf("Digite o segundo numero"); 8. scanf("%d",&y); 9. res=soma_dobro(x,y); 10. printf("\nAsoma do dobro dos números %d e %d é %d",x,y,res); 11.} 12.int soma_dobro(int a, int b) 13. { int soma; 14. a=2*a; 15. b=2*b; 16. soma=a+b; 17. return soma; 18. } Por referência 1. #include<stdio.h> 2. int soma_dobro(int *a, int *b); 3. int main() 4. { int x, y, res; 5. printf("Digite o primeiro numero"); 6. scanf("%d",&x); 7. printf("Digite o segundo numero"); 8. scanf("%d",&y); 9. res=soma_dobro(&x,&y); 10. printf("\nAsoma do dobro dos números %d e %d é %d",x,y,res); 11. } 12.int soma_dobro(int *a, int *b) 13. { int soma; 14. *a=2*(*a); 15. *b=2*(*b); 16. soma=*a+*b; 17. return soma; 18. } 1. #include <stdio.h> 2. void soma_linhas(float m[][5],float v[]) 3. { int i, j; 4. for (i=0;i<3;i++){ 5. for(j=0;j<5;j++){ 6. v[i]=v[i]+m[i][j]; 7. } 8. } 9. } 10. int main() 11. { int i, j; 12. float mat[3][5],vet[3]; 13. clrscr(); 14. for (i=0;i<3;i++) { 15. vet[i]=0; 16. for (j=0;j<5;j++) { 17. printf("\nDigite o elemento %d - %d:", i, j); 18. scanf("%d",&mat[i][j]); 19. } 20. } 21. soma_linhas(mat, vet); 22. for(i=0;i<5;i++) { 23. printf("\nSoma da coluna %d = %d",i, vet[i]); 24. } 25. } Matrizes Bibliografia • Ascencio, Ana Fernanda Gomes; de Campos, Edilene Aparecida Veneruchi. Fundamentos da programação de computadores: Algoritmos, Pascal, C/C++, e Java, 2 ed., Pearson, 2007 • Puga, S.; Rissetti, G. Lógica de programação e estruturas de dados com aplicações em Java, 2 ed, Pearson, 2009. • C Library. Disponível em: http://www.cplusplus.com/reference/clibrary/ Acessado em: 04/09/2012.
Compartilhar