name: inverse layout: true class: center, middle, inverse --- # Programmation procédurale- CM 1 ## Inès de Courchelle ## Structure Programme et compilation  --- layout: false # Lets go ## Objectifs - Écrire un programme - Manipuler l'ordinateur pour coder - Comprendre le principe de compilation - Élaborer une documentation --- # TODAY ## Plan 1. Écrire un algo 2. Écrire un programme 3. Compiler un programme 4. Doxygen --- # TODAY ## Plan 1. .under[Écrire un algo] 2. Écrire un programme 3. Compiler un programme 4. Doxygen --- # Algorithmes ## Définitions .otro-blockquote[ Un algorithme est la description d'une suite d'étapes permettant d'obtenir un résultat à partir d'éléments fournis en entrée. ] .otro-blockquote[Un algorithme est une séquence d'instructions logiques utilisées pour effectuer une tâche précise.] .otro-blockquote[Un algorithme est une suite d'instructions logiques, organisées et ordonnées, conçues pour résoudre un problème ou accomplir une tâche spécifique.] --- # Écrire un algo ## C'est quoi ? - Une recette de cuisine - Une suite d'instructions pour aller quelque part - Des consignes de sécurité ## Comment ?
--- # Écrire un algo ## Instructions - Un programme impératif est une suite finie d'instructions comprisent entre le début et la fin - L'instruction de base est l'écriture (sortie, affichage ...) d'information dans le terminal - Exemple de programme complet : HELLO WORLD ``` PROGRAMME Bonjour DEBUT ECRIRE("bonjour tout le monde") FIN ``` --- # Écrire un algo ## Variable - C'est un élément du programme qui sert à stocker une valeur - Elle est définie par un nom et un type - Syntaxe : ``` nomVariable : type ``` ## Type - Ensemble de valeurs sur lesquelles on peut appliquer des opérateurs - Exemple : entier, réel, booléen, chaîne, caractère ... --- # Écrire un algo ## Déclaration ``` VARIABLES : i,j : entiers x,y : réels estTrouvé : booleen reponse : chaine de caractères ``` ## Affectation - Mettre une valeur dans une variable en cohérence avec son type - La première affectation de valeur à une variable est appelée initialisation - On la représente par une flèche #### Exemple ``` i ← 4 reponse ← "Bonjour" ``` .underR[Attention] : Avant d'affecter une valeur il ne faut pas oublier de déclarer la variable --- # Écrire un algo ## Affectation FAUX
## Affectation JUSTE
--- # Écrire un algo ## Les conditions .pull-left[ #### SI ...ALORS ``` SI [CONDITION] ALORS ... FIN SI ``` #### Si ... SINON SI... ``` SI [CONDITION] ALORS ... SINON SI [CONDITION] ALORS ... SINON ... FIN SI ``` ] .pull-right[ #### SI ... SINON ``` SI [CONDITION] ALORS ... SINON ... FIN SI ``` #### SELON ``` SELON [VARIABLE] CAS [VALEUR]: CAS [VALEUR]: CAS [VALEUR]: DEFAUT: FIN SELON ``` ] --- # Écrire un algo ## Une boucle #### Pour .pull-left[ Quand on sait combien de fois on veut réaliser une opération ] .pull-right[ ``` POUR i ALLANT de 0 à 10 FAIRE ... FIN POUR ``` ]
--- # Écrire un algo ## Une boucle #### Tant que Faire ... .pull-left[ Quand on doit répéter une opération en fonction tant qu'une condition est vérifiée ] .pull-right[ ``` TANT QUE [CONDITION EST VRAI] FAIRE ... FIN TANT QUE ``` ]
#### Faire ... Tant que .pull-left[ Quand on doit répéter une opération en fonction tant qu'une condition est vérifiée ] .pull-right[ ``` FAIRE ... TANT QUE [CONDITION EST VRAI] ``` ] --- # Écrire un algo ## La blagounette
--- # Écrire un algo ## Exemple complet ``` PROGRAMME Football VARIABLES : numero : entier DEBUT FAIRE ECRIRE("Quel est votre numero preferé au foot ? ") LIRE(numero) TANT QUE (0 < numero < 12) SI (numero > 6) ALORS ECRIRE("Tu joues plutôt en attaque") SINON ECRIRE("Tu joues plus en défense ") FIN SI FIN ``` --- # Écrire un algo ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # TODAY ## Plan 1. Écrire un algo 2. .under[Écrire un programme] 3. Compiler un programme 4. Doxygen
--- # Le langage C ## Un peu d'histoire - Créé en 1972 par Ken Thompson & Dennis Ritchie ; - Compromis entre le langage de bas niveau (assembleur) et de haut niveau (Fortran) ## La base - Le code source (compréhensible par un humain) est enregistré dans un fichier .c ; - C’est un langage compilé (vs interprété) ; - Compilation : ```shell gcc -Wall monCode.c -o monExecutable ``` - Exécution : ```shell ./monExecutable ``` --- # Le langage C ## Programme minimum ```c #include
int main(){ printf("Hello world \n"); return 0; } ``` --- # Le langage C ## Ligne par ligne
--- # Le langage C ## Ligne par ligne
--- # Le langage C ## Ligne par ligne
--- # Le langage C ## Ligne par ligne
--- # Le langage C ## Ligne par ligne
--- # Le langage C ## Ligne par ligne
--- # Le langage C ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # Le langage C ## Le commentaire ```c #include
/* Presentation d'un exemple pour un programme simple en langage C */ int main(){ //afficher un message à l'utilisateur ! printf("Hello world \n"); return 0; } ``` --- # Le langage C ## Les commentaires #### Notation - // : Indique un commentaire jusqu’à la fin de la ligne mais n’est pas accepté par les normes ANSI (American National Standards Institute - /* : Indique un début de bloc de commentaires (une ou plusieurs lignes) - */ : Indique une fin de bloc de commentaires - **Attention** à ne pas imbriquer plusieurs blocs de commentaires #### Où se met le commentaire ? - Se positionne juste avant le code (ou bloc de code) à commenter - Doit rester dans la même langue --- # Le langage C ## Les boucles .pull-left[ ```c TANT QUE (expr) faire ... FIN TANT QUE ``` ] .pull-right[ ```c While (expr) { } ``` ]
.pull-left[ ```c RÉPETER ... TANT QUE (expr) ``` ] .pull-right[ ```c do { ... } while (expr); ``` ]
.pull-left[ ```c POUR i ALLANT DE debut À fin faire ... FIN POUR ``` ] .pull-right[ ```c for (int i=0; i
.pull-left[ ```c SI(...) alors ... SINON ... FIN SI ``` ] .pull-right[ ```c if (...) { ... } else { ... } ``` ] --- # Le langage C ## Les types basiques - entier : int - réel : float, double - caractère : char ## Extension de types - Taille : short, long (uniquement pour les int et double) - Signe : unsigned, signed par défaut (uniquement pour les char, int, float) --- # Le langage C ## Constantes - Invariable pendant l’exécution - Possède un type - Constantes numériques : 1, 3.14 ... - Constantes de type caractères : "A", "P" - Caractère provoquant un ”affichage” particulier : \n, \t, \v, \b, \r, \f, \’, \", \\, \nnn, \xnnn, ... - Constantes de type chaı̂ne de caractères: "Arsenal", "Barcelone FC", ... --- # Le Langage C ## Exemple .pull-left[ #### En algo ``` PROGRAMME Football VARIABLES : numero : entier DEBUT FAIRE ECRIRE("Quel est votre numero preferé au foot ? ") LIRE(numero) TANT QUE (0 < numero < 12) SI (numero > 6) ALORS ECRIRE("Tu joues plutôt en attaque") SINON ECRIRE("Tu joues plus en défense ") FIN SI FIN ``` ] .pull-right[ #### En C ``` #include
#include
int main(){ int numero; do { printf("Quel est votre numero preferé au foot ? \n"); scanf("%d",&numero); }while((numero >12) || (numero < 1)); if (numero > 6) { printf("Tu joues plutôt en attaque \n"); } else { printf("Tu joues plus en défense \n"); } return 0; } ``` ] --- # De l'aide ## Pour l'algo -
Libre cours
-
Openclassroom
## Pour le C
--- # TODAY ## Plan 1. Écrire un algo 2. Écrire un programme 3. .under[Compiler un programme] 4. Doxygen --- # Compilation ## Objectif Convertir un fichier texte en fichier binaire exécutable ## Comment ? la commande gcc ## Les options - -Wall - -Werror - -o - ... --- # Compilation ## 4 phases 1. Pré-processing : passage au pré-processeur 2. Compilation : compilation en langage assembleur 3. Assemblage : conversion du langage assembleur en code machine 4. Édition des liens : liens vers les bibliothèques
--- # Compilation ## Phase 1 : pré-processing
- Transformation textuelle uniquement : opération de substitution - Supression des commentaires - inclusion des fichiers .h dans le fichier .c : #include - traitement des directives de compilation qui commencent par un # : define, ifndef, endif, include, ... - toto.i est un fichier texte en langage C, lisible - Contrôle la syntaxe du programme ## Exemple ```shell gcc -E helloworld.c -o helloworld.i ``` --- # Compilation ## Phase 1 : pré-processing
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # Compilation ## Phase 2 : Compilation - Le code C est transformé en assembleur - toto.s est un fichier texte lisible, mais difficilement compréhensible ## Exemple ```shell gcc -S helloworld.i -o helloworld.s ``` ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # Compilation ## Phase 3 : Assemblage - Le code C est transformé en assembleur - toto.o est un fichier binaire ## Exemple ```shell gcc -c helloworld.s -o helloworld.o ``` ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # Compilation ## Phase 4 : Édition des liens - **helloworld.o** est incomplet : il ne contient pas le code les fonctions inclues - *#include<...>* n’inclue que le prototype des fonctions, pas leurs codes - Réunir le fichier objet (helloworld.o) et les fonctions contenues dans les bibliothèques pour produire un programme exécutable ## Exemple ```shell gcc helloworld.o -o helloworld ``` ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # L'éxécution ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # TODAY ## Plan 1. Écrire un algo 2. Écrire un programme 3. Compiler un programme 4. .under[Doxygen] --- # Doxygen ## C'est quoi ? C'est un générateur de documentation sous licence libre capable de produire une documentation logicielle à partir du code source d'un programme ## La doc
Le manuel
## Objectifs - réaliser une documentation - automatiser le processus - générer plusieurs formats de documentations (html, latex, pdf ...) ## Comment ? - En écrivant des commentaires avec des mots clés - En utilisant des commandes unix --- # Doxygen ## Les commentaires #### La base ! - .underB[/* !] .arrow[] Indique un début de bloc de commentaires doxygen - .underB[*/] .arrow[] Indique une fin de bloc de commentaires #### Utilisation de mots clés (balises) - .underB[\version num description] .arrow[] version en cours, ainsi qu’une brève description - .underB[\author nom] .arrow[] qui a écrit le fichier ou la fonction (une balise par auteur) - .underB[\date date] .arrow[] date de création/modification - .underB[\brief description] .arrow[] description courte - .underB[\remarks description] .arrow[] éventuellement des remarques générales --- # Doxygen ## Les commandes - Nécessite un fichier de configuration : Doxyfile ou doxyfile peut se générer avec la commande doxygen ```shell doxygen -g ``` - Configuration adaptée par rapport au cas d’utilisation ```shell PROJECT NAME, PROJECT NUMBER, OUTPUT DIRECTORY, ... ``` - Compilation de la documentation : pour générer les documents ```shell doxygen Doxyfile ``` --- # Doxygen ## Un Exemple ```c #include
int main() { int vies = 3; int ennemisBattus = 7; int score = ennemisBattus * 100 - vies * 10; printf("Tu as %d vies et tu as battu %d ennemis.\n", vies, ennemisBattus); printf("Ton score final est de %d points !\n", score); return 0; } ``` #### On rajoute les commentaires --- # Doxygen ## Un exemple #### Programme ```c #include
/** * \version 1.0 le démarrage pour commencer * \author Ines DC * \date 19/09/2025 * \brief initialise un joueur avec des points de vies et autres * \remarks c'est la version 1 donc c'est normal qu'il n'y ait pas toutes les fonctionnalités ! */ int main() { int vies = 3; int ennemisBattus = 7; int score = ennemisBattus * 100 - vies * 10; printf("Tu as %d vies et tu as battu %d ennemis.\n", vies, ennemisBattus); printf("Ton score final est de %d points !\n", score); return 0; } ``` --- # Doxyfile ## Attention - bien écrire les commentaires avec 2 étoiles - rajouter dans le fichier de conf EXTRACT_ALL à YES ## VAR
Cette vidéo ne peut être affichée sur votre navigateur Internet.
Une version est disponible en téléchargement sous
adresse du lien
.
--- # Conclusion ## Aujourd'hui 1. Écrire un algo 2. Écrire un programme 3. Compiler un programme 4. Doxygen ## Les objectifs - Écrire un programme - Manipuler l'ordinateur pour coder - Comprendre le principe de compilation - Élaborer une documentation