SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Chapitre 1

Les éléments de base d’un algorithme

1.1 Introduction
1.1.1 Définition d’un algorithme
    Un algorithmeest une séquence d’opérations visant à la résolution d’un problème en un temps fini.
    On eut aussi adopter la définition suivante :
    un algorithmeest la description de la méthode de résolution d’un problème quelconque en utilisant des instruc-
tions élémentaires. Ces instructions deviennent compréhensible pour l’ordinateur lors de la traduction de l’algorith-
meen un programme.


1.1.2 Algorithme et programmation
    Tout problème à programmer doit être résolu, d’abord sous forme d’algorithme, puis converti en programme dans
un langage de programmation utilisé.
Un programme est un enchainement d’instruction, écrit dans un langage de programmation, exécutées par un ordi-
nateur, permettant de traiter un problème et de renvoyer des résultats. Il représente la traduction d’un algorithmeà
l’aide d’un langage de programmation.


1.2 Structure générale d’un algorithme
     Un algorithmeest constitué de trois parties principales :
• l’en-tête : cette partie sert à donner un nom à l’algorithme. Elle est précédée par le mot Algorithme ;
     • la partie déclarative : dans cette partie, on déclare les différents objets que lalgorithmeutilise (constantes, va-
riables, etc.) ;
     • le corps de l’algorithme : cette partie contient les instructions de l’algorithme. Elle est délimitée par les mots
début et fin.




1.3 Les variables et les constantes
1.3.1 Déclaration des variables
   La partie déclarative consiste à énumérer toutes les variables dont on aura besoin au cours de l’algorithme.
   Chaque déclaration doit comporter le nom de la variable (identificateur) et son type.

   Syntaxe : Variable identificateur : type

   Exemples :
   Variable volume : réel
Variables a,b,c,d :entiers
Variable Nom_pr enom : chaîne
Variable présent : logique



                                                            1
2                                                           CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHME

Identificateur : Un identificateur est le nom donné à une variable, une fonction, etc. Ce nom doit obligatoirement
commencer par une lettre suivie d’une suite de lettres et de chiffres et il ne doit pas contenir d’espace.



types de données : Le type d’une variable est l’ensemble des valeurs qu’elle peut prendre .
Par exemple, une variable de type booléen (logique) peut prendre les valeurs Vrai ou Faux.
    Les différents types utilisé en algorithmique :
• Type entier : sert à manipuler les nombres entiers positifs ou négatifs. Par exemple 2, -10, etc.
• Type Réel : quant à lui sert à manipuler les nombres à virgules.
• Type Caractère : permet de manipuler des caractères alphabétiques et numériques.
Par exemple : ’a’, ’B’ ’ ?’, ’14’, etc.
• Type chaîne : sert à manipuler des chaines de caractères.
• Type Logique (Booléen) : utilise les expression logiques, Vrai ou faux. Faire tableau page 14



1.3.2 Les constantes

  Comme pour les variable, à une constante correspond un emplacement mémoire réservé auquel on accède par le
nom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du programme.
   Syntaxe : Constante NOM_ DE LA CONSTANTE = valeur
Exemple : Constante PI=3.14



1.4 Les instructions de base

   Une instruction est une action élémentaire commandant à la machine un calcul, ou une communication avec un
périphérique d’entrée ou de sortie. Les instructions de base sont :



1.4.1 L’instruction d’affectation

        L’affectation permet d’affecter une valeur à une variable. Elle est symbolisée en algorithmique par : " ←− "

Syntaxe :

      Variable " ←− " Expression
Expression peut être soit :
• identificateur ;
• constante ;
• expression arithmétique ;
• expression logique.
Sémantique :
Une affectation peut être définie en deux étapes :
• évaluation de l’expression qui se trouve dans la partie droite de l’affectation ;
• placement de cette valeur dans la variable.
exemple :

    0     Algorithme          Calcul
    1     Variables A,B,C,D   : entier
    2     Début
    3          A ←− 10
    4           B ←− 30
    5          C ←− A+B
    6          D ←− C*A
    7     Fin

Note : les lignes sont numérotées pour faciliter l’explication.
Nous pouvons expliquer ce qui ce passe par le tableau suivant :
1.4. LES INSTRUCTIONS DE BASE                                                                                                 3

 Variable                                         Numéro de lignes
                1             2              3            4               5              6
 A                                           10           10              10             10
                ?             ?
 B                                                         30             30             30
                ?             ?              ?
 C                                                                        40             40
                ?             ?              ?             ?
 D                                                                                       400
                ?             ?              ?             ?              ?

Remarque :
   • Les variables numériques ne sont pas forcément initialisées à zéro. Leur valeur peut être n’importe quoi. D’où la
présence du point d’interrogation avant qu’une première valeur ne soit affectée à la variable.

• En faisant le tableau précédent on dit qu’on a fait la trace de l’algorithme. Exemple :

 0    Algorithme            Logique
 1    Variables A,B,C       : Booléen
 2    Début
 3         A ←− Vrai
 4          B ←− Faux
 5         C ←− A et B
 6    Fin

     variable                                Numéro de ligne
                    1             2            3            4                  5
     A                                         Vrai         Vrai               Vrai
     B                                                      Faux               Faux
     C                                                                         Faux

1.4.2 L’instruction d’entrée
    L’instruction d’entrée ou de lecture donne la main à l’utilisateur pour saisir une donnée au clavier. La valeur saisie
sera affectée à une variable.

Syntaxe :

Lire (identificateur)
Exemples :

Lire(A)
Lire (A,B,C)
L’instruction Lire(A) permet à l’utilisateur de saisir une valeur au clavier, cette valeur est affectée à la variable A.
    Remarque :

Lorsque le programme rencontre cette instruction, l’exécution s’interrompt et attend que l’utilisateur rentre une va-
leur. Cette valeur est rangée en mémoire dans la variable désignée.


1.4.3 L’instruction de sortie
    Avant de lire une variable, il est conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit
frapper au clavier (sinon, l’utilisateur passe son temps à se demander ce que l’ordinateur attend de lui).
    L’instruction de sortie (d’écriture) permet d’afficher des informations à l’écran.

Syntaxe ;

Écrire(expression)
Expression peut être une valeur, un résultat, un message, le contenu d’une variable, etc.

Exemple 1 :

Écrire(A)
4                                                          CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHME

Cette instruction permet d’afficher à l’écran la valeur de la variable A.
Exemple 2 :

A ←− 2
Écrire("la valeur de A est = ",A)
La dernière instruction affiche à l’écran : la valeur de A est = 2

Exercice : CalculPTTC

Écrire un algorithme qui permet de saisir le prix HT (PHT) d’un article et de calculer son prix total TTC (PTTC),
TVA=20%

Solution :


     0   Algorithme Calcul_PTTC
     1   Variables PHT, PTTC : réel
     2   Constante TVA=0.2
     3   Début
     4        Écrire("Entrez le prix hors taxes :")
     5         Lire(PHT)
     6         PTTC←− PHT*1.2
     7        Écrire(" Le prix TTC est ", PTTC)
     8   Fin

     Numéro de ligne      Explication
           0              Déclare un algorithmedont le nom est calcul_PTTC
           1              Déclare les différentes variables utilisées par l-algorithme
           2              Déclare la constante TVA
           3              Marque le début des traitements effectués par l’algorithme
           4              Affiche à l’écran le message : Entrez le prix hors taxe :
           5              Permet à l’utilisateur de saisir une valeur au clavier qui sera affectée à la vairable PHT
           6              Calcule le prix et affecte le résultat à la variable PTTC
           7              Affiche le résultat à l’écran
           8              Marque la fin de l’algorithme


1.5 Les commentaires
   Lorsqu’un algorithme devient long, il est conseillé d’ajouter des lignes de commentaires dans l’algorithme, c’est-
à-dire des lignes qui servent à donner des indications des indications sur les instructions effectuées et d’expliquer le
fonctionnement du programme sans que le compilateur ne les prenne en ligne.
Chapitre 2

Les structures alternatives et répétitives

2.1 Les structures alternatives
2.1.1 Introduction
    Contrairement au traitement séquentiel, la structure alternative ou conditionnelle permet d’exécuter ou non d’ins-
tructions selon la valeur d’une condition.


2.1.2 La structure Si . . . Alors . . . Sinon . . . FinSi
   Syntaxe :

 Si condition Alors
   Instruction(s) 1
 Sinon
   Instruction(s) 2
 FinSi

Une condition est une expression logique ou une variable logique évalué à Vrai ou Faux.
La condition est évaluée. Si elle est vraie, la série d’instructions 1 est exécutée et l’ensemble d’instructions 2 est ignoré,
la machine sautera directement à la première instruction située après le FinSi.
De même, au cas où la condition était fausse (avait comme valeur Faux), la machine saute directement à la première
ligne située après le Sinon et exécute l’ensemble d’instructions 2.

Exercice :

Écrire un algorithme qui affiche si un nombre entier saisi au clavier est pair ou impair.

Solution :

On dit qu’un nombre entier n est pair si le reste de la division entière de n par 2 est égal à zéro. Sinon il est impair.

 Algorithme Parité
 //déclaration des variables
 Variables n, r : réel
 Début
      Écrire("Entrez la valeurrde n :")
       Lire(n)
       //r est le reste de la division entière de n par 2
       r ←− n Mod 2
       si r= 1 Alors
          Écrire(" n est impair")
       Sinon
           Écrire(n, " est pair")
       FinSi
 Fin



                                                              5
6                                                    CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES

    Remarque : Présentation de l’algorithme ou du programme
Certaines partie de l’algorithmeou du code sont en retrait par rapport à d’autres, ce qu’on appelle l’indentation. Celle-
ci est très importante pour la lisibilité de lalgorithme. Elle montre rapidement le début et la fin de chaque instruction
alternative ou répétitive ainsi le début et la fin de l’algorithme.
De plus, pour faciliter la compréhension, toutes vos instructions doivent être commentées. Un développeur est sou-
vent amené à modifier un code, par conséquent, des commentaires de qualité rendent cette tache plus facile et plus
rapide.


      Note :

Certains problèmes exige de formuler des conditions qui ne peuvent pas être exprimées sous la forme simple exposée
ci-dessus.
Par exemple la condition " x appartient à l’intervalle [0, 5] est composée de deux conditions simples à savoir 0 ≤ x et
x ≤ 5, reliées par l’opérateur logique Et.

Exemple :

Écrire un algorithmequi teste si une note saisie au clavier est comprise entre 0 et 20.


       Algorithme TestNote
       //déclaration des variables
       Variable Note : réel
                Message : chaîne
       Début
            Écrire("Entrez la note :")
             Lire(Note)
             Si Note >= 0 et note <= 20 Alors
                Message ←− "La note " & Note & "est correcte"
             Sinon
                Message ←− "La note " & Note & "est incorrecte"
             FinSi
            Écrire (Message)
       Fin



      Exercice :

Écrire un algorithmequi demande deux nombres a et b à l’utilisateur et l’informe ensuite si le produit est nul, négatif
ou positif.

    Algorithme Signe_Produit
    //déclaration des variables
    Variables a,b : réel
    Début
         Écrire("Entrez les deux nombres a et b :")
          Lire(a,b)
          Si a=0 ou b=0 Alors
             Écrire "Le produit est nul "
          SinonSi (a<0 Et b <0) Ou (a>0 Et b >0) Alors
             Écrire ( "Le produit est positif")
          Sinon
             Ecrire (" Le produit est négatif")
         FinSi
    Fin

Remarque :

• Dans une condition composée utilisant à la fois des opérateurs Et et Ou, la présence de parenthèses à une influence
sur le résultat.
2.1. LES STRUCTURES ALTERNATIVES                                                                                         7

2.1.3 La structure Si . . . Alors . . . FinSi

     Cette structure est utilisée si on veut exécuter une instruction seulement si une condition est vraie et ne rien faire
si la condition est fausse.

Syntaxe :

               Si condition Alors
                   Instruction(s)
               FinSi


   Exemple :

Un magasin accorde à ses clients, une réduction de 5% pour les montants d’achats supérieurs à 150 euros .
Écrire un algorithmepermettant de saisir le prix total HT (PTHT) et de calculer le montant TTC (PTTC) en prenant
compte de la remise et de la TVA à 20
. Solution :
 Algorithme Calcul_ PTTC
 Constante TVA =0.2          //déclaration de la constante
 Variables PTHT, PTTC : réels         //déclaration des variables
 Début
     Écrire("Entrez le prix hors taxe :")
     Lire(PTHT)
     Si PTHT > 150 Alors
        PTHT ←− PTHT * .95
     FinSi
     PTTC ←− PTHT +(PTHT *TVA)
     Écrire("Le prix TTC est " , PTTC)
 Fin




2.1.4 La structure Si . . . Alors . . . SinonSi . . . Sinon . . . Finsi

   Syntaxe :

               Si condition 1 alors
                   Instruction 1
               SinonSi Condition 2 alors
                    Instruction 2
               SinonSi Condition 3
                    Instruction 3
                    ...
               Sinon
                    Instructions
               FinSi


    L’instruction qui sera exécutée est celle dont la condition est vraie. Si aucune condition n’est vérifiée, c’est l’ins-
truction qui suit le Sinon qui sera exécutée.


   Exemple :

Écrire un algorithmequi permet d’afficher le maximum parmi deux nombres saisis au clavier.

Solution :
8                                                    CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES

    Algorithme MAx
    Variables A, B : réels     //déclaration des variables
    Début
        Écrire("Entrez la valeur de A :")
        Lire(A)
        Écrire("Entrez la valeur de B :")
        Lire(B)
        Si A > B Alors
           Écrire("le maximum est " , A)
        SinonSi A=B alors
           Écrire("les deux nombres sont égaux " )
        Sinon
           Écrire("le maximum est " , B)
        Finsi
    Fin

Remarque :

Une structure conditionnelle peut contenir elle même une autre structure conditionnelle. Dans ce cas, les instructions
à exécuter après Alors et ou Sinon sont à leur tour, des instructions Si . . . Alors . . . Sinon.
Exemple :

Écrire un programme permettant de calculer des des allocations familiales sachant que le montant dépend du nombre
d’enfants à charge
– Si le nombre d’enfants est inférieur ou égal à 3 alors les allocations sont de 150 euros par enfant.
– Si le nombre est strictement supérieur à 3 et strictement inférieur à 6 alors les allocations sont de :
• 150 euros par enfant pour les 3 premiers ;
• 38 euros pour les suivants.
– Si le nombre d’enfants est strictement supérieur à 6 alors les allocations sont :
• 150 euros par enfant pour les 3 premiers ;
• 38 euros pour les 3 suivants.
• 0 euros par enfant pour les suivant.

      Solution :

    Algorithme Allocation_ familiale
    Variables NE, M : réels      //déclaration des variables
    /* NE : Nombre d’enfants
    M : montant des allocations */
    Début
        Écrire("Entrez le nombre d’enfants :")
        Lire(NE)
        Si NE<= 3 Alors
           M ←− NE * 150
        Sinon
           Si NE <= 6 alors
           M ←− 450 + (NE - 3)* 38
        Sinon
           M ←− 564
        Finsi
        Finsi
        Écrire("Le montant des allocations est ", M)
    Fin



2.1.5 Structure à choix multiples
    Cette structure conditionnelle permet de choisir le traitement à effectuer en fonction de la valeur ou dee l’inter-
valle de valeurs d’une variable ou d’une expression.
2.2. LES STRUCTURES RÉPÉTITIVES                                                                                           9

   Syntaxe :

                Selon sélecteur faire
                    Valeur 1 : action(s) 1
                    Valeur 2 : action(s) 2
                    Valeur 3 : action(s) 3
                    ...
                    Valeur n : action(s) n
                Sinon
                    action(s)
                FinSi

    Lorsque l’ordinateur rencontre cette instruction, il vérifie la valeur de la variables de sélection (sélecteur) et il la
compare aux différentes valeurs.
Les valeurs sont évaluées dans l’ordre, les unes après les autres , et dès qu’une de celles-ci est vérifiée l’action associée
est exécutée. On peut utiliser une instruction Sinon (facultative), dont l’action sera exécutée si aucune des valeur
évaluées n’est remplie.


   Exemple :

Écrire un programme permettant d’afficher le mois en toute lettre selon son numéro saisi au clavier.

   Solution :

 Algorithme Mois
 Variables N : entier          //déclaration des variables
 Début
     Écrire("Donnez le numéro du mois :")
     Lire(N)
     Selon N faire
        1 : Écrire ("Janvier ")
        2 : Écrire ("Février ")
        3 : Écrire (" Mars ")
        4 : Écrire (" Avril ")
        5 : Écrire (" Mai ")
        6 : Écrire (" Juin ")
        7 : Écrire (" Juillet ")
        8 : Écrire (" Aout ")
        9 : Écrire (" septembre")
        10 : Écrire ("Octobre ")
        11 : Écrire ("Novembre ")
        12 : Écrire (" Décembre ")
     Sinon
        Écrire("Le numéro saisi est incorrecte : ")
     FinSelon
 Fin




2.2 Les structures répétitives
2.2.1 Introduction
   Prenons le cas où l’utilisateur doit répondre par O (oui) ou par N (non).
Celui-ci risque de taper autre caractère, le programme peut soit "planter" par une erreur d’exécution soit se dérouler
normalement jusqu’au bout, tout en produisant des résultats erronés.
Pour palier à ce genre de problème, on peut mettre en place un contrôle de saisie pour vérifier si les données corres-
pondent à celles attendues.
On pourrait essayer avec un Si.
10                                                  CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES


      Algorithme Contrôle_ de_ saisie
      Variables Rep : Caractère         //déclaration des variables
      Début
          Écrire("Voulez vous une pause après une heure de cours ? ( O N)"
          Lire(Rep)
          Si Rep = ’O’ ET Rep = ’ N ’ Alors
             Écrire ("Erreur de saisie. Recommencez ")
             Lire (Rep)
          FinSi
      Fin

Cet algorithmerésout le problème si on se trompe une seule fois.
En cas d’une deuxième erreur, il faudrait rajouter un Si, et ainsi de suite à chaque erreur de saisie.
La solution adaptée à ce genre de situation serait d’utiliser ce qu’on appelle une structure répétitive.
Une structure répétitive, encore appelé boucle, est utilisée quand une instruction ou une liste d’instructions, doit être
répétée plusieurs fois.La répétition est soumise à une condition.


2.2.2 La boucle TantQue . . . Faire
     La boucle TantQue permet de répéter un traitement tant que la condition est vraie.


     Syntaxe :

                 TantQue condition faire
                     Instruction(s)
                 FinTantQue

    L’exécution de la boucle dépend de la valeur de la condition. Si elle est vraie, le programme exécute les instruc-
tions qui suivent, jusqu’à ce qu’il rencontre la linge FinTantQue. Il retourne ensuite sur la ligne du TantQue, procède
au même examen, et ainsi de suite.
La boucle ne s’arrête que lorsque la condition prend la valeur fausse, et dans ce cas le programme poursuit son exé-
cution après FinTantQue.

Exemple :

 Algorithme Contrôle_ de_ saisie
 Variables Rep : Caractère        //déclaration des variables
 Début
     Écrire("Voulez vous une pause après une heure de cours ? ( O N)")
     Lire(Rep)
     Tantque Rep = ’O’ ET Rep = ’N’ faire
        Écrire ("Erreur de saisie ")
        Écrire ("Voulez vous une pause après une heure de cours ? ( O N)" )
        Lire(Rep)
     FinTantQue
 Fin

     Remarque :

• Étant donné que la condition est évaluée avant la mise en ?uvre des instructions, ce qui est une sécurité, il est pos-
sible que celles-ci ne soient jamais exécutées.
• Si une structure TantQue dans laquelle la condition ne devient jamais fausse, le programme tourne dans un boucle
infinie et n’en sort plus.
Exemple de boucle infinie :


    Dans l’exemple suivant nous somme en présence d’une boucle infinie, l’ordinateur ne s’arrêtera jamais d’afficher
le message c’est une boucle infinie, car la variable I qui est testée dans la condition n’est jamais incrémentée.
2.2. LES STRUCTURES RÉPÉTITIVES                                                                                       11

   Exemple :

 Algorithme Boucle_ infinie
 I ←− 1
     Tantque I <= 10 faire
        Écrire ("C’est une boucle infinie ")
     FinTantQue

   Exercice :


                                                                                                            i=N
   Écrire un algorithmequi calcule la somme S des N premiers entiers naturels : S = 1 + 2 + 3 + ... + N =         i
                                                                                                            i=1


   Solution :

 Algorithme Somme
 Variables S,I,N : entier      //déclaration des variables
 Début
     Écrire("Entrez les valeur de N")
     Lire(N)
     S ←−0
     I ←−I + 1
     Tantque I<= N faire
        S ←−S + I
        I ←− I + 1
     FinTantQue
     Écrire("La somme des ", N, "premiers entiers est :", S)
 Fin




2.2.3 La boucle Pour . . . Faire
    La boucle bf Pour . . . Fiare permet de répéter une liste d’instruction un nombre déterminé de fois.
2.ex]
    Syntaxe :

                TantQue condition faire
                    Instruction(s)
                FinTantQue

Syntaxe :

                Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Faire
                    Instruction(s)
                Finpour

La variable compteur est de type entier. Elle est initialisée à la valeur initiale. Le compteur augmente sa valeur de un
automatiquement à chaque tour de boucle jusqu’à la valeur finale.
Pour chaque valeur prise par la variable compteur, la liste des instructions est exécutée.
Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sort
de la boucle.

   Exemple :

Les instructions suivantes :
 Pour k ←− 0 jusqu’à 10 faire
     Écrire ("7* ",k,"=", 7*k)
     Écrire ("")
 Finpour
12                                                   CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES

affiche à l’écran la table de multiplication de 7


     Exercice :


                                                                                                                i=10
     Écrire un algorithmequi calcule la somme S des 10 premiers entiers naturels : S = 1 + 2 + 3 + ... + 10 =          i
                                                                                                                i=1


     Solution :

 Algorithme Somme
 Variables S,I : Entiers    //déclaration des variables
 Début
     S ←−0
     Pour I ←− 0 jusqu’à 10 Faire// Compteur
        S ←−S + I
     FinPour
     Écrire("La somme des ", 10, "premiers entiers est :", S)
 Fin

     Remarques :

• Par défaut la variable compteur est incrémentée de 1 à chaque tour de boucle.
• pour modifier la valeur d’incrémentation, il suffit de rajouter le mot Pas (en anglais step) et la valeur de ce pas à la
boucle.
Syntaxe :

Syntaxe :

                  Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Pas ValeurPas Faire
                       Instruction(s)
                  Finpour
                  VI est la valeur initiale, et VF est la valeur finale

Exercice :

Écrire un algorithmequipermet de saisir un entier et qui calcule la somme S des entiers pairs compris entre zéro et ce
nombres :


     Solution :

 Algorithme Somme_ Paire
 Variables S, I, N : Entiers     //déclaration des variables
 Début
     Écrire(" Entrez la valeur de N : ")
     Lire( N)
     Pour I ←− 0 jusqu’à N Pas 2 Faire// Compteur
        S ←−S + I
     FinPour
     Écrire("La somme des nombres pairs est ;", S)
 Fin



2.2.4 La boucle Répéter . . . Jusqu’à
   Cette boucle sert une instruction jusqqu’à ce qu’une condition soit vraie.
Solution :

Cette boucle nr s’utilise en général que pour des menus, elle est dangereuse car il n’ y a pas de vérification de la condi-
tion avant d’y entrer.
2.2. LES STRUCTURES RÉPÉTITIVES                                                                                           13


   Syntaxe :

                Répéter
                    Instruction(s)
                Jusqu’à condition

La liste est exécutée, puis la condition est évaluée. Si elle est fausse, le corps de la boucle est exécuté à nouveau puis la
condition est réévaluée et si elle a la valeur vrai, le programme sort de la boucle et exécute l’instruction suit Jusqu’à.
Exemple :

En utilisant la boucle répéter . . . Jusqu’à, écrire un algorithmequi calcule la somme des N premiers nombres entiers.
On suppose que N est strictement positif.
Solution :

 Algorithme Somme
 Variables S, I, N : Entiers     //déclaration des variables
 Début
     Écrire(" Entrez une valeur strictement positive : ")
     Lire( N)
     S ←− 0
     I ←−1
     Répéter
        S ←− S + I
        I ←−1 + I
     Jusqu’à I >= N
     Écrire("La somme des nombres ", N, "premiers entiers est ;", S)
 Fin

Remarque :

• Les boucles ≪ Répéter ≫ et ≪ TantQue ≫ sont utilisée lorsqu’on ne sait pas au départ combien de fois il faudra
exécuter ces boucles.
• A la différence de la boucle ≪ Tantque ≫ , la boucle ≪ Répéter ≫ est exécuter au moins un fois.
• La condition d’arrêt de la boucle ≪ Répéter ≫ est la négation de la condition de poursuite de la boucle ≪ Tantque
≫.
• On utilise la boucle la boucle ≪ Pour ≫ quand on connait le nombre d’itérations à l’avance.
14   CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES
Chapitre 3

Les Tableaux

3.1 Introduction
    Imaginons que dans uns programmes, nous avons besoin d’un grand nombre de variables, il devient alors difficile
de donner un nom à chacune d’elles.
Exemple :

Écrire un algorithme permettant de saisir cinq notes et de les afficher après avoir multiplié toutes les notes par trois.
Solution :

 Algorithme Note
 Variables N1, N2, N3,N4,N5 : Réel          //déclaration des variables
 Début
     Écrire(" Entrez la valeur de la première note ")
     Lire( N1)
     Écrire(" Entrez la valeur de la deuxième note ")
     Lire( N2)
     Écrire(" Entrez la valeur de la troisième note ")
     Lire( N3)
     Écrire(" Entrez la valeur de la quatrième note ")
     Lire( N4)
     Écrire(" Entrez la valeur de la cinquième note ")
     Lire( N5)
     Écrire(" La note 1 multipliée par 3 est :" ; N1 *3)
     Écrire(" La note 2 multipliée par 3 est :" ; N2 *3)
     Écrire(" La note 3 multipliée par 3 est :" ; N3 *3)
     Écrire(" La note 4 multipliée par 3 est :" ; N4 *3)
     Écrire(" La note 5 multipliée par 3 est :" ; N5 *3)
 Fin

La même instruction se répète Cinq fois , imaginons que si l’on voudrait réaliser cet algorithme avec 50 notes, cela
deviendrait fastudieux.
Comme les variables ont des noms différents, on ne peut pas utiliser de boucle, ce qui allonge considérablement le
code et le rend très répétitif.
2.ex] Pour résoudre ce problème, il existe un type de données qui permet de définir plusieurs variables de même type.



3.2 Définition
   Un tableau est une suite d’éléments de même type. Il utilise plusieurs cases mémoire à l’aide d’un seul nom.
Comme toutes les cases portent le même nom, elles se différencient par un numéro ou un indice.
Nous pouvons représenter schématiquement un tableau nommé Note composée de cinq cases, dans la mémôire
comme suit :

 Note[1]          Note[2]          Note[3]           Note[4]          Note[5]
 12               14               13                11               17

                                                           15
16                                                                                        CHAPITRE 3. LES TABLEAUX


   Nous disposons alors de cinq variables. Pour les nommer, on indique le nom du tableau suivi de son indice entre
crochets ou entre parenthèses : La première s’appelle Note[1], la deuxième Note[2], etc. Jusqu’à la dernière N[5].
Note[4] représente le quatrième élément du tableau et vaut 11.



3.3 Tableau à une dimension
3.3.1 Déclaration
   La déclaration d’un tableau permet d’associer à un nom une zone mémoire composée d’un certain nombres de
cases de même type.
Syntaxe :

         Variable identificateur : tableau [indice_ min ... indice_ max] de type
         ou bien
         Variable identificateur : tableau [taille ] de type

Notes :
• Le premier élément d’un tableau porte l’indice zéro ou l’indice 1 selon les langages.
• La valeur d’un indice doit être un nombre entier.
• La valeur d’un indice doit être inférieur ou égale au nombre d’éléments du tableau. Par exemple, avec le tableau
tab[1 ... 20]. Ces expressions font référence à des éléments qui n’existent pas.
Exemple :

L’instruction suivante déclare un tableau de 30 éléments de type réel :

      Variables Note : tableaau[1 .. 20] de réels

Note : est le nom du tableau (identificateur).
1 : est l’indice du premier terme du tableau.
30 : est l’indice du dernier élément du tableau.
Exercice :

Déclaer deux tableaux només A et B composé chacun de 10 éléments de type chaine :


     Solution :

 Variables A, B : tableau[1.. 10] de chaîne

Remarque :

• Lorsqu’on déclare un tableau, on déclare aussi de façon implicite toutes les variables indicées qui le constituent.


3.3.2 Utilisation
    Les éléments d’un tableau sont des variables indicées qui s’utilisent exactement comme n’importe quelle autre
variable classique. Elle peuvent faire l’objet d’une affectation, elles peuvent figurer dans une expression arithmétique,
dans une comparaison, etc.
L’utilisation de ces éléments se fait en suite, via le nom du tableau et son indice. Ce dernier peut être soit une valeur
(exemple : Note[3]), soit une variable (exemple : Note[i]) ou une expression (exemple : Note[i+1]).
Remarque :

Il ne faut pas confondre l’indice d’un élément d’un tableau avec son contenu.

     Exemple :

L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note :
Syntaxe :

 X ←− Note[1]
3.3. TABLEAU À UNE DIMENSION                                                                                       17




   Exemple :

L’instruction suivante affiche le contenu du quatrième élément du tableau Note :
Syntaxe :

 Écrire (Note[4])

Exemple :

L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note :
Syntaxe :

 Lire (Note[3])




Parcours d’un tableau




    Le fait que les éléments d’un tableau soient indicés permet de parcourir tous ces éléments ave un boucle, on uti-
lisant une variable qui sert d’indice et s’incrémente à chaque tour de boucle.
Exercice :

Écrire un algorithmepermettant de saisir 30 notes et de les afficher après avoir multiplier ces notes par un coefficient
fourni par l’utilisateur :



   Solution :
 Algorithme Tableau_ note
 Variables Note : Tableau[1 . . 30] de réels//       //déclaration des variables
                 Coef,i : entier
 Début
      Écrire("Entrez le coefficient")
      Lire(Coef)
     // Remplissage du tableau
      Pour i ←− jusqu’à 30 Faire
         Écrire("Entrez la valeur de la note ", i)
         Lire(Note[i])
      FinPour
     //Affichage des notes*Coef
      Pour i ←− jusqu’à 30 Faire
      Écrire(Note[i]*Coef)
         FinPour
 Fin

Exercice :

Écrire un algorithmequi calcule la somme des élément d’un tableau :
Solution :

On suppose que le nombre d’élément du tableau ne dépasse pas 100.
18                                                                                        CHAPITRE 3. LES TABLEAUX

 Algorithme Somme_ Tableau
 Constante M=100 //           //déclaration de la constante
 Variables T : Tableau[1 . . M] de réels //      //déclaration des variables
                n,i : entier
                s : reel
 Début
     //Demande de la taille de du tableau
     Écrire("Entrez la taille du tableau")
     Lire(n)
     Si n >M alors
        N ←− M
     FinSi
     // Remplissage du tableau
     Pour i ←− jusqu’à n Faire
        Écrire("Entrez la valeur de l’élément ", i "du tableau)
        Lire(T[i])
     FinPour
     //Calcul de la somme des éléments du tableau
     s ←− 0
     Pour i ←− jusqu’à n Faire
        s ←−s + T [i ]
     FinPour
        Écrire("La somme des éléments de tableau est :" , s)
 Fin




3.4 Tableau à deux dimensions
   Reprenons l’exemple précédent et supposons qu’un étudiant a plusieurs notes ( une note par matière).
Pour quatre étudiants nous aurons le tableau de relevé de notes suivant :

                  Étudiant 1 Étudiant 2 Étudiant 3 Étudiant 4
   Informatique        12        13          9           10
                                                                 Les tableau à deux dimensions se représentent
   Comptabilité       12.5       14         12           11
  Mathématiques        15        12         10           13
comme une matrice ayant un certain nombre de lignes (première dimension) et un certain nombre de colonnes
(deuxième dimension).


3.4.1 Déclaration
     Syntaxe :

Syntaxe :

         Variable identificateur : tableau [1 . . nb_ lignes,1 . . nb_ colonnes] de type
         ou bien
         Variable identificateur : tableau [nb_ lignes,nb_ colonnes ] de type

Exemple :

L’instruction suivante déclare un tableau de note de type réel à deux dimension composé de 3 lignes et de 4 colonnes. :
         Variable Note : tableau [1 . . 3, 1 . . 4] de réels




3.4.2 Utilisation
    Pour accéder à un élément de la matrice (tableau à deux dimensions), il suffit de préciser, entre crochets, les in-
dices de la case contenant cet élément.
Les éléments de la matrice peuvent être utilisés comme n’importe quelle variable.
3.5. TABLEAU DYNAMIQUE                                                                                             19

Exemple :

L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note.
        X ←− Note[1,1]




3.4.3 Parcours complet d’un tableau à deux dimensions
    Pour parcourir une matrice nous avons besoin de deux boucles, l’une au sein de l’autre, c’est ce qu’on appelle des
boucles imbriquées. La première par exemple est pour parcourir les lignes et la deuxième est conçue pour parcourir
les éléments de la ligne précisée par la boucle principale (la première boucle).
Exercice :

Écrire un algorithmequi permet de saisir des notes d’une classe de 30 étudiants en 5 matières.
Solution :

 Algorithme Note
 Constante N=30            //déclaration des constantes
             M= 5
 Variables note : tableau[1 . .N, 1 . . M] de réels      //déclaration des variables
              i,j : entier
 Début
     // Remplissage du tableau
      Pour i ←− 1 jusqu’à N Faire
      Pour j ←− 1 jusqu’à M Faire
         Écrire("Entrez la note de l’étudiant " , i, "dans la matière ", j)
         Lire(note[i,j])
      FinPour
      FinPour
 Fin




3.5 Tableau dynamique
    Les tableaux définis jusqu’à présent sont dit statiques, car il faut qu’au moment de l’écriture du programme le
programmeur décide de la taille maximale que doit pourra atteindre le tableau. Si le programmeur donne un taille
très grande alors qu’il n’a besoin que d’une petite taille, dans ce cas le programme consomme trop de mémoire. Dans
certaines situations, on ne peut pas savoir à l’avance la taille du tableau.
Les tableaux dynamiques sont des tableaux dont la taille n’est définie que lors de l’exécution. Pour Créer un tableau
dynamique, il suffit de lui affecter une taille vide.
Syntaxe :

Variable identificateur : tableau [] de type
   FINIR CHAPITRE 3
20   CHAPITRE 3. LES TABLEAUX
Chapitre 4

Les fonctions prédéfinies

4.1 Introduction
    Certains traitements sont complexes à effectuer par un aalgorithme. Par exemple, le calcul du cosinus d’un angle
nécessite une formule complexe. Tous les langages de programmation ont un certain nombre de fonctions qui per-
mettent de connaître immédiatement ce genre de résultat. certaines sont indispensables , car elles permettent d’effec-
tuer des traitements qui, sans elles, seraient impossibles ; d’autre servent à soulager le programmeur, en lui épargnant
de longs algorithmes.
Tout langage de programmation dispose d’un ensemble de fonctions prédéfinies permettant de procéder à des conver-
sions de type de données, de calcul mathématiques, de manipulation de chaînes de caractères etc.


4.2 Les fonctions de chaînes de caractères
    Une chaîne est une séquence de caractères dont la longueur correspond au nombre de caractères qu’elle contient.
Si une chaîne est vide , sa longueur est nulle. Dans tous les autres cas, elle est égale à un entier positif.




4.2.1 Longueur d’une chaîne
   Syntaxe :

Syntaxe :

        longueur(ch)

Cette fonction retourne (renvoie) le nombre de caractères de la chaîne.

   Exemple :

L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note :
Syntaxe :

 longueur("bonjour")

Cette fonction retourne 7


4.2.2 La fonction de concaténation de chaînes
   La concaténation est juxtaposition de deux chaînes (ou plus) afin de n’en former qu’une seule.


   Syntaxe :

        concat(ch 1, ch 2)

Cette fonction retourne une chaine formée par la concaténation de ch 1 et de ch 2.

                                                            21
22                                                                      CHAPITRE 4. LES FONCTIONS PRÉDÉFINIES

La chaîne obtenue est formée de ch 1 suivie de ch 2.
Exemple :

 Concat("Bonjour","Monsieur")
 Concat("Bonjour","Monsieur")
 Concat("Bonjour," ", Monsieur")

Le résultat de la première instruction est : Bonjour Monsieur.
Le résultat de la deuxième instruction est : BonjourMonsieur.
Le résultat de la troisième instruction est : Bonjour Monsieur.



4.2.3 La copie de chaînes
     Syntaxe :

         copie(ch 1, position, n)

Cette fonction (recopie une partie de la chaîne 1 à partir de la position précisée par l’expression entière position, en
limitant la recopie au nombre de caractères précisé par l’entier n.
Exemple :

 Copie("Bonjour",4,4)

Cette fonction retourne la chaine jour.


4.2.4 La fonction de comparaison de chaînes
     Syntaxe :

         comp(ch 1, ch 2)

Cette fonction compare deux chaînes de caractères en utilisant l’ordre des caractères défini par le code ASCII. Elle
fournit une valeur entière définie comme étant : −− positive si si chaîne 1 < chaîne 2 ;
−− nulle si chaîne 1 = chaîne 2, c’est-à-dire si les deux chaines ont le contiennent exactement la même suite de carac-
tère ;
−− négative si chaine 1 < chaîne 2.
Exemple :

 Comp("Bonjour"," Monsieur")

Cette fonction retourne une valeur négative.


4.2.5 La fonction recherche dans une chaîne
   Il existe des fonctions de recherche dans une chaine de caractère de l’occurrence d’un caractère ou d’une autre
chaîne de caractères.


     Syntaxe :

         recherche(ch 1, caractère)

Cette fonction recherche, dans la chaîne, ch 1, la première position où apparait le caractère mentionné.

             recherche(ch 1, ch 2)

Cette fonction recherche dans la chaîne ch 1, la première occurrence complète de la chaîne ch 2. Elle renvoie un
nombre correspondant à la position de la chaîne ch 2 dans la chaîne ch 1. Si la chaîne ch 2 n’est pas comprise dans la
chaîne ch 1, la fonction renvoie zéro.
Exemple :

 recherche("Bonjour Monsieur", "jour")
4.3. LES FONCTIONS MATHÉMATIQUES                                                                                 23

Cette fonction retourne 4.



4.3 Les fonctions mathématiques
   Les fonctions mathématiques prédéfinies permettent la réalisation d’un traitement mathématique sur des don-
nées numériques.

 Fonction         Description                                 Exemple                Résultat
 Ent(nombre)      Retourne la partie entière du nombre        x ←−Ent( 2.3)          x= 2
 Abs(Nombre)      Retourne la valeur absolue du nombre        x ←− Abs(- 2)          x= 2
 Cos(Angle)       Retourne une valeur spécifiant le cosinus    x ←−cos(0)             x=1
                  d’un angle
 Sin(angle)       Retourne une valeur spécifiant le sinus      x ←−sin(0)             x=O
                  d’un angle
 ...              ..                                          ...                    ...
 Sqrt(nombre)     Retourne la racine carrée d’un nombre       x ←−Sqrt(9)            x=3
                  positif
 Alea()           Retourne un nombre aléatoire compris        x ←− Alea()            0≤x <1
                  dans [0, 1[


La fonction Alea revoie un nombre aléatoire compris entre 0 et 1. Pour obtenir une valeur entière comprise entre min
et max, on utilise la formule suivante :

                                       Ent ((max − mi n + 1) ∗ Alea() + mi n)

   Exemple :

Générer un nombre aléatoire X compris entre 1 et 100.

   Syntaxe :

 X ←− Ent(100*Alea()+1)
24   CHAPITRE 4. LES FONCTIONS PRÉDÉFINIES
Chapitre 5

Procédures et Fonctions

5.1 Introduction
     Lorsque l’on progresse dans la conception d’un algorithme, ce dernier peut prendre une taille et une complexité
croissante. De même des séquences d’instructions peuvent se répéter à plusieurs endroits.
Un algorithmeécrit d’un seul tenant devient difficile à comprendre et à gérer dès qu’il dépasse deux pages. La solution
consiste alors à le découperen plusieurs partie plus petites. Ces parties sont appelées des sous Algorithmes.
Le sous-algorithmeest écrit séparément du corps de l’algorithmeprincipal et sera appelé par celui-ci quand ceci sera
nécessaire.
Il existe deux sortes de de sous-algorithmes : les procédures et les fonctions.


5.1.1 Les procédures
   Une procédure est une série d’instructions regroupées sous un nom, qui permet d’effectuer des actions par un
simple appel de la procédure dans un algorithmeou dans un sous-algorithme.
Une procédure renvoie plusieurs valeurs ou aucune.


5.1.2 Déclaration d’une procédure
   Syntaxe :

        Procédures nom_ proc(liste de paramètres)
        Variable identificateurs :type
        début
            Instruction(s)
        FinProc

Après le nom de la procédure, il faut donner la liste des paramètres (s’il y en a ) avec leur type respectif. Ces paramètres
sont appelés paramètres formels. Leur valeur n’est pas connue lors de la création de la procédure.

   Exemple :

Écrire une procédure qui affiche à l’écran une ligne de 15 étoiles puis passe à la ligne suivante.

   Solution :

 Procédure Etoiles()
 Variables i : entier
 Début
     Pour i ←−1 jusqu’à 15 Faire
        Écrire("*")
     FinPour
     //  n : retour à la ligne
     Écrire(" n ")
 FinProc



                                                            25
26                                                                      CHAPITRE 5. PROCÉDURES ET FONCTIONS

5.1.3 L’appel d’une procédure
    Pour déclencher l’exécution d’une procédure dans un programme, il suffit de l’appeler.
L’appelle s’écirt en mettant le nom de la procédure, puis la liste des paramètres, séparés par des virgules.
Á l’appelle d’une procédure le programme interrompt son déroulement normal, exécute les instructions de la procé-
dure, puis retourne au programme appelant et exécute l’instruction suivante.

     Syntaxe :

 Nom_ proc(liste de paramètres)

Les paramètres utilisés lors de l’appel d’une procédure sont appelés paramètres effectifs. Ces paramètres donneront
leurs valeurs aux paramètre formels.

     Exemple :

En utilisant la procédure Etoiles déclarer dans l’exemple précédent, écrire un algorithmepermettant de dessiner un
carré d’étoiles de 15 lignes.
    Solution :

 Algorithme Carré_ étoiles
 Variables Note : j entier
 // déclaration de la procédure Etoiles()
 Procédure Etoiles()
 Variable i : entier Début
     Pour i ←− jusqu’à 15 Faire
        Écrire("*")
     FinPour
     Écrire(" n ")
 FinProc
 //Algorithme principal (Partie principale)
 Début
     Pour j ←−1 jusqu’à 15 Faire
        // Appel de la procédure Etoiles
        Etoiles()
     FinPour
 Fin

Remarques :
   1 . Pour exécuter un algorithmequi contient des procédures et des fonctions, il faut commencer l’exécution à par-
      tir de la partie principale.

     2 . Lors de la conception d’un algorithme deux aspects apparaissent :
        • la définition (déclaration) de la procédure ou fonction ;
        • l’appel de celles-ci au sein de l’algorithme principal.


5.1.4 Passage de paramètres
     Les échanges d’informations entre une procédure et sous algorithme appelant se font par l’intermédiaire de para-
mètres.
Il existe deux principaux types types de passages de paramètres qui permettent des usages différents :


Passage par valeur :

    Dans ce type de passage le paramètre formel reçoit uniquementune copie de la valeur du paramètre effectif. La
valeur du paramètre effectif ne sera jamais modifiée.

     Exemple :

Soit l’algorithme suivant :
5.1. INTRODUCTION                                                                                                    27

     Algorithme Passage_ par_ valeur
     Variables N : entier
     // Déclaration de la procédure P1
     Procédure P1(A : entier)
     Début
     A ←− A*2
     Ecrire (A)
     FinProc
     //Algorithme principal
     Début
         N ←− 5
         P1(N)
         Ecrire (N)
     Fin

Cet algorithme définit une procédure P1 pour laquelle on utilise le passage de paramètre par valeur.
Lors de l’appel de la procédure, la valeur du paramètre effectif N est recopié dans le paramètre formel A. La procédure
effectue alors le traitement et affiche la valeur de la variable A, qui vaut 10.
Après l’appel de la procédure, l’algorithme affiche la valeur de la variable N qui est 5.
La procédure ne modifie pas le paramètre qui est passé par valeur.

Passage par référence ou par adresse

    Dans ce type de passage, la procédure utilise l’adresse du paramètre effectif. Lorsqu’on utilise l’adresse du para-
mètre, on accède directement à son contenu. La valeur de la variable effective sera modifiée.
Les paramètres passés par adresse sont précédés du mot clé Var.
Exemple :

Reprenons l’exemple précédent :
 Algorithme Passage_ par_ référence
 Variables N : entier
 // Déclaration de la procédure P1
 Procédure P1(Var A : entier)
 Début
 A ←− A*2
 Ecrire (A)
 FinProc
 //Algorithme principal
 Début
     N ←− 5
     P1(N)
     Ecrire (N)
 Fin

Á l’exécution de la procédure, l’instruction Écrire (A) permet d’afficher à l’écran 10. Au retour dans l’algorithme prin-
cipal, l’instruction Écrire(N) affiche également 10.
Dans cet algorithme le paramètre passé correspond à la référence (adresse) de la variable N. Elle est modifiée par
l’instruction :
   A ←− A*2

Remarque : Lorsqu’il a plusieurs paramètres dans la définition d’une procédure, il faut absolument qu’il y ait le même
nombre à l’appel et que l’ordre soit respecté.


5.1.5 Les fonctions
    Les fonctions sont des sous algorithmes admettant des paramètres et retournant un seul résultat (une seule valeur)
de type simple qui peut apparaitre dans une expression, dans une comparaison, à la droite d’une affectation, etc.


5.1.6 Déclaration d’une fonction
   Syntaxe :
28                                                                         CHAPITRE 5. PROCÉDURES ET FONCTIONS

         Fonction nom _ fonction(liste de paramètres) : type
         Variables identificateurs : type
         Début
            Instruction (s)
             Retourner expression
         FinFonction

La syntaxe de déclaration d’une fonction est assez proche de celle d’une procédure à laquelle on ajoute un type qui
représente le type de la valeur retournée par la fonction et une instruction Retourner Expression. Cette dernière
instruction renvoie au programme appelant le résultat de l’expression placée à la suite du mot clé retourner.
Les paramètres sont facultatifs, mais s’il n’y a pas de paramètres, les parenthèses doivent rester présentes.
Exemple :

Définir une fonction qui renvoie le plus grand de deux nombres différents :
Solution :

 //Déclaration de la fonction Max
 Fonction Max(X : réel, Y : réel) : réel Algorithme Passage_ par_ valeur
 Variables N : entier
 // Déclaration de la procédure P1
 Début
 Si X > Y alors
 Retourner X
 Sinon
 Retourner Y
 FinSi
 FinFonction




L’appel d’une fonction




    Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivie des paramètres effectifs. C’est
la même syntaxe qu’une procédure.
Á la différence d’une procédure, la fonction retourne une valeur. L’appel d’une fonction pourra donc être utilisé dans
une instruction (affichage, affectation, . . .) qui utilise sa valeur.



     Syntaxe :

         Nom_ Fonc(liste de paramètres)

Exemple :

Écrireun algorithme appelant, utilisant la fonction Max de l’exemple précédent
Solution :
5.1. INTRODUCTION                                                                                                     29

 Algorithme Appel_ fonction_ Max
 Variables A, B, M : réel
 // Déclaration de la fonction Max
 Fonction Max (X : réel, Y : réel) : réel
 Début
     Si X > Y alors
        Retourner X
     Sinon
        Retourner Y
     FinSi
 FinFonction
 //Algorithme principal
 Début
     Écrire ("Donner la valeur de A")
     Lire (A)
     Écrire ("Donner la valeur de B")
     Lire (B)
     // Appel de la fonction Max
     M ←− Max(A,B)
     Écrire (" Le plus grand de ces deux nombres est :" , M)
 Fin




5.1.7 Portée des variables

    La portée d’une variable désigne le domaine de visibilité de cette variable. Une variable peut être déclarée dans
deux emplacements distincts.
Une variable déclarée dans la partie déclaration de l’algorithmeprincipal est appelée variable globale. Elle est acces-
sible de n’importe où dans l’algorithme, même depuis les procédures et les fonctions. Elle existe pendant toute la
durée de de vie du programme.
Une variable déclarée à l’intérieur d’une procédure (ou une fonction) est dite locale. Elle n’est accessible qu’à la pro-
cédure au sein de laquelle est est définie, les autres procédures n’y on pas accès. La durée de vie d’une telle variable
(locale) est limité à la durée d’exécution de la procédure.
Exemple :
  Algorithme Portée
  Variables X, Y : Entier               X et Y sont deux variables globales, visibles dans tout le programme.
  Procédure P1()
  Vaviable A : entier                A est une variable locale, visible uniquement à l’intérieur de la procédure.
  Début
      ...
  FinProc
  //Algoritme principal
  Début
      ...
  Fin


    Remarque : Les variables globales sont à éviter pour la maintenance des programmes.



5.1.8 La récursivité

   Une fonction ou une procédure est dite récursive si elle s’appelle elle même.
Exemple : Écrire une fonction récursive permettant de calculer la factorielle d’un entier positif.
Solution :

n !=n*(n-1)*(n-2)...*3*2 ;             n !=n*(n-1) !
30                                                                       CHAPITRE 5. PROCÉDURES ET FONCTIONS

     //Déclaration de la fonction Factorielle (Fact)
     Fonction Fact(n : entier) : entier
     Début
         Si n > 1 alors
            retourne (fact(n-1)*n)
         Sinon
            retourne 1
         FinSi
     FinFonction

Dans cet exemple, la fonction renvoie 1 si la valeur demandée est inférieure à 1, sinon elle fait appel à elle même avec
un paramètre inférieur de 1 par rapport au précédent. Les valeurs de ces paramètres vont en décroissant et attein-
dront à un moment la valeur 1. Dans ce cas, il n’y a pas d’appel récursif et donc ont sort de la fonction.
Remarque : Toute procédure ou fonction récursive comporte une instruction (ou un bloc d’instruction) nommée
"point terminal" permettant de sortir de la procédure ou de la fonction.
Le point terminal dans la fonction récursive Fact est : retourne 1.


5.1.9 Avantage des procédures et de fonctions
    • Le procédures ou fonctions permettent de ne pas répéter plusieurs fois une même séquence d’instruction au
sein du programme (algorithme).
• La mise au point du programme est plus rapide en utilisant des procédures et des fonctions. En effet, elles peuvent
être réalisées en dehors du contexte du programme et appelées après par le programme.
• Une procédure peut être intégrée à un autre programme, ou elle pourra être rangée dans une bibliothèque d’outils.
Chapitre 6

Exercices

6.1 T D 1 : Instructions de base d’un algorithme
   Exercice 1 : Moyenne de deux nombres
Écrire un algorithmepermettant de calculer la moyenne de deux entiers.

   Exercice 2 :
Une entreprise accorde à ses clients, une remise de 3% sur le montant d’achat. Écrire un algorithmepermettant de
saisir le montant d’achat MA et de calculer le montant de la remise R ainsi que le montant à payer MP.

   Exercice 3 : Écrire un algorithme qui permute les valeurs de deux variables.

   Exercice 4 : Évaluation des expressions


   Donner les valeurs des variables a, b, c, d ,e, g, h, i, j et k.

     Expression                                        Valeur de la variable
     a ←− 7/2
     b ←−7 Div 2
     c←− 7 Mod 2
     d←−’t’< ’w’
     e←− "Maman" > "Papa"
     f←− (6 = 2)
     g←− maman > "papa"
     h←− Non(5=2)
     i←− (4 < 6) et (9> 5)
     j←− (2 < 0) ou ((4<> 4)
     k ←− ’A’ < ’a ’

   Exercice 5 : Équivalent d’une expression

Donner l’équivalent des expressions booléennes suivantes en utilisant uniquement les opérateurs logiques : Et, Ou,
Non.


     Expression                                        Équivalent
     x=2
     x<2
     x-2 > 7
     0 < X <3
     3*x > 18
     a OUex b
     Non (x ≥ 0)
     Non (Note < 0 ou Note > 20)

                                                                31
32                                                                                               CHAPITRE 6. EXERCICES

Exercice 6 : Priorité des opérateurs

En se basant sur les règles de priorité donnez les valeurs des variables suivantes.

 a ←− 4*2 + 5
 b ←− 5+ 3*2- 6
 c ←− a > b Et 7 ± 2 Ou a < b
 d ←− a > 7 Et 7 = 2 Ou a < b


6.2 T D 2 : Les Structures alternatives et répétitives
     à Exercice 1 :   Parité

Écrire un algorithme qui détermine si un nombre entier n est pair ou impair.

Exercice 2 : Maximum de deux nombres


     Écrire un algorithme qui permet d’afficher le maximum de deux nombres saisis au clavier.


     Exercice 3 :


     Écrire un algorithme qui teste si une note saisie au clavier est comprise entre 0 et 20.

Exercice 4 : Nombre de racines d’une équation du second degré

Écrire un algorithme permettant de déterminer le nombre de racines de l’équation : ax 2 + bx + c = 0,           a=0

Exercice 5 : Équation du premier degré

Écrire un algorithme qui permet de résoudre l’équation : ax + b = 0

Exercice 6 : Simulation d’une calculatrice (4 touches)

Écrire un algorithme qui permet de saisir deux variables réelles a et b et un opérateur : +, -, *, / et d’afficher le résultat.

Exercice 7 : Mention

Écrire un algorithme qui lit la moyenne générale MG d’un étudiant et affiche la mention.

Exercice 8 : Maximum de dix nombres

Écrire un algorithme qui permet d’afficher le maximum parmi dix nombres saisis au clavier.

Exercice 9 : Factorielle d’un nombre entier

Écrire un algorithme permettant de saisir un nombre entier naturel non nul n et de calculer sa factorielle.

Exercice 10 : Moyenne des notes

Écrire un algorithme permettant de saisir N notes, de calculer leur somme et leur moyenne.

Exercice 11 : Rectangle d’étoiles

Écrire un algorithme qui affiche à l’écran le rectangle d’étoiles qui contient 10 lignes de 19 étoiles Exercice 12 : Tri-
angle d’étoiles

Écrire un algorithme qui affiche à l’écran le triangle :
 *
 * *
 * * *
 * * * *
 * * * * *
6.3. T D 3 : OPÉRATIONS SUR LES TABLEAUX                                                                           33

Exercice 13 : Pyramide d’étoiles

Écrire un algorithme qui affiche à l’écran la pyramide d’étoiles ci-dessous. Chaque ligne comporte 19 caractères (es-
paces ou étoiles)

 *    *     *    *     *   *   *    *   *     *   *    *   *   *    *   *   *    *   *
      *     *    *     *   *   *    *   *     *   *    *   *   *    *   *   *    *
            *    *     *   *   *    *   *     *   *    *   *   *    *   *   *
                 *     *   *   *    *   *     *   *    *   *   *    *   *
                       *   *   *    *   *     *   *    *   *   *    *
                                                                                         :
                           *   *    *   *     *   *    *   *   *
                               *    *   *     *   *    *   *
                                    *   *     *   *    *
                                        *     *   *
                                              *

Exercice 14 : PGCD

Écrire un algorithme qui calcul le PGCD de deux nombres entier non nuls a et b (a>b).

Exercice 15 : Suite numérique

Soit la suite numérique U n définie par :

 Si n = 0       U0 = 4
 Si n > 0       U n = 5U n−1 + 9

Écrire un algorithme qui calcule le terme U n et la somme S n = U 0 +U 1 + ... +U n

Exercice 16 : Suite de Fibonacci

Écrire un algorithme qui détermine le terme U n de la suite de Fibonacci définie comme suit :

 U0 = 4
 U1 = 1
 U n = U n−1 +U n−2 , si n > 2




6.3 T D 3 : Opérations sur les tableaux
     Exercice 1 : Nombre de moyennes                  10

En utilisant les tableaux, écrire an algorithme qui permet la saisie d’une liste de n moyennes réelles et d’afficher le
nombre de moyennes supérieures ou égales à 10. On supposera que n <100)

Exercice 2 : Permutation des éléments d’un tableau

Écrire un algorithme qui permute les éléments d’un tableau de 8 éléments en plaçant le dernier en premier et ainsi de
suite, voir exemple suivant.

     12           34           5         43        55              56       23           1
                                        Tableau initial

     1            23           56           55       43            5        34           12
                                            Tableau final

Exercice 3 : Maximum des moyennes d’une classe

Écrire un algorithme qui permet la saisie des moyennes d’une classe de n étudiants et affiche le maximum.

Exercice 4 : Trier un tableau

Écrire un algorithme qui permet la saisie de 4 moyennes et de les classer selon l’ordre croissant.
34                                                                                              CHAPITRE 6. EXERCICES

Exercice 5 : Tableau à deux dimensions

Écrire un algorithme qui permet :
• la saisie des notes d’une classe de 15 étudiants en 4 matières ;
• calcule et affiche la moyenne de chaque étudiant ;
• calcule et affiche la moyenne de la classe dans chaque matière ;
• calcule et affiche la moyenne générale de la classe.

Exercice 6 : Produit de deux matrices

Écrire un algorithme qui calcule la matrice C qui est le produit de deux matricesA nm et B nk




6.4 T D 4 : Les structures
     Exercice 1 : Structure personne

Écrire un algorithme qui :
• Définit une structure Personne qui contient trois champs : nom, prénom et âge.
• déclare deux variables étudiant 1 et étudiant 2 de type personne.
Calcule la différence d’âge entre les deux étudiants.

Exercice 2 : Structure imbriquée

Étudiant est une structure composée de trois champs : nom, prénom, date_ de_ naissance. Nom et prénom sont de
type chaîne. Date_ de_ naissance est de type N_ Date
N_ Date est une structure composée de trois champs : jour, mois et année. Jour et année sont de type entiers, mois de
type chaîne.
Écrire un algorithme qui permet de saisir et d’afficher l’année de naissance d’un étudiant.


6.5 T D 5 : Les fonctions prédéfinies
     Exercice 1 : Nombre de mots dans une phrase

Écrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de mots la composant.

Exercice 2 : Nombre de voyelles dans une phrase

Écrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de voyelles contenues dans
celle ci en utilisant la fonction recherche.

Exercice 3 : Remplacement d’un caractère par un autre.

Soit une phrase qui contient des mots séparés par des slashes ≪ / ≫ , par exemple :
"Dupitre/ Jean et ac / Étudiant En SIO / Tel 0606061243.
Écrire un algorithme qui remplace les ≪ / ≫ en ;

Exercice 4 : Affichage d’une chaîne en inverse

Écrire un algorithme qui permet de saisir une chaine de caractères et l’afficher en inverse.

Exercice 5 : Concaténation des chaînes de caractères

Écrire un algorithme qui demande à l’utilisateur d’entrer une chaine de caractère (une date) sous la forme JJMMAA et
qui affiche cette datte sous la forme JJ/MM/AA.




6.6      T D 6 : Les fonctions et procédures
     Exercice 1 : Fonction Moyenne
6.6. T D 6 : LES FONCTIONS ET PROCÉDURES                                                                              35

En se basant sur l’algorithme de l’exercice 1 du T D 1, écrire le sous-algorithme de la fonction Moyenne qui revoie la
moyenne de deux entiers.
Écrire un algorithme qui contient la déclaration de la fonction moyenne et des instructions qui appellent cette fonc-
tion.

Exercice 2 : fonction f (x) = 3x 3 + 4x + 8

Écrire un algorithme qui contient la déclaration de la fonction f (x) = 3x 3 + 4x + 8 et affiche le résultat pour x=1, X=2
et x=2.7.

Exercice 3 : Fonction PGCD récursive

Écrire un algorithme qui calcule le PGCD de deux entiers naturels a et b non nuls (a>b) en utilisant une fonction ré-
cursive.

Exercice 4 : Fonction somme récursive

Écrire un algorithme qui calcule : S n = 1 + 2 + 3 + ... + (n1 ) + n en utilisant une fonction récursive.

Exercice 5 :



Exercice 6 :



Exercice 7 :



Exercice 8 :



Exercice 9 :



Exercice 10 :



Exercice 11 :

Contenu connexe

Tendances

Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrentsmohamed_SAYARI
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesInes Ouaz
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018salah fenni
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximationmohamed_SAYARI
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiquesmohamed_SAYARI
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesInes Ouaz
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 

Tendances (20)

Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrents
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de données
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiques
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
Serie
SerieSerie
Serie
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de données
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
Correction
CorrectionCorrection
Correction
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 

En vedette

Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programmeBaghdadi Wajih
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programmeBaghdadi Wajih
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitresborhen boukthir
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Présentation formation Carnet de voyage TICE
Présentation formation Carnet de voyage TICEPrésentation formation Carnet de voyage TICE
Présentation formation Carnet de voyage TICEumberine
 
Festival du livre à Nice
Festival du livre à NiceFestival du livre à Nice
Festival du livre à NiceLECREURER
 
Grupo l presentación fatla slideshare
Grupo l  presentación fatla slideshare Grupo l  presentación fatla slideshare
Grupo l presentación fatla slideshare Adrian359
 
2ª presenthaci on de thaller!
2ª presenthaci on de thaller!2ª presenthaci on de thaller!
2ª presenthaci on de thaller!rokjanthon
 
The Yes Men après Katrina
The Yes Men après KatrinaThe Yes Men après Katrina
The Yes Men après KatrinaTheyesmen
 
Licenciatura en arquitectura
Licenciatura en arquitecturaLicenciatura en arquitectura
Licenciatura en arquitecturaYazmin Mota
 
2473144 fur-elise-complete-version
2473144 fur-elise-complete-version2473144 fur-elise-complete-version
2473144 fur-elise-complete-versionbarita
 
Proyectos articulados gestión 2011 iers
Proyectos articulados gestión 2011 iersProyectos articulados gestión 2011 iers
Proyectos articulados gestión 2011 iersJUANCARLOSGONZALEZG
 
El aparato reproductor
El aparato reproductorEl aparato reproductor
El aparato reproductormestypatibss
 
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...Résultats du sondage : "les espaces de discussion au travail. Parler de son t...
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...Anact
 

En vedette (20)

Algorithme
AlgorithmeAlgorithme
Algorithme
 
Cour algo
Cour algoCour algo
Cour algo
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Présentation formation Carnet de voyage TICE
Présentation formation Carnet de voyage TICEPrésentation formation Carnet de voyage TICE
Présentation formation Carnet de voyage TICE
 
Festival du livre à Nice
Festival du livre à NiceFestival du livre à Nice
Festival du livre à Nice
 
Lady d
Lady dLady d
Lady d
 
Cahier de restitution
Cahier de restitutionCahier de restitution
Cahier de restitution
 
Grupo l presentación fatla slideshare
Grupo l  presentación fatla slideshare Grupo l  presentación fatla slideshare
Grupo l presentación fatla slideshare
 
2ª presenthaci on de thaller!
2ª presenthaci on de thaller!2ª presenthaci on de thaller!
2ª presenthaci on de thaller!
 
The Yes Men après Katrina
The Yes Men après KatrinaThe Yes Men après Katrina
The Yes Men après Katrina
 
Licenciatura en arquitectura
Licenciatura en arquitecturaLicenciatura en arquitectura
Licenciatura en arquitectura
 
Cómo enseñamos
Cómo enseñamosCómo enseñamos
Cómo enseñamos
 
2473144 fur-elise-complete-version
2473144 fur-elise-complete-version2473144 fur-elise-complete-version
2473144 fur-elise-complete-version
 
Proyectos articulados gestión 2011 iers
Proyectos articulados gestión 2011 iersProyectos articulados gestión 2011 iers
Proyectos articulados gestión 2011 iers
 
El aparato reproductor
El aparato reproductorEl aparato reproductor
El aparato reproductor
 
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...Résultats du sondage : "les espaces de discussion au travail. Parler de son t...
Résultats du sondage : "les espaces de discussion au travail. Parler de son t...
 

Similaire à Coursalgorithmique

Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycéeKayl Mido
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithmemustapha4
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfadeljaouadi
 
Activité n°2 chap2
Activité n°2 chap2Activité n°2 chap2
Activité n°2 chap2zaynab baddar
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptxPROFPROF11
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationkamalomari2
 

Similaire à Coursalgorithmique (20)

Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycée
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Theme 6
Theme 6Theme 6
Theme 6
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithme
 
Chapitre2 prog dsplf3
Chapitre2 prog dsplf3Chapitre2 prog dsplf3
Chapitre2 prog dsplf3
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdf
 
langage C++
langage C++langage C++
langage C++
 
Activité n°2 chap2
Activité n°2 chap2Activité n°2 chap2
Activité n°2 chap2
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'application
 
TP5_2020.pdf
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
 

Coursalgorithmique

  • 1. Chapitre 1 Les éléments de base d’un algorithme 1.1 Introduction 1.1.1 Définition d’un algorithme Un algorithmeest une séquence d’opérations visant à la résolution d’un problème en un temps fini. On eut aussi adopter la définition suivante : un algorithmeest la description de la méthode de résolution d’un problème quelconque en utilisant des instruc- tions élémentaires. Ces instructions deviennent compréhensible pour l’ordinateur lors de la traduction de l’algorith- meen un programme. 1.1.2 Algorithme et programmation Tout problème à programmer doit être résolu, d’abord sous forme d’algorithme, puis converti en programme dans un langage de programmation utilisé. Un programme est un enchainement d’instruction, écrit dans un langage de programmation, exécutées par un ordi- nateur, permettant de traiter un problème et de renvoyer des résultats. Il représente la traduction d’un algorithmeà l’aide d’un langage de programmation. 1.2 Structure générale d’un algorithme Un algorithmeest constitué de trois parties principales : • l’en-tête : cette partie sert à donner un nom à l’algorithme. Elle est précédée par le mot Algorithme ; • la partie déclarative : dans cette partie, on déclare les différents objets que lalgorithmeutilise (constantes, va- riables, etc.) ; • le corps de l’algorithme : cette partie contient les instructions de l’algorithme. Elle est délimitée par les mots début et fin. 1.3 Les variables et les constantes 1.3.1 Déclaration des variables La partie déclarative consiste à énumérer toutes les variables dont on aura besoin au cours de l’algorithme. Chaque déclaration doit comporter le nom de la variable (identificateur) et son type. Syntaxe : Variable identificateur : type Exemples : Variable volume : réel Variables a,b,c,d :entiers Variable Nom_pr enom : chaîne Variable présent : logique 1
  • 2. 2 CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHME Identificateur : Un identificateur est le nom donné à une variable, une fonction, etc. Ce nom doit obligatoirement commencer par une lettre suivie d’une suite de lettres et de chiffres et il ne doit pas contenir d’espace. types de données : Le type d’une variable est l’ensemble des valeurs qu’elle peut prendre . Par exemple, une variable de type booléen (logique) peut prendre les valeurs Vrai ou Faux. Les différents types utilisé en algorithmique : • Type entier : sert à manipuler les nombres entiers positifs ou négatifs. Par exemple 2, -10, etc. • Type Réel : quant à lui sert à manipuler les nombres à virgules. • Type Caractère : permet de manipuler des caractères alphabétiques et numériques. Par exemple : ’a’, ’B’ ’ ?’, ’14’, etc. • Type chaîne : sert à manipuler des chaines de caractères. • Type Logique (Booléen) : utilise les expression logiques, Vrai ou faux. Faire tableau page 14 1.3.2 Les constantes Comme pour les variable, à une constante correspond un emplacement mémoire réservé auquel on accède par le nom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du programme. Syntaxe : Constante NOM_ DE LA CONSTANTE = valeur Exemple : Constante PI=3.14 1.4 Les instructions de base Une instruction est une action élémentaire commandant à la machine un calcul, ou une communication avec un périphérique d’entrée ou de sortie. Les instructions de base sont : 1.4.1 L’instruction d’affectation L’affectation permet d’affecter une valeur à une variable. Elle est symbolisée en algorithmique par : " ←− " Syntaxe : Variable " ←− " Expression Expression peut être soit : • identificateur ; • constante ; • expression arithmétique ; • expression logique. Sémantique : Une affectation peut être définie en deux étapes : • évaluation de l’expression qui se trouve dans la partie droite de l’affectation ; • placement de cette valeur dans la variable. exemple : 0 Algorithme Calcul 1 Variables A,B,C,D : entier 2 Début 3 A ←− 10 4 B ←− 30 5 C ←− A+B 6 D ←− C*A 7 Fin Note : les lignes sont numérotées pour faciliter l’explication. Nous pouvons expliquer ce qui ce passe par le tableau suivant :
  • 3. 1.4. LES INSTRUCTIONS DE BASE 3 Variable Numéro de lignes 1 2 3 4 5 6 A 10 10 10 10 ? ? B 30 30 30 ? ? ? C 40 40 ? ? ? ? D 400 ? ? ? ? ? Remarque : • Les variables numériques ne sont pas forcément initialisées à zéro. Leur valeur peut être n’importe quoi. D’où la présence du point d’interrogation avant qu’une première valeur ne soit affectée à la variable. • En faisant le tableau précédent on dit qu’on a fait la trace de l’algorithme. Exemple : 0 Algorithme Logique 1 Variables A,B,C : Booléen 2 Début 3 A ←− Vrai 4 B ←− Faux 5 C ←− A et B 6 Fin variable Numéro de ligne 1 2 3 4 5 A Vrai Vrai Vrai B Faux Faux C Faux 1.4.2 L’instruction d’entrée L’instruction d’entrée ou de lecture donne la main à l’utilisateur pour saisir une donnée au clavier. La valeur saisie sera affectée à une variable. Syntaxe : Lire (identificateur) Exemples : Lire(A) Lire (A,B,C) L’instruction Lire(A) permet à l’utilisateur de saisir une valeur au clavier, cette valeur est affectée à la variable A. Remarque : Lorsque le programme rencontre cette instruction, l’exécution s’interrompt et attend que l’utilisateur rentre une va- leur. Cette valeur est rangée en mémoire dans la variable désignée. 1.4.3 L’instruction de sortie Avant de lire une variable, il est conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit frapper au clavier (sinon, l’utilisateur passe son temps à se demander ce que l’ordinateur attend de lui). L’instruction de sortie (d’écriture) permet d’afficher des informations à l’écran. Syntaxe ; Écrire(expression) Expression peut être une valeur, un résultat, un message, le contenu d’une variable, etc. Exemple 1 : Écrire(A)
  • 4. 4 CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHME Cette instruction permet d’afficher à l’écran la valeur de la variable A. Exemple 2 : A ←− 2 Écrire("la valeur de A est = ",A) La dernière instruction affiche à l’écran : la valeur de A est = 2 Exercice : CalculPTTC Écrire un algorithme qui permet de saisir le prix HT (PHT) d’un article et de calculer son prix total TTC (PTTC), TVA=20% Solution : 0 Algorithme Calcul_PTTC 1 Variables PHT, PTTC : réel 2 Constante TVA=0.2 3 Début 4 Écrire("Entrez le prix hors taxes :") 5 Lire(PHT) 6 PTTC←− PHT*1.2 7 Écrire(" Le prix TTC est ", PTTC) 8 Fin Numéro de ligne Explication 0 Déclare un algorithmedont le nom est calcul_PTTC 1 Déclare les différentes variables utilisées par l-algorithme 2 Déclare la constante TVA 3 Marque le début des traitements effectués par l’algorithme 4 Affiche à l’écran le message : Entrez le prix hors taxe : 5 Permet à l’utilisateur de saisir une valeur au clavier qui sera affectée à la vairable PHT 6 Calcule le prix et affecte le résultat à la variable PTTC 7 Affiche le résultat à l’écran 8 Marque la fin de l’algorithme 1.5 Les commentaires Lorsqu’un algorithme devient long, il est conseillé d’ajouter des lignes de commentaires dans l’algorithme, c’est- à-dire des lignes qui servent à donner des indications des indications sur les instructions effectuées et d’expliquer le fonctionnement du programme sans que le compilateur ne les prenne en ligne.
  • 5. Chapitre 2 Les structures alternatives et répétitives 2.1 Les structures alternatives 2.1.1 Introduction Contrairement au traitement séquentiel, la structure alternative ou conditionnelle permet d’exécuter ou non d’ins- tructions selon la valeur d’une condition. 2.1.2 La structure Si . . . Alors . . . Sinon . . . FinSi Syntaxe : Si condition Alors Instruction(s) 1 Sinon Instruction(s) 2 FinSi Une condition est une expression logique ou une variable logique évalué à Vrai ou Faux. La condition est évaluée. Si elle est vraie, la série d’instructions 1 est exécutée et l’ensemble d’instructions 2 est ignoré, la machine sautera directement à la première instruction située après le FinSi. De même, au cas où la condition était fausse (avait comme valeur Faux), la machine saute directement à la première ligne située après le Sinon et exécute l’ensemble d’instructions 2. Exercice : Écrire un algorithme qui affiche si un nombre entier saisi au clavier est pair ou impair. Solution : On dit qu’un nombre entier n est pair si le reste de la division entière de n par 2 est égal à zéro. Sinon il est impair. Algorithme Parité //déclaration des variables Variables n, r : réel Début Écrire("Entrez la valeurrde n :") Lire(n) //r est le reste de la division entière de n par 2 r ←− n Mod 2 si r= 1 Alors Écrire(" n est impair") Sinon Écrire(n, " est pair") FinSi Fin 5
  • 6. 6 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Remarque : Présentation de l’algorithme ou du programme Certaines partie de l’algorithmeou du code sont en retrait par rapport à d’autres, ce qu’on appelle l’indentation. Celle- ci est très importante pour la lisibilité de lalgorithme. Elle montre rapidement le début et la fin de chaque instruction alternative ou répétitive ainsi le début et la fin de l’algorithme. De plus, pour faciliter la compréhension, toutes vos instructions doivent être commentées. Un développeur est sou- vent amené à modifier un code, par conséquent, des commentaires de qualité rendent cette tache plus facile et plus rapide. Note : Certains problèmes exige de formuler des conditions qui ne peuvent pas être exprimées sous la forme simple exposée ci-dessus. Par exemple la condition " x appartient à l’intervalle [0, 5] est composée de deux conditions simples à savoir 0 ≤ x et x ≤ 5, reliées par l’opérateur logique Et. Exemple : Écrire un algorithmequi teste si une note saisie au clavier est comprise entre 0 et 20. Algorithme TestNote //déclaration des variables Variable Note : réel Message : chaîne Début Écrire("Entrez la note :") Lire(Note) Si Note >= 0 et note <= 20 Alors Message ←− "La note " & Note & "est correcte" Sinon Message ←− "La note " & Note & "est incorrecte" FinSi Écrire (Message) Fin Exercice : Écrire un algorithmequi demande deux nombres a et b à l’utilisateur et l’informe ensuite si le produit est nul, négatif ou positif. Algorithme Signe_Produit //déclaration des variables Variables a,b : réel Début Écrire("Entrez les deux nombres a et b :") Lire(a,b) Si a=0 ou b=0 Alors Écrire "Le produit est nul " SinonSi (a<0 Et b <0) Ou (a>0 Et b >0) Alors Écrire ( "Le produit est positif") Sinon Ecrire (" Le produit est négatif") FinSi Fin Remarque : • Dans une condition composée utilisant à la fois des opérateurs Et et Ou, la présence de parenthèses à une influence sur le résultat.
  • 7. 2.1. LES STRUCTURES ALTERNATIVES 7 2.1.3 La structure Si . . . Alors . . . FinSi Cette structure est utilisée si on veut exécuter une instruction seulement si une condition est vraie et ne rien faire si la condition est fausse. Syntaxe : Si condition Alors Instruction(s) FinSi Exemple : Un magasin accorde à ses clients, une réduction de 5% pour les montants d’achats supérieurs à 150 euros . Écrire un algorithmepermettant de saisir le prix total HT (PTHT) et de calculer le montant TTC (PTTC) en prenant compte de la remise et de la TVA à 20 . Solution : Algorithme Calcul_ PTTC Constante TVA =0.2 //déclaration de la constante Variables PTHT, PTTC : réels //déclaration des variables Début Écrire("Entrez le prix hors taxe :") Lire(PTHT) Si PTHT > 150 Alors PTHT ←− PTHT * .95 FinSi PTTC ←− PTHT +(PTHT *TVA) Écrire("Le prix TTC est " , PTTC) Fin 2.1.4 La structure Si . . . Alors . . . SinonSi . . . Sinon . . . Finsi Syntaxe : Si condition 1 alors Instruction 1 SinonSi Condition 2 alors Instruction 2 SinonSi Condition 3 Instruction 3 ... Sinon Instructions FinSi L’instruction qui sera exécutée est celle dont la condition est vraie. Si aucune condition n’est vérifiée, c’est l’ins- truction qui suit le Sinon qui sera exécutée. Exemple : Écrire un algorithmequi permet d’afficher le maximum parmi deux nombres saisis au clavier. Solution :
  • 8. 8 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Algorithme MAx Variables A, B : réels //déclaration des variables Début Écrire("Entrez la valeur de A :") Lire(A) Écrire("Entrez la valeur de B :") Lire(B) Si A > B Alors Écrire("le maximum est " , A) SinonSi A=B alors Écrire("les deux nombres sont égaux " ) Sinon Écrire("le maximum est " , B) Finsi Fin Remarque : Une structure conditionnelle peut contenir elle même une autre structure conditionnelle. Dans ce cas, les instructions à exécuter après Alors et ou Sinon sont à leur tour, des instructions Si . . . Alors . . . Sinon. Exemple : Écrire un programme permettant de calculer des des allocations familiales sachant que le montant dépend du nombre d’enfants à charge – Si le nombre d’enfants est inférieur ou égal à 3 alors les allocations sont de 150 euros par enfant. – Si le nombre est strictement supérieur à 3 et strictement inférieur à 6 alors les allocations sont de : • 150 euros par enfant pour les 3 premiers ; • 38 euros pour les suivants. – Si le nombre d’enfants est strictement supérieur à 6 alors les allocations sont : • 150 euros par enfant pour les 3 premiers ; • 38 euros pour les 3 suivants. • 0 euros par enfant pour les suivant. Solution : Algorithme Allocation_ familiale Variables NE, M : réels //déclaration des variables /* NE : Nombre d’enfants M : montant des allocations */ Début Écrire("Entrez le nombre d’enfants :") Lire(NE) Si NE<= 3 Alors M ←− NE * 150 Sinon Si NE <= 6 alors M ←− 450 + (NE - 3)* 38 Sinon M ←− 564 Finsi Finsi Écrire("Le montant des allocations est ", M) Fin 2.1.5 Structure à choix multiples Cette structure conditionnelle permet de choisir le traitement à effectuer en fonction de la valeur ou dee l’inter- valle de valeurs d’une variable ou d’une expression.
  • 9. 2.2. LES STRUCTURES RÉPÉTITIVES 9 Syntaxe : Selon sélecteur faire Valeur 1 : action(s) 1 Valeur 2 : action(s) 2 Valeur 3 : action(s) 3 ... Valeur n : action(s) n Sinon action(s) FinSi Lorsque l’ordinateur rencontre cette instruction, il vérifie la valeur de la variables de sélection (sélecteur) et il la compare aux différentes valeurs. Les valeurs sont évaluées dans l’ordre, les unes après les autres , et dès qu’une de celles-ci est vérifiée l’action associée est exécutée. On peut utiliser une instruction Sinon (facultative), dont l’action sera exécutée si aucune des valeur évaluées n’est remplie. Exemple : Écrire un programme permettant d’afficher le mois en toute lettre selon son numéro saisi au clavier. Solution : Algorithme Mois Variables N : entier //déclaration des variables Début Écrire("Donnez le numéro du mois :") Lire(N) Selon N faire 1 : Écrire ("Janvier ") 2 : Écrire ("Février ") 3 : Écrire (" Mars ") 4 : Écrire (" Avril ") 5 : Écrire (" Mai ") 6 : Écrire (" Juin ") 7 : Écrire (" Juillet ") 8 : Écrire (" Aout ") 9 : Écrire (" septembre") 10 : Écrire ("Octobre ") 11 : Écrire ("Novembre ") 12 : Écrire (" Décembre ") Sinon Écrire("Le numéro saisi est incorrecte : ") FinSelon Fin 2.2 Les structures répétitives 2.2.1 Introduction Prenons le cas où l’utilisateur doit répondre par O (oui) ou par N (non). Celui-ci risque de taper autre caractère, le programme peut soit "planter" par une erreur d’exécution soit se dérouler normalement jusqu’au bout, tout en produisant des résultats erronés. Pour palier à ce genre de problème, on peut mettre en place un contrôle de saisie pour vérifier si les données corres- pondent à celles attendues. On pourrait essayer avec un Si.
  • 10. 10 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Algorithme Contrôle_ de_ saisie Variables Rep : Caractère //déclaration des variables Début Écrire("Voulez vous une pause après une heure de cours ? ( O N)" Lire(Rep) Si Rep = ’O’ ET Rep = ’ N ’ Alors Écrire ("Erreur de saisie. Recommencez ") Lire (Rep) FinSi Fin Cet algorithmerésout le problème si on se trompe une seule fois. En cas d’une deuxième erreur, il faudrait rajouter un Si, et ainsi de suite à chaque erreur de saisie. La solution adaptée à ce genre de situation serait d’utiliser ce qu’on appelle une structure répétitive. Une structure répétitive, encore appelé boucle, est utilisée quand une instruction ou une liste d’instructions, doit être répétée plusieurs fois.La répétition est soumise à une condition. 2.2.2 La boucle TantQue . . . Faire La boucle TantQue permet de répéter un traitement tant que la condition est vraie. Syntaxe : TantQue condition faire Instruction(s) FinTantQue L’exécution de la boucle dépend de la valeur de la condition. Si elle est vraie, le programme exécute les instruc- tions qui suivent, jusqu’à ce qu’il rencontre la linge FinTantQue. Il retourne ensuite sur la ligne du TantQue, procède au même examen, et ainsi de suite. La boucle ne s’arrête que lorsque la condition prend la valeur fausse, et dans ce cas le programme poursuit son exé- cution après FinTantQue. Exemple : Algorithme Contrôle_ de_ saisie Variables Rep : Caractère //déclaration des variables Début Écrire("Voulez vous une pause après une heure de cours ? ( O N)") Lire(Rep) Tantque Rep = ’O’ ET Rep = ’N’ faire Écrire ("Erreur de saisie ") Écrire ("Voulez vous une pause après une heure de cours ? ( O N)" ) Lire(Rep) FinTantQue Fin Remarque : • Étant donné que la condition est évaluée avant la mise en ?uvre des instructions, ce qui est une sécurité, il est pos- sible que celles-ci ne soient jamais exécutées. • Si une structure TantQue dans laquelle la condition ne devient jamais fausse, le programme tourne dans un boucle infinie et n’en sort plus. Exemple de boucle infinie : Dans l’exemple suivant nous somme en présence d’une boucle infinie, l’ordinateur ne s’arrêtera jamais d’afficher le message c’est une boucle infinie, car la variable I qui est testée dans la condition n’est jamais incrémentée.
  • 11. 2.2. LES STRUCTURES RÉPÉTITIVES 11 Exemple : Algorithme Boucle_ infinie I ←− 1 Tantque I <= 10 faire Écrire ("C’est une boucle infinie ") FinTantQue Exercice : i=N Écrire un algorithmequi calcule la somme S des N premiers entiers naturels : S = 1 + 2 + 3 + ... + N = i i=1 Solution : Algorithme Somme Variables S,I,N : entier //déclaration des variables Début Écrire("Entrez les valeur de N") Lire(N) S ←−0 I ←−I + 1 Tantque I<= N faire S ←−S + I I ←− I + 1 FinTantQue Écrire("La somme des ", N, "premiers entiers est :", S) Fin 2.2.3 La boucle Pour . . . Faire La boucle bf Pour . . . Fiare permet de répéter une liste d’instruction un nombre déterminé de fois. 2.ex] Syntaxe : TantQue condition faire Instruction(s) FinTantQue Syntaxe : Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Faire Instruction(s) Finpour La variable compteur est de type entier. Elle est initialisée à la valeur initiale. Le compteur augmente sa valeur de un automatiquement à chaque tour de boucle jusqu’à la valeur finale. Pour chaque valeur prise par la variable compteur, la liste des instructions est exécutée. Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sort de la boucle. Exemple : Les instructions suivantes : Pour k ←− 0 jusqu’à 10 faire Écrire ("7* ",k,"=", 7*k) Écrire ("") Finpour
  • 12. 12 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES affiche à l’écran la table de multiplication de 7 Exercice : i=10 Écrire un algorithmequi calcule la somme S des 10 premiers entiers naturels : S = 1 + 2 + 3 + ... + 10 = i i=1 Solution : Algorithme Somme Variables S,I : Entiers //déclaration des variables Début S ←−0 Pour I ←− 0 jusqu’à 10 Faire// Compteur S ←−S + I FinPour Écrire("La somme des ", 10, "premiers entiers est :", S) Fin Remarques : • Par défaut la variable compteur est incrémentée de 1 à chaque tour de boucle. • pour modifier la valeur d’incrémentation, il suffit de rajouter le mot Pas (en anglais step) et la valeur de ce pas à la boucle. Syntaxe : Syntaxe : Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Pas ValeurPas Faire Instruction(s) Finpour VI est la valeur initiale, et VF est la valeur finale Exercice : Écrire un algorithmequipermet de saisir un entier et qui calcule la somme S des entiers pairs compris entre zéro et ce nombres : Solution : Algorithme Somme_ Paire Variables S, I, N : Entiers //déclaration des variables Début Écrire(" Entrez la valeur de N : ") Lire( N) Pour I ←− 0 jusqu’à N Pas 2 Faire// Compteur S ←−S + I FinPour Écrire("La somme des nombres pairs est ;", S) Fin 2.2.4 La boucle Répéter . . . Jusqu’à Cette boucle sert une instruction jusqqu’à ce qu’une condition soit vraie. Solution : Cette boucle nr s’utilise en général que pour des menus, elle est dangereuse car il n’ y a pas de vérification de la condi- tion avant d’y entrer.
  • 13. 2.2. LES STRUCTURES RÉPÉTITIVES 13 Syntaxe : Répéter Instruction(s) Jusqu’à condition La liste est exécutée, puis la condition est évaluée. Si elle est fausse, le corps de la boucle est exécuté à nouveau puis la condition est réévaluée et si elle a la valeur vrai, le programme sort de la boucle et exécute l’instruction suit Jusqu’à. Exemple : En utilisant la boucle répéter . . . Jusqu’à, écrire un algorithmequi calcule la somme des N premiers nombres entiers. On suppose que N est strictement positif. Solution : Algorithme Somme Variables S, I, N : Entiers //déclaration des variables Début Écrire(" Entrez une valeur strictement positive : ") Lire( N) S ←− 0 I ←−1 Répéter S ←− S + I I ←−1 + I Jusqu’à I >= N Écrire("La somme des nombres ", N, "premiers entiers est ;", S) Fin Remarque : • Les boucles ≪ Répéter ≫ et ≪ TantQue ≫ sont utilisée lorsqu’on ne sait pas au départ combien de fois il faudra exécuter ces boucles. • A la différence de la boucle ≪ Tantque ≫ , la boucle ≪ Répéter ≫ est exécuter au moins un fois. • La condition d’arrêt de la boucle ≪ Répéter ≫ est la négation de la condition de poursuite de la boucle ≪ Tantque ≫. • On utilise la boucle la boucle ≪ Pour ≫ quand on connait le nombre d’itérations à l’avance.
  • 14. 14 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES
  • 15. Chapitre 3 Les Tableaux 3.1 Introduction Imaginons que dans uns programmes, nous avons besoin d’un grand nombre de variables, il devient alors difficile de donner un nom à chacune d’elles. Exemple : Écrire un algorithme permettant de saisir cinq notes et de les afficher après avoir multiplié toutes les notes par trois. Solution : Algorithme Note Variables N1, N2, N3,N4,N5 : Réel //déclaration des variables Début Écrire(" Entrez la valeur de la première note ") Lire( N1) Écrire(" Entrez la valeur de la deuxième note ") Lire( N2) Écrire(" Entrez la valeur de la troisième note ") Lire( N3) Écrire(" Entrez la valeur de la quatrième note ") Lire( N4) Écrire(" Entrez la valeur de la cinquième note ") Lire( N5) Écrire(" La note 1 multipliée par 3 est :" ; N1 *3) Écrire(" La note 2 multipliée par 3 est :" ; N2 *3) Écrire(" La note 3 multipliée par 3 est :" ; N3 *3) Écrire(" La note 4 multipliée par 3 est :" ; N4 *3) Écrire(" La note 5 multipliée par 3 est :" ; N5 *3) Fin La même instruction se répète Cinq fois , imaginons que si l’on voudrait réaliser cet algorithme avec 50 notes, cela deviendrait fastudieux. Comme les variables ont des noms différents, on ne peut pas utiliser de boucle, ce qui allonge considérablement le code et le rend très répétitif. 2.ex] Pour résoudre ce problème, il existe un type de données qui permet de définir plusieurs variables de même type. 3.2 Définition Un tableau est une suite d’éléments de même type. Il utilise plusieurs cases mémoire à l’aide d’un seul nom. Comme toutes les cases portent le même nom, elles se différencient par un numéro ou un indice. Nous pouvons représenter schématiquement un tableau nommé Note composée de cinq cases, dans la mémôire comme suit : Note[1] Note[2] Note[3] Note[4] Note[5] 12 14 13 11 17 15
  • 16. 16 CHAPITRE 3. LES TABLEAUX Nous disposons alors de cinq variables. Pour les nommer, on indique le nom du tableau suivi de son indice entre crochets ou entre parenthèses : La première s’appelle Note[1], la deuxième Note[2], etc. Jusqu’à la dernière N[5]. Note[4] représente le quatrième élément du tableau et vaut 11. 3.3 Tableau à une dimension 3.3.1 Déclaration La déclaration d’un tableau permet d’associer à un nom une zone mémoire composée d’un certain nombres de cases de même type. Syntaxe : Variable identificateur : tableau [indice_ min ... indice_ max] de type ou bien Variable identificateur : tableau [taille ] de type Notes : • Le premier élément d’un tableau porte l’indice zéro ou l’indice 1 selon les langages. • La valeur d’un indice doit être un nombre entier. • La valeur d’un indice doit être inférieur ou égale au nombre d’éléments du tableau. Par exemple, avec le tableau tab[1 ... 20]. Ces expressions font référence à des éléments qui n’existent pas. Exemple : L’instruction suivante déclare un tableau de 30 éléments de type réel : Variables Note : tableaau[1 .. 20] de réels Note : est le nom du tableau (identificateur). 1 : est l’indice du premier terme du tableau. 30 : est l’indice du dernier élément du tableau. Exercice : Déclaer deux tableaux només A et B composé chacun de 10 éléments de type chaine : Solution : Variables A, B : tableau[1.. 10] de chaîne Remarque : • Lorsqu’on déclare un tableau, on déclare aussi de façon implicite toutes les variables indicées qui le constituent. 3.3.2 Utilisation Les éléments d’un tableau sont des variables indicées qui s’utilisent exactement comme n’importe quelle autre variable classique. Elle peuvent faire l’objet d’une affectation, elles peuvent figurer dans une expression arithmétique, dans une comparaison, etc. L’utilisation de ces éléments se fait en suite, via le nom du tableau et son indice. Ce dernier peut être soit une valeur (exemple : Note[3]), soit une variable (exemple : Note[i]) ou une expression (exemple : Note[i+1]). Remarque : Il ne faut pas confondre l’indice d’un élément d’un tableau avec son contenu. Exemple : L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note : Syntaxe : X ←− Note[1]
  • 17. 3.3. TABLEAU À UNE DIMENSION 17 Exemple : L’instruction suivante affiche le contenu du quatrième élément du tableau Note : Syntaxe : Écrire (Note[4]) Exemple : L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note : Syntaxe : Lire (Note[3]) Parcours d’un tableau Le fait que les éléments d’un tableau soient indicés permet de parcourir tous ces éléments ave un boucle, on uti- lisant une variable qui sert d’indice et s’incrémente à chaque tour de boucle. Exercice : Écrire un algorithmepermettant de saisir 30 notes et de les afficher après avoir multiplier ces notes par un coefficient fourni par l’utilisateur : Solution : Algorithme Tableau_ note Variables Note : Tableau[1 . . 30] de réels// //déclaration des variables Coef,i : entier Début Écrire("Entrez le coefficient") Lire(Coef) // Remplissage du tableau Pour i ←− jusqu’à 30 Faire Écrire("Entrez la valeur de la note ", i) Lire(Note[i]) FinPour //Affichage des notes*Coef Pour i ←− jusqu’à 30 Faire Écrire(Note[i]*Coef) FinPour Fin Exercice : Écrire un algorithmequi calcule la somme des élément d’un tableau : Solution : On suppose que le nombre d’élément du tableau ne dépasse pas 100.
  • 18. 18 CHAPITRE 3. LES TABLEAUX Algorithme Somme_ Tableau Constante M=100 // //déclaration de la constante Variables T : Tableau[1 . . M] de réels // //déclaration des variables n,i : entier s : reel Début //Demande de la taille de du tableau Écrire("Entrez la taille du tableau") Lire(n) Si n >M alors N ←− M FinSi // Remplissage du tableau Pour i ←− jusqu’à n Faire Écrire("Entrez la valeur de l’élément ", i "du tableau) Lire(T[i]) FinPour //Calcul de la somme des éléments du tableau s ←− 0 Pour i ←− jusqu’à n Faire s ←−s + T [i ] FinPour Écrire("La somme des éléments de tableau est :" , s) Fin 3.4 Tableau à deux dimensions Reprenons l’exemple précédent et supposons qu’un étudiant a plusieurs notes ( une note par matière). Pour quatre étudiants nous aurons le tableau de relevé de notes suivant : Étudiant 1 Étudiant 2 Étudiant 3 Étudiant 4 Informatique 12 13 9 10 Les tableau à deux dimensions se représentent Comptabilité 12.5 14 12 11 Mathématiques 15 12 10 13 comme une matrice ayant un certain nombre de lignes (première dimension) et un certain nombre de colonnes (deuxième dimension). 3.4.1 Déclaration Syntaxe : Syntaxe : Variable identificateur : tableau [1 . . nb_ lignes,1 . . nb_ colonnes] de type ou bien Variable identificateur : tableau [nb_ lignes,nb_ colonnes ] de type Exemple : L’instruction suivante déclare un tableau de note de type réel à deux dimension composé de 3 lignes et de 4 colonnes. : Variable Note : tableau [1 . . 3, 1 . . 4] de réels 3.4.2 Utilisation Pour accéder à un élément de la matrice (tableau à deux dimensions), il suffit de préciser, entre crochets, les in- dices de la case contenant cet élément. Les éléments de la matrice peuvent être utilisés comme n’importe quelle variable.
  • 19. 3.5. TABLEAU DYNAMIQUE 19 Exemple : L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note. X ←− Note[1,1] 3.4.3 Parcours complet d’un tableau à deux dimensions Pour parcourir une matrice nous avons besoin de deux boucles, l’une au sein de l’autre, c’est ce qu’on appelle des boucles imbriquées. La première par exemple est pour parcourir les lignes et la deuxième est conçue pour parcourir les éléments de la ligne précisée par la boucle principale (la première boucle). Exercice : Écrire un algorithmequi permet de saisir des notes d’une classe de 30 étudiants en 5 matières. Solution : Algorithme Note Constante N=30 //déclaration des constantes M= 5 Variables note : tableau[1 . .N, 1 . . M] de réels //déclaration des variables i,j : entier Début // Remplissage du tableau Pour i ←− 1 jusqu’à N Faire Pour j ←− 1 jusqu’à M Faire Écrire("Entrez la note de l’étudiant " , i, "dans la matière ", j) Lire(note[i,j]) FinPour FinPour Fin 3.5 Tableau dynamique Les tableaux définis jusqu’à présent sont dit statiques, car il faut qu’au moment de l’écriture du programme le programmeur décide de la taille maximale que doit pourra atteindre le tableau. Si le programmeur donne un taille très grande alors qu’il n’a besoin que d’une petite taille, dans ce cas le programme consomme trop de mémoire. Dans certaines situations, on ne peut pas savoir à l’avance la taille du tableau. Les tableaux dynamiques sont des tableaux dont la taille n’est définie que lors de l’exécution. Pour Créer un tableau dynamique, il suffit de lui affecter une taille vide. Syntaxe : Variable identificateur : tableau [] de type FINIR CHAPITRE 3
  • 20. 20 CHAPITRE 3. LES TABLEAUX
  • 21. Chapitre 4 Les fonctions prédéfinies 4.1 Introduction Certains traitements sont complexes à effectuer par un aalgorithme. Par exemple, le calcul du cosinus d’un angle nécessite une formule complexe. Tous les langages de programmation ont un certain nombre de fonctions qui per- mettent de connaître immédiatement ce genre de résultat. certaines sont indispensables , car elles permettent d’effec- tuer des traitements qui, sans elles, seraient impossibles ; d’autre servent à soulager le programmeur, en lui épargnant de longs algorithmes. Tout langage de programmation dispose d’un ensemble de fonctions prédéfinies permettant de procéder à des conver- sions de type de données, de calcul mathématiques, de manipulation de chaînes de caractères etc. 4.2 Les fonctions de chaînes de caractères Une chaîne est une séquence de caractères dont la longueur correspond au nombre de caractères qu’elle contient. Si une chaîne est vide , sa longueur est nulle. Dans tous les autres cas, elle est égale à un entier positif. 4.2.1 Longueur d’une chaîne Syntaxe : Syntaxe : longueur(ch) Cette fonction retourne (renvoie) le nombre de caractères de la chaîne. Exemple : L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note : Syntaxe : longueur("bonjour") Cette fonction retourne 7 4.2.2 La fonction de concaténation de chaînes La concaténation est juxtaposition de deux chaînes (ou plus) afin de n’en former qu’une seule. Syntaxe : concat(ch 1, ch 2) Cette fonction retourne une chaine formée par la concaténation de ch 1 et de ch 2. 21
  • 22. 22 CHAPITRE 4. LES FONCTIONS PRÉDÉFINIES La chaîne obtenue est formée de ch 1 suivie de ch 2. Exemple : Concat("Bonjour","Monsieur") Concat("Bonjour","Monsieur") Concat("Bonjour," ", Monsieur") Le résultat de la première instruction est : Bonjour Monsieur. Le résultat de la deuxième instruction est : BonjourMonsieur. Le résultat de la troisième instruction est : Bonjour Monsieur. 4.2.3 La copie de chaînes Syntaxe : copie(ch 1, position, n) Cette fonction (recopie une partie de la chaîne 1 à partir de la position précisée par l’expression entière position, en limitant la recopie au nombre de caractères précisé par l’entier n. Exemple : Copie("Bonjour",4,4) Cette fonction retourne la chaine jour. 4.2.4 La fonction de comparaison de chaînes Syntaxe : comp(ch 1, ch 2) Cette fonction compare deux chaînes de caractères en utilisant l’ordre des caractères défini par le code ASCII. Elle fournit une valeur entière définie comme étant : −− positive si si chaîne 1 < chaîne 2 ; −− nulle si chaîne 1 = chaîne 2, c’est-à-dire si les deux chaines ont le contiennent exactement la même suite de carac- tère ; −− négative si chaine 1 < chaîne 2. Exemple : Comp("Bonjour"," Monsieur") Cette fonction retourne une valeur négative. 4.2.5 La fonction recherche dans une chaîne Il existe des fonctions de recherche dans une chaine de caractère de l’occurrence d’un caractère ou d’une autre chaîne de caractères. Syntaxe : recherche(ch 1, caractère) Cette fonction recherche, dans la chaîne, ch 1, la première position où apparait le caractère mentionné. recherche(ch 1, ch 2) Cette fonction recherche dans la chaîne ch 1, la première occurrence complète de la chaîne ch 2. Elle renvoie un nombre correspondant à la position de la chaîne ch 2 dans la chaîne ch 1. Si la chaîne ch 2 n’est pas comprise dans la chaîne ch 1, la fonction renvoie zéro. Exemple : recherche("Bonjour Monsieur", "jour")
  • 23. 4.3. LES FONCTIONS MATHÉMATIQUES 23 Cette fonction retourne 4. 4.3 Les fonctions mathématiques Les fonctions mathématiques prédéfinies permettent la réalisation d’un traitement mathématique sur des don- nées numériques. Fonction Description Exemple Résultat Ent(nombre) Retourne la partie entière du nombre x ←−Ent( 2.3) x= 2 Abs(Nombre) Retourne la valeur absolue du nombre x ←− Abs(- 2) x= 2 Cos(Angle) Retourne une valeur spécifiant le cosinus x ←−cos(0) x=1 d’un angle Sin(angle) Retourne une valeur spécifiant le sinus x ←−sin(0) x=O d’un angle ... .. ... ... Sqrt(nombre) Retourne la racine carrée d’un nombre x ←−Sqrt(9) x=3 positif Alea() Retourne un nombre aléatoire compris x ←− Alea() 0≤x <1 dans [0, 1[ La fonction Alea revoie un nombre aléatoire compris entre 0 et 1. Pour obtenir une valeur entière comprise entre min et max, on utilise la formule suivante : Ent ((max − mi n + 1) ∗ Alea() + mi n) Exemple : Générer un nombre aléatoire X compris entre 1 et 100. Syntaxe : X ←− Ent(100*Alea()+1)
  • 24. 24 CHAPITRE 4. LES FONCTIONS PRÉDÉFINIES
  • 25. Chapitre 5 Procédures et Fonctions 5.1 Introduction Lorsque l’on progresse dans la conception d’un algorithme, ce dernier peut prendre une taille et une complexité croissante. De même des séquences d’instructions peuvent se répéter à plusieurs endroits. Un algorithmeécrit d’un seul tenant devient difficile à comprendre et à gérer dès qu’il dépasse deux pages. La solution consiste alors à le découperen plusieurs partie plus petites. Ces parties sont appelées des sous Algorithmes. Le sous-algorithmeest écrit séparément du corps de l’algorithmeprincipal et sera appelé par celui-ci quand ceci sera nécessaire. Il existe deux sortes de de sous-algorithmes : les procédures et les fonctions. 5.1.1 Les procédures Une procédure est une série d’instructions regroupées sous un nom, qui permet d’effectuer des actions par un simple appel de la procédure dans un algorithmeou dans un sous-algorithme. Une procédure renvoie plusieurs valeurs ou aucune. 5.1.2 Déclaration d’une procédure Syntaxe : Procédures nom_ proc(liste de paramètres) Variable identificateurs :type début Instruction(s) FinProc Après le nom de la procédure, il faut donner la liste des paramètres (s’il y en a ) avec leur type respectif. Ces paramètres sont appelés paramètres formels. Leur valeur n’est pas connue lors de la création de la procédure. Exemple : Écrire une procédure qui affiche à l’écran une ligne de 15 étoiles puis passe à la ligne suivante. Solution : Procédure Etoiles() Variables i : entier Début Pour i ←−1 jusqu’à 15 Faire Écrire("*") FinPour // n : retour à la ligne Écrire(" n ") FinProc 25
  • 26. 26 CHAPITRE 5. PROCÉDURES ET FONCTIONS 5.1.3 L’appel d’une procédure Pour déclencher l’exécution d’une procédure dans un programme, il suffit de l’appeler. L’appelle s’écirt en mettant le nom de la procédure, puis la liste des paramètres, séparés par des virgules. Á l’appelle d’une procédure le programme interrompt son déroulement normal, exécute les instructions de la procé- dure, puis retourne au programme appelant et exécute l’instruction suivante. Syntaxe : Nom_ proc(liste de paramètres) Les paramètres utilisés lors de l’appel d’une procédure sont appelés paramètres effectifs. Ces paramètres donneront leurs valeurs aux paramètre formels. Exemple : En utilisant la procédure Etoiles déclarer dans l’exemple précédent, écrire un algorithmepermettant de dessiner un carré d’étoiles de 15 lignes. Solution : Algorithme Carré_ étoiles Variables Note : j entier // déclaration de la procédure Etoiles() Procédure Etoiles() Variable i : entier Début Pour i ←− jusqu’à 15 Faire Écrire("*") FinPour Écrire(" n ") FinProc //Algorithme principal (Partie principale) Début Pour j ←−1 jusqu’à 15 Faire // Appel de la procédure Etoiles Etoiles() FinPour Fin Remarques : 1 . Pour exécuter un algorithmequi contient des procédures et des fonctions, il faut commencer l’exécution à par- tir de la partie principale. 2 . Lors de la conception d’un algorithme deux aspects apparaissent : • la définition (déclaration) de la procédure ou fonction ; • l’appel de celles-ci au sein de l’algorithme principal. 5.1.4 Passage de paramètres Les échanges d’informations entre une procédure et sous algorithme appelant se font par l’intermédiaire de para- mètres. Il existe deux principaux types types de passages de paramètres qui permettent des usages différents : Passage par valeur : Dans ce type de passage le paramètre formel reçoit uniquementune copie de la valeur du paramètre effectif. La valeur du paramètre effectif ne sera jamais modifiée. Exemple : Soit l’algorithme suivant :
  • 27. 5.1. INTRODUCTION 27 Algorithme Passage_ par_ valeur Variables N : entier // Déclaration de la procédure P1 Procédure P1(A : entier) Début A ←− A*2 Ecrire (A) FinProc //Algorithme principal Début N ←− 5 P1(N) Ecrire (N) Fin Cet algorithme définit une procédure P1 pour laquelle on utilise le passage de paramètre par valeur. Lors de l’appel de la procédure, la valeur du paramètre effectif N est recopié dans le paramètre formel A. La procédure effectue alors le traitement et affiche la valeur de la variable A, qui vaut 10. Après l’appel de la procédure, l’algorithme affiche la valeur de la variable N qui est 5. La procédure ne modifie pas le paramètre qui est passé par valeur. Passage par référence ou par adresse Dans ce type de passage, la procédure utilise l’adresse du paramètre effectif. Lorsqu’on utilise l’adresse du para- mètre, on accède directement à son contenu. La valeur de la variable effective sera modifiée. Les paramètres passés par adresse sont précédés du mot clé Var. Exemple : Reprenons l’exemple précédent : Algorithme Passage_ par_ référence Variables N : entier // Déclaration de la procédure P1 Procédure P1(Var A : entier) Début A ←− A*2 Ecrire (A) FinProc //Algorithme principal Début N ←− 5 P1(N) Ecrire (N) Fin Á l’exécution de la procédure, l’instruction Écrire (A) permet d’afficher à l’écran 10. Au retour dans l’algorithme prin- cipal, l’instruction Écrire(N) affiche également 10. Dans cet algorithme le paramètre passé correspond à la référence (adresse) de la variable N. Elle est modifiée par l’instruction : A ←− A*2 Remarque : Lorsqu’il a plusieurs paramètres dans la définition d’une procédure, il faut absolument qu’il y ait le même nombre à l’appel et que l’ordre soit respecté. 5.1.5 Les fonctions Les fonctions sont des sous algorithmes admettant des paramètres et retournant un seul résultat (une seule valeur) de type simple qui peut apparaitre dans une expression, dans une comparaison, à la droite d’une affectation, etc. 5.1.6 Déclaration d’une fonction Syntaxe :
  • 28. 28 CHAPITRE 5. PROCÉDURES ET FONCTIONS Fonction nom _ fonction(liste de paramètres) : type Variables identificateurs : type Début Instruction (s) Retourner expression FinFonction La syntaxe de déclaration d’une fonction est assez proche de celle d’une procédure à laquelle on ajoute un type qui représente le type de la valeur retournée par la fonction et une instruction Retourner Expression. Cette dernière instruction renvoie au programme appelant le résultat de l’expression placée à la suite du mot clé retourner. Les paramètres sont facultatifs, mais s’il n’y a pas de paramètres, les parenthèses doivent rester présentes. Exemple : Définir une fonction qui renvoie le plus grand de deux nombres différents : Solution : //Déclaration de la fonction Max Fonction Max(X : réel, Y : réel) : réel Algorithme Passage_ par_ valeur Variables N : entier // Déclaration de la procédure P1 Début Si X > Y alors Retourner X Sinon Retourner Y FinSi FinFonction L’appel d’une fonction Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivie des paramètres effectifs. C’est la même syntaxe qu’une procédure. Á la différence d’une procédure, la fonction retourne une valeur. L’appel d’une fonction pourra donc être utilisé dans une instruction (affichage, affectation, . . .) qui utilise sa valeur. Syntaxe : Nom_ Fonc(liste de paramètres) Exemple : Écrireun algorithme appelant, utilisant la fonction Max de l’exemple précédent Solution :
  • 29. 5.1. INTRODUCTION 29 Algorithme Appel_ fonction_ Max Variables A, B, M : réel // Déclaration de la fonction Max Fonction Max (X : réel, Y : réel) : réel Début Si X > Y alors Retourner X Sinon Retourner Y FinSi FinFonction //Algorithme principal Début Écrire ("Donner la valeur de A") Lire (A) Écrire ("Donner la valeur de B") Lire (B) // Appel de la fonction Max M ←− Max(A,B) Écrire (" Le plus grand de ces deux nombres est :" , M) Fin 5.1.7 Portée des variables La portée d’une variable désigne le domaine de visibilité de cette variable. Une variable peut être déclarée dans deux emplacements distincts. Une variable déclarée dans la partie déclaration de l’algorithmeprincipal est appelée variable globale. Elle est acces- sible de n’importe où dans l’algorithme, même depuis les procédures et les fonctions. Elle existe pendant toute la durée de de vie du programme. Une variable déclarée à l’intérieur d’une procédure (ou une fonction) est dite locale. Elle n’est accessible qu’à la pro- cédure au sein de laquelle est est définie, les autres procédures n’y on pas accès. La durée de vie d’une telle variable (locale) est limité à la durée d’exécution de la procédure. Exemple : Algorithme Portée Variables X, Y : Entier X et Y sont deux variables globales, visibles dans tout le programme. Procédure P1() Vaviable A : entier A est une variable locale, visible uniquement à l’intérieur de la procédure. Début ... FinProc //Algoritme principal Début ... Fin Remarque : Les variables globales sont à éviter pour la maintenance des programmes. 5.1.8 La récursivité Une fonction ou une procédure est dite récursive si elle s’appelle elle même. Exemple : Écrire une fonction récursive permettant de calculer la factorielle d’un entier positif. Solution : n !=n*(n-1)*(n-2)...*3*2 ; n !=n*(n-1) !
  • 30. 30 CHAPITRE 5. PROCÉDURES ET FONCTIONS //Déclaration de la fonction Factorielle (Fact) Fonction Fact(n : entier) : entier Début Si n > 1 alors retourne (fact(n-1)*n) Sinon retourne 1 FinSi FinFonction Dans cet exemple, la fonction renvoie 1 si la valeur demandée est inférieure à 1, sinon elle fait appel à elle même avec un paramètre inférieur de 1 par rapport au précédent. Les valeurs de ces paramètres vont en décroissant et attein- dront à un moment la valeur 1. Dans ce cas, il n’y a pas d’appel récursif et donc ont sort de la fonction. Remarque : Toute procédure ou fonction récursive comporte une instruction (ou un bloc d’instruction) nommée "point terminal" permettant de sortir de la procédure ou de la fonction. Le point terminal dans la fonction récursive Fact est : retourne 1. 5.1.9 Avantage des procédures et de fonctions • Le procédures ou fonctions permettent de ne pas répéter plusieurs fois une même séquence d’instruction au sein du programme (algorithme). • La mise au point du programme est plus rapide en utilisant des procédures et des fonctions. En effet, elles peuvent être réalisées en dehors du contexte du programme et appelées après par le programme. • Une procédure peut être intégrée à un autre programme, ou elle pourra être rangée dans une bibliothèque d’outils.
  • 31. Chapitre 6 Exercices 6.1 T D 1 : Instructions de base d’un algorithme Exercice 1 : Moyenne de deux nombres Écrire un algorithmepermettant de calculer la moyenne de deux entiers. Exercice 2 : Une entreprise accorde à ses clients, une remise de 3% sur le montant d’achat. Écrire un algorithmepermettant de saisir le montant d’achat MA et de calculer le montant de la remise R ainsi que le montant à payer MP. Exercice 3 : Écrire un algorithme qui permute les valeurs de deux variables. Exercice 4 : Évaluation des expressions Donner les valeurs des variables a, b, c, d ,e, g, h, i, j et k. Expression Valeur de la variable a ←− 7/2 b ←−7 Div 2 c←− 7 Mod 2 d←−’t’< ’w’ e←− "Maman" > "Papa" f←− (6 = 2) g←− maman > "papa" h←− Non(5=2) i←− (4 < 6) et (9> 5) j←− (2 < 0) ou ((4<> 4) k ←− ’A’ < ’a ’ Exercice 5 : Équivalent d’une expression Donner l’équivalent des expressions booléennes suivantes en utilisant uniquement les opérateurs logiques : Et, Ou, Non. Expression Équivalent x=2 x<2 x-2 > 7 0 < X <3 3*x > 18 a OUex b Non (x ≥ 0) Non (Note < 0 ou Note > 20) 31
  • 32. 32 CHAPITRE 6. EXERCICES Exercice 6 : Priorité des opérateurs En se basant sur les règles de priorité donnez les valeurs des variables suivantes. a ←− 4*2 + 5 b ←− 5+ 3*2- 6 c ←− a > b Et 7 ± 2 Ou a < b d ←− a > 7 Et 7 = 2 Ou a < b 6.2 T D 2 : Les Structures alternatives et répétitives à Exercice 1 : Parité Écrire un algorithme qui détermine si un nombre entier n est pair ou impair. Exercice 2 : Maximum de deux nombres Écrire un algorithme qui permet d’afficher le maximum de deux nombres saisis au clavier. Exercice 3 : Écrire un algorithme qui teste si une note saisie au clavier est comprise entre 0 et 20. Exercice 4 : Nombre de racines d’une équation du second degré Écrire un algorithme permettant de déterminer le nombre de racines de l’équation : ax 2 + bx + c = 0, a=0 Exercice 5 : Équation du premier degré Écrire un algorithme qui permet de résoudre l’équation : ax + b = 0 Exercice 6 : Simulation d’une calculatrice (4 touches) Écrire un algorithme qui permet de saisir deux variables réelles a et b et un opérateur : +, -, *, / et d’afficher le résultat. Exercice 7 : Mention Écrire un algorithme qui lit la moyenne générale MG d’un étudiant et affiche la mention. Exercice 8 : Maximum de dix nombres Écrire un algorithme qui permet d’afficher le maximum parmi dix nombres saisis au clavier. Exercice 9 : Factorielle d’un nombre entier Écrire un algorithme permettant de saisir un nombre entier naturel non nul n et de calculer sa factorielle. Exercice 10 : Moyenne des notes Écrire un algorithme permettant de saisir N notes, de calculer leur somme et leur moyenne. Exercice 11 : Rectangle d’étoiles Écrire un algorithme qui affiche à l’écran le rectangle d’étoiles qui contient 10 lignes de 19 étoiles Exercice 12 : Tri- angle d’étoiles Écrire un algorithme qui affiche à l’écran le triangle : * * * * * * * * * * * * * * *
  • 33. 6.3. T D 3 : OPÉRATIONS SUR LES TABLEAUX 33 Exercice 13 : Pyramide d’étoiles Écrire un algorithme qui affiche à l’écran la pyramide d’étoiles ci-dessous. Chaque ligne comporte 19 caractères (es- paces ou étoiles) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * Exercice 14 : PGCD Écrire un algorithme qui calcul le PGCD de deux nombres entier non nuls a et b (a>b). Exercice 15 : Suite numérique Soit la suite numérique U n définie par : Si n = 0 U0 = 4 Si n > 0 U n = 5U n−1 + 9 Écrire un algorithme qui calcule le terme U n et la somme S n = U 0 +U 1 + ... +U n Exercice 16 : Suite de Fibonacci Écrire un algorithme qui détermine le terme U n de la suite de Fibonacci définie comme suit : U0 = 4 U1 = 1 U n = U n−1 +U n−2 , si n > 2 6.3 T D 3 : Opérations sur les tableaux Exercice 1 : Nombre de moyennes 10 En utilisant les tableaux, écrire an algorithme qui permet la saisie d’une liste de n moyennes réelles et d’afficher le nombre de moyennes supérieures ou égales à 10. On supposera que n <100) Exercice 2 : Permutation des éléments d’un tableau Écrire un algorithme qui permute les éléments d’un tableau de 8 éléments en plaçant le dernier en premier et ainsi de suite, voir exemple suivant. 12 34 5 43 55 56 23 1 Tableau initial 1 23 56 55 43 5 34 12 Tableau final Exercice 3 : Maximum des moyennes d’une classe Écrire un algorithme qui permet la saisie des moyennes d’une classe de n étudiants et affiche le maximum. Exercice 4 : Trier un tableau Écrire un algorithme qui permet la saisie de 4 moyennes et de les classer selon l’ordre croissant.
  • 34. 34 CHAPITRE 6. EXERCICES Exercice 5 : Tableau à deux dimensions Écrire un algorithme qui permet : • la saisie des notes d’une classe de 15 étudiants en 4 matières ; • calcule et affiche la moyenne de chaque étudiant ; • calcule et affiche la moyenne de la classe dans chaque matière ; • calcule et affiche la moyenne générale de la classe. Exercice 6 : Produit de deux matrices Écrire un algorithme qui calcule la matrice C qui est le produit de deux matricesA nm et B nk 6.4 T D 4 : Les structures Exercice 1 : Structure personne Écrire un algorithme qui : • Définit une structure Personne qui contient trois champs : nom, prénom et âge. • déclare deux variables étudiant 1 et étudiant 2 de type personne. Calcule la différence d’âge entre les deux étudiants. Exercice 2 : Structure imbriquée Étudiant est une structure composée de trois champs : nom, prénom, date_ de_ naissance. Nom et prénom sont de type chaîne. Date_ de_ naissance est de type N_ Date N_ Date est une structure composée de trois champs : jour, mois et année. Jour et année sont de type entiers, mois de type chaîne. Écrire un algorithme qui permet de saisir et d’afficher l’année de naissance d’un étudiant. 6.5 T D 5 : Les fonctions prédéfinies Exercice 1 : Nombre de mots dans une phrase Écrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de mots la composant. Exercice 2 : Nombre de voyelles dans une phrase Écrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de voyelles contenues dans celle ci en utilisant la fonction recherche. Exercice 3 : Remplacement d’un caractère par un autre. Soit une phrase qui contient des mots séparés par des slashes ≪ / ≫ , par exemple : "Dupitre/ Jean et ac / Étudiant En SIO / Tel 0606061243. Écrire un algorithme qui remplace les ≪ / ≫ en ; Exercice 4 : Affichage d’une chaîne en inverse Écrire un algorithme qui permet de saisir une chaine de caractères et l’afficher en inverse. Exercice 5 : Concaténation des chaînes de caractères Écrire un algorithme qui demande à l’utilisateur d’entrer une chaine de caractère (une date) sous la forme JJMMAA et qui affiche cette datte sous la forme JJ/MM/AA. 6.6 T D 6 : Les fonctions et procédures Exercice 1 : Fonction Moyenne
  • 35. 6.6. T D 6 : LES FONCTIONS ET PROCÉDURES 35 En se basant sur l’algorithme de l’exercice 1 du T D 1, écrire le sous-algorithme de la fonction Moyenne qui revoie la moyenne de deux entiers. Écrire un algorithme qui contient la déclaration de la fonction moyenne et des instructions qui appellent cette fonc- tion. Exercice 2 : fonction f (x) = 3x 3 + 4x + 8 Écrire un algorithme qui contient la déclaration de la fonction f (x) = 3x 3 + 4x + 8 et affiche le résultat pour x=1, X=2 et x=2.7. Exercice 3 : Fonction PGCD récursive Écrire un algorithme qui calcule le PGCD de deux entiers naturels a et b non nuls (a>b) en utilisant une fonction ré- cursive. Exercice 4 : Fonction somme récursive Écrire un algorithme qui calcule : S n = 1 + 2 + 3 + ... + (n1 ) + n en utilisant une fonction récursive. Exercice 5 : Exercice 6 : Exercice 7 : Exercice 8 : Exercice 9 : Exercice 10 : Exercice 11 :