<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quintingonzalez</id>
	<title>Wiki du LAMA (UMR 5127) - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quintingonzalez"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php/Sp%C3%A9cial:Contributions/Quintingonzalez"/>
	<updated>2026-06-10T13:45:46Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Utilisateur:Hyvernat&amp;diff=5240</id>
		<title>Utilisateur:Hyvernat</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Utilisateur:Hyvernat&amp;diff=5240"/>
		<updated>2011-06-07T07:25:24Z</updated>

		<summary type="html">&lt;p&gt;Quintingonzalez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;J&#039;habite dans le bureau 22 du bâtiment Chablais, et mon numéro de poste est le 94 22.&lt;br /&gt;
&lt;br /&gt;
Pour me contacter, l&#039;email est le plus simple : vous devriez pouvoir retrouver mon adresse à partir de mon nom et de mon prénom (Pierre)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez allez voir ma [http://www.lama.univ-savoie.fr/~hyvernat/ page web] pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les wiki de mes cours&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[INFO502 : Systèmes d&#039;exploitation]]&lt;br /&gt;
&lt;br /&gt;
[[INFO505 : algorithmes de graphes]]&lt;br /&gt;
&lt;br /&gt;
[[INFO719 : rappels et compléments de programmation]]&lt;br /&gt;
&lt;br /&gt;
[[INFO401 : Programmation fonctionnelle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anciens cours&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[INFO505 : Mathématiques pour l&#039;informatique]]&lt;br /&gt;
&lt;br /&gt;
[[INFO719 : rappels d&#039;algorithmique et programmation C]]&lt;br /&gt;
&lt;br /&gt;
[[INFO710 : Compléments de base de données]]&lt;br /&gt;
&lt;br /&gt;
[[INFO614 : Mathématiques pour l&#039;informatique]]&lt;br /&gt;
&lt;br /&gt;
[[INFO803 : informatique]]&lt;br /&gt;
&lt;br /&gt;
[[MATH0980 : contenu algorithmique des démonstrations mathématiques]]&lt;br /&gt;
&lt;br /&gt;
[[Langage et concepts catégoriques pour les mathématiques et l’informatique]] (cours de l&#039;École doctorale MSTII de Grenoble)&lt;br /&gt;
&lt;br /&gt;
[http://writing-help.org/ Writing help]&lt;/div&gt;</summary>
		<author><name>Quintingonzalez</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Accueil&amp;diff=5239</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Accueil&amp;diff=5239"/>
		<updated>2011-06-07T07:25:22Z</updated>

		<summary type="html">&lt;p&gt;Quintingonzalez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&amp;lt;big&amp;gt;Le wiki du [http://www.lama.univ-savoie.fr LAMA (UMR 5127)]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce wiki contient certains cours dispensés par les filières de l&#039;[http://www.sfa.univ-savoie.fr UFR SFA]. &lt;br /&gt;
Les modifications, voire les créations de pages par les étudiants sont les bienvenues. En cas de création de cours,&lt;br /&gt;
merci de vous inscrire avec votre vrai nom et prenez modèle sur les cours existants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Liste des cours ==&lt;br /&gt;
&lt;br /&gt;
=== Mathématiques à l&#039;université de Savoie ===&lt;br /&gt;
&lt;br /&gt;
[[MATH203 : Introduction à l&#039;algèbre]]&lt;br /&gt;
&lt;br /&gt;
[[MATH206 : Probabilités et Statistiques]]&lt;br /&gt;
&lt;br /&gt;
[[MATH304 : Mathématiques pour les sciences III]]&lt;br /&gt;
&lt;br /&gt;
[[MATH508 : Algèbre linéaire et optimisation]]&lt;br /&gt;
&lt;br /&gt;
[[MATH611 : Statistiques inférentielles]]&lt;br /&gt;
&lt;br /&gt;
[[MATH801 : Géométrie affine et euclidienne]]&lt;br /&gt;
&lt;br /&gt;
[[PHOX301 et PHOX501 : Initiation au raisonnement mathématique avec PhoX]]&lt;br /&gt;
&lt;br /&gt;
=== informatiques à l&#039;université de Savoie ===&lt;br /&gt;
&lt;br /&gt;
[[INFO202 : Informatique et multimédia]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO204 : science informatique]]&amp;lt;/strike&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[INFO302 : Introduction à la Programmation Orientée Objet et Java]]&lt;br /&gt;
&lt;br /&gt;
[[INFO401 : Programmation fonctionnelle]]&lt;br /&gt;
&lt;br /&gt;
[[INFO502 : Systèmes d&#039;exploitation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO505 : Mathématiques pour l&#039;informatique]]&amp;lt;/strike&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[INFO505 : algorithmes de graphes]]&lt;br /&gt;
&lt;br /&gt;
[[INFO508 : Réseau]]&lt;br /&gt;
&lt;br /&gt;
[[INFO510 et INFO511 : Algorithmique et structures de données]]&lt;br /&gt;
&lt;br /&gt;
[[INFO517 : Programmation C]]&lt;br /&gt;
&lt;br /&gt;
[[INFO604 : Systèmes de synchronisation et Processus]]&lt;br /&gt;
&lt;br /&gt;
[[INFO606 : Bases de données]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO614 : Mathématiques pour l&#039;informatique]]&amp;lt;/strike&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[INFO710 : Compléments de base de données]]&lt;br /&gt;
&lt;br /&gt;
[[INFO719 : rappels et compléments de programmation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO719 : rappels d&#039;algorithmique et programmation C]]&amp;lt;/strike&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO803 : informatique]] (remplacé par [[INFO719 : rappels d&#039;algorithmique et programmation C]]&amp;lt;/strike&amp;gt; &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[INFO803 : Conception et Programmation Objet]] (ex &amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO719 : Conception et Programmation Objet]]&amp;lt;/strike&amp;gt; (passé au second semestre)&amp;lt;/small&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
[[INFO817 : Sémantique des langages fonctionnels et objets, preuves de programmes]]&lt;br /&gt;
&lt;br /&gt;
[[INFO821 : Infographie]]&lt;br /&gt;
&lt;br /&gt;
[[INFO006 : Cryptologie et sécurité informatique]] (ex &amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO913 : Cryptologie et sécurité informatique]]&amp;lt;/strike&amp;gt; (passé au second semestre)&amp;lt;/small&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;strike&amp;gt;[[INFO916 : Cours de C]] (remplacé par [[INFO719 : rappels d&#039;algorithmique et programmation C]]&amp;lt;/strike&amp;gt; &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autres cours ===&lt;br /&gt;
&lt;br /&gt;
[[MSHS501 et MSHS601 : Enquête et sondage]]&lt;br /&gt;
&lt;br /&gt;
[[PHYS504 : Méthodes informatiques pour la physique]]&lt;br /&gt;
&lt;br /&gt;
[[PHYS710 : Simulation et modélisation en physique]]&lt;br /&gt;
&lt;br /&gt;
[[MATH0980 : contenu algorithmique des démonstrations mathématiques]] (cours du M2 de l&#039;université Claude Bernard à Lyon)&lt;br /&gt;
&lt;br /&gt;
[[Initiation aux assistants de preuves (cours du LMFI)]]&lt;br /&gt;
&lt;br /&gt;
[[Modèle de la programmation (cours du LMFI)]]&lt;br /&gt;
&lt;br /&gt;
[[Langage et concepts catégoriques pour les mathématiques et l’informatique]] (cours de l&#039;École doctorale MSTII de Grenoble)&lt;br /&gt;
&lt;br /&gt;
[[GIND401 : Introduction à la programmation objet en JAVA]]&lt;br /&gt;
&lt;br /&gt;
[[PROJ401 : Projet]]&lt;br /&gt;
&lt;br /&gt;
== Utilisation des machines de TP ==&lt;br /&gt;
&lt;br /&gt;
[[Linux dans les salles de TP du Bourget|Démarrage sous Linux]]&lt;br /&gt;
&lt;br /&gt;
[[Comment compiler le C ?|Compilation de programmes C]]&lt;br /&gt;
&lt;br /&gt;
== Utilisation du wiki ==&lt;br /&gt;
&lt;br /&gt;
Consultez le [http://meta.wikipedia.org/wiki/Aide:Contenu Guide de l&#039;utilisateur] pour plus d&#039;informations sur l&#039;utilisation des &amp;quot;wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
En cas de problème contacter [mailto:raffalli@univ-savoie.fr Christophe Raffalli].&lt;br /&gt;
&lt;br /&gt;
* [http://www.acheterviagrafr.fr/buy_cialis_fr.html acheter cialis]&lt;br /&gt;
&lt;br /&gt;
== Projets scientifiques ==&lt;br /&gt;
&lt;br /&gt;
[[ Géométrie discrète ]]&lt;br /&gt;
&lt;br /&gt;
[http://cvresumewritingservices.org/ resume service]&lt;br /&gt;
&lt;br /&gt;
[http://cvresumewriters.com/ resume writers]&lt;/div&gt;</summary>
		<author><name>Quintingonzalez</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=PHYS710_:_Simulation_et_mod%C3%A9lisation_en_physique&amp;diff=5238</id>
		<title>PHYS710 : Simulation et modélisation en physique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=PHYS710_:_Simulation_et_mod%C3%A9lisation_en_physique&amp;diff=5238"/>
		<updated>2011-06-07T07:25:19Z</updated>

		<summary type="html">&lt;p&gt;Quintingonzalez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Projet: Evolution d&#039;une galaxie]]&lt;br /&gt;
&lt;br /&gt;
Le but de ce cours est d&#039;initier les étudiants au développement d&#039;un logiciel de simulation ou de modélisation en physique. Ce logiciel sera modulaire et composé de sous-ensembles interagissant entre eux. Chaque module ou sous-ensemble sera développé par un binôme qui en aura la responsabilité. Le but sous-jacent est l&#039;initiation à un travail collaboratif.&lt;br /&gt;
&lt;br /&gt;
Dans cet esprit, la première séance consistera en une introduction succinte à l&#039;environnement de développement et au langage choisis, en l&#039;occurence [http://root.cern.ch ROOT] et le C/C++. Les séances suivantes, espacées de 2 à 3 semaines seront des occasions de faire le point, chaque binôme expliquant aux autres l&#039;évolution de leur travail et les points d&#039;accès pour que tous puissent faire des tests entre les modules. Entre temps, les étudiants communiqueront avec l&#039;enseignant et leurs camarades à travers un ensemble d&#039;outils tels cette page wiki et une liste de diffusion. L&#039;enseignant collectera les contributions (et suggérera/demandera éventuellement des modifications) de telle sorte qu&#039;elles soient disponibles pour tous.&lt;br /&gt;
&lt;br /&gt;
Autant que faire se peut, on envisagera une utilisation ultérieure du logiciel, soit dans le cadre des exercices &amp;quot;WIMS&amp;quot; de première année, soit pour servir de point de départ aux projets des années suivantes.&lt;br /&gt;
&lt;br /&gt;
== Introduction, outils de développement ==&lt;br /&gt;
=== Cadre général ===&lt;br /&gt;
* Simulation, modélisation en physique&lt;br /&gt;
* Développement d&#039;un logiciel de modélisation&lt;br /&gt;
* Contraintes, travail en groupe&lt;br /&gt;
* Exemple: un système mécanique complexe, le moteur à explosion&lt;br /&gt;
&lt;br /&gt;
=== Environnement ===&lt;br /&gt;
On utilisera [http://root.cern.ch &#039;&#039;&#039;ROOT&#039;&#039;&#039;]. &lt;br /&gt;
* Rappel de quelques commandes Unix (si nécessaire)&lt;br /&gt;
* Utilisation de ROOT&lt;br /&gt;
* Compilation d&#039;un petit code C&lt;br /&gt;
* Compilation d&#039;un code intégrant des fonctionnalités &#039;&#039;&#039;ROOT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Langage ===&lt;br /&gt;
Nous utiliserons le C/C++. Les notions générales de C seront supposées connues (petit rappel rapide). On introduira les notions suivantes avec à chaque fois l&#039;analyse de petits exemples de macros ROOT.&lt;br /&gt;
* Rappels de C : variables, fonctions, structures de contrôle, exemple de programme complet&lt;br /&gt;
* Pointeurs&lt;br /&gt;
* Le préprocesseur&lt;br /&gt;
* Allocation dynamique en C&lt;br /&gt;
* Le langage C++&lt;br /&gt;
* Classes, objets&lt;br /&gt;
** Héritage&lt;br /&gt;
** Constructeurs, destructeurs&lt;br /&gt;
** Encapsulation&lt;br /&gt;
* Allocation dynamique en C++&lt;br /&gt;
&lt;br /&gt;
Petit programme complet à la fin de cette page. Essayez-le dans ROOT.&lt;br /&gt;
&lt;br /&gt;
En règle générale, on donnera les informations nécessaires pour comprendre les macros ROOT présentées. Il reste beaucoup d&#039;auto-formation à faire de la part des étudiants !&lt;br /&gt;
==== Quelques références ====&lt;br /&gt;
* [http://cpp.developpez.com/cours/polyCpp/ cours de C++ à partir du C]. &lt;br /&gt;
* [http://cpp.developpez.com/cours/cpp/ &amp;quot;mégacours&amp;quot; de C/C++]. &lt;br /&gt;
* [http://www.siteduzero.com/tutoriel-3-11406-apprenez-a-programmer-en-c.html Cours sur &amp;quot;le site du zéro&amp;quot;]&lt;br /&gt;
* Ce qu&#039;il ne faut pas faire : [http://fr.wikipedia.org/wiki/Antipattern les anti-patrons]&lt;br /&gt;
&lt;br /&gt;
=== Bibliothèques ===&lt;br /&gt;
&lt;br /&gt;
gsl, modules ROOT, bibliothèques trouvées ou produites par les étudiants&lt;br /&gt;
&lt;br /&gt;
==== Résumé du 1&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt; cours : rappel sur le langage C ====&lt;br /&gt;
&lt;br /&gt;
;Variables &lt;br /&gt;
: int (entier)&lt;br /&gt;
: float (réel 4 octets)&lt;br /&gt;
: double (réel 8 octets)&lt;br /&gt;
: char (caractère 1 octet)&lt;br /&gt;
: ...&lt;br /&gt;
&lt;br /&gt;
;Déclaration des variables &lt;br /&gt;
=&amp;gt; &#039;&#039;int i,j,k;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;Pour déclarer un tableau qui va de 0 à 99 : &#039;&#039;float a[100];&#039;&#039;&lt;br /&gt;
&amp;lt;br\&amp;gt;Puis initialisation : &#039;&#039;a[i]=0;&lt;br /&gt;
&lt;br /&gt;
;Boucles &lt;br /&gt;
=&amp;gt; for, while, do...&lt;br /&gt;
&amp;lt;br/&amp;gt;Exemple avec la boucle for : &#039;&#039;for (i=1 ; i&amp;lt;36 ; i++) {......}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Tests&lt;br /&gt;
&#039;&#039;if (i&amp;lt;35 &amp;amp;&amp;amp; i&amp;gt;27 &amp;amp;&amp;amp; i!=30) {......} else if (...) {...}&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt; On peut avoir : &lt;br /&gt;
:&amp;amp;&amp;amp; &amp;quot;et&amp;quot;&lt;br /&gt;
:== &amp;quot;égal&amp;quot;&lt;br /&gt;
:|| &amp;quot;ou&amp;quot;&lt;br /&gt;
:!= &amp;quot;différent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Commentaires&lt;br /&gt;
:en C : &#039;&#039;&#039;/*....*/&#039;&#039;&#039;&lt;br /&gt;
:en C++ : &#039;&#039;&#039;//&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Pointeurs&lt;br /&gt;
Déclaration : &#039;&#039;float* a;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;Utilisation : &#039;&#039;(*a)=18&#039;&#039;;&lt;br /&gt;
&amp;lt;br/&amp;gt;Exemple :&lt;br /&gt;
::&#039;&#039;z=23;&#039;&#039;&lt;br /&gt;
::&#039;&#039;a=&amp;amp;z;&#039;&#039;&lt;br /&gt;
::&#039;&#039;*a=18;&#039;&#039;&lt;br /&gt;
:On obtient donc au final que z=18&lt;br /&gt;
&lt;br /&gt;
;Gestion de la mémoire&lt;br /&gt;
[[Image:Memoire.png|right|thumb|Mémoire d&#039;un programme]]&lt;br /&gt;
La mémoire d&#039;un programme est divisée en plusieurs parties. Les variables déclarées dans le programme sont stockées dans la pile qui occupe entre 8 et 20 Mo. C&#039;est peu et en manipulant de grands tableaux on pourrait vite remplir la pile. Ainsi on utilise le tas pour allouer dynamiquement de la mémoire. A chaque fois qu&#039;une variable est utilisée, celle ci est valable uniquement entre les crochets ou elle se trouve. Mais la mémoire reste utilisée dans le tas. En l&#039;absence d&#039;instruction pour libérer cette mémoire, le tas va grandir jusqu&#039;a saturation, c&#039;est ce qu&#039;on appelle une fuite de mémoire. C&#039;est pourquoi on doit libérer la mémoire.&lt;br /&gt;
&lt;br /&gt;
 // ==================================&lt;br /&gt;
 //  Exemple d&#039;allocation de mémoire&lt;br /&gt;
 // ==================================&lt;br /&gt;
 {  &lt;br /&gt;
   double * a;&lt;br /&gt;
   a=(double*) malloc(1000000* sizeof(double)); // allocation de la mémoire&lt;br /&gt;
   a[25000]=42;&lt;br /&gt;
   free(a);                                     // libération de la mémoire&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Outils de travail collaboratif ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce wiki&#039;&#039;&#039; : Pour réaliser des pages sur ce wiki, il faut utiliser la [http://fr.wikipedia.org/wiki/Aide:Syntaxe_wikip%C3%A9dia syntaxe habituelle des wikis]&lt;br /&gt;
ce qui inclut des formules LaTeX encadrées par &amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Liste de diffusion&#039;&#039;&#039; : en cours de mise au point&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Outil de gestion de versions&#039;&#039;&#039; : cvs ou svn. Accessible seulement à l&#039;enseignant.&lt;br /&gt;
&lt;br /&gt;
== Sujets proposés ==&lt;br /&gt;
&lt;br /&gt;
Evolution d&#039;une galaxie&lt;br /&gt;
&lt;br /&gt;
Système mécanique composé&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== Programme en C++ montrant les diverses notions vues en cours ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;En cours d&#039;écriture&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Vous n&#039;êtes pas forcés de tout réécrire, vous pouvez télécharger les fichiers ici : [[http://www.lapp.in2p3.fr/~buskulic/Disque.h Disque.h]] et [[http://www.lapp.in2p3.fr/~buskulic/Disque.C Disque.C]]. Une fois que vous les avez téléchargés, suivez les instructions à la fin de ce paragraphe pour les utiliser dans ROOT. Avant, il faut comprendre ce qu&#039;ils contiennent.&lt;br /&gt;
&lt;br /&gt;
Les commentaires (après les //) devraient donner pas mal d&#039;explications.&lt;br /&gt;
&lt;br /&gt;
Voyons d&#039;abord le fichier en-tête, déclarant les classes, fonctions, etc... des différents programmes. On met toujours ces déclarations dans un fichier séparé pour pouvoir les réutiliser. On nomme ce fichier &amp;quot;Disque.h&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
 // La classe suivante definit un objet &amp;quot;disque&amp;quot; que l&#039;on manipulera plus tard&lt;br /&gt;
 &lt;br /&gt;
 // Declaration de la classe&lt;br /&gt;
 &lt;br /&gt;
 class Disque&lt;br /&gt;
 {&lt;br /&gt;
    private:&lt;br /&gt;
       // Definition des variables privees&lt;br /&gt;
       double mXC;        // coordonnees du centre&lt;br /&gt;
       double mYC;&lt;br /&gt;
       double mEpaisseur;  // Epaisseur si en 3D&lt;br /&gt;
       double mR;            // rayon du disque&lt;br /&gt;
 &lt;br /&gt;
    public:&lt;br /&gt;
       &lt;br /&gt;
       // Methodes &amp;quot;getter&amp;quot; pour acceder aux variables privees &lt;br /&gt;
       double GetXC();&lt;br /&gt;
       double GetYC();&lt;br /&gt;
       double GetEpaisseur();&lt;br /&gt;
       double GetRayon();&lt;br /&gt;
       // Methodes &amp;quot;setter&amp;quot; pour initialiser les variables privees&lt;br /&gt;
       void SetXC(double x);&lt;br /&gt;
       void SetYC(double x);&lt;br /&gt;
       void SetEpaisseur(double x);&lt;br /&gt;
       void SetRayon(double x);&lt;br /&gt;
      &lt;br /&gt;
       // Methodes autres&lt;br /&gt;
       void Trace();                            // trace le disque&lt;br /&gt;
       void Deplace(double vX, double vY);  // Deplace le disque de (vX, vY)&lt;br /&gt;
       double Surface();                       // Renvoie la surface du disque&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Voici le contenu du fichier &amp;quot;Disque.C&amp;quot;. On commence par utiliser la directive &amp;quot;#include&amp;quot; pour inclure les fichiers d&#039;en-tête.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;Disque.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;TCanvas.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;TEllipse.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on écrit le contenu des différentes méthodes de la classe en commençant par le constructeur&lt;br /&gt;
 &lt;br /&gt;
 // ======================&lt;br /&gt;
 //    Constructeur&lt;br /&gt;
 // ======================&lt;br /&gt;
 Disque::Disque(double xC, double yC, double epaisseur, double R)&lt;br /&gt;
 {&lt;br /&gt;
    mXC = xC;&lt;br /&gt;
    mYC = yC;&lt;br /&gt;
    mEpaisseur = epaisseur;&lt;br /&gt;
    mR = R;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Les fonctions qui permettent de récupérer les informations &amp;quot;privées&amp;quot; de la classe. Ces fonctions ne sont pas absolument indispensables pour faire tourner le programme, sauf si on a besoin d&#039;accéder à des données privées. On est en plein dans les conséquences de la notion &amp;quot;d&#039;encapsulation&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
 // ===========================&lt;br /&gt;
 //    &amp;quot;Getter&amp;quot; et &amp;quot;Setter&amp;quot;&lt;br /&gt;
 // ===========================&lt;br /&gt;
 &lt;br /&gt;
 double Disque::GetXC()&lt;br /&gt;
 {&lt;br /&gt;
    return mXC;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double Disque::GetYC()&lt;br /&gt;
 {&lt;br /&gt;
    return mYC;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double Disque::GetEpaisseur()&lt;br /&gt;
 {&lt;br /&gt;
    return mEpaisseur;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double Disque::GetRayon()&lt;br /&gt;
 {&lt;br /&gt;
    return mR;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Disque::SetXC(double x)&lt;br /&gt;
 {&lt;br /&gt;
    mXC = x;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Disque::SetYC(double x)&lt;br /&gt;
 {&lt;br /&gt;
    mYC = x;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Disque::SetEpaisseur(double x)&lt;br /&gt;
 {&lt;br /&gt;
    mEpaisseur = x;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Disque::SetRayon(double x)&lt;br /&gt;
 {&lt;br /&gt;
    mR = x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
On passe maintenant aux méthodes spécifiques à la classe. Ici, on définit une méthode de tracé, une de déplacement et une de calcul simple.&lt;br /&gt;
 &lt;br /&gt;
 // =========================================================&lt;br /&gt;
 //     Methodes de visualisation, deplacement&lt;br /&gt;
 // =========================================================&lt;br /&gt;
 &lt;br /&gt;
 void Disque::Trace()&lt;br /&gt;
 {&lt;br /&gt;
 // trace le disque dans un canvas&lt;br /&gt;
    TEllipse* ell;&lt;br /&gt;
    &lt;br /&gt;
 // **** ATTENTION, fuite de memoire !!!! ****&lt;br /&gt;
 // on ne detruit jamais l&#039;ellipse &amp;quot;ell&amp;quot; !&lt;br /&gt;
    ell = new TEllipse(mXC,mYC,mR);&lt;br /&gt;
    ell-&amp;gt;Draw();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Disque::Deplace(double vX, double vY)&lt;br /&gt;
 {&lt;br /&gt;
 // Deplace le disque de (vX, vY)&lt;br /&gt;
    mXC += vX;&lt;br /&gt;
    mYC += vY;&lt;br /&gt;
 // Probleme : on n&#039;est pas lie a l&#039;objet ellipse cree dans la methode &amp;quot;Trace&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // ============================&lt;br /&gt;
 //     Methodes de calcul&lt;br /&gt;
 // ============================&lt;br /&gt;
 double Disque::Surface()&lt;br /&gt;
 {&lt;br /&gt;
 // Renvoie la surface du disque&lt;br /&gt;
    double surf;&lt;br /&gt;
    double PI = 4*atan(1);&lt;br /&gt;
    &lt;br /&gt;
    surf = PI*mR*mR;&lt;br /&gt;
    return surf;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Utilisation de la classe dans ROOT ===&lt;br /&gt;
&lt;br /&gt;
Avant de l&#039;inclure dans un programme, il est bon de voir ce que l&#039;on peut faire avec cette classe dans ROOT et comment on appelle chacune des méthodes. Comme ROOT contient un interpréteur C/C++, chaque ligne que nous écrirons sur la ligne de commande sera identique à ce que nous ferons plus tard dans un programme complet.&lt;br /&gt;
&lt;br /&gt;
Première chose, il faut charger la classe dans ROOT (une fois celui-ci lancé dans le répertoire où se trouvent Disque.h et Disque.C, bien sûr). Pour celà, on utilise la commande ROOT &amp;quot;.L&amp;quot; :&lt;br /&gt;
 root[0] .L Disque.C&lt;br /&gt;
Construisons ensuite un objet de la classe &amp;quot;Disque&amp;quot;. On va utiliser la commande &amp;quot;new&amp;quot; pour créer l&#039;objet et récupérer un pointeur sur cet objet :&lt;br /&gt;
 root[1] d = new Disque(0.5, 0.5, 0.1, 0.1)&lt;br /&gt;
Ce faisant, on a appelé le constructeur de la classe disque. Ce constructeur, nous l&#039;avons déclaré et défini pour qu&#039;il prenne 4 paramètres en entrée et qu&#039;il mette ces paramètres dans les variables privées de la classe. Si vous regardez le code, vous verrez que nous venons de définir un objet &amp;quot;Disque&amp;quot; de coordonnées du centre (0.5, 0.5), d&#039;épaisseur 0.1 et de rayon 0.1.&lt;br /&gt;
&lt;br /&gt;
Si l&#039;on appelle maintenant la méthode de tracé, ce disque va se tracer tout seul :&lt;br /&gt;
root[2] d-&amp;gt;Trace()&lt;br /&gt;
&lt;br /&gt;
Et voilà ! On voit apparaître un disque dans une fenêtre, appelée &amp;quot;Canvas&amp;quot; dans ROOT. Si on demande la surface du disque en appelant la méthode &amp;quot;Surface()&amp;quot;, on obtient :&lt;br /&gt;
 root [3] d-&amp;gt;Surface()                   &lt;br /&gt;
 &#039;&#039;&#039;(double)3.14159265358979339e-02&#039;&#039;&#039;&lt;br /&gt;
Là encore, on a appelé la méthode de l&#039;objet d qui renvoie la valeur de la surface. Remarquez l&#039;emploi de l&#039;opérateur &amp;quot;-&amp;gt;&amp;quot; (signe &amp;quot;-&amp;quot; suivi du signe supérieur &amp;quot;&amp;gt;&amp;quot; ). On appelle cet opérateur l&#039;opérateur de déréférencement et il est employé pour indiquer &amp;quot;la méthode de l&#039;objet pointé par ...&amp;quot;. &amp;quot;d&amp;quot; est un pointeur, donc la méthode &amp;quot;Surface()&amp;quot; de l&#039;objet pointé par &amp;quot;d&amp;quot; est appelée en utilisant &amp;quot;-&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Analyse d&#039;une macro ROOT ===&lt;br /&gt;
&lt;br /&gt;
On appelle &amp;quot;macro&amp;quot; ou &amp;quot;script&amp;quot; un programme ou morceau de programme que ROOT va interpréter. Analysons la macro suivante &amp;quot;graph.C&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
 void graph() {&lt;br /&gt;
    //Draw a simple graph&lt;br /&gt;
    //Author: Rene Brun&lt;br /&gt;
   &lt;br /&gt;
    TCanvas *c1 = new TCanvas(&amp;quot;c1&amp;quot;,&amp;quot;A Simple Graph Example&amp;quot;,200,10,700,500);&lt;br /&gt;
 &lt;br /&gt;
    c1-&amp;gt;SetFillColor(42);&lt;br /&gt;
    c1-&amp;gt;SetGrid();&lt;br /&gt;
 &lt;br /&gt;
    const Int_t n = 20;&lt;br /&gt;
    double x[n], y[n];&lt;br /&gt;
 &lt;br /&gt;
    for (Int_t i=0;i&amp;lt;n;i++) {&lt;br /&gt;
      x[i] = i*0.1;&lt;br /&gt;
      y[i] = 10*sin(x[i]+0.2);&lt;br /&gt;
      printf(&amp;quot; i %i %f %f \n&amp;quot;,i,x[i],y[i]);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    gr = new TGraph(n,x,y);&lt;br /&gt;
 &lt;br /&gt;
    gr-&amp;gt;SetLineColor(2);&lt;br /&gt;
    gr-&amp;gt;SetLineWidth(4);&lt;br /&gt;
    gr-&amp;gt;SetMarkerColor(4);&lt;br /&gt;
    gr-&amp;gt;SetMarkerStyle(21);&lt;br /&gt;
    gr-&amp;gt;SetTitle(&amp;quot;a simple graph&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;GetXaxis()-&amp;gt;SetTitle(&amp;quot;X title&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;GetYaxis()-&amp;gt;SetTitle(&amp;quot;Y title&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;Draw(&amp;quot;ACP&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    // TCanvas::Update() draws the frame, after which one can change it&lt;br /&gt;
    c1-&amp;gt;Update();&lt;br /&gt;
    c1-&amp;gt;GetFrame()-&amp;gt;SetFillColor(21);&lt;br /&gt;
    c1-&amp;gt;GetFrame()-&amp;gt;SetBorderSize(12);&lt;br /&gt;
    c1-&amp;gt;Modified();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Vous pouvez l&#039;exécuter dans ROOT, c&#039;est une macro &amp;quot;standard&amp;quot; présente dans le répertoire ROOT. Faites simplement :&lt;br /&gt;
 root[4] .x $ROOTSYS/tutorials/graphs/graph.C&lt;br /&gt;
&lt;br /&gt;
Reprenons les lignes principales. Vous pouvez tester l&#039;effet de certaines en recopiant le fichier chez vous et en enlevant la ou les lignes correspondantes avant de lancer la macro.&lt;br /&gt;
&lt;br /&gt;
d&#039;abord, la déclaration de la fonction. Elle ne prend pas d&#039;argument :&lt;br /&gt;
 void graph()&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
Ensuite, on construit un objet &amp;quot;TCanvas&amp;quot; qui est une fenêtre graphique dans laquelle on va dessiner :&lt;br /&gt;
    TCanvas *c1 = new TCanvas(&amp;quot;c1&amp;quot;,&amp;quot;A Simple Graph Example&amp;quot;,200,10,700,500);&lt;br /&gt;
&lt;br /&gt;
On en profite pour appeler des méthodes de cet objet &amp;quot;TCanvas&amp;quot; qui remplissent le fond d&#039;une certaine couleur&lt;br /&gt;
    c1-&amp;gt;SetFillColor(42);&lt;br /&gt;
et qui activent une option traçant une grille pointillée&lt;br /&gt;
    c1-&amp;gt;SetGrid();&lt;br /&gt;
&lt;br /&gt;
viennent ensuite les déclarations de variables que l&#039;on va utiliser. Ici, on a besoin de déclarer deux tableaux qui vont représenter des coordonnées de points à tracer. n est le nombre de points.&lt;br /&gt;
    const Int_t n = 20;&lt;br /&gt;
    double x[n], y[n];&lt;br /&gt;
&lt;br /&gt;
ces points, il faut bien leur donner des valeurs, d&#039;où la boucle ci-dessous :&lt;br /&gt;
    for (Int_t i=0;i&amp;lt;n;i++) {&lt;br /&gt;
      x[i] = i*0.1;&lt;br /&gt;
      y[i] = 10*sin(x[i]+0.2);&lt;br /&gt;
      printf(&amp;quot; i %i %f %f \n&amp;quot;,i,x[i],y[i]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
ensuite, on construit un objet &amp;quot;graphique&amp;quot; défini dans ROOT qui s&#039;appelle &amp;quot;TGraph&amp;quot;. On passe les pointeurs &amp;quot;x&amp;quot; et &amp;quot;y&amp;quot; sur les tableaux qu&#039;on vient de remplir à ce constructeur, ainsi que le nombre de points :&lt;br /&gt;
    gr = new TGraph(n,x,y);&lt;br /&gt;
&lt;br /&gt;
et on rend le graphe &amp;quot;joli&amp;quot;. Les noms des méthodes parlent d&#039;eux-même :&lt;br /&gt;
    gr-&amp;gt;SetLineColor(2);&lt;br /&gt;
    gr-&amp;gt;SetLineWidth(4);&lt;br /&gt;
    gr-&amp;gt;SetMarkerColor(4);&lt;br /&gt;
    gr-&amp;gt;SetMarkerStyle(21);&lt;br /&gt;
    gr-&amp;gt;SetTitle(&amp;quot;a simple graph&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;GetXaxis()-&amp;gt;SetTitle(&amp;quot;X title&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;GetYaxis()-&amp;gt;SetTitle(&amp;quot;Y title&amp;quot;);&lt;br /&gt;
    gr-&amp;gt;Draw(&amp;quot;ACP&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
enfin, l&#039;auteur a décidé de changer encore un peu le fond, libre à lui...&lt;br /&gt;
    // TCanvas::Update() draws the frame, after which one can change it&lt;br /&gt;
    c1-&amp;gt;Update();&lt;br /&gt;
    c1-&amp;gt;GetFrame()-&amp;gt;SetFillColor(21);&lt;br /&gt;
    c1-&amp;gt;GetFrame()-&amp;gt;SetBorderSize(12);&lt;br /&gt;
    c1-&amp;gt;Modified();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Amusez-vous à modifier le code ci-dessus et à tester vos modifications dans ROOT. Par exemple, mettre plus de points ou changer certaines caractéristiques de couleur. C&#039;est la meilleure manière d&#039;apprendre ou de vérifier que vous avez bien compris. La classe TGraph est documentée sur le site de ROOT à la page : [[http://root.cern.ch/root/html520/TGraph.html http://root.cern.ch/root/html520/TGraph.html]]&lt;br /&gt;
&lt;br /&gt;
Il y a beaucoup de méthodes. Regardez certaines d&#039;entre elles pour voir si vous comprenez leur utilité.&lt;br /&gt;
&lt;br /&gt;
Il y a même un exemple encore plus simple de macro au début de cette page.&lt;br /&gt;
&lt;br /&gt;
Il y a dans ROOT un très grand nombre de classes différentes, nous verrons celles dont nous aurons besoin au fur et à mesure.&lt;br /&gt;
&lt;br /&gt;
[http://cvresumewritingservices.org/ Resumes]&lt;br /&gt;
&lt;br /&gt;
[http://cvresumewriters.com/ resume writer]&lt;/div&gt;</summary>
		<author><name>Quintingonzalez</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=PHYS504_:_M%C3%A9thodes_informatiques_pour_la_physique&amp;diff=5237</id>
		<title>PHYS504 : Méthodes informatiques pour la physique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=PHYS504_:_M%C3%A9thodes_informatiques_pour_la_physique&amp;diff=5237"/>
		<updated>2011-06-07T07:25:17Z</updated>

		<summary type="html">&lt;p&gt;Quintingonzalez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce cours est destiné à donner aux étudiants quelques notions d&#039;analyse numérique qu&#039;ils devront utiliser pour la réalisation d&#039;un projet de simulation. On commencera par quelques rappels de langage C en supposant que les notions standard d&#039;informatique sont connues et ont été introduites précédemment, par exemple dans un cours de Pascal.&lt;br /&gt;
&lt;br /&gt;
= [[Rappels de C : l&#039;ABC du C selon Pascal]] =&lt;br /&gt;
[[Rappels de C : l&#039;ABC du C selon Pascal|Rappels]]&lt;br /&gt;
&lt;br /&gt;
= Plan du cours =&lt;br /&gt;
&lt;br /&gt;
# Recherche d&#039;un extremum d&#039;une fonction&lt;br /&gt;
# Dérivation numérique&lt;br /&gt;
# Intégration numérique&lt;br /&gt;
# Résolution d&#039;équations différentielles&lt;br /&gt;
# Transformées de Fourier&lt;br /&gt;
# Méthodes statistiques&lt;br /&gt;
&lt;br /&gt;
= Projets =&lt;br /&gt;
Les projets forment la deuxième partie de cet enseignement. Les étudiants choisissent un projet par binôme. Un choix de sujets est donné, mais les plus motivés peuvent proposer un sujet personnel.&lt;br /&gt;
&lt;br /&gt;
=== Liste des sujets proposés ===&lt;br /&gt;
&lt;br /&gt;
==== Optique ====&lt;br /&gt;
* Tracé de rayons en optique géométrique&lt;br /&gt;
* Simulation d&#039;un phénomène de mirage (tracé de rayons)&lt;br /&gt;
&lt;br /&gt;
==== Physique statistique ====&lt;br /&gt;
* Thermalisation d&#039;un ensemble de particules dans un gaz&lt;br /&gt;
* Jet de particules sortant par un trou&lt;br /&gt;
&lt;br /&gt;
==== Mécanique ====&lt;br /&gt;
* Accélération d&#039;une sonde spatiale lors de son survol de Jupiter (&amp;lt;i&amp;gt;VAUTHRIN Margaux, PARFAIT Reounodji, SENTOU Romain&amp;lt;/i&amp;gt;)&lt;br /&gt;
)&lt;br /&gt;
* Trajectoires de satellites dans diverses conditions (&amp;lt;i&amp;gt;PILLET Guillaume, BORONAT Antoine&amp;lt;/i&amp;gt;)&lt;br /&gt;
* Trajectoires de satellites dans diverses conditions (&amp;lt;i&amp;gt;SALOMON Jean-Baptiste, CHATEL Frédéric&amp;lt;/i&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== Mécanique quantique ====&lt;br /&gt;
* Evolution temporelle d&#039;un paquet d&#039;onde&lt;br /&gt;
&lt;br /&gt;
==== Electrocinétique ====&lt;br /&gt;
* Effet d&#039;un ensemble RLC sur un signal&lt;br /&gt;
&lt;br /&gt;
==== Géophysique ====&lt;br /&gt;
* Propagation d&#039;ondes sismiques à l&#039;intérieur de la terre &amp;lt;i&amp;gt;(nouveau, en test)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Projets personnels (proposés par les étudiants) ====&lt;br /&gt;
* Propagation d&#039;une onde lumineuse dans une fibre optique à gradient d&#039;indice (&amp;lt;i&amp;gt;BOUVIER Elvire, DEVILLE Noémie&amp;lt;/i&amp;gt;)&lt;br /&gt;
* Etude d&#039;un fusil à air comprimé (&amp;lt;i&amp;gt;DOREZ Hugo, VIGREUX Frédéric&amp;lt;/i&amp;gt;)&lt;br /&gt;
* Diffusion de la chaleur (&amp;lt;i&amp;gt;LOUVARET Frédéric&amp;lt;/i&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
[http://cvresumewritingservices.org/ resume services]&lt;/div&gt;</summary>
		<author><name>Quintingonzalez</name></author>
	</entry>
</feed>