A maior rede de estudos do Brasil

Grátis
86 pág.
05.Subrotinas

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

main()
{
int x = 2, y = 5;
printf(“%d %d %d”,x,y,calculo(x,y));
return 0;
}
Exercícios
7) 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
8) 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); 
}
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)
{
........
}
Parâmetros de uma subrotina em C 
Exemplo
Chamada por valor: Qualquer alteração feita no parâmetro não 
reflete em alteração no argumento.
Chamada por referência: Todas as alterações realizadas no 
parâmetro, refletem em alterações no argumento, ou seja, ambas as 
variáveis apontam para o mesmo endereço de memória. Para isso, é
necessário que seja passado o endereço do argumento e o 
parâmetro receba-o na forma de ponteiro. 
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 calculaMedia(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);
calculaMedia (n1, n2, n3);
printf("Digite a matricula do aluno: ");
scanf("%d", &matricula);
}
return 0;
}
Exemplo completo usando PROCEDIMENTO – Chamada por valor
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 – Chamada por Valor
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.
Exemplo completo usando Procedimento – Chamada por referência
Escreva um procedimento que receba duas variáveis reais e troque o valor da 
primeira pela segunda. Faça uma função principal para testar este procedimento.
#include <stdio.h>
void troca(float *a1, float *b1)
{
float aux=*a1;
*a1=*b1;
*b1=aux;
}
int main()
{
float a=12.0, b=17.8;
printf("Valores originais: %.2f, %.2f\n", a, b);
troca(&a,&b);
printf("Valores trocados: %.2f, %.2f\n", a, b);
return 0;
}
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 ele não 
escolher a opção 4 (sair do programa). O usuário fornecerá 2 
números se escolher as opções de cálculo 1, 2 ou 3. Para cada 
opção de cálculo deve existir (obrigatoriamente) uma função definida 
(soma, produto e quociente dos dois números fornecidos pelo 
usuário). O resultado do cálculo deve ser escrito na tela.
Exercícios
6) Idem ao exercício 5, agora com o seguinte “Menu”
Escolha uma opção de cálculo para um número:
a) Fatorial
b) Exponencial
c) Raiz quadrada
d) Sair
Opção: __ 
Nas opções “b” e “c” pode-se utilizar funções predefinidas do C.