2020-2021/TST/09_Somme_suites/2E_boucle_accumulateurs.ipynb
Bertrand Benjamin 1f3c915aed
All checks were successful
continuous-integration/drone/push Build is passing
Feat: ajout de question dans le TP sur les boucles
2021-03-14 09:59:35 +01:00

360 lines
7.7 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Boucles et accumulateurs\n",
"\n",
"\n",
"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`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Accumulateur\n",
"\n",
"Pour toutes les questions suivantes, vous devrez écrire un programme et noter le résultat obtenu en utilisant le symbole $\\sum$.\n",
"\n",
"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}$. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2047\n"
]
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`Résultat à trouver: 2047`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Écrire une programme qui ajoute le carré des nombres de 1 à 100."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`Résultat à trouver 338350`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. É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 5.187377517639621`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dossier en groupe\n",
"\n",
"Les cellules ci-dessous sont libres. Vous pouvez les utiliser pour écrire des programmes qui vous semblent pertinents pour le sénario choisi.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}