Banière du site

[koala01.free.fr]->Tutoriaux->Principes de Programmation ->Un premier nassichneiderman

Image d'imprimante   image d'enveloppe

11.1 Un premier nassichneiderman

Créons un nassichneiderman en remplacement du flowchart modifié de la page mon premier flowchart et voyons le résultat .

La création du nassichneiderman

Maintenant que nous en savons suffisemment sur le nassichneideerman, nous pouvons essayer de voir ce que donnerait l'algoritme du programme de calcul de superficie d'un disque en nassichneiderman.

fleche haut

11.2 Rappel de l'étude préliminaire

Pour nous éviter de retourner vingt fois à la page sur laquelle nous avons réétudié l'application, il est sans nul doute intéressant d'en faire la récapitulation ici:

fleche haut

11.3 Le nassichneiderman adapté

En nassichneiderman, l'une des solutions (hé oui, il y a toujours plusieurs solutions à un problème donné) serait donnée par ceci:

Représentation du nassichneiderman de l'application de calcul de surface d'un disque

Représentation du nassichneiderman de l'application de calcul de surface d'un disque

fleche haut

11.4 …Le tableau des variables correspondant

Tableau des variables du premier nassichneiderman
Variable Type Description
touche caractère Variable récupérant l'aquisition non bufferisée du clavier
chaine chaine Variable temporaire gardant en mémoire toutes les touches enfoncées
Rayon entier Variable gardant en mémoire le rayon du disque
Surface réel Variable gardant en mémoire la superficie du disque calculée

fleche haut

11.5 …et la traduction en code

Il ne reste plus maintenant qu'à traduire notre merveilleux nassichneiderman en langage de programmation

Cette traduction est excessivement intuitive (et certains en diront même qu'il s'agit de la partie la plus embêtante).

Voici ce que ca donne:

vide Principale(vide)
{
    faire
    {
        affiche "Introduisez le rayon du dique "|
        chaine=""|
        faire
        {
            clavier touche|
            si (Est_num(touche))
            {
				chaine=chaine+touche|
            }
        } jusque(pas touche=13)

        Rayon=Chaine_A_Num(chaine)|
        Surface=Rayon*Rayon*3.1415|
        Affiche "La superficie du disque est de " Surface|
        Affiche "Un autre calcul(o/n)?"|
        faire
        {
            si (touche≠"o" et
                touche≠"O" et
                touche≠"n" et
                touche≠"N")
            {
                Affiche "Veuillez choisir O ou N"|
            }				
        }jusque (pas (touche="o" ou touche="O" ou 
                      touche="n" ou touche="N"))

    }jusque (pas (touche="n" ou touche="N")
}

Le code obtenu est donc non seulement plus compact, mais gagne aussi en lisibilité du fait que le début et la fin de chaque boucle est clairement défini (l'indentation du code aidant énormément).

fleche haut

11.6 Une dernière évolution potentielle

Nous voyons, à la lecture du code, que l'on fait appel deux fois à un code très similaire pour l'aquisition du rayon d'une part et celle du choix d'effectuer un autre code de l'autre…

Bien que l'exemple ne s'y prête pas forcément, il serait possible d'utiliser un sous-programme qui se charge de l'aquisition du clavier, mais pour cela, il faut connaître un peu de théorie sur les routines.

Mais avant cela, je voudrais un peu m'étendre sur la déclaration des chaines des caractères, qui ne sont en définitive que des tableaux.   C'est ce dont parle la page suivante.

image d'imprimante   image de mail   fleche haut

Evaluation donnée par les visiteurs
Cette page a été évaluée 1 fois et a obtenu une moyenne de incompréhensible
Mon appréciation sur la compréhensibilitéde cette page est:
  • incompréhensible
  • mal expliquée
  • compréhensible, sans plus
  • bien expliquée
  • très bien expliquée

fleche haut

[koala01.free.fr]->Tutoriaux->Principes de Programmation ->Un premier nassichneiderman

Copyright (©) 2005 (Philippe Dunski)

Ce cours est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).

Ce cours est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.

Cependant, l'auteur apprécierait grandement que vous lui fassiez part de toute modification apportée à son contnu

Vous pouvez le contacter par mail à l'adresse koala01@free.fr

Vous pouvez trouver une adaptation française de la licence GNU/GPL à l'URL http://www.linux-france.org/article/these/gpl.html