Tout d'abord, bienvenue à toi, Harzonis ! Ca fait toujours plaisir d'accueillir un nouveau Panoramicien !
En ce qui concerne tes remarques techniques, je vais essayer d'y répondre simplement, sans connaître vraiment le contexte que tu as en vue.
- Citation :
- 1/ L'affichage n'était pas très simple à maîtrisé. J'ai donc laissé tomber.
Panoramic a de multuples possibilités d'affichage. Le choix des moyens se fait en considérant le résultat que tu veux obtenir. Mais, ce qu'il faut garder à l'esprit, c'est que Panoramic est un langage créant et gérant des fenêtres Windows. Ce n'est pas en Basic de style console comme les anciens Basics de Micrisoft et consorts sous MS-DOS. Ca, il faut l'oublier. Je te conseille de suivre les tutos publiés dans la section des tutos du forum (faits par Jack essentiellement), et de le faire pas à pas - tu vas acquérir assez rapidement le "feeling" pour la façon dont les choses se font en Panoramic. La partie graphique devra venir après, lorsque tu maîtriseras l'utilisation des objets Windows que Panoramic propose.
- Code:
-
2/ L'absence de tableau à plus de deux dimension est contournable mais c'est une limitation.
Je suis d'accord avec toi, tant sur le fait que c'est une limitation que sur le fait que cela peut être contourné. C'est un choix volontaire de Jack (l'auteur du logiciel), afin de garder le langage aussi simple que possible.
- Citation :
- 3/ Le test (if) qui se termine par (end_if) pose problème car en cas de réussite du test il est parfois nécessaire de sortir du sous programme avant (end_if). Dans ce cas l'adresse ne dépile pas. Et la mémoire risque de saturer. Il y a bien sur des instructions pour interrompre le test (forcer le dépilage au retour), mais je ne les ai pas trouvés.
J'ai l'impression que tu mélanges plusieurs notions. Laisse-moi procéder par étapes:
1. il y a 3 syntaxes pour la commande IF:
- Code:
-
IF condition THEN commande
Si la condition est vraie, la commande sera exécutée.
- Code:
-
IF condition
commande
...
commande
END_IF
Si la condition est vraie, le bloc de commandes sera exécutée, l'une après l'autre.
- Code:
-
IF condition
commande
...
commande
else
commande
...
commande
end_if
Si la condition est vraie, le bloc de commandes entre IF et ELSE sera exécutée, sinon, le bloc de commandes entre ELSE et END_IF sera exécutée.
Il n'y a rien de mystérieur là-dedans, juste une habitude à prendre dans la construction de cette instruction structurée. Pour cela, je te conseille vivement de recourir à l'indentation de ton code, un peu comme je viens de le faire, pour que ce soit plus lisible.
Maintenant, il y a deux autres notions: les sousprogrammes et les procédures.
Un sousprogramme est une portion de code commençant par un label et se terminant par un RETURN:
- Code:
-
LABEL MonSousprogramme
...
MonSousProgramme:
commande
...
commande
RETURN
On tel sousprogramme est appelé par la commande GOSUB ainsi que par tous les évèmenent Windows que tu as programmés pour les onbjets (ON_CLICK, ON_CHANGE, ...). La commande RETURN arrête le sousprogramme et "dépile" l'adresse de retour. Mais sache que tu peux placer des RETURN n'importe où, dans le sousprogramme, et en particuler à l'intérieur d'un des blocs de IF:
- Code:
-
IF condition
commande
...
commande
ELSE
commande
...
commande
RETURN
END_IF
...
Comme tu vois, si la condition est fausse, le deuxième bloc de commandes sera exécuté, puis le sousprogramme se termine par RETURN. Mais si la condition est vraie, le premier bloc de commandes est exécutée, et le sousprogramme continue après le END_IF.
Une procédure est une section de code commençant par la commande SUB et se terminant par la commande END_SUB. Une procédure peut avoir des paramètres, mais c'est optionnel.
- Code:
-
SUB MaProcedure(param1,...,paramn)
commande
...
commande
END_SUB
Une sub est appelée en donnant simplement son nom comme si c'était une commande, mais en ajoutant d'éventuels paramètres entre parenthèses et non séparés de la commande simplement par un espace, comme c'est le cas des commandes normales de Panoramic:
- Code:
-
commande
...
commande
MaProcedure(i,...,s$)
commande
...
Tout comme pour un sousprogramme, on peut sortir correctement avant d'atteindre la commande END_SUB. Ceci se fait par la commande EXIT_SUB:
- Code:
-
SUB MaProcedure(param1,...,paramn)
commande
...
commande
IF condition TH EXIT_SUB
commande
...
commande
END_SUB
END_SUB
Bien sûr, la commande EXIT_SUB peut également apparaître dans un des blocs de commandes d'une commande IF complexe.
Bon, voilà beaucoup de baratin, et j'espère avoir apporté un petit éclairage sur les questions que tu te poses. Mais si tu fais les tutos proposés sur le forum, tout cela va s'éclaircir tout seul !
Je te souhaite beaucoup de plaisir avec Panoramic, et je pense parler au nom des copains en disant que nous attendons tous ta première contribution avec impatience !