Logo ÉTS
Session
Cours
Responsable(s) Iannick Gagnon

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement
École de technologie supérieure

Responsable(s) de cours : Iannick Gagnon


PLAN DE COURS

Automne 2022
INF147 : Programmation procédurale (4 crédits)





Préalables
Aucun préalable requis
Unités d'agrément
Total d'unités d'agrément : 64,8 100,0 %




Qualités de l'ingénieur

Qn
Qualité visée dans ce cours  
Qn
  Qualité visée dans un autre cours  
  Indicateur enseigné
  Indicateur évalué
  Indicateur enseigné et évalué



Descriptif du cours

Acquérir les notions et l’expérience de programmation procédurale nécessaires pour solutionner efficacement des problèmes reliés au génie électrique.

Étude du langage C en appliquant les notions de programmation structurée à la résolution de problèmes de base reliés au génie électrique. Programmation de base : syntaxe, constantes, variables, types, conversion de types, opérateurs et expressions, structures de contrôle et décision, fonctions et passage de paramètres, macros-fonctions, construction de modules, gestion dynamique de la mémoire, pointeurs, entrées-sorties, fichiers. Introduction aux structures de données imbriquées : listes, chaînage dynamique, tableaux, piles, files. Introduction aux algorithmes de tri et de fouille. Sensibilisation au développement de programmes portables de qualité. Introduction aux environnements de programmation et aux tests unitaires.

Séances de laboratoire axées sur l'application des notions de programmation.




Objectifs du cours

Ce cours a pour objectif de procurer une connaissance moderne de la programmation afin qu’un·e étudiant·e puisse solutionner des problèmes reliés à sa discipline.

Le langage de programmation utilisé est le C version C99 (ISO 9899:1999).

De façon plus spécifique, ce cours devra permettre à l’étudiant·e de :

  • Acquérir les notions de base de la programmation;
  • Acquérir une connaissance du langage C;
  • Utiliser et implémenter des types de données abstraits tels que les piles, les files et les listes chaînées.



Stratégies pédagogiques

3 heures de présentation par semaine sous forme de cours magistral.

3 heures de laboratoire par semaine.




Utilisation d’appareils électroniques

Ordinateur personnel.




Horaire
Groupe Jour Heure Activité
01 Mardi 13:30 - 16:30 Laboratoire
Jeudi 13:30 - 17:00 Activité de cours
02 Lundi 09:00 - 12:00 Laboratoire
Mercredi 13:30 - 17:00 Activité de cours



Coordonnées de l’enseignant
Groupe Nom Activité Courriel Local Disponibilité
01 Iannick Gagnon Activité de cours Iannick.Gagnon@etsmtl.ca B-1636
01 Iannick Gagnon Laboratoire Iannick.Gagnon@etsmtl.ca B-1636
02 Iannick Gagnon Activité de cours Iannick.Gagnon@etsmtl.ca B-1636
02 Francis Bourdeau Laboratoire Francis.Bourdeau@etsmtl.ca
02 Iannick Gagnon Laboratoire Iannick.Gagnon@etsmtl.ca B-1636



Cours

Ce tableau est donné à titre indicatif. Il se peut que votre 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é.

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 : chaîne de compilation-assemblage-exécution, présentation de divers environnements de programmation (p. ex. : Éclipse, Visual Studio, etc.).

Commandes au préprocesseur : #define, #include, #if..#endif et #ifndef..#endif.

Procédures et fonctions : 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.

Passage par adresse : variables pointeurs (déclaration et assignation).

Macros-fonctions : avantages, déclaration et utilisation.

Tableaux : déclaration, initialisation, accès aux éléments, passage en paramètre, algorithmes de base (p. ex. min, max, etc.), déclarations de types (avec typedef).

Introduction aux enregistrements (struct) : déclaration, accès aux champs, affectation et passage en paramètre.

Utilisation de modules externes : inclusion et utilisation de modules externes dans un projet.

Tests unitaires : définitionavantages, création de test, jeux de données et cas limites.

5 à 8

Algorithmes de base sur tableau (suite) : tris (sélection, insertion et bulle) et fouilles (linéaire et binaire/dichotomique).

Pointeurs et adresses : arithmétique des adresses (démontrer l’utilisation de sizeof) et pointeurs génériques (void *).

Classes d’allocation : auto, static et extern. La pile et le tas (angl. stack et heap).

Allocation dynamique  : utilisation des fonctions d’allocation dynamique (malloc, calloc, realloc et free), allocation de tableaux dynamiques.

Chaînes de caractères: chaînes littérales et fonctions offertes par le langage.

Implémentation de modules externes : modules de déclarations (.h) et de définitions (.c), définitions de types et implémentations des fonctions nécessaires à une architecture bien faite, encapsulation des données et des traitements.

Type de données abstraits : les piles (t_pile) et les files (t_file), première implémentation sur tableaux de ces modules de type.

9 à 13

Type de données abstraits (suite) :  les listes (t_liste), implémentation sur tableaux.

Chaînage dynamique : références chaînées (nœud), chaînage simple et double.

Piles et files : implémentations version chaînage dynamique.

Listes chaînées (simple et double) : intérêt, fonctionnement et implémentations (avec et sans position courante implicite).

Fichiers textes et binaires : le FILE * et ses fonctions classiques (fopen, fclose, feof, etc.).

Notions complémentaires présentées selon les besoins des travaux pratiques si nécessaire.

TOTAL 13 x 3 heures = 39 heures

 




Laboratoires et travaux pratiques

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 (si les exercices sont terminés).

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 suit pas le standard C99 et en mettant l’accent sur la portabilité du code. L'utilisation de l'environnement Eclipse devra être démontré par l'étudiant·e durant la session.




Évaluation

Les dates de remise des travaux pratiques dans ce tableau sont données à titre indicatif. En cours de session, votre enseignant·e vous fera part à l’avance de tout changement à l’horaire d’évaluation.

Évaluation

Pondération

Gr.01

Gr.02

Quiz 1 à 4

10 %

S.O. S.O.

Intra 1

10 %

4 oct. 3 oct.

Travail 1

10 %

6 nov. 6 nov.

Intra 2

15 %

8 nov. 7 nov.

Travail 2

15 %

11 déc. 11 déc.

Examen final

40 %

Période des examens finaux


À propos des travaux pratiques :

  • Les travaux pratiques visent à mettre en application, dans le cadre d'un problème réaliste, les concepts et les méthodes de programmation enseignés pendant les cours théoriques. Il est attendu des étudiant·es de produire des travaux qui permettent de résoudre le problème de l'énoncé MAIS SURTOUT de les réaliser selon les standards de qualité et les bonnes pratiques enseignés (respect des normes, décomposition en sous-programme/modules, etc.). La cohérence et l'optimalité des algorithmes implémentés constituent également des critères importants qui seront considérés. En tout état de cause, la note attribuée à l'exécution correcte du programme ne pourra excéder 40% de la note globale d'un travail pratique.
  • Pour chaque travail pratique, l’enseignant·e indiquera sur l’énoncé s’il doit être réalisé en équipe et, si tel est le cas, la taille de l’équipe. Une équipe ne doit remettre qu’un seul rapport.
  • Il est à noter que pour les travaux en équipe, chaque membre recevra une note inférieure ou égale à la note obtenue par l'équipe. Cette note individuelle est directement proportionnelle à l'implication de l'individu. La méthode d’évaluation de l’implication de chaque individu est laissée à la discrétion de l’enseignant·e.

À propos des examens Intra :

  • Chaque examen Intra est d'une durée de 2 heures. 

À propos de l'examen final :

  • L'examen final est d'une durée de 3 heures.
  • Aucune documentation n'est permise, à l'exception d'une même feuille de référence fournie en annexe, pour tous les groupes du cours.
  • Aucun appareil électronique n’est permis.
  • L’examen final aura lieu en présence si les conditions le permettent.

Double seuil : 

  • Une note moyenne pondérée de 50 % est exigée pour l’ensemble des évaluations à caractère individuel. Ce seuil est une condition nécessaire à la réussite du cours mais ne la garantit pas.



Double seuil
Note minimale : 50



Dates des examens intra
# Intra Groupe(s) Date
1 1 4 octobre 2022
1 2 8 novembre 2022
2 1 3 octobre 2022
2 2 7 novembre 2022



Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : http://etsmtl.ca/Etudiants-actuels/Baccalaureat/Examens-finaux


Politique de retard des travaux
Tout travail (devoir pratique, rapport de laboratoire, rapport de projet, etc.) remis en retard sans motif valable, c’est-à-dire autre que ceux mentionnés dans le Règlement des études (1er cycle, article 7.2.7 b / cycles supérieurs, article 6.5.4 b) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.



Absence à un examen
Dans les cinq (5) jours ouvrables suivants, la tenue de son examen, l’étudiant devra justifier son absence d’un examen durant le trimestre auprès de la coordonnatrice – Affaires départementales qui en référera au directeur du département ou du SEG. Pour un examen final, l’étudiant devra justifier son absence auprès du Bureau du registraire. Dans tous les cas, l’étudiant doit effectuer sa demande en complétant le formulaire prévu à cet effet qui se trouve dans son portail Mon ÉTS/Formulaires. Toute absence non justifiée par un motif majeur (maladie certifiée par un billet de médecin, décès d’un parent immédiat, Activité compétitive d’un étudiant appartenant à un club scientifique ou un club sportif d’élite de l’ÉTS ou au programme « Alliance sport étude » ou autre) à un examen entraînera l’attribution de la note zéro (0).



Infractions de nature académique
Les clauses du « Règlement sur les infractions de nature académique de l’ÉTS » s’appliquent dans ce cours ainsi que dans tous les cours du département. Les étudiants doivent consulter le Règlement sur les infractions de nature académique (https://www.etsmtl.ca/docs/ETS/Gouvernance/Secretariat-general/Cadre-reglementaire/Documents/Infractions-nature-academique ) pour identifier les actes considérés comme étant des infractions de nature académique ainsi que prendre connaissance des sanctions prévues à cet effet.  À l’ÉTS, le respect de la propriété intellectuelle est une valeur essentielle et les étudiants sont invités à consulter la page Citer, pas plagier ! (https://www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).



Documentation obligatoire

S.O.




Ouvrages de références

MANUEL RECOMMANDÉ : 

Brian W. Kernighan & Dennis M. Ritchie, The C Programming Language (2e). Prentice Hall. 1988.

Il existe plusieurs excellents manuels sur le C, mais celui-ci, surnommé K&R, contient la définition même du langage C. Il couvre la quasi-totalité de la matière vue en INF147. Il a l'avantage d'être clair et complet en plus d'être succinct, ce qui est rare pour un manuel d'informatique. Il est disponible chez presque tous les libraires.




Adresse internet du site de cours et autres liens utiles

S.O.