Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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.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.
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.
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.
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.
Notation : Nom_Algorithme
Bloc d'actions
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
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.
Si la condition <Condition> est vrifie, le bloc d'actions sous contrle sera excut ; sinon, il sera ignor.
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
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
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
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
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