[ZooZ v1.2] [Project Project 1] [MainWindow] Title Conversion francs-euros [End Widget] [Widget Frame2] Parent MainWindow Type Frame Row 2 Col 0 Rowspan 2 Colspan 4 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Labelframe1] Parent Frame2 Type Labelframe Row 1 Col 0 Rowspan 2 Colspan 3 WCONF -font Arial_10_bold_roman_ WCONF -text Résultat PCONF -padx 10 PCONF -pady 10 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Label3] Parent Labelframe1 Type Label Row 0 Col 0 Rowspan 2 Colspan 4 WCONF -font Arial_10_normal_roman_ WCONF -text WCONF -textvariable \$resultat WCONF -width 50 PCONF -ipadx 150 PCONF -ipady 10 PCONF -padx 10 PCONF -pady 10 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Button3] Parent Frame2 Type Button Row 0 Col 2 Rowspan 1 Colspan 1 WCONF -command \&main::quitter WCONF -font Arial_10_bold_roman_ WCONF -text Quitter PCONF -padx 10 PCONF -pady 10 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Button2] Parent Frame2 Type Button Row 0 Col 1 Rowspan 1 Colspan 1 WCONF -command \&main::conversion WCONF -font Arial_10_bold_roman_ WCONF -text Conversion PCONF -padx 10 PCONF -pady 10 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Button1] Parent Frame2 Type Button Row 0 Col 0 Rowspan 1 Colspan 1 WCONF -command \&main::reinitialiser WCONF -font Arial_10_bold_roman_ WCONF -text Réinitialiser PCONF -padx 10 PCONF -pady 10 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Frame1] Parent MainWindow Type Frame Row 0 Col 0 Rowspan 2 Colspan 4 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Entry1] Parent Frame1 Type Entry Row 0 Col 2 Rowspan 2 Colspan 2 WCONF -font Arial_10_normal_roman_ WCONF -text undef WCONF -textvariable \$phrase WCONF -width 50 ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Label1] Parent Frame1 Type Label Row 0 Col 0 Rowspan 2 Colspan 2 WCONF -font Arial_10_bold_roman_ WCONF -text Phrase contenant la somme en francs à convertir : PCONF -sticky w ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Label2] Parent Frame1 Type Label Row 2 Col 0 Rowspan 2 Colspan 2 WCONF -font Arial_10_bold_roman_ WCONF -text (Sous le format 12 F ou 12.99 F) PCONF -sticky w ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Sub main::quitter] #Procédure permettant de quitter le programme sub main::quitter { exit; } [End Sub] [Sub main::reinitialiser] #Procédure permettant de remettre à zéro certaines valeurs sub main::reinitialiser { #On vide le contenu de la variable $phrase $phrase=""; #On vide le contenu de la variable $resultat $resultat=""; } [End Sub] [Sub main::conversion] #Procédure permettant de convertir de francs en euros une somme contenue dans une phrase sub main::conversion { #Si le contenu de la variable $phrase contient n'importe quel chiffre de 0 à 9 répété 1 à plusieurs fois, suivi ou non d'un point, suivi de n'importe quel chiffre de 0 à 9 répété 0, 1 ou plusieurs fois, suivi d'un espace et suivi d'un F ou d'un f, on exécute le bloc d'instructions if ($phrase=~/([0-9]+\.?[0-9]*)( (F|f))/) { #On affecte à la variable $p le motif recherché qui se trouve dans la première paranthèse (Contenu dans la variable $1) my $p=$1; #On affecte à la variable $gauche la chaîne de caractères qui se trouve à gauche du motif cherché (Contenu dans la variable $`) my $gauche=$`; #On affecte à la variable $droite la chaîne de caractères qui se trouve à droite du motif cherché (Contenu dans la variable $`) my $droite=$'; #On affecte à la variable $symbole le motif qui se trouve dans la deuxième paranthèse (Contenu dans la variable $2) my $symbole=$2; #Dans le contenu de la variable $symbole on remplace le F par un E $symbole=~s/F/E/; #Dans le contenu de la variable $symbole on remplace le f par un e $symbole=~s/f/e/; #On divise le contenu de la variable $p par 6.56 et on affecte le résultat à la variable $conversion $conversion=$p/6.56; #Si le contenu de la variable $conversion contient n'importe quel chiffre de 0 à 9 répété 1 ou plusieurs fois, suivi d'un point et suivi de deux chiffres de 0 à 9, on exécute le bloc d'instructions if ($conversion=~/([0-9]+\.[0-9][0-9])/) { #On affecte à la variable $conv le motif recherché qui se trouve dans la première paranthèse (Contenu dans la variable $1) $conv=$1; } #Si le contenu de la variable $gauche est égal à rien et si le contenu de la variable $droite est égal à rien, on exécute le bloc d'instructions if ($gauche eq "" && $droite eq "") { #On affecte à la variable $resultat "Résultat de la conversion en euros de la somme en francs : ", suivi du contenu de la variable $conv et suivi du contenu de la variable $symbole $resultat="Résultat de la conversion en euros de la somme en francs : ".$conv.$symbole; } #Sinon si la condition n'est pas remplie, on exécute le bloc d'instructions else { #On affecte à la variable $resultat les uns à la suite des autres le contenu de la variable $gauche, le contenu de la variable $conv, le contenu de la variable $symbole et le contenu de la variable $droite $resultat=$gauche.$conv.$symbole.$droite; } } #Sinon si la condition n'est pas remplie, on exécute le bloc d'instructions else { #On affecte à la variable $resultat "La phrase ne contient aucune somme exprimée en francs." $resultat="La phrase ne contient aucune somme exprimée en francs."; } } [End Sub] [Var $phrase] undef [End Var] [Var $resultat] undef [End Var] [Var $p] undef [End Var] [Var $gauche] undef [End Var] [Var $droite] undef [End Var] [Var $symbole] undef [End Var] [Var $conversion] undef [End Var] [Var $conv] undef [End Var] [Font Arial_10_normal_roman_] -weight normal -underline 0 -family Arial -slant roman -size 10 -overstrike 0 [End Font] [Font Arial_10_bold_roman_] -weight bold -underline 0 -family Arial -slant roman -size 10 -overstrike 0 [End Font]