Vous êtes sur la page 1sur 8

Chapitre N1 : Elments dun Algorithme

1) Dfinition dun algorithme a) Dfinition : Un algorithme est une suite dactions (ou instructions) qui doivent tre excut dans un ordre bien dtermin pour rsoudre un problme.
Un algorithme n'est excutable directement par aucune machine. Mais il a peut tre traduit facilement dans tous les langages de programmation. Pour rsoudre un problme, il est conseill de rflchir d'abord l'algorithme avant d'crire le programme en langage de programmation.

b) Structure dun algorithme Algorithme nomAlgorithme variables Var1 : type1 . . . Varn : typen Dbut Instruction 1 . . . Instruction n Fin

Entete Dclaration des variables Corps de lalgorithme

2) Donnes et variables : Tout algorithme utilise des donnes lmentaires comme les constantes ou des variables. Ces donnes se caractrisent par trois attributs : Identificateur : Le nom de la donne. La valeur : Le contenu de la donne Le type : Lensemble des valeurs que peut prendre la donne. a) Les variables : Une variable est une donne dont la valeur peut changer au cours de lexcution de lalgorithme. b) Les constantes : Cest donne fixe qui garde toujours la mme valeur. c) Type de donnes : Type entier : la donne prend des valeurs entires comme : -54, -2, 0, 60, 100, Type rel : la donne prend des valeurs relles comme : -105, -0.0002, 3, 4.2 103, Type caractre : la donne prend des valeurs comme : A, b, &, +, 3, ?, Type chane de caractres : la donne prend comme valeurs un ensemble de caractres comme : bonjour, bob3, s@mir Type boolen : la donne ne peut prendre que les valeurs suivantes : vrai et faux 3) Les oprations de base c) Affectation : Une affectation est lattribution dune valeur une variable
J. BAKKAS

Syntaxe : nomVariable expression Exemple X 20 Y X Som X + Y X X + 3 Exercices : 1. Quelles sont les valeurs des variables aprs lexcution des oprations suivantes. A 5 X "009" B 10 Y "10/2" C A+B X Y+X A B Y "11/" B A X Y+X A= B= C= X= 2. X, Y deux variables de type entier, crire une suite dinstructions qui permettent de mettre le contenu de X dans Y et celui de Y dans X. d) Les entres/sorties standards On les appels aussi instructions de lecture/criture, elle permettent dassurer la communication entre le programme et lutilisateur. Linstruction dentre autorise lintroduction dune valeur dans un algorithme. Syntaxe : Lire (nom_variable) Exemple : lire(a) Linstruction dEcriture permet de restituer un rsultat ou la valeur dune donne. Syntaxe : Ecrire (nom_variable) Exemple : Ecrire(a) Ecrire("bonjour") Ecrire("a=",a) Exercices 1. Ecrire un algorithme qui demande deux entiers A et B lutilisateur et qui affiche leur somme S 2. Ecrire un algorithme qui permet de calculer le prix TTC, sachant le prix HT et le taux de TVA (20%) 4) Traitement conditionnel 4.1) Dfinition et exemple Un traitement conditionnel est un ensemble dopration (OPi) rgi par des conditions (Ci). Si Ci est vrifi alors excuter OPi Exemple : Si feu vert alors je passe Si le feu est rouge alors je marrte Si a#0 alors x=-b/a est la solution de lquation ax+b=0 4.2) diffrent forme du conditionnel a) Forme 1 : Le traitement est ou n'est pas effectu suivant le rsultat de la condition Si (condition) alors Instructions FinSi Exemple : rsolution de lquation ax+b=0
J. BAKKAS

b) Forme 2 : Si condition est vrifi on excute le bloc (1) sinon on excute le boc (2) Si (condition) alors Bloc Instructions (1) Sinon Bloc Instructions (2) FinSi Exemple : rsolution de lquation ax+b=0

Exercice : Calcul de lIGR en fonction des revenus Revenu Taux 0 12 000 0% 12 000 20 000 10% 20 001 30 000 20% 30 001 50 000 30% >50 000 4% c) Forme 3 : Dans le cas ou une variable peut prendre plusieurs valeurs, et suivant des chacune de ces valeurs on fait un traitement. On utilise la forme suivante. Cas (variable) vaut Val1 : instruction 1 Val2 : instruction 2 . . . . . . Val1 : instruction n FinCas Exemple : 1. Les jours de la semaine sont cods de 0 6. Ecrire un algorithme qui affiche le jour correspondant un code. 2. Calcul dIGR. 5) Les structures rptitives Les structures itratives permettent dexcuter une portion de code plusieurs fois de suite. 5.1) La structure : Tant que Syntaxe : Tant que (condition) Instructions FinTantQue Lensemble des instructions doit tre excut tant que la condition est vraie. Lorsque la condition est fausse, le processus itratif sarrte. Exemple : somme dune liste des nombre dont le dernier est 0 Algorithme essai1 i : entier dbut i1 tantque (i<>0) lire(i) finTantQue fin 5.2) La structure : Rpter jusqua Syntaxe : Rpter Listes d'instructions
J. BAKKAS

jusqu' (condition) Dans ce cas la suite dactions est excute au moins une fois, car le test de lexpression logique est effectu aprs excution de lensemble dactions. Exemple : Ecrire un programme qui permet de lire un texte saisi par lutilisateur jusqu' ce dernier saisie le mot Fin . 5.3) La structure : Pour Syntaxe : Pour variable de Vi Vf pas Instructions
finpour

faire

Cette forme ditration est utilise lorsque le nombre ditrations est connu La variable dont on donne le nom va prendre successivement toutes les valeurs entires entre valeur initiale et valeur finale. Pour chaque valeur prise par la variable, la liste des instructions est excute. La valeur utilise pour numrer les itrations est appele valeur d'itration, indice d'itration ou compteur. L'incrmentation par 1 de la variable est implicite. Exemple : lalgorithme suivant permet dafficher les nombres de 1 10 Algorithme essai I : entier Dbut pour i de 1 10 faire crire(i) finpour Fin Exemple : Somme de n nombre Exercices 1. PGCD de deux nombres m et n 2. n ! 3. Nombre premier 4. Nombre parfait (gal la somme de ses diviseurs exemple : 6, 28, 496 et 8128) 5. Liste des nombre premier de 1 N 6) Les tableaux

6.1)Les tableaux une dimension


Dfinitions Un tableau (unidimensionnel) est une variable structure forme d'un nombre entier N de variables du mme type. Dclaration : nomTab
: TABLEAU [tailleMax] de type

Manipulation des CASES (variables) d'un tableau: L'utilisation d'un tableau se fait toujours case par case (variable par variable). Les instructions suivantes sont correctes, si T est un tableau de rels dont l'indice varie de 0 99 :
T : TABLEAU [100] de Lire(T[0]) T[1] 3.5 T[2] T[1] * 4.28 type /* Dclaration du tableau */ /* range la valeur saisie dans la 1ere case /* mmorise le rel 3.5 dans la seconde /* calcule la troisime variable

*/ */ */

J. BAKKAS

crire(T[2]) pour i de 3 99 T[i] i * 3.14 fin pour

/* affiche le rel contenu dans la 3eme case /* calcule les valeurs des variable /* d'indice compris entre 4 et 99

*/ */ */

Indices : Valeurs :

0 12

1 2 3 3 .5 14.98 12,56

99 310,86

Exemple : Ecrire un algorithme qui permet lutilisateur de remplir un tableau et de lafficher. Exercice: Voir les sries des travaux dirigs 2 et 3

6.2)Les tableaux deux dimensions


Il est possible davoir des tableaux deux dimensions (permettant de reprsenter par exemple des matrices deux dimensions) Dclaration : nomTab : Tableau[nbrelignes][nbrescolonne] de type des lments Pour accder lelement de la i me ligne ,j me colonne d'un tableau en utilisant la syntaxe suivante : Nom_Tab[i][j] Exemple tab : Tableau[3][ 2] de Rel tab[1][0] -1.2 met la valeur -1.2 dans la case 1,0 du tableau a : Rel a tab[1][0] tab : Tableau[3][ 2] de Rel tab[0][0] 2.0; tab[1][0] 1.2; tab[2][0]3.4 tab[0][1]2.6; tab[1][1] -2.9; tab[2][1] 0.5 Permet de reprsenter le tableau suivant :
0 1 2

met -1.2 dans a

2.0 1.2 3.4

2.6 -2.9 0.5

Exemple : Lecture dune matrice de dimension (m,n) Exercices 1. Somme de deux matrice carres A et B. 2. Produit de deux matrice A(n,m) et B(m,n). 3. Calcul de An

6.3)Les chaines de caractres :


Une chane de caractres (appele string en anglais) est une suite de caractres (chiffres, lettres ou symboles). Les chaines de caractres sont traites de diffrentes manires selon les langages de programmation, il y a ceux qui les considrent comme un tableau de caractres (Langage C, C++,..) et ceux qui leurs consacrent un type (comme Pascal). (Voir la partie langage C)

J. BAKKAS

7) Lanalyse descendante : Une approche descendante du problme consiste dcomposer le problme en sousproblmes plus simples rsoudre. Si certains sous-problmes sont dcomposables en problmes plus petits, on les dcompose encore. Ensuite, chaque sous-problme est rsolu sparment et enfin, ils sont rassembls pour composer la solution complte.
Application de la dmarche descendante : La liste des nombres premiers:

On veut crire un algorithme qui liste les nombres premiers inferieurs un nombre n Il sagit donc d'afficher les nombres premiers inferieurs n : on va donc utiliser une boucle Pour.
POUR i DE 2 jusqu' n Tester si i est premier FinPour PAS 1 FAIRE

Le traitement dcrit en italique doit tre prcis. Pour tester si i est premier il faut vrifier si il admet un diviseur j avec 2<=j<i/2. Sachant que tous les diviseurs dun nombre n sont <= n/2 On va donc utiliser une boucle pour chaque nombre i. Estpremier 1
POUR j DE 2 jusqu' i/2 PAS 1 FAIRE Tester si i est divisible par j FINPOUR SI (Estpremier= 1) ALORS ECRIRE(i) FINSI

Le traitement dcrit en italique doit encore tre prcis. Tester si i est divisible par j, il suffit de faire le test suivant : SI ( i mod j = 0 ) ALORS Estpremier 0 Sachant que Estpremier est initialis 1 (ie tout nombre est premier jusqu prouver le contraire) On va maintenant rassembler les algorithmes des sous-problmes pour recomposer lalgorithme principal :
ALGORITHME nombresPremiers VARIABLES estpremier,i,j,n=100 : entier DEBUT Lire(n) POUR i DE 2 jusqu' n PAS 1 FAIRE Estpremier 1 POUR j DE 2 jusqu' i/2 PAS 1 FAIRE SI( i mod j = 0 ) ALORS Estpremier 0 FinPour SI(estpremier) ALORS ECRIRE(i) FINPOUR FIN

8) Programmation Modulaire Il est toujours important de subdiviser un problme complexe en un certain nombre de sousproblmes auxquels on cherche des sous-algorithmes. Les sous-algorithmes peuvent tre prsents comme des modules assembler l'algorithme principal durant son criture. L'emploi du sous-algorithme permettra au programme de dvelopper une solution portant attention d'abord l'ensemble puis aux dtails. Cette dmarche est appele la programmation modulaire.

J. BAKKAS

Problme

Dcomposer

Sous-problmes

Associer

Module1 . . . Modulen

Dfinition : Un module est un bloc d'instructions qu'on isole et auquel on donne un nom et qui est appel tre excut. Il permet de raliser une fonction particulire dun programme. Cest lunit de structuration des programmes. 8.1) les procdures et Les fonctions Une procdure / une fonction est un sous-algorithme (module) qui permet de raliser le mme traitement plusieurs fois. Une fonction peut avoir de 0 N donnes en entre (paramtres) et elle retourne un seul rsultat. Une procdure peut avoir de 0 N donnes (en entre) et elle ne retourne aucun rsultat (en sortie). Par la suite on considre une procdure comme une fonction qui ne retourne aucun rsultat Syntaxe : Les paramtres

FONCTION NomFonction(parametre1 :type1,,parametren :Typen ) : type DEBUT Instructions Type de rsultat Retour (valeur) Corps de la fonction FIN

On distingue deux types de paramtres : Paramtres formels: des variables utilises pour la dfinition de la fonction. Paramtres effectifs: des variables (ou valeurs) fournies lors de l'appel de la fonction. Il sont de mme nombre et de mme type que les paramtres formels et les remplacent dans lordre de dfinition. Appel : si la fonction dlivre un rsultat elle est appele par lintermdiaire dune variable : nomVariable nomFonction(parametresEffictifs) ou nomVariable nomFonction() si il na pas de paramtres Si la fonction ne donne aucun rsultat, elle est appele directement par son nom nomFonction(parametresEffictifs) Exemple 1) fonction qui calcule la somme de deux nombres 2) crire un algorithme qui calcule et 3) fonction qui calcule le maximum de 10 nombres
fonction somme(x : entier, y : entier): entier a, b, som: entier Debut Som a+b retourne som Fin Algorithme addition x, y, z: entier Debut lire(x,y) z somme(x,y) Fin fonction calculerMax2Reels(x : rel, y : rel):rel x, y, res: rel Debut si (x >y) alors res x sinon res y J. BAKKAS

finsi retourne res Fin Algorithme max10nombres Max, nombre: rel i : entier Debut maximum lire() pour i de 1 9 faire lire(nombre) maximum calculerMax2Reels(nombre, maximum) finpour crire(maximum) Fin

8.2)

Variable locale et variable globale.

8.2.1. Variables globales Une variable globale est une variable dclare l'extrieur du corps de toute fonction, et elle peut tre utilise par nimporte quelle fonction. (Voir la partie langage C Pour plus de dtail sur les variables globales). 8.2.2. Variables locales Une variable locale est une variable qui ne peut tre utilise que dans la fonction ou le bloc o elle est dfinie. Sa dure de vie est gale la dure de lexcution de la fonction. 8.3) Passage par valeur et passage par rfrence

8.3.1. Passage par valeur Le paramtre rcupre sa valeur initiale davant lappel aprs lexcution de la fonction 1.1.1. Passage par rfrence Apres lexcution de la fonction le paramtre garde les valeurs qui lui a t affect par la fonction.

J. BAKKAS

Vous aimerez peut-être aussi