Buscar

Logica Programacao Aula7

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Outros materiais