Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Alexandre.Meyer/m1if37-animation
  • Alexandre.Meyer/m2-apprentissage-profond-image
  • Alexandre.Meyer/m2-animation
  • Alexandre.Meyer/hugo-web-minimal
  • Alexandre.Meyer/lifami
  • Alexandre.Meyer/lifapcd
  • Alexandre.Meyer/www
  • Alexandre.Meyer/lifstage
8 results
Show changes
Commits on Source (95)
Showing
with 301 additions and 29 deletions
# Pour créer un site web et ressources d'une UE avec Hugo
[La page de l'UE est ici](http://alexandre.meyer.pages.univ-lyon1.fr/hugo-web-minimal/)
[La page de l'UE est ici](http://alexandre.meyer.pages.univ-lyon1.fr/lifapcd/)
......@@ -9,12 +9,12 @@
Le site web est désormais fabriqué par ```Hugo``` (thème [congo](https://jpanther.github.io/congo/)). les sources se trouvent dans le répertoire ```web```. Le site web est mis à jour par intégration continue (CI/CD) à chaque fois que vous faites un push (rien besoin d'autre, à part attendre quelques secondes). Le script d'intégration continue est ```.gitlab-ci.yml```. Pour voir le résultat du script de génération, depuis l'interface allez dans Buil/CI/Jobs.
Le fichier ```site/config.toml``` permet de configurer la génération du site. Mais noramlement il n'y a pas besoin d'y toucher.
Le fichier ```site/config.toml``` permet de configurer la génération du site. Mais normalement il n'y a pas besoin d'y toucher.
* Les pages web sont générées à partir du répertoire ```web/content```.
* Par exemple ```web/content/doc``` peut contenir les documents généraux de l'UE (pdf);
* La page principale du site est ```web/content/_index.html```. Il faut bien laissé le ```_```, il indique qu'il y a des sous-répertoires
* ```web/static``` : les fichiers autres (pdf, images, sujets, etc.) sont à ranger dedans. Par exemple, il y a
* ```web/static``` : les fichiers générales (images, icones, etc.) sont à ranger dedans. Par exemple, il y a
* ```web/static/images``` pour les images du site;
* ```web/static/doc``` documents généraux de l'UE;
* Pour changer l'icone de la page web, il faut générer des icones avec un [flavicon générator](https://favicon.io/favicon-generator/), copier toutes les images dans le repertoire `static` et ajouter dans `config.toml` une ligne dans `param` avec `favicon = "favicon.ico"`.
......
baseURL = "http://alexandre.meyer.pages.univ-lyon1.fr/hugo-web-minimal/"
title = "UE Bidule"
baseURL = "http://alexandre.meyer.pages.univ-lyon1.fr/lifapcd/"
title = "LIFAPCD Conception et développement d'applications"
theme = "congo"
languageCode = "fr-FR"
enableInlineShortcodes = true
......@@ -10,11 +10,11 @@ publishDir = "public"
[params]
description = "UE Bidule"
description = "LIFAPCD"
copyright = ""
dark = "auto"
highlight = true
mainSections = "personnage;controle;posts"
mainSections = "Cours;TD;Projets;Planning"
#color = "gray" # Any color in CSS syntax
#width = "52rem" # Any length in CSS syntax
colorScheme = "fire"
......@@ -32,26 +32,33 @@ publishDir = "public"
[menu]
[[menu.main]]
identifier = "PartieA"
name = "PartieA"
title = "PartieA"
url = "https://partiea.html"
identifier = "Cours"
name = "Cours"
title = "Cours"
url = "/cours"
weight = 1
[[menu.main]]
identifier = "PartieB"
name = "PartieB"
title = "PartieB"
url = "/partieb/"
identifier = "TD"
name = "TD"
title = "TD"
url = "/td/"
weight = 2
[[menu.main]]
identifier = "PartieC"
name = "PartieC"
title = "PartieC"
url = "/partiec/"
identifier = "Projet"
name = "Projet"
title = "Projet"
url = "/projet/"
weight = 3
[[menu.main]]
identifier = "Planning"
name = "Planning"
title = "Planning"
url = "/planning/"
weight = 4
[permalinks]
posts = "/:title/"
......
# UE Bidule
# Conception et développement d'applications
Responsables de l'enseignement : [Pierre Quiroule](http://www.leweb.fr/Pierre)
Responsables de l'enseignement : [Alexandre Meyer](http://liris.cnrs.fr/alexandre.meyer) et [Nicolas Pronost](http://liris.cnrs.fr/nicolas.pronost)
Volume horaire : x CM, y TP
Volume horaire : 9h de CM, 12h de TD et 39h de TP
![im_all.png](images/im_all.png)
![lifapcd.png](images/lifapcd_logo.png)
## Objectif de l'UE
<p style="text-align:justify;"> etc.</p>
[Les slides sont ici.](doc/fichier.pdf)
<p style="text-align:justify;">L'UE «Conception et Développement d'Applications » se trouve dans l'ensemble des UE d'algorithmique et de programmation de la licence STS mention Informatique en 2e année (L2). L'objectif de cette UE est de donner une première expérience de développement d'une application informatique de taille assez conséquente pour des étudiants ayant suivi déjà 3 UE d'algorithmique et de programmation avant. Une part importante de cette UE est consacrée à la conception et au développement d'une application durant les TP, par groupe de 2 ou 3 étudiants. Nous abordons essentiellement trois domaines de compétences.
Conception de l'architecture d'un logiciel : programmation modulaire, diagramme de dépendances des classes, boucle d'évènements, utilisation de librairies externes, multi-plateforme.\
## Thématiques abordées
Outils d'aide à la mise au point de programme : débogueur, documentation du code, analyse de performances, production de l'application à partir du code (make/cmake), gestion de version de code (git).\
### Theme A
Gestion de projet : cahier des charges, diagramme de Gantt, documentations, rapport, démo, présentation.
</p>
### Theme B
### Cours
La page des [cours](cours) regroupe les pdf des CM, les modcalités d'évaluation et des anciens sujets.
### TD
La page des [TD](td) regroupe les pdf des TD et toutes les informations sur le module Image à rendre.
### Projets
La page des [Projets](projet) regroupe toutes les informations sur le déroulement et les évaluations autour du projet.
### Doc
Le [dépôt git de l'UE](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp) regroupe
* de nombreux exemples de code (SDL_simple, Pacman, SDL_ImGUI)
* [ainsi que des documentations pour les installations](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/-/tree/master/doc)
* [Installer WSL](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/-/blob/master/doc/wsl.md) (WSL=Linux sous windows)
* Choisir et installer un [éditeur de code](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/-/blob/master/doc/ide.md)
* Installer les librairies (SDL2 notamment)
* etc.
### Évaluation (les différentes notes)
* Un contrôle mi-parcours de 1h30 (40%) avant la phase de réalisation du projet
* [Sujet Conception 2018](cours/doc/examens/2018_LIFAP4_CC_conception.pdf) (Jeux Olympique) / [Sujet QCM 2018](cours/doc/examens/2018_LIFAP4_CC_QCM.pdf)
* [Sujet Conception 2019](cours/doc/examens/2019_LIFAP4_CC_conception.pdf) (Pâtisserie), [un corrigé](cours/doc/examens/2020_corrige_exam_boulangerie.txt) / [Sujet QCM 2019](cours/doc/examens/2019_LIFAP4_CC_QCM.pdf)
* [Sujet Conception 2020](cours/doc/examens/2020_LIFAP4_CC_conception.pdf) (Duplo), voir le corrigé en TD / [Sujet QCM 2020](cours/doc/examens/2020_LIFAP4_CC_QCM.pdf)
* [Sujet Conception 2021](cours/doc/examens/2021_LIFAPCD_CC_conception.pdf) (Simulateur de galaxies)
* [Sujet Conception 2022](cours/doc/examens/2022_LIFAPCD_CC_conception.pdf) (Jeu d'échec), [un corrigé](cours/doc/examens/2022_corrige_exam_echec.txt)
* [Sujet Conception 2023](cours/doc/examens/2023_LIFAPCD_CC_conception.pdf) (App/Montre de sport)
* Évaluation du module "Image" (TDs outils) (10%)
* Projet (50%) :
* Cahier des charges (2%)
* Démo mi-*projet (3%),
* 3 notes finales "Technique", "Conception" et "Organisation" (3×15%). Regardez dans la [section Projet](projet) pour le détail des notes.
---
title: "Cours"
description: "Cours"
---
![lifapcd.png](doc/supports_de_cours.jpg)
#### Cours 0 : Introduction de l'UE
* [Télécharger les transparents du cours](doc/LIFAPCD_CM0_OrganisationUE.pdf)
#### Cours 1 : Conception et gestion de projet
* [Télécharger les transparents du cours](doc/LIFAPCD_CM1_ConceptionGestionProjet.pdf)
* Méthodes de conception
* Cahier des charges
* Diagramme de Gantt
#### Cours 2 : Programmation modulaire
* [Télécharger les transparents du cours](doc/LIFAPCD_CM2_ProgrammationModulaire.pdf)
* Diagramme des classes (UML)
* Règle d'intégrité
* Règles de programmation
#### Cours 3 : Outils pour la programmation
* [Télécharger les transparents du cours](doc/LIFAPCD_CM3_OutilsProgrammation.pdf)
* Compilation de fichier (GCC)
* Compilation de projet (Makefile et CMake)
* Débogage (gdb)
#### Cours 4 : Gestion du code
* [Télécharger les transparents du cours](doc/LIFAPCD_C4_GestionCode.pdf)
* Règles d'écriture de code en C/C++
* Gestionnaire de code (Git)
* Doxygen
* [Des règles de bonnes pratiques de la programmation](http://perso.univ-lyon1.fr/thierry.excoffier/COURS/COURS/TRANS_COMP_IMAGE/prog.html)
#### Cours 5 : Notions de programmation C++ "avancée"
* [Télécharger les transparents du cours](doc/LIFAPCD_C5_BibliothequeIntroPOO.pdf)
* Test de régression
* Valgrind : debug mémoire + profiler
* Arguments de main
* Introduction aux operator et aux template en C++
* Introduction à la STL : string, vector, list, etc.
* Notion de POO/héritage pour pouvoir introduire les frameworks gérant une interface (Qt)
#### Cours 6 : Interface Graphique (Graphical User Interface)
* [Télécharger les transparents du cours](doc/LIFAPCD_C6_GUI.pdf)
* Une interface, qu'est-*ce que cela change ?
* Notion de callback/pointeurs de fonctions
* Principe d'organisation du code (introduction rapide à la notion de MVC)
* Interface en mode texte (un menu)
* Avec SDL2 + 2 mots sur SFML
* Avec "Dear ImGui"
* Avec un framework plus conséquent : Qt
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
#include <string>
#include <iostream>
#include <vector>
#include <ostream>
typedef enum { LITRE, GRAMME, KILOMETRE } UniteMesure;
// ===============================================================
class Date
{
public:
Date() : j(1), m(1), a(2000) {}
void ecrire(std::ostream& out) { out<<"date="<<j<<" "<<m<<" "<<a; }
void lire(std::ostream& out) { /*TODO*/ }
private:
int j,m,a;
};
// ===============================================================
class Ingredient
{
public:
typedef int Id;
Ingredient(Id i, const std::string& n, const UniteMesure& u) : id(i), nom(n), un(u) { }
void ecrire(std::ostream& out) { out<<"Ingredient="<<id<<" "<<nom<<" "<<un; }
void lire(std::ostream& out) { /*TODO*/ }
private:
Id id;
std::string nom;
UniteMesure un;
};
// ===============================================================
class Fournisseur
{
public:
typedef int Id;
void ecrire(std::ostream& out) { out<<"Fournisseur="<<id<<" "<<nom<<" "<<adresse; }
void lire(std::ostream& out) { /*TODO*/ }
private:
Id id;
std::string nom;
std::string adresse;
};
// ===============================================================
class Commande
{
public:
typedef int Id;
void ecrire(std::ostream& out)
{ out<<"Commande="<<id<<" id_ing="<<id_ing<<" q="<<quantite<<" id_four="<<id_four<<" date commande="; commande.ecrire(out); cout<<" date livraison="; livraison.ecrire(out); }
void lire(std::ostream& out) { /*TODO*/ }
private:
Id id;
Ingredient::Id id_ing;
UniteMesure quantite;
Fournisseur::Id id_four;
Date commande;
Date livraison;
};
// ===============================================================
class Recette
{
public:
typedef int Id;
Recette(Id i) : id(i) {}
void ecrire(std::ostream& out) { out<<"Recette="<<id<<" "<<nom<<" "<<un; }
void lire(std::ostream& out) { /*TODO*/ }
private:
Id id;
std::vector< std::pair<Ingredient::Id, UniteMesure> > ing_mesure;
};
// ===============================================================
class Produit
{
public:
typedef int Id;
Produit(Id i, float pri, int nb_produit) : id(i), prix(pri), nb_prod(nb_produit), nb_vendu(0) {}
void ecrire(std::ostream& out) { out<<"Produit="<<id<<" prix="<<prix<<" nb_prod="<<nb_prod<<" nb_vendu="<<nb_vendu; }
void lire(std::ostream& out) { /*TODO*/ }
private:
Recette::Id id;
float prix;
int nb_prod;
int nb_vendu;
};
// ===============================================================
class Journee
{
Journee() {}
void ecrire(std::ostream& out) { out<<"Journée="; date.ecrire(out); out<<"nb ventes="<<ventes.size(); }
void lire(std::ostream& out) { /*TODO*/ }
private:
Date date;
std::vector<Produit::Id> ventes;
}
// ===============================================================
class Boulangerie
{
Boulangerie() {}
Ingredient::Id addIngredient( const Ingredient& in);
Fournisseur::Id addFournisseur( const Fournisseur& fo);
Commande::Id addCommande( const Commande& co);
Recette::Id addRecette( const Recette& co);
Vente::Id addVente( const Vente& co);
void nouvelleJournee();
void fabriqueUnProduit()
void realiseUneVente( Produit::Id pro, int nombre_unite);
Recette::Id rechercheRecettePlusVendue() const;
Recette::Id rechercheRecetteMoinsVendue() const;
void ecrire(ostream& out) { out<<"ing="<<id<<" "<<nom<<" "<<un; }
void lire(ostream& out) { /*TODO*/ }
private:
std::vector<Ingredient> ing; // Tous les ingrédients
std::vector<Fournisseur> fou; // Tous les fournisseurs
std::vector<Commande> com; // Toutes les commandes
std::vector<Recette> rec; // Toutes les recettes : une recette peut être factorise sur plusieurs jours
std::vector<Journee> jou; // Toutes les journées de vente
};
// ===============================================================
class AppIHMBoulangerie
{
AppIHMBoulangerie() {}
void run() { std::cout<<"AppIHMBoulangerie::run"<<std::endl; }
private:
Boulangerie bou;
};
// ===============================================================
class AppIHMBoulangerieBureau
{
AppIHMBoulangerieBureu() {}
void run() { std::cout<<"AppIHMBoulangerieBureau::run"<<std::endl; }
private:
Boulangerie bou;
};
int main()
{
AppIHMBoulangerieBureu appBB;
appBB.run();
return 0;
}
\ No newline at end of file
File added