(Mode non explicite) - Erreur furtive de syntaxe
Re: (Mode non explicite) - Erreur furtive de syntaxe
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 !
Un homme doit être poli, mais il doit aussi être libre !
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: (Mode non explicite) - Erreur furtive de syntaxe
@ 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...
Par contre ce serait intéressant de pouvoir faire des opérations (multiplication, addition, division...) sur des structures identiques
Par exemple :
au lieu de :
Vous imaginez quand y'a encore plus de champs, la perte de temps?! Ce serait une fonctionnalité intéressante a ajouter, je trouve.

Par exemple :
Code : Tout sélectionner
Position.Pos
Facteur.Pos
Position = Position * Facteur
Code : Tout sélectionner
Position.Pos
Facteur.Pos
Position\x= Position\x * Facteur\x
Position\y = Position\y * Facteur\y
"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
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é
Re: (Mode non explicite) - Erreur furtive de syntaxe
Olivier>Mov ebx,[adresse variable a] ;a=
imul ebx, [xx] ; a*c
Mov [adresse variable a],ebx ;a=a*c
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
Version de PB : 6.00LTS - 64 bits
Re: (Mode non explicite) - Erreur furtive de syntaxe
Ca s'appelle de la surcharge d'opérateurs, ailleurs (ou en tous cas, ça y ressemble...)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...
Par contre ce serait intéressant de pouvoir faire des opérations (multiplication, addition, division...) sur des structures identiques
Par exemple :au lieu de :Code : Tout sélectionner
Position.Pos Facteur.Pos Position = Position * Facteur
Vous imaginez quand y'a encore plus de champs, la perte de temps?! Ce serait une fonctionnalité intéressante a ajouter, je trouve.Code : Tout sélectionner
Position.Pos Facteur.Pos Position\x= Position\x * Facteur\x Position\y = Position\y * Facteur\y

Re: (Mode non explicite) - Erreur furtive de syntaxe
bah moi, du moment que vous ne me retirez pas mon goto



- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: (Mode non explicite) - Erreur furtive de syntaxe
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...
Mais je l'utilise pas en PB, franchement...

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
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é
Re: (Mode non explicite) - Erreur furtive de syntaxe
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)
GOTO++
Extrait du « Manifeste du Vrai Programmeur » (pour les 'tit jeunes, cherchez sur le net)
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)

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.

Dernière modification par Marc56 le mar. 02/août/2016 14:19, modifié 1 fois.
Re: (Mode non explicite) - Erreur furtive de syntaxe
il manque :
"- Un VÉRITABLE pense Recursif !, et mange des Spaghettis "
"- Un VÉRITABLE pense Recursif !, et mange des Spaghettis "

- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: (Mode non explicite) - Erreur furtive de syntaxe
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".

et franchement le OnErrorGoto gagnerait à être remplacé par un "portage" des fonctions POO "Try... Catch...Throw...Finally".
Re: (Mode non explicite) - Erreur furtive de syntaxe
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
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

Re: (Mode non explicite) - Erreur furtive de syntaxe
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

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
moi j'aime bien laisser une part au bazar , du Chaos naît l'ordre

tain j'ai la dalle

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

Re: (Mode non explicite) - Erreur furtive de syntaxe
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.
Donc c'est forcément un code spaghetti, on ne sait pas faire autrement en langage machine.
Néanmoins, comme c'est rappelé plus haut, en assembleur tous les if/else sont des sauts conditionnels.

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
Version de PB : 6.00LTS - 64 bits
Re: (Mode non explicite) - Erreur furtive de syntaxe
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......)
alors que ceci n'est pas un code Spaghetti malgres la présence d'un Goto :
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é

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à ??
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
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
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é


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à ??

Re: (Mode non explicite) - Erreur furtive de syntaxe
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.
Re: (Mode non explicite) - Erreur furtive de syntaxe
+1TazNormand a écrit : et franchement le OnErrorGoto gagnerait à être remplacé par un "portage" des fonctions POO "Try... Catch...Throw...Finally".

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)
