devops

R1-ALGO-01 - révision#

Objectifs#

  • être capable de:

    • lire et comprendre un problème simple

    • développer l’algorigramme en utilisant le formalisme des algorigrammes

    • implémenter l’algorithme en Python

Consignes#

Pour chaque problème:

  1. dessinez l’algorigramme qui décrit un algorithme permettant de résoudre le problème.

  2. écrivez un programme Python qui implémente l’algorigramme que vous avez dessiné

Faites ce travail dans l’ordre !!. D’abord l’analyse algorithmique, puis la programmation

Problème 1 : les cookies au chocolat#

Pour 6 personnes :

  • 1 oeuf

  • 85g de beurre doux

  • 85g de sucre

  • 150g de farine

  • 1 sachet de sucre vanillé

  • 350g de pépites de chocolat

  • 1 cc de levure sèche

  • 0.5 cc de sel

  1. Laissez ramollir le beurre à température ambiante. Dans un saladier, malaxez-le avec le sucre.

  2. Ajoutez l’oeuf et éventuellement le sucre vanillé.

  3. Versez progressivement la farine, la levure chimique, le sel et les pépites de chocolat. Mélangez bien.

  4. Beurrez une plaque allant au four ou recouvrez-la d’une plaque de silicone. À l’aide de deux cuillères à soupe ou simplement avec les mains, formez des noix de pâte en les espaçant car elles s’étaleront à la cuisson.

  5. Faites cuire 8 à 10 minutes à 180°C soit thermostat 6. Il faut les sortir dès que les contours commencent à brunir.

Attention : votre algorithme doit fonctionner quelque soit le nombre de personnes

Exercice 2 : Promotion en 2M#

Pour être promu en deuxième année de l’école de maturité (2M), le bulletin doit remplir les conditions suivantes :

  • obtenir un total des notes égal à au moins autant de fois 4 points qu’il y a de notes ;

  • obtenir au moins 16 points dans un groupe constitué du français, de la moyenne des moyennes des notes de la deuxième langue nationale et de la troisième langue, arrondie au demi-point, des mathématiques et de l’option spécifique ;

  • ne pas avoir plus de quatre notes inférieures à 4.

(Article 81 du réglement des gymnases vaudois )

Exercice 3 : Les racines d’Héron d’Alexandrie#

Heron d’Alexandrie est un mathématicien, ingénieur et mécanicien du 1er siècle ap JC. Il est un contemporain de Pline l’Ancien, célèbre écrivain et naturaliste de la Rome Antique.

Heron a développé une méthode très simple pour calculer une valeur approchée de la racine carrée de n’importe quel nombre n:

  1. Entrez la valeur de n

  2. Entrez la limite supérieure de la fonction récursive

  3. Calculer \(u_1 = n\)

  4. Calculer \(u_{n+1} = \frac{1}{2}(u_n + \frac{n}{u_n})\)

Solutions#

Ex1#

cookies

oeufs = 1
beurre = 85
sucre = 85
farine = 150
sucre_vanille = 1
levure = 1
sel = 0.5
chocolat = 350

ingredients = [oeufs,beurre,sucre,farine,sucre_vanille,levure,sel, chocolat]

nbr_personnes = int(input("Entrez le nombre de personnes : "))

for i in range(len(ingredients)):
    ingredients[i] = (nbr_personnes/6)*ingredients[i]

print("Recette pour "+str(nbr_personnes)+" personnes")
print("1. Laissez ramollir "+str(ingredients[1])+"g. de beurre à température ambiante. Dans un saladier, malaxez-le avec "+str(ingredients[2])+"g. de sucre. ")
print("2. Ajoutez "+str(ingredients[0])+"oeuf et éventuellement "+str(ingredients[4])+" sachets de sucre vanillé. ")
print("3. Versez progressivement "+str(ingredients[3])+"g. de farine, "+str(ingredients[5])+" sachets de levure chimique, "+str(ingredients[6])+"cc. de sel et "+str(ingredients[7])+"g. de pépites de chocolat. Mélangez bien. ")
print("4. Beurrez une plaque allant au four ou recouvrez-la d'une plaque de silicone. À l'aide de deux cuillères à soupe ou simplement avec les mains, formez des noix de pâte en les espaçant car elles s'étaleront à la cuisson. ")
print("5. Faites cuire 8 à 10 minutes à 180°C soit thermostat 6. Il faut les sortir dès que les contours commencent à brunir.")
---------------------------------------------------------------------------
StdinNotImplementedError                  Traceback (most recent call last)
Input In [1], in <cell line: 12>()
      8 chocolat = 350
     10 ingredients = [oeufs,beurre,sucre,farine,sucre_vanille,levure,sel, chocolat]
---> 12 nbr_personnes = int(input("Entrez le nombre de personnes : "))
     14 for i in range(len(ingredients)):
     15     ingredients[i] = (nbr_personnes/6)*ingredients[i]

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.

Ex2#

promotion

francais = 4
langue2 = 4
langue3 = 4
maths = 4
informatique = 4
chimie = 4
physique = 4
histoire = 4
ecodroit = 4
artsvisusmusique = 4
os = 4

notes = [francais,langue2,langue3,maths,informatique,chimie,physique,histoire,ecodroit,artsvisusmusique,os]

promu = False

# Règle 1 : obtenir un total des notes égal à au moins autant de fois 4 points qu'il y a de notes ;
regle1 = 0
for i in range(len(notes)):
    regle1 = regle1 + notes[i]

# Règle 2 : obtenir au moins 16 points dans un groupe constitué du français, de la moyenne des moyennes des notes de la deuxième langue nationale et de la troisième langue, arrondie au demi-point, des mathématiques et de l'option spécifique ;
regle2 = francais + (langue2 + langue3)/2 + maths + os

# Règle 3 : ne pas avoir plus de quatre notes inférieures à 4.
regle3 = 0
for i in range(len(notes)):
    if notes[i] < 4:
        regle3 = regle3 + 1

# Calcul de la promotion
if regle1 >= len(notes)*4:
    if regle2 >=16:
        if regle3 < 4:
            promu = True
else:
    promu = False

if promu:
    print("Vous êtes promu.e en 2ème")
else:
    print("Vous n'êtes pas promu.e en 2ềme")
Vous êtes promu.e en 2ème

Ex3#

Heron

a = float(input("Entrez la valeur de a : "))
lim = int(input("Entrez la limite      : "))
xn = a
for i in range(lim):
    xnp1 = 0.5 * (xn + a/xn)
    xn = xnp1
print("Racine de "+str(a)+" = "+str(xnp1))
Entrez la valeur de a :  4
Entrez la limite      :  100
Racine de 4.0 = 2.0