Cours posant les bases du calcul trigonométrique, matriciel, second degrès et permettant de réaliser un logiciel de calcul. Ce logiciel est expliqué en détail et sera testé. Vous y trouverez également de nombreuses copies d'écran permettant une meilleure compréhension.
[...] Tant que la calculatrice (programmable) ne sera pas réellement concurrencée par la micro et le tableur, c'est-à-dire pas avant 1983-84, le mot ne prendra pas. Seul un mélange d'ignorants, à la périphérie du phénomène, qui ne voyaient pas que l'important dans la calculatrice c'était son coût miraculeusement faible, et non sa taille, et des passéistes, qui se souviennent que le mot désignait une machine de bureau, utiliseront le mot, d'ailleurs totalement ignoré par les dictionnaires avant les années quatre-vingt. [...]
[...] Il faudra alors cliquer sur le pavé numérique de manière a ce que le nombre désiré s'inscrive dans le textbox. Une fois le nombre inséré, il ne reste plus qu'à cliquer sur le bouton correspondant a la position voulue dans la matrice pour le nombre. [...]
[...] Nombre décimal : / 2 = 4 reste / 2 = 2 reste / 2 = 1 reste / 2 = 0 reste 1 Résultat en binaire : 1000 Nombre décimal K / 2 = L reste M L / 2 = 2 reste N Résultat en binaire : NM Ø BINAIRE DECIMAL : La fonction qui permet de retrouver, à partir d'un nombre binaire, le nombre décimal correspondant est plus délicate que celle précédemment vue. Pour réaliser cela, il faudra réaliser une somme de 0 à n sur le nombre 2 comme suit : Nombre binaire : 2^3 2^2 2^1 2^0 Le résultat sera donc 20 + 21 + 22 + 23 Ø FRACTION : Pour trouver le quotient d'un nombre a virgule, il faut trouver deux nombre qui une fois diviser donne ce nombre a virgule (recherche a tâtons). [...]
[...] Ø RACINE NIEME : - 30 - Ø FACTORIELLE : CONVERSION : Ø DECIMAL BINAIRE : - 31 - Ø BINAIRE DECIMAL : - 32 - Ø FRACTION : Ø DEGRES RADIAN : - 33 - Ø RADIAN DEGRES : - 34 - 3)Second degrés : 4)Matrice : Cet algorithme concerne la méthode de calcul. - 35 - VI)Code : 1)FrmSplash : Option Explicit Dim i As Integer Private Sub Form_KeyPress(KeyAscii As Integer) Unload Me 'désactive la feuille en pressant sur une touche frmcalculette.Show End Sub Private Sub Form_Load() lblVersion.Caption = "Version " & App.Major & & App.Minor & & App.Revision lblProductName.Caption = App.Title temps_Timer End Sub Private Sub Frame1_Click() Unload Me 'désactive la feuille en cliquant sur la frame frmcalculette.Show End Sub Private Sub temps_Timer() i=i+1 If i = 5 Then 'désactive la feuille au bout de 5 secondes Unload frmSplash frmcalculette.Show End If End Sub 2)Frmnote : Option Explicit Private Sub cmdsortir_Click() Unload Me 'décharger feuille End Sub 3)Frmapropos : Option Explicit Private Sub cmdOK_Click() Unload Me 'décharger la feuille End Sub - 36 - Private Sub Form_Load() Me.Caption = "À propos de " & App.Title propos du titre de l'application lblVersion.Caption = "Version " & App.Major & & App.Minor & & App.Revision 'version de l'application lbltitle.Caption = App.Title 'titre application End Sub 4)Frmcalculette : DECLARATION DES VARIABLES : Option Explicit Public onglet As Integer 'variable qui définit lequel des onglets vient d'être quitter 'Variable utilisée pour le mode standard et scientifique Public calcul As Double 'variable qui sert à enregistrer les valeurs insérées Public signe As Double 'variable qui détermine le signe Public erreur As Integer 'variable qui détermine si l'erreur "division par zéro" c'est produit Public virgule As Integer 'variable qui permet d'activer désactiver le bouton virgule 'Variable utilisée pour le mode second degrés Public a As Double 'valeur de la variable a Public b As Double 'valeur de la variable b Public c As Double 'valeur de la variable c Public valeura As Integer 'détermine si la variable a a déjà été insérée Public valeurb As Integer 'détermine si la variable b a déjà été insérée Public valeurc As Integer 'détermine si la variable c a déjà été insérée Public resultatsecondegres As String 'variable qui donne le résultat Public x1 As String 'variable résultat de la valeur 1 Public x2 As String 'variable résultat de la valeur 1 Public seconddegres As String 'permet d'afficher le résultat du second degrés 'Variable utilisée pour la conversion en fraction Public entier As Integer 'Variable utilisée pour le mode matrice Public choixmatrice Dim matrice(0 To As Integer 'tableau qui détermine la matrice résultat Dim matrice1(0 To As Integer 'tableau qui détermine la matrice 1 Dim matrice2(0 To As Integer 'tableau qui détermine la matrice 2 'constante Private Const PI = 3.141592654 Dim i As Integer 'variable d'iteration Public error As Variant 'variable d'erreur de l'application DEMARRAGE DE L'APPLICATION Private Sub Form_Load() - 37 - frmcalculette.Height = 4500 'dimensionnement de la feuille frmcalculette.Width = 4000 onglet = 1 'variable indiquant l'onglet actif minuterie_Timer End Sub Private Sub minuterie_Timer() StatusBar1.SimpleText = Now 'donne la date et l'heure End Sub DEFINITION DU FONCTIONNEMENT DES ONGLETS Private Sub tabonglet_Click() Select Case tabonglet.SelectedItem.Index Case 1 Call modstandard 'initialise l'application selon les propriétés du mode standard onglet = 1 'précise que l'onglet standard est actif Case 2 Call modscientifique 'initialise l'application selon les propriétés du mode scientifique If onglet = 1 And txtcalcul.Text Empty Then cbxfonctiontrigo.Enabled = True cbxfonction.Enabled = True cbxconversion.Enabled = True cbxconstante.Enabled = False End If onglet = 2 'précise que l'onglet scientifique est actif Case 3 Call modseconddegres 'initialise l'application selon les propriétés du mode second degrés onglet = 3 'précise que l'onglet second degrés est actif Case 4 Call modmatrice 'initialise l'application selon les propriétés du mode matrice Call desactivechiffre 'pour être sur que l'utilisateur choisisse le type de matrice avant tout onglet = 4 'précise que l'onglet matrice est actif End Select End Sub MENUS Private Sub mnunouveau_Click() 'réaliser un nouveau calcul en initialisant les variables Select Case tabonglet.SelectedItem.Index 'et en mettant l'application a jour Case 1 Call initialisation 'des variables Call desactive 'les opérateurs Call activechiffre Case 2 Call initialisation 'des variables Call modscientifique 'active le mode scientifique - 38 - Call desactive 'les operateur Case 3 Call initialisation 'des variables Call modseconddegres 'active le mode second degrés frmcalculette.txtcalcul.Text = + b*X + Case 4 Call initialisation 'des variables Call modmatrice 'active le mode matrice Call effacematrice 'efface la matrice visible a l'écran End Select End Sub Private Sub mnunotes_Click() frmnote.Show 'bloc notes End Sub Private Sub mnuapropos_Click() frmapropos.Show propos End Sub PARTIE PAVE NUMERIQUE Private Sub cmdchiffre_Click(Index As Integer) Select Case tabonglet.SelectedItem.Index Case 1 txtcalcul.Text = txtcalcul.Text & Index 'permet d'insérer la valeur du bouton dans le textbox Call active 'active les operateurs Case 2 txtcalcul.Text = txtcalcul.Text & Index 'permet d'insérer la valeur du bouton dans le textbox Call active 'active les operateurs Case 3 If valeura = 1 Then txta.Text = txta.Text & Index 'permet d'insérer la valeur If valeurb = 1 Then txtb.Text = txtb.Text & Index 'du bouton dans le textbox If valeurc = 1 Then txtc.Text = txtc.Text & Index 'correspondant Case 4 txtcalcul.Text = txtcalcul.Text & Index 'permet d'insérer la valeur du bouton dans le textbox End Select End Sub Private Sub cmdvirgule_Click() Select Case tabonglet.SelectedItem.Index Case 1 Call virgul Case 2 Call virgul Case 3 - 39 - If valeura = 1 Then If virgule = 0 And txta.Text Then 'détermine si le textbox n'est pas vide txta.Text = txta.Text & 'oui, ajouter virgule cmdvirgule.Enabled = False 'desactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule Else txta.Text = txta.Text & 'non, ajouter zéro virgule cmdvirgule.Enabled = False 'désactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule End If End If If valeurb = 1 Then If virgule = 0 And txtb.Text Then 'détermine si le textbox n'est pas vide txtb.Text = txtb.Text & 'oui, ajouter virgule cmdvirgule.Enabled = False 'desactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule Else txtb.Text = txtb.Text & 'non, ajouter zéro virgule cmdvirgule.Enabled = False 'désactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule End If End If If valeurc = 1 Then If virgule = 0 And txtc.Text Then 'détermine si le textbox n'est pas vide txtc.Text = txtc.Text & 'oui, ajouter virgule cmdvirgule.Enabled = False 'desactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule Else txtc.Text = txtc.Text & 'non, ajouter zéro virgule cmdvirgule.Enabled = False 'désactiver bouton virgule virgule = 1 'affecter 1 a la variable virgule End If End If Case 4 Call virgul End Select End Sub Private Sub cmdeffacer_Click() Select Case tabonglet.SelectedItem.Index Case 1 txtcalcul.Text = Empty 'vide le textbox cmdvirgule.Enabled = True 'reinitialise le bouton virgule Call desactive 'desactive les bouton d'operateur Call activechiffre Call initcombobox Case 2 txtcalcul.Text = Empty 'vide le textbox cmdvirgule.Enabled = True 'réinitialise le bouton virgule Call desactive 'désactive les boutons d'opérateur - 40 - Call activechiffre Call initcombobox Case 3 txtcalcul.Text = Empty 'vide le textbox cmdvirgule.Enabled = True 'réinitialise le bouton virgule Call desactive 'désactive les boutons d'opérateur Call activechiffre Call initcombobox Case 4 txtcalcul.Text = Empty 'vide le textbox cmdvirgule.Enabled = True 'reinitialise le bouton virgule End Select End Sub MODE STANDARD Ø FONCTION DE BASE Private Sub cmdaddition_Click() Select Case tabonglet.SelectedItem.Index Case 1 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 2 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 3 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 4 Dim i For i = 0 To 8 'enregistrement des valeurs dans le tableau pour la première matrice matrice1(i) = frmcalculette.txtmatrice(i).Text Next i Call desactive 'désactive les boutons d'opérateur Call desactivechiffre 'active les chiffres Call effacematrice 'permet d'enlever les champs de remplissages de la matrice txtcalcul.Text = Empty 'pour que l'on ne puisse plus que choisir la cbxmatrice.Visible = True 'deuxième matrice cbxmatrice.Enabled = True ' End Select signe = 1 'signe = plus - 41 - End Sub Private Sub cmdsoustraction_Click() Select Case tabonglet.SelectedItem.Index Case 1 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 2 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 3 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 4 Dim i For i = 0 To 8 'enregistrement des valeurs dans le tableau pour la première matrice matrice1(i) = frmcalculette.txtmatrice(i).Text Next i Call desactive 'désactive les boutons d'opérateur Call desactivechiffre 'active les chiffres Call effacematrice 'permet d'enlever les champs de remplissages de la matrice txtcalcul.Text = Empty 'pour que l'on ne puisse plus que choisir la cbxmatrice.Visible = True 'deuxième matrice cbxmatrice.Enabled = True ' End Select signe = 2 'signe = moins End Sub Private Sub cmdmultiplication_Click() On Error GoTo error Select Case tabonglet.SelectedItem.Index Case 1 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 2 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 3 Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division - 42 - Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres Case 4 For i = 0 To 8 'enregistrement des valeurs dans le tableau pour la première matrice matrice1(i) = frmcalculette.txtmatrice(i).Text Next i Call desactive 'désactive les boutons d'opérateur Call desactivechiffre 'active les chiffres Call effacematrice 'permet d'enlever les champs de remplissages de la matrice txtcalcul.Text = Empty 'pour que l'on ne puisse plus que choisir la cbxmatrice.Visible = True 'deuxième matrice cbxmatrice.Enabled = True ' End Select signe = 3 'signe = multilpier Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case frmcalculette.tabonglet.SelectedItem.Index Case 1 Call modstandard Case 2 Call modscientifique Call desactive Case 4 Call modmatrice End Select End Sub Private Sub cmddivision_Click() Call calculsimple 'appel de procédure de calcul If erreur = 1 Then Exit Sub 'détermine s'il y a eu erreur ou pas a la division signe = 4 'signe = diviser Call desactive 'désactive les boutons d'opérateur Call activechiffre 'active les chiffres End Sub Private Sub cmdegale_Click() On Error GoTo error Select Case tabonglet.SelectedItem.Index Case 1 'mode standard Call solution 'procedure de calcul simple Case 2 'mode scientifique Call solution 'procedure de calcul simple Case 4 'mode matrice For i = 0 To 8 'enregistrement des valeurs de la deuxième matrice matrice2(i) = txtmatrice(i).Text Next i Select Case signe 'permet de réaliser le calcul selon le signe sélectionne Case 1 'addition - 43 - For i = 0 To 8 matrice(i) = matrice1(i) + matrice2(i) Next i Case 2 'soustraction For i = 0 To 8 matrice(i) = matrice1(i) - matrice2(i) Next i Case 3 'multiplication For i = 0 To 2 matrice(i) = matrice1(i) * matrice2(0) + matrice1(i + * matrice2(1) + matrice1(i + * matrice2(2) Next i For i = 3 To 5 matrice(i) = matrice1(i - * matrice2(3) + matrice1(i) * matrice2(4) + matrice1(i + * matrice2(5) Next i For i = 6 To 8 matrice(i) = matrice1(i - * matrice2(6) + matrice1(i - * matrice2(7) + matrice1(i) * matrice2(8) Next i End Select Select Case cbxmatrice.ListIndex 'affichage du résultat selon le calcul Case 0 'matrice colonne MsgBox "Matrice résultat & Chr(13) & Chr(13) & matrice(0) & Chr(13) & matrice(1) & Chr(13) & matrice(2) Case 1 'matrice 3*2 MsgBox "Matrice résultat & Chr(13) & Chr(13) & matrice(0) & Space(5) & matrice(3) & Chr(13) & matrice(1) & Space(5) & matrice(4) & Chr(13) & matrice(2) & Space(5) & matrice(5) & Space(5) Case 2 'matrice 3*3 MsgBox "Matrice résultat & Chr(13) & Chr(13) & matrice(0) & Space(5) & matrice(3) & Space(5) & matrice(6) & Chr(13) & matrice(1) & Space(5) & matrice(4) & Space(5) & matrice(7) & Chr(13) & matrice(2) & Space(5) & matrice(5) & Space(5) & matrice(8) End Select choixmatrice = Empty 'signifie que l'on est plus en phase de calcul Call modmatrice 'initialisation selon le mode matrice Call initialisation ' For i = 0 To 8 'initialisation des tableaux matrice(i) = Empty matrice1(i) = Empty matrice2(i) = Empty Next i End Select Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case frmcalculette.tabonglet.SelectedItem.Index Case 1 - 44 - Call modstandard Case 2 Call modscientifique Call desactive Case 4 Call modmatrice End Select End Sub Ø FONCTION AVANCEE Private Sub cmdcarre_Click() On Error GoTo error calcul = txtcalcul.Text ^ 2 'carre de la valeur du textbox txtcalcul.Text = calcul 'affectation de la valeur Call desactivechiffre 'désactive les chiffres Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case tabonglet.SelectedItem.Index Case 1 Call modstandard Case 2 Call modscientifique End Select Call desactive End Sub Private Sub cmdracine_Click() If txtcalcul.Text 0 resultatsecondegres = solutions" x1 = - Sqr(delta(a, / * x2 = + Sqr(delta(a, / * Case Is = 0 resultatsecondegres = solution" x1 = / * x2 = / * Case Else resultatsecondegres = solutions" x1 = / * & & Sqr(Abs(delta(a, / * x2 = / * & & Sqr(Abs(delta(a, / * End Select End If seconddegres = MsgBox(Space(1) & "Nombre de solutions : " & resultatsecondegres & Chr(13) & " Solution 1 : " & x1 & Chr(13) & " Solution 2 : " & x2, vbOKOnly, "Résultat du second degrès") End Sub Public Function delta(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) delta = b ^ 2 - 4 * a * c 'fonction delta End Function MODE MATRICE Private Sub cbxmatrice_Click() Dim i As Integer Select Case cbxmatrice.ListIndex 'choix de la matrice Case 0 'cas de la matrice colonne Select Case choixmatrice Case "colonne" 'la première matrice était une matrice colonne Call matricecolonne 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call calculmatrice ' Case 'la première matrice était une matrice 3*2 MsgBox "Ce calcul est impossible" Case 'la première matrice était une matrice 3*3 If signe = 3 Then 'détermine si l'on réalise une multiplication Call matricecolonne 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call calculmatrice ' Else MsgBox "Ce calcul est impossible" End If - 52 - Case Else 'premiere matrice colonne Call matricecolonne 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call debutmatrice ' choixmatrice = "colonne" End Select Case 1 'cas de la matrice 3*2 Select Case choixmatrice Case "colonne" 'la première matrice était une matrice colonne MsgBox "Ce calcul est impossible" Case 'la première matrice était une matrice 3*2 Call matrice32 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call calculmatrice ' Case 'la première matrice était une matrice 3*3 If signe = 3 Then 'détermine si l'on réalise une multiplication Call matrice32 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call calculmatrice ' Else MsgBox "Ce calcul est impossible" End If Case Else 'premiere matrice 3*3 Call matrice32 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call debutmatrice ' choixmatrice = End Select Case 2 'cas de la matrice 3*3 Select Case choixmatrice Case "colonne" 'la première matrice était une matrice colonne MsgBox "Ce calcul est impossible" Case 'la première matrice était une matrice 3*2 MsgBox "Ce calcul est impossible" Case 'la première matrice était une matrice 3*3 Call matrice33 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call calculmatrice ' Case Else 'première matrice 3*3 Call matrice33 'permet d'afficher ce qui est nécessaire Call activechiffre ' Call debutmatrice ' cmdmultiplication.Enabled = True choixmatrice = End Select End Select End Sub Private Sub cmdinserer_Click(Index As Integer) txtmatrice(Index).Text = txtcalcul.Text 'permet d'insérer des valeurs pour la matrice - 53 - End Sub FIN Private Sub mnuquitter_Click() End 'quitter End Sub 5)Module Fonctions : Option Explicit Public exp1 As Integer 'valeur qui sert pour le quotient Public exp2 As Integer ' Public resultat As Double 'résultat du quotient de exp1 par exp2 Public nbr As Variant 'nombre inséré dans le textbox avec la virgule remplacée par un point Public nombretronqué As Integer 'valeur entière du nombre inséré dans le textbox modifie Public nombre As Double 'nombre inséré dans le textbox modifie Dim i As Integer 'variable pour réaliser une boucle Dim x As Double Dim solutiontrigo As Double Dim dl As Double Dim windowstime As Variant 'laisse le temps a Windows de gérer une instruction FONCTION DE CALCUL PRINCIPALE Public Sub calculsimple() 'fonction de calcul On Error GoTo error frmcalculette.erreur = 0 'initialise la variable d'erreur Select Case frmcalculette.signe Case 0 'pas de signe enregistrer frmcalculette.calcul = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = Empty Case 1 'plus frmcalculette.calcul = frmcalculette.calcul + frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = Empty Case 2 'moins frmcalculette.calcul = frmcalculette.calcul - frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = Empty Case 3 'multiplier frmcalculette.calcul = frmcalculette.calcul * frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = Empty Case 4 'diviser If frmcalculette.txtcalcul.Text = 0 Then 'détermine si l'on divise par zéro - 54 - MsgBox "Erreur : division par zéro impossible" frmcalculette.txtcalcul.Text = Empty 'réinitialisation frmcalculette.calcul = Empty 'du frmcalculette.signe = Empty 'programme Call desactive 'suite a l'erreur frmcalculette.erreur = 1 'variable erreur égale 1 Else frmcalculette.calcul = frmcalculette.calcul / frmcalculette.txtcalcul.Text End If frmcalculette.txtcalcul.Text = Empty Case 5 'puissance frmcalculette.calcul = frmcalculette.calcul ^ frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = Empty Case 6 'racine nième (exposant 1 / frmcalculette.calcul = frmcalculette.calcul ^ / frmcalculette.txtcalcul.Text) frmcalculette.txtcalcul.Text = Empty End Select frmcalculette.cbxconstante.Enabled = True Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case frmcalculette.tabonglet.SelectedItem.Index Case 1 Call modstandard Case 2 Call modscientifique Call desactive End Select End Sub Public Sub solution() 'réalise le calcul en laissant le résultat a l'écran On Error GoTo error Select Case frmcalculette.signe 'réalise le calcul selon le signe précédemment enregistré Case 1 'plus frmcalculette.calcul = frmcalculette.calcul + frmcalculette.txtcalcul.Text Case 2 'moins frmcalculette.calcul = frmcalculette.calcul - frmcalculette.txtcalcul.Text Case 3 'multiplier frmcalculette.calcul = frmcalculette.calcul * frmcalculette.txtcalcul.Text Case 4 'diviser If frmcalculette.txtcalcul.Text = 0 Then 'détermine si l'on divise par zéro MsgBox "Erreur : division par zéro impossible" frmcalculette.txtcalcul.Text = Empty 'réinitialisation frmcalculette.calcul = Empty 'du frmcalculette.signe = Empty 'programme Call desactive 'suite a l'erreur Exit Sub 'sortie de la procédure Else frmcalculette.calcul = frmcalculette.calcul / frmcalculette.txtcalcul.Text - 55 - End If Case 5 'puissance frmcalculette.calcul = frmcalculette.calcul ^ frmcalculette.txtcalcul.Text Case 6 'racine nieme frmcalculette.calcul = frmcalculette.calcul ^ / frmcalculette.txtcalcul.Text) End Select frmcalculette.txtcalcul.Text = frmcalculette.calcul 'affectation de la valeur du textbox a la variable frmcalculette.signe = 0 'initialisation de la variable signe frmcalculette.cmdeffacer.Enabled = False Call desactivechiffre Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case frmcalculette.tabonglet.SelectedItem.Index Case 1 Call modstandard Case 2 Call modscientifique Call desactive End Select End Sub FONCTION DE CALCUL DU MODE SCIENTIFIQUE Ø MODE TRIGONOMETRIQUE Public Sub inittrigo() 'initialisation des variables des fonctions trigonométriques frmcalculette.txtcalcul.Text = solutiontrigo solutiontrigo = Empty x = Empty dl = Empty End Sub Public Sub sinus() x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If factorielle(2 * i + = 0 Then dl = 1 Else dl = ^ * ^ * i + / factorielle(2 * i + End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo End Sub - 56 - Public Sub cosinus() x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If factorielle(2 * = 0 Then dl = 1 Else dl = ^ * ^ * / factorielle(2 * End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo End Sub Public Sub arcsinus() x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If * = 0 Then dl = x Else dl = * i - / * * ^ * i + / * i + End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo End Sub Public Sub arccosinus() Call arcsinus 'arccos = pi/2 - arcsinus frmcalculette.txtcalcul.Text = ( 3.141592654 / - frmcalculette.txtcalcul.Text End Sub Public Sub sinh() x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If factorielle(2 * i + = 0 Then dl = 1 Else dl = ^ * i + / factorielle(2 * i + End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo End Sub Public Sub cosh() Dim x - 57 - x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If factorielle(2 * = 0 Then dl = 1 Else dl = ^ * / (factorielle(2 * End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo End Sub 'Mode fonction Public Sub exponentielle() On Error GoTo error x = frmcalculette.txtcalcul.Text frmcalculette.txtcalcul.Text = 0 For i = 0 To 10 If factorielle(i) = 0 Then dl = 1 If factorielle(i) 0 Then dl = ^ / factorielle(i) End If solutiontrigo = solutiontrigo + dl Next i Call inittrigo Exit Sub error: MsgBox Err.Description "Erreur " & Err.Number Call initialisation Select Case frmcalculette.tabonglet.SelectedItem.Index Case 1 Call modstandard Case 2 Call modscientifique Call desactive End Select End Sub Public Function factorielle(ByVal nombre As Double) As Double Dim i As Long For i = nombre - 1 To 1 Step nombre = nombre * i Next i factorielle = nombre End Function Ø MODE CONVERTION - 58 - Public Sub fraction() frmchargement.Show 'rend visible la feuille de chargement windowstime = DoEvents() 'donne le temps a Windows de charger correctement la feuille de chargement nbr = Replace(frmcalculette.txtcalcul.Text, 'remplace la virgule par un point nombretronqué = Val(nbr) 'donne la valeur entière la plus proche du nombre nombre = Val(nbr) 'donne la valeur du nombre If nombre > nombretronqué Then nombretronqué = nombretronqué + 1 'dans le cas ou nombre tronque est inférieur au nombre initial For exp1 = nombretronqué To nombretronqué + 10000 'pour ne pas aller trop loin ou bloquer Windows For exp2 = 1 To nombretronqué + 10000 ' resultat = (exp1 / exp2) 'permet de déterminer le résultat du quotient If (nombre > resultat) Then exp2 = nombretronqué + 10000 'si le quotient est supérieur au nombre a trouver, on fini la boucle If nombre = resultat And exp1 / exp Then 'si on a trouve le résultat frmcalculette.txtcalcul.Text = exp1 & & exp2 'on l'écrit dans le textbox Call desactivechiffre Call desactive frmcalculette.cmdvirgule.Enabled = False exp1 = nombretronqué + 10000 'on finalise la boucle End If If nombre = resultat And exp1 / exp2 = 1 Then 'utile pour la conversion degrés radian frmcalculette.txtcalcul.Text = 1 'en fonction de pi Call desactivechiffre Call desactive frmcalculette.cmdvirgule.Enabled = False exp1 = nombretronqué + 10000 'on finalise la boucle End If Next exp2 Next exp1 Unload frmchargement 'désactiver la feuille de chargement End Sub 6)Module Visuel : Public Sub initialisation() 'initialisation des variables du mode scientifique et standard frmcalculette.calcul = Empty frmcalculette.signe = Empty frmcalculette.virgule = Empty frmcalculette.erreur = Empty 'initialisation des variables du mode second degrés frmcalculette.a = Empty frmcalculette.b = Empty frmcalculette.c = Empty frmcalculette.valeura = Empty frmcalculette.valeurb = Empty frmcalculette.valeurc = Empty 'initialisation des variables du mode matrice - 59 - frmcalculette.choixmatrice = Empty frmcalculette.txtcalcul.Text = Empty End Sub OBTENTION DES MODES Public Sub modstandard() If frmcalculette.onglet = 3 Or frmcalculette.onglet = 4 Then Call initialisation Call desactive End If 'désactive les autres modes Call desactiveseconddegres Call desactivematrices Call activeoperateurs Call activechiffre frmcalculette.cmdmoinssecondd.Visible = False 'dimensionne la feuille frmcalculette.Width = 4000 frmcalculette.Height = 4500 End Sub Public Sub modscientifique() If frmcalculette.onglet = 3 Or frmcalculette.onglet = 4 Then Call initialisation Call desactive End If 'active les options du mode scientifique With frmcalculette .cbxfonctiontrigo.Visible = True .cbxfonction.Visible = True .cbxconversion.Visible = True .cbxconstante.Visible = True .cbxfonctiontrigo.Enabled = False .cbxfonction.Enabled = False .cbxconversion.Enabled = False .cbxconstante.Enabled = True .cmdmoinssecondd.Visible = False End With 'désactive les autres modes Call desactiveseconddegres Call desactivematrices Call activeoperateurs Call activechiffre 'dimensionne la feuille frmcalculette.Width = 7395 frmcalculette.Height = 4500 End Sub - 60 - Public Sub modseconddegres() If frmcalculette.onglet = 1 Or frmcalculette.onglet = 2 Or frmcalculette.onglet = 4 Then Call initialisation End If 'désactive les autres modes Call desactivescientifique Call desactivematrices Call desactiveoperateurs Call activechiffre 'active les options du mode second degrés frmcalculette.cmda.Visible = True frmcalculette.cmdb.Visible = True frmcalculette.cmdc.Visible = True frmcalculette.cmdresultat.Visible = True frmcalculette.cmdresultat.Enabled = False frmcalculette.cmdb.Enabled = False frmcalculette.cmdc.Enabled = False frmcalculette.cmdoka.Visible = False frmcalculette.cmdokb.Visible = False frmcalculette.cmdokc.Visible = False frmcalculette.txta.Visible = False frmcalculette.txtb.Visible = False frmcalculette.txtc.Visible = False frmcalculette.cmdannuler.Visible = False frmcalculette.cmdmoinssecondd.Visible = True frmcalculette.txtcalcul.Text = + b*X + 'dimensionne la feuille frmcalculette.Width = 7395 frmcalculette.Height = 4500 End Sub Public Sub modmatrice() If frmcalculette.onglet = 1 Or frmcalculette.onglet = 2 Or frmcalculette.onglet = 3 Then Call initialisation End If 'désactive les autres modes Call desactivescientifique Call desactiveseconddegres Call desactiveoperateurs Call desactive Call desactivechiffre 'active les options du mode matrice frmcalculette.cbxmatrice.Visible = True frmcalculette.cbxmatrice.Enabled = True frmcalculette.cmdaddition.Visible = True frmcalculette.cmdsoustraction.Visible = True frmcalculette.cmdmultiplication.Visible = True frmcalculette.cmdegale.Visible = True frmcalculette.cmdegale.Enabled = False frmcalculette.cmdeffacer.Visible = True - 61 - frmcalculette.cmdmoinssecondd.Visible = False Call effacematrice 'dimensionne la feuille frmcalculette.Width = 7395 frmcalculette.Height = 4500 End Sub DESACTIVATION /ACTIVATION DES MODES Public Sub desactivescientifique() 'désactive les options du mode scientifique frmcalculette.cbxfonctiontrigo.Visible = False frmcalculette.cbxfonction.Visible = False frmcalculette.cbxconversion.Visible = False frmcalculette.cbxconstante.Visible = False End Sub Public Sub desactiveseconddegres() 'désactive les options du mode second degrés frmcalculette.cmda.Visible = False frmcalculette.cmdb.Visible = False frmcalculette.cmdc.Visible = False frmcalculette.cmdresultat.Visible = False frmcalculette.txta.Visible = False frmcalculette.txtb.Visible = False frmcalculette.txtc.Visible = False frmcalculette.cmdoka.Visible = False frmcalculette.cmdokb.Visible = False frmcalculette.cmdokc.Visible = False frmcalculette.cmdannuler.Visible = False End Sub Public Sub desactivematrices() 'désactive les options du mode matrice frmcalculette.cbxmatrice.Visible = False For i = 0 To 8 frmcalculette.cmdinserer(i).Visible = False frmcalculette.txtmatrice(i).Visible = False Next i End Sub DESACTIVATION / ACTIVATION DES BOUTONS Public Sub active() 'activation des operateurs frmcalculette.cmdaddition.Enabled = True frmcalculette.cmdsoustraction.Enabled = True frmcalculette.cmddivision.Enabled = True frmcalculette.cmdmultiplication.Enabled = True frmcalculette.cmdracine.Enabled = True frmcalculette.cmdcarre.Enabled = True - 62 - If frmcalculette.calcul = 0 Then 'détermine si le calcul a déjà commencé frmcalculette.cmdegale.Enabled = False 'pour activer le bouton égale frmcalculette.cmdpourcentage.Enabled = False Else frmcalculette.cmdegale.Enabled = True frmcalculette.cmdpourcentage.Enabled = True End If frmcalculette.cmdnegatif.Enabled = True frmcalculette.cbxfonctiontrigo.Enabled = True frmcalculette.cbxfonction.Enabled = True frmcalculette.cbxconversion.Enabled = True frmcalculette.cbxconstante.Enabled = True End Sub Public Sub desactive() 'desactivation des operateurs frmcalculette.cmdaddition.Enabled = False frmcalculette.cmdsoustraction.Enabled = False frmcalculette.cmddivision.Enabled = False frmcalculette.cmdmultiplication.Enabled = False frmcalculette.cmdracine.Enabled = False frmcalculette.cmdcarre.Enabled = False frmcalculette.cmdegale.Enabled = False frmcalculette.cmdnegatif.Enabled = False frmcalculette.cmdvirgule.Enabled = True frmcalculette.virgule = 0 frmcalculette.cmdeffacer.Enabled = True frmcalculette.cmdpourcentage.Enabled = False End Sub Public Sub activeoperateurs() 'rend visible les operateurs frmcalculette.cmdaddition.Visible = True frmcalculette.cmdsoustraction.Visible = True frmcalculette.cmdmultiplication.Visible = True frmcalculette.cmddivision.Visible = True frmcalculette.cmdracine.Visible = True frmcalculette.cmdcarre.Visible = True frmcalculette.cmdpourcentage.Visible = True frmcalculette.cmdnegatif.Visible = True frmcalculette.cmdegale.Visible = True End Sub Public Sub desactiveoperateurs() 'rend invisible les operateurs frmcalculette.cmdaddition.Visible = False frmcalculette.cmdsoustraction.Visible = False frmcalculette.cmdmultiplication.Visible = False frmcalculette.cmddivision.Visible = False frmcalculette.cmdracine.Visible = False frmcalculette.cmdcarre.Visible = False frmcalculette.cmdpourcentage.Visible = False frmcalculette.cmdnegatif.Visible = False - 63 - frmcalculette.cmdegale.Visible = False End Sub Public Sub activechiffre() 'active les chiffres For i = 0 To 9 frmcalculette.cmdchiffre(i).Enabled = True Next frmcalculette.cmdvirgule.Enabled = True 'active la virgule End Sub Public Sub desactivechiffre() 'désactive les chiffres For i = 0 To 9 frmcalculette.cmdchiffre(i).Enabled = False Next frmcalculette.cmdvirgule.Enabled = False 'desactive la virgule End Sub Public Sub virgul() If frmcalculette.virgule = 0 And frmcalculette.txtcalcul.Text Then 'détermine si le textbox n'est pas vide frmcalculette.txtcalcul.Text = frmcalculette.txtcalcul.Text & 'oui, ajouter virgule frmcalculette.cmdvirgule.Enabled = False 'desactiver bouton virgule frmcalculette.virgule = 1 'affecter 1 a la variable virgule Else frmcalculette.txtcalcul.Text = frmcalculette.txtcalcul.Text & 'non, ajouter zéro virgule frmcalculette.cmdvirgule.Enabled = False 'desactiver bouton virgule frmcalculette.virgule = 1 'affecter 1 a la variable virgule End If End Sub Public Sub effacematrice() 'initialise la matrice For i = 0 To 8 frmcalculette.txtmatrice(i).Visible = False frmcalculette.cmdinserer(i).Visible = False Next i End Sub Public Sub matricecolonne() For i = 0 To 2 frmcalculette.txtmatrice(i).Visible = True frmcalculette.cmdinserer(i).Visible = True Next i For i = 3 To 8 frmcalculette.txtmatrice(i).Visible = False frmcalculette.cmdinserer(i).Visible = False Next i For i = 0 To 8 'initialise la matrice frmcalculette.txtmatrice(i).Text = 0 Next i End Sub - 64 - Public Sub matrice32() For i = 0 To 5 frmcalculette.txtmatrice(i).Visible = True frmcalculette.cmdinserer(i).Visible = True Next i For i = 6 To 8 frmcalculette.txtmatrice(i).Visible = False frmcalculette.cmdinserer(i).Visible = False Next i For i = 0 To 8 'initialise la matrice frmcalculette.txtmatrice(i).Text = 0 Next i End Sub Public Sub matrice33() For i = 0 To 8 frmcalculette.txtmatrice(i).Visible = True frmcalculette.cmdinserer(i).Visible = True Next i For i = 0 To 8 'initialise la matrice frmcalculette.txtmatrice(i).Text = 0 Next i End Sub Public Sub calculmatrice() 'phase de calcul frmcalculette.cmdegale.Enabled = True frmcalculette.choixmatrice = Empty frmcalculette.cbxmatrice.Enabled = False End Sub Public Sub debutmatrice() 'insertion de la première matrice frmcalculette.cmdaddition.Enabled = True frmcalculette.cmdsoustraction.Enabled = True frmcalculette.cmdmultiplication.Enabled = False frmcalculette.cmdegale.Enabled = False frmcalculette.cbxmatrice.Enabled = False End Sub Public Sub initcombobox() 'initialisation des combobox frmcalculette.cbxconstante.Enabled = True frmcalculette.cbxconversion.Enabled = False frmcalculette.cbxfonction.Enabled = False frmcalculette.cbxfonctiontrigo.Enabled = False End Sub - 65 - VII)Exemple d'utilisation : On se propose de résoudre un exercice concernant le calcul d'erreur A + D 2 Enoncé : L'indice d'un prisme est donné par n = 1 A . [...]
[...] On a alors : On devra réaliser la même méthode d'insertion pour la seconde matrice puis une fois la deuxième matrice remplie, il faudra cliquer sur le bouton égale ce qui nous donnera. - 70 - Conclusion : Le point fort de cet outil est qu'il est assez polyvalent, car il permet tout de même de réaliser de nombre types de problèmes mathématiques, dynamiques, physiques etc . [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture