Exercice de conjugaison

Reconnaitre qu'un verbe est écrit à l'infinitif, et dans ce cas donner sa conjugaison au présent de l'indicatif

  1. Au choix, les verbes sont entrés interactivement (par défaut chanter) ou à partir d'un fichier
  2. Conseil : construire un tableau associatif admettant les pronoms (je, tu, il ...) comme clés et les terminaisons (e, es, e, ons, ez, ent) correspondantes
  3. Construire une expression régulière pour reconnaitre une terminaison en er et capturer le radical
  4. Si le verbe est reconnu (par ex. chanter, afficher la conjugaison sous la forme : je chante tu chantes ....)

    #!/usr/bin/perl
    
    #On crée un tableau @pronoms  @pronoms=("Je","Tu","Il","Nous","Vous","Ils"); 
    #On crée un tableau @presind => terminaisons du présent de l'indicatif @presind=("e","es","e","ons","ez","ent"); 
    #On crée un tableau @impind => terminaisons de l'imparfait de l'indicatif @impind=("ais","ais","ait","ions","iez","aient"); 
    #On crée un tableau @futind => terminaisons du futur de l'indicatif @futind=("erai","eras","era","erons","erez","eront");
    
    #On affiche "Verbe a conjuguer (Par defaut : chanter) : " 
    print "Verbe a conjuguer (Par defaut : chanter) : "; 
    $verbe=<STDIN>; 
    chomp ($verbe); 
    
    #mise en minuscule de tous les caractères contenus dans $verbe 
    $verbe=lc($verbe);
    
    if ($verbe eq "") { 	
    	#On affecte $verbe à "chanter" 	
    	$verbe="chanter"; 
    } 
    
    #Si le contenu de la variable $verbe 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 ($verbe=~/([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; 	
    	#On affiche "Conjugaison du verbe ", suivi du contenu de $verbe et suivi de " au present de l'indicatif : " 	
    	print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m au present de l'indicatif :\n"; 	
    	
    	#On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 	
    	#On incrémente à chaque passage 
    	for ($i=0;$i<=5;$i++) { 	
    		#On affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi de $i du tableau $presind 		
    		#On retourne à la ligne 		
    		print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$presind[$i],"\033[00m\n";  	
    	} 	
    	print "\n"; 	
    	#On affiche "Conjugaison du verbe ", suivi du contenu de $verbe et suivi de " a l'imparfait de l'indicatif : " 	
    	print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m a l'imparfait de l'indicatif :\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 affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi en rouge de l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $impind 		
    		#On retourne à la ligne 	
    		print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$impind[$i],"\033[00m\n";  	
    	} 	print "\n"; 	
    	
    	#On affiche "Conjugaison du verbe ", suivi du $verbe et suivi de " a l'imparfait de l'indicatif : " 	
    	print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m au futur de l'indicatif :\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 affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi de $i (Donc un nombre entre 0 et 5) du tableau $futind 	
    		print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$futind[$i],"\033[00m\n";  	
    	} 	
    	
    	#On retourne à la ligne 	
    	print "\n"; }
    
    #Sinon si la condition n'est pas remplie, on exécute le bloc d'instructions 
    else { 	
    	print "\033[1;34;40m",$verbe,"\033[00m n'est pas un verbe du premier groupe.\n\n"; 
    }
    

    Image 18



Beliao julie 2010-06-07