Fiches de révision.
Toutes les notions clés du programme regroupées par chapitre, format optimisé pour l'impression. 64 cartes au total.
Fiches de révision — Bac Techno Informatique
Programme de 4ème scientifique · 64 cartes · 5 chapitres
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) ?
( )parenthèsesnot/non*,/,div,mod,and+,-,or=,<>,<,>,<=,>=
#prioriteDifférence entre
divetmod?a div b= quotient de la division entièrea mod b= reste de la division entière- Exemple :
17 div 5 = 3et17 mod 5 = 2.
#arithmetiqueDivision entière en Python ?
//pour la division entière,%pour le modulo.12 // 5 = 2et12 % 5 = 2. ⚠️/en Python est toujours division réelle :12 / 5 = 2.4.#pythonValeur de
not (3 > 5) and (2 < 4)?not (3 > 5)=not faux= vrai Puisvrai and (2 < 4)=vrai and vrai= vrai.#logiqueComment écrit-on différent de en Pascal vs Python ?
- Pascal :
<>(ex :if x <> 0 then) - Python :
!=(ex :if x != 0:) - Analyse :
≠ou<>
#comparaison- Pascal :
Comment calculer 2^10 en Pascal ?
Pascal n'a pas d'opérateur de puissance natif. Solutions : - Fonction
Power(2, 10)(unité Math) - Formuleexp(10 * ln(2))En Python :
2 ** 10directement.#pascalQuel type retourne une comparaison
a < b?Booléen (
bool) :vraioufaux(True/False).#type
▸ Opérateurs et expressions
Quel est l'opérateur de division entière en Python ?
//— exemple :7 // 2 = 3#python#operateurQuel est l'opérateur de modulo (reste) en Pascal ?
mod— exemple :7 mod 2 = 1#pascal#operateurEn quelle ordre s'évaluent ces opérateurs ?
*,+,( ),and( )— parenthèses*— multiplication / division+— addition / soustractionand— ET logique
#prioriteL'expression
not (3 < 5)vaut ?faux — car
3 < 5est vrai, doncnot vrai = faux.#logiqueComment écrit-on différent de en Pascal ?
<>— par exempleif x <> 0 then ...#pascal#comparaisonPascal a-t-il un opérateur de puissance natif ?
Non. On utilise : - la fonction
Power(base, exposant)(unité Math), ou - la formuleexp(exposant * ln(base)).#pascalQue vaut
12 / 5en 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#variableQu'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#constanteSymbole d'affectation en Analyse ?
←(flèche gauche)#syntaxe#analyseSymbole d'affectation en Pascal ?
:=#syntaxe#pascalPascal distingue-t-il majuscules et minuscules dans les identificateurs ?
Non.
Bac,BACetbacdésignent la même variable.#pascal#identificateurL'identificateur
Code+Produitest-il valide en Pascal ?Non — un identificateur ne peut pas comporter le signe
+(ni d'autres opérateurs, ni d'espaces).#pascal#identificateurCiter 3 règles pour un identificateur Pascal valide.
- Commencer par une lettre (ou
_). - Seulement lettres, chiffres et
_. - Pas d'accents, pas d'espaces, pas d'opérateurs.
#pascal#identificateur- Commencer par une lettre (ou
Quel est le type de la variable
xen Pascal aprèsx : real;?réel (nombre à virgule)
#pascal#typePermuter
xetysans variable intermédiaire (Analyse) ?``
x ← x + y y ← x - y x ← x - y`` Fonctionne uniquement pour des nombres.#exercice#permutationQue 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
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#syntaxeDifférence entre forme simple et forme alternative ?
- Simple
Si C Alors A FinSi: exécuteAuniquement siCest vraie. - Alternative
Si C Alors A Sinon B FinSi: exécuteAsi vrai,Bsi faux.
#definition- Simple
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 FinSiLes deux conditions doivent être vraies → on utilise l'opérateur
et(and). Plus lisible que l'imbriqué.#logiqueComment écrire un
Si/Sinon Si/Sinonen Python ?``
python if condition1: # ... elif condition2: # ... else: # ...`Python utiliseelif(contraction deelse if`).#pythonComment affecter
maxau plus grand entreaetben une seule instruction ?En algorithme :
max ← apuisSi b > a Alors max ← b. En Python (one-liner) :max = a if a > b else bEn Pascal : pas d'opérateur ternaire — utiliserif.#pattern
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 queouRépéter.#choixDifférence essentielle
Tant quevsRé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éterest préférable.#comparaisonSyntaxe
Pour i de 1 à nen Pascal ?for i := 1 to n do // instruction ``` Pour parcours **décroissant** : ```pascal for i := n downto 1 do // instruction#pascalQue 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).#pythonSyntaxe
Tant queen 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#pythonCause 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`→ manquei ← i + 1`.#bugPattern 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`).#patternDifférence entre
breaketcontinueen 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)``#declarationIndexation 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- Pascal : bornes définies à la déclaration (souvent
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).#patternComment initialiser
maxpour 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#patternRecherche 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) ouT[i] = v` (trouvé).#patternPermuter
T[i]etT[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#patternPattern 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))oulen([x for x in T if condition(x)])`.#patternComment vérifier si une valeur
vexiste dansT?``
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
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
returnen 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- Fonction : retourne une valeur explicite (via
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.
#parametresQue 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).
#parametresSyntaxe 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;#pascalSyntaxe d'une procédure en Pascal avec passage par variable ?
``
pascal procedure NOM(var a: integer; b: integer); begin a := a + b; end;`aest passé par variable (var),b` par valeur.#pascalSyntaxe d'une fonction Python ?
``
python def nom(p1, p2): # corps return valeur`Sansreturnexplicite, la fonction retourneNone` (équivalent procédure).#pythonQu'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.
#portee3 avantages de la décomposition en sous-programmes ?
- Réutilisation : on appelle le même code à plusieurs endroits
- Lisibilité : un bon nom de fonction documente l'intention
- Maintenance : on corrige un bug à un seul endroit
C'est le fondement de la programmation modulaire.
#conceptQu'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).#avanceQuand 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
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é.
#algorithmePrincipe 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).
#algorithmePrincipe 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é.
#algorithmeComplexité 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
#complexiteQuel 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).
#optimisationRecherche 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
#rechercheRecherche 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.
#rechercheSquelette 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