Exercice 2#
Question 1On considère le programme suivant :
int a;
void g(vector<int> t, int i) {
int k = a + i;
t[i] = k;
// ICI
}
void f(int b) {
a = a - 1;
b = b + 1;
vector<int> t = vector<int>(b);
for ( int i = 0; i < 3; i++ )
t[i] = 2 * i;
g(t, b - 1);
}
int main() {
a = 4;
int b = a;
f(b);
// LÀ
return 0;
}
Soulignez la ou les déclaration(s) de paramètre(s) formel(s).
BEGIN SOLUTION
Paramètres
t
eti
deg
etb
def
.END SOLUTION
Encadrez d’un rectangle la ou les déclaration(s) de variable(s) locale(s).
BEGIN SOLUTION
Variables locales
k
déclarée dansg
,t
eti
déclarées dansf
etb
déclarée dansmain
.END SOLUTION
Entourez d’un rond la ou les déclaration(s) de variable(s) globale(s).
BEGIN SOLUTION
Variable
a
déclarée tout en haut.END SOLUTION
Sur votre brouillon, exécutez pas-à-pas le programme. En suivant les conventions du cours, représentez ci-dessous la pile et le tas au moment où l’exécution atteint la ligne marquée «
ICI
».BEGIN SOLUTION
┌───────────────┬────┐ │ int k │ 7 │ ┌─┬─┬─┬─┬─┐ │ int i │ 4 │ │0│2│4│?│7│ g │ vector<int> t │ 5 ●┼──────>└─┴─┴─┴─┴─┘ │ vector<int> t │ 5 ●┼──────>┌─┬─┬─┬─┬─┐ f │ int b │ 5 │ │0│2│4│?│?│ main │ int b │ 4 │ └─┴─┴─┴─┴─┘ variables globales │ int a │ 3 │ ├───────────────┴────┤ │ ... │ └────────────────────┘ ────────────────── Pile Tas
END SOLUTION
Quelles sont les valeurs de
a
etb
lorsque l’exécution du programme atteint la ligne marquée «LÀ
»?BEGIN SOLUTION
variable globale
a
: 3; variable localeb
: 4END SOLUTION