Conception d’un programme – [2.3]

 

1. L’algorithmique – concepts de base {p193/194}

 

1.1 Qu’est ce qu’un algorithme

 

 Définition  : L’algorithme est l’énoncé, dans une syntaxe particulière, de la décomposition en différentes étapes élémentaires d’un problème à résoudre.

 

Syntaxe générale d’un algorithme :

ALGO nom de l’algorithme

CONSTANTES

            Liste des constantes

VARIABLES

            Liste des variables

DEBUT

            Liste des instructions

FIN

 

1.2 Les variables et les types

 

 Définition  : Les variable sont les données nécessaires à l’algorithme

 

Les Types des variables :

o       REEL

o       ENTIER

o       CHAINE DE CARACTERES

o       CARACTERE

 

Syntaxe de déclaration d’une variable :

VARIABLES

            Nom-de-variable : type-de-variable

            Nom-de-variable1, Nom-de-variable2 : type-de-ces-deux-variables

 

 Exemples :

VARIABLES

            PRIX, MONTANT : REEL

            QUANTITE : ENTIER

            NOM : CHAINE DE CARACTERES

 

1.3 Quelques instructions élémentaires

 

§         AFFICHER  "Message-qui-doit-s’afficher-à-l’écran"         {affichage d’un message}

§         AFFICHER  Nom-de-variable                                                           {affichage d’une variable}

§         SAISIR Nom-de-variable                                                        {saisie d’une variable}

§         Nom-de-variable ß Valeur-ou-bien-calcul                         {affectation d’un variable}

 

Existe aussi les combinaisons suivantes :

 

§         AFFICHER  "Message-qui-doit-s’afficher-à-l’écran",  Nom-de-variable           

§         SAISIR  "Message-qui-doit-s’afficher-à-l’écran",  Nom-de-variable                                         


1.4 Exemple récapitulatif :

 

 Exemple :

ALGO Calcul du montant TTC (avec réduction commerciale et financière)

CONSTANTES

            TVA = 1.196

VARIABLES

            MONTANT     : REEL

            TAUX_RC     : ENTIER

            TAUX_RF      : ENTIER

            NET_COM    : REEL

            NET_FIN        : REEL

            TOTAL_TTC : REEL

DEBUT

            AFFICHER   "Entrez le Montant brut"      

            SAISIR          MONTANT

 

            AFFICHER   "ENTREZ LE TAUX DE LA REDUCTION COMMERCIALE EN %"

            SAISIR          TAUX_RC

 

            AFFICHER   "ENTREZ LE TAUX DE LA REDUCTION FINACIERE EN %"

            SAISIR          TAUX_RF

 

            NET_COM    ß MONTANT * ( 100 – TAUX_RC ) / 100

            NET_FIN        ß NET_COM * ( 100 – TAUX_RF ) / 100

            TOTAL_TTC ß NET_FIN * TVA

 

            AFFICHER   "Le prix TTC est de :", TOTAL_TTC

FIN

 

 

La structure générale d’un algorithme se compose en général de 3 parties :

 

 

 Remarque  : Il faut bien faire la différence entre l’instruction AFFICHER qui permet d’afficher à l’écran la valeur d’une variable et l’instruction SAISIR qui permet de saisir au clavier une valeur que l’on désire donner à une variable.

L’instruction AFFICHER concerne les variables de sorties alors que SAISIR concerne les variables d’entrées.

 

          La moulinette algorithmique

 

 

 

 

 

 

 

 

 

 

 

 



2. L’algorithmique – Structure alternative {p197/199}

 

2.1 Syntaxe de la structure alternative : (le « SI »)

 

(1)   avec une clause « SINON »

 

SI   test

ALORS

            instructions-à-executer-si-test-vrai

SINON

            instructions-à-executer-si-test-faux

FIN SI

 

(2)   sans clause « SINON »

 

la clause « SINON » est facultative et ne doit être utilisée que si elle est utile :

 

SI   test

ALORS

            instructions-à-executer-si-test-vrai

FIN SI

 

Exemple :

Calculer le montant TTC d’une facture  avec remise commerciale de 5% si le montant brut est supérieur à 2000 €. La TVA est de 19,6%. Vous afficherez le montant de la remise HT et le net à payer TTC.

 

ALGO Calcul du montant TTC avec remise de 5% si montant brut > 2000 € HT

CONSTANTES

            TVA                = 1.196                     

            TAUX_RC     = 0.05

VARIABLES

            MONTANT     : REEL                                                         { le montant brut à saisir }

            REM_COM   : REEL                                                         { le montant de la remise }

            NET_COM    : REEL                                                         { le net commercial }

            TOTAL_TTC : REEL                                                         { le net à payer }

DEBUT

            AFFICHER   "Entrez le Montant brut"      

            SAISIR          MONTANT

 

            SI  MONTANT > 2000

            ALORS

                        REM_COM   ß MONTANT * TAUX_RC

            SINON

                        REM_COM   ß 0

            FIN SI

 

            NET_COM    ß MONTANT – REM_COM

            TOTAL_TTC ß NET_COM * TVA

 

            AFFICHER   "Le montant de la remise HT est de :", REM_COM

            AFFICHER   "Le Net à payer TTC est de :", TOTAL_TTC

FIN


2.2 Structure alternative imbriquée : le cas du « ou bien » (forme « SINON SI »)

 

SI   premier-test

ALORS

            instructions-à-executer-si-le-premier-test-est-vrai

SINON

            SI   deuxième-test

            ALORS

                        instructions-à-executer-si-le-deuxième-test-est-vrai

            SINON

                        instructions-à-executer-si-les-deux-tests-sont-faux

            FIN SI

FIN SI

 

 Exemple :

Calculer le montant TTC d’une facture avec remise commerciale de 5% si le montant brut est supérieur à 2000 € ou bien remise commerciale de 2% si le montant brut est supérieur à 1000 €. La TVA est de 19,6%. Vous afficherez le montant de la remise HT et le net à payer TTC.

 

ALGO Calcul du montant TTC (remise 5% si montant > 2000 ou 2% si montant > 1000)

CONSTANTES

            TVA                = 1.196                     

            TAUX_RC1  = 0.05                                                { taux remise si montant > 2000 }

            TAUX_RC2  = 0.02                                                { taux remise si montant > 1000 }

VARIABLES

            MONTANT     : REEL                                                         { le montant brut à saisir }

            REM_COM   : REEL                                                         { le montant de la remise }

            NET_COM    : REEL                                                         { le net commercial }

            TOTAL_TTC : REEL                                                         { le net à payer }

DEBUT

            AFFICHER   "Entrez le Montant brut"      

            SAISIR          MONTANT

 

            SI  MONTANT > 2000

            ALORS

                        REM_COM   ß MONTANT * TAUX_RC1

            SINON

                        SI  MONTANT > 1000

                        ALORS

                                   REM_COM   ß MONTANT * TAUX_RC2

                        SINON

                                   REM_COM   ß 0

                        FIN SI

            FIN SI

 

            NET_COM    ß MONTANT – REM_COM

            TOTAL_TTC ß NET_COM * TVA

 

            AFFICHER   "Le montant de la remise HT est de :", REM_COM

            AFFICHER   "Le Net à payer TTC est de :", TOTAL_TTC

FIN


2.3 Structure alternative imbriquée : le cas du « et » (forme « ALORS SI ») :

 

SI   premier-test

ALORS

            SI   deuxième-test

            ALORS

                        instructions-à-executer-si-les-deux-tests-sont-vrais

            SINON

                        instructions-à-executer-si-premier-test-vrai-et-deuxième-test-faux

            FIN SI

SINON

            instructions-à-executer-si-le-premier-test-est-faux

FIN SI

 

 Exemple :

Calculer le montant TTC d’une facture  avec remise commerciale de 5% si le montant brut est supérieur à 2000 € et si le délai de règlement prévu est inférieur à 30 jours. La TVA est de 19,6%. Vous afficherez le montant de la remise HT et le net à payer TTC.

 

ALGO Calcul du montant TTC (remise 5% si montant > 2000 et délai de règlement < 30)

CONSTANTES

            TVA                = 1.196                     

            TAUX_RC     = 0.05                                                { taux remise si montant > 2000 }

VARIABLES

            MONTANT     : REEL                                                         { le montant brut à saisir }

            DELAI                        : ENTIER                                                     { délai de règlement prévu }

            REM_COM   : REEL                                                         { le montant de la remise }

            NET_COM    : REEL                                                         { le net commercial }

            TOTAL_TTC : REEL                                                         { le net à payer }

DEBUT

            AFFICHER   "Entrez le Montant brut"      

            SAISIR          MONTANT

            AFFICHER   "Entrez le Délai de règlement "     

            SAISIR          DELAI

 

            SI  MONTANT > 2000

            ALORS

                        SI  DELAI < 30

                        ALORS

                                   REM_COM   ß MONTANT * TAUX_RC

                        SINON

                                   REM_COM   ß 0

                        FIN SI

            SINON

                        REM_COM   ß 0

            FIN SI

 

            NET_COM    ß MONTANT – REM_COM

            TOTAL_TTC ß NET_COM * TVA

 

            AFFICHER   "Le montant de la remise HT est de :", REM_COM

            AFFICHER   "Le Net à payer TTC est de :", TOTAL_TTC

FIN

3. L’algorithmique – Structure Itératives et tableaux {p203/204} et {p213/214}

 

3.1 Syntaxe de trois structures itératives (boucles de répétition) :

 

(1)   La boucle « TANT QUE … FIN TANT QUE »

 

Les instructions contenues dans la boucle sont répétées 0 ou plusieurs fois tant que le test est vrai (donc jusqu'à ce que le test soit faux)

 

TANT QUE   test

            instructions-à-répeter-tant-que-le-test-est-vrai

 

FIN TANT QUE

 

(2)   La Boucle « REPETER … JUSQU'A » :

 

Les instructions contenues dans la boucle sont répétées 1 ou plusieurs fois jusqu’à ce que le test soit vrai (donc tant que le test est faux)

 

REPETER

            instructions-à-répeter-jusqu’à-ce-que-le-test-soit-vrai

 

JUSQU'A   test

 

(3)   La Boucle « POUR … FIN POUR » :

 

La variable débute à la valeur de départ et est incrémentée à chaque nouveau tour de boucle jusqu'à ce qu’elle atteigne la valeur d’arrivée.

 

POUR variable DE valeur-départ  A valeur-arrivée

            instructions-à-répeter

 

FIN POUR

 

3.2 Les tableaux de données :

 

Un tableau est une organisation de données qui permet de créer une série de variables de même type auxquelles on accédera grâce à un numéro appelé indice (ou index)

 

(1) Syntaxe de la déclaration d’un tableau

 

VARIABLE

            Nom-du-tableau[ taille-du-tableau ] : Tableau de type

 

            Exemple : déclaration d’un tableau de 10 entiers dénommé « Table » :

VARIABLE

            Table[ 10 ] : Tableau d’ ENTIER

 

(2) Accès aux éléments contenus dans les cases du tableau

 

On utilise un indice pour indiquer entre les deux crochets du tableau le numéro de la case à laquelle on désire accéder. Par exemple, l’instruction :

 

            Table[ 1 ] ß 15

 

permet de « remplir » la première case du tableau avec la valeur 15.

 

1

2

3

4

5

6

7

8

9

10

15

 

 

 

 

 

 

 

 

Table[ 1 ]                                 Table[ 2 ]                             Table[ 10 ]

Exemples :

Calculer la somme des 20 premiers nombres : 1 + 2 + 3 + 4 + 5 + … + 20

 

ALGO Somme des 20 premiers nombres avec un TANT QUE

VARIABLES

            SOMME         : ENTIER                                         { pour calculer la somme }

            CPT                : ENTIER                                         { pour compter de 1 à 20 }

DEBUT

            SOMME   ß 0

            CPT ß 1

            TANT QUE  CPT  <=  20         

                        SOMME ß SOMME + CPT

                        CPT ß CPT + 1

FIN TANT QUE

            AFFICHER   "Résultat = ", SOMME        

FIN

 

ALGO Somme des 20 premiers nombres avec un POUR

VARIABLES

            SOMME         : ENTIER                                         { pour calculer la somme }

            CPT                : ENTIER                                         { pour compter de 1 à 20 }

DEBUT

            SOMME   ß 0

            POUR  CPT  DE  1  A  20       

                        SOMME ß SOMME + CPT

FIN POUR

            AFFICHER   "Résultat = ", SOMME        

FIN

 

Exemple :

Entrez une série de notes sur 20 jusqu'à une valeur égale à -1 qui servira de test d’arrêt et afficher la moyenne des notes saisies

 

ALGO Calcul de la moyenne

VARIABLES

            NOTE             : ENTIER                                         { pour saisir les notes }

            SOMME         : ENTIER                                         { pour sommer les notes }

            CPT                : ENTIER                                         { pour compter les notes saisies }

DEBUT

            SOMME   ß 0

            CPT          ß 0

            AFFICHER   "Entrez une note ( entrez –1 pour arrêter )"         

            SAISIR          NOTE

TANT QUE   NOTE    -1

            SOMME   ß SOMME + NOTE

            CPT          ß CPT + 1

                        AFFICHER   "Entrez une note ( entrez –1 pour arrêter )"         

                        SAISIR          NOTE

            FIN TANT QUE

            SI CPT    0

            ALORS

                        AFFICHER "La moyenne des ", CPT, " notes est : ", SOMME / CPT

            FIN SI

FIN

 

Exemple :

Entrez dans un tableau une série de notes sur 20 jusqu'à une valeur égale à -1 qui servira de test d’arrêt puis calculer la somme, la moyenne, le maximum et le minimum des notes saisies. On considère qu’il y a forcement moins de 100 notes en tout.

 

ALGO Calcul de la somme, moyenne, maximum, minimum

VARIABLES

            NOTE             : ENTIER                                         { pour saisir les notes une à une }

            Table[ 100 ]   : Tableau d’ENTIER                      { pour ranger les notes saisies }

            CPT                : ENTIER                                         { pour compter les notes saisies }

            N                     : ENTIER                                         { pour parcourir le tableau }

            SOMME         : ENTIER                                         { pour sommer les notes }

            MIN                 : ENTIER                                         { pour stocker le minimum }

            MAX               : ENTIER                                         { pour stocker le maximum }

DEBUT

            CPT          ß 0

            N               ß 1

            AFFICHER   "Entrez une note ( entrez –1 pour arrêter )"         

            SAISIR          NOTE

 

TANT QUE   NOTE    -1

            Table[ N ] ß NOTE

            CPT          ß CPT + 1

            N               ß N + 1

                        AFFICHER   "Entrez une note ( entrez –1 pour arrêter )"         

                        SAISIR          NOTE

            FIN TANT QUE

           

            SOMME ß Table[ 1 ]

            MAX       ß Table[ 1 ]

            MIN        ß Table[ 1 ]

            POUR  N  DE  2  A  CPT

            SOMME ß SOMME + Table[ N ]

 

            SI  MAX  <  Table[ N ]

            ALORS

                        MAX ß Table[ N ]

            FIN SI

 

            SI  MIN  >  Table[ N ]

            ALORS

                        MIN ß Table[ N ]

            FIN SI

 

FIN POUR

 

AFFICHER "La somme des ", CPT, " notes est : ", SOMME

AFFICHER "Le maximum des ", CPT, " notes est : ", MAX

AFFICHER "Le minimum des ", CPT, " notes est : ", MIN

 

SI CPT    0

            ALORS

                        AFFICHER "La moyenne des ", CPT, " notes est : ", SOMME / CPT

            FIN SI

FIN