60

pencil
(Bon après moi j'aurais mis des espaces après les points virgules et autour des signes = dans les for, mais bon c'est pour faire chier tongue)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

61

Pareil, je supporte pas ces symboles accolés grin
Mon clang-format me donne ça : int returnMoves = numlegalfullmoves; if (!numlegalfullmoves) { if ((!numlegaldie1moves) || (abs (die2) > abs (die1))) { for (unsigned short i = 0; i < numlegaldie2moves; i++) { legalmoves[i][1] = legaldie2moves[i]; legalmoves[i][3] = legalmoves[i][2] = legalmoves[i][0] = -128; } returnMoves = numlegaldie2moves; } if (!numlegaldie2moves) { for (unsigned short i = 0; i < numlegaldie1moves; i++) { legalmoves[i][0] = legaldie1moves[i]; legalmoves[i][3] = legalmoves[i][2] = legalmoves[i][1] = -128; } returnMoves = numlegaldie1moves; } } return returnMoves;

(et je dirais que pour le code de Godzil, l'espace à l'intérieur des parenthèses successives font penser à Astyle)
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

62

Non non c'est moi j'ai oublie de le faire


Kevin en tout cas tu as gagne l'award du code le plus moche que meme l'IOCCC n'en voudrais pas ! (et pas que moche parceque mal indente)BOOL newFlagThatICreated; if (((newFlagThatICreated = CURRENT_VIEW) && (CURRENT_VIEW->hasFocus())) || (index >= 6)) { switch (index) { case 0: editUndo(); break; case 1: editRedo(); break; case 2: editCut(); break; case 3: editCopy(); break; case 4: editPaste(); break; case 15: projectCompile(); break; case 16: projectMake(); break; case 5: // F1 context help { int line,col,i; CURRENT_VIEW->cursorPosition().position(line, col); QString textLine=CURRENT_VIEW->document()->line(line); QString wordUnderCursor; for (i = col - 1 ; i >= 0 ; i--) { QChar c=textLine[i]; if ( ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || ((c >= '0') && (c <= '9')) || (c == '_') || (c == '$') || (c == '#') ) { wordUnderCursor.prepend(c); } } int len=textLine.length(); for (i=col;i<len;i++) { QChar c=textLine[i]; if ( ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || ((c >= '0') && (c <= '9')) || (c == '_') || (c == '$') || (c == '#') ) { wordUnderCursor.append(c); } } // always open at least the index force_qt_assistant_page(1); assistant->openAssistant(); if (wordUnderCursor.isEmpty()) { return; } QString docFile = lookup_doc_keyword(wordUnderCursor); if (docFile.isEmpty()) { return; } // wait for Qt Assistant to actually open while (!assistant->isOpen()) { QCoreApplication::processEvents(QEventLoop::ExcludeUserInput,1000); } assistant->showPage(QString(tigcc_base) + QString("/doc/html/") + docFile); break; } case 6: case 7: if (newFlagThatICreated) { // keyReturn is not in any interface, but it's a public slot... CURRENT_VIEW->qt_metacall(QMetaObject::InvokeMetaMethod, CURRENT_VIEW->metaObject()->indexOfMethod("keyReturn()"), NULL); current_view_newLineHook(); } else { QKeyEvent *keyEvent=new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, '\n', 0, "\n"); QApplication::postEvent(focusWidget(), keyEvent); } break; case 8: if (newFlagThatICreated) { new TemplatePopup(CURRENT_VIEW); /* Joli, rien a foutre de la gestion de la memoire a ce que je vois ! */ } break; case 9: case 10: if ( newFlagThatICreated && IS_FILE(currentListItem) && (CURRENT_VIEW == static_cast<ListViewFile *>(currentListItem)->kateView) ) { QString fileText=CURRENT_VIEW->document()->text(); CATEGORY_OF(category, currentListItem); // Completion only operates on C files. if ( (category ==cFilesListItem) || (category == qllFilesListItem) || ((category == hFilesListItem) && !fileText.isEmpty() && (fileText[0] != '|') && (fileText[0] != ';')) ) { // Disable newLineHook. shortcuts[6]->setEnabled(FALSE); shortcuts[7]->setEnabled(FALSE); new CompletionPopup(CURRENT_VIEW, pathInProject(currentListItem), this, this); /* Toujours une belle gestion de la memoire... */ } } break; case 11: // next file case 12: { Q3ListViewItem *item=currentListItem; if (!item) { item=rootListItem; } Q3ListViewItem *origItem=item; do { item=item->itemBelow(); if (!item) { item=rootListItem } if (item == origItem) { return; // no suitable items to select } } while ((item == rootListItem) || IS_CATEGORY(item)); fileTreeClicked(item); if (CURRENT_VIEW) CURRENT_VIEW->setFocus(); { break; } } case 13: // switch transfer target case 14: { preferences.linkTarget = (preferences.linkTarget == LT_TIEMU) ? LT_REALCALC : LT_TIEMU; savePreferences(); // Apply the preferences to the debug menu. debugPauseAction->setEnabled(!compiling && (preferences.linkTarget == LT_TIEMU)); debugResetAction->setEnabled(!compiling && (preferences.linkTarget == LT_TIEMU)); bool runnable = (!settings.archive) && (!settings.flash_os) && (preferences.linkTarget != LT_NONE); menuBar()->setItemVisible(5, runnable); //debugMenu debugRunAction->setVisible(runnable); debugPauseAction->setVisible(runnable); break; } default: break; } }


Correction du code de ./59:
int returnMoves = numlegalfullmoves; unsigned short i; if (!numlegalfullmoves) { if ( (!numlegaldie1moves) || (abs(die2) > abs(die1)) ) { for (i = 0 ; i < numlegaldie2moves ; i++) { legalmoves[i][1] = legaldie2moves[i]; legalmoves[i][3] = legalmoves[i][2] = legalmoves[i][0] = -128; } returnMoves = numlegaldie2moves; } if (!numlegaldie2moves) { for (i = 0 ; i < numlegaldie1moves ; i++) { legalmoves[i][0] = legaldie1moves[i]; legalmoves[i][3] = legalmoves[i][2] = legalmoves[i][1] = -128; } returnMoves = numlegaldie1moves; } } return returnMoves; }

Folco: sauf que moi c'est du fait main embarrassed
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

63

Godzil, je crois que tu t'es un peu foiré sur les parenthèses autour du = tout en haut grin
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

64

GoldenCrystal (./63) :
Godzil, je crois que tu t'es un peu foiré sur les parenthèses autour du = tout en haut grin

Non non si ca ne correspond pas au code d'origine c'est juste qu'il est tres mal foutut embarrassed
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

65

C'est moi qui ai fait la modif, le code original il n'a pas d'assignement dedans tongue
(Et j'ai quand même vérifié la priorité des opérateurs en C au cas où je me serais foiré grin)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

66

Bref, je crois qu'on peut conclure que le code de Kevin n'est pas un exemple à suivre en matière de propreté, mais ça on le savait déjà hehe
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

67

On peut pas lui en vouloir, c'est classique des gens qui codent en solo. Le fait d'arriver sur des projets d'entreprise t'impose la rigueur nécessaire pour faire du code propre alors que quand tu codes dans ton coin, si ta variable s'appelle toto1, on s'en fout smile
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

68

Godzil (./55) :
Tellement plus propre...

Transformation fausse, tu n'as pas converti correctement le premier cas (là où xml_parse_error: était dans mon code), tu leakes de la mémoire. (Cela dit, c'est trivial de corriger ton erreur.)
GoldenCrystal (./56) :
Ah tiens, t'as réussi à rendre le code agréable à lire… Marrant smile

Il a juste activé la coloration syntaxique. gni
Godzil (./59) :
Tellement plus propre...

sick, un seul return, et une variable valeur de retour qui traîne comme en BASIC. sick
Folco (./61) :
Pareil, je supporte pas ces symboles accolés grin

C'est parce que ton colorateur syntaxique (comme celui de yN, d'ailleurs) sux (n'est pas fichu colorer les symboles sick).
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

69

Mais si, mon colorateur sait faire. Question lisibilité, je demande à mon formateur de mettre des espaces, c'est beaucoup plus joli. smile
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

70

Kevin Kofler (./68) :
sick, un seul return, et une variable valeur de retour qui traîne comme en BASIC. sick

Mais quel est le probleme ? Perso je prefere avoir un seul return, je trouve ca plus simple a lire, et ca fait quoi la variable de retour ?

71

( /me regarde Ximoon sortir son pop-corn )
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

72

Ce n'est pas parce que le C et C++ permettent une assez grande liberté syntaxique (si on veut encore plus, se tourner vers Perl ^^) qu'il faut faire toutes les bêtises que ladite liberté syntaxique permet...

Les if(), for() et autres structures de contrôle sans accolades n'auraient jamais dû être autorisées. J'ai déjà rencontré du code de test qui ne faisait pas ce qu'il devait et masquait un bug, à cause d'un if sans accolade et de deux instructions indentées en-dessous. Dans le logiciel ouvert, les structures de contrôle sans accolades sont la cause de plusieurs bugs graves connus, dont un de sécurité du kernel Linux.

Certains types de goto mentionnés dans ce topic sont sales, ça a déjà été discuté.

Les return multiples par fonction ne sont pas non plus une bonne chose pour la gestion des erreurs (hormis, dans certains styles de code, des early return pour la validation initiale des paramètres de la fonction, par exemple), ni si on veut mettre des traces à chaque entrée et sortie de fonction dans une base de code, sans pouvoir utiliser la programmation aspect pour ce faire (pour au moins deux raisons: non seulement AspectC++ est horriblement lent, mais surtout, à l'époque, encore récemment, et peut-être même encore actuellement malgré les travaux en cours, il ne comprend presque rien au C++11).

Et j'en passe.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

73

Lionel Debroux (./72) :
Les return multiples par fonction ne sont pas non plus une bonne chose pour la gestion des erreurs (hormis, dans certains styles de code, des early return pour la validation initiale des paramètres de la fonction, par exemple)

Hein? Justement, la gestion des erreurs est une des raisons de faire un early return.
ni si on veut mettre des traces à chaque entrée et sortie de fonction dans une base de code, sans pouvoir utiliser la programmation aspect pour ce faire

sick sick sick
Tracer l'entrée et la sortie d'une fonction est possible sans polluer le code! https://sourceware.org/systemtap/SystemTap_Beginners_Guide/userspace-probing.html#uevents
J'ai absolument horreur des printf de débogage qui polluent à la fois le code et le terminal lors d'une exécution normale. sick C'est à ça que servent les débogueurs et les outils comme SystemTap! roll
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

74

de toute façon l'early return est une poudre aux yeux, le compilateur n'en fait qu'un jump vers LE return de la fonction.

75

Mais empeche quand meme de pouvoir mettre un printf/hook/whatever unique sur le seul return de la fonction pour pouvoir loguer les entres/sorties d'une fonction et ce quelle retourne
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

76

squalyl (./74) :
de toute façon l'early return est une poudre aux yeux, le compilateur n'en fait qu'un jump vers LE return de la fonction.

Pas forcément, il peut aussi mettre un rts ou tailcall direct.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

77

Godzil (./75) :
Mais empeche quand meme de pouvoir mettre un printf/hook/whatever unique sur le seul return de la fonction pour pouvoir loguer les entres/sorties d'une fonction et ce quelle retourne

sick./73
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

78

Oui oui même tes probes, je suis désolé, mais ajouter 50 lignes pour "prober" les 50 returns d'une fonction est aussi problématique que ton idée de 50 printf.

De toute manière j'ai le regret de t'annoncer que tu n'est qu'un amateur question développement. Tu serais, non tu es incapable de travailler dans un vrai environnement de développement dans une vrai équipe.

Tu peux mettre n'importe quel de tes "softs" dans la balance tu reste un amateur, rien de plus.

La majorité des tes "projets" le prouvent que ça soit la qualité du code, ou le fait que sans le travail d'autre tu aurais été incapable de sortir les dites applications.

Tu n'es PAS a l'origine de TIGCC, ni meme le contributeur principal.
Tu n'es PAS a l'origine de TI-Chess, ni meme le contributeur principal.
Tu n'es PAS a l'origine de TIemu, ni meme le contributeur principal.
Tu n'es PAS a l'origine de TILP, ni meme le contributeur principal.
Tu n'es PAS a l'origine du fonctionnement de HW3Patch

D'ailleurs chaque projets dont tu as vainement tente de t'accaparer se sont écroulé les un après les autres sous ta gouverne pourtant si Juste.
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

79

Je n'ai strictement rien à voir avec TI-Chess, c'est le projet de Thomas Nussbaumer, je n'ai jamais été le mainteneur ni même un contributeur à niveau significatif.

Pour des projets vraiment à moi, regarde par exemple:
http://www.tigen.org/kevin.kofler/bbowda/
http://www.tigen.org/kevin.kofler/fmathl/dyngenpar/
Le tout développé pour l'université.

Et je travaille maintenant dans une "vraie équipe", donc tes attaques personnelles… vtff
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

80

T'as tes règles Godzil? c'est quoi cette grosse attaque nawak, là?

81

Kevin Kofler (./79) :
Pour des projets vraiment à moi, regarde par exemple:
http://www.tigen.org/kevin.kofler/bbowda/

Ça à l'air intéressant. smile
(Ca compile pas... Il me manque o8para.h ?)

82

KK > d'ailleurs, tu devrais remplir le questionnaire d'aze pour en dire plus oui
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

83

PpHd (./81) :
(Ca compile pas... Il me manque o8para.h ?)

RTFM. wink

Version TL;DR: Soit tu récupères donlp2_intv_dyn (faut demander au Prof. Spellucci, il n'y a pas de lien public), tu le détarres dans le dossier source de BBOWDA et tu fais make, soit tu récupères Ipopt (en libre téléchargement sur COIN-OR), tu l'installes, et tu fais make -f Makefile.ipopt (en corrigeant éventuellement le dossier d'installation de Ipopt). (Franchement, je conseille Ipopt parce que c'est libre, DONLP2 est par défaut principalement parce que j'ai d'abord travaillé avec DONLP2, et ensuite rajouté le support de Ipopt, entre autre pour des raisons de licence.)

FAQ: Pourquoi faut-il un logiciel d'optimisation pour mon logiciel d'optimisation? Parce que mon logiciel optimise des fonctions black box dont on n'a pas de dérivées (et qui sont coûteuses à évaluer, donc exit les méthodes bourrin du genre quotients de différences) en 1. approximant la fonction par des fonctions à dérivées connues et 2. optimisant ces fonctions successivement avec un logiciel tiers.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

84

Un truc de JAVA que j'ai découvert il y a peu :
lbl:
{
   du code, peu importe lequel
   if ( hu ) {
      break lbl ;
   }
   d'autre code
}
Ça continue ici si le break est appelé %)

Je pensais que le break était bien plus restrictif que ça. Et ça ouvre quelques possibilités pour des cas particuliers.

85

couic
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

86

87

J'entends les râles d'agonie de Ximoon d'ici.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

88

ben perso, je trouve ça pas con. Comme tout ce qui est label en utilisation structurée, à utiliser proprement en se définissant clairement ses conventions, mais c'est pas con. Zerosquare, toi qui cherche un atexit de fonction, ben c'est ça.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

89

En effet. Mais rien que si l'effet du break en C était de quitter le bloc (paire d'accolades) en cours dans tous les cas, ce serait déjà très bien.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

90

Bah c'est exactement ça !? Sauf qu'en plus tu peux choisir et nommer ton bloc de code pour plus de puissance et de lisibilité. Bref moi j'y vois une certaine élégance pour des cas particuliers.