Bases de la programmation (trace de pseudo-code)

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é ?

enq("A")
enq("B")
enq("C")
deq()
deq()
enq("D")
enq("E")
  1. Aq[1]
  2. Bq[3]
  3. Cq[5]
Afficher la réponse et l'explication

Réponse : A. q[1]

mod est évalué avant + : tail ← tail mod 4 + 1 fait donc parcourir à tail le cycle 1 → 2 → 3 → 4 → 1. A, B et C vont dans q[1] à q[3], et tail = 4. Les deux appels deq() retirent A et B, et head = 3. D va dans q[4], et tail revient à 4 mod 4 + 1 = 1 : E va donc dans l'emplacement libéré q[1]. Une file d'attente circulaire (tampon circulaire) réutilise les emplacements libérés au lieu d'avancer les éléments.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. 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 ?
  2. 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 ?
  3. La boucle for suivante augmente sa variable de boucle de 5 à chaque passage. Quelle est la valeur de c après son exécution ?
  4. 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 ?
  5. 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 ?