fin si - Mirari

publicité
Algo
Algorithme
Chapitre 1 : du problème au programme en
passant par l'algorithme
I. Introduction
Soit un problème concret à résoudre :
Énoncé brut du
problème
Analyse
Trouver un énoncé
moins complexe, plus
précis, obtenu par
décomposition en
sous-problèmes
Algorithme
Programmation
Programme
Écrit avec un langage
de programmation
connu de la machine
+
Machine
1.
Rôle : transformer le
programme en un
code exécutable par
la machine
Analyse
a.
Définition
C'est un processus d'étude d'un problème en vue d'obtenir un moyen de le résoudre sous forme
d'étapes très précises décrites dans un langage et compréhensible par un programmeur.
Algo
On obtient de ce fait un algorithme.
Problème : une tâche à résoudre
La phase d'analyse contient une étape préliminaire appelée pré-étude : elle permet d'identifier le
résultat souhaité et les données (informations) qui conçurent à l'obtenir.
Exemple : gestion simplifiée d'une facture téléphonique :


Résultat : montant à payer
Données : montant abonnement, prix unité, nombre d'unités consommées.
b.
Forme d'analyse
Il existe 2 formes d'analyse :

L'analyse guidée par le(s) résultat(s)
Résultat(s) --> donnée(s)
Décomposition :
Résultat 1
Résultat a
-------
Donnée 1
Résultat b
-------
Donnée 2
-------
Donnée P
Résultat 2
...
...
...
Résultat
Résultat 3
Résultat 4
Résultat n
L'analyse par le résultat correspond à une décomposition d'un problème en sous-problèmes
moins complexes à résoudre et ainsi de suite pour chaque sous-problème jusqu'à arriver aux
données.

L'analyse guidée par la(les) donnée(s)
Donnée 1
Résultat 1
Donnée 2
Résultat 2
Donnée P
Résultat n
Résultat
Algo
2.
Notion d'algorithme
Définition d'un algorithme (d'après D.E. Knuth, une des personnes de l'informatique de l'Université
de Stanford, 1968, 1973. Il a donné une liste de 5 propriétés largement reconnues comme prérequises d'un algorithme) :
1) Finitude : un algorithme doit toujours se terminer après un nombre fini d'étapes.
2) Définition précise : chaque étape d'un algorithme doit être défini de manière très précise,
les actions doivent être très bien spécifiées et être sans ambiguïtés pour chaque cas
3) Entrées : ce sont des quantités (informatiques) données ) l'algorithme avant qu'l ne
commence
4) Sortes : ce sont des quantités (informatiques) qui ont une relation spécifique avec les
entrées
5) Rendement : toutes les opérations qu'il doit accomplir doivent être suffisamment basiques
pour être réalisée dans une durée finie par un homme utilisant du papier et un crayon.
En d'autres termes, un algorithme est un ensemble de règles ayant les caractéristiques suivantes :
 Il doit être fini et terminé après un nombre fini d'opérations
 Il doit être défini et précis : chaque opération est spécifiée sans ambiguïtés
 Les champs d'application des données sont précisées sans ambiguïtés
 Il doit être effectif : toutes les opérations doivent pouvoir être faites par l'utilisateur.
II. Algorithme et méthode
1.
Syntaxe
Un algorithme sera composé de 3 parties :
 Instructions : les différentes étapes de résolution
 Ordonnancement : indique l'ordre selon lequel doivent se dérouler les différentes étapes
 Lexique : identifie les différents objets (données ou résultats) manipulées
Un algorithme est identifié par un nom
Forme :
Algo
nomAlgo
Définitions (ou instructions)
Ord
Lexique
Numéro Les objets
d'ordre
Deux types d'analyse <==> deux types d'algorithmes,
Algo
2.
Exemple : facture téléphonique
Résultat : montant à payer
Données : montant de l'abonnement, prix de l'unité, nombre d'unités consommées
a.
Analyse par résultat
Algo
Facture
Résultat : montant à payer
Ord
4
Lexique
montantPaye (réel)
montantPaye = montantAbonnement +
prixConso
3
prixConso (réel)
prixConso = nombreUnite * prixUnite
2
Données : montantAbonnement, prixUnite,
nombreUnite
1
nombreUnite (entier)
prixUnite (réel)
b.
montantAbonnement (réel)
Analyse par données
Algo
Facture
Données : montantAbonnement, prixUnite,
nombreUnite
Ord
1
Lexique
montantPaye (réel)
prixConso (réel)
prixConso = nombreUnite * prixUnite
2
montantPaye = montantAbonnement +
prixConso
3
Résultat : montant à payer
4
nombreUnite (entier)
3.
prixUnite (réel)
montantAbonnement (réel)
Notion de variable
Définition : une variable est un nom qui permet d'identifier un objet manipulé dans un algorithme.
L'objet possède une valeur qui peut changer dans le temps dans l'algorithme qui l'utilise.
Schématisation : on peut représenter à l'aide d'une boîte (qui correspond à un moment de la
programmation à l'emplacement mémoire de l'ordi).
Contenu
(contenu qui correspond à la valeur
de l'objet)
Algo
4.
Une première instruction : l'affectation
Définition : c'est l'instruction qui permet d'associer une valeur à une variable. La valeur peut être une
valeur constante, ou une valeur calculée.
Symbole utilisé : <-Utilisation : nomVariable <-- valeur
Sens : La variable prend la valeur X
Ou : la valeur X est affectée à la variable
Nom d'une variable : chaîne de caractère alphanumérique.
Exemples :
prixConso, a, AB_40, xy, prix_Unite, montant_abonnement, titi, etc...
PrixConso <-- nombreUnite * prixUnite
Remarque : dans un lexique, définir a comme variable ne signifie pas que a contient une valeur.
Notion de constante : On peut associer un nom à une valeur constante et manipuler cette valeur
uniquement à travers son nom dans l'algorithme.
Exemple : On peut associer le nom pi à la valeur 3.14
5.
Notion de type
La forme du contenu d'une variable est définie par le concept du type.
À toute variable est associé un type.
Les types permettent de définir :
 L'ensemble des valeurs que pourra prendre la variable (domaine de définition)
 L'ensemble des opérations applicables à la variable
 La forme des représentations (ou "codage") en mémoire d'ordinateur
Les types simples :
 Entiers
 Réels
 Caractère
 Chaîne
Algo
Dans un lexique d'algorithme, la définition d'un objet se fera comme suit :
nomVariable (type);commentaire
nomConstante (cste/type = valeur);commentaire
6.
Opération de communication avec l'extérieur
But : permettre de :
 Récupérer les données (par exemple à partir d'un clavier) => "lire"
 Afficher les résultats (par exemple sur un écran) => "écrire"
Lire
écrire
Mémoire centrale
(saisir, entrer)
(afficher, visualiser)
affectation
Lire : modifie la contenu d'une variable
Écrire : ne modifie pas le contenu de la variable
syntaxe :
Lire (a)
Lire (a, b)
Écrire (a)
Écrire (a, b)
III. Définition conditionnelles
Ou primitive conditionnelles.
Exemple : calcul de la paie (très simplifiée)
Données : nom, nombre d'heures œuvrées, salaire horaire, taux de retenue, montant du plafond,
prime.
Résultat : nom, salaire brut, salaire net.
Analyse par le raisonnement
Algo
(RSS = retenue sécurité sociale)
Algo
Facture
Écrire(nom, salaireBrut, salaireNet)
Ord
7
Lire (nom)
1
salaireBrut <-- nombreHeures * salaireHoraire
4
lire (nombreHeures, salaireHoraire)
2
salaireNet <-- salaireBrut -RSS + prime
6
Si salaireBrut ≤ plafond alors
| RSS <-- salaireBrut * tauxDeRetenue1
Sinon
| RSS <--(salaireBrut - plafond) *
| tauxDeRetenue2 + plafond *
| tauxDeRetenue1
Fin si
5
lire (prime, plafond)
3
Syntaxe :
 Conditionnelle simple :
si condition vérifiée alors
| actions
fin si
Exemple :
si a > 8 alors
| écrire (b)
fin si

Conditionnelle avec alternative :
si condition vérifiée alors
| actions 1
Sinon
| actions 2
fin si
Lexique
Algo

Conditionnelle avec alternative multiple :
si condition vérifiée alors
| actions 1
Sinon si condition2 vérifiée alors
| actions 2
Sinon si condition3 vérifiée alors
| actions 3
Sinon
| actions 4
fin si
ou :
si condition vérifiée alors
| actions 1
sinon
|
si condition2 vérifiée alors
|
| actions 2
|
sinon
|
|
si condition3 vérifiée alors
|
|
| actions 3
|
|
fin si
|
fin si
fin si
IV. Le choix multiple
Si une variable peut prendre différentes valeurs et que chaque valeur détermine un traitement
différent, on utilise l'instruction de choix multiple pour définir le traitement à effectuer
Exemple : soit a la variable de typer entier :



a = 2 => on fait le traitement 1
a = {2, 3} => on fait le traitement 2
a = [6; 20] => on fait le traitement 3
Algo
On l'exprime comme suit :
cas a parmi
| 2 : écrire(...)
| 3,4 : b <-- 8
| 6,... 20 : lire (b)
fin cas
Syntaxe :
cas variable parmi
| valeur 1 : traitement 1
| valeur 2 : traitement 2
| valeur 3 : traitement 3
| valeur 5 : traitement 4
| autre : traitement n
fin cas
Remarque : sa variable doit être de type scalaire.
Téléchargement