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
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 14:36

» Ras la casquette...
par silverman Aujourd'hui à 14:28

» Jeu de l'oie stratégique
par jjn4 Hier à 20:46

» Suite aux dernières commandes
par Yannick Hier à 16:00

» Aide (imprimable) sur PANORAMIC avec exemples
par papydall Hier à 14:28

» Jeu de l'OIE électronique
par jjn4 Mer 22 Mar 2017 - 18:26

» Jeu de l'oie interplanétaire
par jean_debord Mar 21 Mar 2017 - 11:11

» Problème de création d'exécutable.
par Yannick Mar 21 Mar 2017 - 5:21

» Un bug avec USER_EVENT ?
par Klaus Lun 20 Mar 2017 - 17:41

» Bienvenue Cherrie merrie !
par Yannick Lun 20 Mar 2017 - 3:55

» Bienvenue à v.rousseau
par Yannick Dim 19 Mar 2017 - 16:26

» Panoramicien, es-tu là ?
par papydall Dim 19 Mar 2017 - 3:48

» Charger des icones sans fichiers...
par Laurent (Minibug) Sam 18 Mar 2017 - 21:52

» Compilateur FBPano
par papydall Jeu 16 Mar 2017 - 14:50

» Mystère avec la beauté fractale !
par papydall Jeu 16 Mar 2017 - 14:32

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 PROCÉDURE et SOUS-PROGRAMME

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité



MessageSujet: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 1:48

Bonsoir,

Je reprend ici la suite de la discussion sur les 2 dernières pages :
http://panoramic.free-boards.net/t4658p30-boite-a-outils-de-dessin#56492

Bon j'ai reporté la discution ici.
Préenbule:
Pourquoi je ne suis pas d'accord sur le fait qu'on ne doit utiliser que des subs dans un programme. Déja au départ je trouve la proposition très restrictive. Pourquoi une personne peut décider pour tout le monde qu'une instruction est obsolète, alors qu'elle fait le bonheur des autres? J'ai appris à programmer sur un CBM PET 2001, puis sur un ZX81, ensuite sur ORIC1. Dans le basic d'alors, les commandes étaient restrictives. On avait GOTO et GOSUB. Sur ORIC1 est apparu repeat je crois et UNTIL ou DO LOOP, je ne sais plus. Il n'y avait pas de LABEL. Les étiquettes étaient les N° de ligne. Pour facilité la programmation, on programmait généralement de 10 en 10. Cela permettait de rajouter du code entre les lignes, la commande AUTO je crois pour renuméroter celle-ci, je l'ai eu sur le CBM, après l'ajout d'une puce, qui apportait quelques commandes en plus.

Donc pour ma part, j'ai fait mon apprentissage de la programmation en faisant du code "spaghetti", comme en disait, avec de gotos ou gosub partout. Et j'ai vraiment appris à programmer comme cela, et j'arrivais à faire des programmes intéressant qui mon bien aidés.
Puis est arrivé ATARI 560 avec un basic que j'ai acheté: le GFA-BASIC, et là il n'y avait plus de lignes, mais des étiquettes, avec une méthode procédurale. Je me suis très bien adapté, mais avec l'expérience, le schéma que l'on se fait déjà en tête était acquit.

Bien, maintenant pensons aux personnes qui arrivent maintenant, et qui testent Panoramic. Déjà au départ il se trouvent confrontées aux objets, et à leur manipulations. S'ils viennent d'un vieux basic, car pour beaucoup c'est le cas, ils se trouvent un peu perdus. C'est vrai que s'ils s'inscrivent sur le forum, mais dès que l'un d'eux poste un programme de leur cru, après les félicitations, tout de suite, et à tout les coups, on leur fait  savoir, que leur programme pourrait être amélioré en employant des subs dans leur code, alors que l'assimilation n'est pas encore là. Il faut laissé au temps, le temps.

Maintenant, il y a Jack. Son but était de faire un basic simple, pour le programmeur du dimanche (ce sont ses termes). On lui a imposé des tas de choses, alors que ce n'était pas son but initial.

Bon maintenant, parlons des procédures.

C'est d'un grand confort, et à chaque fois que je peux m'en servir, je le fais. Cela permet de programmer avec des variables qui se détruisent. D'ailleurs j'ai pas envie de parler des points positifs des subs. Ceux qui interviennent ici, les connaisse, donc les utilise.

Les inconvénients:

Mais il faut aussi parler des inconvénients? Et oui, si personnes n'en parle, il en existe, mais y-a-t'ont pensé. Et maintenant que je pose la question, j'ai bien l'intention de regarder mes programmes de près, car effectivement je n'y avais pas pensé avant de faire ce post. Pour dire, que j'étais très près des procédures.

Les inconvénients des SUBs.
????? Pourquoi dire qu'il y a des inconvénients? Est-ce possible?
Et oui.

Ayant eu un problème sur un programme en cours, j'ai ajouter dans les lignes de mon programme une sorte de débogage:
Code:
s(number_current_line,a$,c$,v1,v2,valeur,flag)

et:
Code:
sub s(n,a$,c$,v1,v2,valeur,flag)
   item_add 20,str$(n)+": a$=>"+a$+"< c$=>"+c$+"< v1="+str$(v1)+" v2="+str$(v2)+" valeur="+str$(valeur)+" flag="+str$(flag)
end_sub
Cela s'est bien passé, j'ai trouvé deux erreurs: une ou j'avais DIM_LOCAL dans une condition, et dans une autre ligne une inversions dans une fonction INSTR de TRIM et UPPER$.

Effectivement je me suis servi d'une sub, mais j'avais peu de variables. Quant serait-il si au lieu 7 variables, j'en avais 20 ou 100. Ne pas oublié que dans une sub, on se sert de variables locales, mais aussi de variables globales. Et bien une sub ne va plus.
Dans ce cas, en mettant à 50 lignes, le même appel pour tester les variables, JE DOIS RESPECTER L'ORDRE DE POSITION DES PARAMÈTRES À PASSER, et dans ce type de programme, on ne peut savoir quelles sont celles qui sont à regarder. Il faut toutes les mettre, ou il faut le faire manuellement, et c'est pas concevable. On fait appel à un débogueur, il se débrouille tout seul.
Si j'ai les lignes suivantes:
                          item_add 20,"item$="+item$                    <--- là je passe le paramètre: item$
                          if numeric(item$) = 1 then nb = val(item$)    <--- ici je passe: item$, nb
                          nb = nb+ v1                                   <--- ici nb, v1

Car à partir de là m'est venu l'idée de refaire un débogueur et avec une procédure, ce n'est plus possible. Si on veut contrôler tout un programme, il faut y mettre toutes les variables de celui-ci. C'est le seul moyen de faire une méthode «auto» de débogueur.

On a une instruction qui fait cela très bien: c'est «GOSUB» car cette instruction a un très grand avantage: elle embarque avec elle, toutes les variables d'un programme, même celle d'une sub.

Voici un programme qui le vérifie:
Code:
' teste
label control
dim a1,a2,a3,t$ : t$=chr$(13)
hide 0
a1=100 : a2=120 :a3=130

teste()
END
==============================
sub teste()
   dim_local a1,a2
   a1=300
   gosub control
   message "retour à sub"+t$+"a1="+str$(a1)+t$+"a2="+str$(a2)+t$+"a3="+str$(a3)
   terminate
end_sub
------------
control:
   message "s/prg control"+t$+"a1="+str$(a1)+t$+"a2="+str$(a2)+t$+"a3="+str$(a3)
   a2=500
   a3=600
return

Et là ça devient facile. L'instruction gosub est un déport de la partie qui s'en sert, c'est pas seulement une instruction qui évite une répétition du même code. Si il y manque dans ce cas une variable temporaire, on la rajoute à la sub avant d'appeler GOSUB.

Ceci est un exemple très concret, pour dire que cette instruction il ne faut pas la négliger.

Mais ce n'est pas tout. Systématiquement j'emploie SUB pour coder. Mais en réfléchissant à ce texte, je me suis rendu compte que je faisais une erreur. Pourquoi?

Dans bien des cas, à partir d'une sub, j'en appelle à une autre, en mettant 2/3... paramètres.
Donc la sub appelée reçoit ceux-ci, puis les traite, Mais que faire? Il faut des variables de retour pour pouvoir récupérer celles-ci. Ensuite la sub en retour, reprend celle-ci pour mettre à jour ces variables. Donc on a:
1) passage de paramètres
2) récupération de ceux-ci
3) traitement
4) passage de paramètres soit à des variables globales, soit envoyé à une liste ou autre.
5) au retour, récupération des paramètres depuis les variables globales.

Alors qu'avec GOSUB:
1) aller au sous-programme
2) traitement
3) au retour, rien, les variables sont à jour.

Alors que diable, pourquoi faire compliqué lorsqu'on veut faire simple? C'est contre-productif!
Revenir en haut Aller en bas
papydall

avatar

Nombre de messages : 5256
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 5:25

Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 10:02

Du calme Papydall, il n'y a pas de quoi se fâcher.
Ceci n'est qu'un débat sur l'utilisation de Gosub, ça ne vaut pas la peine de déclencher "la troisième guerre mondiale"...

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Francis-mr



Nombre de messages : 155
Age : 64
Localisation : Ile de France
Date d'inscription : 26/11/2012

MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 10:21

Bonjour à tous.
Holala, on se calme. Je pense que toutes opinions sont bonnes tant que l'on respecte les autres.
Papydall, Cosmos on connaît votre esprit passionné à l'un et à l'autre et si vous avez un désaccord il n'y-a pas de quoi déclencher "la troisième guerre mondiale" comme dit Jean Claude.
Papydall, j'espère que ta décision n'est pas irrévocable car nous apprécions tous tes interventions dans ce forum et il deviendrait terne sans toi.
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://cfmr.e-monsite.com
Invité
Invité



MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 10:27

Bonjour,

C'est pas possible Papydall que tu agisses comme cela. Toi qui nous montres tous les jours ton humaniste, là je ne comprend pas. Tu m'as demandé de te donner une seule raison de montrer de l'utilité de gosub (je ne cherche les mots exactes que tu as mis - pas le temps). Je pense avoir fait la démonstration de cette utilité, et c'est le but de ce post, pour lequel je m'attendais à une attaque sur mes idées, et non cette réaction.

Tu crois que je t'attaquais, il n'en est rien. D'ailleurs j'ai été restrictif car je pensais aussi à l'orthographe, non pas à tes remarques que tu fais régulièrement, car moi-même j'en apprend, mais à ceux qui démonte les jeunes qui s'inscrivent sur le forum, et qui ont une orthographe bien particulière, et qui ne sont complètement responsable de ce fait. Ce n'est pas le fait de quelques jeunes, mais de toute une génération.

De part ta réaction, cela veut dire que je dois me résoudre au silence. Si à chaque fois j'essaye de faire une démonstration, j'ai des retours de ce genre, alors ses moi qui doit partir.

Ta place est sur ce forum. Je te donnes un ultimatum! Si tu n'interviens plus à cause de cette discussion, car presque tous les jours tu démontres de ton utilité, au contraire de moi, alors je demande à JACK de me désinscrire de ce forum. Tu es plus important que moi. Tes démonstrations, explications nous en apprend beaucoup. J'ai encore la main sur la discussion en haut. Donc je peux encore tout effacer si je pense que ça pose problème.

Maintenant la balle est dans ton camp. Si c'est adieu de ta part, alors à la fin de la semaine, ce sera aussi adieu de mon coté!

Bonjour à Jean Claude et Francis-mr que j'ai vu passer pendant ce script, bonjour à Papydall.
Revenir en haut Aller en bas
Jean Claude

avatar

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

MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 10:45

Vous avez votre place tous les deux !

Bon sang, même s'il y a des maladresses ou de mauvaises interprétations de part et d'autre, il n'y a pas de quoi nous priver de 2 intervenants que je qualifierai "d'indispensable".

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2059
Localisation : Vienne (86) - FRANCE
Date d'inscription : 10/02/2012

MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 10:54

Ben les gars ! Qu'est ce qui ce passe Question Exclamation

Encore un coup du virus zika ou bien ???

Allons allons, calmons nous messieurs.
Nous n'allons pas nous disputés pour un SUB ou un GOSUB. Wink

Cosmos et Papydall vous aller au coin et vous me recopierez 50 fois je ne dois pas me disputer avec mon voisin ! c'est compris ! Laughing Laughing Laughing

Sérieusement, les gars, c'est juste un forum de discussion, pas de quoi se prendre la tête !
C'est vrai que parfois les débats sont passionnés et passionnant d'ailleurs... drunken drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   Mar 23 Fév 2016 - 11:09

Je comprend vos remarques. Mais j'ai jamais l'impression de m'attaquer à Papydall. J'ai beaucoup d'estime pour lui que j'en ai pour moi-même. Si j'avais su que sa réaction fût celle-là, je n'aurai pas répondu à sa demande qui était de prouver de l'utilité de gosub. Je ne pense pas avoir répondu avec passion, mais seulement voulu montré ce qui me semblait évident.

Ma décision elle est faite pour que Papydall ne nous laisse pas tombé, et trouve les mots pour revenir vers nous. Attention, je n'attend pas d'excuse, si il s'est senti frustré ou autre, c'est moi qui m'excuse.

Si je dois partir, alors je le ferai. Mais peut-être aurai-je du envoyer un message privé. J'y ai pas pensé, et c'est trop tard.
Revenir en haut Aller en bas
Yannick

avatar

Nombre de messages : 7297
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 23 Fév 2016 - 15:21

He les gars, on se calme... Wink

Papydall, tu restes.
Avec qui je vais prendre des cours d' orthographe sinon ?...

Cosmos70 aussi.
Si tout le monde était d' accord avec tout le monde, on s' ennuierait.
Il n' y aurait plus de débat et le forum serait triste.

Puis, nous ne sommes déjà qu' une poignée ou deux faire vivre le forum alors...

Bref, sur le fait que la commande GOSUB ou même GOTO soit obsolète, ou à bannir pour la deuxième,
je ne suis pas d' accord. Evil or Very Mad

1/ elles existent. Donc pourquoi s' en priver du moment où elle ne gêne pas dans le développement du langage.
2/ elles sont nécessaires pour que nos vieux programmes restent compatibles.
3/ Même si personnellement je ne me sers plus beaucoup de ces commandes, certains nouveaux doivent en passer
par là dans leur apprentissage avant d' assimiler les SUB
4/ Pour GOTO, je la trouve pratique dans le cas d' un retour vers un label dans une boucle.
placer un appel à une SUB impliquerait de prendre soin de détruire tout ce qui a été créé dans cette SUB avant d' en sortir.
Parfois ce n' est pas judicieux car utilisé ailleurs.

Je n' ai pas d' exemple en tête mais en cherchant bien... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: PROCÉDURE et SOUS-PROGRAMME   

Revenir en haut Aller en bas
 
PROCÉDURE et SOUS-PROGRAMME
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Procédure à suivre avant de poster
» Procédure judiciaire vis à vis de mon forum
» les sous-programmes, les variables globales et locales
» [résolu]Session laguée sous Windows 7
» Procédure d'utilisation des sound dans TC ™ Gold 7.0 E1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Présentation et bavardage-
Sauter vers: