Vous êtes sur la page 1sur 12

1- LANGAGE ALGORITHMIQUE 1.

1- Dfinition dun algorithme


Un algorithme est un ensemble de rgles ayant les caractristiques suivantes : Il doit tre fini et doit se terminer aprs un nombre fini doprations. Il dot tre dfini et prcis : chaque rgle (instruction) doit tre dfinie sans ambigut. Sil y a des donnes dentre, le domaine dapplication doit tre prcis (exemple : nombre entier, rel, etc.). Il doit possder au moins un rsultat (donnes de sortie). Il doit tre effectif : toutes les oprations doivent pouvoir tre effectues exactement et dans un temps fini. L'tape de spcification des algorithmes et des descriptions de donnes est essentielle car l'utilisation directe d'un langage de programmation prsente des inconvnients lis l'oprationnalit et l'htrognit.

Oprationnalit
Le fait qu'un langage de programmation soit oprationnel peut sembler un avantage grce aux vrifications de la syntaxe voire de la smantique, effectues lors de la compilation, et aussi grce la possibilit d'excution immdiate du programme pour essai. Dans la pratique, la possibilit d'excution immdiate du programme diminue la productivit du programmeur, lequel toujours tent d'essayer, sans trop rflchir, son programme construit un peu au hasard. Cette attitude se reproduit galement en cas d'erreurs car il parat toujours plus facile pour lui de faire une modification et de ressayer, plutt que d'analyser la cause de l'erreur. Le programmeur met ainsi beaucoup de temps construire son programme qui, d'erreur en erreur et de modification en modification, s'carte gnralement de la solution rationnelle et efficace issue d'une bonne analyse pralable du problme pos.

Htrognit
Un langage de programmation est presque toujours orient vers la rsolution d'une famille particulire de problmes (COBOL pour la gestion, FORTRAN pour le calcul scientifique, etc.) et dispose donc d'une gamme d'actions de niveau smantique trs diffrent. S'il est vrai que l'on puisse tout faire avec tous les langages, on le fera plus ou moins facilement, compte tenu de la diffrence de puissance qui existe entre les instructions relatives aux domaines d'applications privilgis du langage et les autres domaines.

Pour viter tous ces inconvnients, on dfinit un langage algorithmique qui permettra d'exprimer sans ambigut le schma de rsolution d'un problme, et qui pourra tre traduit dans n'importe quel langage de programmation.

1.2- Donnes et actions lmentaires


Dans ce qui suit, on va dcrire les lments fondamentaux dun langage algorithmique, permettant de spcifier en termes informatiques prcis un schma de rsolution. On tudiera en particulier comment dcrire les actions du processus de rsolution ainsi que les donnes auxquelles ces actions font rfrence.

1.2.1- Donnes
Pour chaque algorithme, on distingue intuitivement :

Les donnes dentre : ce sont les donnes fournies lalgorithme. Les donnes de sortie : ce sont les rsultats produits par lalgorithme. Les donnes intermdiaires : ce sont les donnes de travail de lalgorithme, servant
aux manipulations internes (compteurs, donnes de stockage des rsultats intermdiaires, etc.).

Lensemble des donnes dentre et des donnes de sorite dun algorithme constitue le paramtrage de cet algorithme. Pour dfinir une donne, il faut prciser son nom, son type, son utilisation et sa nature.

Nom d'une donne


Il sert dsigner la donne dans lalgorithme. Il est reprsent par une chane alphanumrique o le 1er caractre est une lettre et les autres caractres peuvent tre des lettres, des chiffres ou le trait de soulignement _. Chaque fois que c'est possible, ce nom doit tre significatif.

Type d'une donne


Le type d'une donne caractrise les valeurs que peut prendre cette donne ainsi que les actions autorises sur celle-ci. On distingue les types simples et les types structurs. Ces derniers sont rpartis en trois catgories : les structures statiques homognes (informations de mme type), les structures statiques htrognes (informations de diffrents types) et les structures dynamiques. Une donne de type simple contient une seule information, alors quune donne structure contient une collection dinformations qui sont rparties en plusieurs champs accessibles individuellement ou collectivement.

Utilisation d'une donne


Lutilisation dune donne dsigne sa caractristique dans l'algorithme : donne dentre, donne de sortie ou donne intermdiaire.

Nature d'une donne


La nature dune donne dsigne sa caractristique constante ou variable dans l'algorithme.

Une constante est une donne dont la valeur est prcise au dbut de lalgorithme et qui ne varie pas durant le droulement de celui-ci. Une variable est une donne dont la valeur est indtermine (non initialise) au dbut de lalgorithme et qui est susceptible dtre change durant le droulement de celui-ci.

1.2.2- Types simples


Les types simples sont les types Scalaires et le type REEL.

Un type Scalaire est un ensemble de valeurs fini et totalement ordonn. On distingue les
types suivants : Le type ENTIER : Une donne de ce type prend ses valeurs dans lintervalle [-32768..32767]. Le type CARACTERE : Une donne de ce type prend ses valeurs dans lensemble des codes de reprsentation de caractres normaliss, appel table des codes ASCII (American Standard Code for Information Interchange). Cette table tant ordonne, on peut crire par exemple : 'A' < 'B'. Deux fonctions prdfinies et oprant sur ce type sont Rang() et Car(). On a par exemple : Rang('A') renvoie la valeur 65 et Car(65) rend le caractre 'A'. Le type LOGIQUE : Une donne de ce type peut prendre les seules valeurs Vrai ou Faux. Les oprateurs prdfinis associs aux donnes de type LOGIQUE sont : la ngation Non et les connecteurs Et et Ou. Deux fonctions prdfinies et oprant sur les diffrents types Scalaires sont Suivant() et Precedent(). On a par exemple : Suivant('C') renvoie le caractre 'D' et Precedent(Vrai) rend la valeur Faux. Les oprateurs de comparaison (=, , <, >, , ) oprent sur des donnes de mme type Scalaire.

Le type REEL : Une donne de ce type prend ses valeurs dans un ensemble fini de
valeurs dcimales relatives. Les oprations prdfinies, oprant sur des donnes de type ENTIER ou REEL, sont les oprations arithmtiques (+, -, *, /). Deux fonctions oprant sur des donnes de type ENTIER sont :

Quotient(N1,N2) qui retourne le quotient de la division euclidienne de N1 par Reste(N1,N2) qui retourne le reste de cette division .

N2.

Exemples : Quotient(19,2) renvoie la valeur 9 et Reste(19,2) rend la valeur 1.

Remarque

3 On peut dfinir un nouveau type par rduction dun type simple un intervalle de
valeurs, appel type INTERVALLE. La notation de ce type est alors : Type Nom_Type = Inf .. Sup o Inf et Sup dsignent les valeurs extrmes de lintervalle

considr.

1.2.3- Actions lmentaires Affectation


Cest laction par laquelle on peut attribuer une variable une valeur rsultant de lvaluation dune expression arithmtique ou logique. Cette valeur doit tre compatible avec le type de la variable destinataire. Notation : Nom_Variable Expression Exemples :A 3 (A de type ENTIER ou REEL) B 4*A+4.12 (B de type REEL) Lettre 'Z' (Lettre de type CARACTERE) Test A < B (Test de type LOGIQUE)

Actions de lecture et dcriture


Ce sont les actions qui expriment la communication entre un algorithme et son utilisateur. Notation : LIRE (liste de noms de variables) ECRIRE (liste dobjets) O : Liste de noms de variables est une suite de noms de variables (pas forcment de mme type) spars par des virgules. Liste dobjets est une suite dobjets (constantes, variables, expressions ou constantes chane de caractres) spars par des virgules. Lors dune lecture, lalgorithme attend que lutilisateur fournisse, partir du clavier, les valeurs affecter respectivement aux variables dont les noms sont dans la liste de laction LIRE. Inversement, les valeurs des objets dsigns dans la liste de laction ECRIRE sont transmises lutilisateur travers un organe de sortie, notamment l'cran. Exemple : LIRE (A, B, C) Somme A+B+C ECRIRE ('La somme vaut : ',Somme) Ainsi, si lutilisateur fournit les valeurs 12, 3 et 7, laction ECRIRE produira lcriture suivante : La somme vaut : 22

Action dappel dun algorithme


En gnral, pour un problme non trivial, le schma de rsolution est une organisation complexe o de nombreux algorithmes doivent collaborer entre eux pour exprimer les divers traitements effectuer. Les algorithmes de niveau suprieur sous-traitent une partie spcialise de leur travail des algorithmes de niveau infrieur. Cette communication entre algorithmes est ralise par laction dAppel.

Notation : Nom_Algorithme

1.2.4- Enchanement squentiel Notion de bloc


On dit que des actions s'enchanent squentiellement, quand la fin d'une action dclenche l'excution de l'action suivante. On appellera bloc d'actions un ensemble d'actions enchanes squentiellement. L'excution de ce bloc ne peut commencer que par la premire action et ne peut se terminer que par la dernire. Notation : Dbut Action 1 Action 2 Action n Fin

Bloc d'actions

Structure d'un algorithme


Un algorithme se compose des parties suivantes: Un en-tte constitu du mot Algorithme suivi d'un nom identifiant l'algorithme.

Une liste de donnes (donnes d'entre, donnes intermdiaires et donnes de sortie) avec leur type. Un bloc d'actions.

Exercice d'application
crire un algorithme qui, tant donns deux nombres entiers, calcule leur somme et leur produit.

Solution :
Algorithme Somme_Produit Donnes d'entre : A, B : ENTIER Donnes de sortie : S, P : ENTIER Dbut LIRE (A, B) S A+B P A*B ECRIRE ('La somme des deux nombres est :', S) ECRIRE ('Le produit des deux nombres est :', P) Fin

2- ACTIONS COMPOSES STRUCTURES DE CONTRLE 2.1- Enchanement conditionnel

L'excution d'un bloc d'actions peut tre conditionne par la ralisation d'une condition. C'est pourquoi on introduit dans le langage algorithmique des structures de contrle conditionnelles standard qui sont : l'alternative simple, l'alternative complte et le choix multiple.

2.1.1- Lalternative simple (Choix unaire)


Structure : SI <Condition> ALORS <Bloc> Notation : SI <Condition> ALORS Dbut Action 1 Action 2 Action n Fin

Si la condition <Condition> est vrifie, le bloc d'actions sous contrle sera excut ; sinon, il sera ignor.

2.1.2- Lalternative complte (Choix binaire)


Structure : SI <Condition> ALORS <Bloc1> SINON <Bloc2> Notation : SI <Condition> ALORS Dbut Action 1 Action p Fin SINON Dbut Action 1 Action q Fin Si la condition <Condition> est vraie, le bloc d'actions <Bloc1> sera excut et le bloc d'actions <Bloc2> sera ignor ; sinon, le bloc d'actions <Bloc1> sera ignor et le bloc d'actions <Bloc2> sera excut.

3 Si le bloc dactions est rduit une seule action, on peut omettre les clauses Dbut et Fin Exercice d'application
crire un algorithme qui retourne si deux nombres entiers donns sont de mme signe ou non.

Analyse :
Nombre1 Nombre2 >0 >0 >0 =0 =0 >0 =0 <0 >0 =0 Mme Signe Vrai Vrai Faux Vrai Vrai Leur Produit >0 =0 <0 =0 =0 Leur Somme >0 >0 ? >0 =0

=0 <0 <0 <0

<0 >0 =0 <0

Faux Faux Faux Vrai

=0 <0 =0 >0

<0 ? <0 <0

On conclut donc que deux nombres entiers sont de mme signe si leur produit est suprieur strictement zro ou si lun des deux est nul et lautre est positif ou nul (dans ce cas leur somme est positive ou nulle).

Solution :
Algorithme Est_Meme_Signe Donnes d'entre : A, B : ENTIER Donnes de sortie : Meme_Signe : LOGIQUE Dbut ECRIRE ('Donner le premier nombre entier :') LIRE (A) ECRIRE ('Donner le deuxime nombre entier :') LIRE (B) Meme_Signe (A*B > 0) OU ((A*B = 0) ET (A+B 0)) SI Meme_Signe =Vrai ALORS ECRIRE ('Les deux nombres ', A, ' et ', B, ' sont de mme signe') SINON ECRIRE ('Les deux nombres ', A, ' et ', B, ' sont de signe contraire') Fin

Remarque

3 Lcriture SI Meme_Signe =Vrai ALORS est identique SI Meme_Signe ALORS Table de vrit
Meme_Signe Vrai Faux Meme_Signe =Vrai Vrai Faux

2.1.3- Choix multiple


Structure : CAS <Expression> VAUT Val1 : <Bloc1> Val2 : <Bloc2> .. Valn : <Blocn> Autre : <Bloc> FIN

Si lvaluation de lexpression <Expression> vaut une valeur Vali alors cest le bloc dactions <Bloci> qui sera excut et les autres blocs seront ignors. Si lexpression <Expression> na aucune valeur parmi les valeurs Val1, .., Valn, cest le bloc dactions aprs la rubrique Autre qui sera excut et les autres blocs seront ignors.

Exercice d'application
crire un algorithme qui ralise au choix la somme, le produit, la diffrence ou la division de deux nombres donns.

Solution :
Algorithme Choix_Operations Donnes d'entre : A, B : REEL Choix : CARACTERE Donnes de sortie : Resultat : REEL Dbut ECRIRE ('1- Addition') ECRIRE ('2- Multiplication') ECRIRE ('3- Diffrence') ECRIRE ('4- Division') ECRIRE ('Donner votre choix (1 / 2 / 3 / 4) : ') LIRE(Choix) ECRIRE ('Donner le premier nombre : ') LIRE (A) ECRIRE ('Donner le deuxime nombre : ') LIRE (B) CAS Choix VAUT '1' : Dbut Resultat A+B ECRIRE('La somme des deux nombres est : ', Resultat) Fin '2' : Dbut Resultat A*B ECRIRE('Le produit des deux nombres est : ', Resultat) Fin '3' : Dbut Resultat A-B ECRIRE('La diffrence des deux nombres est : ', Resultat) Fin '4' : SI B 0 ALORS Dbut Resultat A/B ECRIRE('La division des deux nombres est : ', Resultat)

Fin SINON ECRIRE('La division par zro est impossible') Fin Fin

2.2- Itrations Boucles


Dans le cas dactions rptitives, on dfinit des boucles de traitement contrles par lune des structures standards ; savoir : les structures POUR, TANTQUE et REPETERJUSQUA.

2.2.1- Structure POUR


Structure : POUR Compteur val_debut JUSQUA val_fin FAIRE <Bloc>
Le bloc <Bloc> est excut un nombre dtermin de fois. Ce nombre est contrl par un compteur allant de la valeur val_debut la valeur val_fin. La progression se fait dans lordre croissant ou dcroissant. La variable Compteur est de type scalaire. La structure POUR est utiliser imprativement lorsquon connat priori le nombre de rptitions effectuer. Dans ce cas, la finitude de la boucle est assure. Cependant, aucune action de la boucle ne doit affecter la variable Compteur ; ce qui serait, le cas chant, contraire la nature dterministe du nombre d'itrations.

2.2.2- Structure TANTQUE


Structure : TANTQUE <Condition> FAIRE <Bloc> Tant que la condition <Condition> est vrifie, on rpte lexcution du bloc <Bloc>. Si la condition est initialement fausse, le bloc ne sera jamais excut. Si la condition nest pas initialement fausse, pour assurer larrt aprs un nombre fini de rptitions, il est ncessaire (mais non suffisant) quune action du bloc porte sur les donnes auxquelles la condition fait rfrence. Le nombre de rptitions (itrations) nest pas dtermin pour ce type de structures.

2.2.3- Structure REPETERJUSQUA


Notation : REPETER Action 1 Action 2 .. Action n JUSQUA <Condition> On rpte lexcution de lensemble des actions jusqu ce que la condition <Condition> soit vrifie. Lensemble des actions est excut au moins une fois, quelle que soit la valeur de la condition au dbut.

Dans lensemble des actions, au moins une action doit porter sur les donnes servant lvaluation de la condition. Dans ce cas aussi, le nombre de rptitions nest pas dtermin.

Exercice d'application
crire un algorithme qui permet de calculer la somme des N premiers entiers positifs pairs (N entier > 0).

Analyse :
Le problme consiste calculer la somme : 2 + 4 + 6 + 8 + + 2N. Ceci revient effectuer (N-1) oprations daddition (rptition dadditions). Or, lopration daddition est une opration binaire qui a besoin de deux oprandes. Trouvons, pour chaque opration daddition, les deux oprandes correspondants : Etape 1 : On a : S1 = 2 + 4 Etape 2 : On a : S2 = S1 + 6 Etape 3 : On a : S3 = S2 + 8 .. Etape (N-1) : On a : SN-1 = S N-2 + 2N On remarque que le 2me oprande 4=2*1+2 On remarque que le 2me oprande 6=2*2+2 On remarque que le 2me oprande 8=2*3+2 On remarque que le 2me oprande 2N=2*(N-1)+2

On conclut donc que pour la somme partielle Si de ltape i, le 1er oprande est la somme partielle Si-1 calcule ltape (i-1), et le 2me oprande est calcul partir du rang de ltape i ; soit le terme (2*i+2). A ltape 1, si on prend S0 = 2, on aura S1 = S0 +(2*1+2). On peut dfinir ainsi le terme gnral Si = Si-1 + (2*i + 2) pour 1 i N-1, le terme initial S0 = 2 et le nombre de rptitions (itrations) = N-1. Ceci complte les lments constituant la structure dune boucle, savoir :
Le Le Le

terme initial : caractris par les actions damorage du processus rpter. Ces actions viennent avant la clause dbutant la boucle. terme gnral : caractris par lensemble des actions constituant le processus rpter. Ces actions constituent le bloc de la boucle. nombre ditrations ou le test darrt : caractris par lintervalle de valeurs que va prendre la variable Compteur au niveau de la boucle POUR ou par la condition value dans les boucles TANTQUE et REPETERJUSQUA.

Solution :
Algorithme Serie_Pairs Donnes d'entre : N : ENTIER Donnes intermdiaire : I : ENTIER Donnes de sortie : S : ENTIER Dbut ECRIRE ('Calcul de la somme des N premiers nombres positifs pairs') ECRIRE ('Donner la valeur de N :') LIRE(N) S 2

POUR I 1 JUSQUA N-1 FAIRE S S + (2*I+2) ECRIRE ('La somme des ', N, ' premiers nombres positifs pairs est : ',S) Fin

Remarque

3 On peut considrer la somme 0 + 2 + 4 +6 + + 2N en ajoutant llment neutre 0 de


laddition, et ce sans affecter le rsultat final. Ceci revient redfinir les lments constituant la structure de la boucle comme suit : Terme initial : S0 = 0 Terme gnral : Si = Si-1 + 2*i Nombre ditrations : N

Bibliographie :Ecole Normale suprieure (Brahim Lamharchi et Souad Myara)

Vous aimerez peut-être aussi