Module VB.net
IchigoKen90
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
Bonjour,
Voici le code de mon formulaire :
Public Class FrmFonctionsMathematiques
Private Sub BtnCalculer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalculer.Click
If RdBtnIterative.Checked Then
If RdBtnSomme.Checked Then
TxtResultat.Text = SommeIterative(TxtN.Text)
Else
TxtResultat.Text = FactorielleIterative(TxtN.Text)
End If
Else
If RdBtnSomme.Checked Then
TxtResultat.Text = SommeRecursive(TxtN.Text)
Else
TxtResultat.Text = FactorielleRecursive(TxtN.Text)
End If
End If
End Sub
Private Sub TxtN_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtN.KeyPress
If IsNumeric(e.KeyChar) Or Asc(e.KeyChar) = 8 Then
Else
e.Handled = True
End If
End Sub
End Class
Jusque là aucun soucis j'ai tout compris. (miracle)
Mais voici ce qui pose problème, le module :
Module ModuleFonctionsMathematiques
Function SommeIterative(ByVal N As Integer) As Integer
Dim I As Integer
SommeIterative = 0
For I = 1 To N
SommeIterative = SommeIterative + I
Next
'Return S
End Function
Function FactorielleIterative(ByVal N As Integer) As Long
Dim I As Integer
FactorielleIterative = 1
For I = 1 To N
FactorielleIterative = I * FactorielleIterative
Next I
'Return Fact
End Function
Function SommeRecursive(ByVal N As Integer) As Long
If N = 0 Then
SommeRecursive = 0
Else
SommeRecursive = N + SommeRecursive(N - 1)
End If
End Function
Function FactorielleRecursive(ByVal N As Integer) As Long
If N = 0 Then
FactorielleRecursive = 1
Else
FactorielleRecursive = N * FactorielleRecursive(N - 1)
End If
End Function
End Module
Tout d'abord, pourquoi y a t'il un Integer et 3 Long, quelle est la différence qui fais que cette fonction n'utilise pas "Long" comme les autres?
Les apostrophes qui montrent 'Return S et 'Return Fact. Qu'indiquent t'elles?
Je ne sais pas ce que sont les recursives et iteratives... et les calculs avec les N et les I m'échappent.
Bref enormément de soucis qui je l'espère pourront m'être expliqués par vous.
Merci d'avance,
Bien à vous.
Voici le code de mon formulaire :
Public Class FrmFonctionsMathematiques
Private Sub BtnCalculer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalculer.Click
If RdBtnIterative.Checked Then
If RdBtnSomme.Checked Then
TxtResultat.Text = SommeIterative(TxtN.Text)
Else
TxtResultat.Text = FactorielleIterative(TxtN.Text)
End If
Else
If RdBtnSomme.Checked Then
TxtResultat.Text = SommeRecursive(TxtN.Text)
Else
TxtResultat.Text = FactorielleRecursive(TxtN.Text)
End If
End If
End Sub
Private Sub TxtN_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtN.KeyPress
If IsNumeric(e.KeyChar) Or Asc(e.KeyChar) = 8 Then
Else
e.Handled = True
End If
End Sub
End Class
Jusque là aucun soucis j'ai tout compris. (miracle)
Mais voici ce qui pose problème, le module :
Module ModuleFonctionsMathematiques
Function SommeIterative(ByVal N As Integer) As Integer
Dim I As Integer
SommeIterative = 0
For I = 1 To N
SommeIterative = SommeIterative + I
Next
'Return S
End Function
Function FactorielleIterative(ByVal N As Integer) As Long
Dim I As Integer
FactorielleIterative = 1
For I = 1 To N
FactorielleIterative = I * FactorielleIterative
Next I
'Return Fact
End Function
Function SommeRecursive(ByVal N As Integer) As Long
If N = 0 Then
SommeRecursive = 0
Else
SommeRecursive = N + SommeRecursive(N - 1)
End If
End Function
Function FactorielleRecursive(ByVal N As Integer) As Long
If N = 0 Then
FactorielleRecursive = 1
Else
FactorielleRecursive = N * FactorielleRecursive(N - 1)
End If
End Function
End Module
Tout d'abord, pourquoi y a t'il un Integer et 3 Long, quelle est la différence qui fais que cette fonction n'utilise pas "Long" comme les autres?
Les apostrophes qui montrent 'Return S et 'Return Fact. Qu'indiquent t'elles?
Je ne sais pas ce que sont les recursives et iteratives... et les calculs avec les N et les I m'échappent.
Bref enormément de soucis qui je l'espère pourront m'être expliqués par vous.
Merci d'avance,
Bien à vous.
4 réponses
Bnjour,
1 - Pour être cohérent il faut écrire :
Function SommeIterative(ByVal N As Integer) As Long
2 - Itératif et récursif donnent le même résultat, c'est la méthode qui change :
- Itératif, la fonction calcule tous les résultats, elle nécessite une variable intermédiaire (I)
- Récursif : la fonction s'auto - appelle autant de fois que nécessaire (jusqu'à ce que le résultat soit une valeur pré-déterminée) pour calculer le résultat global. Pas besoin de variable intermédiaire mais il y a un risque d'atteindre les limites de la pile d'appel de sous-programmes.
3 - les apostrophes sont des commentaires du concepteur
4 - N est l'argument de la fonction
1 - Pour être cohérent il faut écrire :
Function SommeIterative(ByVal N As Integer) As Long
2 - Itératif et récursif donnent le même résultat, c'est la méthode qui change :
- Itératif, la fonction calcule tous les résultats, elle nécessite une variable intermédiaire (I)
- Récursif : la fonction s'auto - appelle autant de fois que nécessaire (jusqu'à ce que le résultat soit une valeur pré-déterminée) pour calculer le résultat global. Pas besoin de variable intermédiaire mais il y a un risque d'atteindre les limites de la pile d'appel de sous-programmes.
3 - les apostrophes sont des commentaires du concepteur
4 - N est l'argument de la fonction
En fait j'aurais besoin de quelques précisions encore,
Voici l'algorithme
Je ne comprend pas le "Pour FPour"
Merci d'avance pour ces précisions.
Voici l'algorithme
Debut Lire N S = 0 Pour I allant de 1 à N faire S = S + I FPour Ecrire S Fin
Je ne comprend pas le "Pour FPour"
Merci d'avance pour ces précisions.
Bonjour,
Pour I allant de 1 à N faire
....
FPour Signifie :
Répéter (Boucler sur) toutes les instructions situées entre le 'faire' et le ''Fpour' en faisant varie I, à chaque boucle, de 1 jusqu'à N.
C'est-à-dire :
S=S+1 puis
S=S+2 puis
S=S+3 puis
...
S=S+N
L'algo, traduit en VB, pourrait donner :
Pour I allant de 1 à N faire
....
FPour Signifie :
Répéter (Boucler sur) toutes les instructions situées entre le 'faire' et le ''Fpour' en faisant varie I, à chaque boucle, de 1 jusqu'à N.
C'est-à-dire :
S=S+1 puis
S=S+2 puis
S=S+3 puis
...
S=S+N
L'algo, traduit en VB, pourrait donner :
Sub XXX() 'Debut N = Val(InputBox("Entrer N")) 'Lire N S = 0 'S = 0 For I = 0 To N 'Pour I allant de 1 à N faire S = S + I 'S = S + I Next I 'FPour MsgBox S 'Ecrire S End Sub 'Fin