Feat: première étape de la programmation

This commit is contained in:
Bertrand Benjamin 2022-02-17 11:45:01 +01:00
parent de44239abf
commit 3e03d11b21
4 changed files with 418 additions and 35 deletions

View File

@ -1,14 +0,0 @@
\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\author{Benjamin Bertrand}
\title{Programmation - Cours}
\date{2022-02-07}
\pagestyle{empty}
\begin{document}
\maketitle
\end{document}

View File

@ -1,17 +0,0 @@
\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\author{Benjamin Bertrand}
\title{Programmation - Exercices}
\date{2022-02-07}
\DeclareExerciseCollection[step=1]{banque}
\xsimsetup{collect}
\begin{document}
\input{exercises.tex}
\printcollection{banque}
\end{document}

View File

@ -0,0 +1,373 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "42e99426",
"metadata": {},
"source": [
"# Étape 1: Tour d'horizon\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "4d43ad4b",
"metadata": {},
"source": [
"## Decrire un programme\n",
"\n",
"Ci-dessous, vous retrouverez des programmes. Vous devez les executer. Puis écrire une phrase par ligne de programme pour décrire ce qu'elle fait."
]
},
{
"cell_type": "markdown",
"id": "d49492cc",
"metadata": {},
"source": [
"### Programme 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ca80dcab",
"metadata": {},
"outputs": [],
"source": [
"print(\"Hello les 2nd\")"
]
},
{
"cell_type": "markdown",
"id": "fb207fab",
"metadata": {},
"source": [
"Description"
]
},
{
"cell_type": "raw",
"id": "7aabc966",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "c5e01d51",
"metadata": {},
"source": [
"### Programme 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5c866894",
"metadata": {},
"outputs": [],
"source": [
"age = int(input(\"Quel age as-tu?\"))\n",
"if age >= 18:\n",
" print(\"Tu es majeur, tu peux passer ton permis\")\n",
"else:\n",
" print(\"Tu es mineur\")\n",
" \n",
" print(\"Il te reste \", 18 - age, \"ans avant de pouvoir passer le permis\")"
]
},
{
"cell_type": "markdown",
"id": "5c822591",
"metadata": {},
"source": [
"Description"
]
},
{
"cell_type": "raw",
"id": "6f711b5d",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "a8f0ff49",
"metadata": {},
"source": [
"### Programme 3\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "95ca8d78",
"metadata": {},
"outputs": [],
"source": [
"def f(x):\n",
" resultat = x^2 + 2\n",
" return resultat\n",
"print(f(0))\n",
"print(f(10))"
]
},
{
"cell_type": "markdown",
"id": "82ff2b3e",
"metadata": {},
"source": [
"Description"
]
},
{
"cell_type": "raw",
"id": "ff4fa059",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "68147e23",
"metadata": {},
"source": [
"## Modifier le programme de la momie\n",
"\n",
"Ci-dessous, vous avez un programme qui code un jeu de hazard. Faites quelques parties pour essayer de comprendre ce qu'il s'y passe.\n",
"\n",
"**Ne modifier pas ce programme**\n",
"\n",
"Si plus rien ne se passe sans message rouge, un `input` est bloqué. Cliquer sur `Noyau` puis sur `Redémmarer & effacer les sorties`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9536686d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n",
"Il y a 3 portes devant toi. Laquelle ouvres-tu?2\n",
"Rien!\n",
"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n",
"Il y a 3 portes devant toi. Laquelle ouvres-tu?2\n",
"La momie te dévore! Tu perds un point de vie\n",
"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n",
"Il y a 3 portes devant toi. Laquelle ouvres-tu?2\n",
"Rien!\n",
"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n",
"Il y a 3 portes devant toi. Laquelle ouvres-tu?2\n",
"Rien!\n",
"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n",
"Il y a 3 portes devant toi. Laquelle ouvres-tu?2\n",
"La momie te dévore! Tu perds un point de vie\n",
"T'es mort. Tu n'as plus de points de vie.\n",
"Le jeu est fini, ton score est de 3\n"
]
}
],
"source": [
"# Programme de la momie - tiré du livre les maths ensembles et pour chacun\n",
"from random import randint\n",
"\n",
"def choisir_porte(nombre_portes):\n",
" porte_choisie = int(input(\"Il y a \" + str(nombre_portes) + \" portes devant toi. Laquelle ouvres-tu?\"))\n",
" return porte_choisie\n",
" \n",
"nombre_portes = 3\n",
"points_de_vie = 2\n",
"score = 0\n",
"\n",
"while points_de_vie > 0:\n",
" print(\"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\")\n",
" porte_momie = randint(0, nombre_portes)\n",
" porte_choisie = choisir_porte(nombre_portes)\n",
" if porte_choisie == porte_momie:\n",
" print(\"La momie te dévore! Tu perds un point de vie\")\n",
" points_de_vie = points_de_vie - 1\n",
" else:\n",
" score = score + 1\n",
" print(\"Rien!\")\n",
"\n",
"print(\"T'es mort. Tu n'as plus de points de vie.\")\n",
"print(\"Le jeu est fini, ton score est de \", score)\n",
" "
]
},
{
"cell_type": "markdown",
"id": "c3fdf1a6",
"metadata": {},
"source": [
"Maintenant que vous avez un peu joué à ce jeu. Vous allez créer des variantes de ce jeu. \n",
"\n",
"Vous devez faire dans l'ordre les variantes 1, 2 et 3. Les autres peuvent être fait dans l'ordre que vous souhaitez en fonction de ce qui vous inspire.\n",
"\n",
"**Pour chaque variante, vous copirez puis collerez le programme précédent avant de le modifier.**"
]
},
{
"cell_type": "markdown",
"id": "0394afce",
"metadata": {},
"source": [
"*Variante 1* Modifier le programme pour que chaque ouverture de porte sans momie rapporte 10 points"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4138d55d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "6a342f0e",
"metadata": {},
"source": [
"*Variante 2* Modifier le programme pour que l'on commence avec 5 points de vie mais qu'il n'y ait que deux portes à chaque fois."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a2283f54",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "6de8db2b",
"metadata": {},
"source": [
"*Variante 3* On part fixe le nombre de porte à 3. Quelle est la probabilité de tomber sur un momie? Transformer le programme pour la probabilité de tomber sur un momie soit de 3/2."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "736b4ff0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "cf5d95a7",
"metadata": {},
"source": [
"---\n",
"Les variantes suivantes peuvent être faites dans l'ordre que vous souhaitez."
]
},
{
"cell_type": "markdown",
"id": "f353ae11",
"metadata": {},
"source": [
"*Variante 4* Le programme comporte un gros bug. Il est possible de ne jamais être dévoré par la momie. Proposer une façon de corriger ce bug."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "761cdf79",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "ba298be5",
"metadata": {},
"source": [
"*Variante 5* Modifier le programme pour qu'à chaque fois que l'on tombe sur une momie. On ait une chance sur deux de perdre 1 point de vie et une chance sur 2 de ne perdre 2 points de vie."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "039f2fd1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "dc433a7a",
"metadata": {},
"source": [
"*Variante 6* Ajouter d'autres monstres cachés derière d'autres portes qui enlèves plus ou moins de points."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "75eaa52a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "f86952b2",
"metadata": {},
"source": [
"Variante 7 Étonnez nous avec une variante bien à vous!"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b9fafa34",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "d32bd603",
"metadata": {},
"source": [
"## Bilan\n",
"\n",
"Noter les mots écris en vert dans différents programmes manipulés et décrire l'action de chacun d'eux."
]
},
{
"cell_type": "raw",
"id": "dd41edac",
"metadata": {},
"source": [
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -2,11 +2,52 @@ Programmation
#############
:date: 2022-02-07
:modified: 2022-02-07
:modified: 2022-02-17
:authors: Benjamin Bertrand
:tags: Python
:category: 2nd
:summary: Demi groupe en programmation python
:summary: TDs de programmation python à faire en salle informatique en demi-groupe.
Présentation
============
Plan de travail sous forme de plusieurs notebooks. Les élèves doivent commencer pas l'étape 1 pour avoir un tour d'horizon. Puis vient l'étape 2 qui n'est à faire que pour les élèves qui ne sont pas du tout à l'aise avec la programmation. Les étapes suivantes peuvent être fait dans n'importe quelle ordre.
La séquence se conclue avec un projet de programmation mêlant plusieurs outils.
Assez rapidement, on pourra ajouter des questions "programmation" dans les questions flashs: des programmes, on anticipe quel sera le résultat. Cela permettre de présenter "le tableau des variables".
Plan de travail
===============
Étape 1: Tour d'horizon des briques de programmation
----------------------------------------------------
Les élèves commencent par décrire des programmes. Une phrase par ligne de code.
Le programme de la momie va les amener à créer plusieurs variantes d'un même programme. Les premières variantes sont justes des modifications de variables mais elles vont pousser les élèves à lire le programme et à chercher quel est le rôle de chaque morceau. Il sera intéressant de discuter de ces rôles en plénière. Le but est que les élèves arrivent à faire au moins ces 3 premières variantes. Les autres variantes seront réservées aux élèves les plus rapides.
Au moins 10 minutes avant la fin de l'heure, on forcera les élèves à faire la partie bilan.
Étape 2: Variables, affectation et type
---------------------------------------
Étape 3: Conditions if
----------------------
- programmation d'un QCM
-
Étape 4: Boucle for
-------------------
Étape 5: Boucle While
---------------------
Étape 6: Fonctions
------------------
Étape 7: Projets
----------------
Étape 1:
========