[ZooZ v1.2] [Project Project 1] [MainWindow] Title Conjuguer verbe du 1er groupe [End Widget] [Widget Frame2] Parent MainWindow Type Frame Row 2 Col 0 Rowspan 2 Colspan 4 PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky undef 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 -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky undef 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::conjuguer WCONF -font Arial_10_bold_roman_ WCONF -text Conjuguer PCONF -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky undef 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 -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky undef 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 PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky undef ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Labelframe1] Parent Frame1 Type Labelframe Row 1 Col 0 Rowspan 2 Colspan 4 WCONF -font Arial_10_bold_roman_ WCONF -text Temps PCONF -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky undef ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Checkbutton2] Parent Labelframe1 Type Checkbutton Row 1 Col 0 Rowspan 1 Colspan 2 WCONF -font Arial_10_normal_roman_ WCONF -onvalue 1 WCONF -offvalue 0 WCONF -text Imparfait de l'indicatif WCONF -variable \$etatimparfaitindicatif PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky w ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Checkbutton1] Parent Labelframe1 Type Checkbutton Row 0 Col 0 Rowspan 1 Colspan 2 WCONF -font Arial_10_normal_roman_ WCONF -onvalue 1 WCONF -offvalue 0 WCONF -text Présent de l'indicatif WCONF -variable \$etatpresentindicatif PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky w 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 1 Colspan 2 WCONF -font Arial_10_bold_roman_ WCONF -text Verbe à conjuguer : PCONF -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky w 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 1 Colspan 2 WCONF -font Arial_10_normal_roman_ WCONF -text undef WCONF -textvariable \$main::verbe PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky w ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Frame3] Parent MainWindow Type Frame Row 4 Col 0 Rowspan 2 Colspan 4 PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky undef ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget Labelframe2] Parent Frame3 Type Labelframe Row 0 Col 0 Rowspan 2 Colspan 3 WCONF -font Arial_10_bold_roman_ WCONF -text Résultat PCONF -ipadx undef PCONF -ipady undef PCONF -padx 10 PCONF -pady 10 PCONF -sticky undef ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 0 ECONF VOPTIONAL 0 ECONF VSCROLLLOC [End Widget] [Widget ROText1] Parent Labelframe2 Type ROText Row 0 Col 0 Rowspan 2 Colspan 2 WCONF -font Arial_10_normal_roman_ WCONF -height 20 WCONF -width 50 PCONF -ipadx undef PCONF -ipady undef PCONF -padx undef PCONF -pady undef PCONF -sticky n ECONF HOPTIONAL 0 ECONF HSCROLLLOC ECONF SCROLLON 1 ECONF VOPTIONAL 1 ECONF VSCROLLLOC e [End Widget] [Sub main::reinitialiser] sub main::reinitialiser { #On affecte à la variable $verbe la chaîne de caractères "chanter" $verbe="chanter"; #On décoche la case Présent de l'indicatif $etatpresentindicatif=0; #On décoche la case Imparfait de l'indicatif $etatimparfaitindicatif=0; #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); } [End Sub] [Sub main::quitter] sub main::quitter { #Ferme la fenêtre du programme exit; } [End Sub] [Sub main::conjuguer] sub main::conjuguer { #On crée un tag qui change la couleur du texte en bleu et en gras $ZWIDGETS{'ROText1'}->tagConfigure("bleugras", -foreground => "blue", -font => "Arial 10 bold"); #On crée un tag qui change la couleur du texte en rouge et en gras $ZWIDGETS{'ROText1'}->tagConfigure("rougegras", -foreground => "red", -font => "Arial 10 bold"); #On crée un tag qui change la couleur du texte en rouge et en gras $ZWIDGETS{'ROText1'}->tagConfigure("violetgras", -foreground => "purple", -font => "Arial 10 bold"); #On met en minuscule tous les caractères contenus dans la variable $verbe my $verbe=lc($verbe); #Si le contenu de la variable $verbe est vide, on exécute le bloc d'instructions if ($verbe eq "") { #On affecte à la variable $v la chaîne de caractères "chanter" $v="chanter"; } #Sinon si la condition n'est pas remplise, on exécute le bloc d'instructions else { #On affecte à la variable $v le contenu de la variable $verbe $v=$verbe; } #Si le contenu de la variable $v contient une chaîne de caractères composée de n'importe quel caractère minuscule compris entre a et z répété 1 à plusieurs fois et se terminant par er, on exécute le bloc d'instructions if ($v=~/([a-z]+)er$/) { #On affecte à la variable $radical le motif recherché qui se trouve dans la première paranthèse (Contenu dans la variable $1) $radical=$1; #Si seulement la case Présent de l'indicatif est cochée, on exécute le bloc d'instructions if (($etatpresentindicatif==1) && ($etatimparfaitindicatif==0)) { #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); #On appelle la procédure &presentindicatif &presentindicatif(); } #Sinon si seulement la case Imparfait de l'indicatif est cochée, on exécute le bloc d'instructions elsif (($etatpresentindicatif==0) && ($etatimparfaitindicatif==1)) { #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); #On appelle la procédure &imparfaitindicatif &imparfaitindicatif(); } #Sinon si les deux cases sont cochées, on exécute le bloc d'instructions elsif (($etatpresentindicatif==1) && ($etatimparfaitindicatif==1)) { #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); #On appelle la procédure &presentindicatif &presentindicatif(); #On appelle la procédure &imparfaitindicatif &imparfaitindicatif(); } #Sinon si aucune des cases n'est cochée, on exécute le bloc d'instructions else { #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); #On ajoute "Vous n'avez coché aucune case." suivi d'un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "Vous n'avez coché aucune case.\n"); } } #Sinon si la condition n'est pas remplie, on exécute le bloc d'instructions else { #On supprime le texte contenu dans la zone de texte $ZWIDGETS{'ROText1'}->delete("1.0", 'end'); #On ajoute en bleu et en gras le contenu de la variable $v à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $v, "bleugras"); #On ajoute " n'est pas un verbe du premier groupe." suivi d'un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", " n'est pas un verbe du premier groupe.\n"); } } [End Sub] [Sub main::presentindicatif] sub main::presentindicatif { #On crée un tableau @pronoms auquel on affecte la liste de tous les pronoms personnels my @pronoms=("Je","Tu","Il","Nous","Vous","Ils"); #On crée un tableau @presentindicatif auquel on affecte la liste de toutes les terminaisons du présent de l'indicatif pour les verbes du 1er groupe my @presentindicatif=("e","es","e","ons","ez","ent"); #On ajoute "Conjugaison du verbe " à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "Conjugaison du verbe "); #On ajoute en bleu et en gras le contenu de la variable $v à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $v, "bleugras"); #On ajoute " au " à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", " au "); #On ajoute en violet et gras "présent de l'indicatif" à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "présent de l'indicatif", "violetgras"); #On ajoute " :" suivi d'un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", " :\n"); #On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 #On incrémente à chaque passage ($i++) la variable $i #On exécute le bloc d'instructions (= Instructions contenues entre accolades) tant que la variable $i est inférieure ou égale à 5 (Donc on exécute 6 fois le bloc d'instructions) for ($i=0;$i<=5;$i++) { #On affecte à la variable $pronom l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms $pronom=$pronoms[$i]; #On ajoute le contenu de la variable $pronom à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $pronom); #On ajoute une tabulation à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "\t"); #On ajoute le contenu de la variable $radical à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $radical); #On affecte à la variable $terminaison l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $presentindicatif $terminaison=$presentindicatif[$i]; #On ajoute en rouge et gras le contenu de la variable $terminaison à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $terminaison, "rougegras"); #On ajoute un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "\n"); } #On ajoute un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "\n"); } [End Sub] [Sub main::imparfaitindicatif] sub main::imparfaitindicatif { #On crée un tableau @pronoms auquel on affecte la liste de tous les pronoms personnels my @pronoms=("Je","Tu","Il","Nous","Vous","Ils"); #On crée un tableau @imparfaitindicatif auquel on affecte la liste de toutes les terminaisons de l'imparfait de l'indicatif pour les verbes du 1er groupe my @imparfaitindicatif=("ais","ais","ait","ions","iez","aient"); #On ajoute "Conjugaison du verbe " à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "Conjugaison du verbe "); #On ajoute en bleu et en gras le contenu de la variable $v à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $v, "bleugras"); #On ajoute " à l'" à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", " à l'"); #On ajoute en violet et gras "imparfait de l'indicatif" à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "imparfait de l'indicatif", "violetgras"); #On ajoute " :" suivi d'un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", " :\n"); #On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 #On incrémente à chaque passage ($i++) la variable $i #On exécute le bloc d'instructions (= Instructions contenues entre accolades) tant que la variable $i est inférieure ou égale à 5 (Donc on exécute 6 fois le bloc d'instructions) for ($i=0;$i<=5;$i++) { #On affecte à la variable $pronom l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms $pronom=$pronoms[$i]; #On ajoute le contenu de la variable $pronom à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $pronom); #On ajoute une tabulation à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "\t"); #On ajoute le contenu de la variable $radical à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $radical); #On affecte à la variable $terminaison l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $imparfaitindicatif $terminaison=$imparfaitindicatif[$i]; #On ajoute en rouge et gras le contenu de la variable $terminaison à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", $terminaison, "rougegras"); #On ajoute un retour à la ligne à la fin du contenu de la zone texte $ZWIDGETS{'ROText1'}->insert("end", "\n"); } } [End Sub] [Var $terminaison] undef [End Var] [Var $pronom] undef [End Var] [Var $i] '0' [End Var] [Var $etatpresentindicatif] '0' [End Var] [Var $etatimparfaitindicatif] '0' [End Var] [Var @imparfaitindicatif] () [End Var] [Var @presentindicatif] () [End Var] [Var $v] undef [End Var] [Var $verbe] 'chanter' [End Var] [Var $radical] undef [End Var] [Var @pronoms] () [End Var] [Font Arial_10_bold_roman_] -weight bold -underline 0 -family Arial -slant roman -size 10 -overstrike 0 [End Font] [Font Arial_10_normal_roman_] -weight normal -underline 0 -family Arial -slant roman -size 10 -overstrike 0 [End Font]