Sous-sections
- 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.
- langage de description d'algorithmes
indépendant des ordinateurs
indépendant des langages (FORTRAN, PASCAL, C, Matlab, Maple)
- langage naturel
proche du langage mathématique
mais explicite sans syntaxe rigide (compilateur=homme)
- 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 )
PGCD(a,b)=PGCD(a,b-a) (si )
PGCD(a,a)=a
Algorithme PGCD
a,b entiers positifs
tant-que faire
si alors
sinon
fin tant-que
Programme Matlab
- % calcul le PGCD de 2 nombres entiers a et b
- % initialisation aléatoire
- A=round(1000*rand(1)); B=round(1000*rand(1));
- % algorithme
- a=A; b=B;
- while (a~=b)
- if (a>b) a=a-b;
- else b=b-a;
- end
- end;
- PGCD=a;
- % affichage
- disp(sprintf('PGCD de %d et %d = %d\n',A,B,a));
“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”
- 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
- Rechercher d'une solution algorithmique
Utilisation de bibliothèques
- 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