30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C++ 1. 16.mars.10 Cours 4 11.mai.10 Cours C++ 2



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

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction au langage C

Introduction à l héritage en C++

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Programmation Objet Java Correction

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

Programmation en C/C++


UE Programmation Impérative Licence 2ème Année

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

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

Les structures. Chapitre 3

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

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

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++ (partie I)

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

Initiation. àl algorithmique et à la programmation. en C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

Claude Delannoy. 3 e édition C++

Objets et Programmation. origine des langages orientés-objet

Introduction à C++ et à wxwidgets

Programmation système I Les entrées/sorties

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Rappels Entrées -Sorties

Algorithmique et Programmation, IMA

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

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Cours d Algorithmique et de Langage C v 3.0

Analyse et programmation 1

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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)

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

Les structures de données. Rajae El Ouazzani

TP1 : Initiation à Java et Eclipse

Cours 1: Java et les objets

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

Initiation à JAVA et à la programmation objet.

Programmer en JAVA. par Tama

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Une introduction à Java

TP : Gestion d une image au format PGM

Corrigés des premiers exercices sur les classes

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Généralités sur le Langage Java et éléments syntaxiques.

Cours 6 : Tubes anonymes et nommés

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

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

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

La technologie Java Card TM

Programmation système en C/C++

Les processus légers : threads. Système L3, /31

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Derrière toi Une machine virtuelle!

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Java c est quoi? Java pourquoi?

Chapitre VI- La validation de la composition.

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

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

OS Réseaux et Programmation Système - C5

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

PIC EVAL Dev Board PIC18F97J60

Outils pour la pratique

Le langage C. Séance n 4

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

Travaux Dirigés n 1 : chaînes de caractères

et Programmation Objet

PROGRAMMATION PAR OBJETS

Corrigé des exercices sur les références

Programmation en langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation stochastique

Programmation C. J.-F. Lalande. 15 novembre 2012

modules & compilation

as Architecture des Systèmes d Information

LE LANGAGE C++ ENAC 1997 A. DANCEL

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

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Premiers Pas en Programmation Objet : les Classes et les Objets

ALGORITHMIQUE ET PROGRAMMATION En C

Représentation d un entier en base b

Cours 1 : Qu est-ce que la programmation?

IRL : Simulation distribuée pour les systèmes embarqués

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n 2.

[DEVELOPPEMENT SUR LA CIBLE 2440] 19 avril 2010

Transcription:

2ème partie de cours: 23.fév.10 Cours 1 20.avr.10 TEST 24.fév.10 TP1 21.avr.10 miniprojet 26.fév.10 TP réserve 23.avr.10 miniprojet 2.mars.10 Cours 2 27.avr.10 Présentation miniprojet 3.mars.10 TP2 28.avr.10 Présentation miniprojet 5.mars.10 TP réserve 30.avr.10 Présentation miniprojet 9.mars.10 Cours 3 4.mai.10 Cours C++ 1 10.mars.10 TP 5.mai.10 TP 12.mars.10 TP réserve 7.mai.10 TP réserve 16.mars.10 Cours 4 11.mai.10 Cours C++ 2 17.mars.10 TP 12.mai.10 TP 19.mars.10 TP réserve jeudi ascension 23.mars.10 Cours 5 14.mai.10-24.mars.10 TP 18.mai.10 Cours C++ 3 26.mars.10 TP réserve 19.mai.10 TP 30.mars.10 Cours 6 21.mai.10 TP réserve 31.mars.10 TP 25.mai.10 Cours C++ 4 2.avr.10 Vacances de Pâques > 11.4 26.mai.10 TP 13.avr.10 Test à blanc 28.mai.10 TP réserve / test à blanc 14.avr.10 miniprojet 29.mai.10 Festival de robotique 16.avr.10 miniprojet 1.juin.10 TEST Introduction au C++ Francesco Mondada Laboratoire de systèmes robotiques IMT - STI - EPFL

But du cours: Aborder un language orienté objet: le C++ ce qui implique la compréhension de: concept d objet et de classes une série de concepts liés à la gestion des classes des améliorations du C et d un point de vue plus global: motivation du C++: quand et pourquoi l utiliser contrôle d un système réel depuis un PC Exemples: 1) Programmation du logiciel embarqué dans une souris d ordinateur (processeur 8 bits, quelques kbytes de mémoire) 2) Programmation d un traitement de données pour l analyse de la trajectoire d un robot afin d en déduire les erreurs de position et affiner le régulateur 3) Programmation d une interface utilisateur pour piloter un robot à travers d informations visuelles et sensorielles 4) Programmation d un simulateur de robots mobiles

Structure du cours: 1. Cours C++ But: assimiler les concepts principaux du C++ Période: 4 semaines 2. TP de C++ pur But: comprendre le C++ Période: 2 semaines 3. TP de C++ interface graphique But: appliquer le C++ aux interfaces graphiques Période: 2 semaines Contrôle: test Fonctionnement du cours: Cette partie du cours se base sur: Un livre sur le C++: Claude Delannoy, "Apprendre le C++", Eyrolles, "Best of", ISBN 978-2-212-12414-9, Paris, 2008, disponible à la librairie "la fontaine" Le robot e-puck Un résumé d une page fait par deux étudiants Les TP indispensables pour la compréhension Utilisation de Qt Creator (IDE) Utilisation de Qt (interface graphique) Un corrigé du TP fait par 4 étudiants

Passage du C au C++ Par rapport au C: Le C++ est une extension du C qui apporte, entre autres, le concept d objet C++ est conceptuellement plus complet et propre, ce qui permet d écrire du code plus fiable C++ permet d écrire de façon plus compacte C++ est moins supporté pour des processeurs embarqués (dspic est un exemple) Les fonctionalités supplémentaires du C++ se payent parfois par un code plus gros C++ est plus complexe Passage du C au C++ Quelques apports du C++: L orienté objet et les concepts liés La surcharge des fonctions et des opérateurs Les références Les valeurs par défaut pour les paramètres des fonctions Les exceptions

Le concept d objet Données et fonctions en C: Main Données Fonctions Le concept d objet Données et fonctions en C: Main Données A Données B Fonctions A Fonctions B

Le concept d objet Encapsulation des données et des fonctions en C++: Main Fonctions Données Le concept d objet Encapsulation des données et des fonctions en C++: Données B Fonctions B Main Fonctions A Données A

Le concept d objet Exemple en C: struct Complex float r; /*real part*/ float i; /*imag part*/ ; struct Complex C_conj (struct Complex a) struct Complex result; result.r = a.r; result.i = -a.i; return(result); struct Complex C_add (struct Complex a, struct Complex b) struct Complex result; result.r = a.r + b.r; result.i = a.i + b.i; return(result); struct Complex C_sub (struct Complex a, struct Complex b) struct Complex result; result.r = a.r - b.r; result.i = a.i - b.i; return(result); Le concept d objet Exemple en C: main() struct Complex z1, z2, z3; z1.r = 0.0; z1.i = 0.5 z2.r = 0.0; z2.i = 3; z3 = C_add (z1, z2);

Le concept d objet Exemple en C++: #include <iostream> class Complex double real; double imaginary; Complex(double r,double i) real=r; imaginary=i; double GetReal() const return real; double GetImaginary() const return imaginary; Complex operator+(const Complex &z) return Complex(GetReal()+z.GetReal(), GetImaginary()+z.GetImaginary()); ; int main() Complex u = Complex(0,1); Complex v = Complex(1,0); Complex z = u+v; cout << "real = " << z.getreal() << ", imaginary = " << z.getimaginary() << endl; return 0; Quelques informations utiles: (ch. 5, p.63) En C++ les entrèes - sorties sont gérées par des streams - flots. C++: C: #include <iostream> #include <stdio.h> std::cout << Hello world\n ; printf( Hello world\n ); Pour comprendre ceci on ne va pas aborder la surcharge des opérateurs. Pour information, les opérateurs (+, <, >,... ), en C, sont réservés à des types prédéfinis. En C++ l utilisateur peut utiliser ces opérateurs pour ses propres classes. Dans le cas ci-dessus, l object std::cout, de type std::ostream, comporte un opérateur << qui prend des valeurs et les envoyes sur la sortie standard.

Classes, objets, private/public Francesco Mondada Laboratoire de systèmes robotiques IPR - STI - EPFL Introduction Le concept d object permet: De maintenir ensemble les méthodes et les données unies logiquement. D encapsuler les données. Ceci permet de limiter l accès à certaines données. Par ce mécanisme seulement les méthodes propres à l objet peuvent accéder à ses données privées. Ce filtrage garantit une meilleure stabilité des données. De dissocier la définition de l implémentation, de particulariser l implémentation, grâce l héritage et au polymorphisme.

Déclaration d une classe Nom de la classe int position_x,position_y; double angle; void ResetPos(); ; int status; void PlaceRobot(int xinit,int yinit) position_x = xinit; position_y = yinit; Données/méthodes privées (accès interne) // in mm // in rad Données/méthodes publiques (accès depuis l externe) Déclaration de données membres int position_x,position_y; // in mm double angle; /* in rad */ ; int status; Données privées (accès interne) Données publiques (accès depuis l externe) PS: en C il n y a pas de données privées struct en C++ = Classe avec tous les membres publics

Déclaration de méthodes int position_x,position_y; // in mm void ResetPos(); void PlaceRobot(int xinit,int yinit) position_x = xinit; position_y = yinit; ; Méthodes privées (accès interne) Méthodes publiques (accès depuis l externe) Implémentation de méthodes int position_x,position_y; double angle; void ResetPos(); ; int status; void PlaceRobot(int xinit,int yinit) position_x = xinit; position_y = yinit; void Robot::ResetPos() position_x = position_y = 0; // in mm // in rad

Variables objets: int main() Robot epuck1; // objet epuck1 déclarations static Robot epuck2; Robot epucks[10]; Robot *epuckptr; // objet statique // tableau avec 10 objets // pointeur sur un objet robot Accès aux données membres: int position_x,position_y; // in mm int status; void PlaceRobot(int xinit,int yinit) position_x = xinit; position_y = yinit; ; int main() Robot epuck; Robot *epuckptr; // objet epuck // pointeur sur un objet robot if(epuck.status == 1). epuckptr = &epuck; if(epuckptr->status == 1). if((*epuckptr).status == 1).

Accès aux méthodes: int position_x,position_y; // in mm int status; void PlaceRobot(int xinit,int yinit) position_x = xinit; position_y = yinit; ; int main() Robot epuck; Robot *epuckptr; // objet epuck // pointeur sur un objet robot epuck.placerobot(0,0); epuckptr = &epuck; epuckptr->placerobot(0,0); Accès aux méthodes: int position_x,position_y; // in mm void ResetPosX() position_x=0; int status; void PlaceRobot(int xinit,int yinit); ; void Robot::PlaceRobot(int xinit,int yinit) if(xinit==0) ResetPosX(); else position_x = xinit;

Mot clé this Francesco Mondada Laboratoire de systèmes robotiques IPR - STI - EPFL Le mot clé this, dans un fonction membre, désigne un pointeur sur l objet appelant: int position_x,position_y; int status; // in mm ; void PlaceRobot(int xinit,int yinit) this->position_x = xinit; this->position_y = yinit;

TP de cette semaine Utilisation de Qt Creator Création d un projet simple Outils de debug Définition d une classe pour gérer le robot par bluetooth Petite démo de déplacement