Exercice 2#
On 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
tetidegetbdef.END SOLUTION
Encadrez d'un rectangle la ou les déclaration(s) de variable(s) locale(s).
BEGIN SOLUTION
Variables locales
kdéclarée dansg,tetidéclarées dansfetbdéclarée dansmain.END SOLUTION
Entourez d'un rond la ou les déclaration(s) de variable(s) globale(s).
BEGIN SOLUTION
Variable
adé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 TasEND SOLUTION
Quelles sont les valeurs de
aetblorsque l'exécution du programme atteint la ligne marquée «LÀ»?BEGIN SOLUTION
variable globale
a: 3; variable localeb: 4END SOLUTION