FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Bataille terrestre
Simuler le passage de paramètre en Panoramic Emptypar Marc Hier à 16:20

» item_index
Simuler le passage de paramètre en Panoramic Emptypar Marc Hier à 16:13

» SineCube
Simuler le passage de paramètre en Panoramic Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Simuler le passage de paramètre en Panoramic Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Simuler le passage de paramètre en Panoramic Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Simuler le passage de paramètre en Panoramic Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Simuler le passage de paramètre en Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Simuler le passage de paramètre en Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Simuler le passage de paramètre en Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Simuler le passage de paramètre en Panoramic Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Simuler le passage de paramètre en Panoramic Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Simuler le passage de paramètre en Panoramic Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Simuler le passage de paramètre en Panoramic Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Simuler le passage de paramètre en Panoramic Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Simuler le passage de paramètre en Panoramic Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 Simuler le passage de paramètre en Panoramic

Aller en bas 
3 participants
AuteurMessage
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 18:18

Suite à la demande d'exdragon, je vous donne ma façon de faire.
Ce n'est qu'une méthode, il y en a certainement d'autres...

L"idée est d'utiliser une DLIST pour stocker les paramètres (on simule une PILE).
Le plus simple c'est de faire un exemple:

On va écrire une fonction qui renvoie le carré d'un nombre...(j'ai pas trouvé plus simple Wink )

Code:

' Création de la DLIST qui va servir pour le passage de paramètre
DIM PILE:PILE=1000:DLIST PILE
LABEL Carre : ' notre fonction

DIM nombre,retour
DIM i

' appel à la fonction

FOR i=1 TO 5
  ITEM_ADD PILE,STR$(i) : GOSUB Carre
  retour = VAL(ITEM_READ$(PILE,COUNT(PILE))) : ' on récupère la valeur de retour
  ITEM_DELETE PILE,COUNT(PILE) : ' et on efface le resultat dans la pile
  print "carre(";i;")=";retour
NEXT i

END

Carre:
  ' lecture du paramètre passé à la fonction
  DIM param1: param1=VAL(ITEM_READ$(PILE,COUNT(PILE)))
  ' maintenant qu'on l'a lu, il n'est plus besoin dans la DLIST, donc on l'efface:
  ITEM_DELETE PILE,COUNT(PILE)
  ' on fait notre petit calcul... ;)
  param1=param1*param1
  ' on met le résultat dans la DLIST
  ITEM_ADD PILE,str$(param1)
FREE param1
RETURN

Avec cette méthode, on peut écrire des fonctions avec N paramètres qui renvoient un nombre ou une chaine de caractère.
L'autre avantage par rapport aux systèmes classique c'est qu'on peut également avoir en retour :
- un tableau
- un mélange de chaines de caractères / valeurs numerique...
bref, tout ce que vous voulez dans la DLIST.

Perso j'utilise cette méthode depuis un petit moment:
- https://panoramic.1fr1.net/t1773-mise-en-forme-de-fichier-source-panoramic-nieme-version
- https://panoramic.1fr1.net/t1807-arbre-binaire-de-recherche-avl

et cela fonctionne pas trop mal... Wink

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 18:22

Intéressant, cette méthode ! Je vais en prendre note.

Juste une question: comment fais-tu pour passer un tableau ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 18:28

J'empile tous les elements de mon tableau, puis en dernier j'empile le nombre d'elements du tableau...
idem en valeur de retour...

EDIT:
Cela reste assez sommaire, l'ideal serait la notion de pointeur... mais là on ne parle plus de Panoramic...
Wink

Un exemple de tableau en retour que j'utilise pour mon utilitaire modbus (cf MyDrive.ch)

Code:

' ------------------------------------------------------------------------------
' Parametres d'entrée :
'  - Chaine de caractère à décomposer
'  - Caractère de séparation
' Paramètres de sortie:
'  - Nombre d'éléments, Element 1, Element 2,..., Element N
' ------------------------------------------------------------------------------
Split:
  DIM Split_str$
  DIM Split_i
  DIM Split_t$
  DIM Split_tab$(100), Split_index
  Split_t$=ITEM_READ$(SysStack,COUNT(SysStack)):GOSUB SysClrStack
  Split_str$=TRIM$(ITEM_READ$(SysStack,COUNT(SysStack))) : GOSUB SysClrStack

  Split_index  = 1
  FOR Split_i=1 TO LEN(Split_str$)
    IF MID$(Split_str$,Split_i,1)=Split_t$
      Split_index=Split_index+1
    ELSE
      Split_tab$(Split_index)=Split_tab$(Split_index)+MID$(Split_str$,Split_i,1)
    END_IF
  NEXT Split_i
  ' on empile le résultat
  FOR Split_i= Split_index TO 1 STEP -1
    ITEM_ADD SysStack,Split_tab$(Split_i)
  NEXT Split_i
  ITEM_ADD SysStack,STR$(Split_index)
  FREE Split_str$:FREE Split_i:FREE Split_index:FREE Split_tab$
  FREE Split_t$
RETURN

SysClrStack:
  ITEM_DELETE SysStack,COUNT(SysStack)
RETURN

Revenir en haut Aller en bas
http://nardo26.lescigales.org
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 18:47

Citation :
L"idée est d'utiliser une DLIST pour stocker les paramètres (on simule une PILE)
Merci Nardo !

Rien que cette idée d'utiliser le Dlist est une super idée géniale, de celles qu'on a pas idée jusqu'à ce qu'on y pense, enfin vous me comprenez Wink
(j'espère^^)

Je veux dire que le Dlist est sous nos yeux tous les jours et on a jamais pensé à l'utiliser de cette façon Wink

C'est trop bien !!!


En parlant de pointeurs, tu ne peux pas utliser un index comme un pointeur vers les variables du Dlist ?
Enfin simulation de pointeur quoi Wink

Perso, je ne passe pas de tableaux en paramètres, sauf s'il est de très petites dimensions, sinon je préfère essayer de faire autrement.




Dernière édition par exdragon le Dim 12 Fév 2012 - 18:51, édité 2 fois
Revenir en haut Aller en bas
Klaus

Klaus


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

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 18:50

@Nardo26: merci. Je ne voyais pas d'autre solution non plus. Vivement les sous-programmes avec paramètres que Jack est en train de réaliser !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 19:04

Oui j’attends avec impatience cette version !!
Cela va nous simplifier la vie grandement !!! Wink

Je ne pense pas que Jack est prévu des fonctions avec en retour plusieurs paramètres (cela risque d'être compliqué au niveau parser)

Donc dans certains cas, je pense que j'utiliserai cette méthode pour des fonctions "folklorique"... Wink

@exdragon: je ne vois pas ce que tu veux dire...
Pour les pointeurs ce que je voulais dire concernant les tableaux:
c'est de passer l'adresse de base du tableau ainsi que sa taille... et de pouvoir récupérer son contenu via cette adresse...
Dans le cas présent, la fonction ADR ne marche pas...
sans compter le PEEK/POKE, DPOKE, LPOKE qui n'existent pas non plus...
Concernant la manipulation de pointeur, Panoramic n'est pas adapté pour ce genre de chose... Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyDim 12 Fév 2012 - 19:24

Tout dépend si Jack fait le passage de paramètres "by value" ou "by reference". J'espère que ce sera le seconde solution. Ceci permettrait d'utiliser un paramètre formel en entrée ET en sortie, du genre:
Code:

dim i%,j%,a$,b$
a$ = "sources Panoramic"
b$ = "Pano"
j% =  analyser(i%,a$,b$)
...
function anayser(n%,x$,y$)
dim i%
n% = 1
i% = 1
while i%>0
  i% = instr(mid$(x$,i%,len(x$)," ")
  if i%>0 then n% = n% + 1
end_while
analyser = instr(x$^,y$)
end_function

Cette fonction, bidon bien sûr, retourne DEUX informations:
au retour, la variable j% contient 9, et n% contient 2, soit le nombre de mots dans a$.

Si donc il fait le passage "by reference", ce serait idéal. On pourrait même imaginer:
Code:

dim table$(20,3), s$,i%,j%
...
s$ = chercher$(table$(),"crit",20,3,i%,j%)
...
function chercher$(tableau$(),c$,d1%,d2%,x%,y%)
dim i%,j%
for i%=0 to d1%
  for j%=0 to d2%
    if instr(tableau$(i%,j%),c$)>0
      x% = i%
      y% = j%
      chercher$ = tableau$(i%,j%)
      exit_function
    end_if
  next j%
next i%
x% = 0
y% = 0
chercher$ = ""
end_function
Cette fonction chercherait une chaîne de caractères dans les éléments d'un tableau de chaines. Elle retournerait une chaîne vide si l'on ne trouve rien, ou la chaîne complète de la première occurence du critère de recherche ainsi que les deux indices contenant la chaîne trouvé.

Là encore, l'exemple ne sert pas à grand-chose d'autre que de montrer quelques possibilités "souhaitables" d'une implémentation de sous-programmes et fonctions avec paramètres formels, si l'on choisit le passage "by reference".
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyLun 13 Fév 2012 - 11:42

Hello Klaus,

Comment tu fait du récursif avec un passage de paramètre par référence ?

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic EmptyJeu 16 Fév 2012 - 18:09

Du récursif n'est évidemment pas possible. Mais dans mes applications, je n'ai jamais besoin de récursivité. Par contre, j'ai souvent besoin de pouvoir retourner ou de modifier plusieurs valeurs passées en entrée; ce que résoudrait cette proposition.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Simuler le passage de paramètre en Panoramic Empty
MessageSujet: Re: Simuler le passage de paramètre en Panoramic   Simuler le passage de paramètre en Panoramic Empty

Revenir en haut Aller en bas
 
Simuler le passage de paramètre en Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» passage paramètre par un .exe
» Passage de paramètres à un programme Panoramic
» Lancement d'un exécutable Panoramic avec paramètre(s)
» Simuler une entrée clavier
» Simuler l’appui d'une touche ou combinaison de touches.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: