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)
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
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)
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:
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
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