Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » BASIC » Un Dictionnaire en Qbasic

SFLPMEA
ProgBoarder
Citer Windows XP Firefox 3 - Posté le 10/01/2010 à 23:15
(héhé Salutations.

« Matmer aura besoin de dictionnaires », cette idée m’a donné l’occasion (ou le besoin, l’envie) d’effectuer des recherches dans cette direction. J’ai trouvé des listes de mots dont l’exploitation directe en Qbasic semblait difficile, voire impossible. Mon attention a été retenue par :

> Petite liste de 22 .740 mots à télécharger sur :
http://www.freelang.com/dictionnaire/dic-frcs.html

> Grosse liste de 336.531 mots sur :
http://www.pallier.org/ressources/dicofr/liste.de.mots.francais.frgut.txt

(Il y en a certainement d’autres).

Cela me semblait fort intéressant, à condition de pouvoir l’exploiter dans un programme (sous-entendu en Qbasic).

PETIT DICO : Si tu es d’accord, crée un répertoire C:\DICO dans lequel tu ‘déziperas’ la petite liste en la baptisant MOTS.TXT.
En QB, il est facile d’exploiter ce fichier, MAIS …. On s’aperçoit que les voyelles accentuées ne sont pas passées de la police Windows à celle du QB sans dommages et il va être nécessaire d’examiner chacun des mots en détail. Par programme, car une vérification – modification manuelle est impensable. Mon programme de récupération a donc été modifié en conséquence et je le mets sur le WALL (CREADIC1.BAS).
Voir :

Wall (169) : Afficher le code source - Ouvrir dans une nouvelle fenêtre

J’espère que mon programme sera récupérable et fonctionnera ….
Je l’ai écrit sur mon nouveau PC, avec un QB qui ne supporte que le SCREEN 0. Me tenir au courant.
La création du fichier DIC1.DIC s’effectue en moins d’une demi seconde.

GROS DICO : Récupérer le deuxième fichier (liste.de.mots.francais.frgut.txt), modifier le nom en francais.txt (le placer dans le répertoire dico). Le traitement de ce fichier est différent, ce n’est pas un séquentiel. Les mots y sont placés les uns à la suite des autres, avec un simple séparateur (genre BINARY). Tu trouveras sur le Wall le programme de création de DIC2.DIC (CREADIC2.BAS).
Voir :

Wall (170) : Afficher le code source - Ouvrir dans une nouvelle fenêtre

J’y ai effectué le contrôle des voyelles accentuées avec le même principe que dans le programme précédent. Création de 336.531 mots en 33,8 secondes.

Après récupération et mise en forme, j’avais encore un problème. La consultation de ces fichiers avec le bloc-notes laissait toujours apparaître un petit mystère de voyelles accentuées et il me fallait m’assurer que tout était correct tant que l’on restait en QB. Encore une histoire de police. Pour effectuer un dernier contrôle, j’ai donc écrit un programme d’affichage de ce fichier « dico » sur l’écran. Je le mets également sur le Wall sous le nom de AFFIDICO.BAS.
En y modifiant le nom du fichier à lire, tu pourras consulter les 2 dicos.
Voir :

Wall (171) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


Mais que ferons-nous de ces fichiers ?
Les besoins seront certainement :
- Consultation et affichage dur écran.
- Mise à jour, ajouts et modification, avec tri immédiat.
- Suppression de mot.
- Sauvegarde et restauration ?

J E U X :
- Mots de scrabble
- Mots croisés.
- Pendu.
- Recherche en ne connaissant que quelques lettres.
- Retrouver un mot dont les lettres sont mélangées.
- etc …
Ne parlons surtout pas de correcteur, la langue française écrite est trop compliquée.

Comment allons-nous utiliser ces dicos dans les programmes ?
J’ai choisi arbitrairement une longueur d’enregistrement de 32 caractères (un sous-multiple de 256). Un mot pouvant avoir 25 caractères, la taille d'une table pour le traitement devrait être de 25 x 22.740 = un paquet pour le petit et ne parlons même pas du gros. C’est pourtant ce dernier le plus intéressant (il comporte les féminins, pluriels, formes conjuguées ….). Nous serons dans la triste obligation de ne travailler que directement sur le fichier. C’est certainement pénalisant, mais à quel degré ? Je ferai prochainement un petit essai. Il faudra assurément un brin de dichotomie et/ou un repérage alphabétique des mots dont le rang est un multiple de 100 plus un, de façon à se positionner au mieux dans le fichier ? Cela dépendra du but recherché. A titre indicatif, la lecture complète du fichier ne dure qu’une seconde 75 centièmes, avec ma configuration.

Je te souhaite bonne réception.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
Bubonik
ProgBoarder
RemonterCiter Linux Safari - Posté le 12/01/2010 à 15:02
J’avais essayé de faire un programme exploitant les dicos de freelang, à une époque, et il avait effectivement fallu faire un index assez développé pour éviter que ça ne rame trop.

Bonne chance en tout cas !
SFLPMEA
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 19/01/2010 à 23:43
(héhé Salutations.

Bubonik, merci pour cet encouragement ….
J’ai dit que le gros dictionnaire n’était intéressant que si il nous permettait une consultation, une recherche des plus rapides. Et c’est bien évident. Quel serait le temps d’examen de ce fichier ? Sans essai, impossible de le dire.
J’ai donc écrit un programme pour solutionner le problème des cruciverbistes : trouver un mot en y connaissant plusieurs lettres (et la définition, que le PC ignore). Si la première est inconnue, il est nécessaire de lire tout le fichier et c’est un impératif car je ne vois aucune astuce pour l’éviter.
Comment faire pour stocker les résultats obtenus ? Les plus simple et rapide seraient la table : tout en mémoire, directement utilisable. Chacun des mots comporte 31 caractères (oui, je sais, j’aurais pu prévoir un peu moins ….) et, grande inconnue : combien seront sélectionnés ? Certainement fort nombreux si la sélection n’est pas très « fine ». Que veux-t-on faire de cette liste ? Seul, l’affichage sur écran sera utile et ce n’est pas rapide, rapide … Alors, pourquoi ne pas placer nos mots sur le disque dur : là, c’est très rapide (nous ne sommes plus au temps de la disquette souple) et le nombre ne sera pas limité. C’est ce que j’ai fait.

Les résultats que j’obtiens sont les suivants (avec mes vieux PC/W98 et Billy) :

. Recherche de « aaaaaaaaaaaaaa » (15 a pour qu’il n’y ait aucune solution, seulement lecture et pratiquement pas de traitement) : 5,82 secondes.
. Recherche de « *****sti » : 536 mots en 8,02 secondes. (les * correspondent à des espaces).
. Recherche de « a*du » : 12 mots en 6,59 secondes (abducteur, abducteurs, abduction, abductions, adducteur, adducteurs, adduction, adductions, ardu, ardue, ardues, ardus).
. Recherche de « a**du » : 39 mots en 6,59 s (acidula, …. , acidulons).
. Recherche de « *nticonstitu » : 5 mots en 6.21 (anticonstitutionnel et la suite).
. Recherche de « *el » : 1.428 mots en 7,69 secondes (de bel à zelliges).

Avec le « petit » dico, tous les temps de recherche sont inférieurs à la seconde.

Le programme est exécuté en NON compilé. Ces temps semblent corrects et les cruciverbistes auront bien une dizaine de secondes de patience pour obtenir partiellement leur solution.

Tu trouveras le programme sur le Wall.



Wall (172) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


Problèmes rencontrés :
. Au cours des essais, j’ai découvert que la transposition de la police Windows en celle du Qbasic n’avait pas entièrement fonctionné. Je pense faire un rectificatif pour y remédier, et je m’excuse de ne pas avoir regardé à la loupe les 336.531 mots créés …
. Les adeptes des mots croisés ne connaissent pas l’accentuation et les minuscules alors que, dans les dicos, elles sont utilisées. Il faudra créer une édition spécialement destinée aux joueurs de grille, car la recherche fait un distinguo entre é, è, ê et ë ce qui peut être gênant (idem pour les autres voyelles).

Page de garde de l’application. J’ai profité de l’occasion pour fournir une nouvelle version. La précédente, présentée il y a quelque temps


Wall (60) : Afficher le code source - Ouvrir dans une nouvelle fenêtre

était adaptable par chacun mais nécessitait une modification relativement importante. Cette dernière était facilitée par le copier – coller, mais il fallait lister toutes les lettres utiles, les fichiers, etc … Dorénavant, seulement 3 lignes à modifier : les libellés à fournir.
Alphabet en :

Wall (59) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


Me tenir au courant en cas de problème

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
matmer
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 22/01/2010 à 16:59
Pour l'instant je ne suis pas assez calé sur ces questions pour pouvoir exploiter ces bonnes remarques. J'y reviendrai sans doute dans le futur.:)

En tout cas, ce qui m'intéresserait serait de télécharger l'Officiel du Scrabble actuel (ODS 5) et d'exploiter ses mots et les caractères de ces mots, pour écrire des programmes sur des "jeux de mots"

Merci à vous.

Edité par matmer ( 22/01/2010 17:06:08 )
SFLPMEA
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 23/01/2010 à 01:03
(héhé Salutations.

Il semblerait que, sur :

http://forums.macgeneration.com/applications/le-dictionnaire-officiel-du-scrabble-ods-officiel-du-scrabble-81446.html

Le sixième message ci-dessous permet d’obtenir ce que tu recherches :

CitationLa version 3 de l'OdS est au téléchargement ici en version txt...
Enfin bref, taper "officiel du scrabble" dans Google ouvre bien des perspectives



J’ai essayé … J’ai obtenu un fichier (tout en majuscules et sans accents de 4.268 Ko).
Il comporte 364.370 mots. A tester.
Cela simplifie les choses : plus de conflits de police et les cruciverbistes seront contents.
Ce n'est pas la 5 ...

(héhé Salutations.

Edité par SFLPMEA ( 23/01/2010 01:09:08 )
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
SFLPMEA
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 27/01/2010 à 23:47
(héhé Salutations.

Avant mise sur le Wall du programme de recherche de mots, j’avais effectué quelques tests : entre autres, comme dit ci-dessus :
« Recherche de « *nticonstitu » : 5 mots en 6.21 (anticonstitutionnel et la suite) ».
Et bien d’autres. Et j’ai voulu rechercher le mot le plus long (anticonstitutionnellement) à partir du « ment » final et non du début : impossible, à ma grande honte, car je n’avais prévu que 15 caractères pour la zone. Or, il me faut fournir les caractères à leur emplacement (exclamation)
J’ai donc modifié le programme en conséquence et tout semble fonctionner. J’ai également changé légèrement la présentation, ajouté un tout petit réservoir d’éther.
J’ai commencé la modification des programmes de récupération des petit et gros dicos (problème des voyelles accentuées, etc …).
Entre temps, je trouve l’officiel du scrabble 3, je le récupère et écrit le prog pour la mise en forme Qbasic. J’obtiens un fichier dont la consultation directe est correcte et je veux tester la recherche avec lui. Tout semble fonctionner, me semble-t-il, et j’essaie la recherche avec le « ment » en dernières positions : ‘RIEN’. J’analyse à la loupe la logique que j’avais appliquée, j’ajoute des print et, après quelques heures, dégoûté, je jette l’éponge. Alors, idée aussi sotte que grenue, je retourne consulter le fichier et pas de anticonstitutionnellement dans l'OdS. Et cela semble logique : le scrabble se jouant sur un plateau de 15 sur 15, l’OdS ne comporte pas de mots de plus de 15 lettres. L’OdS est donc incomplet … (comme dictionnaire pur).
Pour une recherche, si je mets une lettre en position 16, il n’y aura aucun mot de trouvé …

A signaler que le nouveau programme de création s’exécute en 8,95 avec XP, et en 2,85 avec W98 …..
Ce prog (très simple) est sur le Wall :


Wall (173) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


Le programme d’affichage/consultation reste correct.

La version 2 du programme de recherche (avec 15 caractères) se trouve en :


Wall (174) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


Prière de bien vouloir me signaler toute anomalie.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
SFLPMEA
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 13/02/2010 à 00:09
(héhé Salutations.

(clein d'oeil) Les cruciverbistes sont tous très timides ou sympas, ne voulant pas me peiner …
Je ne satisfais pas leur besoin, loin de là. Que recherchent-ils ? Que demandent-ils pour obtenir de l’aide ? Nous allons prendre un exemple. Supposons que le mot à trouver soit « INTIMIDER » et que nous ne connaissions que « IN****D*R » (* = Espace), la recherche nous donne 26 mots (exclamation) dont un grand nombre (la majeure partie) de plus de 9 lettres, nombre imposé. Il n’y en a que DEUX de la taille voulue (exclamation)
Que va demander l’adepte de ce jeu à son voisin ? Un mot de NEUF lettres commençant par « IN » et finissant par « D*R » et il se moque éperdument des autres, avec juste raison.

Je pense qu’une Version 3 est nécessaire, voire indispensable …

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
Florian
Visiteur
RemonterCiter Linux Firefox 3 - Posté le 09/03/2010 à 10:59
Bonjour (gêné)

Je suis confus mais je vais jouer les péteurs de baloons (rabat-joie en français). Plusieurs points me choquent:

o D'abord, le QBasic. Y a 20 ans on pouvait trouver des ordis marchant en basic en natif (mis à part le langage machine). Maintenant, yen a plus un. Quel interet de faire du basic ? C est anti-pedagogique( pas d objets, goto, etc...), anti-performant (langage interprété et non compilé)

o Ensuite, ODS3 ? La version actuelle est la 5.

o Le linuxien courant a, dans sa panoplie de base, tous les outils que vous cherchez à recréer. Et je suis prêt à parier que DOS aussi. (pas testé)

grep -e "\<IN....D.R\>" ods5.txt

Cette instruction sort "INTIMIDER" ET "INVALIDER" EN 0.3seconde tout compté parmi les 380000 mots de l ods. (neutre)

o Ce qui m'amène au dernier point: les temps d 'attente annoncés sont insupportables. Je ne sais pas quel algorithme vous avez choisi mais je doute que ce soit le bon chemin.


Mais je vous encourage tout de même à continuer à vous programmer vos outils (dans un vrai langage objet).
Bonne continuation

Florian (héhé
Freem
Modérateur
RemonterCiter Linux Opera 9 - Posté le 09/03/2010 à 22:04
QB langage de 20 ans:
Sais-tu que les entreprises recrutent encore des gens connaissant le COBOL?
Sais-tu, par ailleurs, que le langage C++ à été créé dans les années 1980, ce qui lui fait donc 30 ans? Et que donc, la programmation orienté objet, à au moins 30 ans... 20 de plus que ce que tu donnes à QB.
Tu es certainement de ceux pour qui réinventer la roue est stupide.
Seulement, je ne connaît aucun meilleur moyen de comprendre comment quelque chose marche que de fabriquer la même chose.
L'intérêt? S'amuser. Apprendre. Parce que c'est plus simple d'apprendre l'anglais que le brainfuck et que QB est à peine plus que de l'anglais. Certains font encore de l'assembleur, le savais-tu? ce langage est pourtant l'un des plus vieux, avec le langage machine...

ODS 3, 5... Ok, jouons sur les mots.
Tu te dis linuxien, mais ne serait-il pas plus juste de dire unixien et dérivé? Surtout que la commande que tu cites à été conçue pour unix à la base.

Pour la suite, non, DOS ne fait pas ce genre de choses. Grep n'existe pas sous dos.

Les temps de latence?
Bah, si c'était si important, penses-tu que des gens feraient du JAVA, du php, du python ou je ne sais quel langage non compilé? Tout le monde utiliserai l'assembleur.
Pour quelqu'un qui repproche l'âge, tu as la mentalité d'il y à 30 ans, quand le moindre cycle machine était important.

Enfin, j'ai répondu volontairement à ton troll (voulu ou pas, je sais pas), histoire de te montrer la vacuité de tes arguments.
Médites donc dessus.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
Florian
Visiteur
RemonterCiter Linux Firefox 3 - Posté le 10/03/2010 à 01:16
Freem, J apporte 4 idées. Tu n'en apportes aucune. La seule chose qui est vide, c'est ton post.
La commande find sert-elle à peler les cacahuètes ? Non. Elle fait sous dos comme grep sous linux pour ce qui est recherché par la personne à qui je parlais.

Freem, tu es modérateur ? Cool. Tu vas pouvoir te modérer.


Bonne continuation SFLPMEA
SFLPMEA
ProgBoarder
RemonterCiter Windows XP Firefox 3 - Posté le 10/03/2010 à 11:38
(héhé Salutations.

J’ai commencé à faire du Basic il y a QUARANTE ans pour mettre en place un système CALL (Un monstre IBM central qui s’occupe de plusieurs terminaux répartis dans toute la France et reliés par téléphone, en temps partagé). C’était les prévisions d’état de l’ensemble du matériel de l’entreprise, présenté sous forme de règles à barre (Marche, Panne, Attente, Intempéries). Une édition mensuelle était nécessaire.
Le Basic nous avait été présenté comme ayant un gros avantage : Pas besoin de le compiler.
Quelques années après, nous avons eu un IBM 360 Modèle 12 et nous avons abandonné le CALL. Nous avons réécrit les programmes en COBOL. Je peux donc dire que je connais relativement bien ce genre de langage, pour l’avoir pratiqué longtemps, même si je fais encore des découvertes actuellement.
Le Basic a évolué. Des abandons, regrettables. Des choses nouvelle compte tenu de l’évolution des besoins. Puis, un abandon définitif ….
Ce que j’apprécie surtout, c’est découvrir des problèmes, leur analyse, déterminer comment les traiter au mieux et rechercher des astuces (présentation sur écran, saisie, stockages permanent ou temporaire, traitement, affichage, etc). Encore faut-il avoir des problèmes à résoudre …

Ensuite, ODS3 ? La version actuelle est la 5.
Mais je ne l’ai pas trouvée ……

o Le linuxien courant a, dans sa panoplie de base, tous les outils que vous cherchez à recréer. Et je suis prêt à parier que DOS aussi. (pas testé)
grep -e "\<IN....D.R\>" ods5.txt
Cette instruction sort "INTIMIDER" ET "INVALIDER" EN 0.3 seconde tout compté parmi les 380000 mots de l’ods.


Je ne suis pas linuxien. Le même essai (IN….D.R) donne 26 mots en 0.33 secondes avec W98.
Le temps est correct car je connais la première lettre, je m’y positionne et termine au premier ‘J’ rencontré (je ne lis pas tout le fichier).

Un autre essai (.N….D.R) donne 55 mots en 7.19 secondes, car il faut lire tout le fichier.
Que devient le temps de :
grep -e "\<.N....D.R\>" ods5.txt

Tu as dit :
o Ce qui m'amène au dernier point: les temps d 'attente annoncés sont insupportables. Je ne sais pas quel algorithme vous avez choisi mais je doute que ce soit le bon chemin.
Si l’initiale du mot est inconnue, je reconnais volontiers que mes temps d’attente sont un peu longuets. Qu’en est-il avec « grep » ? (Temps que je te demanderai de me communiquer si possible). Dans ce cas, il est obligatoire de lire tout le fichier. Les temps que je communique concernent des NON compilés et je ne sais pas comment faire pour les diminuer (à part compiler les programmes).
Ce qui serait bougrement intéressant serait de reconstituer le raisonnement détaillé de « grep ». Et je sais très bien que je ne pourrai pas lutter. Essayer est tentant ….
Tout le monde ne possède pas « grep ». J’ai, avec XP, « FIND », mais impossible de le faire fonctionner : une fenêtre s’ouvre et se referme en 1 dixième de seconde (mystères de Windows).
Le programme Qbasic est d’une utilisation beaucoup plus facile pour un néophyte, plus conviviale. Il aura cependant la difficulté de son installation et de son fonctionnement (tout dépend de la version de Windows).
La recherche de la vitesse est passionnante et je me demande parfois comment opèrent certains logiciels.
J’ai téléchargé "C:\Program Files\ODS\Project1.exe" ODS, involontairement et, avec cet outil, j’obtiens la liste des mots possibles en proposant une suite de lettres à utiliser. C’est instantané (exclamation) Quel est le raisonnement pour ce faire, indépendamment de la rapidité (question)
Tout le monde connaît le Renardeau du Compte est Bon. Comment fait-il (question)
Pour conclure, je continuerai cette gymnastique de l’esprit avec les moyens dont je dispose et une ambition limitée, seul dans mon coin.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2010 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,043 s - Crédits - Stats
1 connecté