Cours Initiation au C++
MUMA016
Version du 14/01/2020
Sorbonne Universite
F. Hecht, (FH) X. Claeys (XC) , Site des TD
Année 2019-2020 (6 ECTC)
Examen S1 le mardi 7 janvier 2020 de 9h00 a 11h00 salle 14-24 101
Soutenance des projets: les 14 et 15 Janvier 2020
le rapport et les sources de votre projet sont à envoyer avant le Lundi 13 Janvier 2020 08h00 de Paris.
à frederic.hecht@sorbonne-universite.fr et à claeys@ljll.math.upmc.fr
Liste des projets attributer liste-projets.txt
Les notes du partiel NotePartiel.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).
en salle 15-25 326b .
MAHI |
SALAH-EDDINE |
x |
14/01 14h00 |
|
|
x |
14/01 14h00 |
RONDEAU |
FLORENT |
x |
15/01 17h00 |
ELUERE |
LUC |
x |
14/01 15h00 |
KANE |
SEYDOU |
x |
14/01 15h00 |
LOUCAR |
KHADIME |
x |
14/01 15h00 |
ALAVIOUN |
SEYED |
x |
14/01 16h00 |
CONTI |
PAOLO |
x |
15/01 16h00 |
DIALLO |
MALICK TOUSSAINT |
x |
14/01 16h00 |
ALAMA |
YVONNE |
x |
15/01 14h00 |
BLANKE |
THOMAS |
x |
15/01 14h00 |
COUSINO |
THEO |
x |
15/01 14h00 |
MINLOUBOU |
DAVID |
x |
15/01 15h00 |
FERHAT |
AMELIA |
x |
15/01 15h00 |
KEITA |
IBRAHIMA |
x |
14/01 14h00 |
MEZZINE |
ILIAS |
x |
15/01 16h00 |
OUARAB |
SARA |
x |
15/01 16h00 |
SATOURI |
MOINE |
x |
15/01 17h00 |
les étudiants sont absent à l'écrit.
RJAIBA |
IMEN |
EKWORAWAT |
ROERINA |
FAN |
CHUNYANG |
HERVE |
PIERRICK |
LANCE |
ARMAND |
LANKERS |
LAURA |
LEVY |
THEO |
LIANG |
JIAXIN |
LUO |
QIAOYU |
|
|
F. Hecht
Jeudi 8h30 – 10h30 Salle 14-15 103
T.D:X. Claeys, (T.D) mardi 17h-20h a l'Atrium en salle micro 435.
voir https://www.ljll.math.upmc.fr/~claeys/MM016.html et le Moodle pour les TPs
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 12 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 pwd, ls, mkdir, cd, pwd, vi, emacs
-programme main.cpp qui retourne 0 ou 1
la compilation et test de le terminal:
cd s1
make main
test
./main
# test du retour de la fonction main dans le shell
if ./main ; then echo ok;else echo Pb;fi
- programme SerieDesUn.cpp : compilation et exécution à la main.
une premiere commande de compilation du fichier SerieDesUn.cpp
make SerieDesUn
Attention au bug si compilation avec optimiseur -O
Pour lancer le programme faire
./SerieDesUn
Pour installer les outils de développement sous Windows, lire le fichier msys2.html
sous MacOS installer Xcode (gratuit sous App Store attention plus de 5Go)
sous linux ubuntu voir:
Tous les exemples des programme sont dans:
voila les sortie du terminal pendant le cours:
ici : int s; et les 1.F sont remplacés pas des 1 dans serie-des-un.cpp
MBP-FH6:s1 hecht$ make serie-des-un
c++ serie-des-un.cpp -o serie-des-un
MBP-FH6:s1 hecht$ ./serie-des-un
s = 2147483647
MBP-FH6:s1 hecht$ time ./serie-des-un
s = 2147483647
real 0m3.675s
user 0m3.665s
sys 0m0.007s
# recompilation on version optimize théoriquement 3 fois plus rapide environ
# ici trop agressif, le code boucle
MBP-FH6:s1 hecht$ c++ -O serie-des-un.cpp -o serie-des-un
MBP-FH6:s1 hecht$ time ./serie-des-un
^C
real 0m24.118s
user 0m24.088s
sys 0m0.019s
MBP-FH6:s1 hecht$
ici : float s; et les 1 sont remplacés pas des 1.F dans serie-des-un.cpp
MBP-FH6:s1 hecht$ make serie-des-un
c++ serie-des-un.cpp -o serie-des-un
MBP-FH6:s1 hecht$ time ./serie-des-un
s = 1.67772e+07
real 0m0.062s
user 0m0.056s
sys 0m0.005s
S2/Jeudi 19 Septembre: Axel Fourmont
Les opérateurs des operateurs.pdf du C++
les note de cours de la semaine S2 s2/noteC++S2.pdf et le dossier des exemples s2
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 26 Septembre: F. Hecht
- Inclusion des fichiers d'entête
compilation separe les .hpp les .cpp
- les variable global , dynamic et static , la pile (stack) et le tas (heap)
Une premiere 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 3 Octobre: F. Hecht
Suite de la class R2
les méthodes versus fonction.
les surcharges de opérateurs pour finir
dans (méthode) et hors (fonction) de la classe
Tous les données sont dans s4 et ou dans l'archive s4.zip
Sujet TD du 8 octobre F. Hecht TD-08-10-2019.pdf
S5/Jeudi 10 Octobre: FH
Des classe avec des allocation et des destructeurs
Problème de Operation de copie
voir Règle 1 (section 4.4)
Presentation du problème de vitesse de calcul dans les operations vectorielles sur
des tableaux dû au recopie intempestive.
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 17 Octobre: FH
Algorithmique
chapitre 5 des notes de cours
décalage d'un tableau
Renumérote un tableau
Construction de l’image réciproque d’une fonction
Construction des triangles contenant un sommet donné
Tous les examples sont dans s6 ou s6.zip
S7/Jeudi 24 Octobre: FH
Algorithmique
chapitre 5 des notes de cours
Construction des arête d'un maillage (H-code)
S8/Jeudi 4 novembre Partiel
sujet du partiel Partiels/Partiel-4M016-2019-v2.pdf
S9/ Jeudi 14 novembre FH
Template et STL
les premiers exemples de templates fonctions et classe sont dans s9
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 stl ou stl.zip
S10/ Jeudi 21 novembre FH
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 s10/plot.pdt
avec la note encapsulage du pointeur sur la classe abstrait avec ou non destructeur
(cf. avec la méthode abstraite clone et destructeur, ou sans )
les exemples et programme sont dans s10 et/ou s10.zip
S11/ Jeudi 28 novembre FH
calcul du nombre de composante connexe d'un graphe.
- NbCCGraphe (c-version recusrive et non recursive)
avec utilisation des arc ayant un sommet donne (cf. utilistaion la construction de F^-1 d'un fonction
avec des listes chaine)
- algo force brute en n*M operation: NbCCGraphe-brute
- algo de type Kruscal: NbCCGraphe-Kruscal
Pour generer les fichers de données des graphe à partir d'un fichier .msh
faire pour 3.msh:
(awk -f msh2Graphe.awk 3.msh ; awk -f msh2c.awk 3.msh ) > 3.txt
remarque, il y a théoriquement un bug de le NbCCGraphe
car la profondeur de pile est trés grande il faut donc utilise la version sans recursion (plus dur a programmer).
dans le dossier Dijkstra, il y a un de l'algorithme de Dijkstra programmé par B. Bernardi.
les source et exemples sont dans s11 ou dans l'archive s11.zip
Jeudi 5 décembre
le cours est annulé en raison de la grève générale (pas de train) et est reporté au
jeudi 12 décembre
S12/ Jeudi 12 décembre FH
Dernier cours du semestre.
Présentation de la differentiation automatique de programme
Aide au projet.