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

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

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.

Exercice

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

// VOTRE CODE ICI
  • Regardez le type du résultat. Quels autres types de variables avez-vous vus en cours ?

  • Refaites le calcul précédent de sorte que son type soit double:

// VOTRE CODE ICI

Exercice

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 une égalité. 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 Menu Insérer. Ensuite, utilisez le menu Cellule -> Type de cellule pour en faire une cellule de texte (Markdown). Notez les raccourcis claviers dans les menus.

Exercice

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


  • Type : int, bool, double ?

  • Résultat : 7, 9, 11, 21 ?

VOTRE RÉPONSE ICI

3 * 2 + 5

  • Type : int, bool, double ?

  • Résultat : 12 ou 12.5 ?

VOTRE RÉPONSE ICI

25 / 2

  • Type : int, bool, double ?

  • Résultat : 6, 7, 6.0000, 7.0000?

VOTRE RÉPONSE ICI

3.5*2

  • Type: int, bool, double ?

  • Résultat : 5, 4, 4.66667 ?

VOTRE RÉPONSE ICI

14. / 3

  • Type : int, bool, double ?

  • Résultat : 3,7,21, true, false ?

VOTRE RÉPONSE ICI

3*7 == 21

  • Type : int, bool, double ?

  • Résultat : 21, 25, true, false ?

VOTRE RÉPONSE ICI

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

  • Type : int, bool, double ?

  • Résultat : 1, 0, true, false ?

VOTRE RÉPONSE ICI

true and false

  • Type : int, bool, double ?

  • Résultat : 1, 0, true, false ?

VOTRE RÉPONSE ICI

true or false

  • Type : int, bool, double ?

  • Résultat : 1, 0, true, false ?

VOTRE RÉPONSE ICI

(false and false) or true

  • Type : int, bool, double ?

  • Résultat : 1, 0, true, false ?

VOTRE RÉPONSE ICI

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 assigné 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

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

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 assigne une valeur du mauvais type à une variable ?

Exercice

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

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

Exemple :

1 + 2
int i = 1 + 2;
i

A 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é la première feuille de l’exercice 2.

Vous pouvez maintenant passer à la deuxième feuille!