Cours Informatique de Base (MM009 )
Version du 10/12/2015
Université Pierre et Marie Curie
F. Hecht, (FH) X. Claeys (XC) , et G. Vergez (GV)
Année 2015-2016
F. Hecht (Cours)
Mercredi 8h30 – 10h30 Salle 23-24 105
X. Claeys Cours)
Jeudi 8h30 – 10h30 Salle 23-24 102
T.D: X. Claeys, ou G. Vergez (T.D)
voir https://www.ljll.math.upmc.fr/~claeys/MM009.html
Lundi 13h30 – 16h30 salle 16-26 401
Jeudi 13h30 – 16h30 salle 16-26 401
Rappel: examen le 16 /12/2015 de 14h00 à 16h30 en salle 45-55 salle 204.
Les soutenances des projets auront lieu le mercredi 06/01 et Jeudi 07/01 sauf contre information.
les rapports sont à envoyer avant le Lundi 4 Janvier 2016 00h01 de Paris.
à Frederic.Hecht@upmc.fr et xavier.claeys@upmc.fr
avec les sources de votre projet.
Les heures et jours de passage en salle 16-26 401
DUBOS |
VIRGILE |
06/1 9h00 |
PACI |
UGO |
06/1 9h00 |
HADDADI |
SOFIANE |
06/1 9h00 |
VALENCIA LLANO |
SANTIAGO |
06/1 10h00 |
PAPOUTSIS |
PANAYOTIS |
06/1 10h00 |
CALZA |
OLIVIER |
06/1 10h00 |
ABETTAN |
NOAM |
06/1 11h00 |
TROCELLIER |
LOUIS |
06/1 11h00 |
BIDAULT |
LAURENT |
06/1 11h00 |
SHEN |
KANGWEI |
07/1 13h00 |
MELENDEZ APAGUENO |
IVAN OMAR |
07/1 13h00 |
CLEGG |
EMMA |
07/1 13h00 |
DELORME |
BERTRAND |
07/1 14h00 |
AIT MOULOUD |
AREZKI |
07/1 14h00 |
BEN AISSA |
AMINE |
07/1 14h00 |
BOUGHIDA |
ABDELHAKIM |
07/1 14h00 |
Ex: note examen
Pj: Note Projet
CC: note de contrôle continue
Total= max(Ex+Ex,Ex+Partiel)/2 + 3*Pj + CC
les Notes du Partiel: sur 20.
10,6 |
3301192 |
16,5 |
3363199 |
6 |
2960827 |
11,3 |
3200723 |
19,5 |
3002823 |
10,8 |
3001219 |
|
3501906 |
|
3000686 |
10,9 |
2803009 |
6,1 |
3526044 |
7,8 |
2761961 |
12,8 |
3000690 |
10,4 |
3150759 |
8,5 |
3262462 |
6,6 |
2966175 |
13,9 |
3205364 |
les notes finales du semestre 1 seront visible dans le fichier : //www.ann.jussieu.fr/~hecht/Notes/S1-MM0091.pdf
Les notes de cours en PDF (version du 23/04/2013)
Les sujets des projets finaux de l'année 2014 :
Evaluation: Les sujets des evaluations précédentes
Notation:
Ecrit /20 = sup (examen ,(partiel+ examen) /2)
CC /20 = Note de TD
Projet /60 = 50% rapport et programme
+ 50% soutenance
Pour les debutants en programmation vous pouvez tester vos
programme avec le site:
Cours de C pour débutants, par Mathias Hiron
Et d'autre site:
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
OpenGL:
un support de cours OpenGL (E. Boyer)
un support de cours Robin Vivian Format PDF
Cours OpenGL de l'ESSI par Michel Buffa
Advanced Graphics Programming Techniques Using OpenGL
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
bibliothèque OpenGL et les outils de développement
bibliothèque GLUT ou freeglut et les outils de développement
Si vous avez un ordinateur de type apple (OSX)
il faut installer les developper tools qui sont sur les DVD installations avec Xcode
ou sur App Store (Gratuit)
installation MacTeX.mpkg.zip pour latex et Latest TeXShop
Pour Linux,
installer les outils de devellopement :
g++, gcc, make, freeglut-dev
S1/Mercredi 9 Septembre: FH
le systeme 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 (mini-projet, partiel, projets, examen, soutenance)
- Site du cours
- Calcul scientifique, C++
- Développement sous UNIX
- Les sous-sujets (Algorithmique, complexité, structure de données, graphes, TeX, OpenGL, automates, analyse lexicale et syntaxique, programmation dynamique)
Début de l'étude
- quelques commandes ls, cat, rm, cd, pwd, vi, emacs
- programme coucou.cpp: compilation et exécution à la main. Utilisation de make coucou
- analyse du programme, #include, using namespace (on y reviendra)
- distribution de la liste des opérateurs, mise à jour.
une premiere commande de compilation du fichier prog.cpp ou prog.cc
make prog
pour lancer le programme fiare
./prog
la liste des operateurs.pdf
Pour installer les outils de devellopement sous Windows, lire
Tous les exemples de programme sont dans:
S1/Jeudi 10 Septembre: XC
* Rappel rapide sur le programme Hello World et la compilation
* Discussion sur les types de base
* Les entrées sorties standard cin/cout
* Les structures de controle if, switch,
S2/Mercredi 16 Septembre: XC
* Les structures de contrôle while, for
* Les références
* Les fonctions
* Inclusion des fichiers d'entête et include guards
S2/Jeudi 17 Septembre: XC
* Tableaux statiques
* Tableaux dynamiques
* Les pointeurs:
-> relation entre pointeurs et tableaux
-> pointeurs constants/pas constants
-> allocation dynamique de mémoire (avec new)
* Compilation séparée (compilation avec -c etc....)
S3/Lundi 21 Septembre: XC
* déclaration/définition d'une classe
* notion d'instance de classe
* membres d'une classe
* méthodes d'une classe
* mot clé this
* pointeurs sur des objets
* membres statiques
* droit d'accès public/private
S3/Mercredi 23 Septembre: FH
les expression left value et right value,
les reference et reference constant.
les classe avec la classe R2
les constructeurs
par défaut, par copie,
les méthodes versus fonction.
les surcharges de opérateurs pour finir
quelque version de la classe R2 avec
les definitions dans la classe
les definitions hors d la classe
les source est examples sont dans le dossier s3 version compresse s3.zip
S3/Jeudi 24 septembre: XC
* Gestion de l'allocation dynamique de mémoire dans les constructeurs et l'opérateur d'affectation
* L'héritage simple (mais pas les classes abstraites ni l'héritage multiple)
* J'ai commencé à parlé de la STL.
S4/Mercredi 30 Septembre: FH
Présentation du mini projet gl/mini-proj1.pdf, explication de l' exemple ex1 avec la bibliothèque freeglut.
Explication du calcul binaire en C et utilisation de
fonction static dans un classe.
Algorithmique:
Programmation la resolution d'un sudoku avec un méthode récursive gloutonne (méthode Resoudre)
méthode Ajoute (case k, valeur vk)
retourne si il y a pas d' incompatibilité
et ajoute dans ce cas la valeur vk a la case k et modifie l'état des permutations.
Méthode retire(k) , à n'utilise que si la méthode Ajoute réponse true et
retire tous les modifications fait par la méthode Ajoute (valeur et permutation).
méthode Resoudre
si la n° de case > 80 on imprimer car on a trouver une grille,
si la case est deja rempli on passe a la case suivante
si la case est vide alors on
pour les 9 valeurs on ajoute si possible cette valeur,
si oui on passe a la case suivante, puis on retire cette valeur.
Il vous faut programme la fin de cette fonction résoudre
5 lignes.
c.f. ligne 45 du fichier sudoku.cpp
S4/Jeudi 31 septembre: XC
Introduction de template
SLT et entree sortie.
S5/Mercredi 7 octobre: FH
Correction et fin de l'algo du sudoku. voir s4
Quelque remarque sur la fin d'un programme.
Voir note de Cours de Chapitre 5.3 et 5.4 ( NotesdeCoursC++.pdf )
Algorithmique: Décalage d'un tableau
dépendance temporelle des données
Renumérotation d'un tableau
image réciproque d'une fonction.
S5/Jeudi 8 octobre: XC
* présentation de gnuplot
* les arguments d'entrées de la fonction main
* présentation plus approfondie d'OpenGL
S6/Mercredi 14 octobre: FH
Calcul du nombre de composante connexe dans graphe
Algo brutal, Algorithm de Kruskal
Introduction du class graphe
voir exemple dans s6
S6/Jeudi 15 octobre: XC
* fonctions template
* classes template
* correction d'un exercice sur les pointeurs et les références
S7/ Mercredi 21 octobre : FH
Continuation des algorithme de la semaine 6
voir programme s6
S7/ Jeudi 22 octobre : XC
presentation de latex
* Structure d'un document Latex
\begin{document} .... \end{document}
* La compilation avec Latex
-> latex
-> les differents fichiers d'output
-> pdflatex
-> dvipdf, etc...
* Le sectionnement (\section, \subsection, \paragraph, etc...)
* Changer la fonte (bold, italique) et la taille, sauter une ligne...
* Le système des paquets
* Les équations
-> les "$"
-> les environnements equation, array, etc...
* La numerotation des equations
* Les tableaux
* Les figures en latex
-> inclure des images
-> dessiner avec pstricks
S8/ Mercredi 28 octobre : Partiel
S8/ Jeudi 22 octobre :XC
correction du partiel
voir s8
S9/ Mercredi 4 novembre FH
Présentation de projet finaux sujet-projets-2015.pdf le source sujet-projets-2015
introduction des automates
Exo pour le prochain cours écrire un automate qui teste les nombres entier décimaux divisible par 3.
S9/ Jeudi 5 novembre XC
* les méthodes virtuelles et les classes abstraites
* application au dessin de formes sous openGL
* les espaces de nom
* compléments sur les templates
les exemples sont dans s9 ou s9.zip
S10/ Mercredi 11 novembre ( Pas de cours)
S10/ Jeudi 12 novembre XC
Rudiments de HTML
* Structure HTML d'une page web
* Principe des balises
* Balises classiques:
<h1>, <p>, <div>
* Listes: <ul>, <ol>, <li>
* Tableaux: <table>, <tr>, <td>, <th>
* Placements des images dans une page
* Feuilles de style css
* Identificateurs
* dimensionnement et placement des blocs
S11/ Mercredi 18 novembre FH
voir note de cours chapitre 11 de NotesdeCoursC++.pdf
Explication de passage de de l’écriture BNF à la programmation.
Une premiere calculette en BNF étendue
voir note de cours section 11.1
lt l'exemple programme et cours est dans s11
Note de cours de Dominique Bernardi la compilation compilation.pdf
S11/ Jeudi 19 novembre XC
S12/ Mercredi 25 novembre XC
S12/ Jeudi 26 novembre FH (Dernier cours)
Tous les exemple si-ont dans s12/ ou s12.zip
explication du la nouvelle version de Calculette.cpp
et ajoute des fonctions a deux arguments
Introduction d'un calculer gainaient avec les logicels bison ou yacc. exp_simple.ypp
Introduction des class pour faire une algèbre de fonctions fonctionsimple.cpp
et ntrodction des la notion encapsulage pour cacher le pointeur sur class pure virtual.
Un version avec gestion memoire et operation de clonage pour simplifier la
genertion memoire ( non presenté) fonctionsimple_withcopy.cpp
Construction d'un petit langagne avec un generation de code via l'algèbre de fonction
ici tout les instruction sont des fonctiond sans paramètre.
les classed pour le code (des fonctiond sans paramètre) et la table d'identificateur Expr.hpp
les grammaire bisin fexp.ypp
le programme principale pour tester le language main-lgexp.cpp
et un petit example d'utilisation en mode function pour être utiliser dans un prolet par example