|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
Pourquoi programmer en Pascal sous MorphOS ? Sur nos plates-formes traditionellement dominées par la programmation en C/C++, la question peut se poser de l'opportunité de développer en Pascal. Le Pascal est sans doute le meilleur langage d'initiation à la programmation. C'est d'ailleurs la raison pour laquelle il est d'abord enseigné aux étudiants en informatique, et sert de support à tous les autres cours : algorithmique, intelligence artificielle, etc. D'une rare élégance, il n'a pas la syntaxe cryptique du C et est remarquablement facile à apprendre. Cette facilité d'utilisation ne doit pas faire croire à un manque de puissance : tout ce que vous pourriez faire en C/C++, vous pouvez également le faire en Pascal. Par ailleurs, le Pascal, surtout sous l'influence de Borland et de son fameux produit Delphi, a considérablement évolué au cours des dix dernières années : programmation objet (encapsulation, héritage, polymorphisme...), surcharge des méthodes (overloading), etc. Rien de ce que peut faire le C++ n'est impossible en Pascal Objet. Si vous ne comprenez pas certains mots de cet article, pas de panique : non seulement nous aurons l'occasion d'aborder ces notions plus en profondeur à l'avenir, mais encore il n'y a rien de bien mystérieux en la matière et vous ferez vite de l'objet sans y penser, comme monsieur Jourdin faisait de la prose sans le savoir. Si Delphi est probablement le plus formidable outil de développement jamais conçu, il souffre cependant de deux inconvénients : d'une part il ne fonctionne que sous Windows, et d'autre part il n'est pas gratuit. Si Borland tente de corriger le premier défaut, notamment en portant Delphi sous Linux (dans une version appelée Kylix), le second n'est pas prêt de disparaître : Delphi serait même particulièrement inabordable pour nos bourses de hobbyistes. Faut-il donc désespérer ? Non car, heureusement, surgit comme le Chevalier Blanc, nous avons désormais le FreePascal sur nos machines. Le FreePascal ? Quèsaco ? Le FreePascal est une réécriture sous licence GPL du compilateur Pascal Objet de Delphi. Il fournit même dans sa version Windows une compatibilité source avec les programmes conçus pour Delphi. Ecrit depuis le milieu des années 1990 en Pascal par des passionnés, FreePascal est aujourd'hui l'un des compilateurs les plus perfectionnés disponibles, tous langages confondus. Ses concepteurs, partis de rien, ont en effet souhaité faire de leur compilateur la panacée, l'état de l'art de ce qui se fait actuellement de mieux en informatique théorique. Une des conséquences de ce choix est l'extrême modularité de ce compilateur : fini l'époque des compilateurs monolythiques qui nécessitaient un travail gigantesque pour être portés d'une architecture à l'autre. Ici, porter le FreePascal sur MorphOS a "seulement" demandé à Karoly Balogh l'adaptation de la partie arrière du compilateur, ou générateur de code. Je met "seulement" entre guillemets car même cette partie du compilateur demande une expertise élevée, et notamment une maîtrise parfaite de l'assembleur des processeurs PowerPC. Merci Karoly ! Résultat des courses : nous disposons maintenant sur nos machines d'un compilateur performant pour un langage facile à apprendre, élégant et extrêmement puissant. Vous qui n'avez jamais programmé quoi que ce soit n'avez donc plus aucune excuse pour ne pas vous y mettre immédiatement et participer ainsi à l'essort de notre plate-forme ! A ce sujet, la majeure partie de ces articles sur la programmation en FreePascal de MorphOS pourra être réutilisée sans modification sous Amiga Classic, AmigaOS 4 et AROS, pour peu que ces plates-formes disposent également d'un bon portage du FreePascal. Dans ce premier article, nous verrons en premier lieu comment mettre en place tous les outils nécessaires au développement en FreePascal, puis nous aborderons un exemple classique : le fameux "Bonjour la planète!". Installer le FreePascal Prérequis Vous devez au préalable disposer des éléments suivants :
L'installation de MorphED et de la coloration syntaxique pour le Pascal sont très faciles, puisque, une fois les deux archives décompressées, il suffit de lancer le script d'installation fournit. :-) Par contre, l'installation du FreePascal Compiler (FPC) est un tantinet plus ardue. Voici les étapes à suivre :
A la fois pour nous assurer que tout fonctionne bien et pour voir un premier exemple en Pascal, nous allons faire un premier essai avec un grand classique de la programmation : le fameux programme "bonjour la planète!". Ouvrez MorphED et tapez le programme suivant :
Enregistrez ensuite ce programme sur votre disque dur, idéalement dans un répertoire créé pour vos essais en Pascal. Pour l'exemple, nous considèrerons que nous l'avons sauvegardé dans Work:Pascal, et que le fichier s'appelle "Bonjour.pas". A cette occasion, vous verrez MorphED procéder instantanément à la coloration syntaxique de votre code source. Ouvrez ensuite un Shell et tapez :
Le FreePascal se met au travail et affiche, si vous n'avez pas fait d'erreur en recopiant le programme : Free Pascal Compiler version 2.0.0 [2005/05/16] for powerpc Copyright (c) 1993-2005 by Florian Klaempfl Target OS: MorphOS Compiling bonjour.pas Assembling bonjour Linking bonjour 5 lines compiled, 0.3 sec Tapez ensuite simplement "bonjour" dans le Shell et pressez entrée. La ligne suivante s'affichera : Bonjour la planète! Félicitation ! Vous venez de réaliser votre premier programme en Pascal ! :-) Quelques explications Un programme en Pascal commence toujours par le mot-clé "program" suivi du nom de votre programme terminé par un point-virgule. Chaque instruction en Pascal doit être terminée par un point-virgule, sauf les instructions de bloc. Ici, une seule instruction est utilisée : writeln (écrire ligne), qui prend comme argument une chaîne de caractères placée entres apostrophes. Les instructions de bloc sont des instructions qui délimitent des structures logiques à l'intérieur de votre programme. Malgré la petite taille de notre programme, nous en avons ici une : la structure "begin... end." Chaque programme Pascal doit au minimum avoir cette structure. La partie principale du programme, celle que le compilateur va exécuter en premier lorsque vous lancerez votre programme, est toujours la structure qui commence par "begin" et se termine par un "end" suivi d'un point. Les sous-programmes utilisent aussi une structure "begin-end", mais le end est alors suivi d'un point virgule. Voici un exemple simple pour comprendre l'articulation entre les sous-programmes et la boucle "begin-end" principale. Modifiez ainsi le programme bonjour :
Puis sauvegardez-le sous "bonjour2.pas", compilez-le et exécutez-le : vous verrez qu'il produit exactement le même résultat que notre programme bonjour.pas. Dans le programme Bonjour2, nous avons extrait l'affichage de la phrase de la boucle principale, et le réalisons au moyen d'un sous-programme appelé DireBonjour. Il y a différents types de sous-programmes en Pascal : les procédures et les fonctions. Ces deux structures acceptent des arguments en entrée, mais seule la fonction peut exporter un résultat. Qu'est-ce que j'appelle "argument en entrée" ? Eh bien, pour le comprendre, modifiez notre programme Bonjour2 de la manière suivante :
Vous constaterez que, encore une fois, cette troisième version de notre programme produit exactement le même résultat que les deux autres. Observez bien le manière dont nous passons un argument à la procédure DireBonjour : celle-ci, d'après son en-tête, ne peut accepter que des données de type "string" (chaîne de caractère). Et c'est bien ce que nous lui passons, avec notre commande "DireBonjour('Bonjour la planète!');. Nous aurions pu passer deux arguments ou plus si l'en-tête de la procédure l'avait permis : (chaîne1 : string; chaîne2 : string; nombre : integer ); etc. Si la procédure peut accepter des arguments et effectuer des actions, elle ne peut en revanche pas retourner de résultat, contrairement à la fonction. Observons le fonctionnement d'une fonction. Pour cela, modifiez encore une fois votre programme de la manière suivante :
Ici, nous demandons à la fonction Dire() de générer une chaîne de sortie en fonction du paramètre d'entrée "choix" : l'instruction writeln() de la boucle principale appelle la fonction Dire() en lui passant le paramètre numérique "1" et affiche directement la chaîne générée par cette fonction. Dans cet exemple, nous avons également vu la structure de contrôle "case of ... end" qui permet de faire réagir le programme en fonction de certaines valeurs. Il existe d'autres structures de contrôle, que nous verrons plus tard. Quand vous aurez compilé et exécuté Bonjour4, vous pourrez constater qu'il produit exactement le même résultat que les trois premiers exemples que nous avons vu. La prochaine fois, un peu plus loin avec Intuition : Bonjour la planète dans sa propre fenêtre! Bien, vous connaissez maintenant l'architecture de base d'un programme en Pascal, et vous commencez à vous sentir frustré de ne pouvoir qu'afficher du texte dans un Shell. Que diable ! Nous sommes sous un système d'exploitation graphique, oui ou non ? Qu'à cela ne tienne ! Nous répéterons la prochaîne fois notre exemple "Bonjour la planète!", mais cette fois en lui faisant générer sa propre fenêtre sous Intuition, la bibliothèque chargée par le système d'exploitation de gérer l'interface graphique de base des systèmes compatibles AmigaOS. Ce sera pour nous l'occasion d'aborder le fonctionnement de MorphOS, de voir les bases de la programmation événementielle, et d'aborder le sujet souvent délicat des pointeurs. Conclusion J'espère que cette introduction au FreePascal vous aura donné envie de vous mettre à la programmation. Notre machine n'a pas besoin d'utilisateurs se plaignant toujours qu'il ne se passe rien, mais au contraire de passionnés actifs et créatifs. Et le FreePascal est justement un formidable outil de création. Il vous faudra d'ailleurs être imaginatif, car ici pas question de faire de simples ports sous SDL : vous devrez vous-même développer vos projets de A à Z. N'hésitez pas à me faire part de vos suggestions, des sujets que vous voudriez voir abordés, voire à me communiquer vos codes sources et/ou articles si vous désirez les partager. Enfin, Karoly Balogh est toujours heureux de recevoir des encouragements et félicitations pour son formidable travail : alors n'hésitez pas à le contacter. Liens Pour terminer, voici quelques liens utiles : Sur le FreePascal
|