From 8ec1ee8ba879324ade75db51b7ca564818963acc Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Fri, 2 Oct 2026 10:00:30 +0200 Subject: [PATCH] =?UTF-8?q?Listes=20:=20sous-points=20indent=C3=A9s=20?= =?UTF-8?q?=C3=A0=204=20espaces=20pour=20s'afficher=20sous=20leur=20questi?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BDD_SGBD/Exercices.md | 8 +- Calculabilité/TP_Paradoxes.md | 4 +- Graphes/PARCOURS.md | 4 +- Processus/CORRIGE.md | 6 +- .../Diviser_pour_regner/TP_LA_FLAMME.md | 10 +- Routage/TP_GPS_Navigator.md | 6 +- Réseau/CALCUL.md | 40 ++--- Réseau/README.md | 18 +-- SQL/CORRIGE.md | 18 +-- SQL/EXERCICES.md | 102 ++++++------ SQL/TP_SQLite.md | 150 +++++++++--------- Soc/CORRIGE.md | 76 ++++----- Soc/EXERCICES.md | 44 ++--- .../Pile_File/TD/TD_Pile_File.md | 8 +- Structures_lineaires/Pile_File/TP/TP_File.md | 26 +-- 15 files changed, 260 insertions(+), 260 deletions(-) diff --git a/BDD_SGBD/Exercices.md b/BDD_SGBD/Exercices.md index cec7fbf..fe0d1e4 100644 --- a/BDD_SGBD/Exercices.md +++ b/BDD_SGBD/Exercices.md @@ -38,12 +38,12 @@ Nous disposons d'une base de données pour une sandwicherie. Voici les tables de ## 2. Questions pour réflexion 1. **Analyse des clés** : - - Quelle est la **clé primaire** de chaque table ? - - Les tables comportent-elles des **clés étrangères** ? Si oui, lesquelles ? + - Quelle est la **clé primaire** de chaque table ? + - Les tables comportent-elles des **clés étrangères** ? Si oui, lesquelles ? 2. **Problèmes de modélisation** : - - La base est-elle bien modélisée ? - - Proposez des améliorations pour éviter la redondance et mieux gérer les relations. + - La base est-elle bien modélisée ? + - Proposez des améliorations pour éviter la redondance et mieux gérer les relations. --- diff --git a/Calculabilité/TP_Paradoxes.md b/Calculabilité/TP_Paradoxes.md index 5b32474..8a6fa66 100644 --- a/Calculabilité/TP_Paradoxes.md +++ b/Calculabilité/TP_Paradoxes.md @@ -53,10 +53,10 @@ Que se passe-t-il quand le bot analyse le tweet « Ce tweet est faux » ? ### Analyse 1. **Hypothèse 1** : Le barbier se rase lui-même. - - Que peut-on en déduire d'après la règle ? + - Que peut-on en déduire d'après la règle ? 2. **Hypothèse 2** : Le barbier ne se rase pas lui-même. - - Que peut-on en déduire d'après la règle ? + - Que peut-on en déduire d'après la règle ? 3. Conclusion : pourquoi ce paradoxe n'a-t-il pas de solution ? diff --git a/Graphes/PARCOURS.md b/Graphes/PARCOURS.md index 9f5fa4b..03986fd 100644 --- a/Graphes/PARCOURS.md +++ b/Graphes/PARCOURS.md @@ -17,8 +17,8 @@ Le parcours en largeur d’un graphe consiste à explorer tous les voisins d’u 1. Choisir un sommet de départ et l’ajouter à une file d’attente. 2. Marquer ce sommet comme visité. 3. Tant que la file n’est pas vide : - - Retirer le sommet en tête de la file. - - Ajouter tous ses voisins non encore visités dans la file et les marquer comme visités. + - Retirer le sommet en tête de la file. + - Ajouter tous ses voisins non encore visités dans la file et les marquer comme visités. #### Implémentation en Python : ```python diff --git a/Processus/CORRIGE.md b/Processus/CORRIGE.md index b3b149f..97ee76e 100644 --- a/Processus/CORRIGE.md +++ b/Processus/CORRIGE.md @@ -25,9 +25,9 @@ L'utilisateur a l'impression que les programmes s'exécutent simultanément grâ 1. **Le découpage en processus** : Chaque programme est divisé en plusieurs processus (unités d'exécution). 2. **L'ordonnancement** : Le système d'exploitation utilise un ordonnanceur qui : - - Gère une file d'attente des processus prêts à s'exécuter - - Alloue le processeur à chaque processus pendant un court laps de temps (quantum) - - Effectue des changements de contexte très rapides entre les processus + - Gère une file d'attente des processus prêts à s'exécuter + - Alloue le processeur à chaque processus pendant un court laps de temps (quantum) + - Effectue des changements de contexte très rapides entre les processus 3. **La rapidité du processeur** : Le processeur exécute des milliards d'instructions par seconde. Les changements de contexte sont si rapides (quelques millisecondes) que l'utilisateur ne perçoit pas les interruptions. diff --git a/Recursivité/Diviser_pour_regner/TP_LA_FLAMME.md b/Recursivité/Diviser_pour_regner/TP_LA_FLAMME.md index 054f3ac..650d1c8 100644 --- a/Recursivité/Diviser_pour_regner/TP_LA_FLAMME.md +++ b/Recursivité/Diviser_pour_regner/TP_LA_FLAMME.md @@ -104,7 +104,7 @@ def fusionner(gauche, droite): 1. Expliquer le rôle des variables `i` et `j` dans cette fonction. 2. Que se passe-t-il à la ligne `return resultat + gauche[i:] + droite[j:]` ? - Pourquoi est-il nécessaire d'ajouter `gauche[i:]` et `droite[j:]` à la fin ? + Pourquoi est-il nécessaire d'ajouter `gauche[i:]` et `droite[j:]` à la fin ? 3. Appliquer *à la main* `fusionner` sur ces deux sous-listes déjà triées, et écrire le résultat étape par étape : ```python @@ -151,12 +151,12 @@ sous_liste = [ | Tri fusion | O(n log n) | 1. Pour **n = 12** prétendant·e·s : - - Combien d'opérations environ pour le tri par sélection ? - - Combien d'opérations environ pour le tri fusion ? *(rappel : log₂(12) ≈ 3,58)* + - Combien d'opérations environ pour le tri par sélection ? + - Combien d'opérations environ pour le tri fusion ? *(rappel : log₂(12) ≈ 3,58)* 2. La saison 2 de La Flamme est un succès planétaire. Marc reçoit désormais **1 000 candidatures**. - Calculer l'ordre de grandeur du nombre d'opérations pour chaque algorithme. - Que remarquez-vous ? + Calculer l'ordre de grandeur du nombre d'opérations pour chaque algorithme. + Que remarquez-vous ? 3. La production doit choisir un algorithme à intégrer dans leur logiciel de classement. Lequel recommandez-vous, et pourquoi ? diff --git a/Routage/TP_GPS_Navigator.md b/Routage/TP_GPS_Navigator.md index 98c9bde..b33051d 100644 --- a/Routage/TP_GPS_Navigator.md +++ b/Routage/TP_GPS_Navigator.md @@ -110,9 +110,9 @@ L'algorithme de Dijkstra trouve le plus court chemin depuis une source vers tous 1. Initialiser toutes les distances à l'infini, sauf la source à 0 2. Marquer tous les sommets comme non visités 3. Tant qu'il reste des sommets non visités : - - Sélectionner le sommet non visité avec la plus petite distance - - Pour chaque voisin, mettre à jour la distance si on trouve un chemin plus court - - Marquer le sommet comme visité + - Sélectionner le sommet non visité avec la plus petite distance + - Pour chaque voisin, mettre à jour la distance si on trouve un chemin plus court + - Marquer le sommet comme visité ### 2.2. Implémentation diff --git a/Réseau/CALCUL.md b/Réseau/CALCUL.md index 838c896..e62b01b 100644 --- a/Réseau/CALCUL.md +++ b/Réseau/CALCUL.md @@ -63,53 +63,53 @@ Si vous n'êtes pas à l'aise avec le chiffre magique, une autre solution existe 1. **Convertir l'adresse IP et le masque de sous-réseau en binaire** : - - Par exemple, pour l'adresse IP + - Par exemple, pour l'adresse IP - ``` - 192.168.1.42 - ``` + ``` + 192.168.1.42 + ``` - et le masque + et le masque - ``` - 255.255.255.192 - ``` + ``` + 255.255.255.192 + ``` - - IP en binaire : `11000000.10101000.00000001.00101010` - - Masque en binaire : `11111111.11111111.11111111.11000000` + - IP en binaire : `11000000.10101000.00000001.00101010` + - Masque en binaire : `11111111.11111111.11111111.11000000` 2. **Effectuer une opération ET (AND) bit à bit** : - - Multiplier chaque bit de l'adresse IP par le bit correspondant du masque. - - Cela revient à conserver les bits de l'adresse IP là où le masque a des `1`, et à mettre des `0` ailleurs. + - Multiplier chaque bit de l'adresse IP par le bit correspondant du masque. + - Cela revient à conserver les bits de l'adresse IP là où le masque a des `1`, et à mettre des `0` ailleurs. 3. **Convertir le résultat en décimal** : - - Le résultat de l'opération ET donne l'adresse réseau en binaire. - - Convertir cette adresse binaire en décimal pour obtenir l'adresse réseau. + - Le résultat de l'opération ET donne l'adresse réseau en binaire. + - Convertir cette adresse binaire en décimal pour obtenir l'adresse réseau. **Pour trouver l'adresse de broadcast, la méthode est légèrement différente de celle utilisée pour trouver l'adresse réseau** : ### Méthode de calcul de l'adresse de broadcast en binaire 1. **Convertir l'adresse IP et le masque de sous-réseau en binaire** : - - Comme précédemment, convertissez l'adresse IP et le masque en binaire. + - Comme précédemment, convertissez l'adresse IP et le masque en binaire. 2. **Inverser le masque de sous-réseau** : - - Changez tous les `1` en `0` et tous les `0` en `1` pour obtenir le masque de sous-réseau inversé. + - Changez tous les `1` en `0` et tous les `0` en `1` pour obtenir le masque de sous-réseau inversé. 3. **Effectuer une opération OU (OR) bit à bit** : - - Ajoutez chaque bit de l'adresse IP au bit correspondant du masque inversé. - - Cela revient à conserver les bits de l'adresse IP là où le masque inversé a des `0`, et à mettre des `1` ailleurs. + - Ajoutez chaque bit de l'adresse IP au bit correspondant du masque inversé. + - Cela revient à conserver les bits de l'adresse IP là où le masque inversé a des `0`, et à mettre des `1` ailleurs. 4. **Convertir le résultat en décimal** : - - Le résultat de l'opération OU donne l'adresse de broadcast en binaire. - - Convertir cette adresse binaire en décimal pour obtenir l'adresse de broadcast. + - Le résultat de l'opération OU donne l'adresse de broadcast en binaire. + - Convertir cette adresse binaire en décimal pour obtenir l'adresse de broadcast. ### Exemple diff --git a/Réseau/README.md b/Réseau/README.md index d0f8cbb..7a140e6 100644 --- a/Réseau/README.md +++ b/Réseau/README.md @@ -139,17 +139,17 @@ Les réseaux sont la base d'Internet et des systèmes informatiques modernes. Co ### Exercice d'application 1. Trouvez votre adresse IP locale avec la commande : - ```sh - ipconfig (Windows) ou ifconfig / ip a (Linux/Mac) - ``` + ```sh + ipconfig (Windows) ou ifconfig / ip a (Linux/Mac) + ``` 2. Testez une requête DNS avec : - ```sh - nslookup www.example.com - ``` + ```sh + nslookup www.example.com + ``` 3. Comparez TCP et UDP en expliquant quel protocole vous utiliseriez pour : - - Envoyer un e-mail - - Jouer en ligne - - Regarder une vidéo en streaming + - Envoyer un e-mail + - Jouer en ligne + - Regarder une vidéo en streaming ------ diff --git a/SQL/CORRIGE.md b/SQL/CORRIGE.md index c83425b..caa63a3 100644 --- a/SQL/CORRIGE.md +++ b/SQL/CORRIGE.md @@ -433,27 +433,27 @@ SELECT DISTINCT genre FROM LIVRES WHERE genre NOT IN (SELECT genre FROM LIVRES W ## Exercice 11 : QCM 1. **Quelle clause permet de filtrer les résultats d'un GROUP BY ?** - - **Réponse : c) HAVING** + - **Réponse : c) HAVING** 2. **Quelle est la différence entre WHERE et HAVING ?** - - **Réponse : b) WHERE filtre avant GROUP BY, HAVING filtre après** + - **Réponse : b) WHERE filtre avant GROUP BY, HAVING filtre après** - Explication : WHERE filtre les lignes individuelles avant le regroupement. HAVING filtre les groupes après le regroupement et permet d'utiliser des fonctions d'agrégation. + Explication : WHERE filtre les lignes individuelles avant le regroupement. HAVING filtre les groupes après le regroupement et permet d'utiliser des fonctions d'agrégation. 3. **Que retourne `SELECT COUNT(*) FROM LIVRES WHERE 1=0;` ?** - - **Réponse : c) 0** + - **Réponse : c) 0** - Explication : La condition `1=0` est toujours fausse, donc aucune ligne n'est sélectionnée. COUNT(*) sur un ensemble vide retourne 0 (pas NULL, pas d'erreur). + Explication : La condition `1=0` est toujours fausse, donc aucune ligne n'est sélectionnée. COUNT(*) sur un ensemble vide retourne 0 (pas NULL, pas d'erreur). 4. **Quel type de jointure retourne tous les enregistrements de la table de gauche ?** - - **Réponse : b) LEFT JOIN** + - **Réponse : b) LEFT JOIN** - Explication : LEFT JOIN retourne toutes les lignes de la table de gauche, même si elles n'ont pas de correspondance dans la table de droite (avec NULL pour les colonnes de droite). + Explication : LEFT JOIN retourne toutes les lignes de la table de gauche, même si elles n'ont pas de correspondance dans la table de droite (avec NULL pour les colonnes de droite). 5. **Quelle fonction d'agrégation ignore les valeurs NULL ?** - - **Réponse : b) COUNT(colonne)** + - **Réponse : b) COUNT(colonne)** - Explication : `COUNT(*)` compte toutes les lignes, y compris celles avec des NULL. `COUNT(colonne)` ne compte que les valeurs non NULL de cette colonne. + Explication : `COUNT(*)` compte toutes les lignes, y compris celles avec des NULL. `COUNT(colonne)` ne compte que les valeurs non NULL de cette colonne. --- diff --git a/SQL/EXERCICES.md b/SQL/EXERCICES.md index f1c53e7..c498260 100644 --- a/SQL/EXERCICES.md +++ b/SQL/EXERCICES.md @@ -175,19 +175,19 @@ Pour tous les exercices, on considère la base de données d'une médiathèque c ## Exercice 8 : INSERT, UPDATE, DELETE 1. Écrire une requête pour ajouter l'auteur suivant : - - id : 9 - - nom : "Le Guin" - - prénom : "Ursula K." - - nationalité : "américain" - - année de naissance : 1929 + - id : 9 + - nom : "Le Guin" + - prénom : "Ursula K." + - nationalité : "américain" + - année de naissance : 1929 2. Écrire une requête pour ajouter le livre suivant : - - id : 13 - - titre : "La Main gauche de la nuit" - - id_auteur : 9 - - année de publication : 1969 - - genre : "SF" - - nombre de pages : 304 + - id : 13 + - titre : "La Main gauche de la nuit" + - id_auteur : 9 + - année de publication : 1969 + - genre : "SF" + - nombre de pages : 304 3. Écrire une requête pour changer le genre de "Dune" en "SF". @@ -200,17 +200,17 @@ Pour tous les exercices, on considère la base de données d'une médiathèque c ## Exercice 9 : Création de tables 1. Écrire la requête SQL pour créer la table EMPRUNTS avec : - - id (entier, clé primaire) - - id_livre (entier, clé étrangère vers LIVRES) - - id_adherent (entier) - - date_emprunt (date) - - date_retour (date, peut être NULL) + - id (entier, clé primaire) + - id_livre (entier, clé étrangère vers LIVRES) + - id_adherent (entier) + - date_emprunt (date) + - date_retour (date, peut être NULL) 2. Écrire la requête SQL pour créer une table EDITEURS avec : - - id (entier, clé primaire) - - nom (texte) - - pays (texte) - - ann_creation (entier) + - id (entier, clé primaire) + - nom (texte) + - pays (texte) + - ann_creation (entier) 3. Comment modifier la table LIVRES pour ajouter une colonne id_editeur qui référence la table EDITEURS ? @@ -221,54 +221,54 @@ Pour tous les exercices, on considère la base de données d'une médiathèque c Pour chaque requête suivante, décrire en français ce qu'elle retourne : 1. ```sql - SELECT titre FROM LIVRES WHERE ann_publi = (SELECT MIN(ann_publi) FROM LIVRES); - ``` + SELECT titre FROM LIVRES WHERE ann_publi = (SELECT MIN(ann_publi) FROM LIVRES); + ``` -2. ```sql - SELECT A.nom, COUNT(*) - FROM AUTEURS A - INNER JOIN LIVRES L ON A.id = L.id_auteur - GROUP BY A.id - HAVING COUNT(*) = (SELECT MAX(cnt) FROM (SELECT COUNT(*) as cnt FROM LIVRES GROUP BY id_auteur)); - ``` + 2. ```sql + SELECT A.nom, COUNT(*) + FROM AUTEURS A + INNER JOIN LIVRES L ON A.id = L.id_auteur + GROUP BY A.id + HAVING COUNT(*) = (SELECT MAX(cnt) FROM (SELECT COUNT(*) as cnt FROM LIVRES GROUP BY id_auteur)); + ``` 3. ```sql - SELECT DISTINCT genre FROM LIVRES WHERE genre NOT IN (SELECT genre FROM LIVRES WHERE ann_publi < 1950); - ``` + SELECT DISTINCT genre FROM LIVRES WHERE genre NOT IN (SELECT genre FROM LIVRES WHERE ann_publi < 1950); + ``` --- ## Exercice 11 : QCM 1. Quelle clause permet de filtrer les résultats d'un GROUP BY ? - - [ ] a) WHERE - - [ ] b) FILTER - - [ ] c) HAVING - - [ ] d) GROUP FILTER + - [ ] a) WHERE + - [ ] b) FILTER + - [ ] c) HAVING + - [ ] d) GROUP FILTER 2. Quelle est la différence entre WHERE et HAVING ? - - [ ] a) Aucune, ils sont équivalents - - [ ] b) WHERE filtre avant GROUP BY, HAVING filtre après - - [ ] c) HAVING filtre avant GROUP BY, WHERE filtre après - - [ ] d) WHERE ne fonctionne qu'avec les nombres + - [ ] a) Aucune, ils sont équivalents + - [ ] b) WHERE filtre avant GROUP BY, HAVING filtre après + - [ ] c) HAVING filtre avant GROUP BY, WHERE filtre après + - [ ] d) WHERE ne fonctionne qu'avec les nombres 3. Que retourne `SELECT COUNT(*) FROM LIVRES WHERE 1=0;` ? - - [ ] a) Une erreur - - [ ] b) NULL - - [ ] c) 0 - - [ ] d) Rien + - [ ] a) Une erreur + - [ ] b) NULL + - [ ] c) 0 + - [ ] d) Rien 4. Quel type de jointure retourne tous les enregistrements de la table de gauche ? - - [ ] a) INNER JOIN - - [ ] b) LEFT JOIN - - [ ] c) RIGHT JOIN - - [ ] d) CROSS JOIN + - [ ] a) INNER JOIN + - [ ] b) LEFT JOIN + - [ ] c) RIGHT JOIN + - [ ] d) CROSS JOIN 5. Quelle fonction d'agrégation ignore les valeurs NULL ? - - [ ] a) COUNT(*) - - [ ] b) COUNT(colonne) - - [ ] c) Les deux - - [ ] d) Aucune + - [ ] a) COUNT(*) + - [ ] b) COUNT(colonne) + - [ ] c) Les deux + - [ ] d) Aucune --- diff --git a/SQL/TP_SQLite.md b/SQL/TP_SQLite.md index 23efaad..2a74e74 100644 --- a/SQL/TP_SQLite.md +++ b/SQL/TP_SQLite.md @@ -12,123 +12,123 @@ Ce TP vous guidera à travers la création et la manipulation d'une base de donn 1. **Lancer DB Browser for SQLite**. Vous devriez obtenir l'écran suivant : - ![Écran d'accueil de DB Browser for SQLite](assets/1.png) + ![Écran d'accueil de DB Browser for SQLite](assets/1.png) 2. **Créer une nouvelle base de données** : - - Cliquez sur "Nouvelle base de données". - - Nommez votre base de données, par exemple `db_livres.db`. - - Vous verrez la fenêtre suivante : + - Cliquez sur "Nouvelle base de données". + - Nommez votre base de données, par exemple `db_livres.db`. + - Vous verrez la fenêtre suivante : - ![Fenêtre de création de la base de données](assets/2.png) + ![Fenêtre de création de la base de données](assets/2.png) - - Cliquez sur "Annuler" pour fermer cette fenêtre. + - Cliquez sur "Annuler" pour fermer cette fenêtre. 3. **Vérifier la création de la base de données** : - - Votre base de données est créée mais ne contient pas encore de tables. + - Votre base de données est créée mais ne contient pas encore de tables. - ![Base de données sans tables](assets/3.png) + ![Base de données sans tables](assets/3.png) ## Activité 3.2 : Création d'une table 1. **Accéder à l'onglet "Exécuter le SQL"** : - - Cliquez sur l'onglet "Exécuter le SQL". + - Cliquez sur l'onglet "Exécuter le SQL". 2. **Créer la table `LIVRES`** : - - Dans la fenêtre "SQL 1", saisissez la requête suivante : + - Dans la fenêtre "SQL 1", saisissez la requête suivante : - ```sql - CREATE TABLE LIVRES ( - id INT PRIMARY KEY, - titre TEXT, - auteur TEXT, - ann_publi INT, - note INT - ); - ``` + ```sql + CREATE TABLE LIVRES ( + id INT PRIMARY KEY, + titre TEXT, + auteur TEXT, + ann_publi INT, + note INT + ); + ``` - - Cliquez sur le bouton ▶ (ou appuyez sur F5) pour exécuter la requête. - - Un message "Requête exécutée avec succès" devrait apparaître. + - Cliquez sur le bouton ▶ (ou appuyez sur F5) pour exécuter la requête. + - Un message "Requête exécutée avec succès" devrait apparaître. - ![Table créée avec succès](assets/5.png) + ![Table créée avec succès](assets/5.png) ## Activité 3.3 : Insertion de données 1. **Insérer des enregistrements dans la table `LIVRES`** : - - Toujours dans l'onglet "Exécuter le SQL", saisissez la requête suivante : + - Toujours dans l'onglet "Exécuter le SQL", saisissez la requête suivante : - ```sql - INSERT INTO LIVRES (id, titre, auteur, ann_publi, note) VALUES - (1, '1984', 'Orwell', 1949, 10), - (2, 'Dune', 'Herbert', 1965, 8), - (3, 'Fondation', 'Asimov', 1951, 9), - (4, 'Le meilleur des mondes', 'Huxley', 1931, 7), - (5, 'Fahrenheit 451', 'Bradbury', 1953, 7), - (6, 'Ubik', 'K.Dick', 1969, 9), - (7, 'Chroniques martiennes', 'Bradbury', 1950, 8), - (8, 'La nuit des temps', 'Barjavel', 1968, 7), - (9, 'Blade Runner', 'K.Dick', 1968, 8), - (10, 'Les Robots', 'Asimov', 1950, 9), - (11, 'La Planète des singes', 'Boulle', 1963, 8), - (12, 'Ravage', 'Barjavel', 1943, 8), - (13, 'Le Maître du Haut Château', 'K.Dick', 1962, 8), - (14, 'Le monde des Ā', 'Van Vogt', 1945, 7), - (15, 'La Fin de l’éternité', 'Asimov', 1955, 8), - (16, 'De la Terre à la Lune', 'Verne', 1865, 10); - ``` + ```sql + INSERT INTO LIVRES (id, titre, auteur, ann_publi, note) VALUES + (1, '1984', 'Orwell', 1949, 10), + (2, 'Dune', 'Herbert', 1965, 8), + (3, 'Fondation', 'Asimov', 1951, 9), + (4, 'Le meilleur des mondes', 'Huxley', 1931, 7), + (5, 'Fahrenheit 451', 'Bradbury', 1953, 7), + (6, 'Ubik', 'K.Dick', 1969, 9), + (7, 'Chroniques martiennes', 'Bradbury', 1950, 8), + (8, 'La nuit des temps', 'Barjavel', 1968, 7), + (9, 'Blade Runner', 'K.Dick', 1968, 8), + (10, 'Les Robots', 'Asimov', 1950, 9), + (11, 'La Planète des singes', 'Boulle', 1963, 8), + (12, 'Ravage', 'Barjavel', 1943, 8), + (13, 'Le Maître du Haut Château', 'K.Dick', 1962, 8), + (14, 'Le monde des Ā', 'Van Vogt', 1945, 7), + (15, 'La Fin de l’éternité', 'Asimov', 1955, 8), + (16, 'De la Terre à la Lune', 'Verne', 1865, 10); + ``` - - Exécutez la requête en cliquant sur le bouton ▶ ou en appuyant sur F5. - - Un message de confirmation devrait apparaître. + - Exécutez la requête en cliquant sur le bouton ▶ ou en appuyant sur F5. + - Un message de confirmation devrait apparaître. - ![Données insérées avec succès](assets/6.png) + ![Données insérées avec succès](assets/6.png) 2. **Vérifier les données insérées** : - - Cliquez sur l'onglet "Parcourir les données" pour voir les enregistrements ajoutés. + - Cliquez sur l'onglet "Parcourir les données" pour voir les enregistrements ajoutés. - ![Données dans la table LIVRES](assets/7.png) + ![Données dans la table LIVRES](assets/7.png) ## Activité 3.4 : Exécution de requêtes SQL 1. **Sélectionner tous les enregistrements** : - - Dans l'onglet "Exécuter le SQL", saisissez la requête suivante : + - Dans l'onglet "Exécuter le SQL", saisissez la requête suivante : - ```sql - SELECT id, titre, auteur, ann_publi, note FROM LIVRES; - ``` + ```sql + SELECT id, titre, auteur, ann_publi, note FROM LIVRES; + ``` - - Exécutez la requête. Vous devriez obtenir tous les enregistrements de la table `LIVRES`. + - Exécutez la requête. Vous devriez obtenir tous les enregistrements de la table `LIVRES`. - ![Résultat de la requête SELECT](assets/8.png) + ![Résultat de la requête SELECT](assets/8.png) 2. **Sélectionner des colonnes spécifiques** : - - Pour obtenir uniquement les titres et auteurs des livres, utilisez la requête : + - Pour obtenir uniquement les titres et auteurs des livres, utilisez la requête : - ```sql - SELECT titre, auteur FROM LIVRES; - ``` + ```sql + SELECT titre, auteur FROM LIVRES; + ``` 3. **Filtrer les enregistrements** : - - Pour obtenir les livres écrits par Asimov, utilisez : + - Pour obtenir les livres écrits par Asimov, utilisez : - ```sql - SELECT titre, ann_publi FROM LIVRES WHERE auteur = 'Asimov'; - ``` + ```sql + SELECT titre, ann_publi FROM LIVRES WHERE auteur = 'Asimov'; + ``` 4. **Combiner des conditions** : - - Pour obtenir les livres d'Asimov publiés après 1953 : + - Pour obtenir les livres d'Asimov publiés après 1953 : - ```sql - SELECT titre, ann_publi FROM LIVRES WHERE auteur = 'Asimov' AND ann_publi > 1953; - ``` + ```sql + SELECT titre, ann_publi FROM LIVRES WHERE auteur = 'Asimov' AND ann_publi > 1953; + ``` 5. **Trier les résultats** : - - Pour trier les livres de K.Dick du plus ancien au plus récent : + - Pour trier les livres de K.Dick du plus ancien au plus récent : - ```sql - SELECT titre FROM LIVRES WHERE auteur = 'K.Dick' ORDER BY ann_publi; - ``` + ```sql + SELECT titre FROM LIVRES WHERE auteur = 'K.Dick' ORDER BY ann_publi; + ``` @@ -136,13 +136,13 @@ Ce TP vous guidera à travers la création et la manipulation d'une base de donn 7. Saisissez et testez la requête SQL suivante : - ```sql - SELECT titre, ann_publi - FROM LIVRES - WHERE auteur='Asimov' AND ann_publi>1953 - ``` + ```sql + SELECT titre, ann_publi + FROM LIVRES + WHERE auteur='Asimov' AND ann_publi>1953 + ``` - Vérifiez que vous obtenez bien les livres écrits par Asimov publiés après 1953. + Vérifiez que vous obtenez bien les livres écrits par Asimov publiés après 1953. 8. Écrivez une requête permettant d'obtenir les titres des livres publiés après 1945 qui ont une note supérieure ou égale à 9. diff --git a/Soc/CORRIGE.md b/Soc/CORRIGE.md index 697f382..7236e70 100644 --- a/Soc/CORRIGE.md +++ b/Soc/CORRIGE.md @@ -7,42 +7,42 @@ 1. **Réponse : b)** Le nombre de transistors double environ tous les deux ans (à coût constant) 2. **Réponse : d)** Toutes les réponses ci-dessus - - Les transistors approchent de la taille atomique - - L'effet tunnel quantique perturbe le fonctionnement - - La chaleur dégagée devient difficile à évacuer + - Les transistors approchent de la taille atomique + - L'effet tunnel quantique perturbe le fonctionnement + - La chaleur dégagée devient difficile à évacuer 3. **Réponse : b)** Multiplier le nombre de cœurs - - L'augmentation de la fréquence génère trop de chaleur - - La multiplication des cœurs permet d'augmenter la puissance totale sans augmenter la fréquence unitaire + - L'augmentation de la fréquence génère trop de chaleur + - La multiplication des cœurs permet d'augmenter la puissance totale sans augmenter la fréquence unitaire --- ## Exercice 2 : Composants d'un SoC 1. **Composants intégrables dans un SoC :** - - ✅ CPU - - ✅ GPU - - ❌ Disque dur mécanique - - ✅ Contrôleur Wi-Fi - - ✅ Mémoire cache - - ✅ NPU (Neural Processing Unit) - - ❌ Écran - - ✅ Contrôleur USB + - ✅ CPU + - ✅ GPU + - ❌ Disque dur mécanique + - ✅ Contrôleur Wi-Fi + - ✅ Mémoire cache + - ✅ NPU (Neural Processing Unit) + - ❌ Écran + - ✅ Contrôleur USB 2. **Pourquoi un disque dur mécanique ne peut pas être intégré :** - - Un disque dur mécanique contient des pièces mobiles (plateaux rotatifs, têtes de lecture) - - Ces composants mécaniques ne peuvent pas être miniaturisés à l'échelle d'une puce - - La technologie est fondamentalement différente (mécanique vs électronique) - - Les SSD (mémoire flash) peuvent en revanche être intégrés car ils sont purement électroniques + - Un disque dur mécanique contient des pièces mobiles (plateaux rotatifs, têtes de lecture) + - Ces composants mécaniques ne peuvent pas être miniaturisés à l'échelle d'une puce + - La technologie est fondamentalement différente (mécanique vs électronique) + - Les SSD (mémoire flash) peuvent en revanche être intégrés car ils sont purement électroniques 3. **Avantages et inconvénients :** - | Avantages | Inconvénients | - |-----------|---------------| - | Compacité : tout tient sur une puce | Non évolutif : impossible de remplacer un composant | - | Consommation réduite : moins de distance entre composants | Obsolescence : tout le système vieillit ensemble | - | Performance : communication ultra-rapide | Réparation difficile : panne = remplacement total | - | Coût de production réduit en masse | Impact environnemental : recyclage complexe | + | Avantages | Inconvénients | + |-----------|---------------| + | Compacité : tout tient sur une puce | Non évolutif : impossible de remplacer un composant | + | Consommation réduite : moins de distance entre composants | Obsolescence : tout le système vieillit ensemble | + | Performance : communication ultra-rapide | Réparation difficile : panne = remplacement total | + | Coût de production réduit en masse | Impact environnemental : recyclage complexe | --- @@ -50,30 +50,30 @@ 1. **Facteur multiplicatif entre Intel 4004 et Apple M1 :** - ``` - Facteur = 16 000 000 000 / 2 300 - Facteur = 6 956 521,7 - Facteur ≈ 7 millions - ``` + ``` + Facteur = 16 000 000 000 / 2 300 + Facteur = 6 956 521,7 + Facteur ≈ 7 millions + ``` - Le nombre de transistors a été multiplié par environ **7 millions** en 49 ans. + Le nombre de transistors a été multiplié par environ **7 millions** en 49 ans. 2. **Calcul théorique selon la loi de Moore :** - Entre 1971 et 2020, il y a 49 ans, soit 49/2 = 24,5 doublements. + Entre 1971 et 2020, il y a 49 ans, soit 49/2 = 24,5 doublements. - ``` - Transistors théoriques = 2 300 × 2^24,5 - Transistors théoriques = 2 300 × 23 726 566 - Transistors théoriques ≈ 54,6 milliards - ``` + ``` + Transistors théoriques = 2 300 × 2^24,5 + Transistors théoriques = 2 300 × 23 726 566 + Transistors théoriques ≈ 54,6 milliards + ``` 3. **Comparaison :** - - Valeur théorique : ~54,6 milliards de transistors - - Valeur réelle (Apple M1) : 16 milliards de transistors + - Valeur théorique : ~54,6 milliards de transistors + - Valeur réelle (Apple M1) : 16 milliards de transistors - L'Apple M1 a **moins** de transistors que prévu par la loi de Moore pure. Cependant, la loi de Moore a été globalement respectée jusqu'aux années 2010, puis le rythme a légèrement ralenti. De plus, l'Apple M3 (2023) atteint 37 milliards, montrant que la progression continue. + L'Apple M1 a **moins** de transistors que prévu par la loi de Moore pure. Cependant, la loi de Moore a été globalement respectée jusqu'aux années 2010, puis le rythme a légèrement ralenti. De plus, l'Apple M3 (2023) atteint 37 milliards, montrant que la progression continue. --- diff --git a/Soc/EXERCICES.md b/Soc/EXERCICES.md index 951eda0..ac99082 100644 --- a/Soc/EXERCICES.md +++ b/Soc/EXERCICES.md @@ -5,22 +5,22 @@ ## Exercice 1 : Loi de Moore (QCM) 1. La loi de Moore prédit que : - - [ ] a) La vitesse des processeurs double tous les ans - - [ ] b) Le nombre de transistors double environ tous les deux ans (à coût constant) - - [ ] c) La consommation électrique diminue de moitié tous les ans - - [ ] d) Le prix des processeurs double tous les deux ans + - [ ] a) La vitesse des processeurs double tous les ans + - [ ] b) Le nombre de transistors double environ tous les deux ans (à coût constant) + - [ ] c) La consommation électrique diminue de moitié tous les ans + - [ ] d) Le prix des processeurs double tous les deux ans 2. Pourquoi la loi de Moore atteint-elle ses limites physiques ? - - [ ] a) Les transistors ne peuvent pas être plus petits qu'un atome - - [ ] b) Les effets quantiques perturbent le fonctionnement sous 5 nm - - [ ] c) La dissipation thermique devient ingérable - - [ ] d) Toutes les réponses ci-dessus + - [ ] a) Les transistors ne peuvent pas être plus petits qu'un atome + - [ ] b) Les effets quantiques perturbent le fonctionnement sous 5 nm + - [ ] c) La dissipation thermique devient ingérable + - [ ] d) Toutes les réponses ci-dessus 3. Quelle stratégie les fabricants utilisent-ils pour contourner ces limites ? - - [ ] a) Augmenter la fréquence indéfiniment - - [ ] b) Multiplier le nombre de cœurs - - [ ] c) Utiliser des matériaux radioactifs - - [ ] d) Réduire la taille de la RAM + - [ ] a) Augmenter la fréquence indéfiniment + - [ ] b) Multiplier le nombre de cœurs + - [ ] c) Utiliser des matériaux radioactifs + - [ ] d) Réduire la taille de la RAM --- @@ -29,14 +29,14 @@ Un SoC moderne comme l'Apple M3 contient plusieurs composants. 1. Parmi les éléments suivants, lesquels peuvent être intégrés dans un SoC ? (Plusieurs réponses possibles) - - [ ] CPU - - [ ] GPU - - [ ] Disque dur mécanique - - [ ] Contrôleur Wi-Fi - - [ ] Mémoire cache - - [ ] NPU (Neural Processing Unit) - - [ ] Écran - - [ ] Contrôleur USB + - [ ] CPU + - [ ] GPU + - [ ] Disque dur mécanique + - [ ] Contrôleur Wi-Fi + - [ ] Mémoire cache + - [ ] NPU (Neural Processing Unit) + - [ ] Écran + - [ ] Contrôleur USB 2. Expliquer pourquoi un disque dur mécanique ne peut pas être intégré dans un SoC. @@ -141,8 +141,8 @@ RISC-V est une architecture de processeur open source. ## Exercice 9 : Conversion et calculs 1. Un processeur utilise une gravure de 3 nm. Convertir cette valeur en : - - Micromètres (µm) - - Mètres + - Micromètres (µm) + - Mètres 2. Sachant qu'un atome de silicium mesure environ 0,2 nm de diamètre, combien d'atomes de silicium peuvent théoriquement tenir sur une largeur de 3 nm ? diff --git a/Structures_lineaires/Pile_File/TD/TD_Pile_File.md b/Structures_lineaires/Pile_File/TD/TD_Pile_File.md index c4f8c1b..74c5e89 100644 --- a/Structures_lineaires/Pile_File/TD/TD_Pile_File.md +++ b/Structures_lineaires/Pile_File/TD/TD_Pile_File.md @@ -13,8 +13,8 @@ Le but du TD est de manipuler des piles et des files sans avoir d'implémentatio ![Pile_td](../Images/Pile_td.png) 1. Quel sera l'état de la pile après l'utilisation des méthodes suivantes : - - Depile(), Depile(), Empile(7), Empile(8),Depile() - - Que renvoie la méthode top() ? + - Depile(), Depile(), Empile(7), Empile(8),Depile() + - Que renvoie la méthode top() ? 2. Reprenons la pile de l'image, que faut-il faire comme méthode pour que Est_vide() soit vrai ? 3. En partant de 0, écrire les méthodes permettant de créer une pile contenant les numéros dans cet ordre : 19982018. (1 est en bas de pile) @@ -25,8 +25,8 @@ Le but du TD est de manipuler des piles et des files sans avoir d'implémentatio ![image-20220730000106940](../Images/File_td.png) 1. Quel sera l'état de la file après l'utilisation des méthodes suivantes : - - Defile(), Defile(), Enfile(7), Enfile(8),Defile() - - Que renvoie la méthode top() ? + - Defile(), Defile(), Enfile(7), Enfile(8),Defile() + - Que renvoie la méthode top() ? 2. Reprenons la file de l'image, que faut-il faire comme méthode pour que Est_vide() soit vrai ? 3. En partant de 0, écrire les méthodes permettant de créer une file contenant les numéros dans cet ordre : 19982018. (1 est en tête de file) diff --git a/Structures_lineaires/Pile_File/TP/TP_File.md b/Structures_lineaires/Pile_File/TP/TP_File.md index 0be0092..3e1891a 100644 --- a/Structures_lineaires/Pile_File/TP/TP_File.md +++ b/Structures_lineaires/Pile_File/TP/TP_File.md @@ -8,15 +8,15 @@ Pour cette implémentation, le constructeur de la classe utilisera un tableau po 1. Créez cette classe File contenant les méthodes suivantes : - * **enfile( )** + * **enfile( )** - * **defile( )** + * **defile( )** - * **top( )** + * **top( )** - * **est_vide( )** + * **est_vide( )** - * **taille( )** + * **taille( )** ## 2. File à taille fixe : @@ -30,11 +30,11 @@ Supposons que notre file à une taille fixe, disons 7 éléments maximum. Ici nous allons implémenter la file de manière récursive. Elle possèdera deux attributs, le premier sera un élément de la file nommé tête, le second sera une autre File. Cette seconde file possèdera elle aura un élément et une autre file en attribut. Ainsi de suite. 1. Programmez cette classe nommée File2 avec les méthodes suivantes - * **enfile( )** - * **defile( )** - * **top( )** - * **est_vide( )** - * **taille( )** + * **enfile( )** + * **defile( )** + * **top( )** + * **est_vide( )** + * **taille( )** ## 4. Implémentation d'un jeu de bataille : @@ -59,11 +59,11 @@ Un fichier carte.py contient la classe carte et les fonctions suivantes : 1. Pour ce travail vous allez devoir compléter les fonctions : - - tour + - tour - - bataille + - bataille - - jeu_fini + - jeu_fini ​ Ces fonctions se trouvent dans un fichier nommé carte_eleve.py