Mémento NSI - Spécialité

Expertise : Réseaux, SQL, POO et Récursivité

1. Adressage IPv4 & Masques

L'adresse IP est composée de 4 octets (32 bits). Le masque sépare la partie Réseau de la partie Hôte.

Calculs fondamentaux :
  • Adresse Réseau : \( IP_{binaire} \text{ AND } Masque_{binaire} \)
  • Adresse de Broadcast : \( Réseau_{binaire} \text{ OR } (\text{NOT } Masque_{binaire}) \)
  • Nombre d'adresses disponibles : \( 2^{(32 - n)} - 2 \) (on exclut le réseau et le broadcast).
  • Coût d'une liaison OSPF : \( \text{Coût} = \frac{10^8}{\text{débit en bps}} \)

Exemple : 172.16.150.40 / 22

  • Le masque /22 est : 255.255.252.0
  • En binaire : 11111111.11111111.11111100.00000000
  • Le changement se fait sur le 3ème octet.
ParamètreValeur
IP172.16.150.40
Réseau172.16.148.0
Broadcast172.16.151.255
Nb Hôtes\( 2^{10} - 2 = 1022 \)

2. Bases de Données (SQL)

Modèle : Utilisateurs(id_user, nom, ville) et Commandes(id_cmd, #id_user, produit, prix).

Extraction avec Jointure (SELECT / WHERE / JOIN)

Objectif : Lister les produits achetés par les utilisateurs habitant à 'Lyon'.

SELECT Utilisateurs.nom, Commandes.produit
FROM Utilisateurs
JOIN Commandes ON Utilisateurs.id_user = Commandes.id_user
WHERE Utilisateurs.ville = 'Lyon';

Mise à jour (UPDATE)

Objectif : Appliquer une remise de 10% sur tous les produits dépassant 100€.

UPDATE Commandes
SET prix = prix * 0.9
WHERE prix > 100;

3. Programmation Orientée Objet (POO)

Une Classe est un moule, un Objet est une instance de ce moule.

class Robot:
    def __init__(self, nom, batterie=100):
        self.nom = nom          # Attribut
        self.batterie = batterie # Attribut

    def saluer(self):           # Méthode
        if self.batterie > 0:
            print(f"Bonjour, je suis {self.nom} !")
            self.batterie -= 1
        else:
            print("Batterie vide...")

# Utilisation
r2d2 = Robot("R2-D2")
r2d2.saluer()
print(r2d2.batterie) # Affiche 99

4. Récursivité

Algorithme qui résout un problème en invoquant une version plus simple du même problème.

def factorielle(n):
    # 1. CAS DE BASE (Arrêt)
    if n == 0:
        return 1
    # 2. APPEL RÉCURSIF (Hérédité)
    else:
        return n * factorielle(n - 1)
Trace d'exécution pour factorielle(3) :
- factorielle(3) appelle 3 * factorielle(2)
- factorielle(2) appelle 2 * factorielle(1)
- factorielle(1) appelle 1 * factorielle(0)
- factorielle(0) renvoie 1 (Base)
- Remontée : 1 * 1 = 1 → 2 * 1 = 2 → 3 * 2 = 6.