Bases de la programmation (trace de pseudo-code)

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 ?

push(5)
push(8)
pop()
push(3)
push(9)
pop()
push(7)
pop()
  1. Atop = 2, st = {5, 3, 0, 0, 0}
  2. Btop = 2, st = {5, 3, 7, 0, 0}
  3. Ctop = 5, st = {5, 8, 3, 9, 7}
Afficher la réponse et l'explication

Réponse : B. top = 2, st = {5, 3, 7, 0, 0}

push(5) et push(8) donnent st[1] = 5, st[2] = 8 et top = 2, puis pop() renvoie 8 et laisse top = 1. push(3) écrase st[2] avec 3, push(9) donne st[3] = 9, et pop() ramène top à 2. push(7) écrase st[3] avec 7, et le dernier pop() donne top = 2. pop() se contente de diminuer top : le 7 retiré reste donc dans st[3], et st = {5, 3, 7, 0, 0}. Le contenu valide de la pile est st[1] à st[top], c'est-à-dire 5 et 3.

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

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

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