• Aucun résultat trouvé

UNE MARCHE A SUIVRE, QU'EST-CE QUE C'EST ?

1. Découverte des constituants d'une marche à suivre

2.5 L'appel de procédure

REPEAT A UNTIL condition suite ou ou ou

TANT QUE condition A suite WHILE condition DO A suite Organigramme Basic Rien Rien Comme pour la structure alternative, on se heurtera donc à quelques problèmes, lors du

codage en Basic des structures répétitives, puisque ce langage (dans ses versions pauvres) n'offre pas de traduction immédiate de ces structures.

2.5 L'appel de procédure

Il s'agissait, je le rappelle, d'une instruction d'action complexe, laissée telle quelle dans le texte de la marche à suivre, mais assortie de l'explicitation indispensable au niveau d'une marche à suivre annexe.

Je ne dirai presque rien pour l'instant des divers modes de représentation de cette structure, sauf en ce qui concerne les GNS.

Simplement, le rectangle comportant une instruction trop complexe sera dédoublé et un GNS annexe reprendra l'explication de cette instruction complexe

Par exemple : condition

A

suite condition

A

suite

Marche à suivre Annexe

Comment FAIRE TELLE CHOSE COMPLEXE

Fais ceci FAIS TELLE CHOSE

COMPLEXE Fais cela

GNS explicitant l'action trop complexe

J'ajouterai que cette structure d'appel de procédure est omniprésente en Pascal et ... pratiquement absente dans les deux représentations cousines que sont organigramme et langage Basic.

Les adeptes de Basic rétorqueront, sans doute, que l'appel de procédure existe bel et bien dans ce langage sous la forme de l'instruction GOSUB ... . Sans entrer dans les détails, je dirai simplement qu'en Basic :

- les procédures ne constituent pas véritablement des annexes au programme principal, mais en font partie;

- l'instruction d'appel de procédure GOSUB envoie, comme le branchement (GO TO ...), à un autre endroit du programme, au début de la procédure et, une fois les actions commandées par celle-ci effectuées, l'exécutant revient à l'instruction qui suit immédiatement le GOSUB qui l'avait, un moment, détourné vers la procédure. Pour faire bref, l'appel de procédure en Basic, c'est un branchement avec mémorisation de l'endroit d'où le saut est fait, pour pouvoir y revenir.

L'appel de procédure est l'une des structures les plus importantes en programmation. C'est elle qui permet d'incarner la démarche descendante (dont je reparlerai). C'est aussi l'une de celles pour laquelle les détails techniques (variables globales et locales, paramètres ...) seront les plus difficiles à appréhender. Je n'en dis donc pas plus pour l'instant.

2.6 Le branchement

Il s'agit de ce mode d'organisation des marches à suivre qui brise le déroulement séquentiel en "envoyant" l'exécutant à un autre endroit de la marche à suivre. C'est la structure traduite par l'indication :

ALLEZ EN ...

Le branchement est souvent employé combiné à l'alternative pour prendre la forme :

SI ... ALORS ALLEZ EN ...

qu'on appelle parfois branchement conditionnel.

Le branchement a fréquemment été dénoncé comme un outil de "désorganisation" des marches à suivre et sa condamnation a coïncidé avec la prise de conscience des nécessités d'une programmation structurée.

Ce débat est, à présent, dépassé. Il a cependant permis de prendre conscience qu'un certain nombre de principes doivent être respectés si l'on souhaite écrire des programmes corrects, clairs, compréhensibles et modifiables.

En ce qui concerne la présentation adoptée ici, le branchement ne nous servira pas en tant que structure de contrôle. Il ne possède d'ailleurs pas de représentations sous forme GNS. Il existe bien en Pascal (traduit par les instructions GO TO ...) mais y est relativement peu employé.

Par ailleurs, il est omniprésent dans les organigrammes et en Basic, qui est le langage dans lequel vont s'incarner les structures présentes dans ces organigrammes. En voici un exemple particulièrement représentatif. Le contenu des rectangles et losanges est sans importance. Ce qu'il faut percevoir, ce sont tous les "parcours fléchés" qui renvoient d'un coin à l'autre de la marche à suivre rendant peu visible ce que sera le déroulement d'une exécution.

J'aurai pu présenter, de la même manière, quelques exemples de programmes Basic, mentionnant l'usage immodéré du branchement et du branchement conditionnel. Je pense que s'il fut un temps où il fallait convaincre de la nocivité du branchement comme outil de pensée et d'organisation, cette époque est, heureusement, révolue. Et puis, il est toujours délicat de présenter des exemples de ce qu'il ne faut pas faire !

3. Exercices

1. Pouvez-vous mettre en évidence, dans les exemples de marches à suivre présentées au début de ce chapitre :

- des structures de contrôle.

Exprimez, sous forme GNS, les structures de contrôle détectées. 2 Voici, sous forme GNS et pseudo-code, une courte marche à suivre :

Entrez Buvez un petit verre

JUSQU'A CE QUE vous voyiez double

Asseyez-vous Entrez

REPETER

Buvez un petit verre

JUSQU'A CE QUE vous voyiez double Asseyez-vous

a) Pouvez-vous la transcrire dans le formalisme des organigrammes ?

b) Réécrivez-la sous forme GNS (ou pseudo-code), en utilisant la structure "TANT QUE ..." et toute autre structure de contrôle à l'exclusion de "REPETER ... JUSQU'A CE QUE..." .

Je ne vous demande, ni de juger du bien fondé ou de la moralité de cette marche à suivre, ni de l'améliorer, mais seulement de la transcrire sous une autre forme. Les exécutions de la marche à suivre proposée et des transcriptions que vous suggérerez doivent être identiques, dans tous les cas.

3. Voici, sous forme GNS et pseudo-code, une marche à suivre :

Entrez Entrez

TANT QUE les élèves veulent travailler TANT QUE les élèves veulent travailler Donnez 5 minutes de cours Donnez 5 minutes de cours

Sortez Sortez

a) Exprimez-la dans le formalisme des organigrammes.

b) Fournissez, sous forme GNS (ou pseudo-code), une marche à suivre équivalente (= conduisant à des exécutions identiques), sans employer la structure "TANT QUE...". 4. Vous souhaitez faire marcher, jusqu'à ce qu'il touche un mur, un exécutant borné qui est

seulement capable de faire un pas, de s'arrêter et de se rendre compte qu'il touche (oui ou non) le mur à atteindre.

a) Ecrivez des marches à suivre pour cet exécutant sous forme - d'organigramme;

- d'un programme "à la Basic";

- d'un GNS;

- d'un programme "à la Pascal". b) Que pensez-vous de la solution suivante ? FAIS TOUT CE QU'IL FAUT

POUR ATTEINDRE LE MUR Comment "FAIRE TOUT CE QU'IL FAUT POUR ATTEINDRE LE MUR"

tu touches

le mur ?

V F Fais un pas

Arrête

FAIS TOUT CE QU'IL FAUT POUR ATTEINDRE LE MUR

FAIS TOUT CE QU'IL FAUT POUR ATTEINDRE LE MUR

Comment "FAIRE TOUT CE QU'IL FAUT POUR ATTEINDRE LE MUR"

SI tu touches le mur ALORS Arrête SINON

Fais un pas

FAIS TOUT CE QU'IL FAUT POUR ATTEINDRE LE MUR