1 à 4
|
Description première de la qualité de programmation attendue : commentaires de spécifications et de stratégie, aération, indentation, utilisation de constantes symboliques et choix des identificateurs, portabilité.
Philosophie du programmeur : Le moins couteux en temps machine, en espace mémoire et en répétition de code sans nuire à sa clarté.
Notions élémentaires de programmation : types de base du C avec leurs opérateurs et conversions automatiques, variables, entrées/sorties de base, instructions conditionnelles et itératives, comparaison et compatibilité des types numériques, opérateurs binaires.
Environnements de programmation : chaine de compilation-assemblage-exécution, présentation de divers environnements de programmation (ex. : Éclipse, Visual Studio, etc.).
Commandes au préprocesseur : #define, #include, et #if..#endif.
Procédures, fonctions et tests unitaires : déclaration, commentaires standards de déclaration et d’implémentation, paramètres effectifs et paramètres formels, valeur de retour, passage par valeur, portée et durée de vie des variables, factorisation (découpage en sous-programmes) définition, avantages, création de tests (données et cas limites).
Passage par adresse : Introduction aux variables pointeurs (déclaration, assignation et utilisation).
Macros-fonctions : avantages, déclaration, utilisation et tests.
Tableaux : déclaration, initialisation, accès aux éléments, passage en paramètres, algorithmes de base (ex. : min, max, etc.), déclarations de type (avec typedef).
Utilisation de modules externes : inclusion et utilisation de modules externes dans un projet.
|
5 à 8
|
Algorithmes de base sur tableau (suite) : tris (sélection, insertion bulle) et fouilles (linéaires et binaires).
Introduction aux enregistrements (struct) : déclaration, accès aux champs, affectation et passage en paramètre.
Implémentation de modules externes de type (#ifndef-#define) : modules de déclarations (.h) et de définitions (.c), définitions de type, passage par référence (const ou pas const) et implémentation des fonctions nécessaires.
Pointeurs et adresses : arithmétique des adresses (démontrer l’utilisation de sizeof) et pointeurs génériques (void *).
Classes d’allocation : La pile et le tas (stack && heap).
Allocation dynamique et gestion de la mémoire haute : utilisation des fonctions d’allocation dynamique (malloc, calloc, realloc et free), allocation de tableaux et d'enregistrements dynamiques.
Chaînes de caractères: chaînes littérales const char * et fonctions standard, différence entre char* versus char[] et tests.
Type de données abstraits : introduction aux piles (t_pile) et aux files (t_file). Première implémentation sur tableaux de ces modules de type et tests.
|
9 à 13
|
Type de données abstraits (suite) : Introduction aux listes (t_liste), implémentation sur tableaux et tests.
Chaînage dynamique efficace : références chainées (nœud), chainage simple et chaînage double et tests.
Piles et files : implémentations version chaînage dynamique et tests.
Listes chaînées (simple et double) : intérêt, fonctionnement et différentes implémentations (avec (obligatoire) et sans position courante implicite), encapsulation des données et des traitements et tests.
Fichiers textes et binaires : le FILE * et ses fonctions classiques (fopen, fclose, feof, … ) et tests.
*** Voyez l'importance accordée aux tests
|