"Dans ce TP, nous allons travailler la boucle `for` puis nous allons voir comment les utiliser pour faire des **accumulateurs**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## La boucle `for`\n",
"\n",
"Nous les avons déjà rencontré. Voici l'exemple le plus simple que l'on puisse imaginer."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i in range(10):\n",
" print(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Lancer le programme pour expliquer ce qu'il fait. Que représente `i`? Que fait la commande `range(10)`?\n",
"\n",
"2. Ci-dessous, vous trouverez un nouveau programme. Avant de l'exécuter, faire le tableau des variables pour deviner ce qu'il fait."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a = 0\n",
"for i in range(4):\n",
" print(i**2)\n",
" a = a + i\n",
"print(a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Même question pour le programme ci-dessous."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"u = 10\n",
"for i in range(3):\n",
" print(u)\n",
" u = u * 1.2\n",
"print(u)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour un affichage plus pratique, on peut le réécrire."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"u = 10\n",
"for i in range(3):\n",
" print(\"u\", i, \" = \", u)\n",
" u = u * 1.2\n",
"print(\"u\", i, \" = \", u)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. Soit $u_n$ une suite géométrique de raison $q=2$ et de premier terme $u_0=1$. Écrire une programme qui calcule $u_{100}$ en utilisant une boucle `for`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5. Soit $u_n$ une suite définie par la relation de récurence $u_{n+1} = 0.9u_n + 10$ et de premier terme $u_0 = 200$. Écrire un programme qui calcule $u_{50}$ en utilisant une boucle `for`."
"Il arrive que l'on ne s'intéresse non pas à une valeur particulière mais à l'accumulation de toutes les valeurs précédentes. Pour programmer cela, on utilise un accumulateur comme présenter dans le programme suivant."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"u = 10\n",
"S = u\n",
"for i in range(4):\n",
" u = u * 0.5\n",
" S = S + u\n",
"print(S)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Faire le tableau des valeurs pour le programme précédent et vérifier que vous obtenez bien le même résultat.\n",
"2. Soit $u_n$ une suite géométrique de raison $q=2$ et de premier terme $u_0=1$. Écrire une programme qui ajoute toutes les valeurs de $u_n$ de $u_0$ jusqu'à $u_{10}$. "
"5. Écrire un programme qui ajoute l'inverse des nombres entre 1 et 500."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`Résultat à trouver 1.6349839001848923`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problème\n",
"\n",
"Une entreprise doit honorer une commande sur 10ans de 20 000pièces. Pour cela, elle compte produire 30 pièces le premier mois. Puis augmenter la production mensuelle entre 1% et 5%.\n",
"\n",
"1. Écrire une programme qui permet de vérifier si une augmentation de 1% est suffisante pour atteindre l'objectif fixé."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. Écrire une programme qui permet de vérifier si une augmentation de 5% est suffisante pour atteindre l'objectif fixé."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Détermine au dixième de pourcent l'augmentation minimale que doit respécter l'entreprise pour atteindre l'objectif."