Vous êtes sur la page 1sur 14

Prpar par M.

MOUFID

Cours dalgorithme

I. NOTION DALGORITHME
1. Introduction
Linformatique se dcline selon trois aspects : La technologie des ordinateurs (composant utilisables en rseaux) ; Les produits logiciels et matriels ; La science de ce qui se calcule sur et avec les ordinateurs (cest ici que prend place lalgorithme).

2. Machine abstraite
Il existe de nombreux types dordinateurs, mais tous correspondent un modle dordinateur unique.

3. Machine programmable abstraite


Les donnes : sont des programmes fournis par lutilisateur dont le programme a besoin par son excution (saisie de donnes). La mmoire : est lendroit de la machine abstraite ou les programme sont logs, donnes places automatiquement.

Prpar par M. MOUFID

Cours dalgorithme

Le programme : va traiter les donnes pour produire des rsultats attendus, le programme sera constitu essentiellement dune suite dinstruction. Une instruction correspond une action lmentaire. Unit de traitement : composante qui utilise les instructions et les donnes pour calculer les rsultats. Les rsultats : sont les valeurs que lutilisateur attend aprs avoir fourni des donnes au programme. Une telle machine programmable va nous permettre de concevoir des programmes abstraits (algorithmes). Il sera ncessaire par la suite de les transmettre dans un langage de programmation, tout simplement pour quils deviennent des programmes (traitement par lordinateur).

4. Etapes de passage dun problme la sortie des rsultats.

Le problme : est nonc dans le langage courant (avec toutes ses ambiguts) Cahier des charges : Lalgorithme : est cris dans un langage abstrait Conception : Le programme : est cris dans un langage de programmation (trs contraint) Ralisation : Lordinateur : interprte et traduit le programme en instructions simples codes en binaire (ce mcanisme est possible laide dun compilateur). NB : compilateur interprter (interprteur : ligne ligne).

5. Dfinitions fondamentales
Algorithme : En informatique, la rsolution dun problme est de travailler la suite logique de tous les ordres ncessaires la solution du dit problme, cette suite est appele Algorithme. La construction dun algorithme passe par lanalyse du problme, avec pour objectif de le dcouper en une succession de tches simplifies et distinctes. 2

Prpar par M. MOUFID

Cours dalgorithme

Pour raliser un algorithme, il faut dcouper lnonc en tapes distinctes qui contiennent lalgorithme (dterminer les fonctions) dfinir les objets manipuls par lalgorithme (variables, objets) (objet = instance de classe). Programme : traduction de lalgorithme de faon ce quil soit compris par lordinateur. (Traduction + compilation) (Contrainte = syntaxe et machine). Variable : une variable en algorithme est une entit abstraite compose : un identificateur (nom, intitul) une valeur appartenant un domaine de valeur (type) et qui peut tre modifi par une affectation.

II. LE LANGAGE ALGORITHMIQUE


1. Mise en forme algorithmique
Un algorithme est un texte cris dans un langage particulier dtaillant une suite doprations effectuer. Le point virgule (;) : indique la fin dune instruction et le dbut de la suivante. La virgule (,) : est le sparateur dlment dans une suite dlments. Les deux slaches accols (//) : indique que la ligne est en commentaires. Lentte de lalgorithme prcise le nom de lalgorithme : nom_de_lalgorithme. Un algorithme se compose de trois parties successives : 1. Indique le nom de lalgorithme 2. Dclaration des variables commenant par le mot variable. 3. La partie instruction de traitement, commenant par le mot cl : DEBUT et finissant par la cl : FIN. Algorithme Toto ; // partie en tte Exemple :

Variable Dbut Fin.

// partie dclaration // partie instruction

2. Types primitifs et dclaration de variables


Type de donnes : un type prcise le domaine de valeurs et lensemble des oprations portant sur ces valeurs, un type est attribu par une variable. Types primitifs numriques : (entiers, rels, ) Exemples : 12 : est un nombre entier 0.12 : est un nombre rel Cest 2 variables ne sont pas de mme nature Les oprateurs utilisables sont : laddition, la soustraction, le produit, le quotient (+,-,*, /). Les oprateurs de comparaison : <, >, =, , , Types logiques (types boolens) : Les seules valeurs du domaine sont vraies ou faux ; Les oprations admissibles sont donc ralises laide de connecteurs logiques ET pour le et logique OU pour le ou logique NON pour le non logique Type caractre : Les caractres alphabtiques et numriques constituent ce domaine. Les oprations de comparaisons sont disponibles :

Prpar par M. MOUFID A>9 : possible Caractre de symbole A Caractre de symbole 9 La dclaration de variable identificateur : domaine Syntaxe : Nom type Exemple : Variable Filomne : entier ; X, Y, Z : entier ; 4 variables

Cours dalgorithme

Rgles :
Une variable nest dclare quune seule fois dans un algorithme ; Une variable est dclare au dbut de lalgorithme ;

3. Instruction daffectation et dexpression


Aprs avoir dclar les variables, il faut dfinir les actions portant sur les variables (instruction du traitement). La plus commune est laffectation (affecter une variable une variable)

Notation de lalgorithme :
Identificateur de la variable expression ; (Nom) (Prend pour valeur) (Valeur correspondant au type de la variable) La valeur de lexpression doit tre conforme au domaine de la variable affecte. Exemple :

Algorithme affecter ; Variables X, Y : entier ; Dbut X 12 ; Y X+4 ; X3; Fin. Exemple :

//en tte //dclaration de deux variables de types entier //X=12 et Y na pas encore de valeur //X=12 et Y=16 //X=3 et Y vaut 16

Algorithme affecter_faux ; //en tte Variables X, Y : entier //dclaration de deux variables de type entier Dbut X; //application prdfini, initialise 0 Y X+4 ; //error, excution impossible, X+4 na pas de sens //Y=12, mais instruction pas atteinte Y 12 ; X3; //X=3, mais instruction pas atteinte Fin.

4. Dlimiteurs de blocs dinstructions


Deux syntaxes possibles : Dbut {Instruction1 ; Instruction2 ; . InstructionN} Fin. 4

Prpar par M. MOUFID Instruction de squencement (alternative, conditionnelle) Syntaxe : SI (condition) ALORS {instruction} SINON {instruction} Notion textuelle : SI ALORS SINON Notion de type organigramme test {a1} {a2} ;

Cours dalgorithme

//facultatif

//on atteste

Exemple : soit lorganigramme suivant :

SI (C1) ALORS

{SI (C3)

ALORS {SI (C6) }

ALORS {a6} SINON {a5} ;

Prpar par M. MOUFID SINON {SI (C2) ALORS {SI (C5) } SINON {SI (C4) } } Exemple : Algorithme Maxi ; Variable X, Y : entier ; DEBUT X 12 ; Y X+4 ; SI (X>Y)

Cours dalgorithme

ALORS {a4} SINON {a5} ; ALORS {a2} SINON {a1} ;

ALORS { } SINON {

Y X X Y

12+X ; X/2 ; Y+4 ; 2*X ;}

NB : Traduction de la flche ( ), prend pour valeur. Mmoire (Machine abstraite).

FIN.

5. Instruction de rptition (interactive, boucle).


Syntaxe : Tant que (condition de poursuite) faire bloc {instruction} ; La condition de poursuite est de type boolen (vrai ou faux) ; Le bloc dinstruction est rpt autant de fois que la condition de poursuite la valeur est vraie. Exemple : C vrai indique la poursuite de la boucle (excution de A). C faux arrte la boucle. C est un test de continuation.

Tant que (C) faire {A} ;


6

Prpar par M. MOUFID

Cours dalgorithme

Exemple : Algorithme Somme_5_premiers_entier ; Variables I, N, S : entier ; DEBUT I 0; N 5; S 0; Tant que (I<N) faire { I I+1; //condition de poursuite (I<N) S S+I ; } FIN. Mmoire :

SYNTAXE DE TEST EN QUEUE

Prpar par M. MOUFID

Cours dalgorithme

Boucle avec dtermination pralable du nombre de tours et dune progression arithmtique dune variable.

Pour x 0 10 pas 3

faire {a }

x=0 a x=3 a x=6 a x=9 a

Fin/pour
Une boucle avec une progression arithmtique se traite avec un Tant que. Exemple :

Dbut Fin ; Dbut

Pour I 1900 1999 pas 1 faire {a} Fin/pour

I 1900 Tant que (i1999) faire { a ; I I+1 ; }

Fin ;

Prpar par M. MOUFID

Cours dalgorithme

6. Les instructions dentre et sortie


Syntaxe :
1/ Lire (liste de variables) : permet daffecter implicitement une ou plusieurs adresses mmoires (variables) des valeurs trouves sur le support dentre. Exemple :

Algorithme E/S ; Variable a : entier ; DEBUT Lire (a) ; // valeur saisie au clavier FIN.
2/ Ecrire (liste dexpression) : permet de transfrer sur le support de sortie, le contenu dune ou plusieurs @ (adresse) mmoires de donnes. Exemple :

Algorithme Somme_N_premiers_entiers ; Variables I, N, S : entiers ; DEBUT Lire (N); I 0; S 0; Tant que (I<N) faire { I I+1; S S+1; } crire (la somme des, N, premiers entiers est gale , S) ; FIN.

7. Le type primitif tableau


Dfinition : Un tableau est une structure de donnes dun nombre fixe de composant de mme type. Le nombre dlments dun tableau est la dimension. On accde aux lments dun tableau par un indice. Syntaxe :

Identificateur : Tableau [indice Min _ _indice Max] type primitif Toto [0_ _3] de type entier. Toto

Tata [0_ _ 1] [0_ _ 3] dentier. Tata

Exemple : 9

Prpar par M. MOUFID

Cours dalgorithme

Algorithme Tableau ; Variable Tab[0_ _ 9] : Entier ;

// dclaration dune variable Tab de //type tableau comprenant des entiers.

I : entier ; DEBUT Tab [1] -7 ; Tab [8] 50 - Tab [1] ; I0; Tant que (i<10) faire { Lire (Tab[i]) ; I i+1 ; } FIN.
Mmoire :

III. LES FONCTIONS


1. De l'algorithme paramtr l'initiation des fonctions.
Gnralit sur les fonctions : 1.1. Dfinitions
Une fonction est une partie autonome dun algorithme, ralisant une tche prcise, laquelle on transmet des valeurs lors de son appel, et qui retourne une valeur (ou pas) la fin de son excution (sous programme). Le concept permet de rsoudre les cas les plus simples, par le dcoupage en sous problmes. Il permet galement la ralisation des fonctions dj dveloppes.

1.2. Syntaxe
Fonction nom_de_la_fonction (liste des paramtres et types) : Type de la valeur retourne ; Variables liste des variables locales : Types ; Dbut Instructions ; Fin ; Exemple : Calcul du maximum (avec une valeur retourne) Algorithme calcul_du_maximum ; Variables rsultat, a1, b1 : rel ; Fonction maximum (A : rel, B : rel) : rel ; Dbut Si (A<B) alors retourne A ; Sinon retourne B ;

Fin ;
10

Prpar par M. MOUFID

Cours dalgorithme

DEBUT Lire (a1, b1) ; //saisie des deux variables a1, b1 Rsultat maximum (a1, b1), //appel de la fonction maximum valeur Ecrire (maximum = , Rsultat) ; FIN. Exemple : Calcul du maximum (sans retour de valeur) Algorithme calcul du maximum ; Variables A1, B1 : rel ; Fonction maximum (A, B : rel) ; Dbut Si (A>B) Alors crire (maximum :, A) ; Sinon crire ( maximum = , B ) ; Fin ; DEBUT Lire (a1, b1) ; Maximum (a1, b1) ; FIN.

2. Les fonctions communiquent entre elles


2.1. Le passage de paramtre par valeur (par copie)
Dans le passage par valeur, il y a recopie de la valeur de la variable passe en argument ou pass en paramtre dans le paramtre activ de la fonction. Exemple : Algorithme Faux_echange ;

11

Prpar par M. MOUFID

Cours dalgorithme

Grce au retour de rsultat le contenu dune variable locale la fonction appel peut tre transmis la fonction appelante.

2.2. Passage par rfrence (par @ adresse)


On peut communiquer de linformation entre lappelant et la fonction appele en donnant ses paramtres des informations relatives aux @ (ou pointeurs) mme des variables. Le principe : Lappelant transmet la fonction les @ de certaines de ses variables. La fonction connat effectivement ses @ car ses paramtres sy rfrent ; La fonction manipule dans ses propres paramtres actifs (disponible pour la fonction) (accessibles) les variables mme de lappelant. Syntaxe : Fonction nom_de la_fonction (paramtre : @ type, paramtre : @ type ) : Type de valeur retourne ; Variable variables_locale : type ; Dbut Corps de la fonction ; Fin ; Exemple : Algorithme echange_de_valeur ; Variables a, b : entier ; //dclaration de deux variables de type entier Fonction echange_effectif (X, Y : @ entier) ; //fonction passage par @ Variable Z : entier ; //dclaration dune variable locale la fonction. Dbut ZX; //affecter z XY; //affecter x //corps de la fonction YZ; // affecter y Fin ; DEBUT Lire (a, b) ; //lire saisie au clavier Echange_effectif (a, b) ; //passage par @ de a et b, Ecrire (a, b) ; //les valeurs a et b sont permutes. FIN. 12

Prpar par M. MOUFID Mmoire :

Cours dalgorithme

Il n y pas recopie mais utilisation directe

Le passage par rfrence (pointeur) est indispensable pour une fonction qui modifie plus de deux variables. En effet, une fonction qui modifie une seule variable du programme appelant peut la retourner. (Recopie avec retour par @). Exemple : Voici quatre fonctions reprsentant lchange des valeurs de deux variables de lappelant : Fonction Echange_A (a : entier, b : entier); Variable temp : entier Dbut temp a ; a b; b temp ; Fin ; 13

Prpar par M. MOUFID Question : Complter les fonctions et lalgorithme ci-dessous : Fonction Echange _B (a : entier, b : @ entier) retourne vide Fonction Echange_C ( a : @ entier, b : entier) retourne vide Fonction Echnage_D (a : @ entier, b : @ entier) retourne vide Les quatre fonctions sont appeles par lalgorithme suivant : Algorithme Test; Variables C, D: entier;

Cours dalgorithme

14