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
» Logiciel de planétarium.
Message d'erreur plus explicite Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Message d'erreur plus explicite Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Message d'erreur plus explicite Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Message d'erreur plus explicite Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Message d'erreur plus explicite Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Message d'erreur plus explicite Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Message d'erreur plus explicite Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Message d'erreur plus explicite Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Message d'erreur plus explicite Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Message d'erreur plus explicite Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Message d'erreur plus explicite Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Message d'erreur plus explicite Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Message d'erreur plus explicite Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Message d'erreur plus explicite Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Message d'erreur plus explicite Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-29%
Le deal à ne pas rater :
DYSON V8 Origin – Aspirateur balai sans fil
269.99 € 379.99 €
Voir le deal

 

 Message d'erreur plus explicite

Aller en bas 
4 participants
AuteurMessage
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyDim 6 Mai 2012 - 21:13

Je m’adresse ici principalement à Jack.
Voila un peu plus de 2 mois que je suis inscrit sur ce Forum. J’ai échangé des programmes, des idées et même des blagues avec une équipe que je trouve très sympathique et des gens qui n’hésitent pas à apporter toute l’aide et soutien qu’on demande. Je les remercie tous sans nommer aucun, de peur d’en oublier !
Mais durant cette période j’ai oublié de te remercier, toi qui nous as offert ce cadeau qu’est PANORAMIC. Ce n’est surtout pas par manque de respect, mais un simple oubli de ma part, oubli d’ailleurs inexcusable !
Je répare donc mon erreur et je te dis mille mercis pour tout ce que tu fais, certes pour ton plaisir avant tout, mais également pour nous qui en profitons tous !
Je profite de l’occasion, pour te demander s’il est possible de trouver dans une prochaine version de PANORAMIC la possibilité de définir, par le programmeur ses propres fonctions en leurs transférant des paramètres ; par exemple comme ceci :

SEC(x) = 1/cos(x)
PRINT SEC (3.14)

Cette demande a peut être été déjà faite et si je l’évoque ici c’est parce que je la trouve très pratique. Bien sûr, le dernier mot est à toi.
Autre remarque :
En ce qui concerne les erreurs du genre « More IF than END_IF », il serait souhaitable d’afficher la ligne incriminée, comme par exemple « More IF than END_IF at line xxx ». Car, lorsque le programme contient quelques dizaines de IF, ça devient pénible de cibler l’endroit de l’erreur.
Autre type d’erreur « ‘INF’ is not a valid floating point value », la même remarque s’y applique et l’affichage de la ligne concernée ajoute un confort à la mise au point des programmes.
C’est à vous de décider.
Toutes mes excuses si ces remarques ont été déjà signalées.
Une fois encore, merci Jack.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Invité
Invité




Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyDim 6 Mai 2012 - 22:57

Je suis bien d'accord avec toi sur bien des points, et je n'y reviendrais pas.
Il y a deux sortes d'erreurs: celles de Panoramic, pour lesquelles Jack peut intervenir, et de temps en temps, celles de Windows. Pour ces dernières, je ne pense pas que Jack y pourra quelque chose.

Pour les IF et END_IF, j'avais fait un programme pour retrouver les erreurs.
Seulement voilà, ce programme est fait pour un codage que j'utilise tout le temps.
Les erreurs comme Klaus, m'a montré la possibilité et que Panoramic ne détecte pas d'erreur, ce programme ne convient pas. Je veux parler ce ce type de programme:
(exemple de Klaus) avec cette ligne:
Code:
if i%>5 then end_if

Code:
label loop

dim i%, j%

i%=1

loop:
if i%<3
    print "i%=";i%
    i% = i% + 1
else
    i% = i% + 1
    if i%>5 then end_if
    print "coucou ";i%

end_if
if i%>8 then end
goto loop
Je ne code pas de cette façon. Je mets ici mon programme, mais je sais que JL35 en a fait un, et même Nardo

Spoiler:

J'ai fait aussi un autre programme, mais j'ai détecté un jour une erreur. Je l'avais corrigé, mais le jour que j'ai voulu le mettre sur le forum, le post était verrouillé, alors qu'il ne l'était pas la veille. Je pense qu'on a pas vu l'utilité du programme, donc je n'ai pas insisté.
https://panoramic.1fr1.net/t1244-mode-trace-pour-panoramic
Je ne veux pas insister daventage sur mes programmes.
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyLun 7 Mai 2012 - 19:58

Salut tout le monde !
Une fois de plus, avoir des messages d’erreurs plus explicites facilite grandement le développement des programmes.
Exécutez cette unique ligne de code et vous obteniez le message d’erreur suivant :
Code:

DIM i,,j
Access violation at address 00501F6B in module ‘PANORAMIN.EXE. Read of address FFFFFFFF

Bon, vous avez vite repéré l’erreur, bravo !
Mais imaginez le calvaire que j’ai vécu ce matin. J’ai fais un programme où il y a plusieurs lignes DIM. Chaque ligne contient plusieurs déclarations de variables et le programme comporte quelques centaines de lignes. Mon programme s’exécute d’une manière satisfaisante mais j’ai voulu apporter quelques modifications et une des variables déclarées dans une ligne DIM n’a plus de raison d’exister ; je l’ai donc effacée et par inattention je n’ai pas effacé la virgule qui va avec.
En exécutant de nouveau le programme j’ai reçu le message d’erreur ci-haut mentionné. J’ai revu ma copie de haut en bas mais je n’arrive pas à comprendre cette violation : ça frôlait le désespoir ( je suis contre toute violation de quelque nature que ce soit!). Une heure et deux cafés après, j’ai pu localiser le mal.

Morale de l’histoire : un message d’erreur plus explicite arrange bien les choses ; par exemple : « Syntax error in line xxx » ou bien « Variable name expected in line DIM » ou quelque chose d’approchant.


Je soulève ici un autre problème, un Bug, selon moi.
Code:

dim i
for i = 7 to 0
  print "Cette ligne ne devrait pas être exécutée"
next i
Selon ce que je sais comment une boucle FOR …NEXT s’exécute, la ligne PRINT ne devrait pas être exécutée car la valeur du compteur de boucle i est supérieur à la valeur de sortie. En effet, une boucle FOR….NEXT s’exécute de ZERO à N fois. Elle est du type WHILE.….END_WHILE (l’évaluation de la condition de sortie se fait au DEBUT). Or, elle se comporte comme REPEAT….UNTIL (l’évaluation de la condition de sortie se fait APRES la 1ere exécution ce qui peut amener à un comportement inattendu du programme !).

Par ailleurs, on calcule le nombre d’exécutions d’une boucle FOR…NEXT comme ceci : Valeur_finale_du_compteur – Valeur_initiale_du_compteur + 1

Exemple : FOR I = 7 TO 13, sera exécute exactement 13 – 7 + 1 = 7 fois
Par contre FOR I = 7 TO 0 ne devrait pas être exécuté du tout puisque 0 – 7 +1 est un nombre négatif.
C’est ma façon de voir et ce que j’ai étudié, mais je me trompe peut être.

A+
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyLun 7 Mai 2012 - 20:22

Salut papydall,
Oui, ça surprend, mais une boucle For Next est toujours exécutée au moins une fois, je crois que c'était pareil en basic. C'est logique après tout, il fait un tour, il incrémente, puis il regarde s'il a fini ou non, mais je ne crois pas qu'il analyse d'abord les bornes (qui ici sont une erreur, ou alors il manque le step -1).
Il suffit de le savoir, c'est comme ça.

Pour le Dim, effectivement ce genre d'erreur est très difficile à trouver, alors qu'ici c'est une erreur de syntaxe caractérisée.
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyLun 7 Mai 2012 - 22:25

Salut à tous.
@JL35
NON, Une boucle FOR…NEXT n’est pas toujours exécutée au mois une fois.
Dans tous les langages que j’ai utilisé(les différents BASIC, le Turbo PASCAL, etc..), lorsque la valeur du début du compteur de boucle est supérieure à celle de la fin et qu’il n’y a pas de STEP négatif, la boucle est soit purement et simplement ignorée soit dans des cas rares une erreur est signalée. Mais dans tous les cas, elle n’est pas exécutée.
Le principe d’exécution d’une boucle FOR…NEXT est de vérifier la condition de sortie de la boucle AVANT son exécution exactement comme le ferai une boucle WHILE….END_WHILE contrairement à la boucle REPEAT…UNTIL qui s’exécute au mois une fois.
lol! lol!


Dernière édition par papydall le Mar 8 Mai 2012 - 2:59, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Invité
Invité




Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyLun 7 Mai 2012 - 23:02

revoir le sujet:
https://panoramic.1fr1.net/t708-for-to-next
Je ne ferais plus de commentaire là dessus
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 1:17

Comme disait l’autre : Google est ton ami, j’ai cherché la boucle FOR sur Google pour différents langages (VBA, C, C++, TP, DELPHI…).
Il est clairement dit que la boucle FOR…NEXT est en fait une boucle WHILE : la condition de sortie ou non de la boucle est testée AVANT l’exécution des instructions et non après.
C’est ce que j’ai toujours appris et utilisé et je n’avais aucun doute la dessus ; mais comme certains ont des points de vues différents, je ne peux que m’incliner sans être tout à fait convaincu !


PS :
J’ai exécuté le code suivant en d’autres BASIC et en Turbo Pascal et dans tous les cas la boucle a été ignorée, sauf en PANORAMIC où elle s’est exécutée une fois.

Code:

dim i
for i = 7 to 1
  print "hello"
next i
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 9:11

C'est vrai qu'à mes débuts avec Panoramic, j'ai souvent été dérouté par ce fonctionnement de for/next. Maintenant je me suis habitué. Sur le fond, Papydall à raison et à chaque fois qu'on aura un nouveau programmeur issu du basic, le sujet pourrais être relancé.

JL35 à dit:
Citation :
Salut papydall,
Oui, ça surprend, mais une boucle For Next est toujours exécutée au moins une fois, je crois que c'était pareil en basic.

Pas d'accord, je viens de tester "for n=7 to 1: print n : next n" en QB. L'instruction print n'est pas exécutée une seule fois.

T'as pas gardé ton éditeur QB sous le coude JL35.....?.

Merci à Cosmos de nous avoir retrouvé la discussion...

A+
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 15:02

Salut à tous !
Si je reviens sur la question de FOR…NEXT, c’est parce que dans tous les documents que j’ai consulté et étudié jadis concernant l’algorithmique, la méthodologie de programmation et les structures itératives, il est indiqué qu’il ya des structures répétitives du type 0 à n fois et d’autres de 1 à n fois.

La 1ere forme (0 à n fois) est utilisée lorsque la condition de sortie de la boucle est connu d’avance : cas de WHILE…END_WHILE et de FOR…NEXT.
La 2eme forme (1 à n fois) est utilisée lorsque la condition de sortie de la boucle n’est connue qu’après que la boucle ait été exécuté une première fois : cas de REPEAT…UNTIL.

Il est plus prudent de préférer la boucle WHILE à la boucle REPEAT.

Dans la boucle FOR, tous les ingrédients sont connus dès le départ : la variable de contrôle, la valeur de début, la valeur de fin et par conséquent la condition de sortie. Je ne vois pas pourquoi le système irait-il à la fin de la boucle (NEXT) pour évaluer la condition de sortie ensuite puisqu’il peut le faire dès le départ !

En vérité, dans la plupart des interpréteurs et compilateurs, le système, en entrant dans une boucle FOR…NEXT, affecte la valeur de début à la variable de contrôle, regarde si cette valeur n’est pas déjà supérieure à celle de fin et suivant le résultat de ce contrôle, décide ou non d’effectuer la boucle. Si la boucle est exécuté, il y aura (à l'instruction NEXT) incrémentation (ou décrémentation suivant le STEP) et le système retourne au début de la boucle, évalue la condition de sortie etc.

Je viens de tester le programme suivant, en l’adaptant à chaque langage

DIM i
FOR i = 1 to 0
PRINT « hello »
NEXT i

Le résultat est le suivant:

BASIC256 -------------> Erreur à la ligne 2
FREE PASCAL ---------> La boucle est ignorée
FREE BASIC-----------> La boucle est ignorée
QB64-------------------> La boucle est ignorée
TURBO PASCAL 7-----> La boucle est ignorée
PANORAMIC-----------> La boucle est exécutée une fois

A bon entendeur, salut !

lol! lol! lol!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 20:11

Papydall à dit:
Citation :
Dans la boucle FOR, tous les ingrédients sont connus dès le départ : la variable de contrôle, la valeur de début, la valeur de fin et par conséquent la condition de sortie. Je ne vois pas pourquoi le système irait-il à la fin de la boucle (NEXT) pour évaluer la condition de sortie ensuite puisqu’il peut le faire dès le départ !

En vérité, dans la plupart des interpréteurs et compilateurs, le système, en entrant dans une boucle FOR…NEXT, affecte la valeur de début à la variable de contrôle, regarde si cette valeur n’est pas déjà supérieure à celle de fin et suivant le résultat de ce contrôle, décide ou non d’effectuer la boucle.

C'est très clair et cohérent...

A+
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 22:25

Merci Jean Claude.
Voila au mois un qui me soutient ! Wink
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 23:27

En effet, la logique voudrait qu'il y est 0 boucle d'effectuée.
A priori, d'après tes tests, ça semble également être la norme officieuse à défaut d'avoir une norme officielle Wink Beau travail de démonstration, on sent l'esprit scientifique poindre ..
Revenir en haut Aller en bas
papydall

papydall


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

Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite EmptyMar 8 Mai 2012 - 23:38

Merci jicehel.

+1 Very Happy

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





Message d'erreur plus explicite Empty
MessageSujet: Re: Message d'erreur plus explicite   Message d'erreur plus explicite Empty

Revenir en haut Aller en bas
 
Message d'erreur plus explicite
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Message
» Message
» Zéro message
» Message 'passant'
» Message Autorefermable

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: