Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Ada
Ada Forum d'entraide sur la programmation en langage Ada
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 21h23   #1
Membre confirmé
 
Inscription : juin 2006
Messages : 649
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : juin 2006
Messages : 649
Points : 276
Points : 276
Par défaut Amélioration, encore et encore, de mon code.

Bonjour, bonjour à tous.

Voila j'ai pas de doc, j'ai pas de commentaire dans les codes.
Si vous voulez néanmoins jeter un oeil ?
Si ça vous intéresse, c'est un agent de dialogue qui exploite une table de réseaux de neurones formel.
Mono post. Donc, je doit ajouter encore la fonctionnalité réseaux, c'est un détail, pour l'évolution du code.

Que puis-je faire pour améliorer ce code.
Si non, qu'en pensez vous simplement ?
les source ici http://www.toofiles.com/fr/oip/docum...k_000gtar.html

Merci pour votre contribution.
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 23h59   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 12
Points : 13
Points : 13
Bonjour,

J'espère que la réponse ne s'est pas trop faite attendre.

Je viens de jeter un œil à "chaos.glossary" et quelque chose m'a chiffonné presque immédiatement : les fonctions "<" et ">" sur T_Word qui comparent les champs "word" respectifs de Left et Right. On peut procéder ainsi (je fais uniquement "<", la chose pouvant se commuter aisément) :

Code ada :
1
2
3
4
5
6
7
   function "<"(Left, Right : in T_word) return Boolean is
      Left_String : String := Unbounded.To_String(Left.word);
      Right_String : String := Unbounded.To_String(Right.word);
   begin
      return Left_String < Right_String;
   end "<";

Ce qui est tout de suite plus simple. On pourrait même se "débarrasser" des variables mais cela risque d'être assez illisible après par contre.

Ada se débrouille très bien (à mon avis) pour comparer les chaînes de longueurs différentes. Par exemple, les inégalités suivantes sont vraies en utilisant l'opérateur prédéfini :

"ab" < "aba"
"aba" < "ac"

En lisant votre code, je vois aussi :

Code ada :
1
2
3
4
5
6
      if Left.Item > Right.Item then
         return True;
      else
         return False;
      end if;

On peut se contenter d'écrire :

Code ada :
1
2
      return Left.Item > Right.Item;

Enfin, je vous dis ceci à titre indicatif, ce n'est peut-être pas votre "école".

Pour les exceptions, c'est peut-être du détail, mais on pourrait faire un message un peu plus développé que "explicit raise" en utilisant le package Ada.exceptions.

Je vais essayer de regarder le reste mais je ne garantis pas que ça soit particulièrement rapide.

En espérant que ça vous aide
Jaizu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 09h39   #3
Membre confirmé
 
Inscription : juin 2006
Messages : 649
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : juin 2006
Messages : 649
Points : 276
Points : 276
Bonjour Jaizu, bonjour à tous.
Merci de l'intérêt que vous portez à mon projet.
Je prends note de vos remarque.
Je ne savais pas pour les chaînes de caractères.
Je regarderai du côté de Ada.Exceptions.
Prenez votre temps, j'ai tout le mien.
Merci déjà pour ça.
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 21h31   #4
Membre confirmé
 
Inscription : juin 2006
Messages : 649
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : juin 2006
Messages : 649
Points : 276
Points : 276
Bonjour, bonjour Jaizu. Je vous poste la dernière version de ce programme que j'ai remanier en vue d'implémenter une version réseau.
Il ne contient toujours mas de commentaire.
De plus, je n'ai pas supprimer mes point de débugage , dont il y a des put(TOTO) un peut partout.
Je n'ai pas encore appliquer votre correction concernant la comparaison des chaînes.
En vous souhaitant bonne lecture et vous remerciant de l'aide que vous m'apporterez.

J'oubliais le paquets. :: np-2.01100e+003.tar.gz
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 18h57   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 12
Points : 13
Points : 13
Bonsoir Jovalise,

Malheureusement, pas grand chose de neuf... Mais un peu quand même !

J'ai regardé en détail "Np.Glossary". Il y a juste une chose qui peut se faire vraiment plus simplement :

Code ada :
Fixed."*"(1,Character'Val(I))

Qui peut se faire tout simplement :

Code ada :
(1 => Character'Val(I))

Cela créera une String de taille 1 avec Character'Val(I) en valeur à l'indice 1.

Le reste est plus de l'ordre de la suggestion ou du regard extérieur qu'autre chose. J'ai "balisé" certains ajouts pour qu'ils soient plus visibles et je les ai commenté pour les expliquer au mieux.

Voilà voilà ! Et désolé pour l'attente

edit : avec la pièce jointe, c'est mieux...
Fichiers attachés
Type de fichier : rar np-glossary.rar (2,5 Ko, 3 affichages)
Jaizu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 17h57   #6
Membre confirmé
 
Inscription : juin 2006
Messages : 649
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : juin 2006
Messages : 649
Points : 276
Points : 276
Bonjour jaizu,
Je poste juste pour te remercier de l'investissement que tu as fait.
Je prendrais en compte des corrections.
Merci.
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h28.


 
 
 
 
Partenaires

Hébergement Web