86 pág.

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.