Top Banner

of 23

Cours Algorithmique Bis

Jul 22, 2015

Download

Documents

Lala Asmae
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Cours Algorithmique Pr S. EL BERNOUSSI Facult des Sciences de Rabat 2011-2012

I-GnralitsI-1. Introduction Toute action ralise par une machine a t programme par un tre humain ; un ordinateur ne dcide de rien, il fait "btement" ce qu'il lui a t dict par un programme. Mais qu'est-ce que programmer ? Ecrire une srie d'actions lmentaires comprhensibles par le "cerveau" de la machine, cette succession permettant de raliser une action plus complique. Chacune de ces actions plus compliques, tant connue de la machine, peut tre utilise comme les actions lmentaires du dpart pour construire des actions encore plus complexes. La machine a son propre langage appel langage machine. Il serait trs compliqu d'crire directement en langage dit de bas niveau. Nous utilisons donc des langages dits "volus" comprhensibles pour un dveloppeur initi. Ce langage sera ensuite traduit en langage machine. Malgr que les langages soient de plus en plus proches du langage humain, ils ne sont pas directement lisibles. C'est pourquoi, nous allons utiliser un pseudo-langage, comportant toutes les structures de base d'un langage de programmation. Il suffira ensuite de traduire le "pseudo" en langage volu en fonction des possibilits de ce langage. Chaque langage de programmation fournit une liste des instructions qui sont implmentes et que l'on peut donc utiliser sans les rcrire en dtail. Ces instructions peuvent : Soit s'enchaner les unes aprs les autres, on parle alors de squence d'instructions; Ou bien s'excuter dans certains cas et pas dans d'autres, on parle alors de structure alternative; Ou se rpter plusieurs fois, on parle alors de structure rptitive. I-2. Dmarche de rsolution de problme par ordinateur Conception par le dveloppeur

Analyse du besoin.

Cours Algorithmique Pr. S. El Bernoussi

1

Description du contexte et reformulation des objectifs. Identification de la nature des objets manipuls. Distinction des entres, des sorties et des traitements.

La compilation et lexcution par la machine: Un langage de programmation sert crire des programmes de manire les excuter. Des outils permettent de traduire le langage crit par le programmeur en langage machine. Ils fonctionnent de la manire suivante : Le compilateur analyse le langage source afin de vrifier la syntaxe et de gnrer un fichier objet en langage intermdiaire assez proche du langage machine. Tant qu'il y a des erreurs de syntaxe, le compilateur est incapable de gnrer le fichier objet. Dmarche de rsolution de problme par ordinateur Souvent, on utilise dans un programme des fonctions qui soit ont t crites par quelqu'un d'autre soit sont fournies dans une bibliothque (graphique par exemple). Dans ce cas, le compilateur ne les connat pas et ne peut donc pas gnrer le langage intermdiaire correspondant. C'est le travail de l'diteur de liens que d'aller rsoudre les rfrences non rsolues. C'est dire que lorsqu'il est fait appel dans le fichier objet a des fonctions ou des variables externes, l'diteur de liens recherche les objets ou bibliothques concerns et gnre l'excutable. Il se produit une erreur lorsque l'diteur de liens ne trouve pas ces rfrences. Exploitation par l'utilisateur : Pour permettre au programme de dialoguer avec l'utilisateur, c'est dire d'afficher un rsultat l'cran et de lire une entre au clavier, il faut au moins deux instructions une pour lire, l'autre pour afficher. Dfinitions

Algorithme : Ensemble de rgles opratoires rigoureuses, ordonnant un processeur dexcuter dans un ordre dtermin un nombre fini doprations lmentaires ; il oblige une programmation structure.

Dfinitions Instruction : toute expression excutable se terminant par un point-virgule

Algorigramme : Reprsentation graphique de lalgorithme. Pour le construire, on utilise des symboles normaliss :

Dfinitions Dfinition

Cours Algorithmique Pr. S. El Bernoussi

2

Le langage de description dalgorithme : Un ensemble de mots cls et de structures permettant de dcrire de manire complte, claire, lensemble des oprations excuter sur des donnes pour obtenir des rsultats Un programme : une suite d'instructions excutes par la machine

Dfinitions Structure dun algorithme Lalgorithme est compos de 4 parties principales : Len-tte de lalgorithme : On spcifie un nom quon attribue lalgorithme, il permet didentifier un algorithme. Les dclarations (partie dclarative) : dans cette partie, on dclare toutes les variables et fonctions ncessaires lexcution de lalgorithme. elle est prcde par le mot-cl variables, cette liste est place en dbut dalgorithme. Le corps (partie bloc dinstructions) : dans cette partie de lalgorithme, sont places les tches (instructions, oprations) excuter, elle est dlimite par les mots-cls dbut et fin Les commentaires : Permettre une interprtation aise de lalgorithme, son utilisation est vivement conseille. Variables et constantes Les variables Une variable est une case mmoire qui contient la valeur utilise pendant lexcution de lalgorithme. Le contenu de la variable varie durant lexcution de lalgorithme. On distingue les variables par des noms qui sont des identificateurs. Les variables peuvent stocker des chiffres des nombres, caractres, des chanes de caractres, .dont la valeur peut tre modifie au cours de lexcution de lalgorithme Mot cl : Var Les constantes et les variables sont dfinies dans la partie dclarative par deux caractristiques essentielles, savoir : Les Identificateurs et le Type:

Les identificateurs : servent dsigner les diffrents "objets" manipuls par le programme: variables, fonctions, etc. Ils sont forms d'une suite de caractres (lettres ou les chiffres), le premier d'entre eux tant ncessairement une lettre. Noter que: Le symbole '_' est considr comme une lettre.

Cours Algorithmique Pr. S. El Bernoussi

3

On distingue les majuscules et les minuscules, ainsi: 'Nom_var' est diffrent de 'nom_var':

Le type : il dtermine la nature de la variable ou de la constante (entier, rel, chane de caractres) La syntaxe de la dclaration des variables : var1, var2, a,b: type_de_variables ; Gnralement les langages de programmation offrent les types suivants : Le type Entier: Destin contenir un nombre entier positif ou ngatif. La dclaration des variables de type entier : variable1, variable2 : ENTIER ; Le type Rel: Il reprsente les nombres rels IR c'est dire qui comportent des dcimales. La dclaration des variables de type rel : variable1, variable2 : REEL ;

Le Type Caractre: Les variables de type caractre contiennent des caractres alphabtiques ou numriques (de 0 9), mais dans ce cas ils ne sont pas considrs comme tant des nombres et on ne peut pas faire d'oprations dessus. Une variable de type caractre se dclare ainsi : variable1, variable2 :CAR ; Le type Boolen: Il est souvent ncessaire lorsque l'on crit un programme qui introduit des variables qui prennent les valeurs vrai ou faux ou les valeurs oui ou non. Pour cela, il existe un type particulier dont les variables ne peuvent prendre que 2 valeurs : vrai ou faux. La dclaration s'crit : variable1, variable2,. : BOOLEEN ;

Les tableaux ( voir le chapitre Tableaux) : On peut regrouper plusieurs variables sous un mme nom, chacune tant alors repre par un numro. C'est ce que l'on appelle un tableau. On peut faire un tableau avec des variables de n'importe quel type. Le ime lment d'un tableau appel tab sera adress par tab[i-1] car lindice du premier lment dans un tableau est 0. Il existe galement des tableaux deux dimensions, dans ce cas tab[i-1,j-1] reprsente la jme colonne et la ime ligne.

Exemple : TABLEAU CAR mot[10]; TABLEAU ENTIER liste_nb[25] ; TABLEAU CAR MOTS[10][20]; Le premier exemple montre la dclaration d'un tableau nomm mot de 10 caractres, dans le deuxime exemple liste_nb reprsente un tableau qui peut contenir jusqu' 25 entiers, le troisime exemple dclare MOTS un tableau de dimensions 2 qui va contenir des caractres.

Les constantes Elles reprsentent des chiffres, des nombres, des caractres, des chanes de caractres, . Dont la valeur ne peut pas tre modifie au cours de lexcution de lalgorithme Mot cl : const Exemple Algorithme Dclaration ; Var a, b, longueur :Entier ; x, y, surface : Reel ;

Cours Algorithmique Pr. S. El Bernoussi

4

Const PI=3,14 ;

L'affectation Elle consiste donner une valeur la variable dclare ou de changer sa valeur par une expression. Scrit : Nom_de_la_Variable expression ; Se lit "Nom_de_la_variable reoit expression" Signifie que nous mmorisons la valeur de lexpression un endroit nomm Nom_de_la_variable. Nous pourrions aussi dire que nous rangeons une valeur dans des cases de la mmoire que nous nommons Nom_de_la_variable. Laffectation se fait toujours en 2 temps : 1- Evaluation de lexpression situe droite du symbole. 2- Affectation du rsultat lidentificateur de variable Ainsi dans linstruction daffectation suivante y 2*x + 3 Il ne faut jamais confondre valeur et variable. Une variable est caractrise par :

Une adresse c'est dire un emplacement dans la mmoire de la machine, Un type permettant d'indiquer la nature de l'information contenue, Eventuellement une longueur si le type ne le dfinit pas.

Avec des constantes : Algorithme affectation1 ; Var Longueur, X : ENTIER ; X2 : REEL; A : CAR ; Debut X 10 ; Avec des variables : Algorithme affectation2 ; Var X : ENTIER ; S, somme, X2 : REEL ; Debut X 12 ; X2 10.5 ; Avec des expressions : Algorithme affectation3 ; Var Longueur, Largeur : ENTIER ; X, Y, A, B, surface, somme : REEL ; Debut X 2.3 ; Y3.4 ;

Cours Algorithmique Pr. S. El Bernoussi

5

AX ; B Y ;

Les oprateurs Exemple : Algorithme operateurs_arithmtiques ; Var Longueur, Largeur, DivEnt : ENTIER; X, Y, A, B, somme, Division, RestDivEnt : REEL; Dbut X 2.3 ; Y 3.4 ; AX ; BY; Longueur 100 ; Largeur 40 ; somme Longueur + Largeur ; division X/Y ; ResteDivEnt Longueur MOD Largeur ; // ResteDivEnt prend la valeur 20 DivEnt Longueur DIV Largeur ; // DivEnt prend la valeur 2 Fin.

Les oprateurs relationnels ou de comparaisons Les symboles opratoires sont classs dans le tableau ci-dessous

Exemple : Algorithme comparaison ; Var X, Y: REEL ; A, B, C, D, E, F: BOOLEEN ; Dbut X 2.3 ; Y 3.4 ; A(X >Y) ; // A est faux B(Y >X); // B est vrai Fin.

Les oprateurs logiques Les oprateurs logiques Les oprateurs logiques les plus utiliss sont ET, OU et NON. Le rsultat dune opration logique est de type boolen

Les instructions dEntres Sorties Lecture des donnes Gnralement, les algorithmes ont besoin de donnes traiter. Ces donnes peuvent provenir de lextrieur. C'est--dire acqurir des donnes depuis le priphrique dentre (clavier) ou une source de donnes (fichier ou collection) La syntaxe de linstruction qui permet dacqurir les donnes est :

Cours Algorithmique Pr. S. El Bernoussi

6

Variable1, variable2, , variableN : Sont des variables auxquelles les donnes seront affectes dans lordre de saisie.

Lecture des donnes Exemple : Algorithme lecture ; Var Longueur, largeur, soustraction : ENTIER ; A, B, somme, produit : ENTIER ; Dbut Lire (Longueur) ; // lit un entier et laffecte la variable Longueur Lire (Largeur) ; // lit un entier et laffecte la variable Largeur Soustraction Longueur largeur Lire (A, B) ; // lit deux entiers et les affecte aux variables respectivement A et B Somme A +B ; Produit A * B ; Fin.

Ecriture des donnes Les rsultats trouvs par lalgorithme sont transfrs vers lextrieur. Ils sont affichs sur le priphrique de sortie (cran) ou ils sont crits dans une source de donnes (fichier, base de donnes, collection,) La syntaxe de linstruction qui permet laffichage des donnes est : Ecrire (expr1, expr2,.., exprN) ; Expr1, expr2,, exprN : sont des expressions. Elles peuvent tre aussi des variables ou des messages sous forme de chanes de caractres Exemple : Algorithme affichage ; Var A, B, somme : ENTIER Dbut // lit les deux entiers et les affecte aux variables respectivement A et B Lire (A, B) ; Somme A+B ; // affiche le message la valeur de A est : et la valeur contenue dans la variable A Ecrire (" la valeur de A est : " , A) ; // affiche le message la valeur de B est : et la valeur contenue dans la variable B Ecrire (" la valeur de Best : " , B) ; // affiche le message la somme est : et la valeur contenue dans la variable somme Ecrire (" la somme est : " , somme) ; // affiche le message le produit est : et la valeur de A*B Ecrire (" le produit est : " , A*B) ; Fin.

Exercices Exercice 1 :

Cours Algorithmique Pr. S. El Bernoussi

7

Ecrivez un algorithme qui lit le jour, le mois et lanne au clavier et crit la date sur lcran sous forme : jour/mois/anne. Exercice 2 : Ecrivez un algorithme qui lit deux rels et affiche sur lcran leur somme, leur produit et la moyenne Exercice 3 : Ecrire un algorithme qui calcule et affiche le prix toute taxe comprise (PTTC), le prix hors taxe (PHT) et le montant de la TVA (MTVA) dun article, partir du prix unitaire (PU) et de la quantit (Q) la TVA tant fixe 20%. Utiliser les formules suivantes : PHT= PU * Q MTVA= PHT * TVA PTTC= PHT + PHT * TVA

La structure alternative (conditionnelle)

Il est souvent ncessaire lorsquon crit un programme de distinguer les cas conditionnant l'excution de telles ou telles instructions. Pour ce faire, on utilise une structure alternative : si on est dans tel cas, alors on fait cela sinon on fait ceci. Dans cette structure, lexcution dun des 2 traitements distincts ne dpend que du rsultat dun test effectu sur la condition qui peut tre une variable ou un vnement ; Si la condition est vrifie seul le 1er traitement est excut. Si la condition nest pas vrifie seul est effectu le second traitement. Syntaxe SI condition ALORS Action(s) si vrai [SINON action(s) si faux] FINSI Exemple : Algorithme exemple1 ; Var X,Y : ENTIER ; Dbut Ecrire (" tapez la valeur de X : ") ; Lire(X) ; Ecrire (" tapez la valeur de Y : ") ; Lire(Y) ; Si (X > Y) Alors Ecrire (" le plus grand cest : ", X) ; // une seule instruction FinSi Fin Exemple 2 : Pour avoir la valeur absolue (appele nAbsolu dans notre exemple) d'un nombre (n1 dans notre exemple), s'il est ngatif nous le multiplions par 1 sinon la valeur absolue est gale au nombre :

Cours Algorithmique Pr. S. El Bernoussi

8

La structure alternative (conditionnelle) SI (n 1 < 0) ALORS nAbsolu n1 * (-1) SINON nAbsolu n1 FINSI Exercices Exercice 1 : Ecrire un algorithme qui affiche le plus grand nombre partir de deux nombres saisis par lutilisateur Exercice 2 : Ecrire un algorithme qui affiche le plus grand nombre partir de 3 nombres saisis par lutilisateur Exercice 3 : Ecrire un algorithme qui calcule et affiche le prix toute taxe comprise (PTTC), le prix hors taxe (PHT) et le montant de la TVA (MTVA) dun article, partir du prix unitaire (PU) , de la quantit (Q) et du code. La TVA dpend du code selon le tableau suivant: Exercice 4 Donner un algorithme pour la rsolution de lquation de second degr.

Les conditions Pour exprimer les conditions on utilise les oprateurs conditionnels ou de comparaison Les actions Les actions Les actions qui suivent sinon ou alors peuvent tre : une simple instruction une suite d'instructions spares par des point-virgule une autre alternative une instruction rptitive Exemple (Algorigramme): Si condition alors Action1 ; Sinon

Cours Algorithmique Pr. S. El Bernoussi

9

Action2 ; Fin si Un programme a presque toujours pour rle de rpter la mme action un certain nombre de fois. Pour ce faire, nous utiliserons une structure permettant de dire " Excuter telles actions jusqu' ce que telle condition soit remplie". Bien qu'une seule soit ncessaire, la plupart des langages de programmation proposent trois types de structure rptitive. Voici celles de notre pseudo-langage.

TantQue Syntaxe : TantQue condition Action(s) FinTQ Ce qui signifie : tant que la condition est vraie, on excute les actions Exemple : Algorithme TantQue_Exemple Var a,b : ENTIER ; Dbut a4 ; b5 ; TantQue (a>0) bb+1; aa-1 ; FinTQ Ecrire("b=", b) ; Fin

Faire Jusqu' Syntaxe : FAIRE Action(s) JUSQUA condition Ce qui signifie que l'on excute les actions jusqu' ce que la condition soit vraie. Algorithme JusQua_Exemple Var a,b : ENTIER ; Dbut a4 ; b5 ; Faire bb+1; aa-1 ; Jusqu' (a