Descriptif
Cette déclinaison du cours IN102 s'adresse à un public connaissant déjà les bases du langage C. Elle vise à approfondir la compréhension de ce langage, de ses constructions, de leur sémantique.
Le langage C permet d'écrire des programmes efficaces, possiblement très proches des aspects matériels des machines. Ces atouts ont parfois un prix à payer à cause de subtilités techniques qu'il est important de maîtriser pour une programmation plus sûre.
Comprendre les mécanismes intimes que C met à notre disposition est important pour en tirer partie, éviter des bugs... et comprendre ceux que l'on n'aurait pas évités malgré notre vigilance.
Cet enseignement prendra la forme d'un cours-TD intégré. Les connaissances et compétences seront amenées par l'intermédiaire de différents exercices illustrant leur importance. Dit autrement, il vous sera demandé de résoudre certains problèmes et nous discuterons ensuite de vos solutions, de leurs comportements et pourquoi il aurait parfois fallu procéder différemment.
Objectifs pédagogiques
- Effectuer quelques rappels de C pour solidifier les acquis
- types et opérations de base, structures de contrôle, fonctions, entrées / sorties / arguments de ligne de commande, types de données composites, pointeurs, allocation mémoire, passage d'arguments par adresse.
- Comprendre les différentes étapes et les outils mis en oeuvre du texte source à un exécutable
- pré-processeur, production de code, édition de liens.
- Comprendre la différence entre avertissements et erreurs et pourquoi les avertissements sont aussi importants que les erreurs franches.
- Comprendre les contraintes et limites des différents types de scalaires
- entiers, flottants.
- Comprendre les différences subtiles entre tableaux, chaînes, pointeurs.
- Démystifier les effets de certaines erreur de « jardinage mémoire ».
- Savoir utiliser les opérations bit-à-bit.
- Savoir utiliser les champs de bits (bitfields).
- Comprendre comment encoder en C des constructions disponibles dans des langages « de plus haut niveau »
- types somme, exceptions.
- Savoir utiliser des outils de débug.
- Appréhender la programmation bas niveau et interaction avec le matériel
- entrées / sorties numériques, manipulation d'adresses et de bits, pointeurs sur fonctions et interruptions.
effectifs minimal / maximal:
/15Diplôme(s) concerné(s)
Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
- Connaissance des constructions de base du langage C
- Connaissance de la notion d'adresse et de pointeur
- Être capable d'écrire des programmes de complexité moyenne en C
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Vos modalités d'acquisition :
- 20% de QCM (mêmes QCMs que pour IN102)
- 20% de participation en TDs
- 60% de l’examen final (même examen que pour IN102)
- le rattrapage est obligatoire si :
- Note initiale < 6
- le rattrapage peut être demandé par l'étudiant si :
- 6 ≤ note initiale < 10
- Crédits ECTS acquis : 2 ECTS
Le coefficient de l'UE est : 1
La note obtenue rentre dans le calcul de votre GPA.