Bases de la programmation (trace de pseudo-code)

Apprenez à tracer ligne par ligne de courts programmes avec des QCM : programmes écrits dans le même pseudo-langage que la partie B de l'examen japonais « Fundamental Information Technology Engineer », avec variables et affectation, boucles et branchements conditionnels, tableaux et chaînes, division entière et reste, appels récursifs, opérations bit à bit, piles et files d'attente, listes chaînées, erreurs off-by-one, évaluation en court-circuit, erreurs sur les réels, classes et instances.

S'entraîner sur 10 questionsQuestions aléatoires de ce thème · environ 5 minutes S'entraîner sur ce thèmeToutes les questions de ce thème dans un ordre aléatoire Questions à revoirNe refaire que les questions manquées lors de la dernière tentative

Bases de la programmation (trace de pseudo-code) : points clés

Pour lire avec exactitude le comportement d'un programme, il faut savoir suivre à la main (tracer) l'évolution des valeurs des variables ligne par ligne. De petits oublis, comme compter une itération de trop ou de moins, perdre une valeur à cause de l'ordre des affectations ou oublier que la division entière supprime la partie fractionnaire, conduisent à des résultats faux et à des bogues.

Ce thème est centré sur des questions qui demandent de tracer de courts programmes et d'en donner le résultat. Les programmes suivent le pseudo-langage de la partie B de l'examen japonais « Fundamental Information Technology Engineer » : déclarations de type, affectation avec ←, if, while et for, et indices de tableau qui commencent à 1. Les mauvais choix sont des valeurs produites par des erreurs typiques, comme une valeur finale de boucle mal comprise ou une priorité des opérateurs mal lue, et les explications indiquent de quelle erreur provient chaque choix.

Toutes les questions sur Bases de la programmation (trace de pseudo-code) (40)

  1. Les deux affectations du programme suivant devaient échanger les valeurs de x et y. Quelles sont les valeurs de x et y après son exécution ?
  2. Le programme suivant fait circuler des valeurs entre trois variables. Quelles sont les valeurs de a, b et c après son exécution ?
  3. Le programme suivant multiplie x par 3 de façon répétée. Quelle est la valeur de n après son exécution ?
  4. La boucle for suivante augmente i de 2 à chaque passage. Quelle est la valeur de s après son exécution ?
  5. Dans les boucles imbriquées suivantes, la boucle intérieure part de la variable i de la boucle extérieure. Quelle est la valeur de c après l'exécution ?
  6. Le programme suivant contient une condition à l'intérieur de boucles imbriquées. Quelle est la valeur de c après son exécution ?
  7. Le programme suivant devait calculer la somme de tous les éléments du tableau a. Les indices du tableau commencent à 1. Quelle est la valeur de s après son exécution ?
  8. Les indices du tableau commencent à 1. Le programme suivant cherche le plus grand élément. Quelle est la valeur de m après son exécution ?
  9. Le programme suivant devait inverser l'ordre des éléments du tableau a. Les indices du tableau commencent à 1. Que contient a après l'exécution ?
  10. Les indices du tableau commencent à 1. Que contient le tableau a après l'exécution du programme suivant ?
  11. Les indices du tableau commencent à 1. Le programme suivant compare des éléments voisins. Quelle est la valeur de c après son exécution ?
  12. m[i, j] désigne l'élément de la ligne i et de la colonne j du tableau à deux dimensions m, et les indices commencent à 1. Quelle est la valeur de s après l'exécution du programme suivant ?
  13. Le programme suivant copie les éléments du tableau à deux dimensions m, de 4 lignes et 5 colonnes, dans le tableau b de 20 éléments. m[i, j] désigne l'élément de la ligne i et de la colonne j, et les indices commencent à 1. À quel indice de b m[3, 2] est-il stocké ?
  14. Les indices du tableau commencent à 1, et + concatène des chaînes. Quelle est la valeur de r après l'exécution du programme suivant ?
  15. La fonction isPal suivante renvoie true si les caractères du tableau de chaînes s se lisent de la même façon dans les deux sens (un palindrome). Les indices du tableau commencent à 1. Que faut-il écrire à la place de 【a】 dans le programme ?
  16. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction f suivante appelée sous la forme f(9087) ?
  17. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction toBin suivante appelée sous la forme toBin(12) ?
  18. Le programme suivant soustrait l'un de l'autre les deux entiers a et b jusqu'à ce qu'ils soient égaux. Quelle est la valeur de k après son exécution ?
  19. La fonction isLeap suivante renvoie true si l'année y est bissextile. and est évalué avant or. Pour quelle valeur de y isLeap(y) renvoie-t-elle true ?
  20. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Lorsque la fonction pow suivante est appelée sous la forme pow(2, 10), combien de fois pow est-elle appelée, premier appel compris ?
  21. Quelle est la valeur de retour de la fonction s suivante appelée sous la forme s(7) ?
  22. Lorsque la procédure p suivante est appelée sous la forme p(3), quelle suite de valeurs est affichée ?
  23. Quelle est la valeur de retour de la fonction fib suivante appelée sous la forme fib(10) ?
  24. Lorsque la fonction c suivante est appelée sous la forme c(4, 2), combien de fois c est-elle appelée, premier appel compris ?
  25. ⊕ désigne le OU exclusif bit à bit. Quelles sont les valeurs de x et y après l'exécution du programme suivant ?
  26. x et y sont des entiers non signés sur 8 bits. << et >> sont des décalages logiques : les bits libérés sont remplis par 0, et les bits qui sortent des 8 bits sont perdus. ∨ désigne le OU bit à bit. Quelle est la valeur de y après l'exécution du programme suivant ?
  27. ∧ désigne le ET bit à bit. Quelle est la valeur de c après l'exécution du programme suivant ?
  28. x et y sont des entiers non signés sur 8 bits. << et >> sont des décalages logiques : les bits libérés sont remplis par 0, et les bits qui sortent des 8 bits sont perdus. ∨ désigne le OU bit à bit. Avec x = 75, quelle est la valeur de y après l'affectation suivante ?
  29. La procédure bubble suivante est un tri à bulles qui trie le tableau d'entiers data par ordre croissant. swap(data, j, k) est une procédure qui échange les valeurs de data[j] et data[k]. Les indices du tableau commencent à 1. Que faut-il écrire à la place de 【a】 dans le programme ?
  30. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Le programme suivant place dans lo l'indice de la première valeur supérieure ou égale à x dans le tableau d'entiers data, trié par ordre croissant (les indices commencent à 1). x n'est pas supérieur au dernier élément de data. Que faut-il écrire à la place de 【a】 dans le programme ?
  31. Une pile est représentée par le tableau d'entiers st de 5 éléments et la variable entière top. Tous les éléments de st valent 0 au départ, et top vaut 0. push(v) ajoute 1 à top puis exécute st[top] ← v ; pop() renvoie la valeur de st[top] puis soustrait 1 de top (les éléments de st ne sont pas modifiés). Quelles sont les valeurs de top et st après l'exécution du programme suivant ?
  32. Une file d'attente utilise de façon circulaire le tableau de chaînes q de 4 éléments. head et tail valent 1 au départ. enq(v) exécute q[tail] ← v puis tail ← tail mod 4 + 1 ; deq() renvoie la valeur de q[head] puis exécute head ← head mod 4 + 1. Lors de l'exécution du programme suivant, dans quel élément de q « E » est-il stocké ?
  33. Le programme suivant affiche une liste chaînée, dont les éléments sont reliés par le tableau next, en la parcourant à partir de l'élément d'indice 1. Les indices du tableau commencent à 1. Une valeur 0 dans next marque la fin de la liste. Quelle suite de valeurs est affichée ?
  34. Le programme suivant insère « F », placé en val[6], juste après « C » (indice 3) dans la liste chaînée A → C → E → D → B, reliée par le tableau next, puis affiche la liste à partir de l'élément d'indice 1. Les indices du tableau commencent à 1. Une valeur 0 dans next marque la fin de la liste. Que faut-il écrire à la place de 【a】 pour que l'affichage soit A, C, F, E, D, B ?
  35. La boucle for suivante augmente sa variable de boucle de 5 à chaque passage. Quelle est la valeur de c après son exécution ?
  36. Dans le programme suivant, and n'évalue pas son membre droit quand le membre gauche est faux (évaluation en court-circuit). cnt est une variable globale. Quelle est la valeur de cnt après l'exécution du programme ?
  37. Le programme suivant cherche la valeur x dans le tableau a de n éléments et place dans i l'indice où elle est trouvée. Les indices du tableau commencent à 1. and et or n'évaluent pas leur membre droit quand le membre gauche suffit à déterminer le résultat. Quelle condition en 【a】 lit a[n + 1], en dehors du tableau, quand x n'est pas dans a ?
  38. Les valeurs réelles sont représentées en double précision IEEE 754 (binary64), et chaque somme est arrondie à la valeur représentable la plus proche. Quelle est la valeur de c après l'exécution du programme suivant ?
  39. La classe Counter donne à chaque instance sa propre variable membre entière count (0 à la création), et sa méthode inc() ajoute 1 à son propre count. Quelle est la valeur de x après l'exécution du programme suivant ?
  40. La classe Counter donne à chaque instance sa propre variable membre entière count (0 à la création), et sa méthode inc() ajoute 1 à son propre count. Une variable de type Counter contient une référence à une instance, et non l'instance elle-même. Quelle est la valeur de x après l'exécution du programme suivant ?

Autres thèmes de Systèmes informatiques