Prog. Delphi Lazarus

Objectif

Ce cours va de pair avec un cours d'algorithmie (généralement dispensé en Licence). Il vise à familiariser les étudiants avec les principes de la programmation événementielle et l'élaboration d'une interface graphique aux normes actuelles. Le langage de programmation utilisé est le langage DELPHI (DELPHI est à la fois une version objet du langage PASCAL et un environnement de développement intégré pour ce langage - cf. Wikipédia), les principes étudiés en revanche ne sont pas spécifiques à ce langage (découpage modulaire des applications, gestions des évènements, etc.).

Contenu

Plusieurs sujets ayant trait à l'élaboration d'une application complète sont abordés :

  • Programmation procédurale " classique " : mise en œuvre des algorithmes et des structures de données dans une application console ;
  • Introduction aux objets DELPHI ;
  • Principe de la programmation événementielle ;
  • Création des interfaces graphiques : fenêtres et objets visuels ;
  • Elaboration et organisation d'applications sophistiquées (à plusieurs fenêtres).

Parallèlement à ces enseignements techniques, les principes d'élaboration rationnelle des logiciels - le " Génie Logiciel " - sont abordés.

Ce cours est dispensé en Licence où l'étudiant se familiarise avec la programmation PASCAL procédurale et sa mise en oeuvre dans DELPHI via la programation évenementielle. Même si les étudiants manipulent bien des objets, et donc des classes, nous nous contentons des concepts basiques à ce stade.

Janvier 2022. Je n'assure plus ce cours aujourd'hui. J'ai décidé de mettre en ligne mes séances de travaux dirigés : fiches de TD + corrections (10 séances, calibrées sur approximativement - parfois plus, parfois moins - 1h30 chacune). Avec deux innovations : j'ai passé les corrigés sur LAZARUS pour que tout un chacun puisse reproduire les exercices avec un environnement de développement intégré (EDI) totalement libre d'accès et multiplateforme ; j'ai mis des tutoriels vidéos en ligne pour faciliter la prise en main de l'outil lors de la mise en oeuvre des thèmes clés.


Description de la ressource Accès
Outils pour le cours de Programmation Pascal / Pascal Objet - DELPHI
LAZARUS. Environnement de développement intégré pour le Pascal / Pascal Objet. S'appuie sur le compilateur FPC (Free Pascal Compiler).
Delphi 6. Tutoriel : accès et installation de DELPHI 6 Perso - Mot de passe (Numéro de série : 49g3-98fxh-fxngr ; Clé d'autorisation : n6t-3eu)
Slides pour le cours de Programmation Pascal / Pascal Objet - Delphi
Les bases de Delphi. Programmation procédurale en Pascal. Types de données, instructions, structures algorithmiques : branchements conditionnels, branchements multiples, boucles.
Procédures et fonctions. Introduction à la programmation modulaire. Découpage des applications en procédures et fonctions. Mode de passage des paramètres. Appel des fonctions.
Les tableaux. Tableaux statiques et tableaux dynamiques. Tableaux à plusieurs dimensions.
Les unités. Programmation modulaire (suite). Découpage des applications en modules. Les unités Delphi : les parties interface et implementation. La clause "uses" : importation des fonctions d'une unité.
Le type enregistrement. Les types structurés, le type "record" de Delphi. Définition, instanciation, accès aux champs.
Les fichiers. Fichiers textes, fichiers typés, fichiers binaires. Accès séquentiel, accès direct.
Les classes. Définition et programmation des classes. Instanciation des objets. Création des applications fenêtrées sous Delphi, les interfaces graphiques, introduction à la programmation évènementielle.
Création des applications multi-fiches sous Delphi. Fenêtre modales et non-modales. Boîtes de dialogue et formulaires d'affichage.
Tutoriels Vidéos
Application Console. Création d'un programme simple. Programme principal, déclaration des variables, gestion des entrées et sorties à la console. Implémentation des procédures et fonctions, leurs appels dans le programme principal. Ouverture d'un programme simple sur Lazarus. Compilation.
Les unités. Principe des unités (modules). Création d'une unité, les parties "Interface" et "Implementation". Importation des unités dans le programme principal ou dans d'autres unités, appel des fonctions. Utilisation des modules standards de FreePascal. Importation d'un module pré-programmé dans un projet.
Application monofenêtre. Création d'une application avec un formulaire principal. Utilisation des composants visuels. Propriétés et gestionnaires d'évènements. Boîtes de dialogues standards pour l'affichage et la saisie. Insertion et gestion d'un menu dans une fiche.
Application multifenêtres. Création d'une application avec un formulaire principal, et des formulaires et/ou boîtes de dialogues périphériques. Interaction avec les boîtes de dialogues utilisateurs. Exploitation des formulaires d'affichage.
DLL (Dynamic Link Library). Création d'une DLL, exportation des fonctions. Importation d'une DLL dans une application (Pascal), appel des fonctions. Importation d'une DLL Pascal dans un programme Python.
Fiches de TD + Corrections (éditables avec LAZARUS)
Séance 1. Création d'une application console simple. Entrées et sorties. Déclaration et utilisation des variables. Branchements conditionnels (if) et branchements multiples (case of).  
Séance 2. Boucles. Boucle FOR, boucle WHILE (TANT QUE).  
Séance 3. Récapitulatif. Branchements conditionnels et boucles (suite). Séance 2.bis en réalité.  
Séance 4. Tableaux dynamiques, tableaux et matrices de réels. Création, manipulation, accès aux valeurs, suppression.  
Séance 5. Suite tableau dynamiques de réels. Organisation en modules (unités) de l'application. Type enregistrement. Collection, tableau dynamique d'enregistrements.  
Séance 6. Fichiers textes, fichiers CSV (comma separated value -- qui est un fichier texte en réalité), fichiers typés (fichiers d'enregistrements). Création, écriture, lecture, ajout d'informations.  
Séance 7. Classes, objets, héritage, surchage des méthodes, polymorphisme, collection d'objets, listes polymorphes.  
Séance 8. Interface graphique. Application fenêtrée. Formulaire (fiche) utilisateur, formulaire principal. Boîtes de dialogue standards pour la saisie, l'affichage, l'ouverture et la sauvegarde de fichiers. Evènements associés aux composants visuels. Programmation des gestionnaire d'évènements. Menu principal. Items de menus.  
Séance 9. Interface graphique. Application multi-fenêtrées. Formulaires d'affichage et boîtes de dialogue utilisateurs. Exploitation du composant TListBox, et du gestionnaire interne de collection d'objets TStrings. Menus, association d'icônes aux menus, raccourcis de menus.  
Séance 10. Programmation des DLL (dynamic link library). Exportation des fonctions. Importation des DLL dans des applications en Pascal / Lazarus ; puis en Python. Comparaison des temps d'exécution.  
Cours en ligne ou téléchargeables
Guide Pascal et Delphi. Cours en ligne sur la programmation DELPHI, de l'initiation à l'utilisation de concepts avancés. Très complet. ("Guide Pascal et Delphi", de Frédéric Beaulieu)
DELPHI Basics. Un site de référence sur le langage DELPHI, très complet avec de nombreux exemples. Qualité exceptionnelle.
Guide du langage DELPHI par Embarcadero (éditeur de l'EDI Delphi)
Wiki Lazarus / FreePascal. Portail pour Lazarus, avec notamment des liens vers de la documentation pédagogique.
Un autre cours en ligne sur le langage PASCAL (DELPHI)
Cours d'Eric Thirion - Les bases de la Programmation et Programmation Objet. L'outil utilisé est LAZARUS, une version libre de Delphi (en schématisant un peu). Outre sa gratuité, l'énorme intérêt de LAZARUS est qu'il est multi-plateforme. Nous pouvons développer sous et compiler pour Windows, Linux, MacOS, etc.
Différents cours sur delphi, accessibles à partir du site "developpez".
Les bases de l'informatique et de la programmation avec Delphi de RM Di Scala (Ouvrage téléchargeable au format PDF).
Un cours en ligne sur la programmation turbo pascal, pertinent pour les bases de l'algorithmie en pascal
Un petit guide sans fioritures -- mais très pertinent -- pour l'organisation du travail du programmeur DELPHI
Les règles que le programmeur débutant devrait toujours respecter...
La modélisation UML
Quelques outils
INNO SETUP est un outil libre qui permet d'élaborer très facilement un SETUP pour distribuer vos applications.

Ricco Rakotomalala