84 pág.

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