Sous-sections

2.2 Algorithme

Algorithme:
ensemble de règles précises, qui permettent d'obtenir un résultat à partir d'opérations élémentaires
Algorithme numérique:
données et résultats = nombres
Calcul scientifique:
utilisation d'un ordinateur pour résoudre un modèle mathématique d'un problème physique à l'aide d'algorithmes numériques.

2.2.1 Langage algorithmique

  1. langage de description d'algorithmes
    indépendant des ordinateurs
    indépendant des langages (FORTRAN, PASCAL, C, Matlab, Maple)
  2. langage naturel
    proche du langage mathématique
    mais explicite sans syntaxe rigide (compilateur=homme)

2.2.2 Exemple

Problème:
détermination du PGCD de 2 nombres entiers a et b
Analyse:
propriété du PGCD
PGCD(a,b)=PGCD(a-b,b) (si $a>b$)
PGCD(a,b)=PGCD(a,b-a) (si $a<b$)
PGCD(a,a)=a
Algorithme PGCD

a,b entiers positifs

tant-que $a\neq b$ faire

  si $a>b$ alors $a\leftarrow a-b$

  sinon $b\leftarrow b-a$

fin tant-que

$PGCD\leftarrow a$
Programme Matlab

  1. % calcul le PGCD de 2 nombres entiers a et b
  2. % initialisation aléatoire
  3. A=round(1000*rand(1)); B=round(1000*rand(1));
  4. % algorithme
  5. a=A; b=B;
  6. while (a~=b)
  7.     if (a>b) a=a-b;
  8.     else b=b-a;
  9.     end
  10. end;
  11. PGCD=a;
  12. % affichage
  13. disp(sprintf('PGCD de %d et %d = %d\n',A,B,a));

2.2.3 Programmation structurée

“La gestion de la complexité d'un problème est l'essence même de la programmation. Nous serons toujours limités par le nombre restreint de détails que l'on peut conserver clairement en mémoire”

  1.  Conception modulaire descendante
    Décomposer le problème général en une succession de sous-problèmes plus simples et si possibles indépendants.
    Déterminer les points essentiels
  2.  Rechercher d'une solution algorithmique
    Utilisation de bibliothèques
  3.  Programmation structurée ascendante
    Des sous-programmes (procédures) au programme principal
    Soigner le fond en priorité et non la forme
    Programmer simplement (sans astuces)


Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2008-01-29