Les outils de base de l’algorithmique


Les outils de base de l’algorithmique
 
Exercice 1 :

Ecrire un algorithme qui demande les coordonnées de deux points dans le plan, calcule et affiche à l’écran la distance entre ces deux points.
N.B.  
la distance entre deux points A(x1,y1) et  B(x2,y2)    est :    AB= sqrt((x2-x1)^2  + (y2-y1)^2) 
on donne la fonction sqrt(x) qui renvoie la racine carrée d’un nombre réel  x .

Solution :
Algorithme  calcul_distance;
Var
      X1,x2,y1,y2,s : réels ;
Debut
            Ecrire(‘entrer la valeur de x1 : ‘) ;
            Lire(x1) ;
            Ecrire(‘’ entrer la valeur de y1 : ‘’) ;
            Lire(y1) ;
Ecrire(‘’ entrer la valeur de x2 : ‘’) ;
            Lire(x2) ;
Ecrire(‘’ entrer la valeur de y2 : ‘’) ;
            Lire(y2) ;
            S <-- sqrt((x2-x1)^2  + (y2-y1)^2) ;
            Ecrire(‘la distance entre A(‘ ,x1,’,’,y1,’) et  B(‘,x2,’,’,y2,’) est :  ‘,s) ;
fin


Exercice 2 :

Elaborer un algorithme permettant de demander les valeurs de trois résistances r1,r2 et r3 et de calculer et afficher leurs résistances équivalente dans les deux cas suivants :
N.B.  
Lorsque ces résistances sont branchées en série :
                                     Rser = r1+r2+r3
Lorsque ces résistances sont branchées en parallèle :
                           Rpar=(r1*r2*r3)/(r1*r2+r1*r3+r2*r3)
 
Solution :
Algorithme  calcul_resistance;
Var
      r1,r2,r3,Rpar,Rser: réels ;
Debut
                Ecrire(‘entrer la valeur de r1 : ‘) ;
                Lire(r1) ;
                Ecrire(‘ entrer la valeur de r2 : ’) ;
                Lire(r2) ;
Ecrire(‘ entrer la valeur de r3 :  ’) ;
                Lire(r3) ;
                Rser <--  r1+r2+r3;
                Rpar <--  (r1*r2*r3)/(r1*r2+r1*r3+r2*r3) ;
                Ecrire(‘ la résistance équivalente a r1 ,r2 et r3 en série est : ‘,Rser) ;
Ecrire(‘ la résistance équivalente a r1 ,r2 et r3 en parallèle  est : ‘,Rpar) ;
fin
 
Exercice 3 :

Ecrire un algorithme qui permet de calculer la surface d’un triangle quelconque  dont les cotés  ont une longueur donnée : a,b et c .
N.B.  
           S= sqrt(r*(r-a)*(r-b)*(r-c))      avec :     r =(a+b+c)/2
 

 Solution :
Algorithme  calcul_surface;
Var
      a,b,c,r,s : réels ;
Debut
                Ecrire(‘entrer la longueur du côté a  : ‘) ;
                Lire(a) ;
                Ecrire(‘entrer la longueur du côté b  : ‘) ;
                Lire(b) ;
    Ecrire(‘entrer la longueur du côté c  : ‘) ;
                Lire(c) ;
                r  <--    (a+b+c)/2 ;
                S <-- sqrt(r(r-a)(r-b)(r-c)) ;
                Ecrire(‘la surface du triangle abc est :  ‘,s);
Fin
 
Exercice 4 :

Dans une école un étudiant passe quatre matières à l’examen :
1ère  matiere écrite   :   coefficient =3
2ème matiere ecrite :     coefficient =2 
1ère matiere orale :       coefficient =4
2ème matière orale :     coefficient =5
Le coefficient de l’ecrit est 6, celui de l’orale est 1 dans le calcul de la moyenne generale.
Ecrire un algorithme permettant d’entrer toutes les notes de calculer et d’affficher la moyenne de l’ecrit ,celle de l’orale et la moyenne génerale.

Solution :
Algorithme  calcul_note;
Var
             me1,me2,mo1,mo2,moy : réels ;
const
             cme1=3 ;
             cme2=2 ;
              cmo1=4 ;
             cmo2=5 ;
Debut
                Ecrire(‘entrer la  note du 1ère matiere écrite : ‘) ;
                Lire(me1) ;
                Ecrire(‘entrer la  note du 2ème matiere écrite : ‘) ;
                Lire(me2) ;
    Ecrire(‘entrer la  note du 1ère matiere orale : ‘) ;
                Lire(mo1) ;
    Ecrire(‘entrer la  note du 2ème matiere orale: ‘) ;
                Lire(mo2) ;
                moy<--  (me1*cme1+me2*cme2+mo1*cmo1+mo2*cmo2)/(cme1+cme2+cmo1+cmo2) ;
   Ecrire(‘ la moyenne generale est   :  ‘,moy) ;
fin
 
Exercice 5 :

Ecrire un algorithme qui lit trois nombres dans trois variables A ,B et C , puis fait la permutation circulaire de ces trois nombres (sens trigonométrique) et affiche les nouveaux contenus des variables A,B et C .

Solution :
Algorithme  calcul_permutation;
Var
            A,b,c,aux : réels ;
Debut
                Ecrire(‘entrer la  de a : ‘) ;
                Lire(a) ;
                Ecrire(‘entrer la  de b : ‘) ;
                Lire(b) ;
    Ecrire(‘entrer la  de c : ‘) ;
                Lire(c) ;
    Ecrire(‘a = ‘,a,’     b= ‘,b,’         c=’,c) ;
                Auxß c ;
                a<--  b ;
                b<--  a ;
                a<--  aux ;
Ecrire(‘a = ‘,a,’     b= ‘,b,’         c=’,c) ;
fin
 
Exercice 6 :

Soit N un nombre entier. Proposer une opération avec laquelle nous pourrons conclure si le nombre N est pair ou impair.

Solution :
Algorithme  parite;
Var
      N :entier;
Debut
                Ecrire(‘entrer  un entier : ‘) ;
                Lire(N) ;
                Si  N mod 2 =0 alors
        Ecrire(‘le nombre est pair);
    Else
         Ecrire(‘le nombre est impair .’);
   Finsi
fin
 
Exercice 7 :

Ecrire un algorithme qui calcule le périmetre d’un cercle : p=2*π*R

Solution :


Algorithme  calcul_perimetre;
Const
           Pi=3.14 ;
Var
            R,p: réels ;
Debut
                Ecrire(‘entrer le rayon R : ‘) ;
                Lire(R) ;
                P<--  2*pi*R
Ecrire(‘ le perimetre du cercle R=’,R,’ est   :’,p) ;
fin




Instructions conditionnelles et alternatives
 
Exercice 1 :
Ecrire un algorithme qui calcule la valeur absolue d’un nombre réel .
|x|= x  si    x>0
|x|= -x  si   x<0
 
Solution :
Algorithme  valeur_absolue;
Var
      X :réels;
Debut
                Ecrire(‘entrer  un nombre : ‘) ;
                Lire(X) ;
                Si  X>0 alors
        Ecrire(‘la valeur absolue de X=’,X);
    Sinon
         Ecrire(‘la valeur absolue de X=’,X);
    Finsi
fin
 
Exercice 2 :
 
Ecrire un algorithme qui permet d’afficher la valeur absolue de la différence entre deux nombres réels saisis au clavier.
|x-y|= x –y  si    x>y
|x-y|= -(x –y)  si   x<y
 
 
Solution :
Algorithme  valeur_absolue;
Var
      x,y :réels;
Debut
                Ecrire(‘entrer  x : ‘) ;
                Lire(x) ;
                Ecrire(‘entrer  y : ‘) ;
                Lire(y) ;
    Si  x>y  alors
        Ecrire(‘la valeur absolue de x-y=’,x-y);
    Sinon
         Ecrire(‘la valeur absolue de x-y =’,y-x);
    Finsi
fin
 
Exercice 3 :
 
On désire écrire un algorithme qui permet d’afficher le jour correspondant à un chiffre allant de 1 à 7 , entré au clavier.
Résoudre ce problème avec deux méthodes :  (si imbriquée , primitive cas).
 
 
Solution 1 :
Algorithme  affichage_jour;
Var
      jour :entier;
Debut
                Ecrire(‘entrer  un chiffre de 1 a 7 : ‘) ;
                Lire(jour) ;
Si  jour=1 alors
        Ecrire(‘ lundi ’);
Sinon Si  jour=2  alors
             Ecrire(‘ mardi ’);
           Sinon Si  jour=3  alors
                        Ecrire(‘ mercredi ’);
                 Sinon Si  jour=4  alors
                               Ecrire(‘ jeudi ’);
                         Sinon Si  jour=5  alors
                                        Ecrire(‘vendredi’);
                                   Sinon Si  jour=6  alors
                                                 Ecrire(‘samedi’);
                                               Sinon  Si  jour=2  alors
                                                                  Ecrire(‘dimanche’);
                                                           Sinon                                                                                                                                                                                                                                                                                                 
                                                                 Ecrire(‘ce n’est pas un jour de semaine’);
                                                            Finsi
                                               Finsi 
                                     Finsi
                          Finsi
                  Finsi
Finsi
      Finsi
fin
 
Solution 2 :
Algorithme  affichage_jour;
Var
      jour :entier;
Debut
                Ecrire(‘entrer  un chiffre de 1 a 7 : ‘) ;
                Lire(jour) ;
                Cas  jour
                               1 : Ecrire(‘LUNDI ‘) ;
               2 : Ecrire(‘MARDI ‘) ;
               3 : Ecrire(‘MERCREDI ‘) ;
                4 : Ecrire(‘JEUDI ‘) ;
                5 : Ecrire(‘VENDREDI ‘) ;
                6 : Ecrire(‘SAMEDI ‘) ;
                7 : Ecrire(‘DIMANCHE ‘) ;
             Sinon
                         Ecrire(‘ il faut choisir un nombre entre 1 et 7 !!!! ‘) ;
FinCas
fin
 
Exercice 4 :
 
Ecrire un algorithme qui permet de saisir deux nombres entiers x ,y et les afficher à l’écran dans l’ordre croissant.
 
 
Solution :
Algorithme  tri_deux_nombre;
Var
      x,y :réels;
Debut
                Ecrire(‘entrer  x : ‘) ;
                Lire(x) ;
                Ecrire(‘entrer  y : ‘) ;
                Lire(y) ;
    Si  x>y  alors
        Ecrire(y,’          ‘,x);
   Sinon
         Ecrire(y,’         ‘,x);
   Finsi
fin
 
Exercice 5 :
 
Ecrire un algorithme qui teste si une année est bissextile ou non.
N.B.
Une année est bissextile si elle est divisible par 4 et pas par 100 ou si elle est divisible par 400.
 
 
Solution :
Algorithme  annne_bissextile;
Var
      annee :réels;
Debut
                Ecrire(‘entrer  l’année : ‘) ;
                Lire(annee) ;
    Si  ((annee mod 4 =0 et annee mod 100 <> 0) ou annee mod 400 =0 )  alors
        Ecrire(‘l’année que vous avez entrer est bissextile .’);
    Sinon
         Ecrire(‘l’année que vous avez entrer n’ est pas  bissextile .’);
    Finsi
fin
 
Exercice 6 :
 
Ecrire un algorithme permettant de résoudre une équation de deuxième degré :  ax²+bx+c=0 .
 
 
Solution :
Algorithme  calcul_permutation;
Var
            A,b,c,d : réels ;
Debut
                Ecrire(‘entrer le coefficient a : ‘) ;
                Lire(a) ;
                Ecrire(‘entrer le coefficient  b : ‘) ;
                Lire(b) ;
Ecrire(‘entrer le coefficient  c : ‘) ;
                Lire(c) ;
                Si a=0 alors
                     Si b=0 alors
                            Si c=0 alors
                                  Ecrire(‘ la solution est   : S = R’) ;
                               sinon
                                    Ecrire(‘ l’equation n’a pas de solution ’) ;
                            Finsi
                     sinon
                           Ecrire(‘la solution est   : S = ’,-c/b) ;
                     Finsi
                sinon
                     D<-- b*b-4+a*c ;
                      Si d=0 alors
                           Ecrire(‘la solution est   : S = ’,-b/(2*a)) ;
                      Sinon si d>0 alors
                                       Ecrire(‘l’equation a deux solution:  S1= ’,(-b-/(2*a) ,’ et  S2 = ‘,(-b+/(2*a)) ;
                                   Sinon
                                         Ecrire(‘l’equation n’a pas de solution dans R ’) ;
                                    Finsi
                        Finsi
               Finsi                                
fin
 
Exercice 7 :
 
Une librairie décide de faire des remises sur les prix d’abonnement à une revue scientifique selon le menu suivant :
Ancien abonné : -15%
Etudiant              : -20%
Nouvel abonné : 00%
Etranger             : + 25%
Le calcul du prix d’abonnement de fait en fonction du tarif normal d’abonnement (TN) et de la qualité de l’abonné (Q). (une seule qualité est acceptée par abonné).
Ecrire un algorithme permettant de calculer le prix à payer.
 
 
Solution :
Algorithme  librairie;
Var
      Q : entier ;
      TN,TR,R,RAP :réels;
Debut
                Ecrire(‘Entrer le tarif normal : ‘) ;
                Lire(TN) ;
              Ecrire(‘--------------- MENU -----------------------‘) ;
              Ecrire(‘----------Ancien Abonné------------------ 1‘) ;
              Ecrire(‘-----------------Etudiant------------------- 2‘) ;
Ecrire(‘-----------------Nouvel abonné--------------- 3‘) ;
                Ecrire(‘-------------------Etranger---------------------- 4‘) ;
               Ecrire(’Entrer la qualité de l’abonné ? ‘’) ;
                Lire(Q) ;
                Cas Q
                               1 : TR <--  -0.15 ;
                               2 : TR <--  -0.20 ;
                               3 : TR <--  -0.00 ;
                               4 : TR <--  +0.25 ;
                Fincas
                Si (Q<1) ou (Q>4) alors
                      Ecrire(‘Erreur de choix’) ;
               Sinon
                           R <--  TN *TR ;
                           PAR <--  TN+R ;
                             Ecrire(‘Le prix à payer est :’,PAP) ;
                Finsi
Fin
 
Exercice 8 :
 
Ecrire un algorithme de résolution.
On dispose de trois nombres réels saisis au clavier.
Selon un choix effectué a partir d’un menu affiché a l’ecran, on désire calculer la somme ou le produit ou la moyenne ou chercher le minimum de ces trois nombres.
Le menu doit se présenter a l’ecran de la manière suivante :
------------------ MENU ---------------------
1 --------------somme ----------------------
2---------------produit ----------------------
3---------------Moyenne -------------------
4---------------Minimum -------------------
5---------------Maximum ------------------
-------------------------------------------------
Entrez votre choix ?
 
 
Solution :
Algorithme  calcul;
Var
        X,Y,Z,R:réels;
        Choix : caractère ;
Debut
                Ecrire(‘Entrer le premier nombre : ‘) ;
                Lire(X) ;
    Ecrire(‘Entrer le deuxième nombre : ‘) ;
                Lire(Y) ;
    Ecrire(‘Entrer le troisième nombre : ‘) ;
                Lire(Z) ;
                Ecrire(‘--------------- MENU -----------------------‘) ;
                Ecrire(‘------------------Somme------------------- 1‘) ;
                Ecrire(‘----------------- Produit-------------------- 2‘) ;
    Ecrire(‘------------------Moyenne----------------- 3‘) ;
                Ecrire(‘-----------------Minimum------------------ 4‘) ;
                Ecrire(‘-----------------Maximum------------------ 5‘) ;
                Ecrire(’Entrer  votre choix ? ‘’) ;
                Lire(choix) ;
                Cas choix
                               1 : R <--  X+Y+Z;
                               2 : R <--  X*Y*Z;
                               3 : R <--  (X+Y+Z)/3;
                               4 :          Si  X<Y   Alors
                                        R ß X ;
                                Sinon
                                   R <--  Y ;
                                 Finsi
                                Si  Z<R  Alors
                                    R <--  Z ;
                                finsi
                 5 :         Si X>Y  alors
                                   R <--  X ;
                                Sinon
                                    R <--  Y ;
                              Finsi
                              Si  Z>R  Alors
                                  R <--  Z ;
                               finsi
                Fincas
                Si (choix>=1 ) et (choix<=5) alors
                    Ecrire(‘Le resultat est : ’,R) ;
                Sinon
                    Ecrire(‘votre choix est mauvais … !’) ;
              Finsi
          Fincas
               Si (Q<1) ou (Q>4) alors
                      Ecrire(‘Erreur de choix’) ;
               Sinon
                           R <--  TN *TR ;
                           PAR <--  TN+R ;
                             Ecrire(‘Le prix à payer est :’,PAP) ;
                Finsi
Fin
 
Exercice 9 :
 
Ecrire un algorithme qui compare deux dates représentées chacune par trois entiers.
 
 
Solution :
Algorithme  compare_date;
Var
            j1,m1,a1,j2,m2,a3: réels ;
Debut
                Ecrire(‘************date 1 ***********‘) ;
                Ecrire(‘jour: ‘) ;
                Lire(j1) ;
                Ecrire(‘Mois : ‘) ;
                Lire(m1) ;
    Ecrire(‘Année : ‘) ;
                Lire(a1) ;
                Ecrire(‘************date 2 ***********‘) ;
                Ecrire(‘jour: ‘) ;
                Lire(j2) ;
                Ecrire(‘Mois : ‘) ;
                Lire(m2) ;
    Ecrire(‘Année : ‘) ;
                Lire(a2) ;
                Si  a1>a2  alors
                     Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
                Sinon si a1<a2 alors
                                 Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
                          Sinon Si  m1>m2  alors
                                              Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
                                       Sinon si m1<m2 alors
                                                       Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
                                                 Sinon Si  j1>j2  alors
                                                                         Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
                                                               Sinon si j1<j2 alors
                                                                        Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
                                                             Finsi
                                                     Finsi
                                         Finsi
                               Finsi
              finsi                                
fin
Copyright © 2012 OFPPT - Site officiel de communication - Tous droits réservés
ofppt.01.ma © 2017.Free Web Site