Just... Fiches de cours
1) đ§ Python & Algorithmique
-
S.D.D
- Liste :
L = [1, 2, 3]- AccĂšs :
L[i] - Parcours :
for x in L :for i in range(len(L)) :
- AccĂšs :
- Dictionnaire :
d = {'a':1, 'b':2}- Clés :
for k in d : - Valeurs :
for v in d.values() : - Couples :
for k,v in d.items() :
- Clés :
- Liste :
-
Piles & Files
- Piles (LIFO)
- Avec liste python :
Empiler :pile.append(x)
Dépiler :x = pile.pop()
- Avec liste python :
- Files (FIFO)
from collections import import deque
file = deque
file.append(x)â enfiler
x = file.popleft()â dĂ©filer
ajoute Ă la fin, retire en tĂȘte
- Piles (LIFO)
-
Quand utiliser quoi ?
- Besoin de revenir en arriĂšre (historique, annuler)
â Pile - Ordre d'arrivĂ©e (file d'attente)
â File
- Besoin de revenir en arriĂšre (historique, annuler)
-
Récursivité
def f(n) :
if condition_base :
return ...
else :
return f(n-1) ...
- Ă savoir faire :
- Identifier la condition d'arrĂȘt
- Compter le nb d'appels (C ~) :
- si on entre 1 Ă chaque fois â n appel
- si on coupe n en 2 Ă chaque fois â log n appel
- si on a 2 appel rĂ©cursifs par appel â souvent exp.
2) đ ComplexitĂ© & Tri
-
Ordre grandeur Ă connaĂźtre
- O(1) : temps constant â accĂšs tab[i], dico["clĂ©"]
- O(n) : 1 boucle simple sur n éléments
- O(nÂČ) : 2 boucles imbriquĂ©es
- O(log n) : tri fusion, tri rapide (en moyenne)
-
Tri classiques
- Tri par insertion : Idéal pour tableau presque trié
Moyenne et pire cas : O(nÂČ), meilleur cas (dĂ©jĂ triĂ©) : O(n) - Tri par sĂ©lection
Toujours O(nÂČ) (on cherche min, on Ă©change) - Tri fusion : DĂ©coupage en 2 + fusion triĂ©e
O(n log n), stable
- Tri par insertion : Idéal pour tableau presque trié
3) đł Arbre Binaire & ABR
-
Définition :
Chaque nĆud a au plus 2 enfants (gauche, droite) -
Arbre Binaire de Recherche :
- sous-arbre G : val < racine
- sous-arbre D : val > racine
-
Parcours
- Préfixe : Racine - Gauche - Droite
- Infixe : Gauche - Racine - Droite
- Suffixe : Gauche - Droite - Racine
-
Taille = nb total de nĆuds
-
Hauteur = longueur du plus long chemin racine â feuille (nb d'arĂȘtes ou de niveau selon Ă©noncĂ©)
-
Notions
- Racine : le sommet de l'arbre
- Feuille : un nĆud sans fils
- NĆuds intern. : les nĆuds qui sont ni la racine ni les feuilles
- ArĂȘtes : un lien entre 2 nĆuds
- Branche : une suite de nĆuds consĂ©cutifs de la racine vers une feuille
- AritĂ© : nb maximal d'enfants qu'un nĆud peut avoir
- Taille : nb total de nĆuds de l'arbre
- Hauteur : nb de nĆuds de la branche la plus longue
- Profondeur / niveau : nb de nĆuds sur le chemin de la racine Ă un nĆud donnĂ©
-
Implémentation Arbres Binaires
class Noeud :
def __init__(self, v, g=None, d=None):
self.valeur = v
self.gauche = g
self.droite = d
def taille(a):
if a is None:
return 0
return 1 + taille(a.gauche) + taille(a.droite)
def hauteur(a):
if a is None:
return 0
else:
return 1 + max(hauteur(a.gauche), hauteur(a.droite))
def parcours_prefixe(a):
if a is None:
return []
return [a.valeur] + parcours_prefixe(a.gauche) + parcours_prefixe(a.droite)
def parcours_infixe(a):
if a is None:
return []
return parcours_infixe(a.gauche) + [a.valeur] + parcours_infixe(a.droite)
def parcours_suffixe(a):
if a is None:
return []
return parcours_suffixe(a.gauche) + parcours_suffixe(a.droite) + [a.valeur]
- Pour un ABR, obtenir les valeurs triées = parcours infixe G-R-D
4) Graphes, BFS/DFS
- Un nĆud â 2 enfants : g, d
- Feuille : nĆud sans enfants â sous-arbre g/d
- Racine : nĆud du dĂ©part
5) SQL & BDD
- RequĂȘte gĂ©nĂ©rale
SELECT colonne
FROM table1
JOIN table2 ON table1.cle = table2.cle
WHERE condition
GROUP BY ...
HAVING ...
ORDER BY colonne ASC/DESC;
-
Opérations courantes :
- Sélection :
SELECT * FROM Eleves WHERE age > 17; - Projection (certaines colonnes) :
SELECT nom, prenom FROM Eleves; - Tri :
SELECT * FROM Eleves ORDER BY nom ASC;
- Sélection :
-
Insertion
INSERT INTO Eleves (nom, prenom, age) VALUES ("Dupont", "Paul", 17); -
Mise Ă jour
UPDATE Eleves SET age = 18 WHERE nom = "Dupont"; -
Suppression
DELETE FROM Eleves WHERE id = 3; -
Jointure classique
SELECT Eleves.nom, Classes.nom FROM Eleves JOIN Classes ON Eleves.id_classe = Classes.id; -
RequĂȘtes d'agrĂ©gat
SELECT COUNT(*) FROM Eleves; SELECT AVG(montant) FROM Eleves; SELECT MIN(age) FROM Eleves;
6) Réseaux & Architecture
-
ModÚle (simplifié)
- IP : adresse logique machine
- TCP : protocole fiable, connexion, garantit l'ordre
- UDP : plus rapide, pas de garantie (vidéo, jeux)
-
Routage : RIP vs OSPF
- RIP : choisit le chemin avec le moins de sauts (routeurs)
- OSPF :
- utilise un coût = 10^8 / bande passante (bits/s)
- on additionne les coûts sur chaque lien
- meilleur chemin = coût total minimal
-
Processus / SystĂšme
- Ătats d'un processus :
- prĂȘt : attend d'ĂȘtre exĂ©cutĂ©
- élu : en cours d'exécution
- bloqué : attend 1 ressource (I/O, verrou...)
- Interblocage (deadlock) :
2 processus se bloquent mutuellement en attendant une ressource détenue par l'autre
- Ătats d'un processus :
7) Représentation de l'information
-
7.1 Binaire
- Base 2
- 1 bit : 0 ou 1
- 1 octet : 8 bits
- Ex : binaire â dĂ©cimal : 10ââ = 1Ă2Âł + 1Ă2Âč + 0 = 11
- dĂ©cimal â binaire : division par 2
- Base 2
-
7.2 Entiers signés (complément à deux)
- Bit de poids fort = signe (1 = nég)
- Pour inverser un signe : inversion des bits + 1
-
7.3 Images (bases)
- Représentées par une grille de pixels
- Chaque pixel a une couleur codée (souvent 24 bits : 8 bits par canal R, G, B)
- Taille du fichier â largeur Ă hauteur Ă bits par pixel
-
7.4 Mémoire
- RAM : volatile, rapide
- contient les pgm en cours d'exécution & leurs données
- Mémoire de masse (disque dur, SSD) :
- non volatile, plus lente
- stockage permanent
- RAM : volatile, rapide
-
7.5 Concepts
- Base de données relationnelle : ensemble de tables
- Une table : lignes (enregistrements) Ă colonnes (attributs)
- Clé primaire (PK) : identifiant unique d'une ligne (valeurs uniques, pas null)
- Clé étrangÚre (FK) : référence à une clé primaire d'une autre table (assure le lien entre tables)
-
Questions fréquentes
- Pourquoi X ne peut pas ĂȘtre PK ?
- Car X n'est pas unique / doublons possibles / peut ĂȘtre null
8) Logique Ă circuits
- 8.1 Logique booléenne
- Valeurs â True / False
- Opérateurs :
- not A
- A and B
- A or B
| Ex | A | B | not A | A and B | A or B | A nand B | A nor B | A xor B |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | |
| 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | |
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
9) Réseaux & Internet
-
9.1 ModĂšles en couches
- ModÚles TCP/IP simplifié :
- Application (HTTP, DNS)
- Transport (TCP, UDP)
- Internet (IP)
- AccÚs réseau (Ethernet, Wi-Fi)
- ModÚles TCP/IP simplifié :
-
9.2 Adresse IP
- IPv4 : 32 bits, écrite sous forme décimale pointée : 192.168.1.16
- SĂ©pare rĂ©seau / machine grĂące au masque (ex : /24 â 255.255.255.0)
-
9.3 Routeur & DNS
- Routeur : relie plusieurs réseaux
- choisit le chemin pour les paquets
- DNS : correspondance nom de domaine â adresse IP
- www.exemple.com â 93.184.216.34
- Routeur : relie plusieurs réseaux
-
9.4 TCP vs UDP
- TCP :
- orienté connexion
- fiable (contrÎle erreur, accusés ou réception)
- plus lent
- Ex : HTTP(s), mail
- UDP :
- sans connexion
- rapide, moins fiable
- Ex : streaming, jeux en ligne
- TCP :
10) P.O.O.
- Héritage
Permet de créer une classe qui hérite d'une autre
Ex :
class Animal :
def __init__(self, nom):
self.nom = nom
def parler(self):
return "..."
class Chien(Animal):
def parler(self):
return "Wouf"
- Récapitulatif SQL & BDD
- A1. Clé primaire (PK) : attribut(s) qui identifie(nt) de façon unique chaque ligne (valeurs uniques, pas null)
- Clé étrangÚre (FK) : attribut qui référence la PK d'une autre table (assure le lien entre tables)
- A2. SELECT / WHERE
SELECT col1, col2
FROM table
WHERE condition1 AND condition2;
Ex :
SELECT nom, prenom FROM Clients WHERE ville = "Paris";
SELECT * FROM emprunt WHERE dateRendu IS NULL;
- A3. ORDER BY (tri)
SELECT ...
FROM ...
ORDER BY col1 ASC; -- croissant
ORDER BY col4 DESC; -- décroissant
- A4. COUNT / DISCOUNT (compter)
SELECT COUNT(*) FROM table;
SELECT COUNT(DISTINCT col) FROM table;
- A5. JOIN
Quand on veut des infos dans 2 tables :
SELECT c.nom, c.prenom
FROM Clients c
JOIN Commandes co ON c.id = co.id;
WHERE co.date = "30/04/2021";
- A6. INSERT
INSERT INTO table (col1, col2) VALUES (v1, v2);
- A8. DELETE
DELETE FROM table WHERE condition;
B) Réseaux (RIP / OSPF / IP)
-
B1. RIP (Routing Information Protocol)
- Métrique = nbr de sauts (routeurs traversés)
- Le "meilleur" chemin = moins routeurs
-
B2. OSPF
- Minimise le coût total (somme des coûts des liaisons)
- Souvent on a une formule : coût = constante / débit
- DĂ©bit plus faible â coĂ»t plus grand
- Calcul du coût :
- Calculer le coût
- Additionner les coûts d'un chemin
- Choisir le plus petit total
Linux
-
Les droits / catégories des utilisateurs :
- u â user
- g â group
- o â other (users)
- a â all
- r â read
- w â write
- x â execute
-
Les commandes :
- cd : changer de répertoire courant
- mkdir : créer un répertoire
- ls : lister
- pwd : afficher le chemin absolu (de la racine â rep.)
- cp : copier + fichier rep.
- touch : créer + fichier vide
- chmod : changer rm = supprimer / rep. = répertoire
- rm : supprimer fichier ou répertoire (rm -r)
Autres
- Liste en extension
Lz = [42, 10, 25, 10, 70, 73, 17]
0 1 2 3 4 5 6
print(type(L))
liste
print(L[3])
10
print(len(L))
7
-
Append â ajoute Ă la fin de la liste
-
Pop(0) â enlĂšve le terme de rang 0
-
Remove(17) â enlĂšve tous les Ă©lĂ©ments Ă©gaux Ă 17
-
[3] â 100 â remplace le terme de rang 3
-
Parcours de liste
for i in range(len(L)) :
â parcours avec les indicesfor item in L :
â parcours avec les Ă©lĂ©ments (direct)
Fonctions Python (extraits)
def recherche(L,e):
for i in range(len(L)):
if L[i] == e:
return True
return False
def recherche(L,e):
for item in e:
if item == e:
return True
return False
def minimum(L):
min = L[0]
for i in range(1,len(L)):
if L[i] < min:
min = L[i]
return min
def maximum(L):
max = L[0]
for i in range(1,len(L)):
if L[i] > max:
max = L[i]
return max
def somme(L):
s = 0
for i in range(len(L)):
s = s + L[i]
return s
def moyenne(L):
s = 0
for i in range(len(L)):
s = s + L[i]
m = s / len(L)
return m