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

Se connecter
 

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

Responsable(s) de cours : Pierre Bélisle


PLAN DE COURS

Hiver 2024
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’une étudiante ou un étudiant puisse solutionner des problèmes reliés à sa discipline.

Le langage de programmation utilisé est le C ANSI 99.

De façon plus spécifique, ce cours devra permettre à l’étudiante ou l'étudiant de :

  • acquérir les notions de programmation de base;
  • acquérir une connaissance du langage C;
  • utiliser et implémenter des types de données abstraits (pile, file et liste).



Stratégies pédagogiques

3 heures de présentation par semaine sous forme de cours magistral par vidéo-conférence,

3 heures de laboratoire par semaine

Les laboratoires visent :

  • l'assimilation des notions vues au cours à l’aide d’exercices;
  • la mise au point des programmes donnés en travaux pratiques (si les exercices sont finis).



Utilisation d’appareils électroniques

Voir Modalités de la session d’hiver 2022 en en-tête de ce plan.




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



Coordonnées de l’enseignant
Groupe Nom Activité Courriel Local Disponibilité
01 Éric Thé Activité de cours Eric.The@etsmtl.ca B-2568
01 Éric Thé Laboratoire Eric.The@etsmtl.ca B-2568
01 Hugues Saulnier Laboratoire Hugues.Saulnier@etsmtl.ca B-2568
02 Francis Bourdeau Activité de cours Francis.Bourdeau@etsmtl.ca
02 David Beaulieu Laboratoire David.Beaulieu@etsmtl.ca B-2568
02 Francis Bourdeau Laboratoire Francis.Bourdeau@etsmtl.ca
03 Éric Thé Activité de cours Eric.The@etsmtl.ca B-2568
03 Éric Thé Laboratoire Eric.The@etsmtl.ca B-2568
03 Hugues Saulnier Laboratoire Hugues.Saulnier@etsmtl.ca B-2568



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.




Évaluation

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

                     

Évaluation

Pondération

Semaine

Groupe 01

  Groupe 02   Groupe 03

Examen intra 1
(2 heures)

10 %

5

01 février 05 février 05 février

Travail #1

10 %

5 04 février 11 février 7 février

Examen intra 2
(2 heures)

15 %

9 29 février 11 mars 11 mars

Travail #2

12%

9 10 mars 17 mars 13 mars

Travail #3

13 %

13 14 avril 14 avril 14 avril

Examen final
(3 heures)

40 %

Période des examens finaux (p)

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’enseignante ou l'enseignant 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’enseignante ou l'enseignant.

À propos des examens :

  •  Les examens ont lieu en présence

À propos de l'examen final :

  • Aucune documentation et aucun accès Internet n'est permis.
  • Aucun appareil électronique (téléphone tablette,etc.) autre que l'ordinateur du laboratoire n'est autorisé.

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.

À propos de la langue utilisée

  • Afin de respecter les exigences relatives à la langue française telles que stipulées à la Politique linguistique de l’École, le code et les commentaires de code doivent être principalement en français tel que c'est le cas pour tous les exemples et documents qui seront fournis aux étudiantes et étudiants.



Double seuil
Note minimale : 50



Dates des examens intra
# Intra Groupe(s) Date
1 1 1 février 2024
1 2, 3 5 février 2024
2 1 29 février 2024
2 2, 3 11 mars 2024



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
À 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/Etudes/citer-pas-plagier). Les clauses du règlement sur les infractions de nature académique de l’ÉTS (« Règlement ») 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 qui constituent des infractions de nature académique au sens du Règlement ainsi que prendre connaissance des sanctions prévues à cet effet.

Systèmes d’intelligence artificielle générative (SIAG)
L’utilisation des systèmes d’intelligence artificielle générative (SIAG) dans les activités d’évaluation constitue une infraction de nature académique au sens du Règlement sur les infractions de nature académique, sauf si elle est explicitement autorisée par l’enseignant(e) du cours.



Documentation obligatoire

S.O.




Ouvrages de références

Le choix d’un livre est laissé à la discrétion de l’étudiante ou de l'étudiant. Voici quelques livres portant sur le langage C et diverses références plus spécialisées

 

MANUEL RECOMMANDÉ :

MILLER, Lawrence H. & Alexander E. QUILICI. The Joy of C – Programming in C, Wiley, 1997.

Excellent manuel sur le C complet. Rien n’est laissé au hasard. Tou.tes les étudiant.es auraient avantage à connaître ce bouquin. Très longuement utilisé dans le cours INF125.

 

RÉFÉRENCES PLUS SPÉCIALISÉES :

  • DRIX, Philippe. Le langage C ANSI – Vers une pensée objet en Java, 3e éd., InterEditions, 1993. Ce livre s’adresse à un lecteur connaissant déjà la programmation (préférablement en Pascal) et l’amène aux portes de la programmation orientée objet. Son approche et ses objectifs correspondent très bien à la mentalité du cours. Son seul défaut est qu’il n’aborde pas les structures de données.
  • HARBISON III, Samuel P. & Guy L STEELE JR. C – A reference manual, 5e éd., Prentice Hall, 2002. Ce livre décrit le langage C et un style de programmation axé sur la portabilité et la maintenance. Il ne se veut pas un guide d’apprentissage de la programmation en C. En plus d’être extrêmement précis, il discute de la norme C99, ce qui est rare dans les livres de C pour l’instant.
  • BRASSARD, Gilles & Paul BRATLEY. Algorithmique – Conception et analyse, Masson, 1987. Un manuel avancé dépassant largement les objectifs de notre cours. Son intérêt se situe au niveau des algorithmes touchant les arbres et les graphes. Si vous souhaitez approfondir ces sujets ou étudier la notion d’algorithmie, alors ce livre devrait vous intéresser.
  • KOENIG, Andrew. C traps and pitfalls, 5e édition, Addison-Wesley, 1989. Un tout petit livre qui aborde les embûches courantes rencontrées par le programmeur en C. Bien que notre cours dépasse largement les notions présentées dans ce livre, celui-ci recèle des informations que tout étudiant doit savoir à la fin du cours.



Adresse internet du site de cours et autres liens utiles

L'enseignante ou l'enseignant informera les étudiantes et étudiants s'il y a lieu.




Autres informations

Les séances de cours et de travaux pratiques des cours-groupes dont le mode d'enseignement est hybride sont offertes entièrement à distance. L'étudiante ou l'étudiant inscrit à un tel cours-groupe n'a donc pas besoin de se déplacer à l'École durant la session, sauf lors des évaluations en présence identifiées à la section "Évaluation".