★ À maîtriser
📌 Un algorithme est indépendant du langage et de la machine, tandis qu’un programme traduit cet algorithme dans un langage de programmation et dépend du paradigme utilisé.
📌 La première version du calcul de la somme de 1 à n effectue n additions, tandis que la version de Gauss effectue une addition, une multiplication et une division.
Compléments
Algorithme indépendant du langage, programme dépendant d’un langage
★ À maîtriser
📌 La lecture et l’écriture au clavier nécessitent la bibliothèque iostream et utilisent respectivement std::cin et std::cout.
📌 L’ouverture d’un fichier avec ios::in permet de lire, avec ios::out d’écrire en écrasant le contenu existant, et avec ios::app|ios::out d’écrire à la suite du contenu existant.
Compléments
cin lit, cout écrit, fstream échange avec les fichiers
F-D-E-S-R : finitude, définition, entrées, sorties, rendement
★ À maîtriser
Compléments
📌 L’affectation modifie la valeur d’une variable, tandis qu’une comparaison produit un booléen à partir de deux expressions de même type.
📌 Une boucle while évalue sa condition avant d’entrer dans le corps, qui peut donc ne jamais être exécuté, et cette condition doit pouvoir évoluer.
📌 Dans un tableau de taille N indexé à partir de zéro, les indices valides vont de 0 à N-1 ; utiliser i <= N provoque un accès hors limites lorsque i vaut N.
if, switch, for, while : choisir puis répéter
📌 Une fonction est caractérisée par son nom, ses paramètres avec leurs types et le type de son résultat, et elle permet de réutiliser un traitement sans copier-coller le code.
📌 Une assertion vérifie une condition de programmation et provoque l’arrêt du programme si cette condition est fausse, mais elle peut être désactivée en mode Release avec -DNDEBUG.
Précondition violée → assertion échouée
📌 La pile stocke notamment les paramètres d’appel et les variables locales avec une désallocation automatique selon le modèle LIFO, tandis que le tas sert à l’allocation dynamique et doit être libéré explicitement.
📌 En C++, l’opérateur new alloue dynamiquement une variable et renvoie son adresse, tandis que delete libère la mémoire correspondante.
Pile automatique et LIFO, tas dynamique et libération explicite
★ À maîtriser
Compléments
Premier élément → traitement → élément suivant → butée
★ À maîtriser
📌 Chaque fichier .cpp contient des définitions de fonctions, chaque fichier .h déclare des fonctions, et les fichiers .o sont produits par compilation avant l’édition des liens.
Compléments
📌 Un fichier d’en-tête doit être protégé contre les inclusions multiples avec des macros conditionnelles ou avec #pragma once.
.cpp → .o → édition des liens → exécutable
📌 Une règle de Makefile a la forme cible: dépendances suivie, sur une ligne précédée d’une tabulation, de la commande de production de la cible.
📌 Si une dépendance est plus récente que sa cible, make exécute la règle de production correspondante et propage cette reconstruction dans le graphe des dépendances.
Fichier source plus récent → reconstruction des dépendances
★ À maîtriser
📌 Le tri par sélection recherche le minimum dans la partie non triée et l’échange avec son premier élément ; il est en place, non stable et réalise O(n²) comparaisons et O(n) échanges.
Le tri par insertion considère la partie gauche comme triée, décale vers la droite les éléments supérieurs à la clé, puis insère la clé à sa position correcte.
Le tri par insertion est en place et stable, avec une complexité O(n²) au pire et en moyenne, mais O(n) lorsque le tableau est déjà trié.
📌 Le tri rapide choisit un pivot, partitionne le tableau autour de ce pivot, puis trie récursivement les deux sous-parties ; sa complexité moyenne est O(n log n) et son pire cas est O(n²).
Compléments
Sélection choisit, insertion décale, bulles échangent, rapide partitionne
| Tri | Principe | Complexité | Stabilité |
|---|---|---|---|
| Sélection | Choisir le minimum puis l’échanger | O(n²) comparaisons | Non stable |
| Insertion | Décaler les éléments puis insérer une clé | O(n²), O(n) déjà trié | Stable |
| Bulles | Échanger les adjacents mal ordonnés | O(n²), O(n) déjà trié | Stable |
| Rapide | Partitionner autour d’un pivot | O(n log n) moyen, O(n²) pire cas | Non stable |
| Zone | Allocation | Libération | Organisation |
|---|---|---|---|
| Pile | Variables locales et paramètres | Automatique | LIFO |
| Tas | Allocation dynamique avec new | Explicite avec delete | Accès par adresse |
Teste tes connaissances sur Spécification et algorithmique en C++ avec 11 questions à choix multiples et corrections détaillées.
1. Quelle distinction décrit correctement la relation entre un algorithme et un programme ?
2. Pour calculer la somme des entiers de à , quelle comparaison des opérations est correcte entre la boucle et la formule de Gauss ?
Mémorisez les concepts clés de Spécification et algorithmique en C++ avec 10 flashcards interactives.
Quelle différence principale existe entre un algorithme et un programme ?
Un algorithme est indépendant du langage et de la machine, un programme dépend du langage et du paradigme.
Quelle bibliothèque est nécessaire pour la lecture et l’écriture au clavier en C++ ?
La bibliothèque iostream.
Que fait ios::app lors de l’ouverture d’un fichier ?
Il permet d’écrire à la suite du contenu existant.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches