(Mode non explicite) - Erreur furtive de syntaxe

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Micoute »

Ne pas oublier que PureBasic, n'a de basique que son nom !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par JohnJohnsonSHERMAN »

@ Zorro : Ou plutot une alerte "Impossible de multiplier une structure par un type différent..." parceque franchement je n'en vois pas l'intérêt! On ne peut pas multiplier une structure par un entier par exemple, ca n'a aucun sens, c'est comme multiplier un chien par deux chats, c'est stupide...

:idea: Par contre ce serait intéressant de pouvoir faire des opérations (multiplication, addition, division...) sur des structures identiques
Par exemple :

Code : Tout sélectionner

Position.Pos
Facteur.Pos
Position = Position * Facteur
au lieu de :

Code : Tout sélectionner

Position.Pos
Facteur.Pos

Position\x= Position\x * Facteur\x
Position\y = Position\y * Facteur\y
Vous imaginez quand y'a encore plus de champs, la perte de temps?! Ce serait une fonctionnalité intéressante a ajouter, je trouve.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Fig »

Mov ebx,[adresse variable a] ;a=
imul ebx, [xx] ; a*c
Mov [adresse variable a],ebx ;a=a*c
Olivier>
Mais avant, on a chargé la variable 'a' dans ebx donc de toute façon le compilateur fait la gymnastique de chercher quelle variable va être destinataire avant de faire l'opération.

La syntaxe 'a=a*c' évite la confusion avec les index ayant le préfixe '*'.

Mais enfin, si on fait des opérations sur les index évidemment... Dans l'idéal il faudrait carrément changer le symbol '*', préfixe des index, par un autre en fait.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par djes »

JohnJohnsonSHERMAN a écrit :@ Zorro : Ou plutot une alerte "Impossible de multiplier une structure par un type différent..." parceque franchement je n'en vois pas l'intérêt! On ne peut pas multiplier une structure par un entier par exemple, ca n'a aucun sens, c'est comme multiplier un chien par deux chats, c'est stupide...

:idea: Par contre ce serait intéressant de pouvoir faire des opérations (multiplication, addition, division...) sur des structures identiques
Par exemple :

Code : Tout sélectionner

Position.Pos
Facteur.Pos
Position = Position * Facteur
au lieu de :

Code : Tout sélectionner

Position.Pos
Facteur.Pos

Position\x= Position\x * Facteur\x
Position\y = Position\y * Facteur\y
Vous imaginez quand y'a encore plus de champs, la perte de temps?! Ce serait une fonctionnalité intéressante a ajouter, je trouve.
Ca s'appelle de la surcharge d'opérateurs, ailleurs (ou en tous cas, ça y ressemble...) ;) Mais oui, ce ne serait pas mal en effet, assez moderne, si cela ne devient pas trop complexe ! Sinon, les débutants risquent d'être un peu déboussolés quand ils liront le code.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Zorro »

bah moi, du moment que vous ne me retirez pas mon goto :)
Image
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par JohnJohnsonSHERMAN »

J'ai rien contre le Goto moi... enfin c'est plus pour des raisons sentimentales qu'autre choses, c'était une des seules instructions disponibles quand j'ai découvert la programmation y'a quelques années sur les calculatrices casio programmables... :roll:
Mais je l'utilise pas en PB, franchement...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Marc56 »

C'est pourtant bien utile le GOTO, notamment pour quitter (presque) proprement
Chose que tout prog PB devait mettre
OnErrorGoto() :!:
Comme ça on sort en cas d'erreur fatale non-gérée sans avoir la boite Windows "le programme ne répond plus"

(désactivez le debuggeur)

Code : Tout sélectionner

EnableExplicit ; Yes! ever!

OnErrorGoto(?PfffCestFoutu)

PokeS(10, "Salut le Monde.") ; ça m..der ça :-)

End

PfffCestFoutu:
MessageRequester("AieAieAie! :-(", 
                 "C'est foutu, je préfère fermer ce binz, parce qu'il me dit:" + 
                 Chr(10) + Chr(10) + 
                 ErrorMessage(), 48)
GOTO++ 8)

Extrait du « Manifeste du Vrai Programmeur » (pour les 'tit jeunes, cherchez sur le net)
- Un VÉRITABLE ne craint pas d'utiliser les GOTOs.
- Un VÉRITABLE peut écrire une boucle DO de cinq pages sans se mélanger les pinceaux.
- Un VÉRITABLE préfère les IF arithmétiques, ça prend moins de place mémoire.
- Un VÉRITABLE est capable d'écrire du code auto-modifiant si cela fait gagner 20 nanosecondes.
- Un VÉRITABLE n'a pas besoin de commentaires, il préfère se fier au code.
:mrgreen:
Dernière modification par Marc56 le mar. 02/août/2016 14:19, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Zorro »

il manque :
"- Un VÉRITABLE pense Recursif !, et mange des Spaghettis " :)
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par TazNormand »

Le Goto, n'en déplaise à Zorro et Marc56, est un héritage de la programmation linéaire, pour faire du code "spaghetti", il n'y a rien de mieux que les GOTO/GOSUB :?

et franchement le OnErrorGoto gagnerait à être remplacé par un "portage" des fonctions POO "Try... Catch...Throw...Finally".
Image
Image
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par case »

c très bien comme c'est et pour la POO il y a des langages bien plus adaptés que le basic qui est je le rappelle un langage fait pour ne pas être trop compliqué...
le goto permet des branchements conditionnels qui dans certain cas peuvent êtres utiles
le goto est d'ailleurs toujours tres utilisé sous d'autre formes...

exemple JMP en assembleur

je rappelle que chaque instruction de pure basic est codée en assembleur et que donc tout programme fait des gotos qu'on le veuille ou pas...
après spaghetti ou pas c'est une autre histoire :)
ImageImage
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Zorro »

oui, il y a des maniacs, qui rangent les spaghettis en parallèle dans leur assiette

moi j'aime bien laisser une part au bazar , du Chaos naît l'ordre ;)

tain j'ai la dalle :)

Image


ps : a la base le " OnErrorGoto" etait un appel "en parallèle" a une procedure d'erreur
une interception d'une erreur pour la personnaliser , je crois meme qu'on a ça en PB non ?
pas grand chose a voir avec un Goto qui est un saut , mais pas sur interruption :)

.... en plus je bouffe des Spagghettes aujourd'hui :lol:
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Fig »

Pb a une programmation structurée donc dans la plupart des cas, le goto est à éviter.

Néanmoins, comme c'est rappelé plus haut, en assembleur tous les if/else sont des sauts conditionnels. :wink:
Donc c'est forcément un code spaghetti, on ne sait pas faire autrement en langage machine.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Zorro »

a l'origine (ça y est le vieux radote ) un code spaghetti n'est pas forcement la présence de Goto
mais plutot la façon dont on s'en sert ...

voici typiquement un code Spaghettis : (parce que suivre le chemin parcouru par le code, c'est comme suivre le chemin
d'un spaghetti dans l'assiette......)

Code : Tout sélectionner

10 input "votre nom",nom$
20 goto 50
30 print "bonjour ";nom$ 
40 goto 60
50 a=20:goto 30
60 end
alors que ceci n'est pas un code Spaghetti malgres la présence d'un Goto :

Code : Tout sélectionner

10 input "votre nom",nom$
20 print "bonjour ";nom$
30  a=20
40 goto 60
50 Rem cette ligne ne sera jamais parcouru par l'execution
60 end
d'une certaine façon , il m'est deja arriver de voir des codes Purebasic
avec l'esprit Spaghettis ,dans la façon de résoudre un probleme , un algo, Alors meme qu'il n'y avait aucun GOTO
l'esprit Spaghettis est : pourquoi faire simple alors qu'on peut faire compliqué :roll: :lol:


bref, le Goto est une bonne chose, et n'implique pas un code Spaghetti
mais n'a t'on pas dérivé du sujet là ?? :mrgreen:
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par djes »

Complètement d'accord avec Zorro. En objet aussi on peut faire du spaghetti, et même pire : c'est le jeu des poupées russes, sauf qu'à la fin la poupée fait 20 tonnes.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: (Mode non explicite) - Erreur furtive de syntaxe

Message par Marc56 »

TazNormand a écrit : et franchement le OnErrorGoto gagnerait à être remplacé par un "portage" des fonctions POO "Try... Catch...Throw...Finally".
+1 8)

Ce serait effectivement sympa de voir PB doté du système de gestion des exceptions façon Delphi.
C'est plus facile à gérer, car plus lisible (IMHO) que les "sauts" avec OnError au niveau codage.

C'est peut-être même plus facile à implémenter niveau compilateur ? (ça, je ne sais pas)

:wink:
Répondre