Comment Programmer 1

PARTIE 1

L' APPROCHE DU PROBLÈME

Applescript est un langage de programmation, aussi est-il nécessaire d'avoir quelques notions dans ce domaine pour appréhender et se servir de cet outil.
La programmation est une suite d'actions que l'ordinateur doit effectuer, dans un ordre précis. Ces actions sont décrites à l'aide d'un langage, ici nous nous limiterons à AppleScript, bien que les principes qui seront développés sont facilement transposables aux autres langages de programmation.
Un programme commence toujours de la même façon : il était une fois..., et finit toujours de la même manière : ...ils vécurent heureux et eurent beaucoup d'enfants.
La première structure est de forme compact, un résumé de résumé, de sorte qu'il ne reste plus que le sujet et le verbe. Nous allons travailler sur un exemple de la vie courante, le lever. Ceci nous donne quelque chose comme :
Le réveil sonne, je me lève, je prépare le café, je me lave, je bois le café.
En AppleScript cela devient :
on run
  Reveil(7)
  Lever()
  PrepCafe(1)
  Laver()
  BoireCafe(1)
end run

On ne prend que le verbe que l'on afflige de deux paranthèses (comme dans Reveil(7)). En AppleScript cela s'appelle une Subroutine.
Un programme est donc avant tout une succession de Subroutines qui feront chacune une action. Cette action peut retourner un résultat.
Notre première Subroutine (Reveil(7)) aura comme résultat la sonnerie du réveil, la seconde (Lever()) n'aura pas de résultat, la troisième (PrepCafe(1)) aura tant qu'à lui le résultat de faire du bon café ...
Le tout est compris entre un on run (il était une fois ...) et un end run (... ils vécurent heureux et eurent beaucoup d'enfants).
Ce petit programme n'aura pas d'autre intérêt que d'apprendre les bases d'une bonne programmation, mais aussi pour démontrer que -absolument tout- est programmable, seule la limite de notre imagination est bloquant.
Une autre limite apparaît à l'écriture d'un programme : la parfaite connaissance des possibilités du langage. C'est que je propose de développer tout au long de ce cours, en employant la méthode de l'escalier une marche pour deux. C'est à dire que l'on va à chaque fois monter rapidement une marche, puis en redescendre deux pour les remonter lentement, et ainsi de suite.

ENTRE UN ON RUN ET UN END RUN


Le programme exécutera chaque Subroutine en commençant par le on run, qui est la Subroutine principale, et se terminera arrivé au end run. Le programme n'ira pas plus loin, même si il y a autre chose en dessous du end run.
Une Subroutine est constituée par un nom, par exemple Reveil, suivi de ses paramètres entre parenthèses, par exemple (7). Le nombre de paramètre peut être nul, comme dans Lever(), jusqu' à 32 séparés par un virgule, comme par exemple Reveil(7,"Dring","Bonjour").
Un nom de Subroutine ne doit contenir que des caractères compris entre A et Z, a et z, 0 et 9. Il ne doit pas commencer par un chiffre. Reveil ne peut donc pas s'écrire Réveil ou 7Reveil. D'autres caractères sont admis, tel que le trait bas _, Reveil_matin est admis. Le choix du nom d'une Subroutine est important: à lui seul on doit pouvoir savoir ce qu'elle va faire. Si j'écris Reveil_matin(7), c'est sûr, elle ne fera pas le café... par contre si j'écris Actions_matin(7), c'est déjà moins évident.
Certains mots sont réservés, tel que it, me ou run, car utilisés par AppleScript lui-même. Il serait très difficile d'établir une liste exhaustive de tous les mots réservés, car cette liste fluctue avec les applications qui peuvent être appelées par votre script. Vous pouvez, pour éviter tous conflits, établir une stratégie du genre : toutes mes Subroutines commence par Sbr_. Ce qui nous donne :
on run
  Sbr_Reveil(7)
  Sbr_Lever()
  Sbr_PrepCafe(1)
  Sbr_Laver()
  Sbr_BoireCafe(1)
end run

Reveil a peu de chance d'être déjà utilisé, Sbr_Reveil n'en a aucune.

ECRIRE NOTRE PREMIERE SUBROUTINE

Maintenant que notre structure est en place, nous allons décrire ce que chaque Subroutine doit accomplir. La première Sbr_Reveil(7), doit sonner à l'heure indiquée, dans notre exemple à 7 heures.
Nous allons toute fois modifier un peu la donne : vue que notre script devra s'exécuter plusieurs fois de suite pour tester et bien comprendre ce qui se passe, il serait fastidieux d'attendre chaque 7 heures du matin pour voir le résultat!
Aussi allons-nous transformer le 7 heures en : au bout de 7 secondes suivant l'appelle à la Subroutine. J'ai écris 7 secondes, mais en fait c'est à vous de voir, rien ne vous empêche de n'en mettre que 5 : Sbr_Reveil(5).
Une Subroutine commence toujours de la même façon : il était une fois..., et finit toujours de la même manière : ...ils vécurent heureux et eurent beaucoup d'enfants.
Posons à plat notre premier problème : il nous faut tout d'abord connaître l'heure qu'il est. Puis attendre le nombre de secondes désirées, ce qui a été envoyé en paramètre. Puis enfin sonner.
Ce qui nous donne à peu près ceci : prendre l' heure courante que j'ajoute le nombre de secondes désirées, je mets le tout dans un pot. Si l'heure courante est égale à ce qu'il y a dans le pot, alors je sonne.
Le pot en AppleScript s'appelle une Variable.
on Sbr_Reveil(Sonnerie)
  
set Heure_Sonnerie to (time of (current date) + Sonnerie)
  
repeat
    
set Heure_Courante to time of (current date)
    
if Heure_Courante = Heure_Sonnerie then
      
exit repeat
    
end if
  
end repeat
  
return "Dring"
end Sbr_Reveil

MANIER L'ÉDITEUR

Lorsque l'on écrit un script depuis l'Éditeur de scripts, les mots qui font partis du langage d'AppleScript sont inscrits en caractères gras.
L' Éditeur de Scripts se trouve dans le dossier "AppleScript" du dossier "Compléments Apple". Vous pouvez ouvrir cet Éditeur et tapez le script où nous en sommes :
on run
  Sbr_Reveil(7)
  Sbr_Lever()
  Sbr_PrepCafe(1)
  Sbr_Laver()
  Sbr_BoireCafe(1)
end run

on Sbr_Reveil(Sonnerie)
  
set Heure_Sonnerie to (time of (current date) + Sonnerie)
  
repeat
    
set Heure_Courante to time of (current date)
    
if Heure_Courante = Heure_Sonnerie then
      
exit repeat
    
end if
  
end repeat
  
return "Dring"
end Sbr_Reveil
Le maniement de cet Éditeur est on ne peut plus simple : vous tapez votre texte sans vous soucier du formatage, et une fois fini vous validez par la touche de validation (dans le pavé numérique du clavier) ou par le bouton "Vérifier". De lui-même l' Éditeur va formater convenablement votre texte, et vous avertit d'éventuelle erreur de syntaxe.


Avant validation


Après Validation

Si vous exécutez le programme par le bouton "Exécuter", vous obtiendrez une erreur, puisqu'une seule Subroutine a été définie. Par contre rien ne vous empêche d'enregistrer votre script, la seule obligation pour enregistrer c'est que la syntaxe soit juste.