Composante
École Nationale Supérieure d'Électrotechnique d'Électronique d'Informatique d'Hydraulique et des Télécommunications
Objectifs
Ce cours offre une introduction complète aux principes de la programmation impérative en utilisant Ada comme langage principal. Les étudiants apprendront à spécifier, définir et tester des programmes qui exploitent la modularité et la généricité pour implémenter des algorithmes simples et complexes. À travers des exercices pratiques et des tutoriels, en utilisant un pseudo-langage pour la conception d'algorithmes et Ada pour l'implémentation, ils maîtriseront des concepts clés tels que les séquences, les boucles, les conditionnels, les structures de données (tableaux, enregistrements, structures chaînées), les sous-programmes (procédures et fonctions), les modules, les méthodes de raffinement, la généricité, la récursion, les types de données abstraits, l'allocation dynamique de mémoire et la gestion des exceptions. À la fin du cours, les étudiants disposeront des compétences nécessaires pour concevoir, développer et tester des programmes et projets à grande échelle, y compris la spécification formelle et les méthodes de raffinement.
Description
Le plan du cours est le suivant :
- Le langage ADA élémentaire et structures de contrôle
- La méthode des raffinages pour solution algorithmique
- Les types tableau, enregistrement et énumération.
- Les sous-programmes : procédures et fonctions
- Les modules pour organiser et réutiliser les sous-programmes
- La généricité pour généraliser un module
- La programmation offensive (par contrat) et défensive (exceptions)
- L'allocation dynamique de mémoire
- Les types abstraits de données
Ce cours comprend également un projet complet, généralement réalisé individuellement ou en binôme. Il met au défi les étudiants d'analyser et d'organiser un problème complexe, en appliquant les principes de la programmation impérative pour élaborer une solution. De plus, il introduit également des compétences transversales telles que le travail en équipe, la communication et la gestion de projet, aidant les étudiants à développer à la fois des compétences techniques et collaboratives grâce à une expérience pratique et concrète.
