rev

R1-ALGO-02 : Révision Algorigramme + programmation#

Objectifs pédagogiques#

  • réviser le passage du formalisme algorigramme au formalisme programmation (et vice-versa) pour des problème simples

Exercice 1 : calcul de la somme des entiers pair#

Problème : on veut calculer la somme de tous les entiers pairs entre 2 et un nombre entier entré par l’utilisateur.

Entrée : nombre

Sortie : somme

Dessinez l’algorigramme correspondant au programme suivant :

nombre = int(input("Entrez un nombre entier : "))
somme = 0

for i in range(2, nombre + 1, 2):
    somme = somme + i
print("La somme des entiers pairs jusqu'à ",nombre, "est :",somme)
---------------------------------------------------------------------------
StdinNotImplementedError                  Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 nombre = int(input("Entrez un nombre entier : "))
      2 somme = 0
      4 for i in range(2, nombre + 1, 2):

File ~/.local/lib/python3.9/site-packages/ipykernel/kernelbase.py:1174, in Kernel.raw_input(self, prompt)
   1167 """Forward raw_input to frontends
   1168 
   1169 Raises
   1170 ------
   1171 StdinNotImplementedError if active frontend doesn't support stdin.
   1172 """
   1173 if not self._allow_stdin:
-> 1174     raise StdinNotImplementedError(
   1175         "raw_input was called, but this frontend does not support input requests."
   1176     )
   1177 return self._input_request(
   1178     str(prompt),
   1179     self._parent_ident["shell"],
   1180     self.get_parent("shell"),
   1181     password=False,
   1182 )

StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.

Exercice 2 : Vérification des nombres premiers#

Problème : On veut savoir si un nombre entier entré par l’utilisateur est premier ou pas. Pour ce faire, on calcule tous les restes de la division entière (le modulo) des diviseurs entre 2 et la racine du nombre entré. Si ce reste vaut 0 une seule fois, alors le nombre n’est pas premier. Sinon il est premier (divisble par lui et par 1)

Entrée : nombre

Sortie : est premier ou n'est pas premier

Ecrivez le programme en Python de l’algorigramme suivant :

R1-ALGO-02_ex2

Exercice 3 : Calcul d’une moyenne#

Problème : On veut calculer la moyenne de nombre_de_nombres valeurs nombre. On ne connaît pas à l’avance le nombre de valeurs qui seront entrées par l’utilisateur (boucle non bornée)

Entrée : des valeurs de nombre

Sortie : moyenne

Dessinez l’algorigramme correspondant au programme suivant

somme = 0
nombre_de_nombres = 0
nombre = 0

while nombre >= 0:
    nombre = float(input("Entrez un nombre (négatif pour terminer) : "))
    if nombre >= 0:
        somme = somme + nombre
        nombre_de_nombres = nombre_de_nombres + 1

if nombre_de_nombres > 0:
    moyenne = somme / nombre_de_nombres
    print("La moyenne est : ",moyenne)
else:
    print("Aucun nombre saisi")
Entrez un nombre (négatif pour terminer) :  23
Entrez un nombre (négatif pour terminer) :  24
Entrez un nombre (négatif pour terminer) :  28.5
Entrez un nombre (négatif pour terminer) :  -1
La moyenne est :  25.166666666666668

Exercice 4 : Calcul de la factorielle#

Problème : On veut calculer la factorielle (\(f(x) = x! = x \cdot (x-1) \cdot (x-2 \cdot ... \cdot 1\))

Entrée : nombre

Sortie : factorielle

Ecrivez le programme en Python de l’algorigramme suivant :

R1-ALGO-02_ex4

Solutions#

Exercice 1 (somme des entiers pairs)#

Un algorigramme :

R1-ALGO-02_ex1

nombre = int(input("Entrez un nombre entier : "))
somme = 0

for i in range(2, nombre + 1, 2):
    somme = somme + i
print("La somme des netiers pairs jusqu'à ",nombre, "est :",somme)
Entrez un nombre entier :  13
La somme des netiers pairs jusqu'à  13 est : 42

Exercice 2#

R1-ALGO-02_ex2

nombre = int(input("Entrez un nombre positif : "))
est_premier = True

if nombre <= 1:
    est_premier = False
else:
    diviseur = 2
    while diviseur * diviseur <= nombre:
        if nombre % diviseur == 0:
            est_premier = False
        diviseur = diviseur + 1
if est_premier == True:
    print(nombre," est un nombre premier")
else:
    print(nombre, " n'est pas un nombre premier")
Entrez un nombre positif :  17
17  est un nombre premier

Exercice 3 (calcul de la moyenne)#

R1-ALGO-02_ex3

somme = 0
nombre_de_nombres = 0
nombre = 0

while nombre >= 0:
    nombre = float(input("Entrez un nombre (négatif pour terminer) : "))
    if nombre >= 0:
        somme = somme + nombre
        nombre_de_nombres = nombre_de_nombres + 1

if nombre_de_nombres > 0:
    moyenne = somme / nombre_de_nombres
    print("La moyenne est : ",moyenne)
else:
    print("Aucun nombre saisi")
Entrez un nombre (négatif pour terminer) :  4.5
Entrez un nombre (négatif pour terminer) :  5.5
Entrez un nombre (négatif pour terminer) :  3.5
Entrez un nombre (négatif pour terminer) :  -3
La moyenne est :  4.5

Exercice 4 (factorielle)#

R1-ALGO-02_ex4

nombre = int(input("Entrez un nombre entier positif : "))
factorielle = 1

if nombre < 0:
    print("Erreur, le nombre doit être positif")
elif nombre == 0:
    print("La factorielle de 0 est 1")
else:
    for i in range(1,nombre+1, 1):
        factorielle = factorielle * i
    print("La factorielle de ",nombre," est :",factorielle)
Entrez un nombre entier positif :  4
La factorielle de  4  est : 24