Obligement - L'Amiga au maximum

Samedi 20 avril 2024 - 08:48  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Introduction au FreePascal sous MorphOS
(Article écrit par Julien Marcel - août 2005)


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 :
  • La dernière version du FreePascal pour MorphOS, téléchargeable ici.
  • MorphED, l'éditeur de code source gratuit dérivé de GoldED. Pour cela, vous devez vous inscrire sur le site du MorphOS Developer Connection. Vous allez ensuite télécharger le fichier mossdk_morphed.lha situé dans la rubrique "SDK" de l'onglet "Files".
  • Toujours sur le site du MorphOS Developer Connection, vous devez télécharger le fichier de coloration syntaxique du Pascal pour MorphED : GED5MorphED_Pas075.lha.
  • Un Pegasos sous MorphOS. Le FreePascal a été développé par Karoly Balogh sous la version 1.4.4 de MorphOS.
Premiers pas

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 :
  • Décompressez l'archive du FPC directement à l'emplacement final de votre choix. Par exemple, j'ai décompressé l'archive dans le répertoire "développement" de ma partition "Work:" et ai maintenant un répertoire Work:Développement/fpc-2.0.0/.

  • Ensuite, ajoutez les lignes suivantes à votre user-startup (le fichier situé dans le répertoire "s" de votre partition MorphOS) :

    ;BEGIN FPC
    Assign FPC: <l'endroit où vous avez décompressé le FPC>
    Path FPC:bin/powerpc-morphos ADD
    ;END FPC

  • Ouvrez ensuite un Shell et entrez la ligne de commande suivante :
    SetEnv SAVE PPC_CONFIG_PATH FPC:bin/powerpc-morphos/fpc.cfg

  • Ouvrez ensuite le fichier fpc.cfg situé dans le répertoire FPC:bin/powerpc-MorphOS, et éditez les lignes :
    -FDwork:develop/tools/fpc/bin/$fpctarget/
    -Fuwork:develop/tools/fpc/units/$fpctarget/
    -Fuwork:develop/tools/fpc/units/$fpctarget/
    ...en remplaçant la partie située avant /fpc par le bon chemin. Par exemple, j'ai remplacé la première ligne sur mon système par :
    -Work:Développement/fpc/bin/$fpctarget/

  • Redémarrez votre Pegasos. Voilà, c'est prêt! :-)
Un premier programme : Bonjour la planète!

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 :

program Bonjour;

begin
writeln('Bonjour la planète!');
end.

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 :

Ram Disk: > cd Work:Pascal
Work:Pascal> fpc bonjour

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 :

program Bonjour2;

procedure DireBonjour;
begin
writeln('Bonjour la planète!');
end;

begin
DireBonjour;
end.

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 :

program Bonjour3;

procedure DireBonjour( chaine : string );
begin
writeln(chaine);
end;

begin
DireBonjour('Bonjour la planète!');
end.

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 :

program Bonjour4;

function Dire( choix : integer ) : string;
begin
case choix of
1 : Dire :=
'Bonjour la planète!';
2 : Dire := 'Au-revoir la planète!';
end;
end;

begin
writeln(Dire(1));
end.

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
Sur le Pascal en général
Cours
  • Un ensemble pédagogique de plusieurs dizaines de mégaoctets, pour PC sous Windows, permettant de se former à l'algorithmique et au Pascal/Delphi, réalisé par RM Di Scala, professeur d'informatique à l'Université François Rabelais de Tours. Près de 2500 pages de cours au total, accessibles via une interface programmée en Delphi et très pratique. Tout simplement extraordinaire ! A télécharger ici : rmdiscala.developpez.com/cours/.


[Retour en haut] / [Retour aux articles]


Soutenez le travail de l'auteur