TP 2, Feuille 1 : valeurs, types et variables#

Introduction à Jupyter et premiers calculs#

Lors de ces premières semaines de cours, nous allons travailler dans l’application web Jupyter qui permet d’exécuter du code C++ interactivement, un peu comme une super calculatrice. Plus tard, nous verrons comment créer un programme C++ indépendant en dehors de Jupyter.

Exercice 1 : premiers calculs

  • Cliquez sur la cellule suivante puis exécutez la en appuyant sur les touches Maj+Entrée :

1 + 1

La première ligne donne le résultat du calcul. La deuxième ligne indique que ce résultat est de type entier (int).

Techniquement parlant, le navigateur web a envoyé le contenu 1+1 de la cellule à un noyau (kernel en anglais) qui l’a compilé et exécuté, avant de renvoyer le résultat à afficher. Le noyau que nous utilisons (C++11) permet de travailler en C++. Il existe des noyaux pour beaucoup d’autres langages de programmation.

  • Modifiez l’expression dans la cellule précédente et exécutez la de nouveau.

  • Utilisez la cellule suivante pour calculer la surface d’un rectangle de largeur 25 et de longueur 37 :

// VOTRE CODE ICI

Exercice 2 : types

Vous avez vu en cours qu’il existe plusieurs types de variables (int, double, etc.). Il est très utile de connaître le type des valeurs que l’on manipule. Exécutez les cellules suivantes et observez les types obtenus :

3*4
3*4.0

Les lignes suivantes vous présentent des exemples de calculs. Exécutez-les en observant bien la valeur du résultat et son type.

3*(1+3) + (1+4)*(2+4)
42 / 2
42 / 5
42. / 5
42 % 5
1 + 1.
42 == 6*7
41 == 2*21

Remarque: dans les deux cellules précédentes, nous avons utilisé un double égal == qui sert à tester l’égalité entre deux valeurs. Nous reverrons bientôt la signification du simple égal =.

1 < 2
2 > 3
1 < 2 and 2 > 3
1 < 2 or 2 > 3

Note: pour éviter de fausses manœuvres, nous configurons de nombreuses cellules, telles celles ci-dessus, pour qu’elles soient non modifiables. Pour faire vos propres expérimentations ou pour prendre des notes personnelles, vous pouvez à tout moment insérer de nouvelles cellules. Insérez maintenant une cellule ci-dessous en utilisant le bouton + sous les onglets. Ensuite, utilisez le menu Cellule -> Type de cellule pour en faire une cellule de texte (Markdown). Notez les raccourcis claviers dans les menus.

Vous pouvez modifier le type de cellule : Code, Markdown ou brut grâce au menu déroulant sous la barre des onglets. Écrivez un calcul dans votre nouvelle cellule et tester les comportement différents en fonction du type sélectionné.

Exercice 3 :

Pour chacune des expressions suivantes, déterminez de tête le type et la valeur du résultat, et donnez votre réponse à l’endroit indiqué sous la forme type, valeur; puis vérifiez en exécutant les cellules.


  • Type : int, bool, ou double ?

  • Valeur : 7, 9, 11, ou 21 ?

VOTRE RÉPONSE ICI

3 * 2 + 5
type(3 * 2 + 5)

  • Type : int, bool, ou double ?

  • Valeur : 12 ou 12.5 ?

VOTRE RÉPONSE ICI

25 / 2
type(25 / 2)

  • Type : int, bool, ou double ?

  • Valeur : 6, 7, 6.0000, ou 7.0000?

VOTRE RÉPONSE ICI

3.5*2
type(3.5*2)

  • Type: int, bool, ou double ?

  • Valeur : 5, 4, ou 4.66667 ?

VOTRE RÉPONSE ICI

14. / 3
type(14. / 3)

  • Type : int, bool, ou double ?

  • Valeur : 3,7,21, true, ou false ?

VOTRE RÉPONSE ICI

3*7 == 21
type(3*7 == 21)

  • Type : int, bool, double ?

  • Valeur : 21, 25, true, false ?

VOTRE RÉPONSE ICI

(3*7 == 21) and (4.2 > 5.3 or 4*4 == 8*2)
type((3*7 == 21) and (4.2 > 5.3 or 4*4 == 8*2))

  • Type : int, bool, double ?

  • Valeur : 1, 0, true, false ?

VOTRE RÉPONSE ICI

true and false
type(true and false)

  • Type : int, bool, double ?

  • Valeur : 1, 0, true, false ?

VOTRE RÉPONSE ICI

true or false
type(true or false)

  • Type : int, bool, double ?

  • Valeur : 1, 0, true, false ?

VOTRE RÉPONSE ICI

(false and false) or true
type((false and false) or true)

  • Type : int, bool, double ?

  • Valeur : 1, 0, true, false ?

VOTRE RÉPONSE ICI

false and (false or true)
type(false and (false or true))

Variables#

Jusqu’à présent, nous avons effectué des calculs et observé le résultat. Pour écrire des programmes, nous aurons besoin de stocker le résultat dans une variable. Exécutez la cellule suivante :

int a = 3;

Une fois que la variable a a été déclarée et qu’on lui a affecté une valeur, 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. 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.

Retour sur les variables#

Exercice 4 :

Les cellules suivantes définissent deux variables r et pi. 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 (considérer que 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.

double pi = 3.1415;
double r;
r = 5;

Aire :

// VOTRE CODE ICI

Périmètre :

// VOTRE CODE ICI
r = 2.5;

Aire :

// VOTRE CODE ICI

Périmètre :

// VOTRE CODE ICI
r = 10;

Aire :

// VOTRE CODE ICI

Périmètre :

// VOTRE CODE ICI

Exercice 5 :

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 ;.

// VOTRE CODE ICI
// VOTRE CODE ICI
b // doit afficher 8 (ancienne valeur de c)
c // doit afficher 5 (ancienne valeur de b)

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 6 :

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 7 :

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
// VOTRE CODE ICI
45/2 + 8 + 6
// VOTRE CODE ICI
9 == 3*3
// VOTRE CODE ICI
true and 8 > 10
// VOTRE CODE ICI

Bravo, vous avez terminé cette première feuille où vous avez exploré les expressions, valeurs, types et variables en C++. 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.