TP : variables et affectations#

Dans la feuille précédente, nous avons effectué des calculs et observé les résultats (type, valeur). Pour écrire des programmes, nous aurons besoin de stocker les résultats intermédiaires dans des variables pour en réutiliser les valeurs.

Exercice 1#

  • Exécutez la cellule suivante :

int a;
a = 3;

Une fois que la variable a a été déclarée (int a;) et qu’on lui a affecté une valeur (a = 3), on peut afficher ou réutiliser cette valeur :

a
a + 1
a + a + a

On peut aussi modifier la valeur de a :

a = 5;
a
a = a + 1;
a
  • Que se passe-t-il si l’on exécute à nouveau la dernière cellule? Si on exécute alternativement les deux dernières cellules?

Quelques remarques sur Jupyter#

L’ordre dans lequel vous exécutez les cellules est important, la variable contient la dernière valeur que vous lui avez attribuée. L’ordre d’exécution des cellules est indiqué entre crochets dans la marge de gauche.

Vous aurez noté que certaines cellules finissaient par «;», d’autres non.

Exercice 2#

  • Exécutez les cellules suivantes et observez le résultat :

1 + 1
1 + 1;
1 + 1;
2 + 2

En général, toute instruction C++ doit se terminer par un «;». Par convention pour C++ dans Jupyter, si la dernière instruction d’une cellule est une expression (elle a une valeur) et si l’on omets le «;», alors cette valeur est affichée, avec son type.

Retour sur les variables#

Exercice 3#

Les cellules suivantes déclarent deux variables r et pi. Vous noterez qu’une valeur est affectée à pi dans la foulée, en mettant la déclaration et l’affectation sur la même ligne :

double pi = 3.1416;
double r;
  • Utilisez ces variables pour calculer l’aire et le périmètre d’un disque de rayon r pour les différentes valeurs données ci-dessous. Pour simplifier, vous pourrez considérer que la variable pi contient la valeur exacte du nombre bien connu. Utilisez les cellules vides pour faire vos calculs. N’oubliez pas d’exécuter aussi les cellules qui changent la valeur de r.

r = 5;

Aire :

/// BEGIN SOLUTION
pi * r * r
/// END SOLUTION

Périmètre :

/// BEGIN SOLUTION
2 * pi * r
/// END SOLUTION
r = 2.5;

Aire :

/// BEGIN SOLUTION
pi * r * r
/// END SOLUTION

Périmètre :

/// BEGIN SOLUTION
2 * pi * r
/// END SOLUTION
r = 10;

Aire :

/// BEGIN SOLUTION
pi * r * r
/// END SOLUTION

Périmètre :

/// BEGIN SOLUTION
2 * pi * r
/// END SOLUTION

Exercice 4#

Les cellules suivantes définissent deux variables b et c :

int b, c;
b = 5;
c = 8;

Dans les cellules vides ci-dessous, écrivez un programme qui échange les valeurs des deux variables, comme dans le TD 1. Votre programme pourra déclarer de nouvelles variables et utiliser des affectations, mais sans écrire les nombres à la main bien sûr, ce serait tricher.

Indication :

  • Une cellule peut contenir plusieurs instructions (comme ci-dessus) séparées par des points-virgules ;.

/// BEGIN SOLUTION
int temp;
/// END SOLUTION
/// BEGIN SOLUTION
temp = b;
b = c;
c = temp;
/// END SOLUTION
b // doit afficher 8 (ancienne valeur de c)
c // doit afficher 5 (ancienne valeur de b)
/// BEGIN HIDDEN TESTS
CHECK( b == 8 );
CHECK( c == 5 );
/// END HIDDEN TESTS

Affectations et types#

Tout à l’heure, nous avons exploré différents types de valeurs et nous venons de voir comment déclarer une variable pouvant contenir un certain type. Mais que se passe-t-il lorsque l’on affecte une valeur du mauvais type à une variable?

Exercice 5#

  • Faites-vous une opinion en observant le résultat des affectations suivantes :

int v1;
v1 = 2
v1 = 2.5
v1 = false
double v2;
v2 = 5
v2 = 5.3
v2 = true
bool v3;
v3 = 2
v3 = 0
v3 = 1.5
v3 = false

Vous remarquez que, lorsque les types sont suffisament proches, les valeurs sont converties automatiquement au moment de l’affectation. Dans les autres cas, l’affectation déclenche une erreur.

Exercice 6#

Pour chaque expression ci-dessous, déclarez une variable du bon type et affectez-lui le résultat, puis affichez le contenu de la variable pour le vérifier.

Exemple :

1 + 2
int i = 1 + 2;
i

À vous de faire comme dans l’exemple avec les expressions ci-dessous :

2.3*9 + 5
/// BEGIN SOLUTION
double s = 2.3*9 + 5;
s
/// END SOLUTION
45/2 + 8 + 6
/// BEGIN SOLUTION
int n = 45/2 + 8 + 6;
n
/// END SOLUTION
9 == 3*3
/// BEGIN SOLUTION
bool egalite = 9 == 3*3;
egalite
/// END SOLUTION
true and 8 > 10
/// BEGIN SOLUTION
bool proposition = true and 8 > 10;
proposition
/// END SOLUTION

Avec cette feuille, nous avons fini notre première exploration des données en C++ : calculer des valeurs avec des expressions, comprendre les types de ces valeurs et leur influence, stocker les résultats dans des variables. Dans la feuille suivante, vous aborderez les conditions et les fonctions.

Vous pouvez maintenant fermer cette feuille; utilisez pour cela le raccourci clavier Ctrl+Maj+Q.