NSI Terminale — fiches de révision
Retrouve ici toutes les fiches de révision NSI Terminale regroupées par thèmes. Ouvre les menus pour accéder aux fiches.
C1 — Introduction — Révision
Les bases de données permettent de stocker des données. Pour manipuler les données présentes dans une base de données (écrire, lire ou encore modifier), il est nécessaire d’utiliser un type de logiciel appelé « système de gestion de base de données » (SGBD).
Les SGBD permettent de gérer la lecture, l’écriture ou la modification des informations contenues dans une base de données, de gérer les autorisations d’accès, d’assurer la redondance des données afin d’éviter les pertes (pannes), et de résoudre les problèmes d’accès concurrent lorsque plusieurs personnes sont connectées en même temps.
Par rapport à une base de données, le stockage dans un fichier CSV présente des limites : pas de contrôle d’autorisations, pas de redondance, pas de gestion des accès concurrents.
C2 — Bases de données relationnelles — Révision
Il existe différents types de bases de données : hiérarchiques, orientées objet, NoSQL et relationnelles.
Une relation peut être vue comme un tableau à deux dimensions constitué d’une entête (attributs décrivant le contenu des colonnes) et d’un corps (tuples correspondant aux lignes).
Pour chaque attribut, on indique un domaine de valeurs admissibles (ensemble des entiers, des chaînes de caractères, etc.).
La clé primaire identifie un tuple de manière unique. Une clé étrangère est un attribut d’une relation A qui apparaît comme clé primaire dans une relation B ; elle garantit l’intégrité entre deux relations.
Un schéma relationnel décrit l’ensemble des relations d’une application : noms des relations ; pour chacune, liste des attributs et domaine ; clé primaire (attributs soulignés) et clés étrangères (précédées du symbole #).
Exemple : AUTEURS(id, nom, prenom, ann_naissance, langue_ecriture) et LIVRES(id, titre, #id_auteur, ann_publi, note).
C3 — Langage SQL — Révision
Pour consulter, ajouter, modifier ou supprimer des données dans une base, on emploie le langage SQL via des requêtes : INSERT, SELECT, UPDATE, DELETE. On interroge plusieurs tables avec une jointure (JOIN / INNER JOIN).
Exemples : INSERT INTO LIVRES (id,titre,auteur,ann_publi,note) VALUES (1,'1984','Orwell',1949,10); • SELECT titre FROM LIVRES WHERE auteur='Asimov' • UPDATE LIVRES SET note=7 WHERE titre='Hypérion' • DELETE FROM LIVRES WHERE titre='Hypérion' • ... FROM LIVRES INNER JOIN AUTEURS ON LIVRES.id_auteur=AUTEURS.id
À savoir faire : écrire des requêtes simples (INSERT/SELECT/UPDATE/DELETE) et réaliser une jointure.
C4 — Récursivité — Révision
Une fonction est dite « récursive » si elle s’appelle elle‑même ; il faut toujours prévoir un cas d’arrêt. La récursivité en programmation est liée au raisonnement par récurrence en mathématiques.
À savoir faire : analyser un programme récursif ; écrire une fonction récursive simple.
C5 — Listes, piles, files — Révision
Listes. Structure pour regrouper des données. Deux parties : la tête (car), dernier élément ajouté ; et la queue (cdr), le reste de la liste. Opérations : vide, estVide, car, cdr, cons.
Piles. Structure LIFO : opérations estVide, empiler (push), dépiler (pop), taille.
Files. Structure FIFO : opérations estVide, enfiler (enqueue), défiler (dequeue), taille.
À savoir faire : implémenter liste, pile et file en Python.
C6 — Dictionnaires — Révision
Un dictionnaire associe des clés à des valeurs (ajout, modification, suppression, recherche). Implémentation fréquente par table de hachage ; temps d’accès moyen O(1) amorti.
À savoir faire : utiliser des dictionnaires en Python.
C7 — Arbres — Révision
Un arbre est une structure hiérarchique : nœud, racine, père, fils, feuille, arête. Profondeur d’un nœud, hauteur d’un arbre ; sous‑arbres gauche et droit ; NIL pour arbre/sous‑arbre vide.
Dans un ABR, toutes les clés du sous‑arbre gauche sont ≤ la clé du nœud, et la clé du nœud ≤ toutes les clés du sous‑arbre droit (valeurs ordonnables). Un arbre peut être vu comme une structure récursive.
C8 — Algorithmes sur arbres binaires — Révision
Sur un arbre binaire : calcul de hauteur et de taille ; parcours infixe, préfixe, suffixe et en largeur. Recherche et insertion dans un ABR : O(log n) si équilibré, O(n) si filiforme.
À savoir faire : implémenter ces algorithmes en Python.
C9 — Les graphes — Révision
Un graphe est défini par G=(V,E). Il peut être non orienté, orienté (arcs) ou pondéré. On distingue chaîne et cycle. Représentations : matrices d’adjacence ou listes d’adjacence selon la densité et les algorithmes ciblés.
À savoir faire : passer d’un schéma à une matrice d’adjacence puis à une liste d’adjacence (et inversement).
C10 — Algorithmes sur graphes — Révision
Parcours BFS (largeur) et DFS (profondeur), détection de cycles, recherche de chaîne.
À savoir faire : implémenter BFS/DFS et la détection de cycles.
C11 — Protocoles de routage — Révision
Un routeur transmet des paquets entre réseaux via une table de routage, maintenue statiquement ou dynamiquement (protocoles de routage). RIP correspond à Bellman‑Ford (métrique : nombre de sauts) ; OSPF à Dijkstra (métrique : coût).
À savoir faire : identifier la route empruntée selon RIP/OSPF.
C12 — Sécurisation des communications — Révision
Symétrique : même clé pour chiffrer et déchiffrer (ex. XOR bit à bit). Asymétrique : couple clé publique/clé privée, souvent utilisé pour l’échange de clé. HTTPS : échange de clé (asymétrique) puis flux chiffré (symétrique).
À savoir faire : chiffrer/déchiffrer un message via XOR (cas simple).
C13 — Calculabilité / décidabilité — Révision
Certains problèmes n’ont pas d’algorithme permettant de les résoudre (travaux de Church et Turing). On distingue indécidable (réponse oui/non) et non‑calculable (valeur) des problèmes décidables/calculables. Le problème de l’arrêt est indécidable.
À savoir faire : esquisser une preuve d’indécidabilité (problème de l’arrêt).
C14 — Paradigmes de programmation — Révision
Fonctionnel : fonctions pures, éviter les effets de bord, résultat dépend uniquement des paramètres. Objet : classes, attributs, méthodes (héritage/polymorphisme hors programme NSI).
À savoir faire : écrire un petit programme Python « fonctionnel » ; analyser/écrire un petit programme objet.
C15 — Méthode « Diviser pour régner » — Révision
La méthode se décompose en trois étapes : Diviser → Régner → Combiner. Exemple typique : tri‑fusion, de complexité O(n log n).
À savoir faire : implémenter le tri‑fusion en Python.
C16 — Programmation dynamique — Révision
On résout un problème d’optimisation en traitant des sous‑problèmes du plus petit au plus grand et en mémorisant les résultats intermédiaires.
À savoir faire : appliquer la méthode sur un cas simple (rendu de monnaie).
C17 — Recherche textuelle — Révision
Boyer‑Moore : prétraitement du motif, comparaison de droite à gauche, grands décalages possibles ; plus efficace que l’algorithme naïf lorsque le motif est grand.
À savoir faire : appliquer Boyer‑Moore sur un exemple simple.
C18 — Système sur puce (SoC) — Révision
Un SoC (système sur puce) intègre CPU, RAM, GPU et radio (Wi‑Fi/Bluetooth) sur une même puce (≈100 mm²) pour une faible consommation. Exemples d’usage : smartphones, consoles portables, Raspberry Pi, Mac Apple Silicon. Marché très porteur.
C19 — Processus — Révision
Un processus est un programme en exécution. États : prêt, élu, bloqué ; ordonnancement. Chaque processus possède un PID et un PPID ; des situations d’interblocage peuvent survenir.
À savoir faire : sous Unix, lister (ps/top) et tuer (kill) un processus.