0% ont trouvé ce document utile (0 vote)
20 vues8 pages

VB Variables Numériques

Le document présente les variables numériques en VB.NET, y compris les types entiers, fractionnaires, BigInteger et Complex. Il explique comment déclarer, initialiser et manipuler ces variables, ainsi que les méthodes de la classe Math pour effectuer des opérations mathématiques. Des concepts comme le dépassement de capacité, la précision des calculs et les nombres complexes sont également abordés.

Transféré par

nfissiabdslam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues8 pages

VB Variables Numériques

Le document présente les variables numériques en VB.NET, y compris les types entiers, fractionnaires, BigInteger et Complex. Il explique comment déclarer, initialiser et manipuler ces variables, ainsi que les méthodes de la classe Math pour effectuer des opérations mathématiques. Des concepts comme le dépassement de capacité, la précision des calculs et les nombres complexes sont également abordés.

Transféré par

nfissiabdslam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cours VB.

NET par Philippe Lasserre

V-F - Variables Numériques.

4815162342

Une variable numérique peut contenir des données numériques.

On a vu qu'une variable numérique peut être entière:


• Integer (entier signé)
• Short (entier court signé)
• Long (Entier long signé)
• Byte (entier non signé de valeur 0 à 255)

A partir de VB2005 il y a aussi


• UInteger (entier non signé)
• UShort (entier court non signé)
• ULong (Entier long non signé)
• SByte (entier signé)

Une variable numérique peut aussi être un fractionnaire:


• Single (virgule flottante simple précision)
• Double (virgule flottante double précision)
• Decimal (virgule fixe haute précision)

A partir de vb 2010 il y a en plus:


• BigInteger ( Entier signé très grand (sans limite supérieure ou inférieure) (VB2010) )
• Complex (Nombre complexe)

On déclare une variable numérique avec Dim.

Dim i As Integer

Après déclaration une variable numérique contient 0.

on peut initialiser en même temps qu'on déclare:

Dim i As Integer= 3

Si la variable est numérique, il faut la transformer en String avant de l'afficher :

Dim I As Integer=12

[Link] = [Link]

.ToString fait partie des méthodes de la classe String. Il y en a d'autres:

- 181 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

.GetType retourne le type de la variable

Dim i As Integer
i=3 ' Il faut initialiser i avant d'utiliser GetType

[Link] = [Link] 'Affiche: System.Int32

.MaxValue .MinValue donne le plus grand et le plus petit nombre possible dans le type de la variable.

On verra qu'on peut utiliser des opérateurs + - * / .

Dim I As Integer=2

Dim J As Integer

J=I+3 ' J est égal à 5 car on affecte à J la valeur I+3

On rappelle que le séparateur est le point:

J=1.2 veut dire J=1,2 en bon français !!

de même pour Str et Val du VisualBasic.

Par contre pour les instructions du Framework (CType, TryCaste, Cint...), le séparateur est celui de la culture (',' en
culture française, '.' en culture us).

V-F-1 - La Classe Math du Framework

Pour qu'elle soit disponible il faut d'abord importer l'espace de nom 'Math' du FrameWork :

Pour cela il faut taper en haut de la fenêtre (au-dessus de public Class):

Imports [Link]

Si on n'a pas importé l'espace de nom, il faut ajouter Math. avant le nom de la fonction. Exemple:

R=[Link](N)

On verra plus loin ce que cela signifie.

Dim N As Single

Dim R As Single

R=Abs(N) 'retourne la valeur absolu

'Si N=-1.2 R=1.2

- 182 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

R=Sign(N) 'retourne le signe

'Si N=-1.2 R=-1 (négatif) ; retourne 1 si nombre positif

R=Round(N) 'retourne le nombre entier le plus proche

' N=1.7 R=2

' N=1.2 R=1

' N=1.5 R=2

Pour Round, si nombre <0.5 retourne 0 si > ou = à 0.5 retourne 1; c'est la manière d'arrondir les nombres en Euros,
comme sur la feuille d'impôts.

On peut donner en second paramètre le nombre de digit: [Link](Valeur, 2)donne 2 décimales après la virgule.

R=Truncate(N)

Retourne la partie entière (enlève les chiffres après la virgule, arrondi à l'entier le plus proche en allant vers zéro).

'N=1.7 R=1

R=Floor(N)

Retourne le plus grand entier égal ou inférieur (arrondi à l'entier inférieur le plus proche en allant vers l'infini négatif).

N=1.7 R=1

R=Ceiling(N)

Retourne le plus petit entier égal ou supérieur. (arrondi à l'entier supérieur le plus proche en allant vers l'infini positf).

N=1.2 R=2

R=Max(2,3)

Retourne le plus grand des 2 nombres.

Retourne 3

R=Min(2,3)

Retourne le plus petit des 2 nombres.

- 183 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

Retourne 2

R=Pow(2,3)

Retourne 2 puissance 3.

Retourne 8

R=Sqrt(9)

Retourne la racine carrée.

Retourne 3

longResult = [Link](int1, int2) 'BigMul donne le résultat de la multiplication de 2 entiers sous forme d'un long.

intResult = [Link](int1, int2, Reste) DivRem donne le résultat (intResult) de la division de int1 par int2 et
retourne le reste (Reste), cela pour des entiers.

Il existe aussi Log, Log10, Exp.

Bien sur il y a aussi Sin Cos Tan, Sinh Cosh Tanh (pour hyperbolique) Asin Acos Atan Atan2.

Prenons un exemple:

Imports [Link]
Dim MonAngle, MaSecant As Double
MonAngle = 1.3 ' angle en radians.
MaSecant = 1 / Cos(MonAngle) ' Calcul la sécante.

On remarque que les angles sont en radians.

Rappel:2pi=360° ; Angle en radians= (2pi/360)*Angle en degrés

V-F-2 - Les instructions du langage VisualBasic

Int et Fix qui suppriment toutes deux la partie fractionnelle et retournent l'entier.

Dim R As Single= 1.7

Int(R) 'retourne 1

Si le nombre est négatif, Int retourne le premier entier négatif inférieur ou égal au nombre, alors que Fix retourne le
premier entier négatif supérieur ou égal au nombre. Par exemple, Int convertit -8,4 en -9 et Fix convertit -8,4 en -8.

- 184 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

V-F-3 - Dépassement de capacité, 'Non Nombre'

Testé en VB2005

On a vu que , codées sur un nombre de bits défini, les variables numériques ne peuvent pas avoir des valeurs très
très grandes. .MaxValue donne le plus grand nombre possible dans le type de la variable. (MinValue le plus petit
nombre) Que se passe t-il , si on dépasse la valeur maximum?

• Si on affecte à une variable entière une valeur supérieure à .MaxValue cela déclenche une erreur (on dit une
exception de type OverFlow) et cela plante.
• Si on affecte à une valeur à virgule flottante(un Single par exemple), une valeur supérieure à .MaxValue, la
variable prend la valeur 'infinie' ( +ou - infinie: [Link] ou [Link]))

Exemple:

IsInfinity, IsNegativeInfinity, IsPositiveInfinity permettent de tester si le résultat d'un calcul dépasse les valeurs
autorisées pour le Type virgule flottante.

Dim s As Single = 2147483647 ^ 33

If [Link](s) Then MsgBox("infinie")

s prend la valeur [Link].

Les opérations en virgule flottante retournent NaN pour signaler que le résultat de l'opération est non défini. Par
exemple, le résultat de la division de 0,0 par 0,0 est NaN.

On peut tester une expression par IsNan.

Exemple:

If [Link](0 / 0) Then

V-F-4 - Problème de précision

Integer Single ou Decimal ? précision ou rapidité?

Vu le système de codage en interne, on a vu qu'avec les variables en virgule flottante, comme les Single par exemple,
certaines valeurs ou calculs sont représentés avec une certaine approximation, infime mais réelle.
Souvent le calcul est exact mais parfois (rarement en pratique courante) on peut avoir une infime manque de précision.
Voici un exemple: on a 0,0001, avec une boucle on l'additionne dix milles fois:

Dim i As Integer
Dim k As Single
Dim j As Single = 0.0001

For i = 1 To 10000
k = k + j
Next

MsgBox([Link])' Affiche 1.000054

- 185 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

Dim k1 As Decimal
Dim j1 As Decimal = 0.0001

For i = 1 To 10000
k1 = k1 + j1
Next

MsgBox([Link])' Affiche 1

Avec des Decimal on obtient bien 1, mais avec des Single on obtient 1,000054!!
Cela peut poser des problèmes si on compare le résultat du calcul avec 1.

Avec les entiers la précision est parfaite.

Dans notre exemple le calcul est DIX fois plus long avec les Decimal qu'avec les Single.

V-F-5 - BigInteger

Un BigInteger est un Entier signé très grand (sans limite supérieure ou inférieure).
Il apparait dans vb 2010.

la valeur, en théorie, n'a pas de limites supérieure ou inférieure.

Il faut charger dans les réferences (passer par propriétés du projet) pour charger [Link] puis Importer
cet espace.

Instanciation:

Imports [Link]
'Instanciation directe avec new
Dim MyBitInteger As New BigInteger(17903)
'Si variable avec virgule, la partie après la virgule sera tronquée.

'A partir d'un long


Dim MylongValue As Long = 631548935
Dim MyBigInteger2 As BigInteger = Mylong

Dim MyBigInteger As BigInteger = CType(64312.65d, BigInteger)

On peut utiliser les opérations mathématiques de base telles que l'addition, la soustraction, la division, la multiplication
(+ -* /), la négation et la négation unaire.
Vous pouvez également comparer deux valeurs .Comme les autres types intégraux, BigInteger prend en charge
également les opérateurs de bit, de décalage vers la droite et de décalage vers la gauche And, Or et XOr Il existe
aussi Add, Divide, Multiply, Negate et Subtract.
Sign, retourne une valeur qui indique le signe d'une valeur BigInteger.
Abs retourne la valeur absolue d'une valeur BigInteger.
DivRem retourne à la fois le quotient et reste d'une opération de division.
GreatestCommonDivisor retourne le plus grand diviseur commun de deux valeurs BigInteger.

Exemple: Creation de 2 BitInteger (2190 Puissance 2 et 42656*35); affichage du plus grand commun diviseur.

Dim n1 As BigInteger = [Link](2190, 2)

- 186 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

Dim n2 As BigInteger = [Link](42656, 35)

[Link]("Le plus grand commun diviseur de {0} et de {1} est {2}.", _


n1, n2, [Link](n1, n2))

Les calculs avec les BigInteger sont lents (20 fois plus lent qu'avec les Single pour 10 000 additions par exemple).
Comme ce sont des entiers, il ne devrait pas y avoir d'erreur d'arrondi.

V-F-6 - Nombre Complexe

Les nombres complexes sont une notion mathématique (je les avais étudiés en terminal S il y a quelques années).
Ils sont utilisés dans certains calculs en génie electrique.

Un nombre complexe comprend une partie réelle et une partie imaginaire.


Un nombre complexe z s'écrit sous la forme suivante : z = x + yi, où x et y sont des nombres réels, et i est l'unité
imaginaire qui a la propriété i2 = -1.
La partie réelle du nombre complexe est représentée par x, et la partie imaginaire du nombre complexe est
représentée par y. Un nombre complexe peut être représenté comme un point dans un système de coordonnées à
deux dimensions, appelé plan [Link] partie réelle est positionnée sur l'axe des abscisses (axe horizontal), et
la partie imaginaire est positionnée sur l'axe des ordonnées (axe vertical).
Tout point peut également être exprimé, en utilisant le système de coordonnées polaires.
Un point est caractérisé par deux nombres :
-Sa grandeur, qui est la distance entre le point et l'origine (autrement dit, 0,0). -Sa phase, qui est l'angle entre le
véritable axe et la ligne tirée entre l'origine et le point.

En vb x et y (coordonnées cartésiennes) sont des 'Double'.


Les propriétés Real et Imaginary retournent la part réelle et imaginaire du nombre complexe.
La magnitude (d) et la phase (alpha exprimé en radian) sont des 'Double'.
(Pour convertir des degrés en radian multiplier par [Link]/180). Les propriétés Magnitude et Phase retournent d
et alpha.

Il faut charger dans les réferences (passer par propriétés du projet) pour charger [Link] puis Importer
cet espace.

Imports [Link]

Module Example
Public Sub Main()
' Creationn d'un complexe 11+ 6i .
Dim c1 As New Complex(11, 6)
[Link](c1) 'Affiche (11, 6)

' Assigne un Double à un complex .


Dim c2 As Complex = 3.1416
[Link](c2) 'Affiche (3.1416, 0)

' Assign la valeur retournée .


Dim c3 As Complex = [Link] + [Link]
[Link](c3) 'Affiche (2, 0)

- 187 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]
Cours [Link] par Philippe Lasserre

' Instancie un complex à partir des coordonnées polaires.


Dim c4 As Complex = [Link](10, .524)
[Link](c4) 'Affiche (8.65824721882145, 5.00347430269914)

'Affichage coordonnées cartésiennes


[Link]([Link])
[Link]([Link])
'Affichage coordonnées polaires
[Link](" Magnitude: {0}", [Link])
[Link](" Phase: {0} radians", [Link])

End Sub
End Module

Opérateurs

Les opérations sur les nombres complexes obéissent à des régles mathématique particulières (voir un cours de
maths). Vb connait ces régles.
En plus de quatre opérations arithmétiques fondamentales (+ - / * ou Add, Substrat, Divise, Multiply), vous pouvez
élever un nombre complexe à une puissance spécifiée (Pow), rechercher la racine carrée d'un nombre complexe
(Sqrt) et obtenir la valeur absolue d'un nombre complexe (Abs).
Vous pouvez obtenir l'inverse (Negate) le Log et les valeurs trigonométriques (Cos, Sin..). Enfin on peut comparer
avec Equals et =.

Dim c4 As New Complex(1, 1)


Dim c2 As New Complex(2, 2)
Dim c1 As New Complex
' c1 = c4 - c2
c1 = [Link](c4, c2)
' ou c1=c4-c2
[Link](c1)

Attention, les valeurs étant des doubles il peut y avoir des problèmes d'arrondi: perte de précision lors de certaines
opérations ce qui peut poser des problèmes au cours de comparaisons.

Pour formater une impression de nombre complexe, on peut utiliser ToString ou le ComplexFormatter:

Dim c1 As Complex = New Complex(12.1, 15.4)


[Link]("Formatting with ToString(): " +
[Link]())
[Link]("Formatting with ToString(format): " +
[Link]("N2"))
[Link]("Custom formatting with I0: " +
[Link](New ComplexFormatter(), "{0:I0}", c1))
[Link]("Custom formatting with J3: " +
[Link](New ComplexFormatter(), "{0:J3}", c1))
' The example displays the following output:
' Formatting with ToString(): (12.1, 15.4)
' Formatting with ToString(format): (12.10, 15.40)
' Custom formatting with I0: 12 + 15i
' Custom formatting with J3: 12.100 + 15.400j
'Merci Microsoft pour cet exemple

- 188 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
[Link]

Vous aimerez peut-être aussi