| Utilitaire Designer: générer une structure Panoramic valide | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 18:01 | |
| Oui, cela progresse.
J'ai redessiné complètement l'interface visuel: - j'ai supprimé les boutons de commande ridicules, en gérant tout par le menu - je n'affiche plus qu'une seule section qui est sélectionnée par un groupe d'options à gauche - toutes les sections s'affichent dans la même position de la fenêtre - j'ai réduit l'affichage à une form de 800x800, assurant ainsi que ça marche à peu près partour
Cette partie-là est complète. Je suis maintenant en train de gérer de façon plus précise les GOTO. Pour cela, j'ai repris la section des labels (dans l'encadré en haut à gauche) et je la gère comme les évènements ou les sous-programmes, avec une combo contenant la liste des labels définis, et des boutons [+] et [-] pour les créer ou supprimer. Je verifie bien sûr si le label existe déjà, dans les 3 listes (labels, évènements et sous-programmes). Il n'y a par contre pas le mémo pour le code correspondant - cela n'aurait aucun sens. En cas de création d'un label, j'affiche un autre groupe d'options à gauche pour cibler la catégorie dans laquelle on veut placer le label: code initial, évènements ou sous-programmes. A la création, après la saisie et vérification du nom du label, on demande alors (pour cible évènements ou sous-programmes) le nom de l'objet-cible qui doit exister. Le nouveau label est alors mémorisé avec sa section et son objet cible, et affiché dans la combo. Tout cela marche.
Je suis en train d'ajouter des boutons [Goto] en-dessous des boutons [Call] pour générer les instructions Goto vers ces labels. Là, une règle précise s'applique: on ne peut faire un Goto QUE vers un label de même section et de même objet ! J'interdis catégoriquement un Goto vers un label dans un autre sous-programme ou un autre évènement. Et c'est cette contrainte qui permet d'éviter les conflits essentiels dus à une structure trop floue. La commande GOTO est insérée directement dans la section et l'objet cible.
J'ai commencé aussi à coder la génération de ces labels qui vont s'insérer automatiquement dans le code initial ou dans les sous-programmes ciblés, à ce moment.
Donc, tu vois, il y a du pain sur la planche, mais j'avance bien.
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Goto Gosub Mer 19 Jan 2011 - 18:20 | |
| J'ai un peu de mal à faire le distingo entre les deux et du coup j'abuse des gosub entre Nardo26 et Klaus l'un des deux peut il m'éclairer car sur le manuel de références c'est pas très clair. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 18:30 | |
| Bonsoir ygeronimi, Le distingo entre quoi et quoi que tu piges pas ? goto / gosub ? c'est ça ? | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Goto Gosub Mer 19 Jan 2011 - 18:32 | |
| | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 18:41 | |
| pour résumer : un goto permet de "sauter des instructions alors qu'un gosub permet de "dérouter" provisoirement (jusqu'au return) l'execution d'un code et de reprendre l'execution en dessous du gosub. Je te prépare un petit dessin : cela sera plus clair... Le goto : 1 Instructions 2 Instructions 3 Instructions 4 if condition then goto ligne 7 5 Instructions 6 Instructions 7 Instructions Si la condition est remplie en ligne 4, les instructions en lignes 5 et 6 ne seront pas exécutées : Le programme saute directement à la ligne 7. On peut faire des sauts en avant ou en arrière Si je devais simuler par exemple ceci for i%=0 to 4 .... .... next i% Cela donnerai avec des goto ceci : i%=0 Boucle: If i%>4 then goto suite …. …. i%=i%+1 goto Boucle suite: …. …. Le p'tit dessin arrive pour le gosub...
Dernière édition par Nardo26 le Mer 19 Jan 2011 - 18:54, édité 2 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: merci Mer 19 Jan 2011 - 18:43 | |
| Merci | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 19:20 | |
| Comme j'ai des problèmes avec visio qui ne veux pas se lancer, un p'tit prog: Au lieu d'écrire ceci : - Code:
-
print "racine de 2 est égale à ";sqr(2) print "--------------------------------------" print "racine de 3 est égale à ";sqr(3) print "--------------------------------------" print "racine de 4 est égale à ";sqr(4) print "--------------------------------------" print "racine de 5 est égale à ";sqr(5) print "--------------------------------------"
Le gosub te permet d'écrire ceci : - Code:
-
dim i label Racine for i=2 to 5 gosub Racine next i end
Racine: print "racine de ";i;" est égale à ";sqr(i) print "--------------------------------------" return L'exemple est un peu simple mais imagine que tu dois faire une opération autre que la racine carré, un truc qui tient sur 25 lignes. C'est quand même plus sympa d'écrire le code qu'une seule fois et de faire appel à celui-ci à l'aide d'un gosub... l'avantage également c'est que si tu dois débugger ton bout de code, tu vas le faire qu'une seule fois... Je sais pas si j'ai été clair là ... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: rep Mer 19 Jan 2011 - 19:33 | |
| Ben le Gosub ca va je m'en sert tout le temps. c'est Goto qui n'est pas clair pour moi de ce que j'ai compris : gosub te permet de faire appel à une fonction dans une autre alors que Goto te permet de sauter une partie de la fonction mais où est l'utilité à moins d'une erreur et là il faut une condition (if....else...end_if) et on a on_error_goto où certains sont fou du clavier et tape des lignes inutiles pour le plaisir de pianoter... | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 19:41 | |
| Disons qu'avec les if/end_if et les boucles conditionnelle on peut dans la plupart des cas s'en passer. Le seul cas dans lequel j'utilise le goto c'est losqu'il y a beaucoup de if/end_if imbriqués. par simplification un goto en plein milieu évite d'ecrire par exemple d'ecrire tout les else...
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Rep Mer 19 Jan 2011 - 19:46 | |
| Promis... .....j'essaierai .....mais je ne te dis pas quand. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Mer 19 Jan 2011 - 20:25 | |
| La commande GOTO déroute définitivement l'exécution du code, de l'endroit où est le goto, vers l'endroit ou est le label. Tu vas me dire "eh bien, c'est le but" ! Effectivement.
Mais le problème, c'est qu'il n'y a aucun contrôle. Tu peux sauter absolument n'importe où, d'un sous-programme interne de service dans une routine évènement (aïe), d'une routine évènement dans une autre routine évènement (aïe aïe), d'une routine timer dans une routine quelconque (aïe aïe aïe aïe aïe aïe), etc.
Tout cela est bien sûr possible aussi avec les gosub. Tu peux même faire un gosub vers un label utilisé ailleurs par un goto, et un goto vers un label de sous-programme. Et bonjour la cohérence des variables utilisées à l'intérieur, le suivi de la logique interne du programme etc.
Non. Windows fonctionne comme une série de sous-programmes appelées en cascade, avec un return lorsque une fonction est fini, et c'est le niveau supérieur qui prend le relais. Un programme Panoramic devrait être conçu de la même manière. Après la phase d'initialisation, donc après avoir exécuté la commande END, on sait que le programme est appelé uniquement par un évènement. On devrait traiter cet évènement dans une routine évènement qui appelle ses routines de service, chacune se terminant par return, et l'évènement se terminant par return lui-même. C'est une arborescence descendante et remontante, et là, on maîtrise la logique, le contexte des variables, et. On ne devrait pas pouvoir attacher deux branches indépendantes ensemble.
Techniquement, on peut le faire, bien sûr. Mais le programme Designer est conçu pour permettre à un nouveau-venu sous Panoramic de construire une structure saine. Rien n'interdit de programmer autrement, ni de modifier la structure obtenue par Designer et de la déformer. Mais il faut savoir que des problèmes logiques, des problèmes liés au flux dynamique sont introduits facilement, si l'on ne respecte pas ces règles simples. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Sainte parole Mer 19 Jan 2011 - 22:49 | |
| De ce que j'ai compris du Goto, j' en tire les même conclusion et je ne peux qu'être d'accord avec toi. Je ne vois qu'une utilisation saine du Goto comme disait Nardo26 c'est le cas d'une succession de "if ....then" et non pas "if...end_if" donc d'une orientation à choix multiples avec une fin du style "container_option" avec plus de deux options (c'est un exemple ). Après j'ai très peur du résultat. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Jeu 20 Jan 2011 - 10:10 | |
| Comme l'a dit Jack dans un de ses posts récents, Panoramic n'est pas un langage soutenant la programmation strucrurée. Il n'y a pas la notion dfe blocks begin...end. Il y a bien quelques instructions qui y font penser, comme IF ... liste d'iunstructions ELSE ... liste d'instructions END_IF
ou
REPEAT ... liste d'instructions UNTIL condition
ou
WHILE condition ... liste d'instructions END_WHILE
ou
FOR var=debut TO limite STEP pas ... liste d'instructions NEXT var
ou SELECT expression CASE valeur ... liste d'instructions CASE autre valeur ... liste d'instructions
END_SELECT
Et il y a les instructions EXIT_FOR, EXIT_WHILE, EXIT_REPEAT pour sauter juste après le pseudo-block correspondant. Mais il n'y a pas de EXIT_IF et c'est dommage. Cela pourrait aider dans le contexte dont on parle.
Mais cela montre encore plus les précautions à prendre aveg GOTO. Imaginez un GOTO vers un label qui se trouve entre un FOR et un NEXT, ou entre un ELSE et un END_IF, peut-être même dans une imbrication encore plus profonde. Techniquement, c'est possible. Mais sir le plan du principe, il devient très difficile, sinon impossible, de prédire ce qui va se passer.
Dans des cas comme ça, je définis des variables-drapeau que je positionne selon les besoins, et je conditionne certaines parties du code par ces variables-drapeau. Ceci me permet de rester dans la logique structurée sans avoir recours à un GOTO. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Ven 21 Jan 2011 - 23:59 | |
| La nouvelle version du programme fonctionne. Mais avant de la mettre en ligne, j'établis une documentation réelle pour le programme. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 13:20 | |
| Nouvelle version V1.07 en ligne ! Elle contient une documentation complète qui s'affiche par me menu Aide/Documentation. Elle est assez exhaustive et commence par un exposé détaillé du mécanisme Windows de la gestion des évènements.
Pour ceux qui ont déjà installé une version précédente, deux solutions: - soit supprimer Designer.ini et *.lnk avant le premier lancement - soit aller dans le menu Aide/Options et cliquer sur le nouveau bouton sans libéllé qui apparaît à côté du combo de sélection de la langue --> les fichiers *.lng seront mis à jour et les libellés actualisés
Maintenant, le programme est opérationnel et rend le service pour lequel je l'ai conçu.
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 14:32 | |
| Bonjour Klaus ! Ça fait un moment que je n'avais pas jeté un coup d'œil à ton prog, Je viens de le télécharger... J'aime bien le nouveau design ! ca fait propre Par contre je n'arrive pas à ouvrir ton fichier d'exemple TestCouleur.bas avec designer... Pourtant j'ai tout décompressé dans un nouveau répertoire... PS: C'est normal que ton site soit par défaut en Anglais ? A quand la version en allemand ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:06 | |
| J'ai remis le site en Français par défaut. Ma dernière modif dans mon site concernait une page anglaise, et l'outil a modifié index.html pour pointer sur l'accueil anglais. C'est corrigé.
J'ai réessayé de charger TestCouleur.bas et je n'ai pas rencontré de problème. Tu exécutes sous l'éditeur ? Essaie de charger Designer.bas dans l'éditeur, puis l'enregistrer sur lui-même, puis exécuter, et cela devrait marcher. Je pense que c'est un problème de répertoire par défaut qui dans le cas du lancement par l'éditeur pointe dans le répertoire de l'éditeur, pas dans le répertoire d'où vient le fichier source.
As-tu regardé la doc ? J'ai fait un gros effort de vulgarisation afin rendre plus clair le principe d'action des évènements.
Je suis content que l'interface visuel te plaise. J'ai effectivement essayé de faire quelque chose de plus "pro". | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:24 | |
| Yes je suis en train de la consulter : C'est clair et limpide... Pour le test : Designer me dis que Testcouleur.bas n'est pas un fichier Designer valide... Le message exact : - Code:
-
Ce n'est pas un fichier Designer valide : C:\Langages\Panoramic\Designer\TestCouleur.bas ' *** Designer Labels *** | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:32 | |
| J'ai remis une nouvelle version de TestCouleur.bas dans le ZIP.
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:41 | |
| Ca marche ! Quelques petites remarques sans importance : 1- lorsque l'on charge le fichier, rien ne se produit tant que l'on a pas sélectionné une section. On reste sur le coup un peu perplexe.. 2- Ce qui serait bien ce serait d'avoir une zone pour commenter les différentes routines d'évènement (une sorte d'entête) Sinon, c'est ok !! [Edit] La doc contient des caractères bizarres au tout début sur 20 lignes à peu près, puis un peu plus loin dans la doc... serait-ce des images ? pourquoi ne pas générer tes doc au format pdf ? cela serait plus universel...
Dernière édition par Nardo26 le Sam 22 Jan 2011 - 15:47, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:44 | |
| Je tiens compte de tes remarques et prépare la prochaine version ! | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 15:48 | |
| Oups ! on s'est croisé ! regarde l'edit de mon dernier post... [Edit] Une petite suggestion : J'avais ouvert ton programme d'exemple pour voir comment cela fonctione puis tout naturellement, je suis allé sur le menu Fichier pour cliquer sur 'New' et.... surprise, il y en a pas... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 17:40 | |
| J'ai mis en ligne la version V1.07.
Elle apporte une indication claire en fain de chargement d'un projet, et des zones de commentaire pour chaque routine évènement et chaque sous-programme interne.
Je rajouterai l'option Nouveau dans le menu Fichiers.
Pour la doc, je ne comprends pas - ce sont de simples fichiers RTF et je l'ouvre avsc WordPad. Chez moi, je n'ai pas de caractères bizarres. Je vais regarder l'histoire du PDF. En tout cas, il n'y a aucun graphique ni image dans ce fichier. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Sam 22 Jan 2011 - 17:51 | |
| Pour les fichiers RTF j'ai le mêm souci quand l'ouverture se fait par Word Pad mais pas si le lecteur est Open Office.
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide Sam 22 Jan 2011 - 18:27 | |
| J'ai mis en ligne la version V1.08.
Elle comporte la ligne "Nouveau" dans le menu Fichiers, et une nouvelle option possibilité dans le menu Aide/Options. Il y a un sélecteur du format du fichier de documentation. Par défaut, c'est RTF, mais on peut choisir PDF. De façon interne, j'utilise acrord32.exe pour afficher les documents. La documentation est fournie dans les deux formats. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Utilitaire Designer: générer une structure Panoramic valide | |
| |
|
| |
| Utilitaire Designer: générer une structure Panoramic valide | |
|