next up previous contents
Next: Les langages de programmation Up: Introduction Previous: Qu'est-ce qu'un programme?

Resolution de problèmes en informatique


Enoncé (flou)  
   
$\downarrow$ Analyse
   

 
Mod. données
+
Algorithme
 

 
   
$\downarrow$ Codage
   

 
Programme
 

 
   
$\downarrow$ Mise au point
   

Solution

 


Analyse
définition précise du problème, choix du modèle des données, choix de la méthode de resolution.
Codage
Traduction en langage de programmation.
Mise au point
passage sur machine avec tests et correction d'erreurs.


Une méthode d'Analyse de Problèmes (première ébauche)


1.
Déterminer le problème à résoudre:
(a)
quelles sont les entrées et quelle est leur nature?
(b)
quelles sont les sorties pour chaque cas des entrées?

2.
Déterminer la méthode:
(a)
comment modéliser les données (d'entrée, sortie, intermédiares)?
(b)
quelles sont les sous-tâches?
(c)
exprimer sous-forme d'algorithme la manière d'obtenir le résultat final à partir des résultats des sous-tâches.
(d)
détailler les sous-tâches.

3.
Correction, complétude et lisibilite
(a)
A-t-on bien prevu tous les cas des entrées et sorties?
(b)
Obtient-on dans chaque cas ce que l'on voulait calculer?
(c)
Avons nous introduit suffisamment d'abstraction dans l'algorithme?
(d)
Notre algorithme est-il comprehensible par quelqu'un d'autre?

Exemple 1:

Enoncé du problème:

Calculer la somme des carrés de deux nombre entiers donnés.

Analyse:

1.
Déterminer le problème à résoudre:
(a)
les entrées et leur nature $\Rightarrow$ deux nombres entiers x,y
(b)
les sorties pour chaque cas des entrées $\Rightarrow$ un entier z tel que z= x2 + y2

2.
Déterminer la méthode:
(a)
modélisation des données: x,y, z modélisés par des entiers.
(b)
les sous-calculs
  • x2
  • y2

(c)
l'algorithme
1.
calculer a = x2
2.
calculer b = y2
3.
calculer z = a + b
4.
le résultat final est z

(d)
L'algorithme est-il assez détaillé? Souvent, les langages de programmation ne possèdent pas d'opération d'exponentiation. Détail des sous-calculs:
  • x2 = x*x
  • y2 = y*y


Données + algorithme:



Un codage possible en Ada

with Ada.Text_IO; with Ada.Integer_Text_IO;
use  Ada.Text_IO; use Ada.Integer_Text_IO;

procedure somme_carre1 is
  x: constant integer :=3;
  y: constant integer :=4;
  a,b,z: integer;
 begin
   a:= x*x;
   b:= y*y;
   z:= a+b; 
   put("Le resultat final est ");
   put(z);
 end



next up previous contents
Next: Les langages de programmation Up: Introduction Previous: Qu'est-ce qu'un programme?
Maria-Viginia Aponte
2001-11-21