A maior rede de estudos do Brasil

Grátis
84 pág.
Aula 05 - Subrotinas - Funções e procedimentos

Pré-visualização | Página 3 de 4

{
real A,D;
A -40;
D valorAbsoluto(A);
imprima (D);
}
P5
P6
P7
P8
P8
P9
P1
P2
P3
P4
P10
--40???-40P5
lixo-40???-40P6
P10
40-4040-40P9
40-40???-40P8
P8
lixo-40???-40P7
--40-40P4
--lixo-40P3
--lixolixoP2
----P1
YXDA
valorAbsolutoprincipal
Linha
Funções exemplo
real valorAbsoluto ( real X )
{
real Y;
se (X 0) // (-40 0)
{
Y X;
}
senão
{
Y - X; 
}
retorne Y;
}
principal
{
real A,D;
A -40;
D valorAbsoluto(A);
imprima (D);
}
P5
P6
P7
P8
P8
P9
P1
P2
P3
P4
P10
--40???-40P5
lixo-40???-40P6
40-40P10
40-4040-40P9
40-40???-40P8
P8
lixo-40???-40P7
--40-40P4
--lixo-40P3
--lixolixoP2
----P1
YXDA
valorAbsolutoprincipal
Linha
Funções: retornam valor. São utilizadas para realizar 
uma operação e retornam alguma resposta relativa à 
operação realizada.
Exemplo:
int soma (int a, int b)
{
return (a+b);
}
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
25
50
75
a
b
c
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
25
50
75
a
b
c
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
25
50
75
a
b
c
a1
b1
&a
&b
MemMemóóriaria
25
50
75
a
b
c
a1
b1
aux25
&a
&b
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
50
50
75
a
b
c
a1
b1
aux25
&a
&b
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
50
25
75
a
b
c
a1
b1
aux25
&a
&b
MemMemóóriaria
50
25
75
a
b
c
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
50
25
75
a
b
c
a1
b1
&b
&c
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
a
b
c
a1
b1
aux25
&b
&c
50
25
75
MemMemóóriaria
75
a
b
c
a1
b1
aux25
&b
&c
50
75
75
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
a
b
c
a1
b1
aux25
&b
&c
50
75
25
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
#include <stdio.h>
void Troca(int *a1, int *b1)
{ 
int aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
int a=25, b=50, c=75;
Troca(&a,&b);
Troca(&b,&c);
printf( %d,%d,%d ,a,b,c);
return 0;
}
MemMemóóriaria
a
b
c
50
75
25
Variações na implementação de 
subrotinas em C
#includes.....
int Func1(int a)
{
........
}
main()
{
......
x=Func1(10);
.....
}
#includes.....
int Func1(int a); //protótipo
main()
{
......
x=Func1(10);
.....
}
int Func1(int a)
{
........
}
Exercícios
1) O que será impresso no programa abaixo?
#include <stdio.h>
void calculo (int *p, int *q)
{
*p = *p * 10;
*q = *q + 10;
}
int main()
{
int x = 2, y = 5;
calculo(&x,&y);
printf("%d - %d",x,y);
return 0;
}
Exercícios
2) Qual a saída do programa abaixo:
#include <stdio.h>
int calculo (int p, int q)
{
p = p * 10;
q = q + 10;
return(p + q);
}
int main()
{
int x = 2, y = 5;
printf( %d %d %d ,x,y,calculo(x,y));
return 0;
}
Exercícios
3) Qual a saída do programa abaixo:
#include <stdio.h>
int calculo (int p, int *q)
{
p = p * 10;
*q = *q + 10;
return(p);
}
int main()
{
int x = 2, y = 5, z;
z = calculo(x,&y);
printf( %d %d %d ,x,y,z);
return 0;
}
Exercícios
4) Qual a saída do programa abaixo:
#include <stdio.h>
int cal(int p, int *q, int *r)
{
p = p * 10;
*q = *q + 10;
*r = *r - 10;
return(p);
}
int main()
{
int x = 2, y = 5, z = 3, r;
r = cal(x,&y,&z);
printf( %d %d %d %d ,x,y,z,r);
return 0;
}
Subrotinas
DCC 120
REVISÃO: Forma Geral
A forma geral de uma subrotina é:
especificador_tipo nome ( lista parâmetros )
{
corpo da subrotina;
return xxx;
}
REVISÃO: Tipos de Subrotinas
procedimentos
void ImprimeSoma (int a, int b)
{ 
printf( %d , a+b); 
}
funções
int Soma (int a, int b)
{ 
return (a+b); 
}
REVISÃO: Como implementar Subrotinas
#includes.....
int Func1(int a)
{
........
}
main()
{
......
x=Func1(10);
.....
}
#includes.....
int Func1(int a); //protótipo
main()
{
......
x=Func1(10);
.....
}
int Func1(int a)
{
........
}
Escreva um programa que leia a matrícula de um aluno e suas três notas. Calcule a média 
desse aluno e mostre, ao final, a média calculada e uma mensagem "APROVADO" se a média 
for maior ou igual a 6 e "REPROVADO" caso contrário. O cálculo da média e as impressões 
devem ser feitos por um procedimento. Repita a operação até que uma matrícula negativa 
seja lida.
void media(float nota1, float nota2, float nota3)
{
float media;
media = (nota1 + nota2 + nota3) / 3;
printf("Media = %.2f\n", media);
if(media >= 6)
printf("APROVADO\n");
else
printf("REPROVADO\n");
}
int main()
{
int matricula;
float n1, n2, n3;
printf("Digite a matricula do aluno: ");
scanf("%d", &matricula);
while(matricula >= 0)
{
printf("Digite as 3 notas: ");
scanf("%f %f %f", &n1, &n2, &n3);
media(n1, n2, n3);
printf("Digite a matricula do aluno: ");
scanf("%d", &matricula);
}
return 0;
} 
Exemplo completo usando PROCEDIMENTO
int quadrado (int x)
{
return (x * x);
}
int main ()
{
int numero, res;
printf("Digite um numero inteiro: ");
scanf("%d", &numero);
while(numero != 0)
{
res = quadrado(numero);
printf ("O quadrado de %d eh %d.\n", numero, res);
printf("Digite um numero inteiro: ");
scanf("%d", &numero);
}
return 0;
}
Exemplo completo usando Função
Escreva uma programa que calcule e imprima o quadrado de um número. O cálculo 
deve ser feito por uma função. Repita a operação até que seja lido um número igual 
a zero.
Exercícios
1) Escreva um procedimento que receba como 
parâmetro dois valores inteiros n1 e n2 e imprima 
o intervalo fechado entre eles, do menor para o 
maior.
Por exemplo: se n1 = 2 e n2 = 5, o procedimento 
irá imprimir 2, 3, 4, 5.
2) Faça um procedimento que receba por parâmetro o 
tempo de duração de um experimento expresso 
em segundos e imprima na tela esse mesmo 
tempo em horas, minutos e segundos. 
3) Faça uma função que receba por parâmetro o raio 
de uma esfera e calcula o seu volume:
v = (4 * PI * R3) /3. 
4) Faça uma função que receba a idade de uma 
pessoa em anos, meses e dias e retorna essa 
idade expressa em dias.
Exercícios
5) Faça um programa que apresente o seguinte Menu para o usuário:
Escolha uma opção de cálculo para dois números:
1) Soma
2) Produto
3) Quociente
4) Sair
Opção:__ 
O Menu acima deve ser apresentado para o usuário enquanto