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.
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 <= x
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 <= PI*rayon*rayon
Retourner (Aire)
Fin
Fonction : volume_cercle (hauteur, rayon :réels) :réel
Var : volume : réel
Début : Volume <=aire_cercle (rayon)*hauteur
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
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)
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<=b²-4*a*c
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 <= b²-4*a*c
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
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
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 <= [h2*60+m2] – [h1*60+m1]
hr <= mr/60
mr <= mr%60
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 <= h2-h1 et mr <= m2-m1
Ecrire (hr, mr)
Sinon
hr <= h2-h1-1 et mr <= m2+60-m1
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 <= h2-h1 et mr <= m2-m1
Ecrire (hr, mr)
Sinon
hr <= h2-h1-1 et mr <= m2+60-m1
Ecrire (hr, mr)
Sinon
Si m2>m1 alors
hr <= h2-h1+24 et mr <= m2-m1
Ecrire (hr, mr)
Sinon
hr <= h2-h1+24-1 et mr <= m2+60-m1
Ecrire (hr, mr)
Fin
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
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 <= a
Sinon max3 <= c
Sinon
Si c>b alors max3 <= c
Sinon max3 <= b
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 <= a
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 <= max2 [max2 (a, b), c)
Retourner (max3)
Fin
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.
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
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
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<=0 Attention : dans une structure tant que ne pas oublier d’initialiser!!!
Lire (a)
Tant que a?0 faire
Début
s<=s+a
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<=0
s<=0
Lire (n)
Tant que n?0 faire
Début
Moy <= moy*s+n)/(s+1)
s<=s+1
lire (n)
fin
Ecrire (moy)
Fin
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.
B) Ecrire un algorithme qui affiche le maximum d’une suite se terminant par zéro
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<=nc-1
{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<=nc
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 <= nc
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<=n
Tant que n? 0 faire
Début
Lire (n)
Si max
Fin
Ecrire (max)
Fin