INF1010 Examen final Hiver 2006

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

Download "INF1010 Examen final Hiver 2006"

Transcription

1 INF1010 Examen final Hiver 2006 Question 1 Allocation dynamique ou polymorphisme (1 point) Répondez à une des questions suivantes (si vous décidez de répondre aux deux, vous recevrez le maximum des deux pointages) a) Dans le code ci-dessous, nous aurions dû définir un constructeur de copie. Dites quelle erreur grave se produit à cause de cette lacune. class B public : B(int x); ; class A A(int x = 0); ~A(); B* att; ; A::A(int x) att = new B(x); A::~A() delete att; void f(a objet) int main() A obj(2); f(obj); return 0; Réponse : Lorsqu on entre dans la fonction f(), un nouvel objet est construit par copie. Comme le constructeur de copie par défaut est appelé, on aura deux pointeurs sur obj. À la sortie de la fonction, le destructeur sera appelé et la mémoire sera désallouée. L objet obj aura donc un pointeur invalide. b) Expliquez la différence entre le polymorphisme implémenté avec des méthodes virtuelles et le polymorphisme implémenté avec des fonctions et classes génériques. Réponse : En utilisant des méthodes virtuelles, il n est pas nécessaire que le type de l objet soit connu lors de la compilation. Ainsi, si le type de l objet n est réellement connu que lors de l exécution, on pourra utiliser cette approche et pas des fonctions et classes génériques. Par contre, ces dernières sont plus efficaces, puisqu elles sont résolues lors de la compilation, et ne requièrent donc pas de code spécial appelé lors de l exécution du programme pour identifier l objet passé en paramètre.

2 Question 2 Constructeurs, héritage et polymorphisme ( 6 points) Soit le code suivant : class Operateur Operateur(char = +); int operator()(int x, int y) const; char op; ; Operateur::Operateur(char oper) : op(oper) cout << constructeur - Operateur" << endl; int Operateur::operator()(int x, int y) const switch (op) case +: return (x + y); case -: return (x - y); class Operation Operation(int x = 0, int y = 0); Operation(char operateur, int x = 0, int y = 0); virtual int calcul() const; int getoperande1() const; int getoperande2() const; void affiche() const; protected: int operande1; int operande2; Operateur operateur; ; Operation::Operation(int op1, int op2) : operande1(op1), operande2(op2) cout << "constructeur 1 - Operation " << endl; Operation::Operation(char op, int op1, int op2) : operateur(op), operande1(op1), operande2(op2) cout << "constructeur 2 - Operation " << endl; int Operation::calcul() const return 0; int Operation::getOperande1() const return operande1; int Operation::getOperande2() const return operande2; void Operation::affiche() const cout << "resultat = "<< calcul() << endl; Page 1 de 13

3 class Soustraction: public Operation Soustraction(int op1 = 0, int op2 = 0); virtual int calcul() const; void affiche() const; int resultat; ; Soustraction::Soustraction(int op1, int op2) : Operation('-',op1, op2) cout << "constructeur - Soustraction "<< endl; int Soustraction::calcul() const return operateur(operande1,operande2); void Soustraction::affiche() const cout << "le résultat de " << operande1 << " - " ; cout << operande2 << " est egal a "<< calcul() << endl; a) (3 points) Dites ce qui sera affiché à l exécution du programme suivant : Operation inverser(operation oper) return Operation(oper.getOperande2(), oper.getoperande1()); int main() cout << " - 1 -" << endl; Operation a(25,13); cout << " - 2 -" << endl; Soustraction b(25,13); cout << " - 3 -" << endl; Operation c; cout << " - 4 -" << endl; c = inverser(a); cout << " - 5 -" << endl; return 0; Réponse: constructeur Operateur constructeur 1 Operation constructeur Operateur constructeur 2 Operation constructeur Soustraction constructeur Operateur constructeur 1 Operation constructeur Operateur constructeur 1 Operation - 5- Page 2 de 13

4 b) (3 points) Dites ce qui sera affiché à l exécution des fonctions f1 et f2 du programme suivant (attention : pour chaque appel de méthode, vérifiez bien si elle est virtuelle ou non): void f1(const Operation& oper) oper.affiche(); void f2(operation oper) oper.affiche(); int main() Soustraction b(25,13); // Dites ce qui sera affiché a partir d'ici cout << " - 1 -" << endl; f1(b); cout << " - 2 -" << endl; f2(b); cout << " - 3 -" << endl; return 0; Réponse: resultat = 12-2 resultat = Question 3 Polymorphisme (3 points) Ahmed, un étudiant finissant de Polytechnique, vient d être embauché par Ha Ha inc., une compagnie de jeux vidéo. On l intègre à l équipe de développement d un nouveau jeu. Dans ce jeu, on trouve deux types de monstres, les Grumps et les Chroks, et deux types d armes, soient des lasers et des bombes à neutrinos. Les monstres ne réagissent pas de la même manière à ces armes. Lorsqu ils sont attaqués par un laser, les Grumps s enfuient, alors les Chroks contreattaquent. Dans le cas d une bombe à neutrinos, c est l inverse : les Grumps contre-attaquent et les Chroks s enfuient. Considérez d abord les interfaces pour les armes et les monstres (pour simplifier, nous supposons que les méthodes fuir() et attaquer() ne font qu afficher un message, mais il est évident que dans une situation réelle ces méthodes seraient beaucoup plus complexes) : class Arme string get_type() const return "Arme"; ; class Laser : public Arme string get_type() const return "Laser"; ; Page 3 de 13

5 class BombeNeutrino: public Arme string get_type() const return "BombeNeutrino"; ; class Monstre string get_type() const return "Monstre"; void attaquer() cout << "Monstre attaque\n"; void fuir() cout << "Monstre fuit\n"; ; class Grump : public Monstre string get_type() const return "Grump"; void attaquer() cout << "Grump attaque\n"; void fuir() cout << "Grump fuit\n"; ; class Chrok : public Monstre string get_type() const return "Chrok"; void attaquer() cout << "Chrok attaque\n"; void fuir() cout << "Chrok fuit\n"; ; Voici comment Ahmed a programmé la réaction des monstres aux différentes armes: int main() Arme* a; Monstre* m; bool gameover = false; while (!gameover) if (a->get_type() == "Laser" && m->get_type() == "Grump") m->fuir(); else if (a->get_type() == "Laser" && m->get_type() == "Chrok") m->attaquer(); if (a->get_type() == "BombeNeutrino" && m->get_type() == "Grump") m->attaquer(); else if (a->get_type() == "BombeNeutrino" && m->get_type() == "Chrok") m->fuir(); else m->fuir();... Page 4 de 13

6 Le problème avec Ahmed, c est qu il dormait pendant le cours sur le polymorphisme (malgré un excellent professeur!). a) (1 point) Expliquez pourquoi le code de Ahmed ne fonctionne pas. Réponse : Puisqu elle n est pas virtuelle, la méthode get_type() retournera toujours le type de la classe de base. La méthode fuir() de monstre sera donc toujours exécutée, peu importe le type de monstre ou d arme. b) (2 points) On vous demande de modifier le code en profitant mieux du polymorphisme. Nous vous suggérons d ajouter aux monstres une méthode reagir() qui prend en paramètre une arme. Après vos modifications, la boucle du programme principal devrait ressembler à ceci : while (!gameover) m->reagir(a); Solution : class Arme virtual string get_type() const return "Arme"; ; class Laser : public Arme virtual string get_type() const return "Laer"; ; class BombeNeutrino: public Arme virtual string get_type() const return "BombeNeutrino"; ; class Monstre virtual string get_type() const return "Monstre"; virtual void attaquer() cout << "Monstre attaque\n"; virtual void fuir() cout << "Monstre fuit\n"; virtual void reagir(arme* arme) = 0; ; class Grump : public Monstre virtual string get_type() const return "Grump"; virtual void attaquer() cout << "Grump attaque\n"; virtual void fuir() cout << "Grump fuit\n"; virtual void reagir(arme* arme) if (arme->get_type() == "Laser") fuir(); else if (arme->get_type() == "BombeNeutrino") attaquer(); else throw logic_error("arme inconnue"); ; Page 5 de 13

7 class Chrok : public Monstre virtual string get_type() const return "Chrok"; virtual void attaquer() cout << "Chrok attaque\n"; virtual void fuir() cout << "Chrok fuit\n"; virtual void reagir(arme* arme) if (arme->get_type() == "Laser") attaquer(); else if (arme->get_type() == "BombeNeutrino") fuir(); else throw logic_error("arme inconnue"); ; Question 4 - STL (6 points) On souhaite construire une classe en C++ pour manipuler des ensembles d'entiers. On part de la déclaration suivante: class EnsembleEntiers EnsembleEntiers(); // Constructeur ~EnsembleEntiers(); // Destructeur int cardinal() const; // Retourne le nombre d items dans l ensemble void ajouter(int element); // Pour ajouter un entier void retirer(int element); // Pour retirer un entier bool operator == (const EnsembleEntiers& ens) const; // Teste l'égalité de 2 ensembles // À FAIRE, VOIR CI-DESSOUS ; a) (2 points) Pour le choix du conteneur, on hésite entre les options suivantes : vector, list et set. Supposons que dans notre application, on ne retire pratiquement jamais d éléments des ensembles. Par contre, le test d égalité est très souvent appelé. Dites quel conteneur est le plus approprié dans ce contexte (justifiez votre choix) et ajoutez la déclaration de ce conteneur à l interface de la classe. Indice : pensez au temps requis pour l exécution de chaque méthode, selon le type de conteneur utilisé. Solution : Il est préférable d utiliser un set, car il est plus rapide de tester l égalité de deux conteneurs triés. En plus, si on utilise un vecteur ou une liste, il faudra toujours vérifier si l item existe déjà avant de l ajouter, ce qui n est pas le cas avec un set, qui n ajoute jamais un élément qui existe déjà. On aura donc la déclaration suivante : set<int> ensemble; b) (2 points) Avec le conteneur que vous avez choisi, donnez le code des méthodes cardinal(), ajouter(), retirer() et ==. Réponse : int EnsembleEntiers::cardinal() const return ensemble.size(); void EnsembleEntiers::ajouter(int element) ensemble.insert(element); Page 6 de 13

8 void EnsembleEntiers::retirer(int element) ensemble.erase(element); bool EnsembleEntiers::operator==(const EnsembleEntiers& ens) const if (ensemble.size()!= ens.ensemble.size()) return false; Conteneur::iterator iter1 = ensemble.begin(); Conteneur::iterator iter2 = ens.ensemble.begin(); Conteneur::iterator fin1 = ensemble.end(); Conteneur::iterator fin2 = ens.ensemble.end(); while (iter1!= fin1 && iter2!= fin2) if (*iter1!= *iter2) return false; ++iter1; ++iter2; return true; c) (1 point) Définissez un objet fonction qu on construit en lui passant deux valeurs x et y, et qui permet de vérifier si un entier est compris entre ces deux valeurs. Solution : class ComprisEntre ComprisEntre(int x, int y) : min(x), max(y) bool operator() (int x) const return (min <= x && x <= max); int min; int max; ; d) (1 point) En supposant qu un conteneur séquentiel soit utilisé, donnez le code d une méthode de la classe EnsembleEntiers qui élimine de l ensemble toutes les valeurs comprises entre min et max, et dont la signature est la suivante : void filtrer(int min, int max) ; Votre méthode ne doit contenir aucune boucle et utilisera l objet fonction défini à la question précédente. Solution : Si le conteneur est un set : void EnsembleEntiers::filtrer(int min, int max) vector<int> temp(ensemble.begin(),ensemble.end()); vector<int>::iterator pos = remove_if(temp.begin(),temp.end(),comprisentre(min,max)); temp.erase(pos,temp.end()); ensemble.clear(); copy(temp.begin(),temp.end(),inserter(ensemble,ensemble.begin())); Page 7 de 13

9 Si le conteneur est un conteneur associatif : void EnsembleEntiers::filtrer(int min, int max) Conteneur::iterator fin = remove_if(ensemble.begin(),ensemble.end(),comprisentre(min,max)); ensemble.erase(fin,ensemble.end()); Question 5 Exceptions (2 points) Soit le code suivant : class Etudiant Etudiant(string m, string n); bool operator<(const Etudiant& e2) const; string matricule; string nom; ; Etudiant::Etudiant(string m, string n) if (m.length()!= 7) throw length_error("le matricule n'a pas sept chiffres"); matricule = m; if (n.empty) throw invalid_argument("le nom est vide"); nom = n; bool Etudiant::operator<(const Etudiant& e2) const return (this->matricule < e2.matricule); class comparer_etudiants bool operator()(const Etudiant* e1, const Etudiant* e2) const return ((*e1) < (*e2)); ; class Cours ~Cours(); void ajouter_etudiant(string m, string n); set<etudiant*, comparer_etudiants> etudiants; ; Cours::~Cours() set<etudiant*, comparer_etudiants>::iterator itr; for (itr = etudiants.begin(); itr!= etudiants.end(); ++itr) delete (*itr); void Cours::ajouter_etudiant(string m, string n) Etudiant* e = new Etudiant(m,n); etudiants.insert(e); Page 8 de 13

10 int main() Cours inf1010; inf1010.ajouter_etudiant(" ", "Michel"); inf1010.ajouter_etudiant(" ", "Dominic"); return 0; a) Modifiez la méthode ajouter_etudiant() de manière à ce qu elle lance une exception lorsqu on tente d ajouter un étudiant qui existe déjà. b) Modifiez le main() pour gérer adéquatement les exceptions pouvant survenir dans ce programme. Remarque : Toutes les classes d exceptions utilisées dérivent de la classe logic_error et possèdent l unique méthode publique what() retournant le message d erreur. Solution : a) void Cours::ajouter_etudiant(string m, string n) Etudiant* e = new Etudiant(m,n); if (etudiants.find(e)!= etudiants.end()) delete e; throw logic_error("ajout d'un étudiant déjà inscrit"); etudiants.insert(e) ; b) int main() Cours inf1010; try inf1010.ajouter_etudiants(" ", "Michel"); inf1010.ajouter_etudiants(" ", "Dominic"); catch (logic_error& err) cerr <<"Une erreur est survenue : " << err.what() << endl; return 0; Page 9 de 13

11 Question 6 Programmation événementielle (2 points) Maria, qui dormait pendant les cours sur la programmation événementielle, aimerait se préparer au cas où il y aurait une question sur cette matière à l examen final de INF1010. a) Comment expliquerez-vous à Maria le fonctionnement général de la programmation événementielle, afin qu il puisse répondre de manière complète et concise si une telle question se retrouvait à l examen final? Réponse : Dans la programmation événementielle, on n a pas une séquence claire des opérations effectuées par le programme. Celui-ci réagit plutôt à certains événements pré-déterminés dont on ne peut anticiper l occurrence. Un gestionnaire d événements reçoit et décode les événements qui se produisent. Lorsqu un événement se produit, il cherche la méthode qui a été associée à ce type d événement et l exécute. b) Soit un bouton dans une interface graphique. Expliquez ce qui se passe lorsqu on clique sur un tel bouton. Réponse : Le bouton est un widget qui a un identificateur unique. Le programmeur a crée une «table» qui associe une méthode à chaque identificateur. Ainsi, lorsqu on cliquera sur le bouton, le gestionnaire n aura qu à chercher dans la table la méthode associée à l identificateur du bouton en question. C est à cette méthode qu on donnera ensuite le contrôle. Question 7 - Bonus (0,5 points) Né en 1912 et décédé en 1954, je suis considéré comme un des pères fondateurs de l informatique moderne. Entre autres, je suis à l origine de la formalisation du concept de calculabilité, qui a profondément marqué cette discipline. Durant la seconde guerre mondiale, j ai dirigé les recherches qui ont conduit à déchiffrer les codes secrets générés par la machine Enigma utilisée par les Nazis. Qui suis-je? Réponse : Alan Turing Page 10 de 13

12 Annexe - STL Tous les conteneurs contiennent les méthodes suivantes: size_t size() Retourne le nombre d'éléments contenus dans le conteneur bool empty() Vérifie si le conteneur est vide iterator begin() Retourne un itérateur positionné sur le premier élément du conteneur iterator end() Retourne un itérateur à accès direct positionné après le dernier élément du conteneur iterator rbegin() Retourne un itérateur inverse positionné sur le dernier élément du conteneur iterator rend() Retourne un itérateur inverse positionné sur le premier élément du conteneur void insert(pos, elem) Insère une copie de l élément à position spécifiée (pour set et map, pos n est qu une indication d un point de départ pour la recherche de la position d insertion) void erase(pos) Élimine l'élément se trouvant à la position spécifiée void clear() Vide le conteneur Interface de vector<t>: vector<t>(int n) size_t capacity() void reserve(n) T& front() T& back() T& operator[] void push_back(elem) void pop_back() size_t size() void resize(n) Constructeur qui fixe la capacité initiale à n Retourne le nombre maximal d'éléments que le vecteur peut contenir sans avoir besoin d'une nouvelle réallocation Fixe la capacité à n éléments Retourne le premier élément Retourne le dernier élément Retourne le nième élément Insère une copie de l élément à la fin Retire le dernier élément Retourne la taille du vecteur (c est-à-dire le nombre d éléments qu il contient) Fixe la taille à n (si la taille augmente, les espaces supplémentaires sont remplis par les constructeurs par défaut) Interface de deque<t>: En plus des méthodes de la classe vector, il contient les méthodes additionnelles suivantes: void push_front(elem) Insère une copie de l élément au début void pop_front() Retire le premier élément Interface de list<t>: T& front() T& back() Void push_back(elem) Void pop_back() void push_front(elem) void pop_front() Void remove(val) Void remove(prédicat) void sort() void reverse() Retourne le premier élément Retourne le dernier élément Insère une copie de l élément à la fin Retire le dernier élément Insère une copie de l élément au début Retire le premier élément Retire toutes les occurrences d'une valeur Retire toutes les occurrences pour lesquelles le prédicat retourne la valeur true Trie les éléments de la liste Inverse les éléments de la liste Interface commune de set<t> et multiset<t>: int count(elem) Compte le nombre d'occurrences d'un élément iterator find(elem) Retourne un itérateur positionné sur la première occurrence de l'élément recherché int erase(elem) Élimine toutes les occurrences d un élément et retourne le nombre d items retirés Page 11 de 13

13 Méthode unique à set<t> et map<t>: pair<iterator, bool> insert(elem) Insère une copie d un élément. La paire retournée contient la position du nouvel élément et un booléen indiquant si l'insertion s'est faite avec succès, c'est-à-dire si l'élément n'existait pas déjà Méthode unique à multiset<t> et multimap<t>: iterator insert(elem) Insère une copie d un élément et retourne la position du nouvel élément Interface commune de map<t> et multimap<t>: int count(k) Compte le nombre d'occurrences d'éléments dont la clé est k iterator find(k) Retourne un itérateur positionné sur le premier élément dont la clé est k int erase(k) operator[ ] Élimine le(s) éléments associé(s) à la clé k et retourne le nombre d items retirés Insère une copie d un élément associé à la clé passée en paramètre Certains algorithmes de la STL for_each(deb, fin, fonction) Applique une fonction à tous les éléments compris entre deb et fin (inclusivement) count(deb, fin, val) Compte le nombre d'occurrences d'une valeur count_if(deb, fin, prédicat) Compte le nombre d'éléments pour lesquels le prédicat retourne true min_element(deb, fin) Retourne un itérateur sur le plus petit élément max_element() Retourne un itérateur sur le plus grand élément find(deb, fin, val) Retourne un itérateur qui pointe sur la première occurrence de la valeur cherchée find_if(deb, fin, prédicat) Retourne un itérateur qui pointe sur la premier élément pour lequel le prédicat retourne true copy(deb1, fin1,deb2) Copie tous les éléments de deb1 à fin1 dans un autre conteneur, à partir de la position deb2 transform(deb1, Applique la fonction à tous les éléments de de deb1 à fin1et, pour chaque fin1,deb2,fonct) élément, met le résultat de la fonction dans un autre conteneur, à partir de la position deb. replace(deb1, fin1,val1, val2) Remplace toutes les occurrences de val1 par la valeur val2 replace_if(deb, fin, prédicat, Remplace par val tous éléments pour lesquels le prédicat retourne true val) remove(deb, fin, valeur) Retire toutes les occurrences qui sont égales à la valeur passée remove_if(deb, fin, prédicat) Retire toutes les items pour lesquels le prédicat retourne true (fonctionne seulement avec les conteneurs séquentiels) reverse(deb, fin) Inverse l ordre des élément du conteneur (seulement pour les conteneurs séquentiels) sort(deb, fin) Trie les éléments du conteneur (seulement pour les conteneurs séquentiels) Foncteurs prédéfinis de la STL negate<t>( ) - param plus<t>() param1 + param2 minus<t>() param1 - param2 multiplies<t>() param1 * param2 divides<t>() param1 / param2 modulus<t>() param1 % param2 equal_to<t>() param1 == param2 not_equal_to<t>() param1!= param2 less<t>() param1 > param2 greater<t>() param1 < param2 less_equal<t>() param1 param2 greater_equal<t>() param1 param2 logical_not<t>()! param logical_and<t>() param1 && param2 logical_or<t>() param1 param2 Page 12 de 13

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

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

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

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

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

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

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

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

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

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

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

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

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

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

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

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

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

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

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

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

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

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

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

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

Java 1.5 : principales nouveautés

Java 1.5 : principales nouveautés Cours 6 - TEP - UPMC - 2008/2009 p. 1/34 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles types énumérés

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Génie Logiciel I Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M.

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

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

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

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

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

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

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

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Structurer ses données : les tableaux. Introduction à la programmation

Structurer ses données : les tableaux. Introduction à la programmation Structurer ses données : les tableaux Introduction à la programmation Plan du document Introduction Introduire la notion de type Types primitifs Types composés Tableaux de type primitif Page 2 Notion de

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

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

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

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

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

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

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

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

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

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Exercices INF5171 : série #3 (Automne 2012)

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

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

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture API04 Contribution Apache Hadoop: Présentation et application dans le domaine des Data Warehouses Introduction Cette publication a pour but de présenter le framework Java libre Apache Hadoop, permettant

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

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

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

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

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

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Machines virtuelles fonctionnelles (suite) Compilation ML Java Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles

Plus en détail

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

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

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre

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

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

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

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Chapitre V. Les classes : Object, Vector, etc.

Chapitre V. Les classes : Object, Vector, etc. Chapitre V Les classes de base Les classes : Object, Vector, etc. Plan La classe Object Les collections La classe ArrayList La classe Vector Les classes Wrappers Les classes String et StringBuffer La classe

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

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

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

CHAPITRE V. Recherche et tri

CHAPITRE V. Recherche et tri Cherchez et vous trouverez,... car qui cherche trouve. Matthieu 7 7-8 et Luc 11 9-10 CHAPITRE V Recherche et tri Objectif. Comprendre les techniques de base pour organiser des données ordonnées. Ce chapitre

Plus en détail

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30 Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Java Licence Professionnelle CISII, 2009-2010

Java Licence Professionnelle CISII, 2009-2010 Licence Professionnelle CISII, 2009-2010 Cours 1 : Introduction à Java A. Belaïd abelaid@loria.fr Cours disponible sur le site : http://www.loria.fr/~abelaid puis Teaching 1 Fonctionnement 12 séances :

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

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