Self-assessment quiz

Présentation & objectifs

Les quiz suivants sont là pour vous aider à vérifier que vous avez compris les articles que vous deviez étudier.
À la fin d’un quiz, des explications vous seront données sur vos réponses.
Si certaines sont fausses, vous aurez la possibilité de cliquer sur la question ratée pour réessayer.

Ces quiz sont fournis pour l’auto-évaluation et ne seront ni notés ni stockés.

N’hésitez pas à poser vos questions sur le serveur Discord pour toute précision/explication !

Quiz

Qu’est-ce qu’un algorithme ?

# Quelle phrase décrit le mieux un algorithme ? 1. [x] Une solution à un problème spécifique qui prend des valeurs en entrée et produit une valeur en sortie > ✅ C’est la définition centrale d’un algorithme : il prend des entrées et les traite pour générer une solution en sortie à un problème. 1. [ ] Une séquence d’instructions algorithmiques appliquées à des données d’entrée > ❌ Cette option est incorrecte car elle se concentre uniquement sur les étapes mécaniques d’un algorithme sans considérer sa nature de résolution de problème. 1. [ ] Une manière de comparer différentes solutions à un problème > ❌ Les algorithmes ne sont pas des outils de comparaison mais peuvent être comparés selon leurs performances. 1. [ ] Un ensemble d’instructions pour faire un gâteau > ❌ Bien que cela décrive un processus, le contexte n’est pas lié à la résolution algorithmique de problèmes. # Comment peut-on comparer les algorithmes ? - [x] Par leur complexité > ✅ La complexité détermine comment un algorithme évolue avec la taille des entrées, impactant la performance. - [x] Par le temps qu’ils prennent pour produire la valeur de sortie > ✅ La complexité temporelle est un facteur clé de l’efficacité d’un algorithme. - [x] Par l’espace mémoire qu’ils requièrent pendant le traitement > ✅ La complexité mémoire ou spatiale mesure la quantité de mémoire utilisée durant l’exécution. - [x] Par leur utilisation de l’aléatoire > ✅ Certains algorithmes, comme les algorithmes aléatoires, utilisent l’aléatoire pour résoudre des problèmes. # Qu’est-ce qu’un pseudo-code ? - [x] Une syntaxe restreinte aux instructions algorithmiques > ✅ Le pseudo-code simplifie la présentation des algorithmes en se concentrant sur la logique plutôt que sur la syntaxe. - [x] Une forme moins rigoureuse des langages de programmation formels > ✅ Le pseudo-code ne nécessite pas les règles strictes des langages de programmation, ce qui le rend accessible pour les explications. - [x] Une manière d’écrire rapidement des algorithmes sans se soucier des détails du langage de programmation > ✅ Il permet de représenter un algorithme sans se préoccuper des détails spécifiques au langage. - [x] Une formulation mathématique d’un algorithme > ✅ Le pseudo-code utilise souvent une notation mathématique pour exposer la logique d’un algorithme. # Quels sont les avantages d’utiliser des fonctions standard dans les langages de programmation ? - [x] Cela fait gagner du temps > ✅ Les fonctions standard sont préconstruites, donc les programmeurs n’ont pas besoin de réinventer la roue. - [x] Cela fournit des solutions optimisées et efficaces > ✅ Ces fonctions sont optimisées par des experts et souvent testées de manière approfondie. - [ ] Cela augmente la taille du code > ❌ C’est incorrect car utiliser des fonctions standard réduit généralement la taille du code. - [ ] Cela réduit l’espace mémoire requis > ❌ Les fonctions standard sont optimisées mais ne minimisent pas toujours l’utilisation mémoire selon le contexte.

Qu’est-ce qu’une variable ?

# Quelle phrase décrit le mieux ce qu’est une variable ? 1. [x] Une valeur représentant un nom > ✅ Une variable est un nom symbolique associé à une valeur en programmation. 1. [ ] Une adresse mémoire > ❌ Les variables peuvent référer à des valeurs stockées en mémoire, mais elles ne sont pas l’adresse elle-même. 1. [ ] Un opérateur d’affectation > ❌ Cette option confond le rôle des variables avec les opérateurs utilisés pour leur assigner des valeurs. 1. [ ] Un langage à typage dynamique > ❌ Cela fait référence à une propriété de certains langages de programmation, pas à une variable. # Parmi les types suivants, lesquels sont des types de base en Python ? - [ ] Tableau > ❌ Les tableaux sont des collections d’éléments, pas des types de base. - [x] Integer > ✅ Integer est un type fondamental représentant des nombres entiers. - [x] String > ✅ Les chaînes de caractères sont des types de base utilisés pour représenter des séquences de caractères. - [x] Float > ✅ Les floats représentent des nombres réels avec des décimales, ce qui en fait un type de base. - [x] Character > ✅ Les caractères représentent des lettres ou symboles individuels et sont un type fondamental. - [x] Boolean > ✅ Les booléens représentent des valeurs vrai ou faux, un type de base dans de nombreux langages. - [ ] Fonction > ❌ Les fonctions ne sont pas des types de base ; ce sont des blocs de code qui effectuent des actions. - [ ] Programme > ❌ Les programmes sont des collections de fonctions et de logique, pas des types de données de base. # Quelles propositions sont vraies concernant les variables en Python ? - [ ] Leur type est déterminé à la compilation > ❌ Python est un langage à typage dynamique, ce qui signifie que le typage est fait à l’exécution. - [x] Leur type est déterminé à l’exécution > ✅ Le typage dynamique de Python détermine le type d’une variable lorsqu’elle reçoit une valeur. - [ ] Leur type doit être déclaré explicitement > ❌ Python ne nécessite pas de déclarations explicites de type. - [x] La déclaration de leur type est optionnelle > ✅ Python infère automatiquement les types, rendant les déclarations explicites optionnelles. # Comment affecte-t-on une valeur à une variable en Python ? - [x] `variable = value` > ✅ C’est la syntaxe correcte pour affecter une valeur à une variable en Python. - [ ] `variable == value` > ❌ Ceci sert à la comparaison, pas à l’affectation. - [ ] `value <- variable` > ❌ Ce n’est pas une syntaxe valide en Python. - [ ] `variable := value` > ❌ Ce n’est pas une syntaxe valide en Python. - [ ] `value = variable` > ❌ L’ordre est incorrect. # En Python (et Java), quel est l’indice du premier élément d’un tableau ? 1. [x] 0 > ✅ Python et Java utilisent tous deux un indexage à base zéro, ce qui signifie que le premier élément est à l’indice 0. 1. [ ] 1 > ❌ L’indexation à base un n’est pas utilisée en Python ni en Java. # Quelle est la négation de la proposition suivante ? J’aime la mer (proposition $S$) et rencontrer des gens sympas (proposition $C$), formalisée par $S \wedge C$. - [x] $\neg(S \wedge C)$ > ✅ C’est la négation directe de la proposition entière. - [x] $\neg S \vee \neg C$ > ✅ C’est la loi de De Morgan, qui dit que la négation d’une conjonction est la disjonction des négations. - [ ] $\neg(S \vee C)$ > ❌ Cela nie une disjonction, ce qui est incorrect ici. - [ ] $\neg S \wedge \neg C$ > ❌ C’est incorrect car cela implique que les deux négations doivent être vraies simultanément.

Instructions algorithmiques

# Quelle phrase décrit le mieux une instruction ? 1. [x] Une instruction de base exécutable par un ordinateur > ✅ Une instruction est la plus petite unité exécutable dans un programme, comme une commande. 1. [ ] Une formule mathématique > ❌ Bien que certaines instructions impliquent des mathématiques, ce n’est pas toujours le cas. 1. [ ] Une proposition logique > ❌ Les propositions logiques sont souvent évaluées par des instructions mais ne sont pas des instructions elles-mêmes. 1. [ ] Une fonction > ❌ Une fonction est un bloc de code qui peut contenir plusieurs instructions. # Quand un invariant de boucle doit-il être vrai ? - [x] Avant d’entrer dans l’itération > ✅ L’invariant doit être vrai avant que l’itération ne commence. - [x] Après chaque tour de l’itération > ✅ Il doit rester vrai après chaque itération. - [x] À la fin de l’itération > ✅ L’invariant est vrai lorsque l’itération se termine. - [ ] Seulement avant le premier tour de l’itération > ❌ Les invariants doivent être vrais avant, pendant et après l’itération, pas seulement initialement. # Qu’est-ce qui est vrai pour une boucle ? - [x] C’est un moyen de répéter un bloc de code > ✅ Les boucles exécutent un bloc de code plusieurs fois selon une condition. - [ ] C’est un moyen d’exécuter un bloc de code une seule fois > ❌ Cela décrit une instruction simple, pas une boucle. - [ ] C’est un moyen d’exécuter un bloc de code en parallèle > ❌ Les boucles sont séquentielles, pas parallèles. - [ ] Cela ne peut être utilisé qu’avec des tableaux > ❌ Les boucles peuvent opérer sur diverses structures de données, pas seulement des tableaux. - [ ] C’est toujours non borné > ❌ Les boucles `for` sont bornées, et certaines boucles `while` peuvent l’être aussi. - [x] Cela peut tourner indéfiniment dans certains cas > ✅ Si mal codées, les boucles peuvent devenir infinies si leurs conditions de sortie ne sont jamais satisfaites. # Quel est l’ordre des valeurs de la liste *l* si l’itération suivante est appliquée ? ```python from typing import List l = [5, 4, 8, 9, 0, -5, 1, 3] i = 1 j = 0 while i < len(l) - 1: if l[i] < l[len(l) - 1]: l[j] += l[i] l[i] = l[j] - l[i] l[j] = l[j] - l[i] j += 1 i += 1 l[j] += l[len(l) - 1] l[len(l) - 1] = l[j] - l[len(l) - 1] l[j] = l[j] - l[len(l) - 1] ``` 1. 0 2. -5 3. 1 4. 3 5. 5 6. 4 7. 8 8. 9