Programmation C
Kursthemen
-
Présentation du cours
L'objectif de ce cours de fournir une expérience solide en programmation en language C. Les mécanismes bas niveau des langages de programmation impératifs sont présentés à travers le formalisme C permettant de comprendre en profondeur comment sont exécutés les programmes sur un ordinateur. Les séances de TP permettent une expérience pratique de programmation en C d'applications non triviales. Les bases de la programmation embarquée sont aussi présentées, illustrées en TD-machine ou TP. Le cours finit par une première approche de l'embarqué utilisant les micro-contrôleur ez430-RF2500.
Le support de cours est constitué du poly de Bernard Cassagne: Introduction au langage CUn autre document de Bernard Cassagne: exemples de programmes CInstallation des outils de programmation C sur votre machine personnelle: lisez le README-TOOL-CRO.org et testez que les outils fonctionnent chez vous avec l'archive boostrap-CRO.tar -
Le cours est essentiellement constitué de TD machine et TP, sauf le premier cours qui est une introduction générale. Les TD sur machines sont très guidé, passe en revue les notions importante à connaître concernant le langage C. L'enseignant a aussi à sa disposition des slides pour chaque séances, qui sont disponibles ici aussi.
- Slides du premier cours
- TD1: premiers programmes C et outils de compilation
- sujet du TD1
- Slides de cours associés (Rappel architecture et compilation, Makefile)
- Pour aller plus loin: solutions des exercices facultatifs
- TD2: entrées/sorties simple, fonction, passage de paramêtre et portée des variables
- sujet du TD2,
- document ajouté pour le fonctionnement du scanf
- Slides de cours associés (bases du C, fonction, portée, printf, scanf)
- Pour aller plus loin (fichier de trame: data.sujet): solutions des exercices facultatifs
- TD3: Tableaux, structures de contrôle, boucle E/S fichiers
- sujet du TD3
- Slides de cours associés (Types construits: tableaux, structures, structure de contrôle: boucles, tests, E/S dans
les fichiers)
- Archive à télécharger "produit de matrice"
- Pour aller plus loin: résolution de sudoku, téléchargez sudoku-init.tar
- Des sudoku non valides pour tester vos fonction sudokuInvalideColones.txt, sudokuInvalideLigne.txt, sudokuInvalideRegion.txt
- TD4: Pointeurs
- sujet du TD4
- Slides de cours associés (Pointeurs enC)
- Archive à télécharger "pointeurs"
- Pour aller plus loin: solutions des exercices facultatifs
- TD5: Arbres et GDB
- Sujet du TD5
- Slides de cours associés (arbres, debugger GDB)
- Le fichier ValgrindEx.c necessaire pour la fin du TD.
- Pour aller plus loin: solutions des exercices facultatifs
- TD6: Listes triées
- Sujet du TD6
- Archive à Télécharger pour commencer
- TD7: socket
- Sujet du TD7
- Archive à Télécharger
- Pour le cours, on pourra regarder le cours de Andrea tettamanzi sur les socket (U. Nice)
- TD8: TODO: pointeur de fonction et autre concepts avancés
- TODO (sujet)
- TODO (archive)
- Pour le cours, on pourra regarder TODO
-
Les TP sont des TP classiques, il peuvent être vus comme des TD de 4h, ou certaines notions sont approfondies.
- TP1: Tour de Hanoï
- sujet du TP1
- Archive à télécharger
- Slides de cours associés (les mêmes que ceux du TD4: Pointeurs enC)
- TP2: BigInt: arithmétique pour les grand entiers
- Archive à télécharger
- Slides de cours associés (Pointeurs de fonction, erreurs courante en C, coder proprement)
- Le resultat de factorielle(60) : 8320987112741390144276341183223364380754172606361245952449277696409600000000000000
- Le resultat de 150! (TAILLEMAX=1000): 571338395644585459047893286526105400318955357860112641825483758331798291248453983931265744886753111453771078787468542041626662501986845044\ 66355949195922066574942592095735778929325357290444962472405416790722118445437122269675520000000000000000000000000000000000000
- Pour aller plus loin: un petite histoire de l'arithmétique avec l'histoire des algorithmes qu'on nous a appris tout petits
- TP3: graphes en C
- Sujet du TP3
- Archive à télécharger
- fichier source (flot_ex2.dot) et solution (sol_flot_ex2.dot) pour le flot maximum sur flot_ex2.mat. du noeud 11 au noeud 10. Le flot passe de 28 à 30.
- TP4: The TC-MSP Challenge, programmation embarqué (mise à jours pour mspgcc v8):
- sujet du TP
- Archive a télécharger pour commencer
- Lignes a mettre dans votre .bashrc pour activer la toolchain msp430-elf-gcc avec la commande go_mspgcc
- Pour ceux qui veulent aller plus loin:
- documentation: ez430.pdf, MSP430.pdf et msp430F22x4.pdf
- La chaine de compilation pour Ubuntu proposé par TI: https://www.ti.com/tool/download/MSP430-GCC-OPENSOURCE
- Il faut télécharger deux tar: https://dr-download.ti.com/software-development/ide-configuration-compiler-or-debugger/MD-LlCjWuAbzH/8.3.1.0/msp430-gcc-8.3.1.25_linux64.tar.bz2 et https://dr-download.ti.com/software-development/ide-configuration-compiler-or-debugger/MD-LlCjWuAbzH/8.3.1.0/msp430-gcc-support-files-1.208.zip
- Actions à faire pour activer la toolchain sur votre machine en tant que simple utilisateur:
- exécuter la commande go_mspgcc (du fichier env.sh ci-dessus) pour avoir accès aux compilateur msp430-elf-gcc
- Se mettre dans le groupe "dialout" si ce n'est pas déjà le cas (sudo adduser votrelogin dialout)
- Mettre en place la règle udev pour pouvoir accéder au device /dev/ttyACM0 créé par l'ez430 connecté en USB, il faut mettre (en tant que root) dans le fichier /etc/udev/rules.d/30-ez430.rules la ligne suivante:
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660",GROUP="dialout"
Attention à vérifier que les droits du fichier 30-ez430.rules sont bien les mêmes que ceux des autres règles du même répertoire
- documentation: ez430.pdf, MSP430.pdf et msp430F22x4.pdf
-