Etude de cas simulation de banque UML/C++

Dimension: px
Commencer à balayer dès la page:

Download "Etude de cas simulation de banque UML/C++"

Transcription

1 Etude de cas simulation de banque UML/C++ Philippe Laroque $Id: simubanque.lyx :02:45Z phil $ laroque@u-cergy.fr mars 2009 Abstract Ce petit document résume, à travers une étude de cas simple, le principe du passage d un modèle UML à un codage C++. L exemple utilise la STL. Il est donné comme corrigé indicatif lors de la formation continue SAGEM en avril Rappel du sujet Il s agit de simuler le fonctionnement d une banque contenant un nombre fixé de caissiers, et recevant des clients qui arrivent de manière pseudo-aléatoire. Lorsqu un client arrive, si un caissier est libre il prend en charge le client, sinon le client prend place dans une file d attente (supposée commune à tous les caissiers, représentée par exemple par un système de tickets numérotés en ordre croissant). Le but de la simulation est de fournir des résultats statistiques sur les différents acteurs de la simulation. Pour cela, on donne en entrée de la simulation: La durée estimée de la simulation : c est la durée au bout de laquelle la banque n accepte plus de nouveaux clients. Bien entendu, ceux qui se trouvent déjà dans la file seront servis... Le nombre de caissiers. Le temps moyen de service de chaque caissier (on suppose donc qu ils ne sont pas tous également performants...). Le temps moyen entre deux arrivées successives de clients. On souhaite obtenir, à la fin de la simulation, les résultats suivants : La durée réelle de la simulation (c est-à-dire la durée au bout de laquelle tous les clients qui se trouvaient encore dans la file ont été servis). Les longueurs maximale et moyenne de la file d attente. Le nombre de clients servis (au total, et par caissier). Le taux d occupation de chque caissier. Le temps moyen d attente d un client dans la file. 1

2 Hypothèses de fonctionnement Pour réaliser cette simulation, on adopte un certain nombre d hypothèses simplificatrices : Les clients sont honnêtes (ils ne cherchent pas à passer devant ceux qui étaient là avant eux). Les clients sont patients (quelle que soit la longueur de la file, ils attendent leur tour et ne quittent pas la banque avant d avoir été servis). Les clients sont paresseux (si plusieurs caissiers sont libres lors de l arrivée d un client, ce dernier se fera servir par le caissier de plus faible numéro, celui situé le plus près de la porte d entrée). Les caissiers ne sont jamais fatigués : dès la fin de traitement d un client, le caissier en reprend un si la file n est pas vide. On dispose d un générateur aléatoire permettant de déterminer les arrivées de clients et les temps de service effectifs des caissiers. La simulation repose sur la succession d événements discrets: on suppose qu entre deux événements consécutifs il ne se passe rien de marquant dans le système, donc le temps varie de manière discrète. 2 Modèle UML initial Quelques remarques sur le modèle ci-dessous: les attributs ne figurent pas, ils sont à la charge du développeur de chaque classe; les passages d objets se font tous par adresse, même si le modèle UML ne permet pas de le représenter (même chose en ce qui concerne les objets retournés par une méthode); les associations sont traversables par une méthode (accesseur) du même nom que le rôle. Par exemple, pour accéder à la file d attente depuis la banque b, on écrit en C++ b->fileattente(); Ces méthodes ne sont pas représentées dans le modèle de conception ci-dessous (mais doivent bien sûr être définies!): 2

3 Poisson init() next(moy : double = 1) : double DiscreteSimulation DiscreteSimulation() add(e : Event) run() time() : double 0.. Event Event(h : double,s : DiscreteSimulation) time() : double fire( Client Client(ha : double) heurearrivee() : double 0.. Depart Depart(h : double,s : DiscreteSimulation,c : Caissier) fire( Arrivee Arrivee(h : double,s : DiscreteSimulation) fire( FileAttente FileAttente(bq : Banque) estvide() : bool longueurmax() : int longueurmoyenne() : double tempsmoyenattente() : double ajouter(c : Client) retirer() : Client Banque Banque() uncaissierlibre() : Caissier nbclientsservis() : int dureeprevue() : double dureereelle() : double tempsmoyenentrearrivees() : double N Caissier Caissier(tms : double,bq : Banque) nbclientsservis() : int estlibre() : bool liberer() tauxoccupation() : double servir(c : Client) Constructeur: les paramètres de la simulation (dureeprevue, nbcaissiers, tservice, tentrearriv ees) 3 Le code source de l application Il est à noter que la version de code source présentée ici ne gère pas proprement les problèmes de mémoire (les classes ne sont pas mises sous forme canonique, les variables allouées dynamiquement ne sont donc pas toutes récupérées). 3.1 Le pattern simulation discrete Les deux classes Event et DiscreteSimulation ont été définies de telle façon qu elles ne dépendent pas de l application, et sont donc entièrement réutilisables (notion de pattern ) La classe Event / $Id: Event.h :09:08Z phil $ / #ifndef Event_h #define Event_h #include <iostream> #include <string> using namespace std; class DiscreteSimulation; / 3

4 Event is the abstract root for all event types. It only publishes the time at which it is to fired, and the fire() method (abstract). / class Event { protected: const double _time; DiscreteSimulation ds; public: Event(double h, DiscreteSimulation s) : _time(h) { ds = s; double time() { return _time; virtual void fire() = 0; virtual string type() = 0; friend ostream& operator << (ostream& o, Event& e) { return o << e.type() << "@" << e.time(); ; #endif // La classe DiscreteSimulation L interface / $Id: DiscreteSimulation.C :09:08Z phil $ / static char rcsid[] = "@(#) $Id: DiscreteSimulation.C :09:08Z phil $"; #include "DiscreteSimulation.h" / Implementation of the DiscreteSimulation class. The insertion of an Event is extremely simple, since the map used to store the events is "naturally" sorted! The run() method iteratively removes the first (that is, "chronologically" next) event from the map, fires it and deletes it. It stops when the map is empty. / void DiscreteSimulation :: add (Event e) { events.insert(e); void DiscreteSimulation :: run() { while (events.size()) { 4

5 Event e = ((events.begin())); events.erase(events.begin()); _time = e->time(); e->fire(); // cout << e << endl; // uncomment to debug delete e; // L implémentation / $Id: DiscreteSimulation.C :09:08Z phil $ / static char rcsid[] = "@(#) $Id: DiscreteSimulation.C :09:08Z phil $"; #include "DiscreteSimulation.h" / Implementation of the DiscreteSimulation class. The insertion of an Event is extremely simple, since the map used to store the events is "naturally" sorted! The run() method iteratively removes the first (that is, "chronologically" next) event from the map, fires it and deletes it. It stops when the map is empty. / void DiscreteSimulation :: add (Event e) { events.insert(e); void DiscreteSimulation :: run() { while (events.size()) { Event e = ((events.begin())); events.erase(events.begin()); _time = e->time(); e->fire(); // cout << e << endl; // uncomment to debug delete e; // 5

6 3.2 La classe Arrivee L interface / $Id: Arrivee.C :52:22Z phil $ / static char rcsid[] = "@(#) $Id: Arrivee.C :52:22Z phil $"; #include <iostream> #include "Arrivee.h" #include "Client.h" #include "Caissier.h" #include "FileAttente.h" #include "Poisson.h" #include "Banque.h" using namespace std; / lors d une arrivee : - on cree le client - on calcule l heure de la prochaine arrivee - si cette heure est < duree prevue, on cree la prochaine arrivee et on l ajoute a l echeancier - si un caissier est libre, il sert le client - sinon, le client fait la queue dans la file d attente / void Arrivee :: fire() { // cerr << "Il est " << _time << " : arrivee\n"; Banque s = (Banque) ds; Client c = new Client(_time,s); double next = _time + Poisson::next(s->tempsMoyenEntreArrivees()); if (next < s->dureeprevue()) s->add(new Arrivee(next,s)); Caissier cs = s->uncaissierlibre(); if (cs) cs->servir(c); else s->fileattente()->ajouter(c); // L implémentation / $Id: Arrivee.C :52:22Z phil $ / 6

7 static char rcsid[] = "@(#) $Id: Arrivee.C :52:22Z phil $"; #include <iostream> #include "Arrivee.h" #include "Client.h" #include "Caissier.h" #include "FileAttente.h" #include "Poisson.h" #include "Banque.h" using namespace std; / lors d une arrivee : - on cree le client - on calcule l heure de la prochaine arrivee - si cette heure est < duree prevue, on cree la prochaine arrivee et on l ajoute a l echeancier - si un caissier est libre, il sert le client - sinon, le client fait la queue dans la file d attente / void Arrivee :: fire() { // cerr << "Il est " << _time << " : arrivee\n"; Banque s = (Banque) ds; Client c = new Client(_time,s); double next = _time + Poisson::next(s->tempsMoyenEntreArrivees()); if (next < s->dureeprevue()) s->add(new Arrivee(next,s)); Caissier cs = s->uncaissierlibre(); if (cs) cs->servir(c); else s->fileattente()->ajouter(c); // 3.3 La classe Banque L interface / $Id: Banque.C :52:22Z phil $ / static char rcsid[] = "@(#) $Id: Banque.C :52:22Z phil $"; #include "Banque.h" #include "FileAttente.h" #include "Caissier.h" #include "Poisson.h" #include "Arrivee.h" 7

8 / La banque est responsable de la creation des caissiers et de la file. dans cette version, pas de mise sous forme canonique / Banque :: Banque(double dp, int nbc, double tms, double tma) { _file = new FileAttente(this); _caissiers = new Caissier[nbC]; _nbcaissiers = nbc; _dureeprevue = dp; _tempsmoyenentrearrivees = tma; add(new Arrivee(Poisson::next(tma),this)); Poisson::init(); // initialisation generateur aleatoire for (int i=0; i<nbc;i++) _caissiers[i] = new Caissier(tms[i],this); / retourne le premier caissier disponible, ou 0 si tous pris (implemente donc l hypothese du client paresseux) / Caissier Banque :: uncaissierlibre() { for (int i = 0; i < _nbcaissiers; i++) if (_caissiers[i]->estlibre()) return _caissiers[i]; return 0; / somme des clients servis par les differents caissiers / int Banque :: nbclientsservis() { int res = 0; for (int i = 0; i< _nbcaissiers; i++) { res += _caissiers[i]->nbclientsservis(); return res; // L implémentation / $Id: Banque.C :52:22Z phil $ / static char rcsid[] = "@(#) $Id: Banque.C :52:22Z phil $"; #include "Banque.h" #include "FileAttente.h" #include "Caissier.h" 8

9 #include "Poisson.h" #include "Arrivee.h" / La banque est responsable de la creation des caissiers et de la file. dans cette version, pas de mise sous forme canonique / Banque :: Banque(double dp, int nbc, double tms, double tma) { _file = new FileAttente(this); _caissiers = new Caissier[nbC]; _nbcaissiers = nbc; _dureeprevue = dp; _tempsmoyenentrearrivees = tma; add(new Arrivee(Poisson::next(tma),this)); Poisson::init(); // initialisation generateur aleatoire for (int i=0; i<nbc;i++) _caissiers[i] = new Caissier(tms[i],this); / retourne le premier caissier disponible, ou 0 si tous pris (implemente donc l hypothese du client paresseux) / Caissier Banque :: uncaissierlibre() { for (int i = 0; i < _nbcaissiers; i++) if (_caissiers[i]->estlibre()) return _caissiers[i]; return 0; / somme des clients servis par les differents caissiers / int Banque :: nbclientsservis() { int res = 0; for (int i = 0; i< _nbcaissiers; i++) { res += _caissiers[i]->nbclientsservis(); return res; // 3.4 La classe Depart L interface / $Id: Depart.C :02:45Z phil $ / static char rcsid[] = "@(#) $Id: Depart.C :02:45Z phil $"; 9

10 #include <iostream> #include "Depart.h" #include "Banque.h" #include "Client.h" #include "Caissier.h" #include "FileAttente.h" using namespace std; / lors de la fin du service d un caissier, - si la file est vide, le caissier attend - sinon, - le premier client quitte la file - le caissier le sert / void Depart :: fire() { // cerr << "Il est " << _time << " : depart\n"; Banque s = (Banque) ds; if (s->fileattente()->estvide()) _caissier->liberer(); else { Client c = s->fileattente()->retirer(); _caissier->servir(c); delete c; // L implémentation / $Id: Depart.C :02:45Z phil $ / static char rcsid[] = "@(#) $Id: Depart.C :02:45Z phil $"; #include <iostream> #include "Depart.h" #include "Banque.h" #include "Client.h" #include "Caissier.h" #include "FileAttente.h" using namespace std; / lors de la fin du service d un caissier, - si la file est vide, le caissier attend - sinon, - le premier client quitte la file - le caissier le sert 10

11 / void Depart :: fire() { // cerr << "Il est " << _time << " : depart\n"; Banque s = (Banque) ds; if (s->fileattente()->estvide()) _caissier->liberer(); else { Client c = s->fileattente()->retirer(); _caissier->servir(c); delete c; // 3.5 La classe FileAttente L interface / $Id: FileAttente.C :52:22Z phil $ / static char rcsid[] = "@(#) $Id: FileAttente.C :52:22Z phil $"; #include "FileAttente.h" #include "Banque.h" #include "Client.h" #include "Caissier.h" / constructeur: mise a zero des parametres internes, memorisation du lien retour vers la banque / FileAttente :: FileAttente(Banque b) { _banque = b; _lmax = 0; _surface = _lmoy = _sommetempsattente = _precedent = 0.0; / valeur moyenne : l integrale temporelle de la longueur sur la duree reelle / double FileAttente :: longueurmoyenne() { return _surface / _banque->dureereelle(); / l ajout physique du client dans la file s accompagne: 11

12 - d une MAJ de la longueur max le cas echeant - de l ajout d une portion de surface a la valeur de l integrale / void FileAttente :: ajouter(client c) { int s = _clients.size(); double h = _banque->time(); _surface += s (h - _precedent); // valeur du rectangle a ajouter _precedent = h; // memorisation du dernier evt file _clients.push_back(c); if (s >= _lmax) _lmax++; / le retrait physique du client de tete s accompagne: - de l ajout d une portion de surface a la valeur de l integrale / Client FileAttente :: retirer() { int s = _clients.size(); double h = _banque->time(); Client res = _clients.front(); _surface += s (h - _precedent); // valeur du rectangle a ajouter _sommetempsattente += (h - res->heurearrivee()); _precedent = h; // memorisation du dernier evt file _clients.pop_front(); // N.B. : retourne void!! return res; / / double FileAttente :: tempsmoyenattente() { return _sommetempsattente / _banque->nbclientsservis(); // L implémentation / $Id: FileAttente.C :52:22Z phil $ / static char rcsid[] = "@(#) $Id: FileAttente.C :52:22Z phil $"; #include "FileAttente.h" #include "Banque.h" #include "Client.h" #include "Caissier.h" / constructeur: 12

13 mise a zero des parametres internes, memorisation du lien retour vers la banque / FileAttente :: FileAttente(Banque b) { _banque = b; _lmax = 0; _surface = _lmoy = _sommetempsattente = _precedent = 0.0; / valeur moyenne : l integrale temporelle de la longueur sur la duree reelle / double FileAttente :: longueurmoyenne() { return _surface / _banque->dureereelle(); / l ajout physique du client dans la file s accompagne: - d une MAJ de la longueur max le cas echeant - de l ajout d une portion de surface a la valeur de l integrale / void FileAttente :: ajouter(client c) { int s = _clients.size(); double h = _banque->time(); _surface += s (h - _precedent); // valeur du rectangle a ajouter _precedent = h; // memorisation du dernier evt file _clients.push_back(c); if (s >= _lmax) _lmax++; / le retrait physique du client de tete s accompagne: - de l ajout d une portion de surface a la valeur de l integrale / Client FileAttente :: retirer() { int s = _clients.size(); double h = _banque->time(); Client res = _clients.front(); _surface += s (h - _precedent); // valeur du rectangle a ajouter _sommetempsattente += (h - res->heurearrivee()); _precedent = h; // memorisation du dernier evt file _clients.pop_front(); // N.B. : retourne void!! return res; / / double FileAttente :: tempsmoyenattente() { return _sommetempsattente / _banque->nbclientsservis(); // 13

14 3.6 La classe Poisson / $Id: Poisson.h :09:59Z phil $ / #ifndef Poisson_h #define Poisson_h / Generateur aleatoire de nombre reels positifs suivant une loi de Poisson. la loyenne est fixee par le parametre de la methode de classe next(). par defaut, la moyenne est 1.0 / #include <math.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> class Poisson { public: // permet d avoir des resultats differents a chaque fois // ou de forcer une meme serie aleatoire (param. seed) static void init(int seed = 0) { srandom(seed? seed : getpid()); static double next(double moy = 1.0) { return -log(((double)random()/rand_max))moy; ; #endif // 3.7 Le programme de test / $Id: tbanque.c :52:22Z phil $ / static char rcsid[] = "@(#) $Id: tbanque.c :52:22Z phil $"; #include <iostream> #include <stdio.h> #include "Banque.h" #include "Caissier.h" #include "FileAttente.h" 14

15 #include <string.h> #include <stdlib.h> using namespace std; / les valeurs par defaut de la simulation : - 2 caissiers (temps de service 1 et 1) - duree de 10 - les clients arrivent tous les 0.6 Ces valeurs peuvent etre modifiees sur la ligne de commande : $ banque [ -dp duree ] [[ -nc nbcaissiers ] -ts temps1...tempsn ] [ -ta tempsarrivees ] avec - -dp pour modifier la duree prevue - -nc pour modifier le nombre de caissiers (il faut alors donner les temps de service de tous les caissiers) - -ts pour modifier les temps moyens de service des caissiers - -ta pour modifier le temps moyen entre deux arrivees successives / int main(int argc, char argv) { // etablissement des valeurs par defaut de la simulation int nbcaissiers = 2; double temps = new double[2]; double tempsarrivees = 0.6; double duree = 10.0; // boucle de lecture des parametres de la ligne de commande int i = 1; temps[0] = temps[1] = 1.0; while (argv[i]) { if (!strcmp(argv[i], "-dp")) sscanf(argv[i+1],"%lf",&duree); else if (!strcmp(argv[i], "-nc")) { sscanf(argv[i+1],"%d",&nbcaissiers); delete [] temps; temps = new double[nbcaissiers]; for (int i = 0; i < nbcaissiers; i++) temps[i] = 1.0; else if (!strcmp(argv[i], "-ta")) sscanf(argv[i+1],"%lf",&tempsarrivees); else if (!strcmp(argv[i], "-ts")) { temps = new double[nbcaissiers]; for (int j =0; j < nbcaissiers; j++) sscanf(argv[i+1+j],"%lf",&temps[j]); i += nbcaissiers-1; else { cerr << "usage: banque [ -dp duree ] [[ -nc nbcaissiers ] -ts temps1...tempsn ] [ -ta tempsarr exit(1); i += 2; 15

16 // affichage des valeurs des parametres de la simulation cout << "duree : " << duree << "\nnbc : " << nbcaissiers << "\nta : " << tempsarrivees << "\ntps : "; for (int i = 0; i < nbcaissiers ; i++) cout << temps[i] << ; cout << endl; ////////////////////////////////////////////////////////////////////// // creation et lancement de la simulation Banque s(duree,nbcaissiers,temps,tempsarrivees); s.run(); // affichage des resultats FileAttente f = s.fileattente(); cout << "duree Reelle : " << s.dureereelle() << endl; cout << "nb clients : " << s.nbclientsservis() << endl; cout << "lg max file : " << f->longueurmax() << endl; cout << "lg moy file : " << f->longueurmoyenne() << endl; for (int i = 1; i <= nbcaissiers ; i++) { cout << "caissier " << i << " : "; Caissier c = s.caissiers(i); cout << c->tauxoccupation() << "%, " << c->nbclientsservis() << " clients\n"; return 0; // 3.8 Le makefile Seul le début est intéressant, les dépendances générées représentent 10 pages et ne sont pas reproduites: # Makefile pour l application simulation banque # $Id: simubanque.lyx :02:45Z phil $ # ############################################################.C.o : c++ -c $<.o: c++ -o $@ $< ALL = banque all : $(ALL) clean : touch clean simubanque 16

17 rm -f clean.o.aux.log.dvi.toc.tex.tmp ~ 2> /dev/null rm -rf $(ALL) simubanque 2>/dev/null OBJS = Arrivee.o Banque.o DiscreteSimulation.o Caissier.o \ Depart.o FileAttente.o tbanque.o banque : $(OBJS) c++ -o $@ $(OBJS) && clear &&./banque ############################################################ # gestion des dependances C++ ############################################################ depend: sed /^#DEP/q < Makefile > mk.tmp c++ -M.C >> mk.tmp mv mk.tmp Makefile #DEPENDANCES : NE PAS DETRUIRE Arrivee.o: Arrivee.C /usr/include/c++/4.3/iostream \ /usr/include/c++/4.3/i486-linux-gnu/bits/c++config.h \ /usr/include/c++/4.3/i486-linux-gnu/bits/os defines.h \ [...] 4 Une sortie du programme réalisé bash-2.04$ banque duree : 10 nbc : 2 ta : 0.6 tps : 1 1 duree Reelle : nb clients : 21 lg max file : 4 lg moy file : caissier 1 : %, 11 clients caissier 2 : %, 10 clients bash-2.04$ banque -dp 100 -nc 3 -ts duree : 100 nbc : 3 ta : 0.6 tps : duree Reelle : nb clients : 184 lg max file : 25 lg moy file : caissier 1 : %, 67 clients caissier 2 : %, 62 clients caissier 3 : %, 55 clients bash-2.04$ 17

18 Contents 1 Rappel du sujet 1 2 Modèle UML initial 2 3 Le code source de l application Le pattern simulation discrete La classe Event La classe DiscreteSimulation La classe Arrivee La classe Banque La classe Depart La classe FileAttente La classe Poisson Le programme de test Le makefile Une sortie du programme réalisé 17 18

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

INFO-F-105 Language de programmation I Séance VI

INFO-F-105 Language de programmation I Séance VI INFO-F-105 Language de programmation I Séance VI Jérôme Dossogne Année académique 2008 2009 Un grand merci à Yves Roggeman pour ses relectures et remarques des codes et commentaires qui ont contribuées

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C La société C fabrique des pièces métalliques réalisées dans son atelier. La société C est en relation commerciale uniquement

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

et Programmation Objet

et Programmation Objet FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------

Plus en détail

Introduction à l héritage en C++

Introduction à l héritage en C++ Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay Yacine.Bellik@iut-orsay.fr 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, C++, JAVA ET REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. 1 Introduction On considère une grille de 20 lignes 20 colonnes. Une case de la grille peut être vide, ou contenir une et une

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Introduction à C++ et à wxwidgets

Introduction à C++ et à wxwidgets Introduction à C++ et à wxwidgets Master IGC 1ère année Année universitaire 2011/2012 Christophe Renaud Version 1.5 19/09/2011 Introduction Objectifs du cours Introduction au langage objet C++ Introduction

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

PROJET 1 : BASE DE DONNÉES REPARTIES

PROJET 1 : BASE DE DONNÉES REPARTIES PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

2. Comprendre les définitions de classes

2. Comprendre les définitions de classes Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux

Plus en détail

Informatique III: Programmation en C++

Informatique III: Programmation en C++ Informatique III: Programmation en C++ Listes haînées Lundi 9 Janvier 2006 1 2 Introdution Les listes hainées permettent de stoker un nombre d objets qui n a pas besoin d être spéifié a priori. Rajouter

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Programmation en C/C++

Programmation en C/C++ INSA de Lyon Département Génie Electrique Module IF1,IF3,IF4 Programmation en C/C++ Thomas Grenier Nicolas Ducros Tanneguy Redarce Lyon, le 3 mars 2015 2 / 63 Table des matières 1 Développement en C++

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Introduction au pricing d option en finance

Introduction au pricing d option en finance Introduction au pricing d option en finance Olivier Pironneau Cours d informatique Scientifique 1 Modélisation du prix d un actif financier Les actions, obligations et autres produits financiers cotés

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

1.6- Génération de nombres aléatoires

1.6- Génération de nombres aléatoires 1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers Département Automatisation et Informatisation Année 2005-2006 Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers 1 Bertrand Cottenceau 1. Introduction du cours de C++...3

Plus en détail

Derrière toi Une machine virtuelle!

Derrière toi Une machine virtuelle! Derrière toi Une machine virtuelle! Yann-Gaël Guéhéneuc guehene@emn.fr École des Mines de Nantes, France Object Technology International Inc., Canada D où ça vient? Calculatrice Machine de Turing 1936

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Exercice sur les Dockers

Exercice sur les Dockers Exercice sur les Dockers Les parties composant les Dockers: 1 docker daemon: est un démon qui gère les dockers (les conteneurs LXC) qui tournent sur la machine hôte 2 docker CLI: une série de commandes

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr Convers3 Documentation version 3.07 Par Eric DAVID : vtopo@free.fr 1 INSTALLATION DE CONVERS... 2 2 UTILISATION DE CONVERS... 2 2.1 FENETRE PRINCIPALE... 2 2.1.1 Convention de saisie et d affichage des

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Durée estimée :1 journée Date de la réalisation : 2011. Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Durée estimée :1 journée Date de la réalisation : 2011. Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ 001 Titre : Mesure de température interfacée par carte Arduino Type de réalisation : montage électronique, de surveillance de température Concepteur : C. Rouviere Coordonnées : Laboratoire lbv villefranche/mer

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

[APPLICATON REPARTIE DE VENTE AUX ENCHERES] 2012 Polytech Nice- Sophia El Hajji Khalil Yousfi Hichem SI4 - Log [APPLICATON REPARTIE DE VENTE AUX ENCHERES] Sommaire Architecture de l application... 3 Le Serveur... 3 Le Client... 4 Passage en CORBA...

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

Approche Contract First

Approche Contract First Exemple HelpDesk Approche Contract First Développement d un premier web service en utilisant l approche contract first (ou WSDL First) Écriture du wsdl avant d écrire le code java Autre possibilité implementation

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail