wiki:programmation

Trucs & Astuces de programmation

C++

Apprendre le C++ à partir de ZERO

Vous avez toujours rêvé d'apprendre la POO, mais pas vraiment trouvé comment faire ? Ce site est fait pour vous : http://www.siteduzero.com/tutoriel-3-11406-apprenez-a-programmer-en-c.html

Toutes les bases du C++ y sont abordés à partir de zéro (d'où le nom du site...). En un rien de temps vous serez capable de faire vos propres classes, GUI, et le monde dont vous avez rêvé (celui d'un code propre qu'on comprend) vous sera ouvert !

On trouve également sur le même sites de nombreux tutoriels, entre autres : Makefile Linux Langage informatique divers (C, C++, Python, IDL...)

Faire des cout en couleur

Dans vos programmes vous pouvez rajouter un peu de couleur lorsque vous faites des cout grâce aux commandes d'échappement ANSI. Par exemple essayez ceci :

cout<<"\x1b[33m"<<"\x1b[1m"<<"\x1b[40m"<<" YO"<<"\x1b[0m"<<"\x1b[33m"<<endl;

Le code source perd un peu en lisibilité mais l'affichage gagne vraiment une dimension supplémentaire.

Pour plus de détails, reportez vous à la page http://www.iut-arles.up.univ-mrs.fr/eremy/Aide/SeqEscANSI.html


ROOT

Root est un programme d'analyse de données développé par le CERN.

Configurer ROOT

Il faut redéfinir les variables d'environnements :

  • ROOTSYS (quel Root utilisez vous),
  • PATH (où se trouve l'exécutable),
  • LD_LIBRARY_PATH (où se trouvent les librairies)
  • MANPATH (où se trouve l'aide)

Seul ROOTSYS est propre à Root, les autres sont utilisées plus généralement par linux.

Par exemple :

# sur SLC4 (Scientific Linux 4)
setenv ROOTSYS /utils/SLC4/ROOT/root_v5.18.00

setenv PATH ${ROOTSYS}/bin:${PATH}

if( $?LD_LIBRARY_PATH ) then # teste si la variable existe déjà
    setenv LD_LIBRARY_PATH ${ROOTSYS}/lib/root:${LD_LIBRARY_PATH}
else
    setenv LD_LIBRARY_PATH ${ROOTSYS}/lib/root
endif

setenv MANPATH ${MANPATH}:${ROOTSYS}/man

Quelques trucs en vrac

  • gStyle->SetPalette(1) permet d'avoir de plus jolies couleurs que celles par défaut.
  • TH1.SetDirectory(0) permet de ne pas référencer l'histogramme dans le répertoire courant, et donc de continuer à pouvoir y accéder lorsque celui-ci est fermé (par exemple si on lit un fichier). Par défaut pour tous les histogrammes : TH1::AddDirectory(kFALSE).
  • Pour sauver des TTree dans des fichiers de plus de 2 Go, rajouter : TTree::SetMaxTreeSize(20000000000LL); // 20 GB.

Faire un script root auto-exécutable

La solution : utiliser env. Mais il y a deux problèmes :

  • root va lire la première ligne qui commence par #!/bin/env et ne va rien comprendre
    • Solution : écrire #//bin/env ( interprété comme un commentaire)
  • env ne permet pas de passer des options à root (comme -l : pas de splash screen ou -q : quitte après l'exécution de la macro)
    • Solution : utiliser ce script (rootMacro) (à mettre soit dans le même répertoire soit dans un répertoire listé dans $PATH). Il permet également d'avoir des arguments sur la ligne de commande qui seront passés sous la forme d'une chaîne de charactère unique.

Si tout cela est fait, commencer votre macro par :

#!//bin/env rootMacro

Il ne reste plus qu'à faire un chmod +x monScript.C. Et ./monScript.C est auto-exécutable.


IDL (Interactive Data Language)

C'est un langage de programmation interprété créé dans les années 70 pour traiter des observations, donc surtout utile pour ceux (et celles) qui font de l'astro.

Tout d'abord le site officiel de l'éditeur du language: http://www.ittvis.com/.

Aide synthaxique (vraiment des trucs de base mais pratique quand on débute) sur http://fermi.jhuapl.edu/s1r/idl/idl_syntx.html. Un peu de documentation sur http://www.astro.virginia.edu/class/oconnell/astr511/idl_5.1_html/idl.htm.

Sinon le guide online de IDL est très facile à consulter : après avoir lancé IDL dans un terminal, taper ? et le fichier pdf s'ouvre automatiquement.

Last modified 5 years ago Last modified on Feb 1, 2017 10:16:49 AM