Niveau d'étude
BAC +2
ECTS
6 crédits
Composante
Faculté des Sciences
Volume horaire
51h
Période de l'année
Automne
Description
Apporter la connaissance pratique du langage C aux étudiants dans une approche combinant les aspects bas niveau (hardware) et abstraction (système d’exploitation), en se basant sur les connaissances de base d’un autre langage informatique de haut niveau (programmation impérative), typiquement python.
Objectifs
- Donner aux étudiants un socle de connaissances pratiques en langage C.
- Préparer les bases permettant d’aborder la partie microcontrôleurs au second semestre
Pré-requis nécessaires
- Numération dans une base (binaire, hexadécimal)
- Bases d’algorithmique
- Connaissances élémentaires en programmation impérative (typiquement Python ou C)
Contrôle des connaissances
Examen écrit : 50% de la note finale
TP : 50% de la note finale
Syllabus
- les mots-clé de base : while, for, if
- les fonctions : structure d'un appel en bas niveau, passage de paramètres par recopie. Portée des variables.
- saisie et affichage : chaines formatées, printf et scanf.
- les types : utilité, "tableaux" statiques, représentation réelle des variables en RAM, concept d'adresse en C.
- les pointeurs : notion de variable-adresse, pointeur sur variable, typage des pointeurs et observation de la RAM à travers les pointeurs, comparaison avec la RAM vue comme un flux binaire. Notation * et []. Concept de « flux binaire d’information ».
- techniques associées aux pointeurs : passage par adresse.
- allocation dynamique : aspect système, comparaison avec l'allocation statique.
- structures de données simples, définition de nouveaux types. Fonctions manipulant des structures, pointeurs de structures, allocations de tableaux de structures.
- aperçu de structures de données avancées : listes chainées
- Bibliothèques standard: gestion des fichiers, chaines de caractères