Gambas France BETA


Pas de compte ? Incription

Exemple 19 :

Utiliser les Fonctions Mathématiques de Base :



Les Incontournables :



À partir d'un exemple : Fonctions Mathématiques Usuelles, nous allons faire une petite visite guidée.



Le Code :


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

====================

Objets ou Commandes :




====================

Navigation :



<-- Liens du Wiki : <--
<-- Accueil du WIKI : <--

====================

Documentation :



==============================