Logo ÉTS
Session
Cours
Responsable(s) Pierre Bélisle

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement





Cours

Ce tableau est donné à titre indicatif. Il se peut que votre enseignante ou enseignant modifie l’ordre de présentation des notions pour des raisons pédagogiques.

 

COURS

MATIÈRE

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érativescomparaison 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.

Semaine 5 (2h00) Couverture des semaines 1 à 4

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.

Semaine 9 (2h00) Couverture des semaines 5 à 8

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

 

Laboratoires et travaux pratiques

3 heures et demie de cours par semaine.

3 heures de laboratoire par semaine.

Les laboratoires visent :

  • l’assimilation par l’expérience des notions vues au cours;
  • la mise au point de programmes donnés en travaux pratiques.

La séance de laboratoire pourra être jumelée avec celle du cours de façon à ce que chaque rencontre hebdomadaire se compose d’une période de théorie et d’une période de laboratoire.


Utilisation d'outils d'ingénierie

Nous utiliserons principalement le compilateur Visual C++ en évitant soigneusement toute librairie et toute fonction qui ne soient pas ANSI et en mettant l’accent sur la portabilité du code. L'utilisation de l'environnement Eclipse devra être démontrée par l'étudiante ou l'étudiant durant la session.