@++
If nombre de commande
Re: If nombre de commande
Et bin dit donc ça en fait des If et Endif tout ça
@++
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: If nombre de commande
Hé les p'tits loups !
Il doit bien y avoir un moyen de diminuer tout ça : la logique combinatoire (algèbre de Boole)
(une petite introduction : http://www.commentcamarche.net/contents ... intro.php3 ; http://fr.wikipedia.org/wiki/Table_de_Karnaugh).
Qu'en pensent les électroniciens ?
Hasta la vista !
Il doit bien y avoir un moyen de diminuer tout ça : la logique combinatoire (algèbre de Boole)
(une petite introduction : http://www.commentcamarche.net/contents ... intro.php3 ; http://fr.wikipedia.org/wiki/Table_de_Karnaugh).
Qu'en pensent les électroniciens ?
Hasta la vista !
Elevé au MSX !
Re: If nombre de commande
@Huitbit
Je pense que les tableaux de Karnaugh sont une bonne illustration logique. Seul souci, c'est que ça se travaille en code gray. Résultat, c'est une norme de plus à apprendre pour Beauregard (A moins qu'il la connaisse et là, paf dans le mil).
@Dobro
Je me demande si c'est ce que tu lis qui te désole ou bien, si ce n'est pas plutôt l'abruti qui a écrit ça, t'ayant écrit en privé un message d'au revoir sur un coup de tête il y a quelques semaines alors que t'y était personnellement pour rien! Tu m'en vois désolé... ça fait partie des couilles absurdes dans le pâté...
Pour le côté technique de la chose, je n'ai fait que mettre en pratique quelque chose à partir des données que j'ai lu ici-même. Et d'ailleurs Papipp a, me semble-t-il admirablement confirmé le calcul (à ce propos, ce n'est pas la première fois qu'il est en train d'assurer). Par l'absurde, je réponds par l'absurde tout simplement.
Maintenant, si tu as moultes "If" qui s'enchaînent à n'en plus finir, voici une solution:
Bref, ça ne mange pas de pain...
Je pense que les tableaux de Karnaugh sont une bonne illustration logique. Seul souci, c'est que ça se travaille en code gray. Résultat, c'est une norme de plus à apprendre pour Beauregard (A moins qu'il la connaisse et là, paf dans le mil).
@Dobro
Je me demande si c'est ce que tu lis qui te désole ou bien, si ce n'est pas plutôt l'abruti qui a écrit ça, t'ayant écrit en privé un message d'au revoir sur un coup de tête il y a quelques semaines alors que t'y était personnellement pour rien! Tu m'en vois désolé... ça fait partie des couilles absurdes dans le pâté...
Pour le côté technique de la chose, je n'ai fait que mettre en pratique quelque chose à partir des données que j'ai lu ici-même. Et d'ailleurs Papipp a, me semble-t-il admirablement confirmé le calcul (à ce propos, ce n'est pas la première fois qu'il est en train d'assurer). Par l'absurde, je réponds par l'absurde tout simplement.
Maintenant, si tu as moultes "If" qui s'enchaînent à n'en plus finir, voici une solution:
Code : Tout sélectionner
VariableTemp = #False
If Condition
If Condition
If Condition
Etc...
VariableTemp = #True
Etc...
EndIf
EndIf
EndIf
If VariableTemp
VariableTemp = #False
If Condition
If Condition
Etc...
VariableTemp = #True
Etc...
EndIf
EndIf
EndIf
If VariableTemp
; Ensemble des conditions vraies
EndIfRe: If nombre de commande
ho oui des soluces, ils y en a
heureusement
mais la simple idée de savoir qu'on est limité par le nombre de IF, moi ça me stress
avant que Fred ne le dise, je dormais mieux
mais la simple idée de savoir qu'on est limité par le nombre de IF, moi ça me stress
avant que Fred ne le dise, je dormais mieux
Re: If nombre de commande
Aussi stressant qu'un jour la Terre sera entièrement vaporisé par notre Soleil devenu une Bossa Nova: terrible, mais purement théorique...
Au passage, pour les gros chiffres, une technique simple et approximative. ( /!\ Peut-être que je me répète...)
Partant du principe que 2^10 = 1024 ~= 1000 ~= 10^3, on peut en déduire que
2^n ~= 10^Int(3n / 10)
Ex : 2^50 ~= 10^Int(3*50 / 10) ~= 10^15
Donc, littéralement, 2 puissance 50 est environ égal à 1 millions de milliards.
Au passage, pour les gros chiffres, une technique simple et approximative. ( /!\ Peut-être que je me répète...)
Partant du principe que 2^10 = 1024 ~= 1000 ~= 10^3, on peut en déduire que
2^n ~= 10^Int(3n / 10)
Ex : 2^50 ~= 10^Int(3*50 / 10) ~= 10^15
Donc, littéralement, 2 puissance 50 est environ égal à 1 millions de milliards.
Re: If nombre de commande
Le nombre d'imbrication limite n'est pas de 128, j'ai fait le test avec le code suivant :
De 1 à 100 imbrications j'obtiens le message normal attendu du débogueur (0 <= max <= 99).
A partir de 101 imbrications (max=100) je n'obtiens plus le message du débogueur, le programme est donc bogué.
A partir de 109 imbrications (max=108) j'obtiens une erreur du compilateur qui ne répond plus du tout.
La limite est donc de 100.
Code : Tout sélectionner
max=100
CreateFile(0,"imb.pb")
WriteStringN(0,"max="+Str(max))
For i=0 To max
WriteStringN(0,"If 1")
Next i
WriteStringN(0,"Debug max")
For i=0 To max
WriteStringN(0,"EndIf")
Next iA partir de 101 imbrications (max=100) je n'obtiens plus le message du débogueur, le programme est donc bogué.
A partir de 109 imbrications (max=108) j'obtiens une erreur du compilateur qui ne répond plus du tout.
La limite est donc de 100.
Re: If nombre de commande
mille millions de milliards de milliards de mille...
Re: If nombre de commande
(Wikipédia)
, il suffit de faire des tableaux de vérité qui répondent aux attentes du programme.
Je n'ai jamais utilisé Karnaugh (si un jour j'en ai besoin, je pense que je m'en servirai) mais juste avec l'algèbre de Boole (qui ne demande pas de gros efforts
), on peut réduire nettement le nombre de tests !
Hasta la vista !
Ca vaut quand même le coup non ? Surtout qu'il existe des logiciels qui font la simplification automatiquement, ce n'est peut être pas la peine de mettre les mains dans le cambouisUtilisation des tables de Karnaugh
Les tables/tableaux de Karnaugh sont surtout utilisé(e)s en électronique. En effet, la simplification de l'expression algébrique booléenne permet d'économiser des opérateurs logiques (portes logiques) et donc des circuits. Elle engendre aussi une économie de temps de conception et de fonds, tout en augmentant la fiabilité de l'ensemble.
En programmation, l'utilisation des tables de Karnaugh permet de réduire les séquences de conditions de test complexes en les regroupant en des conditions non intuitives au premier abord, mais qui réduisent la complexité effective du code (volume du source), ainsi que son temps d'exécution en réduisant le nombre des évaluations nécessaires.
Je n'ai jamais utilisé Karnaugh (si un jour j'en ai besoin, je pense que je m'en servirai) mais juste avec l'algèbre de Boole (qui ne demande pas de gros efforts
Hasta la vista !
Elevé au MSX !
Re: If nombre de commande
<MODE sarcasme ON>
Vous êtes tous des idiots
. Ca fait des heures que ce pauvre Beauregard essaye de vous dire que son problème n'est pas l'imbrication de tests de conditions, mais le nombre de ceux-ci dans un code. Autrement dit, pas des
mais de simples
<MODE sarcasme OFF>
Vous êtes tous des idiots
Code : Tout sélectionner
IF test1 THEN
IF test2 THEN
(...)
ENDIF
ENDIF
Code : Tout sélectionner
IF test1 THEN
ENDIF
IF test2 THEN
ENDIFRe: If nombre de commande
ha ?djes a écrit :<MODE sarcasme ON>
Vous êtes tous des idiots. Ca fait des heures que ce pauvre Beauregard essaye de vous dire que son problème n'est pas l'imbrication de tests de conditions, mais le nombre de ceux-ci dans un code. Autrement dit, pas des
mais de simplesCode : Tout sélectionner
IF test1 THEN IF test2 THEN (...) ENDIF ENDIF<MODE sarcasme OFF>Code : Tout sélectionner
IF test1 THEN ENDIF IF test2 THEN ENDIF
et pourquoi crois tu qu'on ne le sait pas ?
on a lu ce qu'il a ecrit , mais rien n'empeche de rebondir sur autre chose , d'autan
que Fred lui a répondu !
que seul la limite est pour les if imbriqués , nous on le sait parceque nous on a tout lu
alors que toi tu tire des conclusion a la hate, sans avoir compris qu'on ne c'est pas arreté pour autant, dans la discussion soulevé, on l'a meme fait évoluer
je poserai alors une question
c'est qui l'idiot ?
Re: If nombre de commande
C'est moi...........Dobro a écrit :ha ?djes a écrit :<MODE sarcasme ON>
Vous êtes tous des idiots. Ca fait des heures que ce pauvre Beauregard essaye de vous dire que son problème n'est pas l'imbrication de tests de conditions, mais le nombre de ceux-ci dans un code. Autrement dit, pas des
mais de simplesCode : Tout sélectionner
IF test1 THEN IF test2 THEN (...) ENDIF ENDIF<MODE sarcasme OFF>Code : Tout sélectionner
IF test1 THEN ENDIF IF test2 THEN ENDIF
et pourquoi crois tu qu'on ne le sait pas ?![]()
on a lu ce qu'il a ecrit , mais rien n'empeche de rebondir sur autre chose , d'autan
que Fred lui a répondu !
que seul la limite est pour les if imbriqués , nous on le sait parceque nous on a tout lu
alors que toi tu tire des conclusion a la hate, sans avoir compris qu'on ne c'est pas arreté pour autant, dans la discussion soulevé, on l'a meme fait évoluer
je poserai alors une question
c'est qui l'idiot ?
-
beauregard
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re: If nombre de commande
n'est stupide que la stupidité, hum.
Mais comme dis plus haut, le problème que j'ai découvert avec pb concerne le nombre de conditions, et non l'imbrication... Fred va assurément se pencher la dessus. Mais je comprend l'intérêt suscité par l'imbrication, un sujet intéressant, donc cela ne me dérange pas qu'il soit évoqué ici.
Un exemple, avec l'animation du vaisseau de l'intro du jeu Vers l'infini(16 images sur 4 rangées) :
4 conditions toute simple donc...
En sachant que pour un jeu les images n'ont pas toutes la même taille, ni le même nombre d'étape d'animation, je ne vois pas comment ce brave Karnaugh pourra m'aider, hum
Mais comme dis plus haut, le problème que j'ai découvert avec pb concerne le nombre de conditions, et non l'imbrication... Fred va assurément se pencher la dessus. Mais je comprend l'intérêt suscité par l'imbrication, un sujet intéressant, donc cela ne me dérange pas qu'il soit évoqué ici.
je partage ce stress. J'ai mis quand même du temps à cerner le problème. Je pensais dans un premier temps que le problème venait du côté du nombre de commandes en général, puis du nombre de caractère, je me suis même méfié de clipsprite...Dobro a écrit :mais la simple idée de savoir qu'on est limité par le nombre de IF, moi ça me stress
Salut Huitbit, n'hésite pas à laissé sur ce forum une photo du paradis, ici le ciel est de nouveau gris. Toute la difficulté avec une théorie, c'est la mise en pratique.Je n'ai jamais utilisé Karnaugh (si un jour j'en ai besoin, je pense que je m'en servirai) mais juste avec l'algèbre de Boole (qui ne demande pas de gros efforts), on peut réduire nettement le nombre de tests !
Un exemple, avec l'animation du vaisseau de l'intro du jeu Vers l'infini(16 images sur 4 rangées) :
Code : Tout sélectionner
If ishipintro<5:ClipSprite(#shipb, ishipintro*64, 64, 64, 48):EndIf
If ishipintro>4 And ishipintro<10:ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48):EndIf
If ishipintro>9 And ishipintro<15:ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48):EndIf
If ishipintro=15:ClipSprite(#shipb, 0, 208, 64, 48):EndIf
DisplayTransparentSprite( #shipb , 400-32, 410) En sachant que pour un jeu les images n'ont pas toutes la même taille, ni le même nombre d'étape d'animation, je ne vois pas comment ce brave Karnaugh pourra m'aider, hum
Re: If nombre de commande
en fait ce qui est interressant , serai de savoir pourquoi tu te pose la question du nombre de if !
je dis ça parce que par exemple, avec Japbe j'avais de gros probleme de listing et de rafraichissement,
alors que j'atteignais les 6000 lignes de code....
je veux dire que tu as peut etre un symptome qui t'amene a penser que le nombre de IF importes
alors qu'il s'agit d'un bête problème de buffer dans l'editeur......
je dis ça parce que par exemple, avec Japbe j'avais de gros probleme de listing et de rafraichissement,
alors que j'atteignais les 6000 lignes de code....
je veux dire que tu as peut etre un symptome qui t'amene a penser que le nombre de IF importes
alors qu'il s'agit d'un bête problème de buffer dans l'editeur......
Re: If nombre de commande
ben tu peux l'écrire de deux façons différentes :beauregard a écrit :Un exemple, avec l'animation du vaisseau de l'intro du jeu Vers l'infini(16 images sur 4 rangées) :4 conditions toute simple donc...Code : Tout sélectionner
If ishipintro<5:ClipSprite(#shipb, ishipintro*64, 64, 64, 48):EndIf If ishipintro>4 And ishipintro<10:ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48):EndIf If ishipintro>9 And ishipintro<15:ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48):EndIf If ishipintro=15:ClipSprite(#shipb, 0, 208, 64, 48):EndIf DisplayTransparentSprite( #shipb , 400-32, 410)
En sachant que pour un jeu les images n'ont pas toutes la même taille, ni le même nombre d'étape d'animation, je ne vois pas comment ce brave Karnaugh pourra m'aider, hum
Code : Tout sélectionner
If ishipintro<5
ClipSprite(#shipb, ishipintro*64, 64, 64, 48)
ElseIf ishipintro>4 And ishipintro<10
ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48)
ElseIf ishipintro>9 And ishipintro<15
ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48)
ElseIf ishipintro=15
ClipSprite(#shipb, 0, 208, 64, 48)
EndIf
Select ishipintro
Case 0 To 4
ClipSprite(#shipb, ishipintro*64, 64, 64, 48)
Case 5 To 9
ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48)
Case 10 To 14
ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48)
Case 15
ClipSprite(#shipb, 0, 208, 64, 48)
EndSelecthttp://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: If nombre de commande
D'accord avec Comtois, ton code serait beaucoup plus clean avec des "select case" ; et puis cette histoire de clipsprite peut se data-ifier ; là c'est un boulot de fou! Tu n'as pas fait un petit éditeur pour sélectionner les images? Tu pourrais ainsi créer un fichier de données de découpes...
Pour le fun, je me suis amusé à faire un source bourré de "IF"; j'ai atteint ma limite mémoire de compilation à environ 400000 lignes. Donc pas de limitation à cause des IF, mais à cause de l'assembleur.
Pour le fun, je me suis amusé à faire un source bourré de "IF"; j'ai atteint ma limite mémoire de compilation à environ 400000 lignes. Donc pas de limitation à cause des IF, mais à cause de l'assembleur.