Você está na página 1de 10

Qu'est ce qu'un algorithme ?

1 Dfinition
Un algorithme est une suite finie d'oprations ou rgles appliquer dans un ordre dtermin, un
nombre fini de donnes, pour arriver en un nombre fini d'tapes, un certain rsultat et cela
indpendamment des donnes.
Mots cls :
-> dmarche
-> prpare une programmation fiable (sans garantir que ce soit la meilleure solution toutefois)
Inconvnients :
-> dmarche pas forcment unique
-> on se limite souvent aux "bonnes pratiques"
-> peut-tre assimil une recette
Pour crire un algorithme il faut connatre les outils utiliser

On parle de langage algorithmique :


Ordinogramme : reprsentation graphique
Une action est dcrite dans un rectangle
une condition est dcrite dans un losange
l'ordre des actions est dcrit l'aide de flches
Note : peu intressant ds que le programme est complexe
Pseudo-code : reprsentation textuelle
crit en langage naturel
ne comporte que des lments syntaxiques gnriques
Permet de rsoudre des problmes compliqus <-- on tudiera ce langage

Graphiquement :

spcifccaiio

Priblme

rsiluaiio

oioc

Algiriahme

cidcge

Prigrcmme

De faon trs simplifie, 4 tapes seulement.


En ralit: un planning est associ en parallle, un cahier des charges, des revues de projet ...

2) Exemple de ralisation d'une application informatique


criture d'un cahier des charges avec le client
-> version initiale ( discussion, temps)
-> version finale
Note: un cahier des charges est un contrat, et chaque mot doit tre justifi.
-> cerner les besoins, les moyens (financement)
-> penser la formation des utilisateurs
-> penser une ventuelle migration
-> signature : elle engage les deux parties

criture du programme informatique


- Analyse fonctionnelle
- Dcomposition en programmes raliser
Pour chaque programme:
-> tudier un algorithme et le finaliser
-> crire le programme
-> le tester (dmarche qualit)
TANT QUE tests non tous satisfaisants
corriger les erreurs
FIN TANT QUE

Tester l'application complte et la mettre au point


Faire vrifier par le client
SI ncessaire et raisonnable
faire modifications /corrections
Fin SI
Livraison et mise en place
Formation utilisateur
Facturation

Algorithme / Programme C
count, val_max entier
saisir (val_maxi)
pour compteur = 1 val_max
afficher (count)
incrmenter count
fin pour count

#include <stdlib.h>
#include <stdio.h>
int saisir_val_max( int value );
int main (void)
{
long val_max;
long count;
for ( count = 1 ; count < val_max ; count ++ )
printf("Compteur : %d\n", count );
return EXIT_SUCCESS;
}
int saisir_val_max( value)
{
fscanf("Entrer valeur maxi : %d\n",&value);
return value;
}

Note: l'algorithme met en avance le concept, l'essentiel de la mthode, qui pourra tre
implmente en utilisant un langage de programmation.
L'algorithme est plus facile lire, et plus concis

3) Mthodologie de construction d'un algorithme


Problme : son nonc doit tre sans ambigut
Exemple : dterminer le maximum entre deux entiers donns
Instance d'un problme : soit un doublet d'entiers
Programme :
Caractris par :
un ensemble de donnes, et un ensemble de rsultats
une solution informatique : description d'actions dcrire dans un certain ordre et dans un
certain langage de programmation

Bien analyser et comprendre le problme


Identifier les donnes fournies : entres
Prciser les rsultats attendus : sorties
laborer le processus et transformation des entres en vue d'obtenir les sorties attendues
Objectifs :
Programmation structure
convivialit : ne pas ngliger l'interface utilisateur ( on ne parle pas de l'apparence ici, i.e. look)
modularit: on n'crit plus de gros programmes
lisibilit: commentaires, choix judicieux des identificateurs, implmentation judicieuse ..etc
maintenabilit: un programme bien conu, est facile maintenir
rutilisabilit: une conception de qualit permet de rutiliser certaines parties
extensibilit: prvoir ds la conception d'ajouter des nouvelles fonctionnalits (futures versions)
-> PORTABILIT : un programme crit correctement en langage C est rutilisable avec la plus
grande partie des systmes d'exploitations les plus connus ( Linux, Windows, Mac OS X,
Solaris, ...)
Structure d'un algorithme
Tout algorithme ne peut utiliser que 3 types de structures diffrentes:

la squence
l'alternative
l'itration

La squence :
C'est une suite d'instructions, excutes squentiellement, i.e. linairement la suite les unes des
autres.

Remarques:

Une squence est traduite en langage C par une suite d'instructions simples enchanes dans
un bloc, qui peut ne compter qu'une ligne. On parle alors d'instruction simple.

instruction simple: redirection entre un priphrique d'entre et un priphrique de sortie

Exemples de redirections possibles:

affectation : le priphrique d'entre est le clavier, celui de sortie une variable (ou une
constante) crit dans la mmoire du programme en cours d'excution

affichage: le priphrique d'entre est l'espace mmoire du programme, celui de sortie, l'cran
acquisition: priphrique d'entre est le clavier, en sortie, l'espace mmoire du programme
autres cas: entre : fichier, sortie cran
.... etc

lors du dbogage, l'instruction s excute un bloc complet d'instructions, et passe au bloc ou


la structure suivante, alors que l'instruction n excute une seule instruction , en respectant
l'ordre dfini dans le bloc en cours d'excution.

L'alternative
Toute alternative est base sur une expression boolenne.
Une expression boolenne est une quation logique qui ne peut prendre que deux valeurs: VRAI ou
FAUX.
La valeur FAUX est represente par un 0 ( zro ) en langage C
La valeur vraie, par un entier non nul
Cette expression boolenne pourra tre construite l'aide de :

variables
valeurs
expressions mathmatiques
comparaisons ( vrai si gal, vrai si infrieur ou gal .. etc )

Cas possibles: == , > , < , != , >= , <=

oprateurs boolens: ET, OU, NOT

code de retour d'une fonction (attention complmenter la valeur de retour !)

savoir : ET est prioritaire sur OU , et NOT est prioritaire par rapport ET


Exemples:
if ( 0 == variable ) /* evite l'erreur classique: if ( variable = 0 ) qui est une affectation */

if 1 /* toujours vrai */
if ( 0 == sin(x) )
if ( a == 1 )
{
snprintf(stdout, sizeof(buff), "chaine %s " , string);
for (i = 0 ; i < 10 ; i+=1 )
{
compteur += 1;
}
}
if ( 0 != erreur )
EXIT_FAILURE; /* pas de { } si une seule ligne, amliore la lisibilit */
if defined (MACOSX) && !defined (LINUX ) || defined ( QUARTZ)
{
.....
}
if !( strcmp ( string1, string2 )) /* si strcmp() est vraie, elle retourne 0 */
{
/* cas ou string1 est gale string2 */
.....
}
else /* strings diffrentes */
{
}
si NOT ((a ET b) OU c ) pourrait s'crire sans parenthses : si NOT a ET b OU C
-> mais il vaut mieux en mettre , ce qui constitue une bonne habitude
Rappel: Thormes de De Morgan :
Premire forme : AB=AB
Seconde forme :
Exercice:

AB= AB

Você também pode gostar