Cours Initiation au C++ 

Version du 07/01//2019


Sorbonne Universite 

F. Hecht, (FH)   X. Claeys  (XC) , Site des TD 


Année 2018-2019 (6 ECTC) 


Emploi du temps M1.



Examen S1 le mardi 8 janvier 2019 de 8h30 a10h30 salle 14-15 107

Soutenance des projets: les 14 et 15 Janvier 2019  


le rapport et les sources de votre projet sont à envoyer avant le Lundi  7 Janvier 2018  08h00 de Paris.

à Frederic.Hecht@upmc.fr et à claeys@ljll.math.upmc.fr


Liste des projets attributer   liste-projets.txt


Horaires de passage pour la soutenance (en cas impossibilité envoiyez un courriel

à Frederic.hecht@upmc.fr pour changer l'horaire de passage ceci avant 11/01/2019). 


MARIN

ALEXANDRE, VITAL

9h00

Lundi 14/0/2019

salle 15-25 314

JACQUELIN

BAPTISTE

9h00

Lundi 14/0/2019

salle 15-25 314

LAM

DAVID

9h00

Lundi 14/0/2019

salle 15-25 314

BEN SLIMANE

TINHINANE

10h00

Lundi 14/0/2019

salle 15-25 314

BEN SALEM--KNAPP

LOUISE

10h00

Lundi 14/0/2019

salle 15-25 314

PELZ

Josef Luis 

10h00

Lundi 14/0/2019

salle 15-25 314

Gerard 

Leon

11h00

Lundi 14/0/2019

salle 15-25 314

BCHIR

CHEMSEDINE

11h00

Lundi 14/0/2019

salle 15-25 314

MILISAVLJEVIC

CLEMENT

11h00

Lundi 14/0/2019

salle 15-25 314

LYGATSIKA

IOANNA-MARIA

14h00

Mardi 15/01/2019

salle 15-25 314

CISSE

ALY

14h00

Mardi 15/01/2019

salle 15-25 314

BOUDI

ANAS

14h00

Mardi 15/01/2019

salle 15-25 314

MEAH

IQRAA

15h00

Mardi 15/01/2019

salle 15-25 314

DREIER

MAXIMILIEN

15h00

Mardi 15/01/2019

salle 15-25 314

BALENDRAN

ALAN

15h00

Mardi 15/01/2019

salle 15-25 314

TAHANI

MAROUANE

16h00

Mardi 15/01/2019

salle 15-25 314

BUSTAMANTE

PASCAL

16h00

Mardi 15/01/2019

salle 15-25 314

FEND

Charia

16h00

Mardi 15/01/2019

salle 15-25 314

QUERO

NICOLAS

17h00

Mardi 15/01/2019

salle 15-25 314

GREMILLET-NGUYEN


17h00

Mardi 15/01/2019

salle 15-25 314


les notes/ numéros étudiant du partiel du 8/11/2018


0,0

2505516

8,1

3873874

10,6

3361149

12,3

3531619

9,0

3805387

5,0

3523397

0,0

3530859

6,2

3771513

11,9

3704779

0,0

3876932

6,7

3532367

1,5

3300132

7,5

3531268

5,0

3871594

11,5

3200661

7,1

3873630

10,0

3520176

13,8

3876757

2,3

3300761

0,0

3702004



8,5

3803635

18,1

3803087

5,4

3803043



F. Hecht 

            Jeudi                    8h30 – 10h30            Salle 14-15 108


T.D:X. Claeys, (T.D)     mardi 17h-20h

voir  https://www.ljll.math.upmc.fr/~claeys/MM016.html



les projets 




NotesdeCoursC++.pdf


Evaluation: Les sujets des evaluations précédentes 


Notation:

   Ex /20  = sup (examen ,(partiel+ examen) /2) 

   CC  /20  =    Note de TD  controle continue

   Pj /20  =         50% rapport et programme  

                                  + 50% soutenance 

Ex: note examen/20

Pj: Note Projet/20

CC:  note de contrôle continue/20 


Total=( max(Ex+Ex,Ex+Partiel)/2 + 3*Pj + CC) /100

 

Pour les debutants en programmation vous pouvez tester vos

programme avec le site:


Cours de C pour débutants, par Mathias Hiron

http://a.michelizza.free.fr/pmwiki.php?n=TutoCFrench.TutoCFrench

Bien programmer en langage C (Emmanuel Delahaye)

TUTORIELS C++


Pour bien comprendre la gestion mémoire

La gestion de la mémoire en langage C


Outil informatiques utilises sur votre ordinateur:


Si vous avez un ordinateur de type Windows 98, XP, Vista, 7, 8 

il faut utiliser l'environnement msys2 qui est le portage des outil unix sur Windows.

voir la page : installation de  msys2.html

Si vous avez un ordinateur de type Unix (Linux, FreeBSD, ....)

il faut installer les paquets suivants:

g++ et les outils de développement

X11 et les outils de développement

curl (outil réseau)

texlive

emacs ou xemacs



Si vous avez un ordinateur de type apple (OSX)

il faut installer les developper tools qui sont disponible sur App Store   (Gratuit)

installation MacTeX.pkg et texshop/ pour latex 


Pour Linux, 

installer les outils de développement  :

 g++, gcc, make,  et gnu plot



S1/Jeudi 13 Septembre: FH


le système unix,  les commandes de base de linux 

voir par exemple http://www.linux-france.org/article/debutant/debutant-linux.html


Présentation:

- Organisation du cours (partiel, projets, examen, soutenance)

- Site du cours 

- Calcul scientifique, C++

- Développement sous UNIX

- Les sous-sujets (Algorithmique, complexité, structure de données, graphes, analyse programmation dynamique)


Début de l'étude

- quelques commandes ls, cat, rm, cd, pwd, vi, emacs

- programme SerieDesUn.cpp : compilation et exécution à la main. Utilisation de make coucou

- analyse du programme, #include, using namespace (on y reviendra)


les type de base entier et flottant


une premiere commande  de compilation du fichier SerieDesUn.cpp  


make SerieDesUn 


pour lancer le programme faire

./SerieDesUn 


l

Pour installer les outils de développement sous Windows,   lire le fichier msys2.html


Tous les exemples des programme sont dans: 

s1 et la version zip s1.zip



S2/Jeudi 20 Septembre: FH


Les opérateurs  des operateurs.pdf du C++


les pointeurs et références, les structure de contrôles for, while, if , else , break, continue

   -> relation entre pointeurs et tableaux


Oublie de l'instruction switch 


   switch ( expression )  

   case constant-expression : statement  

   [default  : statement]  


en fin instruction case ne pas oublie le break pour sortie du swicth et ne pas continue le case suivant. 


 do  

   statement  

   while ( expression ) ;  



Ecriture de fonction et explication du problème du passage des paramètres



Récuper les argument du shell et programmer le crible Erathostene 


Les deux examples coder sont  dans s2 et ou dans l'archive  s2.zip   



S3/Jeudi 27 Septembre: FH


- Inclusion des fichiers d'entête et include guards

compilation separe  les .hpp les .cpp 

   voir fichier s3/compilation_separe.txt

Une premier classe R2 et surcharge d'opérateur 

  construction 

  constructeurs  par défaut

  les méthodes versus fonction.

  les surcharges de opérateurs pour finir 

  dans (méthode) et hors (fonction)  de la classe

Tous les donnés sont dans s3 et ou dans l'archive s3.zip



S4/Jeudi 04 Octobre: FH




Une classe R2 complete, s4/R2.hpp

plus des version avec les définition dans la classe et hors de la classe s4/R2-v1.hpp et s4/R2-v1.cpp


explication de la gestion membrue de fonction avec la pile (stack)  et le tas (heap)

pour les variable locale des  fonctions recusive or ou)

deference entre variable (classique : dynamique et static).


les operators new et delete pour reserve et déreserve  de la memoire dans le tas (static)


debut de la creation  d'une classe tableau (A) 


avec les probleme des opérateurs de copie !!!!!!!!!!!

cf s4/A-v0.cpp (sans bug visible car pas de copie) et s4/A-v0bug.cpp (bug car copie)


Tous les donnés sont dans s4 et ou dans l'archive s4.zip



S5/Jeudi 11 Octobre: FH
Des classe avec des allocation  et des destructeurs


Problème de Operation de copie 

voir Règle 1 (section 4.4) 


Optimisation de classe A et problème de vitesse execution 

dans la programmation simple.



Tous les données sont dans s5 et ou dans l'archive s5.zip



S6/Jeudi 18 Octobre: FH


Programmation générique, les templates


les contraintes associes a la programmation générique

les ambiguïtés , les problèmes lies aux conversions automatique (cast)


L'exemple est dans s6

presentation de la STL 

introduction des conteneurs et itérateurs et de coût des associés.

Des exemples assez complet  d'utilisation sont dans le dossier slt   ou slt.zip



S7/Jeudi 25 Octobre: FH

Algorithmique 


chapitre 5 des notes de cours 


Tous les examples sont dans s7 ou s7.zip



**/Jeudi 1 Novembre:   Vacances 


S8/Jeudi 8 Novembre: Partiel 


partial.pdf



S9/Jeudi 15 Novembre: 


Presentation des Projets sujet-projets-2018.pdf



A vous de choisir votre projet et de crée votre binôme 

nous envoyer vos préférence par mail pour que nous validions ou pas. 



Explication de la syntaxe des classe derives 

et des méthodes virtual (cf OG.cpp) dans les classe derives pour appeler

les méthodes des classe dérivé plutôt que  la méthode de la classe mère 

le graphique obtenu s9/plot.pdf


les exemples et programme sont  dans s9 et/ou  s9.zip  


S10/Jeudi 22 Novembre: 


Programmation d'algorithme sur les graphes

 Une classe pour modéliser un graphe défini par ces arcs

et pour parcourir l'ensemble de arêtes incident et partant. 


 Calcul du nombre de composante connexe d'un graphe par coloriage

 Calcul du nombre de composante connexe d'un graphe  avec l'algorithme de Krusal


Implementation de l'algorithme  de Dijkstra 


Les exemples et programme sont dans s10 et/ou s10.zip


S11/Jeudi 29 Novembre: 


Bref introduction des licences des logiciels libres GLP, LGPS , ...


Installation, compilation de bibliothèques tier( NTL et Eigen)


https://www.shoup.net/ntl/

https://eigen.tuxfamily.org/dox/GettingStarted.html


Introduction à la dérivation numérique et différentiation automatique (20mn)

Les examples et programme test sont dans s11 et/ou s11.zip