Use o botão abaixo para reportar erros ou dar sugestões.

Computação Científica - Um Livro Colaborativo

12.1 Divisão do código em vários arquivos


É possível quebrar um código em vários arquivos. Basta compilar todos os códigos juntos.

Exemplo 12.1.1. Implemente um código resolver novamente o exemplo 6.6.2, que consiste em calcular a integral ∫ 01f(t)dt,

onde f(t) = ∫ 0t sen (t − τ)e−τ2 dτ.

Use um arquivo para o main e outro com as funções.

O primeiro arquivo foi salvo como main.c

#include <stdio.h>  
#include <stdlib.h>  
#include <math.h>  
double Boole(double (*f)(double, double),double a,double b, int N,double *param);  
double integrando(double tau, double t);  
double f(double t,double tau);  
 
void main(void)  
{  
  int N=5;  
  double I1=0,I2=0,erro=0,a=0,b=1,tol=1e-10,param[1]={0};  
  I1=Boole(f,a,b,N,param);  
  int cont=0;  
  do  
  {  
  cont++;  
  N=2*N-1;  
  I2=Boole(f,a,b,N,param);  
  erro=fabs(I2-I1);  
  I1=I2;  
  }while (erro>tol);  
  printf("O valor da integral é %f\n",I2);  
}

O segundo arquivo foi salvo como func.c

#include <math.h>  
double Boole(double (*f)(double, double),double a,double b, int N,double *param)  
{  
  int i;  
  double h=(b-a)/(4*N),Int=0,t=param[0];  
 
  Int=14./45.*(*f)(a,t);  
  for(i=0;i<N;i++)  
  {  
    Int+=64./45.*(*f)(a+h,t);  
    Int+=24./45.*(*f)(a+2*h,t);  
    Int+=64./45.*(*f)(a+3*h,t);  
    Int+=28./45.*(*f)(a+4*h,t);  
    a+=4*h;  
  }  
  Int-=14./45.*(*f)(a,t);  
return h*Int;  
}  
double integrando(double tau, double t)  
{  
  return sin(t-tau)*exp(-tau*tau);  
}  
double f(double t,double tau)  
{  
  int N=5;  
  double I1=0,I2=0,erro=0,a=0,b=t,tol=1e-10,param[1]={t};  
  I1=Boole(integrando,a,b,N,param);  
  int cont=0;  
  do  
  {  
  cont++;  
  N=2*N-1;  
  I2=Boole(integrando,a,b,N,param);  
  erro=fabs(I2-I1);  
  I1=I2;  
  }while (erro>tol);  
  return I2;  
}

Compilamos com a linha de comando

gcc main.c func.c -lm

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:33:16.

Informe erros ou edite você mesmo!