1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
| Gambas class file
PRIVATE SUB calcTrigo() '<----------------------- private car procédure interne à la class
vbAngleRad.Value = CFloat(Val(Format(Rad(vbAngleDeg.Value), "0.########"))) '<--angle en radian vbSinus.Value = CFloat(Val(Format(Sin(vbAngleRad.Value), "0.########"))) '<--sinus de l'angle vbCosinus.Value = CFloat(Val(Format(Cos(vbAngleRad.Value), "0.########"))) '<--cosinus de l'angle vbTangente.Value = Round(CFloat(Val(Format(Tan(vbAngleRad.Value), "0.########"))), -7) '<--tangente de l'angle vbSinusH.Value = CFloat(Val(Format(Sinh(vbAngleRad.Value), "0.########"))) '<--sinus hyperbolique vbCosinusH.Value = CFloat(Val(Format(Cosh(vbAngleRad.Value), "0.########"))) '<--cosinus hyperbolique vbTangenteH.Value = (CFloat(Val(Format(Tanh(vbAngleRad.Value), "0.########")))) '<--tangente hyperbolique vbArcCos.Value = CFloat(Val(Format(ACos(vbCosinus.Value), "0.########"))) '<--arccosinus vbArcSin.Value = CFloat(Val(Format(ASin(vbSinus.Value), "0.########"))) '<--arcsinus vbArcCosH.Value = CFloat(Val(Format(ACosh(vbCosinusH.Value), "0.########"))) '<--arccosinus hyperbolique vbArcSinH.Value = CFloat(Val(Format(ASinh(vbSinusH.Value), "0.########"))) '<--arcsinus hyperbolique vbArcTangente.Value = CFloat(Val(Format(ATan(vbTangente.Value), "0.########"))) '<--arctangente vbArcTangenteH.Value = CFloat(Val(Format(ATanh(vbTangenteH.Value), "0.########"))) '<--arctangente hyperbolique
END
PRIVATE SUB calcLog() '<------------------------- private car procédure interne à la class
IF vbNombre.Value = 0 THEN '<--pour éviter log(0) vbLog10.Value = 0 vbLogn.Value = 0 vbLog2.Value = 0 vbLogp.Value = 0 vbSqr.Value = 0 vbExp.Value = 0 vbExp2.Value = 0 vbExp10.Value = 0 RETURN ENDIF vbLog10.Value = CFloat(Val(Format(Log10(vbNombre.Value), "0.#######"))) 'log 10 vbLogn.Value = CFloat(Val(Format(Log(vbNombre.Value), "0#.#######"))) 'log n vbLog2.Value = CFloat(Val(Format(Log2(vbNombre.Value), "0.#######"))) 'log 2 vbLogp.Value = CFloat(Val(Format(Logp(vbNombre.Value), "0.#######"))) 'log p vbSqr.Value = CFloat(Val(Format(Sqr(vbNombre.Value), "0.#######"))) 'sqr IF vbNombre.value > 709 THEN 'pour éviter la saturation mémoire vbExp.Value = 0 vbExp2.Value = 0 vbExp10.Value = 0 RETURN ENDIF vbExp.Value = (Val(Format(Exp(vbNombre.Value), "0.#######"))) 'exp vbExp2.Value = (Val(Format(Exp2(vbNombre.Value), "0.#######"))) 'exp2 vbExp10.Value = (Val(Format(Exp10(vbNombre.Value), "0.#######"))) 'exp10
END
PRIVATE SUB calcComplex() '<--------------------- private car procédure interne à la class
DIM Z AS NEW Complex
'------------ sans utilisation de gb.complex ---------------------------------
TextBox1.Text = CStr(vbReel.Value) & " + " & CStr(vbImag.Value) & " i" 'Nombre complexe TextBox2.Text = CStr(vbReel.Value) & " - " & CStr(vbImag.Value) & " i" 'son conjugué
vbAbs2.Value = Val(Format(Sqr(vbReel.Value ^ 2 + vbImag.Value ^ 2), "0.########")) 'module
IF vbImag.Value >= 0 THEN 'And vbReel.Value <> 0 vbArg.Value = Val(Format(ACos(vbReel.Value / vbAbs2.Value), "0.########")) 'argument si part imaginaire=0 ENDIF
IF vbReel.Value >= 0 THEN 'And vbImag.Value <> 0 vbArg.Value = Val(Format(ASin(vbImag.Value / vbAbs2.Value), "0.########")) 'argument si part réelle =0 ENDIF
IF vbReel.Value < 0 OR vbReel.value > 0 THEN vbArg.Value = Val(Format(ATan(vbImag.Value / vbReel.Value), "0.########")) 'argument ELSE vbArg.Value = 0 ENDIF
vbArg2.Value = Round(CFloat(Val(Format(Deg(vbArg.Value), "0.#######"))), -2) 'argument en degrés
'---------- avec utilisation de gb.complex ----------------------------------
z.Real = vbReel.value z.Imag = vbImag.Value ' z = Complex(vbReel.Value, vbImag.Value) 'fonctionne aussi vbModule.Value = Val(Format(Sqr(z.Abs2()), "0.########")) 'attention Abs2 donne le carré du module vbArgument.Value = Round(CFloat(Val(Format(Deg(z.Arg()), "0.#######"))), -6) vbConjugue.Text = z.Conj() 'penser aux parenthèses sinon les fonctions renvoient les fonctions et non le résultat des fonctions vbZ.Text = z.ToString(TRUE) 'z ' les deux fonctionnent
END
PRIVATE SUB logique() '<------------------------- private car procédure interne à la class
IF vbReel.Value > vbImag.Value THEN lblSup.Text = "Vrai" ELSE lblSup.Text = "Faux" IF vbReel.Value < vbImag.Value THEN lblInf.Text = "Vrai" ELSE lblInf.Text = "Faux" IF vbReel.Value = vbImag.Value THEN lblEgal.Text = "Vrai" ELSE lblEgal.Text = "Faux" IF vbReel.Value <> vbImag.Value THEN lblDiff.Text = "Vrai" ELSE lblDiff.Text = "Faux" IF vbReel.Value >= vbImag.Value THEN lblSupouEgal.Text = "Vrai" ELSE lblSupouEgal.Text = "Faux" IF vbReel.Value <= vbImag.Value THEN lblInfouEgal.Text = "Vrai" ELSE lblInfouEgal.Text = "Faux"
END
|