📘 CodingMarble Learn

Programmation avancée et applications

Programmer à un niveau avancé, c'est choisir la bonne structure de données (tableau, liste chaînée, pile, file), écrire et tester du code dans un IDE, dessiner des graphiques et des animations, utiliser les fonctions d'un tableur, et ranger les données en sécurité dans une base de données relationnelle que l'on interroge avec SQL.

🎬 L'histoire pas à pas

  1. Un tableau a un nombre fixe de cases, ici six. La taille est choisie au départ. Quand il est plein, on ne peut plus rien ajouter.
  2. Une liste chaînée grandit quand il le faut. Chaque nœud contient une valeur et un lien vers le nœud suivant. Le dernier ne pointe sur rien (null). Appuie sur Ajouter.
  3. Une pile fonctionne comme une pile d'assiettes. On empile (push) et on dépile (pop) par le haut. Le dernier arrivé est le premier sorti.
  4. Une file fonctionne comme la queue à un guichet. On arrive à l'arrière et on part par l'avant. Le premier arrivé est le premier sorti.
  5. Une base de données range les données dans des tables. Deux tables sont reliées par une clé, l'id. Une requête SQL ne choisit que les lignes voulues, ici les notes de 50 ou plus.
  6. À toi de jouer. Choisis liste, pile ou file, puis appuie sur les boutons pour ajouter et retirer des éléments.

Astuce : fais glisser la scène 3D pour la tourner. Utilise deux doigts pour zoomer.

🤔 Les doutes courants, éclaircis

Pourquoi ne puis-je pas ajouter un septième élément au tableau ?

La taille d'un tableau est fixée à sa création. À l'étape 0, les six cases forment tout le tableau. Pour une collection qui grandit, utilise une liste.

Où la liste chaînée garde-t-elle l'ordre ?

Dans les liens. Chaque nœud ne connaît que le nœud suivant, donc on suit les flèches. Voir l'étape 1.

Pourquoi pop me donne-t-il le dernier élément ajouté ?

Une pile n'a qu'une extrémité ouverte, le sommet. L'élément le plus récent est au sommet, donc il sort le premier. Voir l'étape 2.

En quoi une file est-elle différente d'une pile ?

Dans une file, on ajoute à l'arrière et on retire à l'avant, donc le plus ancien sort d'abord. Appuie sur les boutons de l'étape 3.

Pourquoi utiliser deux tables et pas une seule ?

Pour que chaque fait soit rangé une seule fois. Les noms sont dans une table et les notes dans une autre, reliées par l'id. Corriger un nom ne demande alors qu'un seul changement. Voir l'étape 4.

Quelle structure dois-je utiliser ?

Taille fixe et accès rapide par indice : tableau. Collection qui grandit : liste. Annuler et retour : pile. File d'attente : file. Essaie chacune à l'étape 5.

Structures de données : tableau, liste chaînée, pile, file

Une structure de données est une façon d'organiser les données pour qu'un programme les utilise vite et facilement.

Les bibliothèques contiennent déjà ces outils. En Python, une list sert de pile (append, pop), et collections.deque sert de file rapide. Utilise une bibliothèque quand elle existe ; ne la réécris pas.

stack = []
stack.append(5); stack.append(8)
stack.pop()      # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft()      # gives 4

Utiliser un IDE : écrire, exécuter, tester

Un IDE (environnement de développement intégré) réunit au même endroit un éditeur, un bouton d'exécution, un débogueur et d'autres outils. Il colore ton code, propose des noms et montre les erreurs pendant que tu tapes.

Visualisation et animation en 2D et 3D

Les images nous aident à voir des tendances. Un programme peut dessiner des graphiques (barres, courbes, nuage de points), des dessins en 2D et des scènes en 3D. Une animation est la même image redessinée encore et encore avec un petit changement à chaque fois (environ 30 à 60 fois par seconde). Une méthode simple : garder une variable comme x, lui ajouter un peu à chaque image, puis redessiner. La 3D de cette page est faite de la même façon, avec une bibliothèque 3D.

Fonctions avancées du tableur

Un tableur peut faire un travail proche de la programmation grâce à ses fonctions :

Bases de données relationnelles et SQL

Une base de données relationnelle range les données dans des tables de lignes et de colonnes. Chaque table a une clé primaire, une colonne dont les valeurs sont uniques (l'id). Une autre table utilise cette valeur comme clé étrangère pour faire le lien. Une bonne conception range chaque fait une seule fois, donc sans données répétées.

SQL est le langage pour poser des questions et modifier les données :

SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;

INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;

L'intégrité veut dire que les données restent justes : les clés sont uniques, une clé étrangère doit correspondre à une vraie ligne, et les valeurs doivent avoir le bon type. La sécurité veut dire des mots de passe pour les utilisateurs, donner à chacun seulement les droits dont il a besoin, faire des sauvegardes, et ne jamais fabriquer du SQL en collant le texte de l'utilisateur dans la requête (utilise des paramètres), ce qui empêche l'injection SQL.

Contribuer aux ressources libres

Beaucoup d'outils et de bibliothèques sont open source : chacun peut les lire, les utiliser et les améliorer selon une licence. Tu peux aider en corrigeant un bogue, en améliorant un guide, en traduisant une page ou en ajoutant un exemple. Lis toujours la licence, cite les auteurs, et écris des messages clairs et polis quand tu proposes un changement.

À toi de jouer

Dans la 3D, à l'étape 5, empile 3 éléments sur une pile, puis dépile-les. Note l'ordre. Fais de même avec une file. Ensuite, prédis d'abord, vérifie après : si tu ajoutes 4, 9, 2 puis retires un élément, quelle valeur reste à l'avant de la file et au sommet de la pile ?

Formules et définitions clés

Exemples résolus

1. Les éléments 5, 8 et 2 sont empilés dans cet ordre. Puis on dépile deux fois. Qu'y a-t-il au sommet maintenant ?

Pile après les ajouts : 5, 8, 2 (2 au sommet). Le pop retire 2, puis 8. Il reste : 5. Sommet = 5.

2. Les éléments 4, 9, 2 entrent dans une file dans cet ordre. On fait un dequeue. Quel élément est à l'avant maintenant ?

Le premier arrivé part, donc 4 est retiré. L'avant de la file est 9.

3. Table des notes : ids 1 à 4 avec les scores 72, 45, 88, 51. Combien de lignes renvoie WHERE score >= 50 ?

72, 88 et 51 valent 50 ou plus. Cela fait 3 lignes.

4. Les cellules B2:B5 contiennent 72, 45, 88, 51. Que donne =SUMIF(B2:B5,">=50") ?

Elle additionne seulement 72, 88 et 51 : 72 + 88 + 51 = 211.

5. Pourquoi utiliser une pile pour vérifier les parenthèses d'une expression comme ( [ ] ) ?

On empile chaque parenthèse ouvrante. Quand une fermante arrive, on dépile et on vérifie qu'elle correspond. La dernière ouverte doit être fermée en premier (LIFO), et c'est ce que donne une pile. Si la pile est vide à la fin, les parenthèses sont bien appariées.

Erreurs fréquentes

Quiz d'entraînement

1. Quelle structure est LIFO ?
2. Quelle structure grandit un nœud à la fois, grâce à des liens ?
3. En SQL, quelle clause choisit les lignes qui respectent une règle ?
4. Une colonne avec une valeur unique pour chaque ligne est une :
5. À quoi sert un point d'arrêt du débogueur ?

Entraînement : réponds toi-même

Écris ou choisis ta réponse, puis appuie sur Vérifier. Prends un indice si tu bloques ; la solution complète s'affiche après ta réponse.

Questions fréquentes

Quelle est la différence entre un tableau et une liste chaînée ?

Un tableau a une taille fixe et permet d'aller directement à n'importe quel élément par son indice. Une liste chaînée peut grandir et rétrécir, mais il faut suivre les liens un par un pour atteindre un élément.

Qu'est-ce qu'une clé primaire et une clé étrangère ?

Une clé primaire est une colonne qui donne à chaque ligne une valeur unique, comme un numéro d'élève. Une clé étrangère est une colonne d'une autre table qui contient cette valeur pour relier les deux tables.

Pourquoi l'injection SQL est-elle dangereuse et comment l'éviter ?

Si tu colles le texte de l'utilisateur directement dans une commande SQL, un utilisateur malin peut ajouter ses propres commandes et lire ou supprimer des données. Utilise des requêtes paramétrées pour que le texte soit toujours traité comme une simple donnée.

À voir d'abord

À voir ensuite