Aller au contenu principal
BacInfo
Hors-ligne · imprimable

Fiches de révision.

Toutes les notions clés du programme regroupées par chapitre, format optimisé pour l'impression. 64 cartes au total.

Réviser (FSRS) →
Ch. 01

Structures de données

Le socle : variables, constantes, types standards (entier, réel, booléen, caractère, chaîne) et premières manipulations en Analyse, Pascal et Python.

Opérateurs et expressions

  • Ordre de priorité des opérateurs (du plus prioritaire au moins) ?

    1. ( ) parenthèses
    2. not / non
    3. *, /, div, mod, and
    4. +, -, or
    5. =, <>, <, >, <=, >=
    #priorite
  • Différence entre div et mod ?

    • a div b = quotient de la division entière
    • a mod b = reste de la division entière
    • Exemple : 17 div 5 = 3 et 17 mod 5 = 2.
    #arithmetique
  • Division entière en Python ?

    // pour la division entière, % pour le modulo. 12 // 5 = 2 et 12 % 5 = 2. ⚠️ / en Python est toujours division réelle : 12 / 5 = 2.4.

    #python
  • Valeur de not (3 > 5) and (2 < 4) ?

    not (3 > 5) = not faux = vrai Puis vrai and (2 < 4) = vrai and vrai = vrai.

    #logique
  • Comment écrit-on différent de en Pascal vs Python ?

    • Pascal : <> (ex : if x <> 0 then)
    • Python : != (ex : if x != 0:)
    • Analyse : ou <>
    #comparaison
  • Comment calculer 2^10 en Pascal ?

    Pascal n'a pas d'opérateur de puissance natif. Solutions : - Fonction Power(2, 10) (unité Math) - Formule exp(10 * ln(2))

    En Python : 2 ** 10 directement.

    #pascal
  • Quel type retourne une comparaison a < b ?

    Booléen (bool) : vrai ou faux (True / False).

    #type

Opérateurs et expressions

  • Quel est l'opérateur de division entière en Python ?

    // — exemple : 7 // 2 = 3

    #python#operateur
  • Quel est l'opérateur de modulo (reste) en Pascal ?

    mod — exemple : 7 mod 2 = 1

    #pascal#operateur
  • En quelle ordre s'évaluent ces opérateurs ? *, +, ( ), and

    1. ( ) — parenthèses
    2. * — multiplication / division
    3. + — addition / soustraction
    4. and — ET logique
    #priorite
  • L'expression not (3 < 5) vaut ?

    faux — car 3 < 5 est vrai, donc not vrai = faux.

    #logique
  • Comment écrit-on différent de en Pascal ?

    <> — par exemple if x <> 0 then ...

    #pascal#comparaison
  • Pascal a-t-il un opérateur de puissance natif ?

    Non. On utilise : - la fonction Power(base, exposant) (unité Math), ou - la formule exp(exposant * ln(base)).

    #pascal
  • Que vaut 12 / 5 en Python ?

    2.4 (division réelle). Pour la division entière, utiliser //.

    #python

Variables, constantes et types

  • Qu'est-ce qu'une variable ?

    Toute donnée pouvant prendre différentes valeurs tout le long d'un algorithme ou d'un programme.

    Caractérisée par : son nom, son type, son contenu.

    #definition#variable
  • Qu'est-ce qu'une constante ?

    Toute donnée dont on décide de garder la valeur inchangée tout le long d'un algorithme ou d'un programme.

    #definition#constante
  • Symbole d'affectation en Analyse ?

    (flèche gauche)

    #syntaxe#analyse
  • Symbole d'affectation en Pascal ?

    :=

    #syntaxe#pascal
  • Pascal distingue-t-il majuscules et minuscules dans les identificateurs ?

    Non. Bac, BAC et bac désignent la même variable.

    #pascal#identificateur
  • L'identificateur Code+Produit est-il valide en Pascal ?

    Non — un identificateur ne peut pas comporter le signe + (ni d'autres opérateurs, ni d'espaces).

    #pascal#identificateur
  • Citer 3 règles pour un identificateur Pascal valide.

    1. Commencer par une lettre (ou _).
    2. Seulement lettres, chiffres et _.
    3. Pas d'accents, pas d'espaces, pas d'opérateurs.
    #pascal#identificateur
  • Quel est le type de la variable x en Pascal après x : real; ?

    réel (nombre à virgule)

    #pascal#type
  • Permuter x et y sans variable intermédiaire (Analyse) ?

    `` x ← x + y y ← x - y x ← x - y `` Fonctionne uniquement pour des nombres.

    #exercice#permutation
  • Que signifie TDO ?

    Tableau de Déclaration des Objets — utilisé en Analyse pour lister tous les objets (variables et constantes) d'un algorithme, avec leur type/nature.

    #analyse#TDO
Ch. 03

Structures conditionnelles

Prendre des décisions dans un programme : Si / Sinon, Selon (choix multiples). Initiation aux structures itératives.

Structures conditionnelles

  • Syntaxe de la forme simple Si ... Alors ... en Pascal ?

    if condition then
        instruction;
    ```
    Pour plusieurs instructions :
    ```pascal
    if condition then
    begin
        instr1;
        instr2;
    end;
    #pascal#syntaxe
  • Différence entre forme simple et forme alternative ?

    • Simple Si C Alors A FinSi : exécute A uniquement si C est vraie.
    • Alternative Si C Alors A Sinon B FinSi : exécute A si vrai, B si faux.
    #definition
  • Quel type est obligatoire pour l'expression d'un Selon (case) ?

    Un type ordinal : entier, caractère, booléen, énuméré. ⚠️ Les réels et chaînes sont interdits — utiliser Si ... Sinon Si ... à la place.

    #selon
  • Équivalent de Si C1 Alors Si C2 Alors A FinSi FinSi ?

    Si C1 et C2 Alors A FinSi

    Les deux conditions doivent être vraies → on utilise l'opérateur et (and). Plus lisible que l'imbriqué.

    #logique
  • Comment écrire un Si/Sinon Si/Sinon en Python ?

    ``python if condition1: # ... elif condition2: # ... else: # ... ` Python utilise elif (contraction de else if`).

    #python
  • Comment affecter max au plus grand entre a et b en une seule instruction ?

    En algorithme : max ← a puis Si b > a Alors max ← b. En Python (one-liner) : max = a if a > b else b En Pascal : pas d'opérateur ternaire — utiliser if.

    #pattern
Ch. 04

Structures itératives

Répéter, parcourir, accumuler : Pour, Tant que, Répéter. Application aux algorithmes classiques sur les tableaux, la recherche.

Boucles et structures itératives

  • Quand utiliser une boucle Pour ?

    Quand le nombre d'itérations est connu d'avance (parcours d'un tableau, compteur fixe). Si la fin dépend d'une condition, préférer Tant que ou Répéter.

    #choix
  • Différence essentielle Tant que vs Répéter ... Jusqu'à ?

    • `Tant que C Faire ...` : test avant chaque tour → peut ne jamais s'exécuter.
    • `Répéter ... Jusqu'à C` : test après chaque tour → s'exécute au moins une fois.

    Pour valider une saisie utilisateur : Répéter est préférable.

    #comparaison
  • Syntaxe Pour i de 1 à n en Pascal ?

    for i := 1 to n do
        // instruction
    ```
    Pour parcours **décroissant** :
    ```pascal
    for i := n downto 1 do
        // instruction
    #pascal
  • Que produit range(1, 6) en Python ?

    Les entiers 1, 2, 3, 4, 5 (borne supérieure exclue).

    Pour les entiers de 1 à n inclus : range(1, n + 1). Pour les entiers de 0 à n-1 : range(n).

    #python
  • Syntaxe Tant que en Python ?

    while condition:
        # bloc indenté
    ```
    Python n'a **pas** de `do ... while` (équivalent de `Répéter`). On simule avec :
    ```python
    while True:
        # ...
        if condition_sortie:
            break
    #python
  • Cause classique d'une boucle infinie ?

    La variable testée dans la condition n'est jamais modifiée dans le corps de la boucle.

    Exemple buggué : `` i ← 1 Tant que i ≤ 10 Faire Ecrire(i) FinTantque ` → manque i ← i + 1`.

    #bug
  • Pattern pour calculer la somme des éléments d'un tableau ?

    `` s ← 0 ← initialisation Pour i de 1 à n Faire s ← s + T[i] ← accumulation FinPour ` Variations : produit (init=1, s ← s * T[i]), compteur conditionnel (init=0, Si ... Alors cpt ← cpt + 1`).

    #pattern
  • Différence entre break et continue en Python ?

    • `break` : sort immédiatement de la boucle (passe à ce qui suit la boucle).
    • `continue` : passe à l'itération suivante sans exécuter le reste du corps.

    Les deux n'affectent que la boucle la plus interne.

    #python

Tableaux et algorithmes classiques

  • Déclarer un tableau de 10 entiers en Pascal et Python ?

    Pascal : ``pascal var T : array[1..10] of integer; ``

    Python (liste) : ``python T = [0] * 10 ``

    NumPy : ``python from numpy import array T = array([0] * 10) ``

    #declaration
  • Indexation d'un tableau : Pascal vs Python ?

    • Pascal : bornes définies à la déclaration (souvent [1..n]).
    • Premier élément : T[1].
    • Python : toujours 0-indexé. Premier élément : T[0].
    • Dernier élément : T[-1] (indexation négative).
    #convention
  • Algorithme pour calculer la somme des éléments d'un tableau ?

    `` s ← 0 ← initialisation à 0 Pour i de 1 à n Faire s ← s + T[i] ← accumulation FinPour ` En Python : sum(T)` (raccourci).

    #pattern
  • Comment initialiser max pour trouver le max d'un tableau ?

    Mauvaise pratique : max ← 0 (échoue si tous les éléments < 0).

    Bonne pratique : max ← T[1], puis comparer avec les suivants.

    max ← T[1]
    Pour i de 2 à n Faire
       Si T[i] > max Alors max ← T[i] FinSi
    FinPour
    #pattern
  • Recherche séquentielle d'une valeur v : sortie correcte ?

    `` i ← 1 Tant que (i ≤ n) et (T[i] ≠ v) Faire i ← i + 1 FinTantque Si i ≤ n Alors trouvé en position i Sinon absent ` Deux cas de sortie possibles : i > n (absent) ou T[i] = v` (trouvé).

    #pattern
  • Permuter T[i] et T[j] sans variable intermédiaire (entiers) ?

    T[i] ← T[i] + T[j]
    T[j] ← T[i] - T[j]
    T[i] ← T[i] - T[j]
    ```
    ⚠️ Fonctionne uniquement pour des **nombres**, risque d'overflow.
    Préférer la version avec variable temp :
    ```
    tmp ← T[i]
    T[i] ← T[j]
    T[j] ← tmp
    #pattern
  • Pattern pour compter les éléments satisfaisant une condition ?

    `` cpt ← 0 Pour i de 1 à n Faire Si <condition sur T[i]> Alors cpt ← cpt + 1 FinSi FinPour ` Exemple : compter les pairs → Si T[i] mod 2 = 0. En Python : sum(1 for x in T if condition(x)) ou len([x for x in T if condition(x)])`.

    #pattern
  • Comment vérifier si une valeur v existe dans T ?

    `` existe ← faux Pour i de 1 à n Faire Si T[i] = v Alors existe ← vrai FinSi FinPour ` Plus rapide avec arrêt anticipé (Tant que`).

    En Python : v in T (raccourci très lisible).

    #pattern
Ch. 05

Sous-programmes

Décomposer un problème en procédures et fonctions réutilisables. Passage par valeur et par variable, portée des objets, modularité.

Sous-programmes : procédures et fonctions

  • Différence essentielle fonction vs procédure ?

    • Fonction : retourne une valeur explicite (via return en Python,
    • ou assignation au nom de la fonction en Pascal).
    • Procédure : ne retourne rien explicitement. Peut modifier ses
    • paramètres passés par variable (@ / var).
    #definition
  • Que se passe-t-il en passage par valeur ?

    Le sous-programme reçoit une copie du paramètre. Toute modification à l'intérieur n'affecte pas la variable d'appel. C'est le mode par défaut, sûr mais ne permet pas de retourner plusieurs valeurs.

    #parametres
  • Que se passe-t-il en passage par variable (@ / var) ?

    Le sous-programme reçoit une référence vers la variable d'appel. Toute modification se répercute dans l'environnement appelant. Utilisé pour les procédures qui retournent plusieurs valeurs ou pour économiser des copies (grands tableaux).

    #parametres
  • Syntaxe d'une fonction en Pascal ?

    function NOM(p1: type1; p2: type2): type_retour;
    var
        // variables locales
    begin
        // ...
        NOM := valeur;   // affecter le résultat au nom de la fonction
    end;
    #pascal
  • Syntaxe d'une procédure en Pascal avec passage par variable ?

    ``pascal procedure NOM(var a: integer; b: integer); begin a := a + b; end; ` a est passé par variable (var), b` par valeur.

    #pascal
  • Syntaxe d'une fonction Python ?

    ``python def nom(p1, p2): # corps return valeur ` Sans return explicite, la fonction retourne None` (équivalent procédure).

    #python
  • Qu'est-ce qu'un objet local d'un sous-programme ?

    Une variable déclarée à l'intérieur du sous-programme. Elle : - existe uniquement pendant l'exécution du sous-programme - n'est pas accessible depuis l'extérieur - est détruite quand le sous-programme se termine

    → principe d'encapsulation.

    #portee
  • 3 avantages de la décomposition en sous-programmes ?

    1. Réutilisation : on appelle le même code à plusieurs endroits
    2. Lisibilité : un bon nom de fonction documente l'intention
    3. Maintenance : on corrige un bug à un seul endroit

    C'est le fondement de la programmation modulaire.

    #concept
  • Qu'est-ce que la récursivité ?

    Un sous-programme qui s'appelle lui-même.

    Exemple — factorielle : ``python def fact(n): if n <= 1: return 1 return n * fact(n - 1) `` Toute récursion doit avoir un cas de base (sinon boucle infinie / stack overflow).

    #avance
  • Quand choisir une fonction plutôt qu'une procédure ?

    Choisir une fonction quand le sous-programme calcule une seule valeur qu'on souhaite utiliser dans une expression (ex : y ← FN cube(x) + 2).

    Choisir une procédure quand on doit retourner plusieurs valeurs (via var) ou simplement effectuer une action (affichage, saisie).

    #choix
Ch. 06

Méthodes de tri

Trois algorithmes fondamentaux à connaître par cœur : tri par sélection, tri à bulles, tri par insertion. Analyse de complexité.

Méthodes de tri et recherche

  • Principe du tri par sélection ?

    À chaque tour : 1. Chercher le minimum des éléments restants 2. L'échanger avec le 1er élément non encore placé

    Et recommencer sur le reste du tableau.

    Complexité : O(n²) — toujours, même si déjà trié.

    #algorithme
  • Principe du tri à bulles ?

    Parcourir le tableau et comparer chaque paire d'éléments adjacents. Si T[i] > T[i+1], les échanger. Les plus grands "remontent" comme des bulles.

    Répéter jusqu'à ce qu'aucun échange n'ait été fait (tableau trié).

    Complexité : O(n²) au pire, O(n) si déjà trié (avec détection).

    #algorithme
  • Principe du tri par insertion ?

    Pour chaque élément du tableau (de gauche à droite) : - Le comparer aux précédents dans la partie déjà triée - L'insérer à sa bonne place en décalant les autres

    Très efficace sur un tableau presque trié — comme trier des cartes à la main.

    Complexité : O(n²) au pire, O(n) si déjà trié.

    #algorithme
  • Complexité au pire cas des 3 tris élémentaires ?

    Tous en O(n²) — environ n(n-1)/2 comparaisons.

    Pour de gros tableaux, on préfère : - Tri rapide (quicksort) : O(n log n) en moyenne - Tri fusion (mergesort) : O(n log n) garanti

    #complexite
  • Quel tri est le plus rapide sur un tableau déjà presque trié ?

    Le tri par insertion, qui fait peu de déplacements car la plupart des éléments sont déjà à leur place.

    Tri à bulles avec détection d'échange ≈ équivalent.

    Tri par sélection : pas d'avantage (toujours n(n-1)/2 comparaisons).

    #optimisation
  • Recherche séquentielle : principe et complexité ?

    Parcourir le tableau élément par élément jusqu'à trouver la valeur (ou la fin).

    • Complexité : O(n) au pire (parcours complet)
    • Fonctionne sur n'importe quel tableau (trié ou non)
    • Simple à implémenter
    #recherche
  • Recherche dichotomique : principe et prérequis ?

    Prérequis : tableau trié.

    Principe : comparer la valeur à l'élément du milieu : - si égale → trouvé - si plus petite → chercher dans la moitié gauche - si plus grande → chercher dans la moitié droite

    Complexité : O(log n) — pour 1 000 éléments, ~10 comparaisons.

    #recherche
  • Squelette de la recherche dichotomique ?

    a ← 1, b ← n
    Tant que a ≤ b Faire
       m ← (a + b) div 2
       Si T[m] = v Alors trouvé en position m, STOP
       Sinon Si T[m] < v Alors a ← m + 1
       Sinon b ← m - 1
    FinTantque
    → absent
    #implementation
Astuce : utilisez Ctrl+P pour imprimer, ou Ctrl+S pour sauvegarder en PDF.