Feat(NSI): DS5

This commit is contained in:
Bertrand Benjamin 2023-05-21 10:52:56 +02:00
parent 811f41d93d
commit f5c143964b
4 changed files with 1008 additions and 0 deletions

View File

@ -0,0 +1,370 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "ecd73354",
"metadata": {},
"source": [
"# DS 5\n",
"\n",
"Cette partie comporte deux parties:\n",
"\n",
"- Partie programmation\n",
"- Partie réseau\n",
"\n",
"Ces deux parties sont indépendantes et peuvent être traitées dans l'ordre que vous voulez."
]
},
{
"cell_type": "markdown",
"id": "f8136040",
"metadata": {},
"source": [
"## Partie programmation\n",
"\n",
"Une ville souhaite gérer son parc de vélos en location partagée. Lensemble de la flotte de vélos est stocké dans une table de données représentée en langage Python par un dictionnaire contenant des associations de type `id_velo : dict_velo` où `id_velo` est un nombre entier compris entre 1 et 199 qui correspond à l'identifiant unique du vélo et `dict_velo` est un dictionnaire dont les clés sont : \"type\", \"etat\", \"station\".\n",
"\n",
"Les valeurs associées aux clés \"type\", \"etat\", \"station\" de dict_velo sont de type chaînes de caractères ou nombre entier :\n",
"\n",
"- \"type\" : chaîne de caractères qui peut prendre la valeur \"electrique\" ou \"classique\"\n",
"- \"état\" : nombre entier qui peut prendre la valeur 1 si le vélo est disponible, 0 si le vélo est en déplacement, -1 si le vélo est en panne\n",
"- \"station\" : chaînes de caractères qui identifie la station où est garé le vélo.\n",
"\n",
"Dans le cas où le vélo est en déplacement ou en panne, \"station\" correspond à celle où il a été dernièrement stationné.\n",
"\n",
"Voici un extrait de la table de données :\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "295fb0ce",
"metadata": {},
"outputs": [],
"source": [
"flotte = {\n",
"12 : {\"type\" : \"electrique\", \"etat\" : 1, \"station\" : \"Prefecture\"},\n",
"80 : {\"type\" : \"classique\", \"etat\" : 0, \"station\" : \"Saint-Leu\"},\n",
"45 : {\"type\" : \"classique\", \"etat\" : 1, \"station\" : \"Baraban\"},\n",
"41 : {\"type\" : \"classique\", \"etat\" : -1, \"station\" : \"Citadelle\"},\n",
"26 : {\"type\" : \"classique\", \"etat\" : 1, \"station\" : \"Coliseum\"},\n",
"28 : {\"type\" : \"electrique\", \"etat\" : 0, \"station\" : \"Coliseum\"},\n",
"74 : {\"type\" : \"electrique\", \"etat\" : 1, \"station\" : \"Jacobins\"},\n",
"13 : {\"type\" : \"classique\", \"etat\" : 0, \"station\" : \"Citadelle\"},\n",
"83 : {\"type\" : \"classique\", \"etat\" : -1, \"station\" : \"Saint-Leu\"},\n",
"22 : {\"type\" : \"electrique\", \"etat\" : -1, \"station\" : \"Joffre\"}\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "d2282abe",
"metadata": {},
"source": [
"\n",
"`flotte` étant une variable globale du programme.\n",
"\n",
"1a. Comment obtenir les informations sur le vélo avec l'id 26?"
]
},
{
"cell_type": "raw",
"id": "a430f6b3",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "5951facb",
"metadata": {},
"source": [
"1b. Comment obtenir l'état du vélo avec l'id 83?"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "86feec80",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "4e28b9ae",
"metadata": {},
"source": [
"1c. Ajouter le vélo avec l'id 1 de type electrique, disponible à la station Joffre dans le dictionnaire `flotte`."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d4fd9d3d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "d7173496",
"metadata": {},
"source": [
"2. On définit la fonction `proposition`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a13ebd11",
"metadata": {},
"outputs": [],
"source": [
"def proposition(choix):\n",
" for v in flotte:\n",
" if flotte[v][\"type\"] == choix and flotte[v][\"etat\"] == 1:\n",
" return flotte[v][\"station\"]"
]
},
{
"cell_type": "markdown",
"id": "8771166f",
"metadata": {},
"source": [
"2a. Quelles sont les valeurs possibles de la variable `choix`?"
]
},
{
"cell_type": "raw",
"id": "d43c9a4e",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "fb52e033",
"metadata": {},
"source": [
"2b. Ecrire deux tests pour vérifier le bon fonctionnement de la fonction `proposition`"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b8ab1c1a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "417fa333",
"metadata": {},
"source": [
"Dans la suite, tous vos programmes devront marcher même si le dictionnaire `flotte` change.\n",
"\n",
"3. Ecrire un programme qui compte le nombre de vélo de type electrique."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8a9514e4",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "3f341db7",
"metadata": {},
"source": [
"4. Ecrire un programme qui affiche l'id des vélos de la station *Citadelle*."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "968408e5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "ff4efcca",
"metadata": {},
"source": [
"5. On dispose d'une table de données des positions GPS de toutes les stations,\n",
"dont un extrait est donné ci-dessous. Cette table est stockée sous forme dun\n",
"dictionnaire.\n",
"\n",
"Chaque élément du dictionnaire est du type: `nom de station: (latitude, longitude)`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "19622d5e",
"metadata": {},
"outputs": [],
"source": [
"stations = {\n",
"'Prefecture' : (49.8905, 2.2967) ,\n",
"'Saint-Leu' : (49.8982, 2.3017),\n",
"'Coliseum' : (49.8942, 2.2874),\n",
"'Jacobins' : (49.8912, 2.3016)\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "0935a479",
"metadata": {},
"source": [
"On souhaite préparer les donner pour afficher la position de chaque vélo.\n",
"\n",
"Écrire un script qui créer un dictionnaire `flotte_position` avec en clé l'id des vélos et en clé la position (tuple de longitude et latitude) de la station à laquel il est associé."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "52c0f94e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "dac575d3",
"metadata": {},
"source": [
"## Partie réseau\n",
"\n",
"Une entreprise décide d'organiser son réseau de la manière suivante\n",
"\n",
"![reseau](./reseau.png)\n",
"\n",
"L'icone nuage représente le réseau internet.\n",
"\n",
"1. Quel matériel doit-elle utiliser pour les objets A, B et C?"
]
},
{
"cell_type": "raw",
"id": "9b2da650",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "43e7c4f0",
"metadata": {},
"source": [
"2. Identifier les sous réseaux que vous identifiez en précisant les équipements qui le constitue."
]
},
{
"cell_type": "raw",
"id": "87a8447d",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "ed133011",
"metadata": {},
"source": [
"3. Le poste 2 envoie la trame suivante au serveur web\n",
"\n",
"![trame](./trame.png)\n",
"\n",
"3a. Quel est le type de contenu qui est échangé entre le poste 2 et le serveur web?"
]
},
{
"cell_type": "raw",
"id": "1fa9aff6",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "257a51db",
"metadata": {},
"source": [
"3b. Quelles informations peut-on en tirer sur le poste 2?"
]
},
{
"cell_type": "raw",
"id": "4060a968",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "b7446e92",
"metadata": {},
"source": [
"3c. Quelles information peut-on en tirer sur le serveur WEB?"
]
},
{
"cell_type": "raw",
"id": "0b7913b5",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "d0fa236c",
"metadata": {},
"source": [
"3d. Supposons que la réponse à cette requète soit une page web volumineuse. Que va-t-il se passer au niveau de la couche transport? Expliquer l'interet d'une tel manoeuvre."
]
},
{
"cell_type": "raw",
"id": "080bdc35",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "a5c61806",
"metadata": {},
"source": [
"4. Expliquer en quelques mots le principe d'encapsulation du protocole TCP/IP et les bénéfices de ce choix technique."
]
},
{
"cell_type": "raw",
"id": "49138878",
"metadata": {},
"source": []
}
],
"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.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB