Exercice Algorithme : Structures et Fonctions

Exercice (1) : Structures (SI…ALORS…SINON et SELON…QUE)

Objectif: Réaliser des Algorithmes en utilisant les structures SI…ALORS…SINON et SELON…QUE

Enoncé de l'Exercice


Créer les Algorithmes permettant de:

  1. Ecrire une action qui fournit les félicitations ou l’ajournement d’un élève suivant sa note en utilisant Si-alors-sinon.
  2. Ecrire un programme qui donne la valeur absolue de 2 réels :
  3. Faire un programme qui donne le volume d’un cylindre en faisant appel à une fonction ‘aire d’un cercle’.
  4. Ecrire un algorithme permettant de résoudre une équation du premier degré

Solution :

1. Ecrire une action qui fournit les félicitations ou l’ajournement d’un élève suivant sa note en utilisant Si-alors-sinon. 

Action : Jury

Var : note : réel

Début : lire (note)

Si note

Sinon écrire (« reçu »)

Fin

2. Ecrire un programme qui donne la valeur absolue de 2 réels :

Action : Valeur_absolue

Var : a, b : réels

Début : Ecrire (« saisissez 2 réels »)

Lire (A, B)

Ecrire « les valeurs absolues de A et de B sont : »)

Si A

Sinon écrire (A)

Ecrire (« et »)

Si B

Sinon écrire (A)

Fin

Remarque : on peut aller plus vite en créant une fonction valeur absolue et en faisant appel à cette fonction dans une action :

Fonction : valAbs (x :réel) :réel

Var : absx : réel

Début : si x

Sinon absx

Retourner absx

Fin

Et

Action : Valeur_absolue2

Var : A, B réels

Début : Ecrire (« saisissez 2 réels »)

Lire (A, B)

Ecrire (« les valeurs de A et B sont : », valAbs(A), « et », valAbs(B))

3. Faire un programme qui donne le volume d’un cylindre en faisant appel à une fonction ‘aire d’un cercle’.

Fonction : aire_cercle (rayon :réel) :réel

Var : Aire : réel

Const : PI=3.14

Début : Aire

Retourner (Aire)

Fin

Fonction : volume_cercle (hauteur, rayon :réels) :réel

Var : volume : réel

Début : Volume

Retourner volume

Fin

4. Ecrire un algorithme permettant de résoudre une équation du premier degré

Action : premierdegre

Var : a, b, x réels

Début : Ecrire (« saisissez les valeurs a et b de l’équation ax+b=0 : »)

Lire (a, b)

Si a = 0 alors écrire (« pas de solution »)

Sinon écrire (« la solution est x= », -b/a)

Fin

Exercice (2) : Equation du second degré

Objectif: Réaliser des Algorithmes avec des Structures

Enoncé de l'Exercice:

Ecrire un algorithme permettant de résoudre une Equation du second degré (ax2 + bx + c = 0)

  1. En utilisant la Structure si..  alors…
  2. Ecrire le même algorithme avec des selon-que

Solution :

Ecrire un algorithme permettant de résoudre une équation du second degré en utilisant des si.. alors…

Action : seconddegré

Var : a, b, c, delta

Début :

Ecrire (« saisissez les valeurs a, b et c de l’équation ax²+bx+c=0 : »)

Lire (a, b, c)

Si a = 0 alors

écrire (« équation du premier degré »)

Sinon delta

Début

Si delta>0 alors

écrire (« les solutions de l’équation sont », (-bsqrt(delta))/(2*a), « et », (-b+sqrt(delta))/(2*a))

Sinon

Début

Si d=0 alors écrire ( -b/(2a))

Sinon

écrire (« pas de solutions réelles »)

Fin

Fin

Fin

Ecrire le même algorithme avec des selon-que :

Action : seconddegré

Var : a, b, c, delta

Début :

Ecrire (“saisissez les valeurs de a, b et c de l’équation ax²+bx+c)

Lire (a, b, c)

Si a=0 alors

écrire (« résoudre permier degré »)

Sinon

Début

Delta

Selon que

Delta > 0 : écrire ((-b-sqrt(delta))/(2*a), (-b+sqrt(delta))/(2*a))

Delta = 0 : écrire (( -b/(2a))

Sinon

écrire (« pas de solution réelle »)

Fin selon

Fin

Exercice (3) : La Structure (Si... Alors...)

Objectif : Réaliser des Algorithmes avec des Structures

Enoncé de l’Exercice

Ecrire un algorithme qui donne la durée de vol en heure minute connaissant l’heure de départ et l’heure d’arrivée.

  1. On considère que le départ et l’arrivée ont lieu même jour
  2. Même question qu’avant mais sans faire les conversions en minutes
  3. On suppose que la durée de vol est inférieure à 24 heures mais que l’arrivée peut avoir lieu le lendemain.

Solution :

1)  On considère que le départ et l’arrivée ont lieu même jour

Action : DuréeVol1

Var : h1, h2, m1, m2, hr, mr : entiers

Début : Ecrire (« entrer horaire de départ et d’arrivée »)

Lire (h1, m1, h2, m2)

mr

hr

mr

Ecrire (« durée de vol : » , hr, mr)

Fin

Remarque : l’opération % (modulo) permet de calculer le reste de la division entière.

2)  Même question qu’avant mais sans faire les conversions en minutes

Action : DuréeVol2

Var : h1, h2, hr, m1, m2, mr : entiers

Début : Ecrire (« entrer horaire de départ et d’arrivée »)

Lire (h1, m1, h2, m2)

Si m2>m1 alors

hr

Ecrire (hr, mr)

Sinon

hr

Ecrire (hr, mr)

Fin

3)  On suppose que la durée de vol est inférieure à 24 heures mais que l’arrivée peut avoir lieu le lendemain. 

Action : DuréeVol3

Var : h1, h2, m1, m2, hr, mr : entiers

Début : Ecrire (« entrer horaire de départ et d’arrivée »)

Lire (h1, m1, h2, m2)

Si h2>h1 alors

Si m2>m1 alors

hr

Ecrire (hr, mr)

Sinon

hr

Ecrire (hr, mr)

Sinon

Si m2>m1 alors

hr

Ecrire (hr, mr)

Sinon

hr

Ecrire (hr, mr)

Fin

Exercice (4) : Fonctions (Min, Max)

Objectif : Réaliser des Fonctions en Algorithmes

Enoncé : 

       1) Ecrire une fonction max3 qui retourne le maximum de trois entiers

       2) Ecrire une fonction min3 qui retourne le minimum de trois entiers

       3) Ecrire une fonction max2 qui retourne le maximum de deux entiers

       4) Ecrire une fonction max3 qui retourne le maximum de trois entiers en faisant appel à max2

Solution :

1) Ecrire une fonction max3 qui retourne le maximum de trois entiers

Fonction : max3(a, b, c : entier) : entier :

Var : max3 : entier

Début : Si a>b alors

Si a>c alors max3

Sinon max3

Sinon

Si c>b alors max3

Sinon max3

Retourner (max3)

Fin

2) Ecrire une fonction min3 qui retourne le minimum de trois entiers

Fonction : min3(a, b, c : entier ) : entier :

Var min3 : entier

Début

Retourner (–max3(-a, -b, -c))

Fin

3) Ecrire une fonction max2 qui retourne le maximum de deux entiers

Fonction : max2 (a, b : entier) : entier

Var : max2 : entier

Début : Si a

Sinon max2

Retourner (max2)

Fin

4) Ecrire une fonction max3 qui retourne le maximum de trois entiers en faisant appel à

max2

Fonction : max3 (a, b, c : entier) : entier :

Var : max3 : entier

Début : max3

Retourner (max3)

Fin

Exercice (5) : Calculatrice

Enoncé de l’Exercice :

Ecrire un programme Calculatrice permettant la saisie de deux entiers et une opération –

Booléen - ( +, - , / , x ) et affichant le résultat.

Donner avant cela les spécifications, la solution en langage naturel, les structures de données.

Solution :

Spécifications :

Données : 2 opérandes et un opérateur

Résultat : résultat de l’opération choisie

Solution en langage naturel : Saisie des données, envisager tous les cas : +, - , x, /. Attention à la division par zéro qui est impossible

Structure de données : 2 opérandes : des entiers

Un opérateur booléen : +, -, * , /

Algorithme :

Action : calcul

Var : a, b : réel op : booléen

Début

       Ecrire (« saisissez le premier entier »)

      Lire (a)

      Ecrire (« saisissez l’opérateur »)

      Lire (op)

      Ecrire (« saisissez la deuxième variable »)

      Lire (b)

Selon que :

      Op = ‘+’ : Ecrire (a+b)

      Op = ‘*’ : Ecrire (a*b)

      Op = ‘/’ : Si b= 0 alors écrire (« division impossible »)

Sinon écrire (a/b)

      Op = ‘-‘ : Ecrire (a-b)

Fin selon

Fin

Exercice (6) : Structures répétitives

Objectif: Réaliser des Algorithmes en utilisant les structures répétitives

Enoncé:

A)  Ecrire le programme qui affiche la somme d’une suite d’entiers saisie par l’utilisateur se terminant par zéro.

Exemple : l’utilisateur entre 1, puis 5, puis 2, puis 0 : affiche : 8

1) donner les spécifications

2) donner la solution en langage naturel

3) indiquer les structures de données

4) faites l’algorithme

B) Ecrire un algorithme qui affiche la moyenne d’une suite d’entiers se terminant par zéro (le zéro n’entrant pas en compte dans la moyenne : il est juste la pour indiquer la fin de saisie)

1) donner les spécifications

2) donner la solution en langage naturel

3) indiquer les structures de données

4) faites l’algorithme

Solution : 

A)  Ecrire le programme qui affiche la somme d’une suite d’entiers saisie par l’utilisateur se terminant par zéro.

Spécifications :

- données : suite de nombre entiers se terminant par zéro

- résultat : la somme de ces entiers

Solution en langage naturel : tant que l’entier saisi n’est pas zéro, l’ajouter à la somme partielle et saisir l’entier suivant.

Structure de données :

- entier : entier courant (saisi)

- entier : somme partielle

Algorithme :

Action : Somme Suite

Var : a, s : entiers

Début s

Lire (a)

Tant que a?0 faire

Début

s

Lire (a)

Fin

Ecrire (s)

Fin

B) Ecrire un algorithme qui affiche la moyenne d’une suite d’entiers se terminant par zéro (le zéro n’entrant pas en compte dans la moyenne : il est juste la pour indiquer la fin de saisie)

Spécification :

- données : suite d’entier se terminant par zéro

- résultat : la moyenne de ces entiers (zéro exclu)

Solution en langage naturel :

Tant que l’entier saisi différent de 0 alors ajouter l’entier aux entiers précédents et faire la moyenne (c’est à dire diviser par le nombre d’entiers

Structures de données :

- entier : entier saisi

- entier : résultat moyenne

Algorithme :

Action : Moyenne

Var : n, moy, s : entiers

Début : moy

s

Lire (n)

Tant que n?0 faire

Début

Moy

s

lire (n)

fin

Ecrire (moy)

Fin

Exercice (7) : Structures répétitives (Suite..)

Objectif: Réaliser des Algorithmes en utilisant les structures répétitives

A)  Ecrire un algorithme permettant la saisie d’une suite d’entiers se terminant par zéro et vérifier si cette suite contient deux entiers consécutifs égaux en utilisant les structures tant que.

  1. donner les spécifications
  2. donner la solution en langage naturel
  3. indiquer les structures de données
  4. faites l’algorithme

B) Ecrire un algorithme qui affiche le maximum d’une suite se terminant par zéro

  1. donner les spécifications
  2. donner la solution en langage naturel
  3. indiquer les structures de données
  4. faites l’algorithme

Solution :

A)  Ecrire un algorithme permettant la saisie d’une suite d’entiers se terminant par zéro et vérifier si cette suite contient deux entiers consécutifs égaux en utilisant les structures tant que.

Spécifications :

- données : suite d’entier se terminant par zéro

- résultat : vrai si deux entiers consécutifs, faux sinon.

Solution en langage naturel : comparer l’entier courant et le précédent. Et tant que ils sont différents, on continu la lecture et tant que l’entier courant est différent de zéro.

Structures de données :

- entier : nombre courant

- entier : nombre précédent

Algorithme :

Action : Entiers consécutifs

Var : nc, np : entier

{on désignera par nc le nombre courant et np le nombre précédent}

Début Lire (nc)

np

{pour être sur que le nombre courant ne sera pas le même que le nombre précédent dès le départ on affecte la valeur nc-1 au nombre précédent. On aurait tout aussi bien pu lui donner

la valeur zéro)

Tant que nc?0 et np ?nc faire

Début

np

lire (nc)

fin

Si nc?0 alors écrire (« oui »)

Sinon écrire (« non »)

Fin

Refaire le même algorithme en utilisant une structure répéter jusqu'à

Action : Entiers consécutifs

Var : nc, np : entiers

Début

Lire (nc)

Si nc ? 0 alors Répéter

Début

np

lire (nc)

jusqu'à (nc=np ou nc=0)

Si nc=0 alors écrire (« oui »)

Sinon écrire (« non »)

Fin

B) Ecrire un algorithme qui affiche le maximum d’une suite se terminant par zéro

Spécifications :

- données : une suite d’entiers se terminant par zéro

- résultat : un entier : le maximum de cette suite

Solution en langage naturel : comparer l’entier courant avec le maximum et tant que nc

Structures de données

- n : entier courant (saisi)

- max : entier max de la suite

Algorithme :

Action : max suite

Var : n, max : entiers

Début Lire (n)

Max

Tant que n? 0 faire

Début

Lire (n)

Si max

Fin

Ecrire (max)

Fin