Line 1: | Line 1: | ||
− | Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a [[ADTs de | + | Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a [[ADTs de 1ª ordem: números complexos|versão abstracta]]. |
== Interface == | == Interface == | ||
Line 30: | Line 30: | ||
Complex '''COMPLEXmult'''(Complex a, Complex b) { | Complex '''COMPLEXmult'''(Complex a, Complex b) { | ||
Complex t; | Complex t; | ||
− | t.re = a.re * b.re | + | t.re = a.re * b.re ââ?¬â?? a.im * b.im; |
t.im = a.re * b.re + a.im * b.im; | t.im = a.re * b.re + a.im * b.im; | ||
return t; | return t; | ||
} | } |
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.
#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
#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; }