| Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 | |
|
+5Jicehel Yannick Klaus Nardo26 Jack 9 participants |
|
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| |
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 2:02 | |
| @ papydall,
Je viens de placer cette page dans "mes favoris \ programmation"
Encore une page qui trouverait sa place dans une rubrique de Cours sur la prog.
Merci
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: proposition Jeu 13 Sep 2012 - 2:11 | |
| Je me permet une suggestion pour l'éditeur panoramic: les mots clé (chez moi) c'est en bleu les commentaires c'est en rose ( je vois la vie en rose même quand je suis dans le brouillard ) le reste est en noir un paramètre de sub ne pourrait il pas avoir une couleur particulière pour bien le distinguer dans l'éditeur ( les nouveau panoramiciens apprécieraient peut être ). ce serait un moyen pour l'éditeur de dire : "Attention ! c'est un param, pas une variable !" | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 10:31 | |
| @papydall: Ton explication est parfaite. Je vais la mettre dans la rubrique "Tutoriels et éclaircissements".
Une petite confidence, ne le répète pas aux autres: je suis en train de coder les fonctions. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 10:43 | |
| | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 12:56 | |
|
Dernière édition par papydall le Jeu 13 Sep 2012 - 13:18, édité 1 fois | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 13:17 | |
| Salut tout le monde. Voici un petit code illustrant l’appel des procédures. Bien sûr, on pourrait écrire un programme plus concis et même plus élégant pour obtenir le même résultat. Mais ce n’est pas le résultat du programme en soit que j’ai voulu montrer, mais une des manières de faire des appels aux différentes procédures. - Code:
-
' Exemple d'appel des procédures ' ============================================================================== ' Ici débute le module principal du programme dim m% : ' Seule cette variable est globale, toutes les autres sont locales
init() Affiche("T A B L E D E M U L T I P L I C A T I O N",240,10) Affiche(string$(50,"*"),240,40) for m% = 2 to 9 : table(m%) : next m% end ' Fin du module principal
' ============================================================================== ' ******** INITIALISATION ' Procédure INIT() sans paramètres d'appel mais les parenthèses sont obligatoires SUB init() width 0,800 : height 0,700 color 0,0,0,0 : font_color 0,0,255,0 : font_size 0,12 : font_bold 0 END_SUB ' ==============================================================================
' ******** Afficher un texte à l'écran ' Le texte ainsi que la position de l'affichage sont passés comme paramètres ' formels par le module appelant ' Procédure Affiche : les 3 paramètres d'appel sont locaux SUB Affiche(texte$,colonne%,ligne%) print_locate colonne%,ligne% : print texte$ END_SUB ' ============================================================================== ' ******** Afficher la table ' Affiche une table de multiplication : le multiplicande(m%) est passé comme ' paramètre formel par le module appelant. ' Le multiplicateur i% est déclaré dans la procédure comme variable locale SUB table(m%) DIM_LOCAL i%,s$,lig%,col% : ' variables locales : à la sortie de la procédures ' elles seront automatiquement éliminées. affiche(string$(54,"_"),150,50): ' Une procédure peut appeler une autre col% = 150*(m%-1): lig% = 70 if col% > 600 col% = col%-600 : lig% = 320 end_if for i% = 1 to 9 s$ = str$(i%*m%) if i%*m% < 10 then s$ = " "+s$ print_locate col%,lig% : print str$(i%)+" X "+str$(m%)+" = "+s$ lig% = lig%+20 next i% affiche(string$(54,"_"),150,270) affiche(string$(54,"_"),150,500) END_SUB ' ==============================================================================
A+
Dernière édition par papydall le Jeu 13 Sep 2012 - 14:47, édité 1 fois | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 13:35 | |
| Belle illustration | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 14:26 | |
| @Papydall, Ton exemple est très bien fait et a un réel intérêt pour ceux qui se demandent comment utiliser une procédure avec SUB().
Premier constat: il n'y a aucun LABEL dans ton code. Deuxième constat: les dimensions, couleur de fond, taille et couleur de la police de FORM 0 sont gérées dans une procédure. Troisième constat: La procédure AFFICHAGE est utilisée plusieurs fois pour des objectifs différents et enfin la procédure de calcul TABLE(m%) est appelée par une boucle (FOR/NEXT)
Résultat: le code (principal) est limité à 5 lignes en comptant END et une seule variable globale est déclarée.
JE DIS BRAVO POUR L'EXEMPLE CAR TRÈS EXPLICITE (Tu devrais te lancer dans la fabrication de Tutos).
Une remarque: pour optimiser l'affichage des résultats dont LEN()>1 j'ai ajouté un espace à la ligne 44 (if i%*m% < 10 then s$ = " "+s$).
PS: j'ai une info, il paraît que Jack serait entrain de coder les functions, mais garde çà pour toi...
A+
Dernière édition par Jean Claude le Jeu 13 Sep 2012 - 16:13, édité 1 fois | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 14:41 | |
| | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 14:45 | |
| après pan59 qui hurlait voilà que tout le monde chuchote ... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 14:52 | |
| Parce qu’il y a des choses sécrètes que tout le monde (ne) doit (pas) savoir ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 15:23 | |
| @Ygeronimi C'est plus clair maintenant les SUB...END_SUB, n'est-ce pas? | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 15:28 | |
| heu....t'es sûr que tu veux une réponse.... edit : je reviens dans une heure | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 17:41 | |
| Si il y en a qui se posent des questions sur l'utilité des SUB, moi je ne m'en pose pas du tout... il n'y a qu'a voir le dernier source de mon générateur de fichier html... J'utilise allègrement.... il manque plus que les cerises sur le gâteau : les fonctions un petit exemple : - Code:
-
' ------------------------------------------------------------------------------ ' Supprime tous les fichiers du répertoire A$ portant l'extension B$ ' Appel : DelAllFile("C:\TEMP","tmp") ' ------------------------------------------------------------------------------ SUB DelAllFile(A$,B$) DIM_LOCAL t$,origin$ origin$ = DIR_CURRENT$ : B$ = UPPER$(B$) DIR_CHANGE A$ t$ = FILE_FIND_FIRST$ WHILE t$ <> "_" IF UPPER$(RIGHT$(t$,3)) = B$ THEN FILE_DELETE t$ t$ = FILE_FIND_NEXT$ END_WHILE FILE_FIND_CLOSE DIR_CHANGE origin$ END_SUB | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 17:54 | |
| C'est vrai que c'est plus net que le GOSUB, mais pas révolutionnaire quand même (depuis qu'on a le DIM/FREE local), si je reprends ton exemple avec gosub: - Code:
-
A$="C:\TEMP": B$="tmp": GOSUB DelAllFile ... DelAllFile: DIM t$,origin$ origin$ = DIR_CURRENT$ : B$ = UPPER$(B$) DIR_CHANGE A$ t$ = FILE_FIND_FIRST$ WHILE t$ <> "_" IF UPPER$(RIGHT$(t$,3)) = B$ THEN FILE_DELETE t$ t$ = FILE_FIND_NEXT$ END_WHILE FILE_FIND_CLOSE DIR_CHANGE origin$ FREE t$: FREE origin$ RETURN le problème c'est si on attend un résultat en retour, et là c'est plus scabreux, il faut faire attention aux variables. Vivement les fonctions ! il avait dit 1 heure, et ygeronimi n'est toujours pas là... je crains qu'il n'ait commis une erreur fatale (fatal error).
Dernière édition par JL35 le Jeu 13 Sep 2012 - 17:59, édité 1 fois | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 17:57 | |
| La fonction retourne une valeur uniquement. Pour ce que tu souhaite JL35, l'idéal serait de pouvoir passer les variable soit par valeur soit par adresse, mais là ça complique un peu peut être pour certains (hein ygeronimi) et Jack n'en parle pas pour le moment. Je ne sais pas s'il veut aller dans cette voie (de toute façon, il sait que l'on en veut toujours plus.... ). | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 18:30 | |
| Ce que j'attendais des SUB, c'était un fonctionnement identique à celui de QBasic ou FreeBasic (entre autres), c'est à dire un appel du genre: - Code:
-
Masub(Fich$, i%, j%, 10) ' ici au retour i% et j% contiennent les valeurs attendues val1 et val2) ... SUB Masub(f$, p2%, p3%, p4%) ... traitement... p2% = val1 p2% = val2 END_SUB c'est à dire que seul le rang et la nature des variables sont pris en compte par la SUB, et le résultat est bien rangé dans les variables d'appel. Et là on pouvait faire des bibliothèques de s/p avec renvoi de résultats complètement indépendantes des programmes principaux. | |
|
| |
Invité Invité
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 18:34 | |
| C'est un programme pour me faire une réflexion et peut-être avoir une autre idée ensuite. Pour récupérer les paramètres, sans se servir de variables. On en pensera ce qu'on en voudra. - Code:
-
' teste dim a$,b$,c$,a% b$="envoi " c$="un code" a%=123456 teste(10,a%,b$,c$)
for a%=1 to count(10):print item_read$(10,a%):next a% : delete 10 end sub teste(obj%,a%,b$,c$)
if object_exists(obj%)=0 then dlist obj% clear obj% item_add obj%,a%*10 item_add obj%,b$+"reçut" item_add obj%,c$+" salutation" end_sub |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 18:38 | |
| @JL35: Les SUB n'ont rien a voir avec les gosub... Là où je trouve un intérêt c'est le passage de paramètre et les DIM locaux ! il n'y a qu'a voir la gymnastique que je faisait avec des DLIST pour simuler tout ça... sans compter la palanqué de FREE de variables avec des noms à rallonge en fin de chaque procédure... j'ai bien regretté de ne pas pouvoir écrire FREE a,b,c (mais apparemment il n'y avait pas grand monde qui utilisait cette commande) Et quand il va y avoir les fonctions ?.... j'ose même pas imaginer la réduction de taille du code et le gain en lisibilité pour, par exemple, ma librairie AVL... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 19:11 | |
| @ JL35, Je me suis fait piégé dans le monde réel... (Il a fallu que j'aille dépanné mon père, il a réussi à crever deux pneus en même temps... ...fait pas les choses à moitié le paternel ! )
Dernière édition par ygeronimi le Jeu 13 Sep 2012 - 19:22, édité 1 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 19:13 | |
| Enfin c'est quand même le même usage (gosub, sub, fonctions): avoir une partie de code réentrante (pour ne pas avoir à la réécrire 36000 fois). L'exemple que donne cosmos pour le renvoi de paramètres c'est je pense ce que tu faisais toi Nardo en parlant de dlist, c'est une idée intéressante, mais un peu acrobatique quand même. Les Dim locaux c'est effectivement déjà un gros progrès, et comme tu dis les Free en série c'était un peu lourdingue. @ygeronimi ouf! tu me rassures... bien que je préfère écrire un programme que de changer des pneus ! j'espère qu'il avait deux roues de secours (mais c'est rare) ! | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 13 Sep 2012 - 19:21 | |
| le "DIM_LOCAL" cà c'est génial, cela m' évitera de faire des noeuds dans mes "x%" car c'est mon défaut, je le confesse, j'aime bien x%. C'est mon inconnu préféré depuis le collège ...avec sa copine y% bien sûr ! C'est bien le problème, y en avait qu' une ! | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 19:39 | |
| - cosmos70 a écrit:
- C'est un programme pour me faire une réflexion et peut-être avoir une autre idée ensuite.
Pour récupérer les paramètres, sans se servir de variables. On en pensera ce qu'on en voudra. - Code:
-
... Oui cela ressemble à ce que je faisait jusqu'à présent... Pour l'instant, en attendant les fonctions je déclare une variable globale commençant pour le nom de la procédure suivi de _return Par exemple : - Code:
-
MaFonction(12) print "resultat ="+STR$(MaFonction_retour) END SUB MaFonction(x) IF VARIABLE("MaFonction_retour")=0 THEN DIM MaFonction_retour ... ... END_SUB Et si je veux passer à une procédure un nombre de paramètre variable (comme pour un print par exemple), je passe par une DLIST - Code:
-
DLIST 125 ... ITEM_ADD 125,Param1 ITEM_ADD 125,Param2 ... ITEM_ADD 125,ParamN MaProcedure(125) ... END SUB MaProcedure(N) DIM_LOCAL NbParam, i ' lecture du nb de paramètre NbParam = COUNT(N) ' Traitement des paramètres FOR i=1 TO NbParam .... NEXT i END_SUB | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 Jeu 13 Sep 2012 - 19:56 | |
| C'est une bonne solution Nardo et à la fin, on met à jour N en la vidant par exemple et en empilant les valeurs résultat | |
|
| |
Contenu sponsorisé
| Sujet: Re: Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 | |
| |
|
| |
| Version instantanée du 12 septembre 2012 PANORAMIC V0.9.24i2 | |
|