Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours visual basic » Exercices VB »

Articles similaires

  • Exercice Java : Programme de gestion de ligne d'autocar
  • Exercices JAVA : terminologie, Structure, typage et conversion de type,Opérateurs relationnels
  • Excel Tutorial : How to count and add cells by color
  • Exercice VB: Tableau à une seul dimension
  • Quels sont les meilleurs éditeurs EDI / IDE pour votre code Python ?
  • Exercice Visual Basic : Ligne Article
  • Exercice VB: Tp Gestion Stagiaires Simplifié
  • Exercice Visual Basic : Adhérant
  • Exercice Visual Basic : Utilisation des collections
  • Exercice Algorithme : Les Types Structurés
  • Comment réussir vos études à distance ?
  • Exercice JAVA opérateur infixé et postfixé

Documents similaires

  • Exercice bureautique pour réviser ensemble

  • Exercice de bureautique pour débutant

  • TP programmation web pour débutant

  • Serie d’exercices avec corriges en economie : croissance et developpement economique

  • EXCEL tutorial nested IF function

  • Droit Public Economique

  • EXCEL tutorial SUMIFS function

  • Excel template for function point analysis

Exercice VB: TP Distances inter-atomiques

Rédigé par GC Team, Publié le 03 Janvier 2012, Mise à jour le Vendredi, 16 Décembre 2022 21:50
Participez au vote ☆☆☆☆☆★★★★★

On se propose d'écrire un programme permettant le calcul de la longueur d'une liaison entre deux atomes dans un matériau, à partir des paramètres de maille (a, b, c, a , b , g ) et des coordonnées atomiques (x, y, z). Pour cela, on transforme les coordonnées (x,y,z) de chaque atome en coordonnées cartésiennes (Xt, Yt, Zt) de la façon suivante:
Enonce-exercice-VB-id2078

Une fois la transformation faite, l'expression pour la distance entre les atomes A1 et A2 est simplement:
Enonce2-exercice-VB-id2078

Programme demandé :

  1. Interface (voir exemple ci-dessous):
  • Six zones de texte pour saisir les paramètres de maille (a, b, c, a , b , g )
  • Six autres pour la saisie des coordonnées (x, y, z) des atomes A1 et A2
  • Un bouton Calcul
  • Six zones de texte pour afficher les coordonnées pour A1 et A2 après transformation – repère cartésien
  • Une zone de texte pour l'affichage de la distance calculée entre A1 et A2 dans le nouveau repère
  1. Vous devrez écrire trois fonctions à placer de préférence dans un module (Public Function) :
  • DegRad, la première, aura pour simple objectif de convertir des degrés en radians. Elle recevra donc un seul argument de type double pour retourner une valeur du même type.
  • MTransform recevra les paramètres de la maille et les coordonnées d'un atome exprimées dans ce système. Le but de cette fonction est de retourner les coordonnées de cet atome transformées selon la formule expliquée plus haut.
  • Distance, enfin, retournera la distance entre les deux atomes dont les coordonnées respectives lui auront été passées en arguments. Le résultat de ce calcul sera de type double.
  1. Le bouton Calcul ordonnera successivement les trois taches suivantes :
  • Lecture des valeurs des paramètre de la maille avec conversion des angles (a , b et g ) en radians à l'aide de DegRad. Lecture des coordonnées (x, y, z) des atomes A1 et A2.
  • Transformation des coordonnées de A1 et A2 dans le nouveau repère – à l'aide de MTransform. Affichage des nouvelles coordonnées.
  1. Calcul de la distance et affichage

Enonce3-exercice-VB-id2078


Interface graphique :

Voici les étapes à suivre pour construire l’interface

Corrig-exercice-VB-id2078

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
Code de la feuille Form1 :
Private Sub Command1_Click()
     'Lecture des valeurs
     M.a = Val(Ta.Text)
     M.b = Val(Tb.Text)
     M.c = Val(Tc.Text)
     M.alpha = degrad(Val(Talpha.Text))
     M.beta = degrad(Val(Tbeta.Text))
     M.gamma = degrad(Val(Tgamma.Text))
     A1.x = Val(TA1x.Text)
     A1.y = Val(TA1y.Text)
     A1.z = Val(TA1z.Text)
     A2.x = Val(TA2x.Text)
     A2.y = Val(TA2y.Text)
     A2.z = Val(TA2z.Text)
    'Transformation des coordonnées
     At1 = MTransform(M, A1)
     At2 = MTransform(M, A2)
     'Affichage des coordonnées transformées
     TTA1x.Text = Str(At1.x)
     TTA1y.Text = Str(At1.y)
     TTA1z.Text = Str(At1.z)
     TTA2x.Text = Str(At2.x)
     TTA2y.Text = Str(At2.y)
     TTA2z.Text = Str(At2.z)
     'calcul de la distance et affichage
     D = Distance(At1, At2)
     Tdistance = Str(D)
End Sub
Code à placer dans un module :
Public Type XYZ
     x As Double
     y As Double
     z As Double
End Type

Public Type Maille_type
     a As Double
     b As Double
     c As Double
     alpha As Double
     beta As Double
     gamma As Double
End Type

Public A1 As XYZ, A2 As XYZ
Public At1 As XYZ, At2 As XYZ
Public D As Double

Public M As Maille_type
Public Const Pi = 3.14159265358979

Public Function MTransform(M As Maille_type, Atom As XYZ) As XYZ
     Dim V As Double
     V = M.a * M.b * M.c * _
     Sqr(1 - Cos(M.alpha) ^ 2 - Cos(M.beta) ^ 2 - Cos(M.gamma) ^ 2 + 2 * Cos(M.alpha) * Cos(M.beta) * Cos(M.gamma))
     MTransform.x = M.a * Atom.x + _
                               M.b * Cos(M.gamma) * Atom.y + _
                               M.c * Cos(M.beta) * Atom.z
     MTransform.y = M.b * Sin(M.gamma) * Atom.y + _
                               M.c * (Cos(M.alpha) - Cos(M.beta) * Cos(M.gamma)) * Atom.z / Sin(M.gamma)
     MTransform.z = V * Atom.z / (M.a * M.b * Sin(M.gamma))
End Function

Public Function Distance(A1 As XYZ, A2 As XYZ) As Double
     Distance = Sqr((A1.x - A2.x) ^ 2 + (A1.y - A2.y) ^ 2 + (A1.z - A2.z) ^ 2)
End Function

Public Function degrad(D As Double) As Double
     'Convertion degrés >>> radians
     degrad = D * Pi / 180#
End Function
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02