FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mah-Jong américain
par Jean Claude Hier à 19:37

» StratégoV8 et V9
par Jean Claude Hier à 13:18

» Problème avec Deepl
par Klaus Hier à 0:34

» Déformation d'image en trapèze
par Klaus Dim 14 Jan 2018 - 16:22

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» KGF_dll - nouvelles versions
par Minibug Ven 12 Jan 2018 - 0:21

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» HVIEWER
par Klaus Mer 10 Jan 2018 - 2:06

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

» Bonne fêtes de fin d'année ! Meilleurs Vœux 2018 !
par Jicehel Jeu 4 Jan 2018 - 17:28

» Mah-Jong international
par jjn4 Jeu 4 Jan 2018 - 16:55

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Quelques nouvelles ...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jack
Admin
avatar

Nombre de messages : 1779
Date d'inscription : 28/05/2007

MessageSujet: Quelques nouvelles ...   Jeu 11 Jan 2018 - 18:34

Ces derniers mois, j'ai fait quelques déplacements professionnels de longue durée et pendant lesquels, comme d'habitude, je n'avais presque aucun temps libre, puis j'ai développé un logiciel de génération de GCODE pour une machine à commande numérique.
Je n'ai donc pas pu continuer le développement de Panoramic comme je l'aurai voulu.

Cependant, j'ai quand même avancé sur certains points.

Les bugs 2, 3 et 4 sont corrigés et je vais bientôt sortir une nouvelle version qui possèdera les fonctions.
Une fonction sera définie par FNC et se terminera par END_FNC ou EXIT_FNC et sera appelable dans toute expression.
J'aurai l'occasion d'en reparler.

J'ai commencé à porter le compilateur en FreePascal, mais je me suis heurté à des difficultés dont voici quelques exemples:
- le portage sous Android et sous MACOS n'est pas facile.
- il me faut trouver une astuce pour les DATA, READ, RESTORE et en particulier RESTORE_LABEL car intégrer des données dans un source pascal n'est pas évident. Y accéder par un LABEL (RESTORE_LABEL) est encore moins évident.
- il me faut faire la différence entre les LABEL sur lesquels pointe un GOTO et ceux sur lesquels pointe un GOSUB. Je m'interroge d'ailleurs sur la pertinence du GOSUB alors que les SUB existent ...
Ces difficultés ne sont pas insurmontables, mais je pense que le compilateur avec FreePascal ne sera pas prêt avant quelques mois.
Aussi, la prochaine version du compilateur risque bien de se faire encore avec FreeBasic.

Je suis en outre en train de développer une version de Panoramic qui se situe entre un interpréteur et un compilateur.
Dans un premier temps, une analyse de la structure du source est effectuée puis chaque ligne est analysée : la syntaxe est vérifiée puis la ligne est transformée en un code interne.
Enfin, l'exécution se résume à une exécution de ce code interne. Il n'y a plus aucun travail d'analyse pendant l'exécution. Il en résulte que l'exécution est autrement plus rapide que précédemment.

Voila pour le moment, je donnerai bientôt d'autres nouvelles.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Klaus

avatar

Nombre de messages : 10411
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 20:18

Je suis content d'avoir de tes nouvelles, et des nouvelles de Panoramic !

Tout d'abord, je te souhaite une excellente année 2018. Tout a fait égoïstement, je te souhaite une année plus calme professionnellement Very Happy . Non, blague à part, je te souhaite réussite, santé et bonheur, pour toi et tes proches.

Maintenant, pour Panoramic:
Je suis très content d'apprendre que les fonctions Panoramic vont venir. C'est un gros morceau, et ça nous sera très utile !

Personnellement, je suis moins concerné par le compilateur, mais je suis cela de loin.

Par contre ton idée d'un hybride entre interpréteur et compilateur m'intéresse beaucoup - on garde la souplesse de l'interpréteur et on gagne en exécution via le byte code. C'est prometteur et je vais guetter la sortie de cette version !

A l'évidence, tout cela implique un remaniement profond du coeur de Panoramic. C'est peut-être le moment de suggérer une modification, si je peux me permettre. A ce jour, on peut appliquer la fonction intrinsèque ADR() sur un tableau. Ca marche bien pour un tableau en 1 seule dimension. Pour un tableau en 2 dimensions, seules les cellules de la première série sont accessibles. J'avais déjà constaté que les données sont mémorisées de façon contigue pour les cellules (i,0), (i,1), ..., (i,n), pour i de 0 à maxi du premier indice. Cependant, ces "segments" eux-mêmes ne sont pas contigus. En particulier, si je définis:
Code:
dim MonTableau%(4,3)
la cellule (0,1) ne suit pas la cellule (4,0), etc. Ceci exclut de pouvoir travailler avec un tableau de deux dimensions dans une DLL. Serait-ce possible de changer cela, de sorte que les données soient physiquement contigues ? Si ce n'est pas possible, ou si ce n'est pas le moment, alors oublie ce que je viens de poster.

En tout tas, Bravo pour ces annonces et un grand MERCI pour ta persévérance sur Panoramic !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 20:25

Merci Jack pour ces nouvelles.

Bonne année à toi et tes proches.

Klaus a écrit:
Par contre ton idée d'un hybride entre interpréteur et compilateur m'intéresse beaucoup - on garde la souplesse de l'interpréteur et on gagne en exécution via le byte code. C'est prometteur et je vais guetter la sortie de cette version !

+1

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mindstorm

avatar

Nombre de messages : 544
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 20:50

bonne année 2018 Jack et plein de bonnes choses.
de toute évidence +1 pour la version hybride
c'est une idée qui me plait vraiment
bon courage
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 483
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 20:52

Les FNC, le bytecode, en voilà des avancées alléchantes Very Happy
J'attend avec impatience la version bytecode pour le gain en rapidité d'éxécution que cela va apporter, car le compilateur refuse de fonctionner sur mon pc Sad .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1656
Date d'inscription : 13/09/2009

MessageSujet: +++   Jeu 11 Jan 2018 - 21:23

Bonne année, Jack.
Et merci pour ces bonnes nouvelles,
en particulier les fonctions !
Pour ce qui est des gosub
peut-être cela peut encore servir
(à vrai dire, je n'ai pas vérifié)
en remplacement pour quand les sub
fonctionnent mal, en particulier avec
les variables tableaux.
Enfin, c'est une idée...
Sans compter que rien n'empêche
d'améliorer les sub. Laughing
flower
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 22:27

JJN4 a écrit:
Pour ce qui est des gosub, peut-être cela peut encore servir

Pour stratégo, j'ai utilisé des LABEL(s) à l'intérieur de certaines SUB(s) et je me suis rendu compte que GOTO est bien plus adapté dans ce cas, car il n'y a pas besoin d'un RETURN comme après un GOSUB.

C'est vrai que je ne vois plus très bien l'utilité de GOSUB, maintenant que nous avons les procédures SUB.
Le seul problème que je vois c'est qu'en cas de suppression de GOSUB il faudra bien expliquer aux accrocs du basic ancien comment c'est facile de s'en passer.

C'est un débat, peut-être que je ne pense pas à tous les cas.....

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6069
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Quelques nouvelles ...   Jeu 11 Jan 2018 - 23:27

En ce qui me concerne, j'ai un certain nombre de Subs (beaucoup en réalité) qui comportent chacune plusieurs sous-programmes internes appelés par Gosub, avec étiquette et Return, et je ne vois pas trop comment faire autrement...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ouf_ca_passe

avatar

Nombre de messages : 204
Age : 69
Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France
Date d'inscription : 21/12/2015

MessageSujet: LEXIQUE   Ven 12 Jan 2018 - 10:48

Les spécialistes (les seniors des PANO) peuvent-ils expliquer au béotien que je suis les différences entre ...
- une fonction (ce mot n'est-il pas polysémique, avec plusieurs significations ?)
- un sous-programme
- une procédure
- une routine

et j'en oublie probablement.

Merci pour vos réponses.

NB. Des exemples seraient bienvenus.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord

avatar

Nombre de messages : 771
Age : 63
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 11:18

Un sous-programme (ou procédure) ne retourne pas de résultat.

Une fonction retourne un résultat, que parfois on peut ignorer, ce qui revient à utiliser la fonction comme une procédure, d'où l'ambigüité de ce dernier terme !

Exemple tiré de la documentation FBPano :

Code:

- Une fonction (`function`) retourne un résultat, que l'on peut affecter à une variable ;
  les paramètres de la fonction doivent alors être placés entre parenthèses :

        y = exp(x)

    Toutefois, il est possible (bien que généralement déconseillé) d'ignorer
    le résultat et d'utiliser la fonction comme une procédure.

    Exemple : la fonction `file_open_read` ouvre un fichier texte en lecture
    et retourne la valeur TRUE ou FALSE selon que l'opération a réussi ou non.

    La syntaxe recommandée est de la forme :

        if file_open_read(1, "fichier.txt") = FALSE then
          ' Erreur
        else
          ' Suite du programme

    Si l'on décide d'ignorer le résultat on peut appeler la fonction comme
    une procédure :

        file_open_read 1, "fichier.txt"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 15:15

Je ne suis pas tout à fait d'accord avec toi Jean.

Citation :
Un sous-programme (ou procédure) ne retourne pas de résultat.

Oui, une procédure est un sous-programme.
Mais comme tout sous-programme, elle peut retourner un résultat en modifiant la valeur d'une variable globale.

Ce qui est discutable dans ce que je dis, c'est que la modification de la valeur d'une variable doit-elle être considérée comme un résultat...

Citation :
Une fonction retourne un résultat, que parfois on peut ignorer, ce qui revient à utiliser la fonction comme une procédure, d'où l'ambigüité de ce dernier terme !
Là je suis complètement d'accord.

Excuse-moi Jean, je pinaille. Mais c'est volontaire pour que Ouf_ça_passe saisisse bien la différence.

Mais, j'ai quand même un doute sur ce que je dis. Je vais aller, de ce pas, chercher une réponse sur le Web.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 15:28

Suite à mes recherches, je vois que ce sujet sur les différences entre procédures et fonctions perturbe les programmeurs.

Je pense que la meilleur explication est:
CCM:
 

je l'ai trouvée ici => http://www.commentcamarche.net/forum/affich-6435771-procedure-et-fonction

A+


Dernière édition par Jean Claude le Ven 12 Jan 2018 - 15:32, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 483
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 17:17

@Ouf_ca_passe
Un sous programme est dépendant du programme principal, il ne peut pas s'éxécuter sans lui.
C'est un branchement à un label(instruction GOSUB ou un évènement) avec retour à l'appelant(instruction RETURN).
En panoramic, les sous programmes sont placés après l'instruction END. Il y a forcément un branchement; si on accède à un sous programme sans l'avoir appelé, alors panoramic signale une erreur.

Une routine est indépendante du programme.
Une routine contient une collection de sous-routines, c'est une sorte de bibliothèque à thème (par ex. une pour la manipulation de fichiers, une autre pour la gestion graphique, etc...). La routine est spécifique à un langage de programmation et ne peut pas être utilisé pour un autre langage.
Une sous-routine est soit une procédure(instruction SUB), soit une fonction(instruction FNC, que jack met en place). Une procédure éxécute un ensemble d'instruction mais ne renvoi aucune valeur (comme par ex. 2D_CLEAR) contrairement à une fonction (ex. x=COS(45)).
En panoramic, les routines sont placés après l'instruction END(sinon il signale une erreur), ou dans un #INCLUDE.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1779
Date d'inscription : 28/05/2007

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 17:48

Au sujet des procédures ou sous-programmes, il y a un tutoriel sur le forum:
http://panoramic.free-boards.net/t2497-les-sous-programmes-les-variables-globales-et-locales

Ce qu'il faut retenir:
- un sous-programme ou sub-routine ou procedure est un bout de programme, dont la déclaration commence par SUB suivi de son nom, et qui se termine par END_SUB.
- on peut définir des paramètres entre parenthèses.
- on appelle un sous-programme ou sub-routine ou procedure par son nom suivi de () s'il n'y a pas de paramètres, ou par des paramètres séparés par des virgules et entourés de parenthèses.
- un sous-programme est donc appelé comme une commande, sauf qu'il y a des parenthèses.

exemple:
Code:
DIM I%,R
- - -
SANS_PARAMETRE()
AVEC_UN_PARAMETRE(3*I%)
AVEC_DEUX_PARAMETRES(3*I%, 7-4*R)
END

SUB SANS_PARAMETRE()
- - -
END_SUB

SUB AVEC_UN_PARAMETRE(K%)
- - -
END_SUB

SUB AVEC_DEUX_PARAMETRES(Z%, W)
- - -
END_SUB
- les paramètres (par exemple Z% et W) ne doivent pas être déclarés. Ils peuvent avoir les mêmes noms que des variables globales (variables qui sont déclarées par DIM) mais n'affectent en aucun cas les variables globales, car ces paramètres n'ont d'existence que dans le sous-programme.
- dans un sous-programme, si dans la définition un nom de paramètre est identique au nom d'une variable globale, c'est la variable en paramètre qui est utilisée.
- enfin, ils peuvent posséder des variables locales, définies par DIM_LOCAL



Pour les fonctions, c'est pareil, sauf qu'elles retournent un résultat et qu'on les utilise dans des expressions ou dans des affectations.
- une fonction est définie par FNC suivi d'un nom et se termine par END_FNC. On peut définir des paramètres entre parenthèses.
- dans la fonction, la valeur de retour est définie par RESULT
- on appelle une fonction dans une expression ou dans une affectation par son nom suivi de () s'il n'y a pas de paramètres, ou par des paramètres séparés par des virgules et entourés de parenthèses.
Code:
DIM I%,R$,A
- - -
A=SANS_PARAMETRE()
BUTTON 150+AVEC_UN_PARAMETRE%(3*I%)
CAPTION 0,"ABC"+AVEC_DEUX_PARAMETRES$(3*I%, 7-4*R$)
END

FNC SANS_PARAMETRE()
RESULT 21.89
END_SUB

FNC AVEC_UN_PARAMETRE%(K%)
RESULT K%*23
END_SUB

FNC AVEC_DEUX_PARAMETRES$(Z%, W$)
RESULT LEFT$(W$,Z%+10)
END_FNC

Les fonctions sont typées comme les variables :
- si le nom d'une fonction se termine par %, elle retourne un entier
- si le nom d'une fonction se termine par $, elle retourne une chaine de caractères
- si le nom d'une fonction se termine par une lettre ou un chiffre, elle retourne un réel



PANORAMIC permet en outre d'utiliser les sous-programmes "à l'ancienne", comme dans les BASIC des années 80...
Un sous-programme est défini par un LABEL suivi de son nom, et se termine par RETURN
On l'appelle par GOSUB
Il n'y a alors pas de paramètres et pas de variables locales et le sous-programme utilise les variables globales (variables définies par DIM)

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Ouf_ca_passe

avatar

Nombre de messages : 204
Age : 69
Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France
Date d'inscription : 21/12/2015

MessageSujet: Ok Ok !   Ven 12 Jan 2018 - 18:20

Merci les amis

Je me coucherai moins bête ce soir.

Comme Monsieur Jourdain qui faisait de la prose sans le savoir, je codais depuis toutes ces années en parfaite ignorance.

Je vais ajouter vos éclaircissements dans mon YAPUKA (mon vademecum informatique).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Quelques nouvelles ...   Ven 12 Jan 2018 - 22:40

J'aime ta lecture Ouf_ça_passe, ça sent la culture...

BREF !
Moi aussi je vais me coucher un peu moins bête. Very Happy
Les explications de Jack, m'ont fait entrevoir des possibilités que je ne soupçonnais pas concernant les fonctions...

J'attends avec impatiente la nouvelle version de Panoramic.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Quelques nouvelles ...   

Revenir en haut Aller en bas
 
Quelques nouvelles ...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» quelques ajouts
» Quelques mots sur moi
» désolé de nepas donner de mes nouvelles
» Les nouvelles en bref
» Nouvelles Chaines sur Bbox Fibre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Ce qui est en cours ...-
Sauter vers: