Difference between revisions of "Tipos de Dados de 1ª Ordem: números complexos"

From Wiki**3

Line 10: Line 10:
 
   } Complex;
 
   } Complex;
 
    
 
    
   Complex COMPLEXinit(double, double);
+
   Complex '''COMPLEXinit'''(double, double);
   double  COMPLEXre(Complex);
+
   double  '''COMPLEXre'''(Complex);
   double  COMPLEXim(Complex);
+
   double  '''COMPLEXim'''(Complex);
   Complex COMPLEXmult(Complex, Complex);
+
   Complex '''COMPLEXmult'''(Complex, Complex);
 
    
 
    
 
   #endif
 
   #endif
Line 25: Line 25:
 
   }
 
   }
 
    
 
    
   double COMPLEXre(Complex c) { return c.re; }
+
   double '''COMPLEXre'''(Complex c) { return c.re; }
   double COMPLEXim(Complex c) { return c.im; }
+
   double '''COMPLEXim'''(Complex c) { return c.im; }
 
    
 
    
   Complex COMPLEXmult(Complex a, Complex b) {
+
   Complex '''COMPLEXmult'''(Complex a, Complex b) {
 
     Complex t;
 
     Complex t;
 
     t.re = a.re * b.re – a.im * b.im;
 
     t.re = a.re * b.re – a.im * b.im;

Revision as of 08:53, 19 May 2005

Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a versão abstracta.

Interface

 #ifndef __COMPLEX_H__
 #define __COMPLEX_H__
 
 typedef struct complex {
   double re, im;
 } Complex;
 
 Complex COMPLEXinit(double, double);
 double  COMPLEXre(Complex);
 double  COMPLEXim(Complex);
 Complex COMPLEXmult(Complex, Complex);
 
 #endif

Implementação

 #include "COMPLEX.h"
 
 Complex COMPLEXinit(double re, double im) {
   Complex t; t.re = re; t.im = im; return t;
 }
 
 double COMPLEXre(Complex c) { return c.re; }
 double COMPLEXim(Complex c) { return c.im; }
 
 Complex COMPLEXmult(Complex a, Complex b) {
   Complex t;
   t.re = a.re * b.re – a.im * b.im;
   t.im = a.re * b.re + a.im * b.im;
   return t;
 }