Skip to content
Snippets Groups Projects
Commit e88fbf61 authored by Nicolas M. Thiéry's avatar Nicolas M. Thiéry
Browse files

Errata

parent c312c359
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -59,13 +59,13 @@ Exécutez les deux cellules suivantes : ...@@ -59,13 +59,13 @@ Exécutez les deux cellules suivantes :
```{code-cell} ```{code-cell}
Maliste=["I","love","Python"] Maliste=["I","love","Python"]
for ligne in Maliste : for ligne in Maliste:
print(ligne) print(ligne)
``` ```
```{code-cell} ```{code-cell}
Maliste=["I","love","Python"] Maliste=["I","love","Python"]
for ligne in Maliste : for ligne in Maliste:
print(ligne) print(ligne)
``` ```
...@@ -88,7 +88,7 @@ for ligne in range (0, len(Maliste)): ...@@ -88,7 +88,7 @@ for ligne in range (0, len(Maliste)):
print("Maliste contient ", a, " : ", Maliste[a]) print("Maliste contient ", a, " : ", Maliste[a])
``` ```
+++ {"deletable": false, "editable": false, "tags": []} +++ {"deletable": false, "editable": false}
## Exercice ## Exercice
...@@ -98,7 +98,7 @@ de sa souris](../Semaine6/00-jupyter-jeter-sa-souris.md)). ...@@ -98,7 +98,7 @@ de sa souris](../Semaine6/00-jupyter-jeter-sa-souris.md)).
:::{admonition} Raccourcis clavier :::{admonition} Raccourcis clavier
* Utilisez <kbd>Tab</kbd> pour indenter . * Utilisez <kbd>Tab</kbd> pour indenter.
* Pour désindenter utilisez <kbd>Maj</kbd>+<kbd>Tab</kbd>. * Pour désindenter utilisez <kbd>Maj</kbd>+<kbd>Tab</kbd>.
* Pour indenter ou désindenter plusieurs lignes d'un coup, * Pour indenter ou désindenter plusieurs lignes d'un coup,
sélectionnez les avec <kbd>Maj</kbd>+<kbd></kbd> ou <kbd></kbd> sélectionnez les avec <kbd>Maj</kbd>+<kbd></kbd> ou <kbd></kbd>
......
Noel
42
...@@ -374,4 +374,3 @@ tel échec au moyen d'une exception**. ...@@ -374,4 +374,3 @@ tel échec au moyen d'une exception**.
La notion d'état d'un flux s'utilise naturellement avec l'idiome «lire La notion d'état d'un flux s'utilise naturellement avec l'idiome «lire
depuis un flux tant que la lecture se passe bien». depuis un flux tant que la lecture se passe bien».
...@@ -225,4 +225,3 @@ lire ou n'en modifier qu'une fraction -- on parler d'accès aléatoire ...@@ -225,4 +225,3 @@ lire ou n'en modifier qu'une fraction -- on parler d'accès aléatoire
(*random access*) -- mais nous n'en aurons pas besoin ce semestre. (*random access*) -- mais nous n'en aurons pas besoin ce semestre.
::: :::
...@@ -157,7 +157,7 @@ séparateur, et que l'on peut enchaîner ces lectures : ...@@ -157,7 +157,7 @@ séparateur, et que l'on peut enchaîner ces lectures :
slideshow: slideshow:
slide_type: fragment slide_type: fragment
--- ---
string s = "truc 33 bidule 2.5 reste" string s = "truc 33 bidule 2.5 reste"
``` ```
```{code-cell} ```{code-cell}
...@@ -470,4 +470,3 @@ Dans cette feuille: ...@@ -470,4 +470,3 @@ Dans cette feuille:
- Enfin nous avons noté que, grâce au concept de flux, on peut - Enfin nous avons noté que, grâce au concept de flux, on peut
utiliser la même syntaxe que pour lire et écrire dans un fichier ou utiliser la même syntaxe que pour lire et écrire dans un fichier ou
pour interagir avec l'utilisateur. pour interagir avec l'utilisateur.
...@@ -46,7 +46,7 @@ des données, successivement *l’une après l’autre*. ...@@ -46,7 +46,7 @@ des données, successivement *l’une après l’autre*.
:::{admonition} Syntaxe :::{admonition} Syntaxe
``` ```
flux << expression flux << expression;
``` ```
::: :::
......
...@@ -33,6 +33,17 @@ rise: ...@@ -33,6 +33,17 @@ rise:
## Prélude ## Prélude
+++ {"slideshow": {"slide_type": "fragment"}, "tags": ["instructor-disabled"]}
### Comment vous sentez-vous en ce début de cours?
| | |
|-------------------------------------------------------------------|---------|
| <div style="width: 4ex; height: 4ex; background: green;" ></div> | Curieux |
| <div style="width: 4ex; height: 4ex; background: magenta;"></div> | Grognon |
| <div style="width: 4ex; height: 4ex; background: yellow;" ></div> | Inquiet |
| <div style="width: 4ex; height: 4ex; background: blue;" ></div> | Épuisé |
+++ {"slideshow": {"slide_type": "slide"}} +++ {"slideshow": {"slide_type": "slide"}}
### Annonces ### Annonces
...@@ -217,4 +228,3 @@ Reste à définir la notion de fichier et à voir comment les manipuler en C++. ...@@ -217,4 +228,3 @@ Reste à définir la notion de fichier et à voir comment les manipuler en C++.
- Examen mi semestre : sujet et solution sur la page web - Examen mi semestre : sujet et solution sur la page web
- Projet: première séance dans deux semaines; avancez d'ici là! - Projet: première séance dans deux semaines; avancez d'ici là!
- Bureau d'Intervention Pédagogique: maths, physique ET informatique - Bureau d'Intervention Pédagogique: maths, physique ET informatique
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
using namespace std; using namespace std;
int main() { int main() {
ofstream fichier; // Déclaration ofstream flux; // Déclaration
fichier.open("bla.txt"); // Ouverture flux.open("pi.txt"); // Ouverture
fichier << "Noel " << 42 << endl; // Écriture flux << "Pi vaut à peu près " << 3.14 << endl; // Écriture
fichier.close(); // Fermeture flux.close(); // Fermeture
} }
...@@ -31,6 +31,14 @@ kernelspec: ...@@ -31,6 +31,14 @@ kernelspec:
## TP ## TP
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "6ff5819dcd18e689494acb0ba1af242e", "grade": false, "grade_id": "cell-49", "locked": true, "schema_version": 3, "solution": false, "task": false}}
### Exercice 0 : Jupyter : l'indentation
À faire chez vous!
- [Jupyter : l'indentation](00-jupyter-indentation.md)
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9dd26fe469908352fac43de3f823d14a", "grade": false, "grade_id": "cell-50", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9dd26fe469908352fac43de3f823d14a", "grade": false, "grade_id": "cell-50", "locked": true, "schema_version": 3, "solution": false, "task": false}}
### Exercice 1 : écrire dans un fichier - 20 minutes ### Exercice 1 : écrire dans un fichier - 20 minutes
...@@ -55,7 +63,7 @@ kernelspec: ...@@ -55,7 +63,7 @@ kernelspec:
:::: ::::
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "932c2abdd5afab28b2820aa3e931555a", "grade": false, "grade_id": "cell-60", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "8124382c9ab91f1d2004315ed95e82c1", "grade": false, "grade_id": "cell-60", "locked": true, "schema_version": 3, "solution": false, "task": false}}
1. Consultez le fichier [fichier-ecriture.cpp](fichier-ecriture.cpp). 1. Consultez le fichier [fichier-ecriture.cpp](fichier-ecriture.cpp).
...@@ -76,8 +84,8 @@ kernelspec: ...@@ -76,8 +84,8 @@ kernelspec:
6. Exécutez ce programme puis ouvrez le fichier `essai.txt` afin de 6. Exécutez ce programme puis ouvrez le fichier `essai.txt` afin de
vérifier son contenu. vérifier son contenu.
7. Lisez et essayez à nouveau dans le cours les exemples de [lecture 7. Lisez et essayez à nouveau dans le cours l'exemple de [lecture
depuis le clavier](cours-flux.md). depuis le clavier](cours-flux.md) avec `cin`.
8. En vous en inspirant, complétez le programme [cin.cpp](cin.cpp) 8. En vous en inspirant, complétez le programme [cin.cpp](cin.cpp)
pour que, à l’exécution, il demande à l’utilisateur d’entrer deux pour que, à l’exécution, il demande à l’utilisateur d’entrer deux
...@@ -103,16 +111,16 @@ kernelspec: ...@@ -103,16 +111,16 @@ kernelspec:
### Exercice 2 : ouvrir le smiley - 5 minutes ### Exercice 2 : ouvrir le smiley - 5 minutes
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "090a1e8ca046f04ddd14e2bfbf53fc87", "grade": false, "grade_id": "cell-80", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "5f1d313afad6f51ebf42d10eb2ea7a42", "grade": false, "grade_id": "cell-80", "locked": true, "schema_version": 3, "solution": false, "task": false}}
Le fichier [media/smiley.pbm](media/smiley.pbm) (dans le répertoire Le fichier [media/smiley.pbm](media/smiley.pbm) (dans le répertoire
`media` donc!) contient l’image en noir et blanc du TD. `media` donc!) contient l’image en noir et blanc du TD.
- Ouvrez ce fichier d’abord avec un éditeur de texte. Depuis le 1. Ouvrez ce fichier d’abord avec un éditeur de texte. Depuis le
navigateur de fichiers de JupyterLab: clic droit -> Ouvrir avec -> navigateur de fichiers de JupyterLab: clic droit -> Ouvrir avec ->
Éditeur. Éditeur.
- Ouvrez ce même fichier avec un logiciel de vision d’images. Pour 2. Ouvrez ce même fichier avec un logiciel de vision d’images. Pour
cela, depuis Jupyter, vous pouvez utiliser la cellule ci-dessous : cela, depuis Jupyter, vous pouvez utiliser la cellule ci-dessous :
```{code-cell} ```{code-cell}
...@@ -143,9 +151,9 @@ Alternativement : ...@@ -143,9 +151,9 @@ Alternativement :
### Exercice 3 : petit damier - 15 minutes ### Exercice 3 : petit damier - 15 minutes
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9abf0ebd131e32fb6dbf281385829a2c", "grade": false, "grade_id": "cell-90", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "7a193c543e70cced08244a1a71520334", "grade": false, "grade_id": "cell-90", "locked": true, "schema_version": 3, "solution": false, "task": false}}
- Utilisez un éditeur de texte pour écrire à la main un **fichier 1. Utilisez un éditeur de texte pour écrire à la main un **fichier
texte** `damier.pbm` contenant une image au format PBM texte** `damier.pbm` contenant une image au format PBM
([*Portable Bit Map*](http://fr.wikipedia.org/wiki/Portable_bitmap)) ([*Portable Bit Map*](http://fr.wikipedia.org/wiki/Portable_bitmap))
de taille 10×10 représentant un damier : de taille 10×10 représentant un damier :
...@@ -155,7 +163,7 @@ Alternativement : ...@@ -155,7 +163,7 @@ Alternativement :
:alt: un damier :alt: un damier
::: :::
- Visualisez le résultat, par exemple avec : 2. Visualisez le résultat, par exemple avec :
```{code-cell} ```{code-cell}
from open_ppm import open_ppm from open_ppm import open_ppm
...@@ -174,10 +182,10 @@ im.resize((256*im.width // im.height, 256)) ...@@ -174,10 +182,10 @@ im.resize((256*im.width // im.height, 256))
- Vérifiez l'entête de l'image: - Vérifiez l'entête de l'image:
- la première ligne contient `P1` (format PBM), `P2` (format PGM) - la première ligne contient `P1` (format PBM), `P2` (format PGM)
ou `P3` (format PPM); ou `P3` (format PPM);
- la deuxième ligne (sans compter les lignes de commentaires - la deuxième ligne (sans compter les lignes de commentaires
commençant par `#`) contient deux entiers: le nombre $c$ de commençant par `#`) contient deux entiers: le nombre $c$ de
colonnes et le nombre $l$ de lignes; colonnes et le nombre $l$ de lignes;
- pour les fichiers `pbm` ou `ppm`: la troisième ligne contient un - pour les fichiers `pbm` ou `ppm`: la troisième ligne contient un
entier $m$. entier $m$.
- Vérifiez que le reste du fichier consiste d'entiers séparés par des - Vérifiez que le reste du fichier consiste d'entiers séparés par des
espaces ou des sauts de ligne: espaces ou des sauts de ligne:
...@@ -218,18 +226,28 @@ im = open_ppm("damier-automatique.pbm") ...@@ -218,18 +226,28 @@ im = open_ppm("damier-automatique.pbm")
im.resize((512*im.width // im.height, 512)) im.resize((512*im.width // im.height, 512))
``` ```
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "42c17d610a555a3332ff112e8938eea3", "grade": false, "grade_id": "cell-120", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "8b8ba5a75745c14276324532d144a1fe", "grade": false, "grade_id": "cell-120", "locked": true, "schema_version": 3, "solution": false, "task": false}}
:::{hint} Indications :::{hint} Indications
- Vous pouvez vous inspirer de [fichier-ecriture.cpp](fichier-ecriture.cpp). - Vous pouvez vous inspirer de [fichier-ecriture.cpp](fichier-ecriture.cpp).
- Commencez par un programme pour un damier 10×10 avant de passer à - Commencez par un programme pour un damier 10×10 avant de passer à
100×100. 100×100.
- L'exécution de votre programme devrait être instantanée ou
presque. Si ce n'est pas le cas, interrompez le avec
<kbd>Ctrl</kbd>-<kbd>C</kbd>.
- Vérifiez la taille du fichier produit en tapant la commande suivante dans
le terminal :
```
ls -lh *.pbm
```
Il devrait faire dans les 20 kilo octets (20K). Veillez à le
supprimer s'il fait nettement plus que cela.
- Si le fichier produit ne donne pas l’image attendue, ou si vous - Si le fichier produit ne donne pas l’image attendue, ou si vous
n'arrivez pas à le visualiser: reportez vous aux [indications n'arrivez pas à le visualiser: reportez vous aux [indications de
de l'exercice précédent](#indications_images). l'exercice précédent](#indications_images).
- Vous pouvez aussi dans un premier temps, si cela vous aide, - Si cela vous aide, vous pouvez aussi dans un premier temps
afficher le texte produit à l’écran avec `cout`; puis l'écrire afficher le texte produit à l’écran avec `cout`; puis écrivez le
dans le fichier dans un deuxième temps. dans le fichier dans un deuxième temps.
::: :::
...@@ -276,11 +294,11 @@ Tests automatiques : ...@@ -276,11 +294,11 @@ Tests automatiques :
assert im.size == (10, 10), "l'image produite n'est pas de taille 10×10" assert im.size == (10, 10), "l'image produite n'est pas de taille 10×10"
``` ```
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "56e70fa9f0f44730cf722730c5fae9ab", "grade": false, "grade_id": "cell-150", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "65f16b8b10337cf30c2a8273bd57ff79", "grade": false, "grade_id": "cell-150", "locked": true, "schema_version": 3, "solution": false, "task": false}}
2. Implantez un programme [degrade.cpp](degrade.cpp) qui écrit un 2. Implantez un programme [degrade.cpp](degrade.cpp) qui écrit un
fichier contenant une image `degrade.pgm` de taille 128x128, avec fichier contenant une image `degrade.pgm` de taille 128x128, avec
un dégradé de gris comme celui-ci : un dégradé de gris comme celui-ci :
:::{image} media/degrade.png :::{image} media/degrade.png
:width: 20% :width: 20%
...@@ -288,7 +306,8 @@ assert im.size == (10, 10), "l'image produite n'est pas de taille 10×10" ...@@ -288,7 +306,8 @@ assert im.size == (10, 10), "l'image produite n'est pas de taille 10×10"
::: :::
```{code-cell} ```{code-cell}
open_ppm("degrade.pgm").resize((256*im.width // im.height, 256)) im = open_ppm("degrade.pgm")
im.resize((256*im.width // im.height, 256))
``` ```
Tests automatiques : Tests automatiques :
...@@ -330,7 +349,7 @@ réciproquement). ...@@ -330,7 +349,7 @@ réciproquement).
### Exercice 7 : dégradé circulaire de rouge ♣ ### Exercice 7 : dégradé circulaire de rouge ♣
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "1aec375701d7e1a9221f311b7e4b07ec", "grade": false, "grade_id": "cell-210", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "a4badd45d2e8d7c755437d2bcc49f9bc", "grade": false, "grade_id": "cell-210", "locked": true, "schema_version": 3, "solution": false, "task": false}}
1. Implantez un programme [degrade-circulaire.cpp](degrade-circulaire.cpp) 1. Implantez un programme [degrade-circulaire.cpp](degrade-circulaire.cpp)
qui écrit un fichier contenant une image `degrade-circulaire.ppm` qui écrit un fichier contenant une image `degrade-circulaire.ppm`
...@@ -342,5 +361,5 @@ réciproquement). ...@@ -342,5 +361,5 @@ réciproquement).
:alt: un dégradé circulaire :alt: un dégradé circulaire
::: :::
2. Répétez, avec une image de taille 100×100. 2. Répétez, avec une image de taille 100×100.
...@@ -2,7 +2,10 @@ import os.path ...@@ -2,7 +2,10 @@ import os.path
from PIL import Image from PIL import Image
def open_ppm(file): def open_ppm(file):
png = file[:-4]+".png" png = file[:-4]+".png"
os.system(f"convert {file} {png}") if os.path.isfile(png):
image = Image.open(png) image = Image.open(png)
os.unlink(png) else:
os.system(f"convert {file} {png}")
image = Image.open(png)
os.unlink(png)
return image return image
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment