Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
 AutoIt Version: 3.3.8.0
 Author: blacksoul305
 Script Function: Permet de calculer une ou des valeurs de X dans une expression algébrique.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Form1 = GUICreate("Tester les valeurs de X avec une expression algébrique - Algorithme.", 591, 287, 192, 124)
Global $Group1 = GUICtrlCreateGroup("Résultats", 328, 40, 241, 193)
Global $Label1 = GUICtrlCreateLabel("Expression algébrique : ", 344, 72, 200, 17)
Global $Label2 = GUICtrlCreateLabel("Nombre de tests : ", 344, 104, 160, 17)
Global $Label3 = GUICtrlCreateLabel("Valeur de x à tester : ", 344, 136, 160, 17)
Global $Label4 = GUICtrlCreateLabel("Signe du résultat : ", 344, 168, 160, 17)
Global $Label5 = GUICtrlCreateLabel("Valeur du résultat : ", 344, 200, 160, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Group2 = GUICtrlCreateGroup("Expression algébrique", 24, 64, 265, 153)
Global $Input1 = GUICtrlCreateInput("2*x*x+20", 160, 96, 121, 21)
Global $Label6 = GUICtrlCreateLabel("Expression algébrique : ", 40, 96, 116, 17)
Global $Label7 = GUICtrlCreateLabel("Valeurs de x à tester : ", 40, 128, 109, 17)
Global $Input2 = GUICtrlCreateInput("-10", 160, 128, 33, 21)
Global $Label8 = GUICtrlCreateLabel("à ", 200, 128, 13, 17)
Global $Input3 = GUICtrlCreateInput("10", 224, 128, 33, 21)
Global $Button2 = GUICtrlCreateButton("Lancer le test", 48, 160, 121, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Ouvrir le fichier enregistré", 104, 248, 169, 25)
$Button4 = GUICtrlCreateButton("Supprimer le fichier enregistré", 296, 248, 169, 25)
GUISetState(@SW_SHOW)
Global $fichier = @ScriptDir&"\calculs.ini"
Global $onlyOneTest = False
Global $test = 1
Global $calcul = 0
Global $lirePremiereValeurDeX = 0
Global $lireDerniereValeurDeX = 0
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            ShellExecute($fichier)
        Case $Button4
            FileDelete($fichier)
        Case $Button2
            $startChrono = TimerInit()
            $lirePremiereValeurDeX = GUICtrlRead($Input2)
            If $lirePremiereValeurDeX = 0 Then
                GUICtrlSetData($Input2,1)
                $lirePremiereValeurDeX = 1
            EndIf
            $lireDerniereValeurDeX = GUICtrlRead($Input3)
            If $lireDerniereValeurDeX = 0 Then $onlyOneTest = True
            $exprAlgebrique = GUICtrlRead($Input1)
            If $onlyOneTest = True Then
                $nouvelleExpression = StringReplace($exprAlgebrique,"x",$lirePremiereValeurDeX)
                $calcul = Execute($nouvelleExpression)
                $test = 1
                _Display()
                _Log()
            Else
                Do
                    $nouvelleExpression = StringReplace($exprAlgebrique,"x",$lirePremiereValeurDeX)
                    $calcul = Execute($nouvelleExpression)
                    _Display()
                    _Log()
                    $test+=1
                    $lirePremiereValeurDeX+=1
                Until $lirePremiereValeurDeX = $lireDerniereValeurDeX+1
            EndIf
            ToolTip("Le programme a mis "&Round(TimerDiff($startChrono)/1000,2)&" secondes pour calculer l'emsemble des valeurs de X.",5,0)
            _Initialize()
        EndSwitch
    WEnd
Func _Display()
    GUICtrlSetData($Label1,"Expression algébrique : "&$exprAlgebrique)
    GUICtrlSetData($Label2,"Nombre de tests : "&$test)
    GUICtrlSetData($Label3,"Valeurs de x à tester : "&$lirePremiereValeurDeX)
    If $calcul < 0 Then
        GUICtrlSetData($Label4,"Signe du résultat : Négatif")
    ElseIf $calcul > 0 Then
        GUICtrlSetData($Label4,"Signe du résultat : Positif")
    Else
        GUICtrlSetData($Label4,"Signe du résultat : Nul")
    EndIf
    GUICtrlSetData($Label5,"Valeur du résultat : "&$calcul)
EndFunc
Func _Log()
    IniWrite($fichier,"calcul"&$test,"Expression",$exprAlgebrique)
    IniWrite($fichier,"calcul"&$test,"valeur de x à tester",$lirePremiereValeurDeX)
    If $calcul < 0 Then
        IniWrite($fichier,"calcul"&$test,"Signe du résultat","Négatif")
    ElseIf $calcul > 0 Then
        IniWrite($fichier,"calcul"&$test,"Signe du résultat","Positif")
    Else
        IniWrite($fichier,"calcul"&$test,"Signe du résultat","Nul")
    EndIf
    IniWrite($fichier,"calcul"&$test,"Valeur du résultat",$calcul)
EndFunc
Func _Initialize()
    $onlyOneTest = False
    $test = 1
    $calcul = 0
    $lirePremiereValeurDeX = 0
    $lireDerniereValeurDeX = 0
EndFunc