Passer au contenu

Algorithmes et programmation

AP Principes de l'informatique · Sujet 3

Entrainer
Leçon vidéo pour ce sujet Ouvrir la page vidéo
9:17

Algorithmes et programmation

Imaginez un annuaire contenant un million de noms, et vous devez en trouver un. Vérifiez-les un par un, et vous pourriez y passer toute la journée. Il existe un moyen de le trouver en environ…

Narration en anglais · Sous-titres anglais + 中文 incrustés

Le code ci-dessous utilise la pseudocode AP CSP — la référence neutre linguistique de l'examen. L'affectation s'écrit a ← expression, et les indices de liste commencent à 1.

3.1

Variables et affectations

Programme

Compréhension durable (AAP-1) : Pour trouver des solutions spécifiques à des problèmes généralisables, les programmeurs représentent et organisent les données de multiples façons.

Objectif d'apprentissage AAP-1.A : Représenter une valeur avec une variable. [Compétence 3.A]

  • AAP-1.A.1 Une variable est une abstraction à l'intérieur d'un programme qui peut contenir une valeur. Chaque variable possède un espace de stockage associé représentant une seule valeur à la fois, mais cette valeur peut être une liste ou une autre collection contenant elle-même plusieurs valeurs.
  • AAP-1.A.2 L'utilisation de noms de variables significatifs facilite la lisibilité du code du programme et la compréhension des valeurs représentées par les variables.
  • AAP-1.A.3 Certains langages de programmation fournissent des types pour représenter les données, auxquels on accède via des variables. Ces types incluent les nombres, les booléens, les listes et les chaînes de caractères.
  • AAP-1.A.4 Certaines valeurs sont mieux adaptées à la représentation avec un type de donnée particulier plutôt qu'avec un autre.

Objectif d'apprentissage AAP-1.B : Déterminer la valeur d'une variable en résultat d'une affectation. [Compétence 4.B]

  • AAP-1.B.1 L'opérateur d'affectation permet à un programme de modifier la valeur représentée par une variable.

  • AAP-1.B.2 La feuille de référence de l'examen fournit l'opérateur "$\leftarrow$" à utiliser pour l'affectation. Par exemple,

    Texte :

    a ← expression

    Bloc :

    a ← expression

    évalue expression puis attribue une copie du résultat à la variable a.

  • AAP-1.B.3 La valeur stockée dans une variable sera la dernière valeur assignée. Par exemple :

    a ← 1 b ← a a ← 2 display(b)

    affiche toujours 1.

Source : Description du cours et de l'examen AP College Board

Une variable 变量 est un emplacement nommé contenant une valeur. L'opérateur d'affectation 赋值 stocke la valeur de droite dans la variable de gauche :

Une variable est un emplacement nommé dont la valeur peut changer
Une variable est un espace nommé dont la valeur peut changer
a ← 5
b ← a + 3      // b is now 8

Une variable contient une seule valeur à la fois ; une nouvelle affectation la remplace. Les variables permettent à un programme de stocker une entrée, de mémoriser des résultats et de les réutiliser.

Explorer

Observer une variable conserver et changer sa valeur

Une variable est une boîte nommée qui stocke une valeur à la fois. Une affectation copie une valeur dans la boîte ; affecter à nouveau écrase ce qui s'y trouvait.

Vocabulaire Entrainer
Anglais Chinois Pinyin
variable/ˈveərɪəbl/ 变量 biàn liàng
assignment/əˈsaɪnmənt/ 赋值 fù zhí
Data abstraction/ˈdeɪtə əbˈstrækʃn/ 数据抽象 shù jù chōu xiàng
remainder/rɪˈmeɪndə/ 余数 yú shù
string/strɪŋ/ 字符串 zì fú chuàn
concatenation/kənˌkætəˈneɪʃn/ 拼接 pīn jiē
Boolean expression/ˈbuːlɪən ekˈspreʃn/ 布尔表达式 bù ěr biǎo dá shì
conditional (selection)/kənˈdɪʃənl/ 条件语句 tiáo jiàn yǔ jù
nested conditional/ˈnestɪd kənˈdɪʃənl/ 嵌套条件 qiàn tào tiáo jiàn
Iteration (a loop)/ˌɪtəˈreɪʃn/ 迭代 dié dài
infinite loop/ˈɪnfɪnət luːp/ 无限循环 wú xiàn xún huán
3.2

Abstraction de données

Programme

Compréhension durable (AAP-1) : Pour trouver des solutions spécifiques à des problèmes généralisables, les programmeurs représentent et organisent les données de multiples façons.

Objectif d'apprentissage AAP-1.C : Représenter une liste ou une chaîne de caractères à l'aide d'une variable. [Compétence 3.A]

  • AAP-1.C.1 Une liste est une séquence ordonnée d'éléments. Par exemple,

    [value1, value2, value3, ...]

    décrit une liste où value1 est le premier élément, value2 est le deuxième élément, value3 est le troisième élément, et ainsi de suite.

  • AAP-1.C.2 Un élément est une valeur individuelle dans une liste qui se voit attribuer un index unique.

  • AAP-1.C.3 Un index est une méthode courante pour référencer les éléments d'une liste ou d'une chaîne de caractères à l'aide de nombres naturels.

  • AAP-1.C.4 Une chaîne de caractères est une séquence ordonnée de caractères.

Objectif d'apprentissage AAP-1.D : Pour l'abstraction de données : a. Développer une abstraction de données en utilisant des listes pour stocker plusieurs éléments. [Compétence 3.B] b. Expliquer comment l'utilisation de l'abstraction de données gère la complexité dans le code du programme. [Compétence 3.C]

  • AAP-1.D.1 L'abstraction de données fournit une séparation entre les propriétés abstraites d'un type de données et les détails concrets de sa représentation.

  • AAP-1.D.2 Les abstractions de données gèrent la complexité des programmes en donnant un nom à un ensemble de données sans faire référence aux détails spécifiques de la représentation.

  • AAP-1.D.3 Les abstractions de données peuvent être créées à l'aide de listes.

  • AAP-1.D.4 Le développement d'une abstraction de données à implémenter dans un programme peut entraîner un programme plus facile à développer et à maintenir.

  • AAP-1.D.5 Les abstractions de données contiennent souvent différents types d'éléments.

  • AAP-1.D.6 L'utilisation de listes permet de traiter plusieurs éléments apparents comme une seule valeur. Les listes sont désignées par différents noms, tels que tableau, selon le langage de programmation.

    • Énoncé d'exclusion (EK AAP-1.D.6) : L'utilisation de listes chaînées est hors du champ de ce cours et de l'examen AP.
  • AAP-1.D.7 La feuille de référence de l'examen fournit la notation

    [value1, value2, value3, ...]

    pour créer une liste avec ces valeurs comme premier, deuxième, troisième, etc. éléments. Par exemple,

    • Texte :

      aList ← [value1, value2, value3, ...]

      Bloc :

      aList ← value1, value2, value3

      crée une nouvelle liste contenant les valeurs value1, value2, value3 et ... aux indices 1, 2, 3 et ... respectivement et l'attribue à aList.

    • Texte :

      aList ← []

      Bloc :

      aList ← (vide)

      crée une nouvelle liste vide et l'attribue à aList.

    • Texte :

      aList ← bList

      Bloc :

      aList ← bList

      attribue une copie de la liste bList à la liste aList. Par exemple, si bList contient [20, 40, 60], alors aList contiendra également [20, 40, 60] après l'attribution.

  • AAP-1.D.8 La feuille de référence de l'examen décrit une structure de liste dont les valeurs d'index vont de 1 au nombre d'éléments de la liste, inclus. Pour toutes les opérations de liste, si un index de liste est inférieur à 1 ou supérieur à la longueur de la liste, un message d'erreur est produit et le programme se termine.

Source : Description du cours et de l'examen AP College Board

L'abstraction de données 数据抽象 permet de gérer la complexité en donnant un seul nom à un ensemble de données — par exemple, une liste plutôt que des dizaines de variables séparées. Elle cache les détails : vous utilisez la collection nommée sans vous soucier de son stockage. Les listes (ci-dessous) constituent l'abstraction de données principale du cours.

3.3

Expressions mathématiques

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.A : Exprimer un algorithme utilisant la séquence sans utiliser un langage de programmation. [Compétence 2.A]

  • AAP-2.A.1 Un algorithme est un ensemble fini d'instructions accomplissant une tâche spécifique.
  • AAP-2.A.2 Au-delà des langages de programmation visuels et textuels, les algorithmes peuvent être exprimés de diverses manières, telles que le langage naturel, les diagrammes et le pseudocode.
  • AAP-2.A.3 Les algorithmes exécutés par des programmes sont implémentés à l'aide de langages de programmation.
  • AAP-2.A.4 Tout algorithme peut être construit à l'aide de combinaisons de séquence, de sélection et d'itération.

Objectif d'apprentissage AAP-2.B : Représenter un processus algorithmique étape par étape à l'aide d'instructions de code séquentielles. [Compétence 2.B]

  • AAP-2.B.1 La séquence est l'application de chaque étape d'un algorithme dans l'ordre dans lequel les instructions de code sont données.
  • AAP-2.B.2 Une instruction de code est une partie du code d'un programme qui exprime une action à effectuer.
  • AAP-2.B.3 Une expression peut consister en une valeur, une variable, un opérateur ou un appel de procédure retournant une valeur.
  • AAP-2.B.4 Les expressions sont évaluées pour produire une seule valeur.
  • AAP-2.B.5 L'évaluation des expressions suit un ordre d'opérations défini par le langage de programmation.
  • AAP-2.B.6 Les instructions séquentielles s'exécutent dans l'ordre dans lequel elles apparaissent dans le segment de code.
  • AAP-2.B.7 La clarté et la lisibilité sont des considérations importantes lors de l'expression d'un algorithme dans un langage de programmation.

Objectif d'apprentissage AAP-2.C : Évaluer des expressions utilisant des opérateurs arithmétiques. [Compétence 4.B]

  • AAP-2.C.1 Les opérateurs arithmétiques font partie de la plupart des langages de programmation et comprennent les opérateurs d'addition, de soustraction, de multiplication, de division et de module.

  • AAP-2.C.2 La feuille de référence de l'examen fournit a MOD b, qui évalue au reste de la division de a par b. On suppose que a est un entier supérieur ou égal à 0 et que b est un entier supérieur à 0. Par exemple, 17 MOD 5 évalue à 2.

  • AAP-2.C.3 La feuille de référence de l'examen fournit les opérateurs arithmétiques +, -, *, / et MOD.

    Texte et Bloc :

    • a + b
    • a - b
    • a * b
    • a / b
    • a MOD b

    Ceux-ci sont utilisés pour effectuer des opérations arithmétiques sur a et b. Par exemple, 17 / 5 évalue à 3.4.

  • AAP-2.C.4 L'ordre des opérations utilisé en mathématiques s'applique lors de l'évaluation des expressions. L'opérateur MOD a la même priorité que les opérateurs * et /.

Source : Description du cours et de l'examen AP College Board

Les programmes calculent avec les opérateurs +, -, *, /, et MOD (le reste d'une division, par ex. 17 MOD 5 est 2). Les expressions suivent l'ordre habituel des opérations. MOD est particulièrement utile pour tester la divisibilité (n MOD 2 = 0 signifie que n est pair) et pour faire boucler les valeurs autour d'une plage.

Explorer

Évaluer une expression étape par étape

Une expression est évaluée selon l'ordre des opérations : la multiplication et la division se font avant l'addition et la soustraction, de gauche à droite.

3.4

Chaînes (Strings)

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.D : Évaluer des expressions manipulant des chaînes de caractères. [Compétence 4.B]

  • AAP-2.D.1 La concaténation de chaînes joint deux chaînes ou plus bout à bout pour former une nouvelle chaîne.
  • AAP-2.D.2 Un sous-chaine (substring) est une partie d'une chaîne existante.

Source : Description du cours et de l'examen AP College Board

Une chaîne de caractères 字符串 est une séquence ordonnée de caractères, comme "hello". Les programmes joignent des chaînes (concaténation 拼接) et trouvent leur longueur. Les chaînes représentent du texte — noms, messages, séquences — et constituent une entrée/sortie courante des programmes.

3.5

Expressions booléennes

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.E : Pour les relations entre deux variables, expressions ou valeurs : a. Écrire des expressions utilisant des opérateurs relationnels. [Compétence 2.B] b. Évaluer des expressions utilisant des opérateurs relationnels. [Compétence 4.B]

  • AAP-2.E.1 Une valeur booléenne est soit vraie, soit fausse.

  • AAP-2.E.2 La feuille de référence de l'examen fournit les opérateurs relationnels suivants : =, ≠, >, <, ≥ et ≤.

    Texte et Bloc :

    • a = b
    • a ≠ b
    • a > b
    • a < b
    • a ≥ b
    • a ≤ b

    Ceux-ci sont utilisés pour tester la relation entre deux variables, expressions ou valeurs. Une comparaison utilisant un opérateur relationnel évalue à une valeur booléenne. Par exemple, a = b évalue à true si a et b sont égaux ; sinon, il évalue à false.

Objectif d'apprentissage AAP-2.F : Pour les relations entre des valeurs booléennes : a. Écrire des expressions utilisant des opérateurs logiques. [Compétence 2.B] b. Évaluer des expressions utilisant des opérateurs logiques. [Compétence 4.B]

  • AAP-2.F.1 La feuille de référence de l'examen fournit les opérateurs logiques NOT, AND et OR, qui évaluent à une valeur booléenne.

  • AAP-2.F.2 La feuille de référence de l'examen fournit

    Texte :

    NOT condition

    Bloc :

    NOT condition

    qui évalue à true si condition est false ; sinon il évalue à false.

  • AAP-2.F.3 La feuille de référence de l'examen fournit

    Texte :

    condition1 AND condition2

    Bloc :

    condition1 AND condition2

    qui évalue à true si tant condition1 que condition2 sont true ; sinon, elle évalue à false.

  • AAP-2.F.4 La feuille de référence de l'examen fournit

    Texte :

    condition1 OR condition2

    Bloc :

    condition1 OR condition2

    qui évalue à true si condition1 est true ou si condition2 est true ou si tant condition1 que condition2 sont true ; sinon, elle évalue à false.

  • AAP-2.F.5 L'opérande d'un opérateur logique est soit une expression booléenne, soit une valeur booléenne unique.

Source : Description du cours et de l'examen AP College Board

Une expression booléenne évalue à true ou false. Elle utilise des opérateurs relationnels (=, ≠, <, >, ≤, ≥) et des opérateurs logiques NOT, AND, OR :

Les trois familles d'opérateurs : arithmétiques, relationnels et logiques
Les trois familles d'opérateurs : arithmétiques, relationnels et logiques
  • NOT inverse une valeur,
  • AND est vrai uniquement lorsque les deux côtés sont vrais,
  • OR est vrai quand au moins un côté est vrai.

Ces conditions guident chaque décision et boucle.

Explorer

Essayer la table de vérité OU

Une expression booléenne est soit vraie (1) soit fausse (0). OU est vrai lorsque au moins une entrée est vraie ; inversez les entrées pour voir tous les cas.

3.6

Conditionnelles

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.G : Exprimer un algorithme utilisant la sélection sans utiliser de langage de programmation. [Compétence 2.A]

  • AAP-2.G.1 La sélection détermine quelles parties d'un algorithme sont exécutées selon qu'une condition est true ou false.

Objectif d'apprentissage AAP-2.H : Pour la sélection : a. Écrire des instructions conditionnelles. [Compétence 2.B] b. Déterminer le résultat des instructions conditionnelles. [Compétence 4.B]

  • AAP-2.H.1 Les instructions conditionnelles, ou « instructions if », modifient le flux séquentiel du contrôle en exécutant différentes instructions selon la valeur d'une expression booléenne.

  • AAP-2.H.2 La feuille de référence de l'examen fournit

    Texte :

    IF(condition) { <block of statements> }

    Bloc :

    IF condition block of statements

    dans lequel le code dans block of statements est exécuté si l'expression booléenne condition évalue à true ; aucune action n'est prise si condition évalue à false.

  • AAP-2.H.3 La feuille de référence de l'examen fournit

    Texte :

    IF(condition) { <first block of statements> } ELSE { <second block of statements> }

    Bloc :

    IF condition first block of statements ELSE second block of statements

    dans lequel le code dans first block of statements est exécuté si l'expression booléenne condition évalue à true ; sinon, le code dans second block of statements est exécuté.

Source : Description du cours et de l'examen AP College Board

Une conditionnelle (sélection) 条件语句 choisit quel code exécuter. IF exécute un bloc uniquement si sa condition est vraie ; ELSE fournit une alternative :

La sélection choisit entre des chemins en fonction d'une condition
La sélection choisit entre des chemins selon une condition
IF (score ≥ 60)
{
    DISPLAY("Pass")
}
ELSE
{
    DISPLAY("Fail")
}
Explorer

Suivre une décision si / sinon

Une conditionnelle exécute une branche ou l'autre selon que sa condition est vraie. Faites glisser la valeur au-delà du seuil et observez quelle branche est prise.

3.7

Conditionnelles imbriquées

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.I : Pour la sélection imbriquée : a. Écrire des instructions conditionnelles imbriquées. [Compétence 2.B] b. Déterminer le résultat des instructions conditionnelles imbriquées. [Compétence 4.B]

  • AAP-2.I.1 Les instructions conditionnelles imbriquées consistent en des instructions conditionnelles situées à l'intérieur d'autres instructions conditionnelles.

Source : Description du cours et de l'examen AP College Board

Une condition imbriquée place une IF à l'intérieur d'une autre (ou enchaîne ELSE IF) pour choisir parmi plus de deux chemins. Seul le premier branchement correspondant s'exécute :

IF (g ≥ 90)      { grade ← "A" }
ELSE IF (g ≥ 80) { grade ← "B" }
ELSE             { grade ← "C" }
3.8

Itération

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.J : Exprimer un algorithme utilisant l'itération sans utiliser de langage de programmation. [Compétence 2.A]

  • AAP-2.J.1 L'itération est une portion répétitive d'un algorithme. L'itération répète un nombre spécifié de fois ou jusqu'à ce qu'une condition donnée soit remplie.

Objectif d'apprentissage AAP-2.K : Pour l'itération : a. Écrire des instructions d'itération. [Compétence 2.B] b. Déterminer le résultat ou l'effet secondaire des instructions d'itération. [Compétence 4.B]

  • AAP-2.K.1 Les instructions d'itération modifient le flux séquentiel du contrôle en répétant un ensemble d'instructions zéro ou plusieurs fois, jusqu'à ce qu'une condition d'arrêt soit rencontrée.

  • AAP-2.K.2 La feuille de référence de l'examen fournit

    Texte :

    REPEAT n TIMES { <block of statements> }

    Bloc :

    REPEAT n TIMES block of statements

    dans lequel la block of statements est exécutée n fois.

  • AAP-2.K.3 La feuille de référence de l'examen fournit

    Texte :

    REPEAT UNTIL(condition) { <block of statements> }

    Bloc :

    REPEAT UNTIL condition block of statements

    dans lequel le code dans block of statements est répété jusqu'à ce que l'expression booléenne condition évalue à true.

  • AAP-2.K.4 Dans l'itération REPEAT UNTIL(condition), une boucle infinie se produit lorsque la condition de fin n'évaluera jamais à true.

  • AAP-2.K.5 Dans l'itération REPEAT UNTIL(condition), si la condition évalue initialement à true, le corps de la boucle n'est pas exécuté du tout, car la condition est vérifiée avant la boucle.

Source : Description du cours et de l'examen AP College Board

Itération (boucle) 迭代 répète des instructions. La pseudocode AP possède deux formes :

Une boucle pré-conditionnelle (WHILE) teste avant le corps, donc elle peut s'exécuter zéro fois
Une boucle à pré-condition (WHILE) teste avant le corps, elle peut donc s'exécuter zéro fois
REPEAT 5 TIMES        // a fixed count
{
    DISPLAY("hi")
}

REPEAT UNTIL (found)  // until a condition becomes true
{
    ...
}

Une boucle qui ne rencontre jamais sa condition d'arrêt est une boucle infinie 无限循环.

Explorer

Parcourir une boucle un passage à la fois

Une boucle répète un bloc tant que son compteur parcourt une plage. Passez étape par étape pour voir le compteur et le total cumulé se mettre à jour à chaque passage.

3.9

Développement d'algorithmes

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.L : Comparer plusieurs algorithmes pour déterminer s'ils produisent le même effet secondaire ou le même résultat. [Compétence 1.D]

  • AAP-2.L.1 Les algorithmes peuvent être écrits de différentes manières tout en accomplissant les mêmes tâches.
  • AAP-2.L.2 Des algorithmes qui semblent similaires peuvent produire des effets secondaires ou des résultats différents.
  • AAP-2.L.3 Certaines instructions conditionnelles peuvent être écrites sous forme d'expressions booléennes équivalentes.
  • AAP-2.L.4 Certaines expressions booléennes peuvent être écrites sous forme d'instructions conditionnelles équivalentes.
  • AAP-2.L.5 Différents algorithmes peuvent être développés ou utilisés pour résoudre le même problème.

Objectif d'apprentissage AAP-2.M : Pour les algorithmes : a. Créer des algorithmes. [Compétence 2.A] b. Combiner et modifier des algorithmes existants. [Compétence 2.B]

  • AAP-2.M.1 Les algorithmes peuvent être créés à partir d'une idée, en combinant des algorithmes existants, ou en modifiant des algorithmes existants.
  • AAP-2.M.2 La connaissance d'algorithmes existants peut aider à en construire de nouveaux. Certains algorithmes existants incluent :
    • déterminer la valeur maximale ou minimale de deux nombres ou plus
    • calculer la somme ou la moyenne de deux nombres ou plus
    • identifier si un entier est ou n'est pas divisible par un autre entier
    • déterminer le parcours d'un robot à travers un labyrinthe
  • AAP-2.M.3 L'utilisation d'algorithmes existants corrects comme briques de construction pour en créer un autre présente des avantages tels que la réduction du temps de développement, la réduction des tests et la simplification de l'identification des erreurs.

Source : Description du cours et de l'examen AP College Board

Code source Python sur un écran — les algorithmes sont des instructions précises et ordonnées
Code source Python sur un écran — les algorithmes sont des instructions précises et ordonnées

Un algorithme n'est pas la même chose qu'un code. Au-delà des langages de programmation visuels et textuels, un algorithme peut s'exprimer de nombreuses façons : en langage naturel (phrases courantes), sous forme de diagramme tel qu'un organigramme, ou en pseudocode. Ces formes sont destinées aux humains — elles permettent de vérifier la logique et de s'y accorder avant tout choix de langage, et le même algorithme peut ensuite être écrit dans n'importe quelle langue.

Lorsque vous l'écrivez en langage de programmation, la clarté et la lisibilité sont des considérations importantes, pas une décoration : des noms de variables significatifs, un retrait cohérent et des commentaires expliquant le pourquoi plutôt que le quoi. Le programme devra être lu et modifié plus tard par quelqu'un — souvent vous-même — et un algorithme que personne ne peut suivre ne peut être maintenu ni débogué.

Un algorithme 算法 est une séquence finie d'étapes qui résout un problème, construite à partir de séquencement, sélection et itération. Différents algorithmes peuvent résoudre le même problème, et vous devriez pouvoir combiner et modifier des algorithmes existants (par exemple, compter les valeurs dans une liste qui répondent à une condition, ou trouver la plus grande). Tracez un algorithme à la main pour vérifier qu'il est correct.

Un organigramme présente un algorithme en utilisant les symboles standard
Un organigramme présente un algorithme en utilisant les symboles standard
Vocabulaire Entrainer
Anglais Chinois Pinyin
algorithm/ˈælɡərɪθəm/ 算法 suàn fǎ
3.10

Listes

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.N : Pour les opérations sur les listes : a. Écrire des expressions utilisant l'indexation de liste et les procédures de liste. [Compétence 2.B] b. Évaluer des expressions utilisant l'indexation de liste et les procédures de liste. [Compétence 4.B]

  • AAP-2.N.1 La feuille de référence de l'examen fournit les opérations de base sur les listes, y compris :
    • accéder à un élément par son index

      Texte :

      aList[i]

      Bloc :

      aList i

      accède à l'élément de aList à l'index i. Le premier élément de aList est à l'index 1 et est accèsé à l'aide de la notation aList[1].

    • attribuer la valeur d'un élément de liste à une variable

      Texte :

      x ← aList[i]

      Bloc :

      x ← aList i

      attribue la valeur de aList[i] à la variable x.

    • attribuer une valeur à un élément de liste

      Texte :

      aList[i] ← x

      Bloc :

      aList i ← x

      attribue la valeur de x à aList[i].

      Texte :

      aList[i] ← aList[j]

      Bloc :

      aList i ← aList j

      attribue la valeur de aList[j] à aList[i].

    • insérer des éléments à un index donné

      Texte :

      INSERT(aList, i, value)

      Bloc :

      INSERT aList, i, value

      décale vers la droite toutes les valeurs dans aList aux indices supérieurs ou égaux à i. La longueur de la liste augmente de 1, et value est placé à l'index i dans aList.

    • ajouter des éléments à la fin de la liste

      Texte :

      APPEND(aList, value)

      Bloc :

      APPEND aList, value

      augmente la longueur de aList de 1, et value est placé à la fin de aList.

    • supprimer des éléments

      Texte :

      REMOVE(aList, i)

      Bloc :

      REMOVE aList, i

      supprime l'élément à l'index i dans aList et décale vers la gauche toute valeur aux indices supérieurs à i. La longueur de aList diminue de 1.

    • déterminer la longueur d'une liste

      Texte :

      LENGTH(aList)

      Bloc :

      LENGTH aList

      évalue au nombre d'éléments actuellement présents dans aList.

  • AAP-2.N.2 Les procédures de liste sont implémentées conformément aux règles de syntaxe du langage de programmation.

Objectif d'apprentissage AAP-2.O : Pour les algorithmes impliquant des éléments d'une liste : a. Écrire des instructions d'itération pour parcourir une liste. [Compétence 2.B] b. Déterminer le résultat d'un algorithme incluant des traversées de liste. [Compétence 4.B]

  • AAP-2.O.1 Parcourir une liste peut être une traversée complète, où tous les éléments de la liste sont accédés, ou une traversée partielle, où seule une portion des éléments est accédée.

    • Énoncé d'exclusion (EK AAP-2.O.1) : Parcourir plusieurs listes simultanément en utilisant le même index pour les deux (traversées parallèles) est hors du champ de ce cours et de l'examen AP.
  • AAP-2.O.2 Les instructions d'itération peuvent être utilisées pour parcourir une liste.

  • AAP-2.O.3 La feuille de référence de l'examen fournit

    Texte :

    FOR EACH item IN aList { <block of statements> }

    Bloc :

    FOR EACH item IN aList block of statements

    La variable item se voit attribuer la valeur de chaque élément de aList séquentiellement, dans l'ordre, du premier élément au dernier. Le code dans block of statements s'exécute une fois pour chaque attribution de item.

  • AAP-2.O.4 La connaissance d'algorithmes existants utilisant l'itération peut aider à construire de nouveaux algorithmes. Certains exemples d'algorithmes existants souvent utilisés avec les listes incluent :

    • déterminer une valeur minimale ou maximale dans une liste
    • calculer une somme ou une moyenne d'une liste de nombres
  • AAP-2.O.5 Les algorithmes de recherche linéaire ou séquentielle vérifient chaque élément d'une liste, dans l'ordre, jusqu'à ce que la valeur souhaitée soit trouvée ou que tous les éléments aient été vérifiés.

Source : Description du cours et de l'examen AP College Board

Une liste 列表 est une collection ordonnée de valeurs sous un seul nom, l'abstraction de données clé du cours. La pseudo-code AP utilise des indices commençant à 1 :

Une liste contient plusieurs valeurs dans une seule variable, chacune étant trouvée par son index
Une liste contient plusieurs valeurs dans une seule variable, chacune étant trouvée par son index
scores ← [88, 74, 95]
DISPLAY(scores[1])          // 88
scores[2] ← 80              // replace the 2nd value
APPEND(scores, 60)          // add to the end
INSERT(scores, 1, 100)      // insert at index 1
REMOVE(scores, 3)           // delete the 3rd element
LENGTH(scores)              // how many elements

Parcourez une liste avec une boucle pour additionner, compter, chercher ou trouver un maximum :

FOR EACH x IN scores
{
    total ← total + x
}
Vocabulaire Entrainer
Anglais Chinois Pinyin
list/lɪst/ 列表 liè biǎo
3.11

Recherche Binaire

Programme

Compréhension durable (AAP-2) : La manière dont les instructions sont séquencées et combinées dans un programme détermine le résultat calculé. Les programmes intègrent des structures d'itération et de sélection pour représenter la répétition et prendre des décisions afin de gérer des valeurs d'entrée variées.

Objectif d'apprentissage AAP-2.P : Pour les algorithmes de recherche binaire : a. Déterminer le nombre d'itérations nécessaires pour trouver une valeur dans un jeu de données. [Compétence 1.D] b. Expliquer les conditions nécessaires pour effectuer une recherche binaire. [Compétence 1.A]

  • AAP-2.P.1 L'algorithme de recherche binaire commence au milieu d'un ensemble de données numérotées trié et élimine la moitié des données ; ce processus se répète jusqu'à ce que la valeur souhaitée soit trouvée ou que tous les éléments aient été éliminés.
    • Énoncé d'exclusion (EK AAP-2.P.1) : Des implémentations spécifiques de la recherche binaire sont hors du champ du cours et de l'examen AP.
  • AAP-2.P.2 Les données doivent être triées pour utiliser l'algorithme de recherche binaire.
  • AAP-2.P.3 La recherche binaire est souvent plus efficace que la recherche séquentielle/linéaire lorsqu'elle est appliquée à des données triées.

Source : Description du cours et de l'examen AP College Board

Un annuaire téléphonique : la recherche binaire divise par deux les pages restantes à chaque étape
Un annuaire téléphonique : la recherche binaire divise par deux les pages restantes à chaque étape

La recherche binaire trouve une valeur dans une liste triée beaucoup plus vite que vérifier chaque élément. Elle examine l'élément central, puis rejette la moitié qui ne peut pas contenir la cible, répétant jusqu'à ce qu'elle soit trouvée. Chaque étape divise par deux l'espace de recherche, donc une liste de $n$ éléments prend environ $\log_2 n$ étapes. Elle nécessite que les données soient triées au préalable.

La recherche binaire divise la plage à chaque étape (la liste doit être triée)
La recherche binaire divise la plage à chaque étape (la liste doit être triée)

Exemple résolu. La recherche d'une valeur dans une liste triée de $8$ éléments, la recherche binaire divise la plage à chaque étape : $8\rightarrow4\rightarrow2\rightarrow1$, au plus $3$ comparaisons ($\log_2 8=3$), alors qu'une recherche linéaire pourrait prendre jusqu'à $8$. L'avantage croît exponentiellement : environ $1{,}000$ éléments n'ont besoin que de $\approx10$ étapes de recherche binaire (mais jusqu'à $1{,}000$ pour une recherche linéaire), et $1{,}000{,}000$ éléments n'ont besoin que de $\approx20$. Diviser par deux est ce qui en fait un algorithme de temps raisonnable.

Vocabulaire Entrainer
Anglais Chinois Pinyin
Binary search/ˈbaɪnəri sɜːtʃ/ 二分搜索 èr fēn sōu suǒ
3.12

Appels de Procédures

Programme

Compréhension durable (AAP-3) : Les programmeurs décomposent les problèmes en pièces plus petites et plus gérables. En créant des procédures et en exploitant les paramètres, les programmeurs généralisent des processus réutilisables. Les procédures permettent aux programmeurs de s'appuyer sur du code existant déjà testé, leur permettant d'écrire des programmes plus rapidement et avec plus de confiance.

Objectif d'apprentissage AAP-3.A : Pour les appels de procédures : a. Écrire des instructions pour appeler des procédures. [Compétence 3.B] b. Déterminer le résultat ou l'effet d'un appel de procédure. [Compétence 4.B]

  • AAP-3.A.1 Une procédure est un groupe nommé d'instructions de programmation pouvant avoir des paramètres et des valeurs de retour.

  • AAP-3.A.2 Les procédures sont désignées par différents noms, comme méthode ou fonction, selon le langage de programmation.

  • AAP-3.A.3 Les paramètres sont les variables d'entrée d'une procédure. Les arguments spécifient les valeurs des paramètres lors de l'appel d'une procédure.

  • AAP-3.A.4 Un appel de procédure interrompt l'exécution séquentielle des instructions, amenant le programme à exécuter les instructions contenues dans la procédure avant de continuer. Une fois la dernière instruction de la procédure (ou une instruction de retour) exécutée, le flux de contrôle revient au point immédiatement après celui où la procédure a été appelée.

  • AAP-3.A.5 La feuille de référence de l'examen fournit

    procName(arg1, arg2, ...)

    comme moyen d'appeler

    Texte :

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    Bloc :

    PROCEDURE procName parameter1, parameter2,... block of statements

    qui prend zéro ou plus d'arguments ; arg1 est attribué à parameter1, arg2 est attribué à parameter2, et ainsi de suite.

  • AAP-3.A.6 La feuille de référence de l'examen fournit la procédure

    Texte :

    DISPLAY(expression)

    Bloc :

    DISPLAY expression

    pour afficher la valeur de expression, suivie d'un espace.

  • AAP-3.A.7 La feuille de référence de l'examen fournit la

    Texte :

    RETURN(expression)

    Bloc :

    RETURN expression

    instruction, utilisée pour retourner le flux de contrôle au point où la procédure a été appelée et pour retourner la valeur de expression.

  • AAP-3.A.8 La feuille de référence de l'examen fournit

    result ← procName(arg1, arg2, ...)

    pour attribuer à result la "valeur de la procédure" retournée en appelant

    Texte :

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    Bloc :

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

  • AAP-3.A.9 La feuille de référence de l'examen fournit la procédure

    Texte :

    INPUT()

    Bloc :

    INPUT

    qui accepte une valeur de l'utilisateur et retourne la valeur saisie.

Source : Description du cours et de l'examen AP College Board

Une procédure (fonction) 过程 est un bloc de code nommé et réutilisable. L'appeler exécute son code avec les arguments que vous fournissez, et elle peut retourner une valeur :

sum ← Add(3, 4)      // call, passing 3 and 4

Les procédures vous permettent d'utiliser du code sans connaître son fonctionnement interne – l'abstraction procédurale 过程抽象.

3.13

Développement de Procédures

Programme

Compréhension durable (AAP-3) : Les programmeurs décomposent les problèmes en pièces plus petites et plus gérables. En créant des procédures et en exploitant les paramètres, les programmeurs généralisent des processus réutilisables. Les procédures permettent aux programmeurs de s'appuyer sur du code existant déjà testé, leur permettant d'écrire des programmes plus rapidement et avec plus de confiance.

Objectif d'apprentissage AAP-3.B : Expliquer comment l'utilisation de l'abstraction procédurale gère la complexité dans un programme. [Compétence 3.C]

  • AAP-3.B.1 Un type courant d'abstraction est l'abstraction procédurale, qui fournit un nom à un processus et permet d'utiliser une procédure sans connaître que ce qu'elle fait, pas comment elle le fait.
  • AAP-3.B.2 L'abstraction procédurale permet de baser la solution d'un grand problème sur les solutions de sous-problèmes plus petits. Cela s'accomplit en créant des procédures pour résoudre chacun des sous-problèmes.
  • AAP-3.B.3 La subdivision d'un programme informatique en sous-programmes distincts est appelée modularité.
  • AAP-3.B.4 Une abstraction procédurale peut extraire des fonctionnalités partagées pour généraliser la fonctionnalité au lieu de dupliquer le code. Cela permet la réutilisation du code du programme, ce qui aide à gérer la complexité.
  • AAP-3.B.5 L'utilisation de paramètres permet de généraliser les procédures, rendant les procédures réutilisables avec une gamme de valeurs d'entrée ou d'arguments.
  • AAP-3.B.6 L'utilisation de l'abstraction procédurale aide à améliorer la lisibilité du code.
  • AAP-3.B.7 L'utilisation de l'abstraction procédurale dans un programme permet aux programmeurs de modifier les détails internes de la procédure (pour la rendre plus rapide, plus efficace, utilisant moins de mémoire, etc.) sans avoir besoin d'avertir les utilisateurs du changement tant que ce que la procédure fait est préservé.

Objectif d'apprentissage AAP-3.C : Développer des abstractions procédurales pour gérer la complexité dans un programme en écrivant des procédures. [Compétence 3.B]

  • AAP-3.C.1 La feuille de référence de l'examen fournit

    Texte :

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    Bloc :

    PROCEDURE procName parameter1, parameter2,... block of statements

    qui est utilisé pour définir une procédure prenant zéro ou plus d'arguments. La procédure contient block of statements.

  • AAP-3.C.2 La feuille de référence de l'examen fournit

    Texte :

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    Bloc :

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    qui est utilisé pour définir une procédure prenant zéro ou plus d'arguments. La procédure contient block of statements et retourne la valeur de expression. L'instruction RETURN peut apparaître à n'importe quel endroit à l'intérieur de la procédure et provoque un retour immédiat de la procédure vers l'instruction qui l'a appelée.

Source : Description du cours et de l'examen AP College Board

Vous définissez une procédure avec un nom, des paramètres (entrées), et un corps, et optionnellement RETURN un résultat :

Décomposer un programme en procédures et sous-procédures
Décomposer un programme en procédures et sous-procédures
PROCEDURE Add(a, b)
{
    RETURN(a + b)
}

Écrire vos propres procédures réduit la répétition, divise un grand problème en pièces nommées, et rend les programmes lisibles et plus faciles à tester – l'essence de l'abstraction 抽象.

Vocabulaire Entrainer
Anglais Chinois Pinyin
procedure (function)/prəˈsiːdʒə/ 过程 guò chéng
procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ 过程抽象 guò chéng chōu xiàng
abstraction/əbˈstrækʃn/ 抽象 chōu xiàng
library/ˈlaɪbrəri/ 库 kù
3.14

Bibliothèques

Programme

Compréhension durable (AAP-3) : Les programmeurs décomposent les problèmes en pièces plus petites et plus gérables. En créant des procédures et en exploitant les paramètres, les programmeurs généralisent des processus réutilisables. Les procédures permettent aux programmeurs de s'appuyer sur du code existant déjà testé, leur permettant d'écrire des programmes plus rapidement et avec plus de confiance.

Objectif d'apprentissage AAP-3.D : Sélectionner des bibliothèques appropriées ou des segments de code existants à utiliser dans la création de nouveaux programmes. [Compétence 2.B]

  • AAP-3.D.1 Une bibliothèque logicielle contient des procédures qui peuvent être utilisées dans la création de nouveaux programmes.
  • AAP-3.D.2 Les segments de code existants peuvent provenir de sources internes ou externes, telles que des bibliothèques ou du code écrit précédemment.
  • AAP-3.D.3 L'utilisation de bibliothèques simplifie la tâche de création de programmes complexes.
  • AAP-3.D.4 Les interfaces de programmation d'application (API) sont des spécifications définissant le comportement et l'utilisation des procédures dans une bibliothèque.
  • AAP-3.D.5 La documentation d'une API/bibliothèque est nécessaire pour comprendre les comportements qu'elle fournit et la manière de les utiliser.

Source : Description du cours et de l'examen AP College Board

Une bibliothèque 库 est un ensemble de procédures prêtes à l'emploi que d'autres peuvent réutiliser. Une API (Interface de Programmation d'Application) 应用程序接口 documente ce que fait chaque procédure, ses paramètres et son résultat – afin que vous puissiez l'utiliser sans voir son code. Les bibliothèques font gagner du temps et permettent de s'appuyer sur du travail existant et testé.

La documentation fait partie de la bibliothèque. La documentation d'une API ou d'une bibliothèque est nécessaire pour comprendre les comportements qu'elle fournit et comment les utiliser — ce que chaque procédure attend comme paramètres, ce qu'elle retourne et ce qu'elle fait aux limites. Sans elle, vous devriez lire le code source, ce qui contredit l'objectif de l'abstraction ; avec elle, vous pouvez utiliser une procédure correctement sans savoir comment elle fonctionne à l'intérieur.

Vocabulaire Entrainer
Anglais Chinois Pinyin
Interface/ˈɪntəfeɪs/ 应用程序接口 yìng yòng chéng xù jiē kǒu
3.15

Valeurs Aléatoires

Programme

Compréhension durable (AAP-3) : Les programmeurs décomposent les problèmes en pièces plus petites et plus gérables. En créant des procédures et en exploitant les paramètres, les programmeurs généralisent des processus réutilisables. Les procédures permettent aux programmeurs de s'appuyer sur du code existant déjà testé, leur permettant d'écrire des programmes plus rapidement et avec plus de confiance.

Objectif d'apprentissage AAP-3.E : Pour la génération de valeurs aléatoires : a. Écrire des expressions pour générer des valeurs possibles. [Compétence 2.B] b. Évaluer des expressions pour déterminer les résultats possibles. [Compétence 4.B]

  • AAP-3.E.1 La feuille de référence de l'examen fournit

    Texte :

    RANDOM(a, b)

    Bloc :

    RANDOM a, b

    qui génère et retourne un entier aléatoire compris entre a et b, inclus. Chaque résultat a une probabilité égale de survenir. Par exemple, RANDOM(1, 3) pourrait retourner 1, 2 ou 3.

  • AAP-3.E.2 L'utilisation de la génération de nombres aléatoires dans un programme signifie que chaque exécution peut produire un résultat différent.

Source : Description du cours et de l'examen AP College Board

RANDOM(a, b) retourne un entier aléatoire de a à b (inclus), permettant à un programme de produire des résultats imprévisibles – pour les jeux, l'échantillonnage ou les simulations. Chaque appel peut donner une valeur différente, donc un programme utilisant l'aléatoire se comportera différemment à chaque exécution.

3.16

Simulations

Programme

Compréhension durable (AAP-3) : Les programmeurs décomposent les problèmes en pièces plus petites et plus gérables. En créant des procédures et en exploitant les paramètres, les programmeurs généralisent des processus réutilisables. Les procédures permettent aux programmeurs de s'appuyer sur du code existant déjà testé, leur permettant d'écrire des programmes plus rapidement et avec plus de confiance.

Objectif d'apprentissage AAP-3.F : Pour les simulations : a. Expliquer comment les ordinateurs peuvent être utilisés pour représenter des phénomènes ou des événements du monde réel. [Compétence 1.A] b. Comparer les simulations avec des contextes du monde réel. [Compétence 1.D]

  • AAP-3.F.1 Les simulations sont des abstractions d'objets ou de phénomènes plus complexes à des fins spécifiques.
  • AAP-3.F.2 Une simulation est une représentation qui utilise des ensembles de valeurs variables pour refléter l'état changeant d'un phénomène.
  • AAP-3.F.3 Les simulations imitent souvent des événements du monde réel afin de tirer des conclusions, permettant d'investiguer un phénomène sans les contraintes du monde réel.
  • AAP-3.F.4 Le processus de développement d'une simulation abstraite implique la suppression de détails spécifiques ou la simplification de fonctionnalités.
  • AAP-3.F.5 Les simulations peuvent contenir un biais découlant des choix d'éléments du monde réel inclus ou exclus.
  • AAP-3.F.6 Les simulations sont les plus utiles lorsque les événements du monde réel sont irréalisables pour des expériences (trop grands, trop petits, trop rapides, trop lents, trop coûteux ou trop dangereux).
  • AAP-3.F.7 Les simulations facilitent la formulation et l'affinement d'hypothèses relatives aux objets ou phénomènes considérés.
  • AAP-3.F.8 Les générateurs de nombres aléatoires peuvent être utilisés pour simuler la variabilité existant dans le monde réel.

Source : Description du cours et de l'examen AP College Board

Une simulation 模拟 est un programme qui modélise un processus réel pour l'étudier en toute sécurité et à faible coût. Les simulations simplifient la réalité (elles omettent des détails) et utilisent souvent des aléas pour imiter des événements hasardeux. Elles permettent de tester des scénarios qui seraient trop coûteux, longs ou dangereux dans la vie réelle – mais leurs résultats ne valent que tant que leurs hypothèses sont valides.

Une simulation est une façon de faire de la science, pas seulement une image. Parce qu'elle peut être exécutée de nombreuses fois, à bas coût et en changeant une variable à la fois, une simulation facilite la formulation et le raffinement d'hypothèses sur l'objet ou le phénomène considéré : vous proposez une explication, exécutez le modèle, comparez le résultat avec la réalité, et ajustez soit l'hypothèse soit le modèle. C'est pourquoi les simplifications d'une simulation comptent — un résultat ne soutient une hypothèse sur le monde réel que dans la mesure où ce qui a été omis n'a pas d'importance.

Vocabulaire Entrainer
Anglais Chinois Pinyin
simulation/ˌsɪmjʊˈleɪʃn/ 模拟 mó nǐ
Efficiency/ɪˈfɪʃənsi/ 效率 xiào lǜ
heuristic/hjuːˈrɪstɪk/ 启发式 qǐ fā shì
undecidable/ˌʌndɪˈsaɪdəbl/ 不可判定 bù kě pàn dìng
3.17

Efficacité Algorithmique

Programme

Compréhension durable (AAP-4) : Il existe des problèmes que les ordinateurs ne peuvent pas résoudre, et même lorsqu'un ordinateur peut résoudre un problème, il peut ne pas pouvoir le faire en un temps raisonnable.

Objectif d'apprentissage AAP-4.A : Pour déterminer l'efficacité d'un algorithme : a. Expliquer la différence entre les algorithmes s'exécutant en un temps raisonnable et ceux qui ne le font pas. [Compétence 1.D] b. Identifier les situations où une solution heuristique peut être plus appropriée. [Compétence 1.D]

  • AAP-4.A.1 Un problème est une description générale d'une tâche qui peut (ou ne peut pas) être résolue algorithmiquement. Une instance d'un problème inclut également une entrée spécifique. Par exemple, le tri est un problème ; trier la liste (2,3,1,7) est une instance du problème.
  • AAP-4.A.2 Un problème de décision est un problème ayant une réponse oui/non (par ex., y a-t-il un chemin de A vers B ?). Un problème d'optimisation est un problème dont l'objectif est de trouver la solution "meilleure" parmi plusieurs (par ex., quel est le chemin le plus court de A vers B ?).
  • AAP-4.A.3 L'efficacité est une estimation de la quantité de ressources informatiques utilisées par un algorithme. L'efficacité est généralement exprimée sous forme de fonction de la taille de l'entrée.
    • Énoncé d'exclusion (EK AAP-4.A.3) : L'analyse formelle des algorithmes (Big-O) et le raisonnement formel utilisant des formules mathématiques sont hors du champ de ce cours et de l'examen AP.
  • AAP-4.A.4 L'efficacité d'un algorithme est déterminée par un raisonnement formel ou mathématique.
  • AAP-4.A.5 L'efficacité d'un algorithme peut être mesurée informellement en déterminant le nombre de fois qu'une instruction ou un groupe d'instructions s'exécute.
  • AAP-4.A.6 Différents algorithmes corrects pour le même problème peuvent avoir des efficacités différentes.
  • AAP-4.A.7 Les algorithmes ayant une efficacité polynomiale ou plus lente (constante, linéaire, quadratique, cubique, etc.) sont dits s'exécuter en un temps raisonnable. Les algorithmes ayant des efficacités exponentielles ou factorielles sont des exemples d'algorithmes s'exécutant en un temps irraisonnable.
  • AAP-4.A.8 Certains problèmes ne peuvent pas être résolus en un temps raisonnable car il n'existe aucun algorithme efficace pour les résoudre. Dans ces cas, des solutions approximatives sont recherchées.
  • AAP-4.A.9 Une heuristique est une approche à un problème qui produit une solution qui n'est pas garantie comme étant optimale, mais qui peut être utilisée lorsque les techniques garantissant toujours de trouver une solution optimale sont irréalisables.
    • Énoncé d'exclusion (AAP-4.A.9) : Les solutions heuristiques spécifiques sont hors du champ de ce cours et de l'examen AP.

Source : Description du cours et de l'examen AP College Board

L'efficacité 效率 est la quantité de temps (ou de mémoire) dont un algorithme a besoin lorsque sa taille d'entrée augmente. Un algorithme de temps raisonnable voit son travail augmenter selon un polynôme de la taille d'entrée (ex. : linéaire ou quadratique) ; un algorithme de temps déraisonnable augmente bien plus vite (ex. : double avec chaque élément ajouté), devenant irréaliste pour de grandes entrées. Un algorithme plus rapide peut rendre un problème auparavant insoluble possible. Parfois, une réponse exacte prend trop de temps, donc une heuristique 启发式 – une approche qui trouve une réponse suffisante rapidement – est utilisée à la place.

Comment le temps d'exécution d'un algorithme augmente avec la taille de l'entrée n
Comment le temps d'exécution d'un algorithme augmente avec la taille de l'entrée n
3.18

Problèmes Indécidables

Programme

Compréhension durable (AAP-4) : Il existe des problèmes que les ordinateurs ne peuvent pas résoudre, et même lorsqu'un ordinateur peut résoudre un problème, il peut ne pas pouvoir le faire en un temps raisonnable.

Objectif d'apprentissage AAP-4.B : Expliquer l'existence de problèmes indécidables en informatique. [Compétence 1.A]

  • AAP-4.B.1 Un problème décidable est un problème de décision pour lequel un algorithme peut être écrit pour produire une sortie correcte pour toutes les entrées (par ex., "Le nombre est-il pair ?").
  • AAP-4.B.2 Un problème indécidable est un problème pour lequel aucun algorithme ne peut être construit capable de fournir toujours une réponse correcte oui ou non.
    • Énoncé d'exclusion (EK AAP-4.B.2) : Déterminer si un problème donné est indécidable est hors du champ de ce cours et de l'examen AP.
  • AAP-4.B.3 Un problème indécidable peut avoir certaines instances avec une solution algorithmique, mais il n'existe pas de solution algorithmique pouvant résoudre toutes les instances du problème.

Source : Description du cours et de l'examen AP College Board

Certains problèmes sont indécidables 不可判定 : aucun algorithme ne peut résoudre tous les cas d'entre eux avec une réponse oui/non correcte. C'est une limite fondamentale de l'informatique – non pas une question de disposer d'un ordinateur plus rapide, mais une preuve qu'un tel algorithme ne peut exister.

Compétence d'examen : soyez capable de déterminer le résultat d'un segment de code en le traçant, de comparer l'efficacité de deux algorithmes (temps raisonnable vs déraisonnable), et de reconnaître l'abstraction procédurale et de données dans un programme.

3.18

Conseils d'examen

  • Sachez qu'une variable est un espace nommé pour une valeur et tracez comment l'affectation la met à jour étape par étape.
  • Lisez attentivement la pseudo-code AP – a <- expression affecte, et les listes sont à indice 1 sur la feuille de référence de l'examen.
  • Distinguez une variable d'une liste (une collection accessible par index) et utilisez correctement les opérations de liste.
  • Évaluez les expressions avec la bonne priorité logique et booléenne (AND, OR, NOT).
  • Choisissez des noms de variables clairs et significatifs – les tâches écrites récompensent le code lisible.

Leçons interactives sur ce sujet

Traversez-le étape par étape, avec des exercices à vérification instantanée.

Épreuves Passées

Plus de sujets dans AP Principes de l'informatique

Se connecter ou créer un compte

IGCSE, A-Level & AP