ITERMD	Auteur	Michel Delorme	Logiciel Libre	Free software
____________________

Dans un premier temps, executer les démos pour avoir une idée de ce que ce code peut faire.

Ensuite apprentissage a partir des démos. (modification ou création)

rendezvous:  exemple simple: source rendezvous.c (avec plus de commentaires)
fermsucre: cinétique fermentation du sucre
chute: saut en parachute
nageur: traversee d'une riviere a la nage
pansolaire: simulation du cycle d'un ballon d'eau réchauffé par panneau solaire.
 ( voir exemple de données lues dans un fichier)
newton: exemple d'usage de l'application pour des calculs mathématiques par itérations.
poursuite: trajectoire d'un chien (missile) qui rejoint son maitre (cible) en mouvement.

NB: Tous les simulations sont faites avec des données ou calculs fantaisistes.

__________________________pour créer une simulation.
créer un répertoire sous 'itermd'.
1.
y recopier le makefile d'une demo
-modifier la première ligne (TARGET) en saisissant le nom de votre éxecutable qui est aussi le nom de votre source.
-enregister. 
2 
copier le source d'une simulation déjà réalisée, le renommer.
le modifier par des recherche=remplace.
par exemple changer DATA_RDV en DATA_MASIM (masimul), ini_rdv en masim
definir vos données et fenetres.
3
programmer votre simulation et son graphe dans la fonction calcul.

Dans le terminal ouvert sur vote répertoire taper 'make'.
_____________________________________

_________________________________________________
Les grandes lignes du source d'une simulation sont:
________________
Définition de toutes les données nécessaires à la simulation obligatoirement dans une structure.
exemple:
typedef struct  {
gfloat tps;		// compteur temps 
....
gfloat disv2;		//  km parcourus par voiture 2
gfloat vitesv2;		// vitesse voiture 2 en km/h
char etat[16];
gfloat disv1v2;		// distance separant les 2 voitures 
etc
} DATA_RDV;

________________
Déclaration et initialisation (pour le premier affichage ou calcul)
exemple:
DATA_RDV ini_rdv = {
0,	//gfloat tps;		// compteur temps
...
0,	//gfloat disv2;		//  km parcourus par voiture 2
45,	//gfloat vitesv2;		// vitesse voiture 2 en km/h
"inactif",	//char etat[15];
0,	//gfloat disv1v2;		// distance separant les 2 voitures 
};
______
Si on a besoin des valeurs calculées à l'itération précédente, on déclare une sauvegarde des données.
DATA_RDV sv_rdv;

__________________________
Définition de la fenêtre d'affichage et/ou saisie
contenu de la fenêtre: une ligne pour chaque donnée
DEF_L_F2C ini_f1[] ={
{NULL,NULL,NULL,DEPS(vitesv2),SAISNUM,5,&fonc_control, "%0.0f","Vitesse voiture 2 en km/h"}, 
{NULL,NULL,NULL,DEPS(disv2),LIBNUM,20,NULL,"%0.2f", "Km parcourus par V2"}, 
_____
La fenêtre
avec adresse du tableau de son contenu (ini_f1)
F2C f1 = {  etc
________________________
Définition de la fenêtre graphique (si besoin)
FENGRA fg = { etc
______________________________________
Point d'entrée programme (main)
avec appel à  modevmenu(); et inifen();

_______________modevmenu()
Menu standart d'une simulation
Bouton 'Pas à pas': effectue une seule itération et stop (appel fonction 'action')
Bouton 'Demarre': boucle sur la fonction 'action' tant que celle-ci retourne TRUE
Bouton 'Stop': stop la boucle de 'Demarre' 
Bouton 'Re_init": appel fonction fraz() programmée par l'utilisateur.

_______________inifen()
Création et affichage des fenêtres définies

cre_fen2c_sais( (F2C *) &f1,(DATA_RDV*) &ini_rdv);	// creation
aff_fen2c_sais((F2C *) &f1,(DATA_RDV*) &ini_rdv);	// formate affichage
gtk_widget_show_all(f1.win);	// affichage par gtk

//________fen graphique______________________
crefengra ( (FENGRA *) &fg.wingrap);	// creation
gtk_widget_show_all (fg.wingrap);	// affichage par gtk

la variable 'tousles' définie la périodicité d'appel à une itération en 1000eme de seconde.
Mettre tous les traitement d'initialisation nécessaire au démarage de l'application. 

_____________fonction action() (nom reservé)
activée par les boutons 'Demarre' et 'Pas à pas'.
Classiquement l'utilisateur doit appeler sa fonction 'calcul' qui retourne TRUE pour boucler ou FALSE pour arreter.

_____________fonction calcul
C'est ici que l'utilisateur programme sa simulation

____________fonction fraz()  (nom reservé)
L'utisateur réinitialise les variables pour relancer la simulation.
et/ou traitement d'initialisation specifique (lecture de données dans un fichier par exemple)



