7
Algorithme 1 :Algorithme pour un camp retranché i
1 Arrivée d’un messager demandant des renforts :
2 Renvoyer le messager avec des renforts
3 Arrivée d’un messager accompagné de renforts :
4 Faire rentrer les soldats arrivants au camp
5 Quantité de soldats insuffisante :
6 Envoyer un messager demandant des renforts
7 Plus de barbares que de soldats à la bataille :
8 Faire sortir des soldats du camp et les ajouter à la bataille
9 Moins de barbares que de soldats à la bataille :
10 Faire rentrer les soldats en surnombre au camp
On suppose qu’un centurion :
- dispose au départ de 100 soldats ;
- envoie toujours autant de soldats à la bataille qu’il y a de barbares attaquant le camp (lorsqu’il
n’y a pas assez de soldats, le centurion se rend) ;
- donne des soldats à une garnison voisine s’il lui en reste au moins 30 après (il peut donner une
partie de ce qui est demandé) ;
- demande la quantité nécessaire de soldats à une garnison voisine pour maintenir son effectif à
50, et ce, dès qu’il a moins de 50 soldats.
Les batailles sont locales à un camp. On ne précise pas la garnison voisine sollicitée en cas de de-
mande de renforts. Si des renforts devaient rejoindre la garnison d’un camp qui s’était rendu, alors ils
intègreraient un autre camp.
Question 4.1 :
Rendre le code de l’algorithme 1 plus précis en utilisant une variable Garnipar camp
retranché pour compter le nombre des soldats de chaque camp.
Question 4.2 :
On considère des actions atomiques. Si les gardes suivantes sont vraies simultanément,
quelles sont les instructions associées que le centurion a intérêt à exécuter avant les
autres ?
- quantité de soldats insuffisante
- plus de soldats que de barbares à la bataille
- arrivée de renfort
Question 4.3 :
Modifier les gardes de l’algorithme de telle sorte que le centurion exécute toujours les
instructions prioritaires lorsque ces trois gardes sont vraies simultanément.
Question 4.4 :
Quelles sont les autres gardes qui devraient être modifiées de manière à privilégier cer-
taines actions sur d’autres ?
Question 4.5 :
Quel problème peut poser la garde concernant la condition interne «quantité de soldats
insuffisante» ?